diff options
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp | 12 | ||||
-rw-r--r-- | llvm/lib/Target/AArch64/AArch64CallLowering.cpp | 7 |
2 files changed, 7 insertions, 12 deletions
diff --git a/llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp b/llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp index b5cc7f7727f..87086af121b 100644 --- a/llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp +++ b/llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp @@ -726,17 +726,7 @@ LegalizerHelper::widenScalar(MachineInstr &MI, unsigned TypeIdx, LLT WideTy) { WideTy != LLT::scalar(8)) return UnableToLegalize; - const auto &TLI = *MIRBuilder.getMF().getSubtarget().getTargetLowering(); - switch (TLI.getBooleanContents(false, false)) { - case TargetLoweringBase::ZeroOrNegativeOneBooleanContent: - widenScalarSrc(MI, WideTy, 0, TargetOpcode::G_SEXT); - break; - case TargetLoweringBase::ZeroOrOneBooleanContent: - widenScalarSrc(MI, WideTy, 0, TargetOpcode::G_ZEXT); - break; - default: - widenScalarSrc(MI, WideTy, 0, TargetOpcode::G_ANYEXT); - } + widenScalarSrc(MI, WideTy, 0, TargetOpcode::G_ZEXT); MIRBuilder.recordInsertion(&MI); return Legalized; } diff --git a/llvm/lib/Target/AArch64/AArch64CallLowering.cpp b/llvm/lib/Target/AArch64/AArch64CallLowering.cpp index 1914f56a562..e4dc10cbf7b 100644 --- a/llvm/lib/Target/AArch64/AArch64CallLowering.cpp +++ b/llvm/lib/Target/AArch64/AArch64CallLowering.cpp @@ -229,9 +229,14 @@ bool AArch64CallLowering::lowerReturn(MachineIRBuilder &MIRBuilder, assert(((Val && VReg) || (!Val && !VReg)) && "Return value without a vreg"); bool Success = true; if (VReg) { + MachineRegisterInfo &MRI = MF.getRegInfo(); + + // We zero-extend i1s to i8. + if (MRI.getType(VReg).getSizeInBits() == 1) + VReg = MIRBuilder.buildZExt(LLT::scalar(8), VReg)->getOperand(0).getReg(); + const AArch64TargetLowering &TLI = *getTLI<AArch64TargetLowering>(); CCAssignFn *AssignFn = TLI.CCAssignFnForReturn(F.getCallingConv()); - MachineRegisterInfo &MRI = MF.getRegInfo(); auto &DL = F.getParent()->getDataLayout(); ArgInfo OrigArg{VReg, Val->getType()}; |