Skip to content

Commit a946934

Browse files
committed
[GlobalISel][NFC] Use GPhi wrapper in more places instead of iterating over operands.
1 parent 4b99af3 commit a946934

File tree

4 files changed

+19
-21
lines changed

4 files changed

+19
-21
lines changed

llvm/include/llvm/CodeGen/GlobalISel/GenericMachineInstrs.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -564,11 +564,11 @@ class GPhi : public GenericMachineInstr {
564564
/// Returns the number of incoming values.
565565
unsigned getNumIncomingValues() const { return (getNumOperands() - 1) / 2; }
566566
/// Returns the I'th incoming vreg.
567-
Register getIncomingValue(unsigned I) {
567+
Register getIncomingValue(unsigned I) const {
568568
return getOperand(I * 2 + 1).getReg();
569569
}
570570
/// Returns the I'th incoming basic block.
571-
MachineBasicBlock *getIncomingBlock(unsigned I) {
571+
MachineBasicBlock *getIncomingBlock(unsigned I) const {
572572
return getOperand(I * 2 + 2).getMBB();
573573
}
574574

llvm/lib/CodeGen/GlobalISel/CombinerHelper.cpp

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3874,9 +3874,8 @@ bool CombinerHelper::matchLoadOrCombine(
38743874

38753875
bool CombinerHelper::matchExtendThroughPhis(MachineInstr &MI,
38763876
MachineInstr *&ExtMI) {
3877-
assert(MI.getOpcode() == TargetOpcode::G_PHI);
3878-
3879-
Register DstReg = MI.getOperand(0).getReg();
3877+
auto &PHI = cast<GPhi>(MI);
3878+
Register DstReg = PHI.getReg(0);
38803879

38813880
// TODO: Extending a vector may be expensive, don't do this until heuristics
38823881
// are better.
@@ -3905,16 +3904,16 @@ bool CombinerHelper::matchExtendThroughPhis(MachineInstr &MI,
39053904
// they'll be optimized in some way.
39063905
// Collect the unique incoming values.
39073906
SmallPtrSet<MachineInstr *, 4> InSrcs;
3908-
for (unsigned Idx = 1; Idx < MI.getNumOperands(); Idx += 2) {
3909-
auto *DefMI = getDefIgnoringCopies(MI.getOperand(Idx).getReg(), MRI);
3907+
for (unsigned I = 0; I < PHI.getNumIncomingValues(); ++I) {
3908+
auto *DefMI = getDefIgnoringCopies(PHI.getIncomingValue(I), MRI);
39103909
switch (DefMI->getOpcode()) {
39113910
case TargetOpcode::G_LOAD:
39123911
case TargetOpcode::G_TRUNC:
39133912
case TargetOpcode::G_SEXT:
39143913
case TargetOpcode::G_ZEXT:
39153914
case TargetOpcode::G_ANYEXT:
39163915
case TargetOpcode::G_CONSTANT:
3917-
InSrcs.insert(getDefIgnoringCopies(MI.getOperand(Idx).getReg(), MRI));
3916+
InSrcs.insert(DefMI);
39183917
// Don't try to propagate if there are too many places to create new
39193918
// extends, chances are it'll increase code size.
39203919
if (InSrcs.size() > 2)
@@ -3929,7 +3928,7 @@ bool CombinerHelper::matchExtendThroughPhis(MachineInstr &MI,
39293928

39303929
void CombinerHelper::applyExtendThroughPhis(MachineInstr &MI,
39313930
MachineInstr *&ExtMI) {
3932-
assert(MI.getOpcode() == TargetOpcode::G_PHI);
3931+
auto &PHI = cast<GPhi>(MI);
39333932
Register DstReg = ExtMI->getOperand(0).getReg();
39343933
LLT ExtTy = MRI.getType(DstReg);
39353934

@@ -3938,8 +3937,8 @@ void CombinerHelper::applyExtendThroughPhis(MachineInstr &MI,
39383937
// deterministic iteration order.
39393938
SmallSetVector<MachineInstr *, 8> SrcMIs;
39403939
SmallDenseMap<MachineInstr *, MachineInstr *, 8> OldToNewSrcMap;
3941-
for (unsigned SrcIdx = 1; SrcIdx < MI.getNumOperands(); SrcIdx += 2) {
3942-
auto SrcReg = MI.getOperand(SrcIdx).getReg();
3940+
for (unsigned I = 0; I < PHI.getNumIncomingValues(); ++I) {
3941+
auto SrcReg = PHI.getIncomingValue(I);
39433942
auto *SrcMI = MRI.getVRegDef(SrcReg);
39443943
if (!SrcMIs.insert(SrcMI))
39453944
continue;
@@ -3952,8 +3951,7 @@ void CombinerHelper::applyExtendThroughPhis(MachineInstr &MI,
39523951

39533952
Builder.setInsertPt(*SrcMI->getParent(), InsertPt);
39543953
Builder.setDebugLoc(MI.getDebugLoc());
3955-
auto NewExt = Builder.buildExtOrTrunc(ExtMI->getOpcode(), ExtTy,
3956-
SrcReg);
3954+
auto NewExt = Builder.buildExtOrTrunc(ExtMI->getOpcode(), ExtTy, SrcReg);
39573955
OldToNewSrcMap[SrcMI] = NewExt;
39583956
}
39593957

llvm/lib/Target/AMDGPU/AMDGPURegisterBankInfo.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3765,16 +3765,16 @@ AMDGPURegisterBankInfo::getInstrMapping(const MachineInstr &MI) const {
37653765
// properly.
37663766
//
37673767
// TODO: There are additional exec masking dependencies to analyze.
3768-
if (MI.getOpcode() == TargetOpcode::G_PHI) {
3768+
if (auto *PHI = dyn_cast<GPhi>(&MI)) {
37693769
unsigned ResultBank = AMDGPU::InvalidRegBankID;
3770-
Register DstReg = MI.getOperand(0).getReg();
3770+
Register DstReg = PHI->getReg(0);
37713771

37723772
// Sometimes the result may have already been assigned a bank.
37733773
if (const RegisterBank *DstBank = getRegBank(DstReg, MRI, *TRI))
37743774
ResultBank = DstBank->getID();
37753775

3776-
for (unsigned I = 1, E = MI.getNumOperands(); I != E; I += 2) {
3777-
Register Reg = MI.getOperand(I).getReg();
3776+
for (unsigned I = 0; I < PHI->getNumIncomingValues(); ++I) {
3777+
Register Reg = PHI->getIncomingValue(I);
37783778
const RegisterBank *Bank = getRegBank(Reg, MRI, *TRI);
37793779

37803780
// FIXME: Assuming VGPR for any undetermined inputs.

llvm/lib/Target/Mips/MipsRegisterBankInfo.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -238,11 +238,11 @@ MipsRegisterBankInfo::AmbiguousRegDefUseContainer::AmbiguousRegDefUseContainer(
238238
if (MI->getOpcode() == TargetOpcode::G_STORE)
239239
addUseDef(MI->getOperand(0).getReg(), MRI);
240240

241-
if (MI->getOpcode() == TargetOpcode::G_PHI) {
242-
addDefUses(MI->getOperand(0).getReg(), MRI);
241+
if (auto *PHI = dyn_cast<GPhi>(MI)) {
242+
addDefUses(PHI->getReg(0), MRI);
243243

244-
for (unsigned i = 1; i < MI->getNumOperands(); i += 2)
245-
addUseDef(MI->getOperand(i).getReg(), MRI);
244+
for (unsigned I = 1; I < PHI->getNumIncomingValues(); ++I)
245+
addUseDef(PHI->getIncomingValue(I), MRI);
246246
}
247247

248248
if (MI->getOpcode() == TargetOpcode::G_SELECT) {

0 commit comments

Comments
 (0)