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

Reply via email to