diff options
author | Craig Topper <craig.topper@gmail.com> | 2016-06-29 03:29:12 +0000 |
---|---|---|
committer | Craig Topper <craig.topper@gmail.com> | 2016-06-29 03:29:12 +0000 |
commit | 3a011de10cffec5d37819aa5f4234603dc037d33 (patch) | |
tree | aa5c112723cb12e4eb2539e9e1c457df5eac565c /llvm/test | |
parent | 1e7e36e7e62ca938085fd3f2db8bd8875d485415 (diff) | |
download | bcm5719-llvm-3a011de10cffec5d37819aa5f4234603dc037d33.tar.gz bcm5719-llvm-3a011de10cffec5d37819aa5f4234603dc037d33.zip |
[DAGCombine] Teach DAG combine to handle ORs of shuffles involving zero vectors where the zero vector is the first operand to the shuffle instead of the second.
llvm-svn: 274097
Diffstat (limited to 'llvm/test')
-rw-r--r-- | llvm/test/CodeGen/X86/combine-or.ll | 15 |
1 files changed, 3 insertions, 12 deletions
diff --git a/llvm/test/CodeGen/X86/combine-or.ll b/llvm/test/CodeGen/X86/combine-or.ll index d9e241758d8..22f0dbbd1a9 100644 --- a/llvm/test/CodeGen/X86/combine-or.ll +++ b/llvm/test/CodeGen/X86/combine-or.ll @@ -361,10 +361,7 @@ define <4 x i8> @test_crash(<4 x i8> %a, <4 x i8> %b) { define <4 x i32> @test2b(<4 x i32> %a, <4 x i32> %b) { ; CHECK-LABEL: test2b: ; CHECK: # BB#0: -; CHECK-NEXT: pxor %xmm2, %xmm2 -; CHECK-NEXT: pblendw {{.*#+}} xmm0 = xmm2[0,1,2,3],xmm0[4,5,6,7] -; CHECK-NEXT: movq {{.*#+}} xmm1 = xmm1[0],zero -; CHECK-NEXT: por %xmm1, %xmm0 +; CHECK-NEXT: pblendw {{.*#+}} xmm0 = xmm1[0,1,2,3],xmm0[4,5,6,7] ; CHECK-NEXT: retq %shuf1 = shufflevector <4 x i32> zeroinitializer, <4 x i32> %a, <4 x i32><i32 0, i32 0, i32 6, i32 7> %shuf2 = shufflevector <4 x i32> %b, <4 x i32> zeroinitializer, <4 x i32><i32 0, i32 1, i32 4, i32 4> @@ -375,10 +372,7 @@ define <4 x i32> @test2b(<4 x i32> %a, <4 x i32> %b) { define <4 x i32> @test2c(<4 x i32> %a, <4 x i32> %b) { ; CHECK-LABEL: test2c: ; CHECK: # BB#0: -; CHECK-NEXT: pxor %xmm2, %xmm2 -; CHECK-NEXT: pblendw {{.*#+}} xmm0 = xmm2[0,1,2,3],xmm0[4,5,6,7] -; CHECK-NEXT: movq {{.*#+}} xmm1 = xmm1[0],zero -; CHECK-NEXT: por %xmm1, %xmm0 +; CHECK-NEXT: pblendw {{.*#+}} xmm0 = xmm1[0,1,2,3],xmm0[4,5,6,7] ; CHECK-NEXT: retq %shuf1 = shufflevector <4 x i32> zeroinitializer, <4 x i32> %a, <4 x i32><i32 0, i32 0, i32 6, i32 7> %shuf2 = shufflevector <4 x i32> zeroinitializer, <4 x i32> %b, <4 x i32><i32 4, i32 5, i32 0, i32 0> @@ -390,10 +384,7 @@ define <4 x i32> @test2c(<4 x i32> %a, <4 x i32> %b) { define <4 x i32> @test2d(<4 x i32> %a, <4 x i32> %b) { ; CHECK-LABEL: test2d: ; CHECK: # BB#0: -; CHECK-NEXT: pxor %xmm2, %xmm2 -; CHECK-NEXT: pblendw {{.*#+}} xmm0 = xmm2[0,1,2,3],xmm0[4,5,6,7] -; CHECK-NEXT: movq {{.*#+}} xmm1 = xmm1[0],zero -; CHECK-NEXT: por %xmm1, %xmm0 +; CHECK-NEXT: pblendw {{.*#+}} xmm0 = xmm1[0,1,2,3],xmm0[4,5,6,7] ; CHECK-NEXT: retq %shuf1 = shufflevector <4 x i32> %a, <4 x i32> zeroinitializer, <4 x i32><i32 4, i32 4, i32 2, i32 3> %shuf2 = shufflevector <4 x i32> zeroinitializer, <4 x i32> %b, <4 x i32><i32 4, i32 5, i32 0, i32 0> |