Changes in directory llvm/lib/VMCore:
ConstantFold.cpp updated: 1.144 -> 1.145 --- Log message: Use the APInt versions of the bit-wise conversions of float/double to int and back. While this is not strictly necessary, it does pave the way for future changes in casting. It should now be possible to improve vector casting to deal with un-equal fp/int sizes. --- Diffs of the changes: (+10 -8) ConstantFold.cpp | 18 ++++++++++-------- 1 files changed, 10 insertions(+), 8 deletions(-) Index: llvm/lib/VMCore/ConstantFold.cpp diff -u llvm/lib/VMCore/ConstantFold.cpp:1.144 llvm/lib/VMCore/ConstantFold.cpp:1.145 --- llvm/lib/VMCore/ConstantFold.cpp:1.144 Thu Mar 1 13:31:12 2007 +++ llvm/lib/VMCore/ConstantFold.cpp Thu Mar 1 14:44:23 2007 @@ -66,16 +66,16 @@ assert(DstEltTy->isFloatingPoint()); if (DstEltTy->getTypeID() == Type::DoubleTyID) { for (unsigned i = 0; i != SrcNumElts; ++i) { - double V = - BitsToDouble(cast<ConstantInt>(CV->getOperand(i))->getZExtValue()); + ConstantInt *CI = cast<ConstantInt>(CV->getOperand(i)); + double V = CI->getValue().bitsToDouble(); Result.push_back(ConstantFP::get(Type::DoubleTy, V)); } return ConstantVector::get(Result); } assert(DstEltTy == Type::FloatTy && "Unknown fp type!"); for (unsigned i = 0; i != SrcNumElts; ++i) { - float V = - BitsToFloat(cast<ConstantInt>(CV->getOperand(i))->getZExtValue()); + ConstantInt *CI = cast<ConstantInt>(CV->getOperand(i)); + float V = CI->getValue().bitsToFloat(); Result.push_back(ConstantFP::get(Type::FloatTy, V)); } return ConstantVector::get(Result); @@ -304,9 +304,9 @@ if (DestTy->isFloatingPoint()) { if (DestTy == Type::FloatTy) - return ConstantFP::get(DestTy, BitsToFloat(CI->getZExtValue())); + return ConstantFP::get(DestTy, CI->getValue().bitsToFloat()); assert(DestTy == Type::DoubleTy && "Unknown FP type!"); - return ConstantFP::get(DestTy, BitsToDouble(CI->getZExtValue())); + return ConstantFP::get(DestTy, CI->getValue().bitsToDouble()); } // Otherwise, can't fold this (packed?) return 0; @@ -316,10 +316,12 @@ if (const ConstantFP *FP = dyn_cast<ConstantFP>(V)) { // FP -> Integral. if (DestTy == Type::Int32Ty) { - return ConstantInt::get(DestTy, FloatToBits(FP->getValue())); + APInt Val(32, 0); + return ConstantInt::get(Val.floatToBits(FP->getValue())); } else { assert(DestTy == Type::Int64Ty && "only support f32/f64 for now!"); - return ConstantInt::get(DestTy, DoubleToBits(FP->getValue())); + APInt Val(64, 0); + return ConstantInt::get(Val.doubleToBits(FP->getValue())); } } return 0; _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits