[mips][msa] Combine binsri-like DAG of AND and OR into equivalent VSELECT
authorDaniel Sanders <daniel.sanders@imgtec.com>
Wed, 30 Oct 2013 13:51:01 +0000 (13:51 +0000)
committerDaniel Sanders <daniel.sanders@imgtec.com>
Wed, 30 Oct 2013 13:51:01 +0000 (13:51 +0000)
commit53fe6c4d564cd3522b167dd23048648c1e7e50f9
treed51666742c498ebb49e264331310ee0a1ed8e46b
parent62aeab83e734de811bb6d11d5d012456715cd044
[mips][msa] Combine binsri-like DAG of AND and OR into equivalent VSELECT

(or (and $a, $mask), (and $b, $inverse_mask)) => (vselect $mask, $a, $b).
where $mask is a constant splat. This allows bitwise operations to make use
of bsel.

It's also a stepping stone towards matching bins[lr], and bins[lr]i from
normal IR.

Two sets of similar tests have been added in this commit. The bsel_* functions
test the case where binsri cannot be used. The binsr_*_i functions will
start to use the binsri instruction in the next commit.

llvm-svn: 193682
llvm/lib/Target/Mips/MipsSEISelLowering.cpp
llvm/test/CodeGen/Mips/msa/bitwise.ll