add support for loading FP constants +0.0 and +1.0 to the dag isel,

stop pretending -0.0 and -1.0 are machine constants

llvm-svn: 24146
This commit is contained in:
Duraid Madina 2005-11-02 02:35:04 +00:00
parent 7b5cc7c0e4
commit b743794294
2 changed files with 8 additions and 3 deletions

View File

@ -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();

View File

@ -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.