forked from OSchip/llvm-project
GlobalISel: Handle widening addo/subo booleans
This will be tested in a future patch
This commit is contained in:
parent
95c2bcbf8b
commit
0e489926be
|
@ -1870,9 +1870,6 @@ LegalizerHelper::widenScalarInsert(MachineInstr &MI, unsigned TypeIdx,
|
|||
LegalizerHelper::LegalizeResult
|
||||
LegalizerHelper::widenScalarAddSubOverflow(MachineInstr &MI, unsigned TypeIdx,
|
||||
LLT WideTy) {
|
||||
if (TypeIdx == 1)
|
||||
return UnableToLegalize; // TODO
|
||||
|
||||
unsigned Opcode;
|
||||
unsigned ExtOpcode;
|
||||
Optional<Register> CarryIn = None;
|
||||
|
@ -1917,6 +1914,18 @@ LegalizerHelper::widenScalarAddSubOverflow(MachineInstr &MI, unsigned TypeIdx,
|
|||
break;
|
||||
}
|
||||
|
||||
if (TypeIdx == 1) {
|
||||
unsigned BoolExtOp = MIRBuilder.getBoolExtOp(WideTy.isVector(), false);
|
||||
|
||||
Observer.changingInstr(MI);
|
||||
widenScalarDst(MI, WideTy, 1);
|
||||
if (CarryIn)
|
||||
widenScalarSrc(MI, WideTy, 4, BoolExtOp);
|
||||
|
||||
Observer.changedInstr(MI);
|
||||
return Legalized;
|
||||
}
|
||||
|
||||
auto LHSExt = MIRBuilder.buildInstr(ExtOpcode, {WideTy}, {MI.getOperand(2)});
|
||||
auto RHSExt = MIRBuilder.buildInstr(ExtOpcode, {WideTy}, {MI.getOperand(3)});
|
||||
// Do the arithmetic in the larger type.
|
||||
|
|
Loading…
Reference in New Issue