|
11 | 11 | /// \todo This should be generated by TableGen. |
12 | 12 | //===----------------------------------------------------------------------===// |
13 | 13 |
|
| 14 | +#include "GISel/Z80CallLowering.h" |
14 | 15 | #include "MCTargetDesc/Z80MCTargetDesc.h" |
15 | 16 | #include "Z80.h" |
16 | 17 | #include "Z80MachineFunctionInfo.h" |
@@ -1062,7 +1063,8 @@ Z80::CondCode |
1062 | 1063 | Z80InstructionSelector::foldCompare(MachineInstr &I, MachineIRBuilder &MIB, |
1063 | 1064 | MachineRegisterInfo &MRI) const { |
1064 | 1065 | assert(I.getOpcode() == TargetOpcode::G_ICMP && "unexpected instruction"); |
1065 | | - const Function &F = MIB.getMF().getFunction(); |
| 1066 | + MachineFunction &MF = MIB.getMF(); |
| 1067 | + const Function &F = MF.getFunction(); |
1066 | 1068 | bool OptSize = F.hasOptSize(); |
1067 | 1069 |
|
1068 | 1070 | auto Pred = CmpInst::Predicate(I.getOperand(1).getPredicate()); |
@@ -1216,21 +1218,8 @@ Z80InstructionSelector::foldCompare(MachineInstr &I, MachineIRBuilder &MIB, |
1216 | 1218 | auto Cmp = MIB.buildInstr(Opc, {}, Ops); |
1217 | 1219 | if (!constrainSelectedInstRegOperands(*Cmp, TII, TRI, RBI)) |
1218 | 1220 | return Z80::COND_INVALID; |
1219 | | - if (IsSigned && OptSize) { |
1220 | | - LLT s8 = LLT::scalar(8); |
1221 | | - Type *Int8Ty = Type::getInt8Ty(F.getContext()); |
1222 | | - Register FlagsReg = MIB.buildCopy(s8, Register(Z80::F)).getReg(0); |
1223 | | - CallLowering::ArgInfo FlagsArg(FlagsReg, Int8Ty, |
1224 | | - CallLowering::ArgInfo::NoArgIndex); |
1225 | | - Register SignedFlagsReg = MRI.createGenericVirtualRegister(s8); |
1226 | | - CallLowering::ArgInfo SignedFlagsArg(SignedFlagsReg, Int8Ty, |
1227 | | - CallLowering::ArgInfo::NoArgIndex); |
1228 | | - createLibcall(MIB, RTLIB::SCMP, SignedFlagsArg, FlagsArg); |
1229 | | - MIB.buildCopy(Register(Z80::F), SignedFlagsReg); |
1230 | | - if (!RBI.constrainGenericRegister(FlagsReg, Z80::F8RegClass, MRI) || |
1231 | | - !RBI.constrainGenericRegister(SignedFlagsReg, Z80::F8RegClass, MRI)) |
1232 | | - return Z80::COND_INVALID; |
1233 | | - } |
| 1221 | + if (IsSigned && OptSize) |
| 1222 | + STI.getCallLowering()->buildSCMP(MIB); |
1234 | 1223 | return CC; |
1235 | 1224 | } |
1236 | 1225 |
|
|
0 commit comments