[Bug tree-optimization/92130] Missed vectorization for iteration dependent loads and simple multiplicative accumulators
witold.baryluk+gcc at gmail dot com
gcc-bugzilla@gcc.gnu.org
Thu Oct 17 17:20:00 GMT 2019
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92130
--- Comment #9 from Witold Baryluk <witold.baryluk+gcc at gmail dot com> ---
Indeed, passing -fno-tree-pre in the first example does make it be vectorized.
In the mesh_simple.c this corresponds to ONTHEFLY_CONSTANTS being defined, but
USE_LOOP_CONSTANTS being not. The SIMPLIFIED can be defined or not, it
vectorizes now in both cases.
Targeting -march=knm.
This is with #define OCTAVES 12, a compile time constant, so compiler fully
unrolls the most inner loop.
Without -fno-tree-pre:
0000000000001230 <fill_data.isra.0.constprop.0>:
1230: 41 57 push %r15
1232: 62 a1 7d 40 ef c0 vpxord %zmm16,%zmm16,%zmm16
1238: 49 ba 53 ec 85 1a fe movabs $0xc4ceb9fe1a85ec53,%r10
123f: b9 ce c4
1242: 41 56 push %r14
1244: c5 7a 10 0d f8 0d 00 vmovss 0xdf8(%rip),%xmm9 # 2044
<_IO_stdin_used+0x44>
124b: 00
124c: 62 31 7c 48 28 d0 vmovaps %zmm16,%zmm10
1252: 41 55 push %r13
1254: c5 7a 10 3d ec 0d 00 vmovss 0xdec(%rip),%xmm15 # 2048
<_IO_stdin_used+0x48>
125b: 00
125c: 62 a1 7c 48 28 d0 vmovaps %zmm16,%zmm18
1262: 41 54 push %r12
1264: c5 7a 10 35 e0 0d 00 vmovss 0xde0(%rip),%xmm14 # 204c
<_IO_stdin_used+0x4c>
126b: 00
126c: 49 b9 cd 8c 55 ed d7 movabs $0xff51afd7ed558ccd,%r9
1273: af 51 ff
1276: 55 push %rbp
1277: c5 7a 10 2d d1 0d 00 vmovss 0xdd1(%rip),%xmm13 # 2050
<_IO_stdin_used+0x50>
127e: 00
127f: 49 be 68 66 ac 6a bf movabs $0xfa8d7ebf6aac6668,%r14
1286: 7e 8d fa
1289: 53 push %rbx
128a: c5 7a 10 25 c2 0d 00 vmovss 0xdc2(%rip),%xmm12 # 2054
<_IO_stdin_used+0x54>
1291: 00
1292: 48 89 7c 24 f8 mov %rdi,-0x8(%rsp)
1297: c7 44 24 f0 00 00 00 movl $0x0,-0x10(%rsp)
129e: 00
129f: c7 44 24 f4 00 00 00 movl $0x0,-0xc(%rsp)
12a6: 00
12a7: c5 7a 10 1d a9 0d 00 vmovss 0xda9(%rip),%xmm11 # 2058
<_IO_stdin_used+0x58>
12ae: 00
12af: 62 e1 7e 08 10 0d a3 vmovss 0xda3(%rip),%xmm17 # 205c
<_IO_stdin_used+0x5c>
12b6: 0d 00 00
12b9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax)
12c0: 48 8b 6c 24 f8 mov -0x8(%rsp),%rbp
12c5: 31 f6 xor %esi,%esi
12c7: 31 db xor %ebx,%ebx
12c9: 62 31 7c 48 28 c2 vmovaps %zmm18,%zmm8
12cf: 90 nop
12d0: 8b 54 24 f0 mov -0x10(%rsp),%edx
12d4: 45 31 e4 xor %r12d,%r12d
12d7: 62 b1 7c 48 28 f8 vmovaps %zmm16,%zmm7
12dd: 62 c1 7c 48 28 d9 vmovaps %zmm9,%zmm19
12e3: c5 32 11 cc vmovss %xmm9,%xmm9,%xmm4
12e7: eb 26 jmp 130f
<fill_data.isra.0.constprop.0+0xdf>
12e9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax)
12f0: c5 ba 59 c4 vmulss %xmm4,%xmm8,%xmm0
12f4: 62 f3 7d 08 0a c0 09 vrndscaless $0x9,%xmm0,%xmm0,%xmm0
12fb: c5 fa 2c f0 vcvttss2si %xmm0,%esi
12ff: c4 c1 5a 59 c2 vmulss %xmm10,%xmm4,%xmm0
1304: 62 f3 7d 08 0a c0 09 vrndscaless $0x9,%xmm0,%xmm0,%xmm0
130b: c5 fa 2c d0 vcvttss2si %xmm0,%edx
130f: 4c 89 e1 mov %r12,%rcx
1312: 62 c1 7c 48 28 e8 vmovaps %zmm8,%zmm21
1318: 48 c1 e9 21 shr $0x21,%rcx
131c: 62 e1 7c 48 28 e4 vmovaps %zmm4,%zmm20
1322: c5 d2 2a ea vcvtsi2ss %edx,%xmm5,%xmm5
1326: 4c 31 e1 xor %r12,%rcx
1329: 49 0f af ca imul %r10,%rcx
132d: 48 63 d2 movslq %edx,%rdx
1330: c5 e2 2a de vcvtsi2ss %esi,%xmm3,%xmm3
1334: 4f 8d 24 0c lea (%r12,%r9,1),%r12
1338: 48 69 d2 53 42 41 4e imul $0x4e414253,%rdx,%rdx
133f: 62 c2 55 08 9b e2 vfmsub132ss %xmm10,%xmm5,%xmm20
1345: c4 c1 52 58 e9 vaddss %xmm9,%xmm5,%xmm5
134a: 48 8d 01 lea (%rcx),%rax
134d: 48 c1 e8 21 shr $0x21,%rax
1351: 62 e2 65 08 9b ec vfmsub132ss %xmm4,%xmm3,%xmm21
1357: 48 31 c1 xor %rax,%rcx
135a: 4c 8d ba 53 42 41 4e lea 0x4e414253(%rdx),%r15
1361: 48 89 cf mov %rcx,%rdi
1364: 48 89 c8 mov %rcx,%rax
1367: 48 81 f7 70 46 ab 58 xor $0x58ab4670,%rdi
136e: c4 c1 62 58 d9 vaddss %xmm9,%xmm3,%xmm3
1373: 48 c1 e8 21 shr $0x21,%rax
1377: c4 c2 59 bd ea vfnmadd231ss %xmm10,%xmm4,%xmm5
137c: 48 31 f8 xor %rdi,%rax
137f: 49 0f af c1 imul %r9,%rax
1383: c5 e2 10 f3 vmovss %xmm3,%xmm3,%xmm6
1387: c4 e2 39 bd f4 vfnmadd231ss %xmm4,%xmm8,%xmm6
138c: c4 c1 5a 59 e4 vmulss %xmm12,%xmm4,%xmm4
1391: 48 8d 08 lea (%rax),%rcx
1394: 48 c1 e9 21 shr $0x21,%rcx
1398: 48 31 c8 xor %rcx,%rax
139b: 49 0f af c2 imul %r10,%rax
139f: 48 89 c1 mov %rax,%rcx
13a2: 48 c1 e9 21 shr $0x21,%rcx
13a6: 48 31 c8 xor %rcx,%rax
13a9: 48 63 ce movslq %esi,%rcx
13ac: 48 89 cf mov %rcx,%rdi
13af: 4a 8d 0c 39 lea (%rcx,%r15,1),%rcx
13b3: 48 01 d7 add %rdx,%rdi
13b6: 48 31 c1 xor %rax,%rcx
13b9: 48 31 c7 xor %rax,%rdi
13bc: 8d 76 01 lea 0x1(%rsi),%esi
13bf: 49 89 f8 mov %rdi,%r8
13c2: 48 63 f6 movslq %esi,%rsi
13c5: 48 c1 ef 21 shr $0x21,%rdi
13c9: 4d 8d 3c 37 lea (%r15,%rsi,1),%r15
13cd: 4c 31 c7 xor %r8,%rdi
13d0: 49 0f af f9 imul %r9,%rdi
13d4: 49 89 f8 mov %rdi,%r8
13d7: 49 c1 e8 21 shr $0x21,%r8
13db: 4c 31 c7 xor %r8,%rdi
13de: 4c 8d 01 lea (%rcx),%r8
13e1: 48 c1 e9 21 shr $0x21,%rcx
13e5: 49 0f af fa imul %r10,%rdi
13e9: 4c 31 c1 xor %r8,%rcx
13ec: 49 0f af c9 imul %r9,%rcx
13f0: 49 89 fb mov %rdi,%r11
13f3: 49 c1 eb 21 shr $0x21,%r11
13f7: 49 89 c8 mov %rcx,%r8
13fa: 49 c1 e8 21 shr $0x21,%r8
13fe: 4c 31 c1 xor %r8,%rcx
1401: 49 0f af ca imul %r10,%rcx
1405: 49 89 c8 mov %rcx,%r8
1408: 49 c1 e8 21 shr $0x21,%r8
140c: 48 01 f2 add %rsi,%rdx
140f: 49 31 c7 xor %rax,%r15
1412: 48 31 c2 xor %rax,%rdx
1415: 4c 89 f8 mov %r15,%rax
1418: 49 89 d5 mov %rdx,%r13
141b: 48 c1 e8 21 shr $0x21,%rax
141f: 4c 31 c1 xor %r8,%rcx
1422: 4c 31 f8 xor %r15,%rax
1425: 4c 31 df xor %r11,%rdi
1428: 49 0f af c1 imul %r9,%rax
142c: 48 c1 ea 21 shr $0x21,%rdx
1430: c5 e2 2a d9 vcvtsi2ss %ecx,%xmm3,%xmm3
1434: 4c 31 ea xor %r13,%rdx
1437: 49 0f af d1 imul %r9,%rdx
143b: c5 fa 2a c7 vcvtsi2ss %edi,%xmm0,%xmm0
143f: 48 8d 30 lea (%rax),%rsi
1442: 48 c1 ee 21 shr $0x21,%rsi
1446: 48 31 f0 xor %rsi,%rax
1449: 4c 8d 2a lea (%rdx),%r13
144c: 49 0f af c2 imul %r10,%rax
1450: 49 c1 ed 21 shr $0x21,%r13
1454: 62 b1 66 08 59 dc vmulss %xmm20,%xmm3,%xmm3
145a: 4c 31 ea xor %r13,%rdx
145d: 49 0f af d2 imul %r10,%rdx
1461: 48 8d 30 lea (%rax),%rsi
1464: 48 c1 ee 21 shr $0x21,%rsi
1468: c4 e2 61 99 c5 vfmadd132ss %xmm5,%xmm3,%xmm0
146d: 48 31 f0 xor %rsi,%rax
1470: 4c 8d 2a lea (%rdx),%r13
1473: c5 ea 2a d0 vcvtsi2ss %eax,%xmm2,%xmm2
1477: 49 c1 ed 21 shr $0x21,%r13
147b: 4c 31 ea xor %r13,%rdx
147e: 4d 39 f4 cmp %r14,%r12
1481: c5 f2 2a ca vcvtsi2ss %edx,%xmm1,%xmm1
1485: 62 b1 6e 08 59 d4 vmulss %xmm20,%xmm2,%xmm2
148b: c4 e2 69 99 cd vfmadd132ss %xmm5,%xmm2,%xmm1
1490: 62 b1 76 08 59 cd vmulss %xmm21,%xmm1,%xmm1
1496: c4 e2 71 99 c6 vfmadd132ss %xmm6,%xmm1,%xmm0
149b: c4 c1 7a 59 c7 vmulss %xmm15,%xmm0,%xmm0
14a0: c4 c2 11 99 c6 vfmadd132ss %xmm14,%xmm13,%xmm0
14a5: 62 b2 7d 08 b9 fb vfmadd231ss %xmm19,%xmm0,%xmm7
14ab: 62 c1 66 00 59 db vmulss %xmm11,%xmm19,%xmm19
14b1: 0f 85 39 fe ff ff jne 12f0
<fill_data.isra.0.constprop.0+0xc0>
14b7: 62 b1 46 08 59 f9 vmulss %xmm17,%xmm7,%xmm7
14bd: 8d 5b 01 lea 0x1(%rbx),%ebx
14c0: 81 fb 00 20 00 00 cmp $0x2000,%ebx
14c6: 48 8d 6d 04 lea 0x4(%rbp),%rbp
14ca: c5 fa 11 7d fc vmovss %xmm7,-0x4(%rbp)
14cf: 74 17 je 14e8
<fill_data.isra.0.constprop.0+0x2b8>
14d1: c5 3a 2a c3 vcvtsi2ss %ebx,%xmm8,%xmm8
14d5: 62 d3 7d 08 0a c0 09 vrndscaless $0x9,%xmm8,%xmm0,%xmm0
14dc: c5 fa 2c f0 vcvttss2si %xmm0,%esi
14e0: e9 eb fd ff ff jmpq 12d0
<fill_data.isra.0.constprop.0+0xa0>
14e5: 0f 1f 00 nopl (%rax)
14e8: 83 44 24 f4 01 addl $0x1,-0xc(%rsp)
14ed: 48 81 44 24 f8 00 80 addq $0x8000,-0x8(%rsp)
14f4: 00 00
14f6: 8b 44 24 f4 mov -0xc(%rsp),%eax
14fa: 3d 00 20 00 00 cmp $0x2000,%eax
14ff: 74 1f je 1520
<fill_data.isra.0.constprop.0+0x2f0>
1501: c5 2a 2a d0 vcvtsi2ss %eax,%xmm10,%xmm10
1505: 62 d3 7d 08 0a c2 09 vrndscaless $0x9,%xmm10,%xmm0,%xmm0
150c: c5 fa 2c c0 vcvttss2si %xmm0,%eax
1510: 89 44 24 f0 mov %eax,-0x10(%rsp)
1514: e9 a7 fd ff ff jmpq 12c0
<fill_data.isra.0.constprop.0+0x90>
1519: 0f 1f 80 00 00 00 00 nopl 0x0(%rax)
1520: 5b pop %rbx
1521: 5d pop %rbp
1522: 41 5c pop %r12
1524: 41 5d pop %r13
1526: 41 5e pop %r14
1528: 41 5f pop %r15
152a: c3 retq
152b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1)
with -fno-tree-pre:
0000000000001230 <fill_data.isra.0.constprop.0>:
1230: 55 push %rbp
1231: 48 8d b7 00 80 00 00 lea 0x8000(%rdi),%rsi
1238: 31 c9 xor %ecx,%ecx
123a: 48 89 e5 mov %rsp,%rbp
123d: 48 83 e4 c0 and $0xffffffffffffffc0,%rsp
1241: 48 8d 64 24 b8 lea -0x48(%rsp),%rsp
1246: 48 8d 16 lea (%rsi),%rdx
1249: 62 f1 fd 48 6f 0d 2d vmovdqa64 0xf2d(%rip),%zmm1 #
2180 <_IO_stdin_used+0x180>
1250: 0f 00 00
1253: 62 f1 fd 48 6f 05 63 vmovdqa64 0xf63(%rip),%zmm0 #
21c0 <_IO_stdin_used+0x1c0>
125a: 0f 00 00
125d: 62 f1 e5 48 73 d1 20 vpsrlq $0x20,%zmm1,%zmm3
1264: 62 61 fd 48 6f 05 d2 vmovdqa64 0xfd2(%rip),%zmm24 #
2240 <_IO_stdin_used+0x240>
126b: 0f 00 00
126e: 62 f1 ed 48 73 d0 20 vpsrlq $0x20,%zmm0,%zmm2
1275: 62 e1 7c 48 28 3d 41 vmovaps 0xe41(%rip),%zmm23 #
20c0 <_IO_stdin_used+0xc0>
127c: 0e 00 00
127f: 62 91 b5 40 73 d0 20 vpsrlq $0x20,%zmm24,%zmm25
1286: 62 71 fd 48 6f 05 f0 vmovdqa64 0xff0(%rip),%zmm8 #
2280 <_IO_stdin_used+0x280>
128d: 0f 00 00
1290: 62 f1 fd 48 6f 3d e6 vmovdqa64 0xde6(%rip),%zmm7 #
2080 <_IO_stdin_used+0x80>
1297: 0d 00 00
129a: 62 f2 7d 48 7c e1 vpbroadcastd %ecx,%zmm4
12a0: 62 f1 fd 48 7f bc 24 vmovdqa64 %zmm7,-0x38(%rsp)
12a7: c8 ff ff ff
12ab: 62 f1 7c 48 5b fc vcvtdq2ps %zmm4,%zmm7
12b1: 62 f1 7c 48 29 bc 24 vmovaps %zmm7,-0x78(%rsp)
12b8: 88 ff ff ff
12bc: 0f 1f 40 00 nopl 0x0(%rax)
12c0: 62 f1 fd 48 6f bc 24 vmovdqa64 -0x38(%rsp),%zmm7
12c7: c8 ff ff ff
12cb: 62 a1 7c 48 28 ef vmovaps %zmm23,%zmm21
12d1: 62 f1 fd 48 6f e7 vmovdqa64 %zmm7,%zmm4
12d7: 62 f1 45 48 fe 3d 1f vpaddd 0xe1f(%rip),%zmm7,%zmm7 #
2100 <_IO_stdin_used+0x100>
12de: 0e 00 00
12e1: 62 f1 fd 48 7f bc 24 vmovdqa64 %zmm7,-0x38(%rsp)
12e8: c8 ff ff ff
12ec: 62 a1 7c 48 28 c7 vmovaps %zmm23,%zmm16
12f2: 62 f1 7c 48 5b fc vcvtdq2ps %zmm4,%zmm7
12f8: b8 08 00 00 00 mov $0x8,%eax
12fd: 62 a1 75 40 ef c9 vpxord %zmm17,%zmm17,%zmm17
1303: 62 a1 5d 40 ef e4 vpxord %zmm20,%zmm20,%zmm20
1309: 62 f1 7c 48 29 bc 24 vmovaps %zmm7,0x8(%rsp)
1310: 08 00 00 00
1314: 66 66 2e 0f 1f 84 00 data16 nopw %cs:0x0(%rax,%rax,1)
131b: 00 00 00 00
131f: 90 nop
1320: 62 b1 fd 48 6f e4 vmovdqa64 %zmm20,%zmm4
1326: 83 e8 01 sub $0x1,%eax
1329: 62 f2 7d 48 25 f4 vpmovsxdq %ymm4,%zmm6
132f: 62 e1 5d 40 fe 25 07 vpaddd 0xe07(%rip),%zmm20,%zmm20
# 2140 <_IO_stdin_used+0x140>
1336: 0e 00 00
1339: 62 f1 cd 48 f4 f9 vpmuludq %zmm1,%zmm6,%zmm7
133f: 62 f1 d5 48 73 d6 20 vpsrlq $0x20,%zmm6,%zmm5
1346: 62 f3 fd 48 3b e4 01 vextracti64x4 $0x1,%zmm4,%ymm4
134d: 62 f1 e5 48 f4 f6 vpmuludq %zmm6,%zmm3,%zmm6
1353: 62 f2 7d 48 25 e4 vpmovsxdq %ymm4,%zmm4
1359: 62 f1 d5 48 f4 e9 vpmuludq %zmm1,%zmm5,%zmm5
135f: 62 e1 7c 40 59 94 24 vmulps -0x78(%rsp),%zmm16,%zmm18
1366: 88 ff ff ff
136a: 62 e1 7c 40 59 9c 24 vmulps 0x8(%rsp),%zmm16,%zmm19
1371: 08 00 00 00
1375: 62 f1 d5 48 d4 ee vpaddq %zmm6,%zmm5,%zmm5
137b: 62 f1 dd 48 f4 f1 vpmuludq %zmm1,%zmm4,%zmm6
1381: 62 f1 d5 48 73 f5 20 vpsllq $0x20,%zmm5,%zmm5
1388: 62 71 c5 48 d4 cd vpaddq %zmm5,%zmm7,%zmm9
138e: 62 f1 d5 48 73 d4 20 vpsrlq $0x20,%zmm4,%zmm5
1395: 62 f1 d5 48 f4 e9 vpmuludq %zmm1,%zmm5,%zmm5
139b: 62 d1 c5 48 73 d1 21 vpsrlq $0x21,%zmm9,%zmm7
13a2: 62 d1 c5 48 ef f9 vpxorq %zmm9,%zmm7,%zmm7
13a8: 62 f1 e5 48 f4 e4 vpmuludq %zmm4,%zmm3,%zmm4
13ae: 62 71 c5 48 f4 c8 vpmuludq %zmm0,%zmm7,%zmm9
13b4: 62 e1 7c 40 59 05 c2 vmulps 0xfc2(%rip),%zmm16,%zmm16
# 2380 <_IO_stdin_used+0x380>
13bb: 0f 00 00
13be: 62 f1 d5 48 d4 ec vpaddq %zmm4,%zmm5,%zmm5
13c4: 62 f1 dd 48 73 d7 20 vpsrlq $0x20,%zmm7,%zmm4
13cb: 62 f1 dd 48 f4 e0 vpmuludq %zmm0,%zmm4,%zmm4
13d1: 62 f1 d5 48 73 f5 20 vpsllq $0x20,%zmm5,%zmm5
13d8: 62 f1 cd 48 d4 ed vpaddq %zmm5,%zmm6,%zmm5
13de: 62 f1 ed 48 f4 ff vpmuludq %zmm7,%zmm2,%zmm7
13e4: 62 f1 cd 48 73 d5 21 vpsrlq $0x21,%zmm5,%zmm6
13eb: 62 f1 cd 48 ef f5 vpxorq %zmm5,%zmm6,%zmm6
13f1: 62 f1 dd 48 d4 e7 vpaddq %zmm7,%zmm4,%zmm4
13f7: 62 f1 cd 48 f4 f8 vpmuludq %zmm0,%zmm6,%zmm7
13fd: 62 f1 dd 48 73 f4 20 vpsllq $0x20,%zmm4,%zmm4
1404: 62 71 b5 48 d4 cc vpaddq %zmm4,%zmm9,%zmm9
140a: 62 f1 dd 48 73 d6 20 vpsrlq $0x20,%zmm6,%zmm4
1411: 62 f1 dd 48 f4 e0 vpmuludq %zmm0,%zmm4,%zmm4
1417: 62 f1 b5 48 ef 2d df vpxorq 0xddf(%rip),%zmm9,%zmm5 #
2200 <_IO_stdin_used+0x200>
141e: 0d 00 00
1421: 62 d1 b5 48 73 d1 21 vpsrlq $0x21,%zmm9,%zmm9
1428: 62 f1 ed 48 f4 f6 vpmuludq %zmm6,%zmm2,%zmm6
142e: 62 51 d5 48 ef c9 vpxorq %zmm9,%zmm5,%zmm9
1434: 62 d1 d5 48 73 d1 21 vpsrlq $0x21,%zmm9,%zmm5
143b: 62 d1 d5 48 ef e9 vpxorq %zmm9,%zmm5,%zmm5
1441: 62 f1 dd 48 d4 e6 vpaddq %zmm6,%zmm4,%zmm4
1447: 62 f1 d5 48 f4 f1 vpmuludq %zmm1,%zmm5,%zmm6
144d: 62 f1 dd 48 73 f4 20 vpsllq $0x20,%zmm4,%zmm4
1454: 62 f1 c5 48 d4 e4 vpaddq %zmm4,%zmm7,%zmm4
145a: 62 f1 dd 48 ef 3d 9c vpxorq 0xd9c(%rip),%zmm4,%zmm7 #
2200 <_IO_stdin_used+0x200>
1461: 0d 00 00
1464: 62 f1 dd 48 73 d4 21 vpsrlq $0x21,%zmm4,%zmm4
146b: 62 71 c5 48 ef d4 vpxorq %zmm4,%zmm7,%zmm10
1471: 62 f1 dd 48 73 d5 20 vpsrlq $0x20,%zmm5,%zmm4
1478: 62 f1 dd 48 f4 e1 vpmuludq %zmm1,%zmm4,%zmm4
147e: 62 d1 c5 48 73 d2 21 vpsrlq $0x21,%zmm10,%zmm7
1485: 62 d1 c5 48 ef fa vpxorq %zmm10,%zmm7,%zmm7
148b: 62 f1 e5 48 f4 ed vpmuludq %zmm5,%zmm3,%zmm5
1491: 62 f1 dd 48 d4 e5 vpaddq %zmm5,%zmm4,%zmm4
1497: 62 f1 c5 48 f4 e9 vpmuludq %zmm1,%zmm7,%zmm5
149d: 62 f1 dd 48 73 f4 20 vpsllq $0x20,%zmm4,%zmm4
14a4: 62 71 cd 48 d4 cc vpaddq %zmm4,%zmm6,%zmm9
14aa: 62 f1 dd 48 73 d7 20 vpsrlq $0x20,%zmm7,%zmm4
14b1: 62 f1 dd 48 f4 e1 vpmuludq %zmm1,%zmm4,%zmm4
14b7: 62 d1 cd 48 73 d1 21 vpsrlq $0x21,%zmm9,%zmm6
14be: 62 d1 cd 48 ef f1 vpxorq %zmm9,%zmm6,%zmm6
14c4: 62 f1 e5 48 f4 ff vpmuludq %zmm7,%zmm3,%zmm7
14ca: 62 71 cd 48 f4 f0 vpmuludq %zmm0,%zmm6,%zmm14
14d0: 62 33 7d 48 08 cb 01 vrndscaleps $0x1,%zmm19,%zmm9
14d7: 62 51 7e 48 5b c9 vcvttps2dq %zmm9,%zmm9
14dd: 62 f1 dd 48 d4 e7 vpaddq %zmm7,%zmm4,%zmm4
14e3: 62 f1 dd 48 73 f4 20 vpsllq $0x20,%zmm4,%zmm4
14ea: 62 f1 d5 48 d4 fc vpaddq %zmm4,%zmm5,%zmm7
14f0: 62 f1 dd 48 73 d6 20 vpsrlq $0x20,%zmm6,%zmm4
14f7: 62 f1 dd 48 f4 e0 vpmuludq %zmm0,%zmm4,%zmm4
14fd: 62 f1 d5 48 73 d7 21 vpsrlq $0x21,%zmm7,%zmm5
1504: 62 f1 d5 48 ef ef vpxorq %zmm7,%zmm5,%zmm5
150a: 62 61 35 48 fe 15 2c vpaddd 0xc2c(%rip),%zmm9,%zmm26
# 2140 <_IO_stdin_used+0x140>
1511: 0c 00 00
1514: 62 f1 ed 48 f4 f6 vpmuludq %zmm6,%zmm2,%zmm6
151a: 62 52 7d 48 25 d9 vpmovsxdq %ymm9,%zmm11
1520: 62 71 d5 48 f4 e8 vpmuludq %zmm0,%zmm5,%zmm13
1526: 62 d1 7c 48 5b f9 vcvtdq2ps %zmm9,%zmm7
152c: 62 53 fd 48 3b c9 01 vextracti64x4 $0x1,%zmm9,%ymm9
1533: 62 f1 dd 48 d4 e6 vpaddq %zmm6,%zmm4,%zmm4
1539: 62 f1 dd 48 73 f4 20 vpsllq $0x20,%zmm4,%zmm4
1540: 62 52 7d 48 25 c9 vpmovsxdq %ymm9,%zmm9
1546: 62 71 8d 48 d4 f4 vpaddq %zmm4,%zmm14,%zmm14
154c: 62 f1 dd 48 73 d5 20 vpsrlq $0x20,%zmm5,%zmm4
1553: 62 f1 dd 48 f4 e0 vpmuludq %zmm0,%zmm4,%zmm4
1559: 62 d1 ad 48 73 d6 21 vpsrlq $0x21,%zmm14,%zmm10
1560: 62 51 ad 48 ef f6 vpxorq %zmm14,%zmm10,%zmm14
1566: 62 71 64 40 5c ff vsubps %zmm7,%zmm19,%zmm15
156c: 62 f1 ed 48 f4 ed vpmuludq %zmm5,%zmm2,%zmm5
1572: 62 b1 44 48 58 ff vaddps %zmm23,%zmm7,%zmm7
1578: 62 71 04 48 59 3d 3e vmulps 0xd3e(%rip),%zmm15,%zmm15
# 22c0 <_IO_stdin_used+0x2c0>
157f: 0d 00 00
1582: 62 a1 44 48 5c db vsubps %zmm19,%zmm7,%zmm19
1588: 62 f1 dd 48 d4 e5 vpaddq %zmm5,%zmm4,%zmm4
158e: 62 b3 7d 48 08 ea 01 vrndscaleps $0x1,%zmm18,%zmm5
1595: 62 f1 7e 48 5b ed vcvttps2dq %zmm5,%zmm5
159b: 62 f1 dd 48 73 f4 20 vpsllq $0x20,%zmm4,%zmm4
15a2: 62 e1 64 40 59 1d 14 vmulps 0xd14(%rip),%zmm19,%zmm19
# 22c0 <_IO_stdin_used+0x2c0>
15a9: 0d 00 00
15ac: 62 f1 95 48 d4 e4 vpaddq %zmm4,%zmm13,%zmm4
15b2: 62 f1 95 48 73 d4 21 vpsrlq $0x21,%zmm4,%zmm13
15b9: 62 71 95 48 ef ec vpxorq %zmm4,%zmm13,%zmm13
15bf: 62 62 7d 48 25 dd vpmovsxdq %ymm5,%zmm27
15c5: 62 71 55 48 fe 15 71 vpaddd 0xb71(%rip),%zmm5,%zmm10
# 2140 <_IO_stdin_used+0x140>
15cc: 0b 00 00
15cf: 62 91 9d 48 73 d3 20 vpsrlq $0x20,%zmm27,%zmm12
15d6: 62 42 7d 48 25 f2 vpmovsxdq %ymm10,%zmm30
15dc: 62 91 a5 40 f4 f0 vpmuludq %zmm24,%zmm27,%zmm6
15e2: 62 53 fd 48 3b d2 01 vextracti64x4 $0x1,%zmm10,%ymm10
15e9: 62 01 b5 40 f4 db vpmuludq %zmm27,%zmm25,%zmm27
15ef: 62 52 7d 48 25 d2 vpmovsxdq %ymm10,%zmm10
15f5: 62 11 9d 48 f4 e0 vpmuludq %zmm24,%zmm12,%zmm12
15fb: 62 f1 7c 48 5b e5 vcvtdq2ps %zmm5,%zmm4
1601: 62 f3 fd 48 3b ed 01 vextracti64x4 $0x1,%zmm5,%ymm5
1608: 62 01 8d 40 f4 f8 vpmuludq %zmm24,%zmm30,%zmm31
160e: 62 11 9d 48 d4 e3 vpaddq %zmm27,%zmm12,%zmm12
1614: 62 62 7d 48 25 dd vpmovsxdq %ymm5,%zmm27
161a: 62 d1 9d 48 73 f4 20 vpsllq $0x20,%zmm12,%zmm12
1621: 62 e1 6c 40 5c f4 vsubps %zmm4,%zmm18,%zmm22
1627: 62 d1 cd 48 d4 f4 vpaddq %zmm12,%zmm6,%zmm6
162d: 62 91 9d 48 73 d3 20 vpsrlq $0x20,%zmm27,%zmm12
1634: 62 91 a5 40 f4 e8 vpmuludq %zmm24,%zmm27,%zmm5
163a: 62 41 cd 48 d4 eb vpaddq %zmm11,%zmm6,%zmm29
1640: 62 b1 5c 48 58 e7 vaddps %zmm23,%zmm4,%zmm4
1646: 62 01 b5 40 f4 db vpmuludq %zmm27,%zmm25,%zmm27
164c: 62 11 9d 48 f4 e0 vpmuludq %zmm24,%zmm12,%zmm12
1652: 62 a1 5c 48 5c d2 vsubps %zmm18,%zmm4,%zmm18
1658: 62 11 9d 48 d4 e3 vpaddq %zmm27,%zmm12,%zmm12
165e: 62 d1 9d 48 73 f4 20 vpsllq $0x20,%zmm12,%zmm12
1665: 62 d1 d5 48 d4 ec vpaddq %zmm12,%zmm5,%zmm5
166b: 62 51 95 40 ef e6 vpxorq %zmm14,%zmm29,%zmm12
1671: 62 41 d5 48 d4 e9 vpaddq %zmm9,%zmm5,%zmm29
1677: 62 41 95 40 ef e5 vpxorq %zmm13,%zmm29,%zmm28
167d: 62 d1 95 40 73 d4 21 vpsrlq $0x21,%zmm12,%zmm29
1684: 62 41 95 40 ef ec vpxorq %zmm12,%zmm29,%zmm29
168a: 62 61 95 40 f4 d9 vpmuludq %zmm1,%zmm29,%zmm27
1690: 62 91 9d 48 73 d5 20 vpsrlq $0x20,%zmm29,%zmm12
1697: 62 71 9d 48 f4 e1 vpmuludq %zmm1,%zmm12,%zmm12
169d: 62 01 e5 48 f4 ed vpmuludq %zmm29,%zmm3,%zmm29
16a3: 62 11 9d 48 d4 e5 vpaddq %zmm29,%zmm12,%zmm12
16a9: 62 91 95 40 73 d4 21 vpsrlq $0x21,%zmm28,%zmm29
16b0: 62 01 95 40 ef ec vpxorq %zmm28,%zmm29,%zmm29
16b6: 62 d1 9d 48 73 f4 20 vpsllq $0x20,%zmm12,%zmm12
16bd: 62 91 9d 40 73 d5 20 vpsrlq $0x20,%zmm29,%zmm28
16c4: 62 41 a5 40 d4 dc vpaddq %zmm12,%zmm27,%zmm27
16ca: 62 61 9d 40 f4 e1 vpmuludq %zmm1,%zmm28,%zmm28
16d0: 62 71 95 40 f4 e1 vpmuludq %zmm1,%zmm29,%zmm12
16d6: 62 01 e5 48 f4 ed vpmuludq %zmm29,%zmm3,%zmm29
16dc: 62 01 9d 40 d4 e5 vpaddq %zmm29,%zmm28,%zmm28
16e2: 62 91 9d 40 73 f4 20 vpsllq $0x20,%zmm28,%zmm28
16e9: 62 01 9d 48 d4 e4 vpaddq %zmm28,%zmm12,%zmm28
16ef: 62 91 9d 48 73 d3 21 vpsrlq $0x21,%zmm27,%zmm12
16f6: 62 11 9d 48 ef e3 vpxorq %zmm27,%zmm12,%zmm12
16fc: 62 61 9d 48 f4 e8 vpmuludq %zmm0,%zmm12,%zmm29
1702: 62 d1 a5 40 73 d4 20 vpsrlq $0x20,%zmm12,%zmm27
1709: 62 61 a5 40 f4 d8 vpmuludq %zmm0,%zmm27,%zmm27
170f: 62 51 ed 48 f4 e4 vpmuludq %zmm12,%zmm2,%zmm12
1715: 62 41 a5 40 d4 dc vpaddq %zmm12,%zmm27,%zmm27
171b: 62 91 9d 48 73 d4 21 vpsrlq $0x21,%zmm28,%zmm12
1722: 62 11 9d 48 ef e4 vpxorq %zmm28,%zmm12,%zmm12
1728: 62 91 a5 40 73 f3 20 vpsllq $0x20,%zmm27,%zmm27
172f: 62 d1 9d 40 73 d4 20 vpsrlq $0x20,%zmm12,%zmm28
1736: 62 01 95 40 d4 db vpaddq %zmm27,%zmm29,%zmm27
173c: 62 61 9d 40 f4 e0 vpmuludq %zmm0,%zmm28,%zmm28
1742: 62 91 dd 48 73 d3 21 vpsrlq $0x21,%zmm27,%zmm4
1749: 62 61 9d 48 f4 e8 vpmuludq %zmm0,%zmm12,%zmm29
174f: 62 51 ed 48 f4 e4 vpmuludq %zmm12,%zmm2,%zmm12
1755: 62 41 9d 40 d4 e4 vpaddq %zmm12,%zmm28,%zmm28
175b: 62 91 9d 48 73 d6 20 vpsrlq $0x20,%zmm30,%zmm12
1762: 62 91 9d 40 73 f4 20 vpsllq $0x20,%zmm28,%zmm28
1769: 62 01 95 40 d4 e4 vpaddq %zmm28,%zmm29,%zmm28
176f: 62 01 9d 48 f4 e8 vpmuludq %zmm24,%zmm12,%zmm29
1775: 62 91 c5 48 73 d4 21 vpsrlq $0x21,%zmm28,%zmm7
177c: 62 f2 3d 48 7e e7 vpermt2d %zmm7,%zmm8,%zmm4
1782: 62 02 3d 48 7e dc vpermt2d %zmm28,%zmm8,%zmm27
1788: 62 11 b5 40 f4 e6 vpmuludq %zmm30,%zmm25,%zmm12
178e: 62 01 5d 48 ef db vpxord %zmm27,%zmm4,%zmm27
1794: 62 01 ad 48 f4 f0 vpmuludq %zmm24,%zmm10,%zmm30
179a: 62 01 7c 48 5b db vcvtdq2ps %zmm27,%zmm27
17a0: 62 41 95 40 d4 ec vpaddq %zmm12,%zmm29,%zmm29
17a6: 62 91 95 40 73 f5 20 vpsllq $0x20,%zmm29,%zmm29
17ad: 62 11 85 40 d4 e5 vpaddq %zmm29,%zmm31,%zmm12
17b3: 62 d1 95 40 73 d2 20 vpsrlq $0x20,%zmm10,%zmm29
17ba: 62 01 95 40 f4 e8 vpmuludq %zmm24,%zmm29,%zmm29
17c0: 62 51 b5 40 f4 d2 vpmuludq %zmm10,%zmm25,%zmm10
17c6: 62 41 95 40 d4 ea vpaddq %zmm10,%zmm29,%zmm29
17cc: 62 91 95 40 73 f5 20 vpsllq $0x20,%zmm29,%zmm29
17d3: 62 01 8d 40 d4 ed vpaddq %zmm29,%zmm30,%zmm29
17d9: 62 41 9d 48 d4 f3 vpaddq %zmm11,%zmm12,%zmm30
17df: 62 41 8d 40 ef f6 vpxorq %zmm14,%zmm30,%zmm30
17e5: 62 51 95 40 d4 c9 vpaddq %zmm9,%zmm29,%zmm9
17eb: 62 91 a5 48 73 d6 21 vpsrlq $0x21,%zmm30,%zmm11
17f2: 62 51 b5 48 ef cd vpxorq %zmm13,%zmm9,%zmm9
17f8: 62 01 a5 48 ef f6 vpxorq %zmm30,%zmm11,%zmm30
17fe: 62 d1 a5 48 73 d1 21 vpsrlq $0x21,%zmm9,%zmm11
1805: 62 91 ad 48 73 d6 20 vpsrlq $0x20,%zmm30,%zmm10
180c: 62 51 a5 48 ef d9 vpxorq %zmm9,%zmm11,%zmm11
1812: 62 61 8d 40 f4 f9 vpmuludq %zmm1,%zmm30,%zmm31
1818: 62 71 ad 48 f4 d1 vpmuludq %zmm1,%zmm10,%zmm10
181e: 62 01 e5 48 f4 f6 vpmuludq %zmm30,%zmm3,%zmm30
1824: 62 71 a5 48 f4 c9 vpmuludq %zmm1,%zmm11,%zmm9
182a: 62 11 ad 48 d4 d6 vpaddq %zmm30,%zmm10,%zmm10
1830: 62 d1 8d 40 73 d3 20 vpsrlq $0x20,%zmm11,%zmm30
1837: 62 61 8d 40 f4 f1 vpmuludq %zmm1,%zmm30,%zmm30
183d: 62 d1 ad 48 73 f2 20 vpsllq $0x20,%zmm10,%zmm10
1844: 62 51 85 40 d4 d2 vpaddq %zmm10,%zmm31,%zmm10
184a: 62 51 e5 48 f4 db vpmuludq %zmm11,%zmm3,%zmm11
1850: 62 41 8d 40 d4 f3 vpaddq %zmm11,%zmm30,%zmm30
1856: 62 d1 a5 48 73 d2 21 vpsrlq $0x21,%zmm10,%zmm11
185d: 62 51 a5 48 ef d2 vpxorq %zmm10,%zmm11,%zmm10
1863: 62 91 8d 40 73 f6 20 vpsllq $0x20,%zmm30,%zmm30
186a: 62 d1 a5 48 73 d2 20 vpsrlq $0x20,%zmm10,%zmm11
1871: 62 11 b5 48 d4 ce vpaddq %zmm30,%zmm9,%zmm9
1877: 62 71 a5 48 f4 d8 vpmuludq %zmm0,%zmm11,%zmm11
187d: 62 61 ad 48 f4 f0 vpmuludq %zmm0,%zmm10,%zmm30
1883: 62 51 ed 48 f4 d2 vpmuludq %zmm10,%zmm2,%zmm10
1889: 62 51 a5 48 d4 da vpaddq %zmm10,%zmm11,%zmm11
188f: 62 d1 ad 48 73 d1 21 vpsrlq $0x21,%zmm9,%zmm10
1896: 62 51 ad 48 ef c9 vpxorq %zmm9,%zmm10,%zmm9
189c: 62 d1 a5 48 73 f3 20 vpsllq $0x20,%zmm11,%zmm11
18a3: 62 71 b5 48 f4 d0 vpmuludq %zmm0,%zmm9,%zmm10
18a9: 62 51 8d 40 d4 db vpaddq %zmm11,%zmm30,%zmm11
18af: 62 d1 8d 40 73 d1 20 vpsrlq $0x20,%zmm9,%zmm30
18b6: 62 d1 dd 48 73 d3 21 vpsrlq $0x21,%zmm11,%zmm4
18bd: 62 51 ed 48 f4 c9 vpmuludq %zmm9,%zmm2,%zmm9
18c3: 62 61 8d 40 f4 f0 vpmuludq %zmm0,%zmm30,%zmm30
18c9: 62 41 8d 40 d4 f1 vpaddq %zmm9,%zmm30,%zmm30
18cf: 62 43 fd 48 3b d1 01 vextracti64x4 $0x1,%zmm26,%ymm9
18d6: 62 91 8d 40 73 f6 20 vpsllq $0x20,%zmm30,%zmm30
18dd: 62 01 ad 48 d4 f6 vpaddq %zmm30,%zmm10,%zmm30
18e3: 62 11 fd 48 6f d2 vmovdqa64 %zmm26,%zmm10
18e9: 62 52 7d 48 25 d2 vpmovsxdq %ymm10,%zmm10
18ef: 62 52 7d 48 25 c9 vpmovsxdq %ymm9,%zmm9
18f5: 62 f1 ad 48 d4 f6 vpaddq %zmm6,%zmm10,%zmm6
18fb: 62 f1 b5 48 d4 ed vpaddq %zmm5,%zmm9,%zmm5
1901: 62 d1 cd 48 ef f6 vpxorq %zmm14,%zmm6,%zmm6
1907: 62 d1 d5 48 ef ed vpxorq %zmm13,%zmm5,%zmm5
190d: 62 f1 ad 40 73 d6 21 vpsrlq $0x21,%zmm6,%zmm26
1914: 62 51 ad 48 d4 d4 vpaddq %zmm12,%zmm10,%zmm10
191a: 62 f1 ad 40 ef f6 vpxorq %zmm6,%zmm26,%zmm6
1920: 62 51 ad 48 ef d6 vpxorq %zmm14,%zmm10,%zmm10
1926: 62 f1 ad 40 73 d6 20 vpsrlq $0x20,%zmm6,%zmm26
192d: 62 d1 8d 48 73 d2 21 vpsrlq $0x21,%zmm10,%zmm14
1934: 62 61 cd 48 f4 f9 vpmuludq %zmm1,%zmm6,%zmm31
193a: 62 51 8d 48 ef f2 vpxorq %zmm10,%zmm14,%zmm14
1940: 62 11 b5 48 d4 cd vpaddq %zmm29,%zmm9,%zmm9
1946: 62 91 c5 48 73 d6 21 vpsrlq $0x21,%zmm30,%zmm7
194d: 62 f1 e5 48 f4 f6 vpmuludq %zmm6,%zmm3,%zmm6
1953: 62 41 b5 48 ef ed vpxorq %zmm13,%zmm9,%zmm29
1959: 62 d1 b5 48 73 d6 20 vpsrlq $0x20,%zmm14,%zmm9
1960: 62 91 95 48 73 d5 21 vpsrlq $0x21,%zmm29,%zmm13
1967: 62 61 ad 40 f4 d1 vpmuludq %zmm1,%zmm26,%zmm26
196d: 62 11 95 48 ef ed vpxorq %zmm29,%zmm13,%zmm13
1973: 62 d1 ad 48 73 d5 20 vpsrlq $0x20,%zmm13,%zmm10
197a: 62 f2 3d 48 7e e7 vpermt2d %zmm7,%zmm8,%zmm4
1980: 62 71 b5 48 f4 c9 vpmuludq %zmm1,%zmm9,%zmm9
1986: 62 12 3d 48 7e de vpermt2d %zmm30,%zmm8,%zmm11
198c: 62 51 5d 48 ef db vpxord %zmm11,%zmm4,%zmm11
1992: 62 71 95 48 f4 e1 vpmuludq %zmm1,%zmm13,%zmm12
1998: 62 61 ad 40 d4 d6 vpaddq %zmm6,%zmm26,%zmm26
199e: 62 f1 cd 48 73 d5 21 vpsrlq $0x21,%zmm5,%zmm6
19a5: 62 f1 cd 48 ef ed vpxorq %zmm5,%zmm6,%zmm5
19ab: 62 91 ad 40 73 f2 20 vpsllq $0x20,%zmm26,%zmm26
19b2: 62 f1 cd 48 73 d5 20 vpsrlq $0x20,%zmm5,%zmm6
19b9: 62 01 85 40 d4 d2 vpaddq %zmm26,%zmm31,%zmm26
19bf: 62 f1 cd 48 f4 f1 vpmuludq %zmm1,%zmm6,%zmm6
19c5: 62 61 d5 48 f4 f9 vpmuludq %zmm1,%zmm5,%zmm31
19cb: 62 f1 e5 48 f4 ed vpmuludq %zmm5,%zmm3,%zmm5
19d1: 62 71 ad 48 f4 d1 vpmuludq %zmm1,%zmm10,%zmm10
19d7: 62 51 e5 48 f4 ed vpmuludq %zmm13,%zmm3,%zmm13
19dd: 62 f1 cd 48 d4 f5 vpaddq %zmm5,%zmm6,%zmm6
19e3: 62 91 d5 48 73 d2 21 vpsrlq $0x21,%zmm26,%zmm5
19ea: 62 01 d5 48 ef d2 vpxorq %zmm26,%zmm5,%zmm26
19f0: 62 f1 cd 48 73 f6 20 vpsllq $0x20,%zmm6,%zmm6
19f7: 62 91 d5 48 73 d2 20 vpsrlq $0x20,%zmm26,%zmm5
19fe: 62 f1 85 40 d4 f6 vpaddq %zmm6,%zmm31,%zmm6
1a04: 62 f1 d5 48 f4 e8 vpmuludq %zmm0,%zmm5,%zmm5
1a0a: 62 51 ad 48 d4 d5 vpaddq %zmm13,%zmm10,%zmm10
1a10: 62 61 ad 40 f4 f8 vpmuludq %zmm0,%zmm26,%zmm31
1a16: 62 d1 ad 48 73 f2 20 vpsllq $0x20,%zmm10,%zmm10
1a1d: 62 51 9d 48 d4 e2 vpaddq %zmm10,%zmm12,%zmm12
1a23: 62 01 ed 48 f4 d2 vpmuludq %zmm26,%zmm2,%zmm26
1a29: 62 51 7c 48 5b db vcvtdq2ps %zmm11,%zmm11
1a2f: 62 91 d5 48 d4 ea vpaddq %zmm26,%zmm5,%zmm5
1a35: 62 31 24 48 59 de vmulps %zmm22,%zmm11,%zmm11
1a3b: 62 f1 d5 48 73 f5 20 vpsllq $0x20,%zmm5,%zmm5
1a42: 62 61 85 40 d4 d5 vpaddq %zmm5,%zmm31,%zmm26
1a48: 62 f1 d5 48 73 d6 21 vpsrlq $0x21,%zmm6,%zmm5
1a4f: 62 f1 d5 48 ef f6 vpxorq %zmm6,%zmm5,%zmm6
1a55: 62 91 dd 48 73 d2 21 vpsrlq $0x21,%zmm26,%zmm4
1a5c: 62 f1 d5 48 73 d6 20 vpsrlq $0x20,%zmm6,%zmm5
1a63: 62 91 fd 48 6f fa vmovdqa64 %zmm26,%zmm7
1a69: 62 61 cd 48 f4 f8 vpmuludq %zmm0,%zmm6,%zmm31
1a6f: 62 12 6d 40 b8 db vfmadd231ps %zmm27,%zmm18,%zmm11
1a75: 62 f1 ed 48 f4 f6 vpmuludq %zmm6,%zmm2,%zmm6
1a7b: 62 f1 d5 48 f4 e8 vpmuludq %zmm0,%zmm5,%zmm5
1a81: 62 f1 d5 48 d4 ee vpaddq %zmm6,%zmm5,%zmm5
1a87: 62 f1 8d 48 f4 f1 vpmuludq %zmm1,%zmm14,%zmm6
1a8d: 62 f1 d5 48 73 f5 20 vpsllq $0x20,%zmm5,%zmm5
1a94: 62 f1 85 40 d4 ed vpaddq %zmm5,%zmm31,%zmm5
1a9a: 62 51 e5 48 f4 f6 vpmuludq %zmm14,%zmm3,%zmm14
1aa0: 62 f1 85 40 73 d5 21 vpsrlq $0x21,%zmm5,%zmm31
1aa7: 62 92 3d 48 7e e7 vpermt2d %zmm31,%zmm8,%zmm4
1aad: 62 f2 3d 48 7e fd vpermt2d %zmm5,%zmm8,%zmm7
1ab3: 62 f1 5d 48 ef ef vpxord %zmm7,%zmm4,%zmm5
1ab9: 62 f1 7c 48 5b ed vcvtdq2ps %zmm5,%zmm5
1abf: 62 51 b5 48 d4 ce vpaddq %zmm14,%zmm9,%zmm9
1ac5: 62 d1 b5 48 73 f1 20 vpsllq $0x20,%zmm9,%zmm9
1acc: 62 d1 cd 48 d4 f1 vpaddq %zmm9,%zmm6,%zmm6
1ad2: 62 f1 b5 48 73 d6 21 vpsrlq $0x21,%zmm6,%zmm9
1ad9: 62 71 b5 48 ef ce vpxorq %zmm6,%zmm9,%zmm9
1adf: 62 71 b5 48 f4 d0 vpmuludq %zmm0,%zmm9,%zmm10
1ae5: 62 d1 cd 48 73 d1 20 vpsrlq $0x20,%zmm9,%zmm6
1aec: 62 f1 cd 48 f4 f0 vpmuludq %zmm0,%zmm6,%zmm6
1af2: 62 51 ed 48 f4 c9 vpmuludq %zmm9,%zmm2,%zmm9
1af8: 62 d1 cd 48 d4 f1 vpaddq %zmm9,%zmm6,%zmm6
1afe: 62 f1 cd 48 73 f6 20 vpsllq $0x20,%zmm6,%zmm6
1b05: 62 f1 ad 48 d4 f6 vpaddq %zmm6,%zmm10,%zmm6
1b0b: 62 d1 ad 48 73 d4 21 vpsrlq $0x21,%zmm12,%zmm10
1b12: 62 51 ad 48 ef d4 vpxorq %zmm12,%zmm10,%zmm10
1b18: 62 f1 dd 48 73 d6 21 vpsrlq $0x21,%zmm6,%zmm4
1b1f: 62 71 ad 48 f4 e0 vpmuludq %zmm0,%zmm10,%zmm12
1b25: 62 d1 b5 48 73 d2 20 vpsrlq $0x20,%zmm10,%zmm9
1b2c: 62 71 b5 48 f4 c8 vpmuludq %zmm0,%zmm9,%zmm9
1b32: 62 51 ed 48 f4 d2 vpmuludq %zmm10,%zmm2,%zmm10
1b38: 62 51 b5 48 d4 ca vpaddq %zmm10,%zmm9,%zmm9
1b3e: 62 d1 b5 48 73 f1 20 vpsllq $0x20,%zmm9,%zmm9
1b45: 62 51 9d 48 d4 c9 vpaddq %zmm9,%zmm12,%zmm9
1b4b: 62 d1 c5 48 73 d1 21 vpsrlq $0x21,%zmm9,%zmm7
1b52: 62 d2 3d 48 7e f1 vpermt2d %zmm9,%zmm8,%zmm6
1b58: 62 f2 3d 48 7e e7 vpermt2d %zmm7,%zmm8,%zmm4
1b5e: 62 f1 7c 48 28 3d d8 vmovaps 0x7d8(%rip),%zmm7 # 2340
<_IO_stdin_used+0x340>
1b65: 07 00 00
1b68: 62 f1 5d 48 ef e6 vpxord %zmm6,%zmm4,%zmm4
1b6e: 62 f1 7c 48 5b e4 vcvtdq2ps %zmm4,%zmm4
1b74: 62 a1 5c 48 59 f6 vmulps %zmm22,%zmm4,%zmm22
1b7a: 62 e2 4d 40 98 d5 vfmadd132ps %zmm5,%zmm22,%zmm18
1b80: 62 a1 04 48 59 d2 vmulps %zmm18,%zmm15,%zmm18
1b86: 62 c2 6d 40 98 db vfmadd132ps %zmm11,%zmm18,%zmm19
1b8c: 62 e2 45 48 98 1d 6a vfmadd132ps 0x76a(%rip),%zmm7,%zmm19
# 2300 <_IO_stdin_used+0x300>
1b93: 07 00 00
1b96: 62 a2 65 40 b8 cd vfmadd231ps %zmm21,%zmm19,%zmm17
1b9c: 62 e1 54 40 59 2d 1a vmulps 0x81a(%rip),%zmm21,%zmm21
# 23c0 <_IO_stdin_used+0x3c0>
1ba3: 08 00 00
1ba6: 0f 85 74 f7 ff ff jne 1320
<fill_data.isra.0.constprop.0+0xf0>
1bac: 62 e1 74 40 59 0d 4a vmulps 0x84a(%rip),%zmm17,%zmm17
# 2400 <_IO_stdin_used+0x400>
1bb3: 08 00 00
1bb6: 48 8d 7f 40 lea 0x40(%rdi),%rdi
1bba: 62 e1 7c 48 29 4f ff vmovaps %zmm17,-0x40(%rdi)
1bc1: 48 39 d7 cmp %rdx,%rdi
1bc4: 0f 85 f6 f6 ff ff jne 12c0
<fill_data.isra.0.constprop.0+0x90>
1bca: 8d 49 01 lea 0x1(%rcx),%ecx
1bcd: 48 8d 92 00 80 00 00 lea 0x8000(%rdx),%rdx
1bd4: 81 f9 00 20 00 00 cmp $0x2000,%ecx
1bda: 48 8d 3e lea (%rsi),%rdi
1bdd: 74 11 je 1bf0
<fill_data.isra.0.constprop.0+0x9c0>
1bdf: 48 8d b6 00 80 00 00 lea 0x8000(%rsi),%rsi
1be6: e9 a5 f6 ff ff jmpq 1290
<fill_data.isra.0.constprop.0+0x60>
1beb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1)
1bf0: c5 f8 77 vzeroupper
1bf3: c9 leaveq
1bf4: c3 retq
1bf5: 66 66 2e 0f 1f 84 00 data16 nopw %cs:0x0(%rax,%rax,1)
1bfc: 00 00 00 00
In the case where the inner loop (foreach o) has a runtime defined number of
iterations ("OCTAVES" in source code is not compile time constant) both gcc
both with -fno-tree-pre and without, generate same scalar code without, and
generate same sequence of instructions, just with very slightly different
register allocation.
I think the issue of inner loop iterations being runtime dependent and code not
being vectorized, should be moved to a different issue tho.
More information about the Gcc-bugs
mailing list