diff --git a/llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp b/llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp --- a/llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp +++ b/llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp @@ -687,7 +687,7 @@ SmallVector Srcs = {SrcReg}; for (unsigned Part = 1; Part < NumParts; ++Part) Srcs.push_back(PadReg); - MIRBuilder.buildMerge(MI.getOperand(0).getReg(), Srcs); + MIRBuilder.buildMerge(MI.getOperand(0), Srcs); MI.eraseFromParent(); return Legalized; } @@ -701,8 +701,8 @@ return UnableToLegalize; } - auto Unmerge = MIRBuilder.buildUnmerge(NarrowTy, MI.getOperand(1).getReg()); - MIRBuilder.buildCopy(MI.getOperand(0).getReg(), Unmerge.getReg(0)); + auto Unmerge = MIRBuilder.buildUnmerge(NarrowTy, MI.getOperand(1)); + MIRBuilder.buildCopy(MI.getOperand(0), Unmerge.getReg(0)); MI.eraseFromParent(); return Legalized; } @@ -770,7 +770,7 @@ DstRegs.push_back(DstReg); BorrowIn = BorrowOut; } - MIRBuilder.buildMerge(MI.getOperand(0).getReg(), DstRegs); + MIRBuilder.buildMerge(MI.getOperand(0), DstRegs); MI.eraseFromParent(); return Legalized; } @@ -791,7 +791,7 @@ if (8 * MMO.getSize() != DstTy.getSizeInBits()) { Register TmpReg = MRI.createGenericVirtualRegister(NarrowTy); auto &MMO = **MI.memoperands_begin(); - MIRBuilder.buildLoad(TmpReg, MI.getOperand(1).getReg(), MMO); + MIRBuilder.buildLoad(TmpReg, MI.getOperand(1), MMO); MIRBuilder.buildAnyExt(DstReg, TmpReg); MI.eraseFromParent(); return Legalized; @@ -839,7 +839,7 @@ Register TmpReg = MRI.createGenericVirtualRegister(NarrowTy); auto &MMO = **MI.memoperands_begin(); MIRBuilder.buildTrunc(TmpReg, SrcReg); - MIRBuilder.buildStore(TmpReg, MI.getOperand(1).getReg(), MMO); + MIRBuilder.buildStore(TmpReg, MI.getOperand(1), MMO); MI.eraseFromParent(); return Legalized; } @@ -917,7 +917,7 @@ MIB.addUse(SrcRegs[j / 2][i]).add(MI.getOperand(j + 1)); } MIRBuilder.setInsertPt(MBB, MBB.getFirstNonPHI()); - MIRBuilder.buildMerge(MI.getOperand(0).getReg(), DstRegs); + MIRBuilder.buildMerge(MI.getOperand(0), DstRegs); Observer.changedInstr(MI); MI.eraseFromParent(); return Legalized; @@ -941,11 +941,11 @@ Observer.changingInstr(MI); Register LHSL = MRI.createGenericVirtualRegister(NarrowTy); Register LHSH = MRI.createGenericVirtualRegister(NarrowTy); - MIRBuilder.buildUnmerge({LHSL, LHSH}, MI.getOperand(2).getReg()); + MIRBuilder.buildUnmerge({LHSL, LHSH}, MI.getOperand(2)); Register RHSL = MRI.createGenericVirtualRegister(NarrowTy); Register RHSH = MRI.createGenericVirtualRegister(NarrowTy); - MIRBuilder.buildUnmerge({RHSL, RHSH}, MI.getOperand(3).getReg()); + MIRBuilder.buildUnmerge({RHSL, RHSH}, MI.getOperand(3)); CmpInst::Predicate Pred = static_cast(MI.getOperand(1).getPredicate()); @@ -956,14 +956,14 @@ MachineInstrBuilder XorH = MIRBuilder.buildXor(NarrowTy, LHSH, RHSH); MachineInstrBuilder Or = MIRBuilder.buildOr(NarrowTy, XorL, XorH); MachineInstrBuilder Zero = MIRBuilder.buildConstant(NarrowTy, 0); - MIRBuilder.buildICmp(Pred, MI.getOperand(0).getReg(), Or, Zero); + MIRBuilder.buildICmp(Pred, MI.getOperand(0), Or, Zero); } else { MachineInstrBuilder CmpH = MIRBuilder.buildICmp(Pred, ResTy, LHSH, RHSH); MachineInstrBuilder CmpHEQ = MIRBuilder.buildICmp(CmpInst::Predicate::ICMP_EQ, ResTy, LHSH, RHSH); MachineInstrBuilder CmpLU = MIRBuilder.buildICmp( ICmpInst::getUnsignedPredicate(Pred), ResTy, LHSL, RHSL); - MIRBuilder.buildSelect(MI.getOperand(0).getReg(), CmpHEQ, CmpLU, CmpH); + MIRBuilder.buildSelect(MI.getOperand(0), CmpHEQ, CmpLU, CmpH); } Observer.changedInstr(MI); MI.eraseFromParent(); @@ -984,13 +984,13 @@ // We don't lose any non-extension bits by truncating the src and // sign-extending the dst. MachineOperand &MO1 = MI.getOperand(1); - auto TruncMIB = MIRBuilder.buildTrunc(NarrowTy, MO1.getReg()); + auto TruncMIB = MIRBuilder.buildTrunc(NarrowTy, MO1); MO1.setReg(TruncMIB->getOperand(0).getReg()); MachineOperand &MO2 = MI.getOperand(0); Register DstExt = MRI.createGenericVirtualRegister(NarrowTy); MIRBuilder.setInsertPt(MIRBuilder.getMBB(), ++MIRBuilder.getInsertPt()); - MIRBuilder.buildSExt(MO2.getReg(), DstExt); + MIRBuilder.buildSExt(MO2, DstExt); MO2.setReg(DstExt); Observer.changedInstr(MI); return Legalized; @@ -1017,7 +1017,7 @@ } // Explode the big arguments into smaller chunks. - MIRBuilder.buildUnmerge(SrcRegs, MI.getOperand(1).getReg()); + MIRBuilder.buildUnmerge(SrcRegs, MI.getOperand(1)); Register AshrCstReg = MIRBuilder.buildConstant(NarrowTy, NarrowTy.getScalarSizeInBits() - 1) @@ -1076,7 +1076,7 @@ DstRegs.push_back(DstPart.getReg(0)); } - MIRBuilder.buildMerge(MI.getOperand(0).getReg(), DstRegs); + MIRBuilder.buildMerge(MI.getOperand(0), DstRegs); Observer.changedInstr(MI); MI.eraseFromParent(); @@ -1088,14 +1088,14 @@ void LegalizerHelper::widenScalarSrc(MachineInstr &MI, LLT WideTy, unsigned OpIdx, unsigned ExtOpcode) { MachineOperand &MO = MI.getOperand(OpIdx); - auto ExtB = MIRBuilder.buildInstr(ExtOpcode, {WideTy}, {MO.getReg()}); + auto ExtB = MIRBuilder.buildInstr(ExtOpcode, {WideTy}, {MO}); MO.setReg(ExtB->getOperand(0).getReg()); } void LegalizerHelper::narrowScalarSrc(MachineInstr &MI, LLT NarrowTy, unsigned OpIdx) { MachineOperand &MO = MI.getOperand(OpIdx); - auto ExtB = MIRBuilder.buildTrunc(NarrowTy, MO.getReg()); + auto ExtB = MIRBuilder.buildTrunc(NarrowTy, MO); MO.setReg(ExtB->getOperand(0).getReg()); } @@ -1104,7 +1104,7 @@ MachineOperand &MO = MI.getOperand(OpIdx); Register DstExt = MRI.createGenericVirtualRegister(WideTy); MIRBuilder.setInsertPt(MIRBuilder.getMBB(), ++MIRBuilder.getInsertPt()); - MIRBuilder.buildInstr(TruncOpcode, {MO.getReg()}, {DstExt}); + MIRBuilder.buildInstr(TruncOpcode, {MO}, {DstExt}); MO.setReg(DstExt); } @@ -1113,7 +1113,7 @@ MachineOperand &MO = MI.getOperand(OpIdx); Register DstTrunc = MRI.createGenericVirtualRegister(NarrowTy); MIRBuilder.setInsertPt(MIRBuilder.getMBB(), ++MIRBuilder.getInsertPt()); - MIRBuilder.buildInstr(ExtOpcode, {MO.getReg()}, {DstTrunc}); + MIRBuilder.buildInstr(ExtOpcode, {MO}, {DstTrunc}); MO.setReg(DstTrunc); } @@ -1122,7 +1122,7 @@ MachineOperand &MO = MI.getOperand(OpIdx); Register DstExt = MRI.createGenericVirtualRegister(WideTy); MIRBuilder.setInsertPt(MIRBuilder.getMBB(), ++MIRBuilder.getInsertPt()); - MIRBuilder.buildExtract(MO.getReg(), DstExt, 0); + MIRBuilder.buildExtract(MO, DstExt, 0); MO.setReg(DstExt); } @@ -1428,8 +1428,8 @@ case TargetOpcode::G_USUBO: { if (TypeIdx == 1) return UnableToLegalize; // TODO - auto LHSZext = MIRBuilder.buildZExt(WideTy, MI.getOperand(2).getReg()); - auto RHSZext = MIRBuilder.buildZExt(WideTy, MI.getOperand(3).getReg()); + auto LHSZext = MIRBuilder.buildZExt(WideTy, MI.getOperand(2)); + auto RHSZext = MIRBuilder.buildZExt(WideTy, MI.getOperand(3)); unsigned Opcode = MI.getOpcode() == TargetOpcode::G_UADDO ? TargetOpcode::G_ADD : TargetOpcode::G_SUB; @@ -1440,10 +1440,9 @@ auto AndOp = MIRBuilder.buildAnd( WideTy, NewOp, MIRBuilder.buildConstant(WideTy, Mask.getZExtValue())); // There is no overflow if the AndOp is the same as NewOp. - MIRBuilder.buildICmp(CmpInst::ICMP_NE, MI.getOperand(1).getReg(), NewOp, - AndOp); + MIRBuilder.buildICmp(CmpInst::ICMP_NE, MI.getOperand(1), NewOp, AndOp); // Now trunc the NewOp to the original result. - MIRBuilder.buildTrunc(MI.getOperand(0).getReg(), NewOp); + MIRBuilder.buildTrunc(MI.getOperand(0), NewOp); MI.eraseFromParent(); return Legalized; } @@ -1958,14 +1957,12 @@ case TargetOpcode::G_SREM: case TargetOpcode::G_UREM: { Register QuotReg = MRI.createGenericVirtualRegister(Ty); - MIRBuilder.buildInstr( - MI.getOpcode() == G_SREM ? G_SDIV : G_UDIV, {QuotReg}, - {MI.getOperand(1).getReg(), MI.getOperand(2).getReg()}); + MIRBuilder.buildInstr(MI.getOpcode() == G_SREM ? G_SDIV : G_UDIV, {QuotReg}, + {MI.getOperand(1), MI.getOperand(2)}); Register ProdReg = MRI.createGenericVirtualRegister(Ty); - MIRBuilder.buildMul(ProdReg, QuotReg, MI.getOperand(2).getReg()); - MIRBuilder.buildSub(MI.getOperand(0).getReg(), MI.getOperand(1).getReg(), - ProdReg); + MIRBuilder.buildMul(ProdReg, QuotReg, MI.getOperand(2)); + MIRBuilder.buildSub(MI.getOperand(0), MI.getOperand(1), ProdReg); MI.eraseFromParent(); return Legalized; } @@ -2310,8 +2307,8 @@ Register TmpRes = MRI.createGenericVirtualRegister(DstTy); auto MIBSz = MIRBuilder.buildConstant(DstTy, DstTy.getScalarSizeInBits() - SizeInBits); - MIRBuilder.buildShl(TmpRes, SrcReg, MIBSz->getOperand(0).getReg()); - MIRBuilder.buildAShr(DstReg, TmpRes, MIBSz->getOperand(0).getReg()); + MIRBuilder.buildShl(TmpRes, SrcReg, MIBSz->getOperand(0)); + MIRBuilder.buildAShr(DstReg, TmpRes, MIBSz->getOperand(0)); MI.eraseFromParent(); return Legalized; } @@ -2390,7 +2387,7 @@ SmallVector SrcOps; for (unsigned I = 1, E = MI.getNumOperands(); I != E; ++I) { Register PartOpReg = MRI.createGenericVirtualRegister(NarrowTy); - MIRBuilder.buildExtract(PartOpReg, MI.getOperand(I).getReg(), Offset); + MIRBuilder.buildExtract(PartOpReg, MI.getOperand(I), Offset); SrcOps.push_back(PartOpReg); } @@ -2406,8 +2403,7 @@ SmallVector SrcOps; for (unsigned I = 1, E = MI.getNumOperands(); I != E; ++I) { Register PartOpReg = MRI.createGenericVirtualRegister(EltTy); - MIRBuilder.buildExtract(PartOpReg, MI.getOperand(I).getReg(), - BitsForNumParts); + MIRBuilder.buildExtract(PartOpReg, MI.getOperand(I), BitsForNumParts); SrcOps.push_back(PartOpReg); } @@ -3096,10 +3092,10 @@ Register InL = MRI.createGenericVirtualRegister(HalfTy); Register InH = MRI.createGenericVirtualRegister(HalfTy); - MIRBuilder.buildUnmerge({InL, InH}, MI.getOperand(1).getReg()); + MIRBuilder.buildUnmerge({InL, InH}, MI.getOperand(1)); if (Amt.isNullValue()) { - MIRBuilder.buildMerge(MI.getOperand(0).getReg(), {InL, InH}); + MIRBuilder.buildMerge(MI.getOperand(0), {InL, InH}); MI.eraseFromParent(); return Legalized; } @@ -3172,7 +3168,7 @@ } } - MIRBuilder.buildMerge(MI.getOperand(0).getReg(), {Lo.getReg(), Hi.getReg()}); + MIRBuilder.buildMerge(MI.getOperand(0), {Lo.getReg(), Hi.getReg()}); MI.eraseFromParent(); return Legalized; @@ -3220,7 +3216,7 @@ Register InL = MRI.createGenericVirtualRegister(HalfTy); Register InH = MRI.createGenericVirtualRegister(HalfTy); - MIRBuilder.buildUnmerge({InL, InH}, MI.getOperand(1).getReg()); + MIRBuilder.buildUnmerge({InL, InH}, MI.getOperand(1)); auto AmtExcess = MIRBuilder.buildSub(ShiftAmtTy, Amt, NewBits); auto AmtLack = MIRBuilder.buildSub(ShiftAmtTy, NewBits, Amt); @@ -3757,8 +3753,7 @@ auto MIBLen = MIRBuilder.buildConstant(Ty, Len); auto MIBICmp = MIRBuilder.buildICmp(CmpInst::ICMP_EQ, LLT::scalar(1), SrcReg, MIBZero); - MIRBuilder.buildSelect(MI.getOperand(0).getReg(), MIBICmp, MIBLen, - MIBCtlzZU); + MIRBuilder.buildSelect(MI.getOperand(0), MIBICmp, MIBLen, MIBCtlzZU); MI.eraseFromParent(); return Legalized; } @@ -3782,8 +3777,8 @@ Op = MIBOp->getOperand(0).getReg(); } auto MIBPop = MIRBuilder.buildCTPOP(Ty, Op); - MIRBuilder.buildSub(MI.getOperand(0).getReg(), - MIRBuilder.buildConstant(Ty, Len), MIBPop); + MIRBuilder.buildSub(MI.getOperand(0), MIRBuilder.buildConstant(Ty, Len), + MIBPop); MI.eraseFromParent(); return Legalized; } @@ -3805,8 +3800,7 @@ auto MIBLen = MIRBuilder.buildConstant(Ty, Len); auto MIBICmp = MIRBuilder.buildICmp(CmpInst::ICMP_EQ, LLT::scalar(1), SrcReg, MIBZero); - MIRBuilder.buildSelect(MI.getOperand(0).getReg(), MIBICmp, MIBLen, - MIBCttzZU); + MIRBuilder.buildSelect(MI.getOperand(0), MIBICmp, MIBLen, MIBCttzZU); MI.eraseFromParent(); return Legalized; } @@ -3821,7 +3815,7 @@ if (!isSupported({TargetOpcode::G_CTPOP, {Ty, Ty}}) && isSupported({TargetOpcode::G_CTLZ, {Ty, Ty}})) { auto MIBCstLen = MIRBuilder.buildConstant(Ty, Len); - MIRBuilder.buildSub(MI.getOperand(0).getReg(), MIBCstLen, + MIRBuilder.buildSub(MI.getOperand(0), MIBCstLen, MIRBuilder.buildCTLZ(Ty, MIBTmp)); MI.eraseFromParent(); return Legalized; diff --git a/llvm/lib/Target/AArch64/AArch64InstructionSelector.cpp b/llvm/lib/Target/AArch64/AArch64InstructionSelector.cpp --- a/llvm/lib/Target/AArch64/AArch64InstructionSelector.cpp +++ b/llvm/lib/Target/AArch64/AArch64InstructionSelector.cpp @@ -2005,9 +2005,8 @@ // Add and set the set condition flag. unsigned AddsOpc = OpSize == 32 ? AArch64::ADDSWrr : AArch64::ADDSXrr; MachineIRBuilder MIRBuilder(I); - auto AddsMI = MIRBuilder.buildInstr( - AddsOpc, {I.getOperand(0).getReg()}, - {I.getOperand(2).getReg(), I.getOperand(3).getReg()}); + auto AddsMI = MIRBuilder.buildInstr(AddsOpc, {I.getOperand(0)}, + {I.getOperand(2), I.getOperand(3)}); constrainSelectedInstRegOperands(*AddsMI, TII, TRI, RBI); // Now, put the overflow result in the register given by the first operand @@ -3248,7 +3247,7 @@ bool Is32Bit = MRI.getType(LHS.getReg()).getSizeInBits() == 32; auto ImmFns = selectArithImmed(RHS); unsigned Opc = OpcTable[Is32Bit][ImmFns.hasValue()]; - auto AddMI = MIRBuilder.buildInstr(Opc, {DefReg}, {LHS.getReg()}); + auto AddMI = MIRBuilder.buildInstr(Opc, {DefReg}, {LHS}); // If we matched a valid constant immediate, add those operands. if (ImmFns) { @@ -3274,7 +3273,7 @@ unsigned Opc = OpcTable[Is32Bit][ImmFns.hasValue()]; Register ZReg = Is32Bit ? AArch64::WZR : AArch64::XZR; - auto CmpMI = MIRBuilder.buildInstr(Opc, {ZReg}, {LHS.getReg()}); + auto CmpMI = MIRBuilder.buildInstr(Opc, {ZReg}, {LHS}); // If we matched a valid constant immediate, add those operands. if (ImmFns) { @@ -3852,9 +3851,8 @@ .addUse(Src2Reg) .addImm(AArch64::qsub1); - auto TBL2 = - MIRBuilder.buildInstr(AArch64::TBLv16i8Two, {I.getOperand(0).getReg()}, - {RegSeq, IndexLoad->getOperand(0).getReg()}); + auto TBL2 = MIRBuilder.buildInstr(AArch64::TBLv16i8Two, {I.getOperand(0)}, + {RegSeq, IndexLoad->getOperand(0)}); constrainSelectedInstRegOperands(*RegSeq, TII, TRI, RBI); constrainSelectedInstRegOperands(*TBL2, TII, TRI, RBI); I.eraseFromParent(); diff --git a/llvm/lib/Target/AArch64/AArch64LegalizerInfo.cpp b/llvm/lib/Target/AArch64/AArch64LegalizerInfo.cpp --- a/llvm/lib/Target/AArch64/AArch64LegalizerInfo.cpp +++ b/llvm/lib/Target/AArch64/AArch64LegalizerInfo.cpp @@ -710,10 +710,10 @@ auto &MMO = **MI.memoperands_begin(); if (MI.getOpcode() == TargetOpcode::G_STORE) { auto Bitcast = MIRBuilder.buildBitcast({NewTy}, {ValReg}); - MIRBuilder.buildStore(Bitcast.getReg(0), MI.getOperand(1).getReg(), MMO); + MIRBuilder.buildStore(Bitcast.getReg(0), MI.getOperand(1), MMO); } else { Register NewReg = MRI.createGenericVirtualRegister(NewTy); - auto NewLoad = MIRBuilder.buildLoad(NewReg, MI.getOperand(1).getReg(), MMO); + auto NewLoad = MIRBuilder.buildLoad(NewReg, MI.getOperand(1), MMO); MIRBuilder.buildBitcast({ValReg}, {NewLoad}); } MI.eraseFromParent(); diff --git a/llvm/lib/Target/ARM/ARMLegalizerInfo.cpp b/llvm/lib/Target/ARM/ARMLegalizerInfo.cpp --- a/llvm/lib/Target/ARM/ARMLegalizerInfo.cpp +++ b/llvm/lib/Target/ARM/ARMLegalizerInfo.cpp @@ -462,7 +462,7 @@ // Convert to integer constants, while preserving the binary representation. auto AsInteger = MI.getOperand(1).getFPImm()->getValueAPF().bitcastToAPInt(); - MIRBuilder.buildConstant(MI.getOperand(0).getReg(), + MIRBuilder.buildConstant(MI.getOperand(0), *ConstantInt::get(Ctx, AsInteger)); break; }