mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-21 21:29:41 +00:00
Implement some more missing promotions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19606 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
8102fcde4c
commit
f8161d83f0
@ -248,9 +248,12 @@ SDOperand SelectionDAGLegalize::LegalizeOp(SDOperand Op) {
|
||||
|
||||
SDOperand CPIdx = DAG.getConstantPool(CP->getConstantPoolIndex(LLVMC),
|
||||
TLI.getPointerTy());
|
||||
Result = DAG.getLoad(VT, DAG.getEntryNode(), CPIdx);
|
||||
|
||||
if (Extend) Result = DAG.getNode(ISD::FP_EXTEND, MVT::f64, Result);
|
||||
if (Extend) {
|
||||
Result = DAG.getNode(ISD::EXTLOAD, MVT::f64, DAG.getEntryNode(), CPIdx,
|
||||
MVT::f32);
|
||||
} else {
|
||||
Result = DAG.getLoad(VT, DAG.getEntryNode(), CPIdx);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
@ -745,15 +748,23 @@ SDOperand SelectionDAGLegalize::LegalizeOp(SDOperand Op) {
|
||||
Result = DAG.getNode(ISD::FP_EXTEND, Op.getValueType(), Result);
|
||||
break;
|
||||
case ISD::FP_ROUND:
|
||||
Result = PromoteOp(Node->getOperand(0));
|
||||
Result = DAG.getNode(ISD::FP_ROUND, Op.getValueType(), Result);
|
||||
break;
|
||||
case ISD::FP_TO_SINT:
|
||||
case ISD::FP_TO_UINT:
|
||||
Result = PromoteOp(Node->getOperand(0));
|
||||
Result = DAG.getNode(Node->getOpcode(), Op.getValueType(), Result);
|
||||
break;
|
||||
case ISD::SINT_TO_FP:
|
||||
Result = PromoteOp(Node->getOperand(0));
|
||||
Result = DAG.getNode(ISD::SIGN_EXTEND_INREG, Result.getValueType(),
|
||||
Result, Node->getOperand(0).getValueType());
|
||||
Result = DAG.getNode(ISD::SINT_TO_FP, Op.getValueType(), Result);
|
||||
break;
|
||||
case ISD::UINT_TO_FP:
|
||||
Node->dump();
|
||||
assert(0 && "Do not know how to promote this yet!");
|
||||
Result = PromoteOp(Node->getOperand(0));
|
||||
Result = DAG.getNode(ISD::ZERO_EXTEND_INREG, Result.getValueType(),
|
||||
Result, Node->getOperand(0).getValueType());
|
||||
Result = DAG.getNode(ISD::UINT_TO_FP, Op.getValueType(), Result);
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
Loading…
x
Reference in New Issue
Block a user