aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/Target/IA64/IA64ISelDAGToDAG.cpp8
-rw-r--r--lib/Target/IA64/IA64ISelLowering.cpp3
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.