diff options
| author | Simon Pilgrim <llvm-dev@redking.me.uk> | 2016-12-11 21:26:25 +0000 |
|---|---|---|
| committer | Simon Pilgrim <llvm-dev@redking.me.uk> | 2016-12-11 21:26:25 +0000 |
| commit | 831435cb1455b8ca56edd9d4b0fad27b5a5230cc (patch) | |
| tree | 9a584bd78ae49135c2925a47a0db547a8604f6d5 /llvm/test/CodeGen | |
| parent | 0a1476c756ea228d73167513b99c5f5ee7ad330b (diff) | |
| download | bcm5719-llvm-831435cb1455b8ca56edd9d4b0fad27b5a5230cc.tar.gz bcm5719-llvm-831435cb1455b8ca56edd9d4b0fad27b5a5230cc.zip | |
[X86][SSE] Add support for combining target shuffles to SHUFPD.
llvm-svn: 289407
Diffstat (limited to 'llvm/test/CodeGen')
| -rw-r--r-- | llvm/test/CodeGen/X86/vector-shuffle-256-v8.ll | 3 | ||||
| -rw-r--r-- | llvm/test/CodeGen/X86/vector-shuffle-combining-avx512bw.ll | 6 | ||||
| -rw-r--r-- | llvm/test/CodeGen/X86/vector-shuffle-combining-xop.ll | 8 |
3 files changed, 7 insertions, 10 deletions
diff --git a/llvm/test/CodeGen/X86/vector-shuffle-256-v8.ll b/llvm/test/CodeGen/X86/vector-shuffle-256-v8.ll index b5f8b661e29..9391b0c1f52 100644 --- a/llvm/test/CodeGen/X86/vector-shuffle-256-v8.ll +++ b/llvm/test/CodeGen/X86/vector-shuffle-256-v8.ll @@ -687,9 +687,8 @@ define <8 x float> @shuffle_v8f32_f511235a(<8 x float> %a, <8 x float> %b) { ; AVX1-NEXT: vpermilps {{.*#+}} ymm1 = ymm1[3,1,2,2,7,5,6,6] ; AVX1-NEXT: vperm2f128 {{.*#+}} ymm1 = ymm1[2,3,0,1] ; AVX1-NEXT: vperm2f128 {{.*#+}} ymm2 = ymm0[2,3,0,1] -; AVX1-NEXT: vpermilpd {{.*#+}} ymm2 = ymm2[0,0,3,2] ; AVX1-NEXT: vpermilps {{.*#+}} ymm0 = ymm0[0,1,1,1,4,5,5,5] -; AVX1-NEXT: vblendpd {{.*#+}} ymm0 = ymm2[0],ymm0[1],ymm2[2],ymm0[3] +; AVX1-NEXT: vshufpd {{.*#+}} ymm0 = ymm2[0],ymm0[1],ymm2[3],ymm0[3] ; AVX1-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0],ymm0[1,2,3,4,5,6],ymm1[7] ; AVX1-NEXT: retq ; diff --git a/llvm/test/CodeGen/X86/vector-shuffle-combining-avx512bw.ll b/llvm/test/CodeGen/X86/vector-shuffle-combining-avx512bw.ll index d6541f68608..687098f9abf 100644 --- a/llvm/test/CodeGen/X86/vector-shuffle-combining-avx512bw.ll +++ b/llvm/test/CodeGen/X86/vector-shuffle-combining-avx512bw.ll @@ -858,14 +858,12 @@ define <8 x double> @combine_vpermi2var_8f64_identity(<8 x double> %x0, <8 x dou define <8 x double> @combine_vpermi2var_8f64_as_shufpd(<8 x double> %x0, <8 x double> %x1) { ; X32-LABEL: combine_vpermi2var_8f64_as_shufpd: ; X32: # BB#0: -; X32-NEXT: vmovapd {{.*#+}} zmm2 = [1,0,8,0,2,0,10,0,5,0,13,0,6,0,15,0] -; X32-NEXT: vpermt2pd %zmm1, %zmm2, %zmm0 +; X32-NEXT: vshufpd {{.*#+}} zmm0 = zmm0[1],zmm1[0],zmm0[2],zmm1[2],zmm0[5],zmm1[5],zmm0[6],zmm1[7] ; X32-NEXT: retl ; ; X64-LABEL: combine_vpermi2var_8f64_as_shufpd: ; X64: # BB#0: -; X64-NEXT: vmovapd {{.*#+}} zmm2 = [1,8,2,10,5,13,6,15] -; X64-NEXT: vpermt2pd %zmm1, %zmm2, %zmm0 +; X64-NEXT: vshufpd {{.*#+}} zmm0 = zmm0[1],zmm1[0],zmm0[2],zmm1[2],zmm0[5],zmm1[5],zmm0[6],zmm1[7] ; X64-NEXT: retq %1 = call <8 x double> @llvm.x86.avx512.mask.vpermi2var.pd.512(<8 x double> %x0, <8 x i64> <i64 1, i64 8, i64 2, i64 10, i64 5, i64 13, i64 6, i64 15>, <8 x double> %x1, i8 -1) ret <8 x double> %1 diff --git a/llvm/test/CodeGen/X86/vector-shuffle-combining-xop.ll b/llvm/test/CodeGen/X86/vector-shuffle-combining-xop.ll index 17a2aa6a16d..4ba4d17c85b 100644 --- a/llvm/test/CodeGen/X86/vector-shuffle-combining-xop.ll +++ b/llvm/test/CodeGen/X86/vector-shuffle-combining-xop.ll @@ -150,12 +150,12 @@ define <4 x float> @combine_vpermil2ps_blend_with_zero(<4 x float> %a0, <4 x flo define <2 x double> @combine_vpermil2pd_as_shufpd(<2 x double> %a0, <2 x double> %a1) { ; X32-LABEL: combine_vpermil2pd_as_shufpd: ; X32: # BB#0: -; X32-NEXT: vpermil2pd {{.*#+}} xmm0 = xmm0[1],xmm1[0] +; X32-NEXT: vshufpd {{.*#+}} xmm0 = xmm0[1],xmm1[0] ; X32-NEXT: retl ; ; X64-LABEL: combine_vpermil2pd_as_shufpd: ; X64: # BB#0: -; X64-NEXT: vpermil2pd {{.*#+}} xmm0 = xmm0[1],xmm1[0] +; X64-NEXT: vshufpd {{.*#+}} xmm0 = xmm0[1],xmm1[0] ; X64-NEXT: retq %res0 = call <2 x double> @llvm.x86.xop.vpermil2pd(<2 x double> %a0, <2 x double> %a1, <2 x i64> <i64 2, i64 4>, i8 0) ret <2 x double> %res0 @@ -164,12 +164,12 @@ define <2 x double> @combine_vpermil2pd_as_shufpd(<2 x double> %a0, <2 x double> define <4 x double> @combine_vpermil2pd256_as_shufpd(<4 x double> %a0, <4 x double> %a1) { ; X32-LABEL: combine_vpermil2pd256_as_shufpd: ; X32: # BB#0: -; X32-NEXT: vpermil2pd {{.*#+}} ymm0 = ymm0[0],ymm1[0],ymm0[3],ymm1[3] +; X32-NEXT: vshufpd {{.*#+}} ymm0 = ymm0[0],ymm1[0],ymm0[3],ymm1[3] ; X32-NEXT: retl ; ; X64-LABEL: combine_vpermil2pd256_as_shufpd: ; X64: # BB#0: -; X64-NEXT: vpermil2pd {{.*#+}} ymm0 = ymm0[0],ymm1[0],ymm0[3],ymm1[3] +; X64-NEXT: vshufpd {{.*#+}} ymm0 = ymm0[0],ymm1[0],ymm0[3],ymm1[3] ; X64-NEXT: retq %res0 = call <4 x double> @llvm.x86.xop.vpermil2pd.256(<4 x double> %a0, <4 x double> %a1, <4 x i64> <i64 0, i64 4, i64 2, i64 7>, i8 0) ret <4 x double> %res0 |

