mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-05 12:31:33 +00:00
Codegen support for i128 UINT_TO_FP. This just fixes a
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
This commit is contained in:
parent
6fd599fa69
commit
34bc178e4d
@ -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);
|
||||
|
@ -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.
|
||||
|
Loading…
Reference in New Issue
Block a user