From 93856802ae9f5a26aaeb565cb856aa16bd95b62d Mon Sep 17 00:00:00 2001 From: Duraid Madina Date: Wed, 2 Nov 2005 02:35:04 +0000 Subject: [PATCH] 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 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24146 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/IA64/IA64ISelDAGToDAG.cpp | 8 ++++++++ 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 1a83d89743c..d3487f27862 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(N)->isExactlyValue(+0.0)) + return CurDAG->getRegister(IA64::F0, MVT::f64); // load 0.0 + else if (cast(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(N)->getIndex(); diff --git a/lib/Target/IA64/IA64ISelLowering.cpp b/lib/Target/IA64/IA64ISelLowering.cpp index 2ffa24e78c0..37f15eeb62c 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. -- 2.34.1