[DAGCombiner] teach how to simplify xor/and/or nodes according to the following rules:
authorAndrea Di Biagio <Andrea_DiBiagio@sn.scee.net>
Tue, 18 Mar 2014 17:12:59 +0000 (17:12 +0000)
committerAndrea Di Biagio <Andrea_DiBiagio@sn.scee.net>
Tue, 18 Mar 2014 17:12:59 +0000 (17:12 +0000)
commit6077ca9abb198829cce6c1cbbe8580c6ca1d2e9e
tree85498d379607262df832e137956865d8ea301981
parent7e18b99f1ed516f7883f806224a730302e4f6e28
[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
lib/CodeGen/SelectionDAG/DAGCombiner.cpp
test/CodeGen/X86/combine-or.ll
test/CodeGen/X86/combine-vec-shuffle.ll [new file with mode: 0644]