mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-07-24 22:24:54 +00:00
Add VSX Scalar loads and stores to the PPC back end
This patch corresponds to review: http://reviews.llvm.org/D9440 It adds a new register class to the PPC back end to contain single precision values in VSX registers. Additionally, it adds scalar loads and stores for VSX registers. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236755 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -2734,7 +2734,10 @@ SDNode *PPCDAGToDAGISel::Select(SDNode *N) {
|
||||
else if (N->getValueType(0) == MVT::i64)
|
||||
SelectCCOp = PPC::SELECT_CC_I8;
|
||||
else if (N->getValueType(0) == MVT::f32)
|
||||
SelectCCOp = PPC::SELECT_CC_F4;
|
||||
if (PPCSubTarget->hasP8Vector())
|
||||
SelectCCOp = PPC::SELECT_CC_VSSRC;
|
||||
else
|
||||
SelectCCOp = PPC::SELECT_CC_F4;
|
||||
else if (N->getValueType(0) == MVT::f64)
|
||||
if (PPCSubTarget->hasVSX())
|
||||
SelectCCOp = PPC::SELECT_CC_VSFRC;
|
||||
@@ -3449,6 +3452,7 @@ void PPCDAGToDAGISel::PeepholeCROps() {
|
||||
case PPC::SELECT_QBRC:
|
||||
case PPC::SELECT_VRRC:
|
||||
case PPC::SELECT_VSFRC:
|
||||
case PPC::SELECT_VSSRC:
|
||||
case PPC::SELECT_VSRC: {
|
||||
SDValue Op = MachineNode->getOperand(0);
|
||||
if (Op.isMachineOpcode()) {
|
||||
@@ -3759,6 +3763,7 @@ void PPCDAGToDAGISel::PeepholeCROps() {
|
||||
case PPC::SELECT_QBRC:
|
||||
case PPC::SELECT_VRRC:
|
||||
case PPC::SELECT_VSFRC:
|
||||
case PPC::SELECT_VSSRC:
|
||||
case PPC::SELECT_VSRC:
|
||||
if (Op1Set)
|
||||
ResNode = MachineNode->getOperand(1).getNode();
|
||||
|
Reference in New Issue
Block a user