diff options
| author | Simon Pilgrim <llvm-dev@redking.me.uk> | 2016-08-06 18:40:28 +0000 |
|---|---|---|
| committer | Simon Pilgrim <llvm-dev@redking.me.uk> | 2016-08-06 18:40:28 +0000 |
| commit | 7d168e19e8f0e82257c845a38bf90bc4b5195fd4 (patch) | |
| tree | ec55052097574491843b32326c366c6ee713a556 /llvm/test/CodeGen/X86/vector-shuffle-combining.ll | |
| parent | 45a574130e68589f3b3b2d169c1bfea2595ef752 (diff) | |
| download | bcm5719-llvm-7d168e19e8f0e82257c845a38bf90bc4b5195fd4.tar.gz bcm5719-llvm-7d168e19e8f0e82257c845a38bf90bc4b5195fd4.zip | |
[X86][SSE] Enable commutation between MOVHLPS and UNPCKHPD
Assuming SSE2 is available then we can safely commute between these, removing some unnecessary register moves and improving memory folding opportunities.
VEX encoded versions don't benefit so I haven't added support to them.
llvm-svn: 277930
Diffstat (limited to 'llvm/test/CodeGen/X86/vector-shuffle-combining.ll')
| -rw-r--r-- | llvm/test/CodeGen/X86/vector-shuffle-combining.ll | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/llvm/test/CodeGen/X86/vector-shuffle-combining.ll b/llvm/test/CodeGen/X86/vector-shuffle-combining.ll index b0505192fe8..6170eda1971 100644 --- a/llvm/test/CodeGen/X86/vector-shuffle-combining.ll +++ b/llvm/test/CodeGen/X86/vector-shuffle-combining.ll @@ -1406,8 +1406,7 @@ define <4 x float> @combine_test3(<4 x float> %a, <4 x float> %b) { define <4 x float> @combine_test4(<4 x float> %a, <4 x float> %b) { ; SSE-LABEL: combine_test4: ; SSE: # BB#0: -; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm0[1] -; SSE-NEXT: movapd %xmm1, %xmm0 +; SSE-NEXT: movhlps {{.*#+}} xmm0 = xmm1[1],xmm0[1] ; SSE-NEXT: retq ; ; AVX-LABEL: combine_test4: @@ -2326,8 +2325,7 @@ define <4 x float> @combine_undef_input_test3(<4 x float> %a, <4 x float> %b) { define <4 x float> @combine_undef_input_test4(<4 x float> %a, <4 x float> %b) { ; SSE-LABEL: combine_undef_input_test4: ; SSE: # BB#0: -; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm0[1] -; SSE-NEXT: movapd %xmm1, %xmm0 +; SSE-NEXT: movhlps {{.*#+}} xmm0 = xmm1[1],xmm0[1] ; SSE-NEXT: retq ; ; AVX-LABEL: combine_undef_input_test4: @@ -2432,7 +2430,7 @@ define <4 x float> @combine_undef_input_test8(<4 x float> %a) { define <4 x float> @combine_undef_input_test9(<4 x float> %a) { ; SSE-LABEL: combine_undef_input_test9: ; SSE: # BB#0: -; SSE-NEXT: movhlps {{.*#+}} xmm0 = xmm0[1,1] +; SSE-NEXT: unpckhpd {{.*#+}} xmm0 = xmm0[1,1] ; SSE-NEXT: retq ; ; AVX-LABEL: combine_undef_input_test9: @@ -2511,8 +2509,7 @@ define <4 x float> @combine_undef_input_test13(<4 x float> %a, <4 x float> %b) { define <4 x float> @combine_undef_input_test14(<4 x float> %a, <4 x float> %b) { ; SSE-LABEL: combine_undef_input_test14: ; SSE: # BB#0: -; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm0[1] -; SSE-NEXT: movapd %xmm1, %xmm0 +; SSE-NEXT: movhlps {{.*#+}} xmm0 = xmm1[1],xmm0[1] ; SSE-NEXT: retq ; ; AVX-LABEL: combine_undef_input_test14: @@ -2623,7 +2620,7 @@ define <4 x float> @combine_undef_input_test18(<4 x float> %a) { define <4 x float> @combine_undef_input_test19(<4 x float> %a) { ; SSE-LABEL: combine_undef_input_test19: ; SSE: # BB#0: -; SSE-NEXT: movhlps {{.*#+}} xmm0 = xmm0[1,1] +; SSE-NEXT: unpckhpd {{.*#+}} xmm0 = xmm0[1,1] ; SSE-NEXT: retq ; ; AVX-LABEL: combine_undef_input_test19: |

