[mips][msa] Added support for matching bins[lr]i.[bhwd] from normal IR (i.e. not...
authorDaniel Sanders <daniel.sanders@imgtec.com>
Wed, 30 Oct 2013 14:45:14 +0000 (14:45 +0000)
committerDaniel Sanders <daniel.sanders@imgtec.com>
Wed, 30 Oct 2013 14:45:14 +0000 (14:45 +0000)
commit6ff1ef9931b50763a40e9ae8696cfab9e25cf4de
tree3a212fbec02bbe355534190b163a19779eb8a134
parenta7c3cac87118c3e409a7fc889090c5ffe242985e
[mips][msa] Added support for matching bins[lr]i.[bhwd] from normal IR (i.e. not intrinsics)

This required correcting the definition of the bins[lr]i intrinsics because
the result is also the first operand.

It also required removing the (arbitrary) check for 32-bit immediates in
MipsSEDAGToDAGISel::selectVSplat().

Currently using binsli.d with 2 bits set in the mask doesn't select binsli.d
because the constant is legalized into a ConstantPool. Similar things can
happen with binsri.d with more than 10 bits set in the mask. The resulting
code when this happens is correct but not optimal.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193687 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/IR/IntrinsicsMips.td
lib/Target/Mips/MSA.txt
lib/Target/Mips/MipsISelDAGToDAG.cpp
lib/Target/Mips/MipsISelDAGToDAG.h
lib/Target/Mips/MipsMSAInstrInfo.td
lib/Target/Mips/MipsSEISelDAGToDAG.cpp
lib/Target/Mips/MipsSEISelDAGToDAG.h
lib/Target/Mips/MipsSEISelLowering.cpp
test/CodeGen/Mips/msa/bitwise.ll
test/CodeGen/Mips/msa/i5-b.ll