summaryrefslogtreecommitdiff
path: root/test/CodeGen/X86/combine-or.ll
diff options
context:
space:
mode:
authorAndrea Di Biagio <Andrea_DiBiagio@sn.scee.net>2014-03-18 17:12:59 +0000
committerAndrea Di Biagio <Andrea_DiBiagio@sn.scee.net>2014-03-18 17:12:59 +0000
commit6077ca9abb198829cce6c1cbbe8580c6ca1d2e9e (patch)
tree85498d379607262df832e137956865d8ea301981 /test/CodeGen/X86/combine-or.ll
parent7e18b99f1ed516f7883f806224a730302e4f6e28 (diff)
downloadllvm-6077ca9abb198829cce6c1cbbe8580c6ca1d2e9e.tar.gz
llvm-6077ca9abb198829cce6c1cbbe8580c6ca1d2e9e.tar.bz2
llvm-6077ca9abb198829cce6c1cbbe8580c6ca1d2e9e.tar.xz
[DAGCombiner] teach how to simplify xor/and/or nodes according to the following rules:
1) (AND (shuf (A, C, Mask), shuf (B, C, Mask)) -> shuf (AND (A, B), C, Mask) 2) (OR (shuf (A, C, Mask), shuf (B, C, Mask)) -> shuf (OR (A, B), C, Mask) 3) (XOR (shuf (A, C, Mask), shuf (B, C, Mask)) -> shuf (XOR (A, B), V_0, Mask) 4) (AND (shuf (C, A, Mask), shuf (C, B, Mask)) -> shuf (C, AND (A, B), Mask) 5) (OR (shuf (C, A, Mask), shuf (C, B, Mask)) -> shuf (C, OR (A, B), Mask) 6) (XOR (shuf (C, A, Mask), shuf (C, B, Mask)) -> shuf (V_0, XOR (A, B), Mask) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@204160 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGen/X86/combine-or.ll')
-rw-r--r--test/CodeGen/X86/combine-or.ll2
1 files changed, 2 insertions, 0 deletions
diff --git a/test/CodeGen/X86/combine-or.ll b/test/CodeGen/X86/combine-or.ll
index 60b6d75616..c1ce53334e 100644
--- a/test/CodeGen/X86/combine-or.ll
+++ b/test/CodeGen/X86/combine-or.ll
@@ -251,6 +251,7 @@ define <2 x i64> @test20(<2 x i64> %a, <2 x i64> %b) {
; CHECK-LABEL: test20
; CHECK-NOT: xorps
; CHECK: orps
+; CHECK-NEXT: movq
; CHECK-NEXT: ret
@@ -262,6 +263,7 @@ define <2 x i64> @test21(<2 x i64> %a, <2 x i64> %b) {
}
; CHECK-LABEL: test21
; CHECK: por
+; CHECK-NEXT: pslldq
; CHECK-NEXT: ret