diff options
author | Simon Pilgrim <llvm-dev@redking.me.uk> | 2014-11-25 22:34:59 +0000 |
---|---|---|
committer | Simon Pilgrim <llvm-dev@redking.me.uk> | 2014-11-25 22:34:59 +0000 |
commit | 371417db347317ffff9c9469b5ed85a6b3e98382 (patch) | |
tree | 81b78f6109ab675d3066f25fc48fac136225c06c /llvm/test/CodeGen/X86/combine-or.ll | |
parent | b3d08bb44b641b87743637356acee6f8d35e9401 (diff) | |
download | bcm5719-llvm-371417db347317ffff9c9469b5ed85a6b3e98382.tar.gz bcm5719-llvm-371417db347317ffff9c9469b5ed85a6b3e98382.zip |
[X86][SSE] Improvements to byte shift shuffle matching
Since (v)pslldq / (v)psrldq instructions resolve to a single input argument it is useful to match it much earlier than we currently do - this prevents more complicated shuffles (notably insertion into a zero vector) matching before it.
Differential Revision: http://reviews.llvm.org/D6409
llvm-svn: 222796
Diffstat (limited to 'llvm/test/CodeGen/X86/combine-or.ll')
-rw-r--r-- | llvm/test/CodeGen/X86/combine-or.ll | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/llvm/test/CodeGen/X86/combine-or.ll b/llvm/test/CodeGen/X86/combine-or.ll index 9539eae9d6a..f10092a1378 100644 --- a/llvm/test/CodeGen/X86/combine-or.ll +++ b/llvm/test/CodeGen/X86/combine-or.ll @@ -271,9 +271,8 @@ define <2 x i64> @test20(<2 x i64> %a, <2 x i64> %b) { define <2 x i64> @test21(<2 x i64> %a, <2 x i64> %b) { ; CHECK-LABEL: test21: ; CHECK: # BB#0: -; CHECK-NEXT: orps %xmm1, %xmm0 -; CHECK-NEXT: movq %xmm0, %xmm0 -; CHECK-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,0,1] +; CHECK-NEXT: por %xmm1, %xmm0 +; CHECK-NEXT: pslldq {{.*#+}} xmm0 = zero,zero,zero,zero,zero,zero,zero,zero,xmm0[0,1,2,3,4,5,6,7] ; CHECK-NEXT: retq %shuf1 = shufflevector <2 x i64> %a, <2 x i64> zeroinitializer, <2 x i32><i32 2, i32 0> %shuf2 = shufflevector <2 x i64> %b, <2 x i64> zeroinitializer, <2 x i32><i32 2, i32 0> |