diff options
-rw-r--r-- | lib/Target/IA64/IA64ISelDAGToDAG.cpp | 8 | ||||
-rw-r--r-- | lib/Target/IA64/IA64ISelLowering.cpp | 3 |
2 files changed, 8 insertions, 3 deletions
diff --git a/lib/Target/IA64/IA64ISelDAGToDAG.cpp b/lib/Target/IA64/IA64ISelDAGToDAG.cpp index 1a83d89743..d3487f2786 100644 --- a/lib/Target/IA64/IA64ISelDAGToDAG.cpp +++ b/lib/Target/IA64/IA64ISelDAGToDAG.cpp @@ -321,6 +321,14 @@ SDOperand IA64DAGToDAGISel::Select(SDOperand Op) { /* todo: * case ISD::DYNAMIC_STACKALLOC: */ + case ISD::ConstantFP: { + if (cast<ConstantFPSDNode>(N)->isExactlyValue(+0.0)) + return CurDAG->getRegister(IA64::F0, MVT::f64); // load 0.0 + else if (cast<ConstantFPSDNode>(N)->isExactlyValue(+1.0)) + return CurDAG->getRegister(IA64::F1, MVT::f64); // load 1.0 + else + assert(0 && "Unexpected FP constant!"); + } case ISD::FrameIndex: { // TODO: reduce creepyness int FI = cast<FrameIndexSDNode>(N)->getIndex(); diff --git a/lib/Target/IA64/IA64ISelLowering.cpp b/lib/Target/IA64/IA64ISelLowering.cpp index 2ffa24e78c..37f15eeb62 100644 --- a/lib/Target/IA64/IA64ISelLowering.cpp +++ b/lib/Target/IA64/IA64ISelLowering.cpp @@ -80,9 +80,6 @@ IA64TargetLowering::IA64TargetLowering(TargetMachine &TM) addLegalFPImmediate(+0.0); addLegalFPImmediate(+1.0); - addLegalFPImmediate(-0.0); - addLegalFPImmediate(-1.0); - } /// isFloatingPointZero - Return true if this is 0.0 or -0.0. |