Codegen support for i128 UINT_TO_FP. This just fixes a
authorDan Gohman <gohman@apple.com>
Wed, 5 Mar 2008 02:07:31 +0000 (02:07 +0000)
committerDan Gohman <gohman@apple.com>
Wed, 5 Mar 2008 02:07:31 +0000 (02:07 +0000)
bug in r47928 (Int64Ty is the correct type for the constant
pool entry here) and removes the asserts, now that the code
is capable of handling i128.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47932 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
lib/CodeGen/SelectionDAG/LegalizeTypesExpand.cpp

index 24dd2fd3bd6a312ce48f7aaeb1294dd8cbed9838..4129332f04709a8c8216a035bb4be43f56ab4e83 100644 (file)
@@ -5281,9 +5281,7 @@ ExpandIntToFP(bool isSigned, MVT::ValueType DestTy, SDOperand Source) {
          "This is not an expansion!");
 
   if (!isSigned) {
-    assert(SourceVT == MVT::i64 &&
-           "This only works for 64-bit -> FP");
-    // The 64-bit value loaded will be incorrectly if the 'sign bit' of the
+    // The integer value loaded will be incorrectly if the 'sign bit' of the
     // incoming integer is set.  To handle this, we dynamically test to see if
     // it is set, and, if so, add a fudge factor.
     SDOperand Lo, Hi;
@@ -5302,8 +5300,7 @@ ExpandIntToFP(bool isSigned, MVT::ValueType DestTy, SDOperand Source) {
                                       SignSet, Four, Zero);
     uint64_t FF = 0x5f800000ULL;
     if (TLI.isLittleEndian()) FF <<= 32;
-    static Constant *FudgeFactor =
-      ConstantInt::get(IntegerType::get(Source.getValueSizeInBits()), FF);
+    static Constant *FudgeFactor = ConstantInt::get(Type::Int64Ty, FF);
 
     SDOperand CPIdx = DAG.getConstantPool(FudgeFactor, TLI.getPointerTy());
     CPIdx = DAG.getNode(ISD::ADD, TLI.getPointerTy(), CPIdx, CstOffset);
index 067658a5eda138e87781449565683b07479921ea..d720e81d6f07cd0fa59345a3bc52dec3b204fc00 100644 (file)
@@ -1020,7 +1020,6 @@ SDOperand DAGTypeLegalizer::ExpandOperand_UINT_TO_FP(SDOperand Source,
   // We know the destination is legal, but that the input needs to be expanded.
   assert(getTypeAction(Source.getValueType()) == Expand &&
          "This is not an expansion!");
-  assert(Source.getValueType() == MVT::i64 && "Only handle expand from i64!");
   
   // If this is unsigned, and not supported, first perform the conversion to
   // signed, then adjust the result if the sign bit is set.