@@ -2401,109 +2401,106 @@ define void @D107009(ptr %input, ptr %output) {
24012401; AVX1-LABEL: D107009:
24022402; AVX1: # %bb.0:
24032403; AVX1-NEXT: vmovups 96(%rdi), %ymm0
2404- ; AVX1-NEXT: vmovups (%rdi), %ymm1
2405- ; AVX1-NEXT: vmovups 128(%rdi), %ymm2
2406- ; AVX1-NEXT: vmovups 224(%rdi), %ymm3
2407- ; AVX1-NEXT: vunpcklpd {{.*#+}} ymm3 = ymm3[0],mem[0],ymm3[2],mem[2]
2408- ; AVX1-NEXT: vunpcklps {{.*#+}} ymm2 = ymm2[0],mem[0],ymm2[1],mem[1],ymm2[4],mem[4],ymm2[5],mem[5]
2409- ; AVX1-NEXT: vshufps {{.*#+}} ymm2 = ymm2[0,1],ymm3[2,0],ymm2[4,5],ymm3[6,4]
2404+ ; AVX1-NEXT: vmovups 128(%rdi), %ymm1
2405+ ; AVX1-NEXT: vmovups 224(%rdi), %ymm2
2406+ ; AVX1-NEXT: vunpcklpd {{.*#+}} ymm2 = ymm2[0],mem[0],ymm2[2],mem[2]
24102407; AVX1-NEXT: vunpcklps {{.*#+}} ymm1 = ymm1[0],mem[0],ymm1[1],mem[1],ymm1[4],mem[4],ymm1[5],mem[5]
2411- ; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm1
2408+ ; AVX1-NEXT: vshufps {{.*#+}} ymm1 = ymm1[0,1],ymm2[2,0],ymm1[4,5],ymm2[6,4]
2409+ ; AVX1-NEXT: vmovdqa 16(%rdi), %xmm2
2410+ ; AVX1-NEXT: vpunpckldq {{.*#+}} xmm2 = xmm2[0],mem[0],xmm2[1],mem[1]
24122411; AVX1-NEXT: vunpcklpd {{.*#+}} ymm0 = ymm0[0],mem[0],ymm0[2],mem[2]
24132412; AVX1-NEXT: vshufps {{.*#+}} ymm0 = ymm0[0,1,2,0,4,5,6,4]
24142413; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm0
2415- ; AVX1-NEXT: vpblendw {{.*#+}} xmm0 = xmm1 [0,1,2,3],xmm0[4,5,6,7]
2414+ ; AVX1-NEXT: vpblendw {{.*#+}} xmm0 = xmm2 [0,1,2,3],xmm0[4,5,6,7]
24162415; AVX1-NEXT: vpsrld $16, %xmm0, %xmm0
2417- ; AVX1-NEXT: vextractf128 $1, %ymm2 , %xmm1
2416+ ; AVX1-NEXT: vextractf128 $1, %ymm1 , %xmm1
24182417; AVX1-NEXT: vpsrld $16, %xmm1, %xmm1
24192418; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm1
24202419; AVX1-NEXT: vpshufd {{.*#+}} xmm2 = xmm0[0,1,1,3]
24212420; AVX1-NEXT: vpshufd {{.*#+}} xmm3 = xmm0[2,1,3,3]
24222421; AVX1-NEXT: vinsertf128 $1, %xmm3, %ymm2, %ymm2
2423- ; AVX1-NEXT: vmovshdup {{.*#+}} ymm3 = ymm1[1,1 ,3,3,5,5 ,7,7]
2424- ; AVX1-NEXT: vshufps {{.*#+}} ymm4 = ymm1[3,3 ,3,3,7,7,7,7 ]
2425- ; AVX1-NEXT: vshufpd {{.*#+}} ymm5 = ymm1[0,0 ,3,2 ]
2426- ; AVX1-NEXT: vpshufd {{.*#+}} xmm6 = xmm0[1,1,1,1 ]
2427- ; AVX1-NEXT: vpshufd {{.*#+}} xmm7 = xmm0[3,3,3,3 ]
2422+ ; AVX1-NEXT: vshufps {{.*#+}} ymm3 = ymm1[3,3 ,3,3,7,7 ,7,7]
2423+ ; AVX1-NEXT: vshufpd {{.*#+}} ymm4 = ymm1[0,0 ,3,2 ]
2424+ ; AVX1-NEXT: vmovshdup {{.*#+}} ymm5 = ymm1[1,1 ,3,3,5,5,7,7 ]
2425+ ; AVX1-NEXT: vpshufd {{.*#+}} xmm6 = xmm0[3,3,3,3 ]
2426+ ; AVX1-NEXT: vpshufd {{.*#+}} xmm7 = xmm0[1,1,1,1 ]
24282427; AVX1-NEXT: vmovdqa %xmm0, 16(%rsi)
2429- ; AVX1-NEXT: vmovdqa %xmm7, 112 (%rsi)
2430- ; AVX1-NEXT: vmovdqa %xmm6, 48 (%rsi)
2428+ ; AVX1-NEXT: vmovdqa %xmm7, 48 (%rsi)
2429+ ; AVX1-NEXT: vmovdqa %xmm6, 112 (%rsi)
24312430; AVX1-NEXT: vmovups %ymm1, 128(%rsi)
2432- ; AVX1-NEXT: vmovupd %ymm5, 192 (%rsi)
2433- ; AVX1-NEXT: vmovups %ymm4, 224 (%rsi)
2434- ; AVX1-NEXT: vmovups %ymm3, 160 (%rsi)
2431+ ; AVX1-NEXT: vmovups %ymm5, 160 (%rsi)
2432+ ; AVX1-NEXT: vmovupd %ymm4, 192 (%rsi)
2433+ ; AVX1-NEXT: vmovupd %ymm3, 224 (%rsi)
24352434; AVX1-NEXT: vmovups %ymm2, 64(%rsi)
24362435; AVX1-NEXT: vzeroupper
24372436; AVX1-NEXT: retq
24382437;
24392438; AVX2-LABEL: D107009:
24402439; AVX2: # %bb.0:
2441- ; AVX2-NEXT: vmovdqu (%rdi), %ymm0
2442- ; AVX2-NEXT: vmovdqu 64(%rdi), %ymm1
2443- ; AVX2-NEXT: vmovdqu 128(%rdi), %ymm2
2444- ; AVX2-NEXT: vmovdqu 192(%rdi), %ymm3
2445- ; AVX2-NEXT: vpunpckldq {{.*#+}} ymm3 = ymm3[0],mem[0],ymm3[1],mem[1],ymm3[4],mem[4],ymm3[5],mem[5]
2440+ ; AVX2-NEXT: vmovdqu 64(%rdi), %ymm0
2441+ ; AVX2-NEXT: vmovdqu 128(%rdi), %ymm1
2442+ ; AVX2-NEXT: vmovdqu 192(%rdi), %ymm2
24462443; AVX2-NEXT: vpunpckldq {{.*#+}} ymm2 = ymm2[0],mem[0],ymm2[1],mem[1],ymm2[4],mem[4],ymm2[5],mem[5]
2447- ; AVX2-NEXT: vpunpcklqdq {{.*#+}} ymm2 = ymm2[0],ymm3[0],ymm2[2],ymm3[2]
2448- ; AVX2-NEXT: vpunpckldq {{.*#+}} ymm0 = ymm0[0],mem[0],ymm0[1],mem[1],ymm0[4],mem[4],ymm0[5],mem[5]
2449- ; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm0
24502444; AVX2-NEXT: vpunpckldq {{.*#+}} ymm1 = ymm1[0],mem[0],ymm1[1],mem[1],ymm1[4],mem[4],ymm1[5],mem[5]
2451- ; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,2,2,2]
2452- ; AVX2-NEXT: vpblendd {{.*#+}} xmm0 = xmm0[0,1],xmm1[2,3]
2453- ; AVX2-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm2[4,5,6,7]
2445+ ; AVX2-NEXT: vpunpcklqdq {{.*#+}} ymm1 = ymm1[0],ymm2[0],ymm1[2],ymm2[2]
2446+ ; AVX2-NEXT: vmovdqa 16(%rdi), %xmm2
2447+ ; AVX2-NEXT: vpunpckldq {{.*#+}} xmm2 = xmm2[0],mem[0],xmm2[1],mem[1]
2448+ ; AVX2-NEXT: vpunpckldq {{.*#+}} ymm0 = ymm0[0],mem[0],ymm0[1],mem[1],ymm0[4],mem[4],ymm0[5],mem[5]
2449+ ; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,2,2,2]
2450+ ; AVX2-NEXT: vpblendd {{.*#+}} xmm0 = xmm2[0,1],xmm0[2,3]
2451+ ; AVX2-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm1[4,5,6,7]
24542452; AVX2-NEXT: vpsrld $16, %ymm0, %ymm0
2455- ; AVX2-NEXT: vpshufd {{.*#+}} xmm1 = xmm0[1,1,1,1]
2456- ; AVX2-NEXT: vpbroadcastd % xmm0, %ymm2
2457- ; AVX2-NEXT: vpshufd {{.*#+}} xmm3 = xmm0[3,3,3,3 ]
2458- ; AVX2-NEXT: vpmovzxdq {{.*#+}} ymm4 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero
2459- ; AVX2-NEXT: vpshufd {{.*#+}} ymm5 = ymm0[1,1,1,1,5,5,5,5 ]
2460- ; AVX2-NEXT: vpshufd {{.*#+}} ymm6 = ymm0[3 ,3,3 ,3,7 ,7,7 ,7]
2461- ; AVX2-NEXT: vpshufd {{.*#+}} ymm7 = ymm0[2,3,2,3,6,7,6,7 ]
2453+ ; AVX2-NEXT: vpmovzxdq {{.*#+}} ymm1 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero
2454+ ; AVX2-NEXT: vpshufd {{.*#+}} xmm2 = xmm0[3,3,3,3]
2455+ ; AVX2-NEXT: vpshufd {{.*#+}} xmm3 = xmm0[1,1,1,1 ]
2456+ ; AVX2-NEXT: vpbroadcastd % xmm0, %ymm4
2457+ ; AVX2-NEXT: vpshufd {{.*#+}} ymm5 = ymm0[3,3,3,3,7,7,7,7 ]
2458+ ; AVX2-NEXT: vpshufd {{.*#+}} ymm6 = ymm0[2 ,3,2 ,3,6 ,7,6 ,7]
2459+ ; AVX2-NEXT: vpshufd {{.*#+}} ymm7 = ymm0[1,1,1,1,5,5,5,5 ]
24622460; AVX2-NEXT: vmovdqu %ymm0, 128(%rsi)
2463- ; AVX2-NEXT: vmovdqu %ymm7, 192 (%rsi)
2464- ; AVX2-NEXT: vmovdqu %ymm6, 224 (%rsi)
2465- ; AVX2-NEXT: vmovdqu %ymm5, 160 (%rsi)
2466- ; AVX2-NEXT: vmovdqu %ymm4, 64 (%rsi)
2467- ; AVX2-NEXT: vmovdqa %xmm3, 112 (%rsi)
2468- ; AVX2-NEXT: vmovdqu %ymm2, (%rsi)
2469- ; AVX2-NEXT: vmovdqa %xmm1, 48 (%rsi)
2461+ ; AVX2-NEXT: vmovdqu %ymm7, 160 (%rsi)
2462+ ; AVX2-NEXT: vmovdqu %ymm6, 192 (%rsi)
2463+ ; AVX2-NEXT: vmovdqu %ymm5, 224 (%rsi)
2464+ ; AVX2-NEXT: vmovdqu %ymm4, (%rsi)
2465+ ; AVX2-NEXT: vmovdqa %xmm3, 48 (%rsi)
2466+ ; AVX2-NEXT: vmovdqa %xmm2, 112 (%rsi)
2467+ ; AVX2-NEXT: vmovdqu %ymm1, 64 (%rsi)
24702468; AVX2-NEXT: vzeroupper
24712469; AVX2-NEXT: retq
24722470;
24732471; XOP-LABEL: D107009:
24742472; XOP: # %bb.0:
24752473; XOP-NEXT: vmovups 96(%rdi), %ymm0
2476- ; XOP-NEXT: vmovups (%rdi), %ymm1
2477- ; XOP-NEXT: vmovups 128(%rdi), %ymm2
2478- ; XOP-NEXT: vmovups 224(%rdi), %ymm3
2479- ; XOP-NEXT: vunpcklpd {{.*#+}} ymm3 = ymm3[0],mem[0],ymm3[2],mem[2]
2480- ; XOP-NEXT: vunpcklps {{.*#+}} ymm2 = ymm2[0],mem[0],ymm2[1],mem[1],ymm2[4],mem[4],ymm2[5],mem[5]
2481- ; XOP-NEXT: vshufps {{.*#+}} ymm2 = ymm2[0,1],ymm3[2,0],ymm2[4,5],ymm3[6,4]
2474+ ; XOP-NEXT: vmovups 128(%rdi), %ymm1
2475+ ; XOP-NEXT: vmovups 224(%rdi), %ymm2
2476+ ; XOP-NEXT: vunpcklpd {{.*#+}} ymm2 = ymm2[0],mem[0],ymm2[2],mem[2]
24822477; XOP-NEXT: vunpcklps {{.*#+}} ymm1 = ymm1[0],mem[0],ymm1[1],mem[1],ymm1[4],mem[4],ymm1[5],mem[5]
2483- ; XOP-NEXT: vextractf128 $1, %ymm1, %xmm1
2478+ ; XOP-NEXT: vshufps {{.*#+}} ymm1 = ymm1[0,1],ymm2[2,0],ymm1[4,5],ymm2[6,4]
2479+ ; XOP-NEXT: vmovdqa 16(%rdi), %xmm2
2480+ ; XOP-NEXT: vpunpckldq {{.*#+}} xmm2 = xmm2[0],mem[0],xmm2[1],mem[1]
24842481; XOP-NEXT: vunpcklpd {{.*#+}} ymm0 = ymm0[0],mem[0],ymm0[2],mem[2]
24852482; XOP-NEXT: vshufps {{.*#+}} ymm0 = ymm0[0,1,2,0,4,5,6,4]
24862483; XOP-NEXT: vextractf128 $1, %ymm0, %xmm0
2487- ; XOP-NEXT: vpblendw {{.*#+}} xmm0 = xmm1 [0,1,2,3],xmm0[4,5,6,7]
2484+ ; XOP-NEXT: vpblendw {{.*#+}} xmm0 = xmm2 [0,1,2,3],xmm0[4,5,6,7]
24882485; XOP-NEXT: vpsrld $16, %xmm0, %xmm0
2489- ; XOP-NEXT: vextractf128 $1, %ymm2 , %xmm1
2486+ ; XOP-NEXT: vextractf128 $1, %ymm1 , %xmm1
24902487; XOP-NEXT: vpsrld $16, %xmm1, %xmm1
24912488; XOP-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm1
24922489; XOP-NEXT: vpshufd {{.*#+}} xmm2 = xmm0[0,1,1,3]
24932490; XOP-NEXT: vpshufd {{.*#+}} xmm3 = xmm0[2,1,3,3]
24942491; XOP-NEXT: vinsertf128 $1, %xmm3, %ymm2, %ymm2
2495- ; XOP-NEXT: vmovshdup {{.*#+}} ymm3 = ymm1[1,1 ,3,3,5,5 ,7,7]
2496- ; XOP-NEXT: vshufps {{.*#+}} ymm4 = ymm1[3,3 ,3,3,7,7,7,7 ]
2497- ; XOP-NEXT: vshufpd {{.*#+}} ymm5 = ymm1[0,0 ,3,2 ]
2498- ; XOP-NEXT: vpshufd {{.*#+}} xmm6 = xmm0[1,1,1,1 ]
2499- ; XOP-NEXT: vpshufd {{.*#+}} xmm7 = xmm0[3,3,3,3 ]
2492+ ; XOP-NEXT: vshufps {{.*#+}} ymm3 = ymm1[3,3 ,3,3,7,7 ,7,7]
2493+ ; XOP-NEXT: vshufpd {{.*#+}} ymm4 = ymm1[0,0 ,3,2 ]
2494+ ; XOP-NEXT: vmovshdup {{.*#+}} ymm5 = ymm1[1,1 ,3,3,5,5,7,7 ]
2495+ ; XOP-NEXT: vpshufd {{.*#+}} xmm6 = xmm0[3,3,3,3 ]
2496+ ; XOP-NEXT: vpshufd {{.*#+}} xmm7 = xmm0[1,1,1,1 ]
25002497; XOP-NEXT: vmovdqa %xmm0, 16(%rsi)
2501- ; XOP-NEXT: vmovdqa %xmm7, 112 (%rsi)
2502- ; XOP-NEXT: vmovdqa %xmm6, 48 (%rsi)
2498+ ; XOP-NEXT: vmovdqa %xmm7, 48 (%rsi)
2499+ ; XOP-NEXT: vmovdqa %xmm6, 112 (%rsi)
25032500; XOP-NEXT: vmovups %ymm1, 128(%rsi)
2504- ; XOP-NEXT: vmovupd %ymm5, 192 (%rsi)
2505- ; XOP-NEXT: vmovups %ymm4, 224 (%rsi)
2506- ; XOP-NEXT: vmovups %ymm3, 160 (%rsi)
2501+ ; XOP-NEXT: vmovups %ymm5, 160 (%rsi)
2502+ ; XOP-NEXT: vmovupd %ymm4, 192 (%rsi)
2503+ ; XOP-NEXT: vmovupd %ymm3, 224 (%rsi)
25072504; XOP-NEXT: vmovups %ymm2, 64(%rsi)
25082505; XOP-NEXT: vzeroupper
25092506; XOP-NEXT: retq
0 commit comments