diff options
author | Chandler Carruth <chandlerc@gmail.com> | 2014-10-03 21:38:49 +0000 |
---|---|---|
committer | Chandler Carruth <chandlerc@gmail.com> | 2014-10-03 21:38:49 +0000 |
commit | 0adda1e4d47a836275fb0baabf98c402759f385f (patch) | |
tree | 3ecf8726f61e3db0c845edfa0005d0031afbfbb3 /llvm/test/CodeGen/X86/combine-or.ll | |
parent | 0aca4b1aa0c4e912e1c01ce07e00f5647d1fc30e (diff) | |
download | bcm5719-llvm-0adda1e4d47a836275fb0baabf98c402759f385f.tar.gz bcm5719-llvm-0adda1e4d47a836275fb0baabf98c402759f385f.zip |
[x86] Adjust the patterns for lowering X86vzmovl nodes which don't
perform a load to use blendps rather than movss when it is available.
For non-loads, blendps is *much* faster. It can execute on two ports in
Sandy Bridge and Ivy Bridge, and *three* ports on Haswell. This fixes
one of the "regressions" from aggressively taking the "insertion" path
in the new vector shuffle lowering.
This does highlight one problem with blendps -- it isn't commuted as
heavily as it should be. That's future work though.
llvm-svn: 219022
Diffstat (limited to 'llvm/test/CodeGen/X86/combine-or.ll')
-rw-r--r-- | llvm/test/CodeGen/X86/combine-or.ll | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/llvm/test/CodeGen/X86/combine-or.ll b/llvm/test/CodeGen/X86/combine-or.ll index 42a50b65905..c1f6c79e81a 100644 --- a/llvm/test/CodeGen/X86/combine-or.ll +++ b/llvm/test/CodeGen/X86/combine-or.ll @@ -228,9 +228,9 @@ define <4 x i32> @test18(<4 x i32> %a, <4 x i32> %b) { ; CHECK: # BB#0: ; CHECK-NEXT: xorps %xmm2, %xmm2 ; CHECK-NEXT: xorps %xmm3, %xmm3 -; CHECK-NEXT: movss %xmm0, %xmm3 +; CHECK-NEXT: blendps $1, %xmm0, %xmm3 ; CHECK-NEXT: shufps {{.*#+}} xmm3 = xmm3[2,0],xmm2[0,0] -; CHECK-NEXT: movss %xmm1, %xmm2 +; CHECK-NEXT: blendps $1, %xmm1, %xmm2 ; CHECK-NEXT: orps %xmm3, %xmm2 ; CHECK-NEXT: movaps %xmm2, %xmm0 ; CHECK-NEXT: retq |