diff options
author | Dale Johannesen <dalej@apple.com> | 2007-09-11 18:32:33 +0000 |
---|---|---|
committer | Dale Johannesen <dalej@apple.com> | 2007-09-11 18:32:33 +0000 |
commit | 245dceb06d5d4ef8a4edace1cfddf54cf0122a64 (patch) | |
tree | 5eecd813137e3673308a5f0e3ba38adc6f6dede4 /llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp | |
parent | 32ef96186f13d5fa1ca9aad369f1198fbba6a56d (diff) | |
download | bcm5719-llvm-245dceb06d5d4ef8a4edace1cfddf54cf0122a64.tar.gz bcm5719-llvm-245dceb06d5d4ef8a4edace1cfddf54cf0122a64.zip |
Add APInt interfaces to APFloat (allows directly
access to bits). Use them in place of float and
double interfaces where appropriate.
First bits of x86 long double constants handling
(untested, probably does not work).
llvm-svn: 41858
Diffstat (limited to 'llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp')
-rw-r--r-- | llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp b/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp index 01ec5c968aa..85a76f436b1 100644 --- a/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp @@ -109,13 +109,12 @@ bool ISD::isBuildVectorAllOnes(const SDNode *N) { } else if (isa<ConstantFPSDNode>(NotZero)) { MVT::ValueType VT = NotZero.getValueType(); if (VT== MVT::f64) { - if (DoubleToBits(cast<ConstantFPSDNode>(NotZero)-> - getValueAPF().convertToDouble()) != - (uint64_t)-1) + if (*((cast<ConstantFPSDNode>(NotZero)->getValueAPF(). + convertToAPInt().getRawData())) != (uint64_t)-1) return false; } else { - if (FloatToBits(cast<ConstantFPSDNode>(NotZero)-> - getValueAPF().convertToFloat()) != + if ((uint32_t)*cast<ConstantFPSDNode>(NotZero)-> + getValueAPF().convertToAPInt().getRawData() != (uint32_t)-1) return false; } @@ -1698,9 +1697,9 @@ SDOperand SelectionDAG::getNode(unsigned Opcode, MVT::ValueType VT, } case ISD::BIT_CONVERT: if (VT == MVT::i32 && C->getValueType(0) == MVT::f32) - return getConstant(FloatToBits(V.convertToFloat()), VT); + return getConstant((uint32_t)*V.convertToAPInt().getRawData(), VT); else if (VT == MVT::i64 && C->getValueType(0) == MVT::f64) - return getConstant(DoubleToBits(V.convertToDouble()), VT); + return getConstant(*V.convertToAPInt().getRawData(), VT); break; } } |