Changeset View
Changeset View
Standalone View
Standalone View
lib/Target/Mips/MipsSEISelDAGToDAG.cpp
Show First 20 Lines • Show All 624 Lines • ▼ Show 20 Lines | case ISD::ADDE: { | ||||
SDValue InFlag = Node->getOperand(2); | SDValue InFlag = Node->getOperand(2); | ||||
Result = selectAddESubE(Mips::ADDu, InFlag, InFlag.getValue(0), DL, Node); | Result = selectAddESubE(Mips::ADDu, InFlag, InFlag.getValue(0), DL, Node); | ||||
return std::make_pair(true, Result); | return std::make_pair(true, Result); | ||||
} | } | ||||
case ISD::ConstantFP: { | case ISD::ConstantFP: { | ||||
ConstantFPSDNode *CN = dyn_cast<ConstantFPSDNode>(Node); | ConstantFPSDNode *CN = dyn_cast<ConstantFPSDNode>(Node); | ||||
if (Node->getValueType(0) == MVT::f64 && CN->isExactlyValue(+0.0)) { | if (Node->getValueType(0) == MVT::f64 && CN->isExactlyValue(+0.0)) { | ||||
if (Subtarget.hasMips64()) { | if (Subtarget.isGP64bit()) { | ||||
SDValue Zero = CurDAG->getCopyFromReg(CurDAG->getEntryNode(), DL, | SDValue Zero = CurDAG->getCopyFromReg(CurDAG->getEntryNode(), DL, | ||||
Mips::ZERO_64, MVT::i64); | Mips::ZERO_64, MVT::i64); | ||||
Result = CurDAG->getMachineNode(Mips::DMTC1, DL, MVT::f64, Zero); | Result = CurDAG->getMachineNode(Mips::DMTC1, DL, MVT::f64, Zero); | ||||
} else if (Subtarget.isFP64bit()) { | } else if (Subtarget.isFP64bit()) { | ||||
SDValue Zero = CurDAG->getCopyFromReg(CurDAG->getEntryNode(), DL, | SDValue Zero = CurDAG->getCopyFromReg(CurDAG->getEntryNode(), DL, | ||||
Mips::ZERO, MVT::i32); | Mips::ZERO, MVT::i32); | ||||
Result = CurDAG->getMachineNode(Mips::BuildPairF64_64, DL, MVT::f64, | Result = CurDAG->getMachineNode(Mips::BuildPairF64_64, DL, MVT::f64, | ||||
Zero, Zero); | Zero, Zero); | ||||
▲ Show 20 Lines • Show All 208 Lines • Show Last 20 Lines |