[PowerPC] Support select-cc for VSX
authorBill Schmidt <wschmidt@linux.vnet.ibm.com>
Wed, 22 Oct 2014 13:13:40 +0000 (13:13 +0000)
committerBill Schmidt <wschmidt@linux.vnet.ibm.com>
Wed, 22 Oct 2014 13:13:40 +0000 (13:13 +0000)
commit013cbf2f1adad6ea839e8c442ef00705c37675af
tree211fb9fc66b946e95893e97b6b4757ad291dcb37
parentdf8b8e7f691c055c9c9b85677cbae6eaa1aaf2e0
[PowerPC] Support select-cc for VSX

The tests test/CodeGen/Generic/select-cc.ll and
test/CodeGen/PowerPC/select-cc.ll both fail with VSX enabled.  The
problem is that the lowering logic for the SELECT and SELECT_CC
operations doesn't currently support the VSX registers.  This patch
fixes that.

In lib/Target/PowerPC/PPCInstrInfo.td, we have pseudos to handle this
for other register classes.  Similar pseudos are added in
PPCInstrVSX.td (they must be there, because the "vsrc" register class
definition appears there) for the VSRC register class.  The
SELECT_VSRC pseudo is then used in pattern matching for SELECT_CC.

The rest of the patch just adds logic for SELECT_VSRC wherever similar
logic appears for SELECT_VRRC.

There are no new test cases because the existing tests above test
this, along with a variant in test/CodeGen/PowerPC/vsx.ll.

After discussion with Hal, a future patch will add similar _VSFRC
variants to override f64 type handling (currently using F8RC).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@220385 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/PowerPC/PPCISelDAGToDAG.cpp
lib/Target/PowerPC/PPCISelLowering.cpp
lib/Target/PowerPC/PPCInstrVSX.td