mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-15 07:34:33 +00:00
implement expand of truncate. This allows truncates from i128 to i64 to
be supported on 32-bit hosts. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34257 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
f839ce7d03
commit
4c948eb373
@ -4859,6 +4859,19 @@ void SelectionDAGLegalize::ExpandOp(SDOperand Op, SDOperand &Lo, SDOperand &Hi){
|
||||
Hi = DAG.getConstant(0, NVT);
|
||||
break;
|
||||
|
||||
case ISD::TRUNCATE: {
|
||||
// The input value must be larger than this value. Expand *it*.
|
||||
SDOperand NewLo;
|
||||
ExpandOp(Node->getOperand(0), NewLo, Hi);
|
||||
|
||||
// The low part is now either the right size, or it is closer. If not the
|
||||
// right size, make an illegal truncate so we recursively expand it.
|
||||
if (NewLo.getValueType() != Node->getValueType(0))
|
||||
NewLo = DAG.getNode(ISD::TRUNCATE, Node->getValueType(0), NewLo);
|
||||
ExpandOp(NewLo, Lo, Hi);
|
||||
break;
|
||||
}
|
||||
|
||||
case ISD::BIT_CONVERT: {
|
||||
SDOperand Tmp;
|
||||
if (TLI.getOperationAction(ISD::BIT_CONVERT, VT) == TargetLowering::Custom){
|
||||
|
Loading…
x
Reference in New Issue
Block a user