switch to Type::getFPMantissaWidth instead of reinventing it.
authorChris Lattner <sabre@nondot.org>
Mon, 19 May 2008 21:17:23 +0000 (21:17 +0000)
committerChris Lattner <sabre@nondot.org>
Mon, 19 May 2008 21:17:23 +0000 (21:17 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51275 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Transforms/Scalar/InstructionCombining.cpp

index 10d3344598da04baa9b17d2f02a7c33b7e97b7ba..0c459cf143077bc0dbc1fc1830f4aef12a69a349 100644 (file)
@@ -420,18 +420,6 @@ static const Type *getPromotedType(const Type *Ty) {
   return Ty;
 }
 
-/// GetFPMantissaWidth - Return the width of the mantissa (aka significand) of
-/// the specified floating point type in bits.  This returns -1 if unknown.
-static int GetFPMantissaWidth(const Type *FPType) {
-  if (FPType == Type::FloatTy)
-    return 24;
-  if (FPType == Type::DoubleTy)
-    return 53;
-  if (FPType == Type::X86_FP80Ty)
-    return 64;
-  return -1; // Unknown/crazy type.
-}
-
 /// getBitCastOperand - If the specified operand is a CastInst or a constant 
 /// expression bitcast,  return the operand value, otherwise return null.
 static Value *getBitCastOperand(Value *V) {
@@ -5257,7 +5245,7 @@ Instruction *InstCombiner::FoldFCmp_IntToFP_Cst(FCmpInst &I,
   
   // Get the width of the mantissa.  We don't want to hack on conversions that
   // might lose information from the integer, e.g. "i64 -> float"
-  int MantissaWidth = GetFPMantissaWidth(LHSI->getType());
+  int MantissaWidth = LHSI->getType()->getFPMantissaWidth();
   if (MantissaWidth == -1) return 0;  // Unknown.
   
   // Check to see that the input is converted from an integer type that is small
@@ -8007,7 +7995,7 @@ Instruction *InstCombiner::visitFPToUI(FPToUIInst &FI) {
   if (UIToFPInst *SrcI = dyn_cast<UIToFPInst>(FI.getOperand(0)))
     if (SrcI->getOperand(0)->getType() == FI.getType() &&
         (int)FI.getType()->getPrimitiveSizeInBits() < /*extra bit for sign */
-                    GetFPMantissaWidth(SrcI->getType()))
+                    SrcI->getType()->getFPMantissaWidth())
       return ReplaceInstUsesWith(FI, SrcI->getOperand(0));
 
   return commonCastTransforms(FI);
@@ -8020,7 +8008,7 @@ Instruction *InstCombiner::visitFPToSI(FPToSIInst &FI) {
   if (SIToFPInst *SrcI = dyn_cast<SIToFPInst>(FI.getOperand(0)))
     if (SrcI->getOperand(0)->getType() == FI.getType() &&
         (int)FI.getType()->getPrimitiveSizeInBits() <= 
-                    GetFPMantissaWidth(SrcI->getType()))
+                    SrcI->getType()->getFPMantissaWidth())
       return ReplaceInstUsesWith(FI, SrcI->getOperand(0));
   
   return commonCastTransforms(FI);