Skip to content

Commit 191d70f

Browse files
committed
[AMDGPU] Use Register in more places in SIInstrInfo. NFC.
Also avoid using AMDGPU::NoRegister when it's not neeeded.
1 parent fcbaf6f commit 191d70f

File tree

2 files changed

+21
-23
lines changed

2 files changed

+21
-23
lines changed

llvm/lib/Target/AMDGPU/SIInstrInfo.cpp

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1059,7 +1059,7 @@ int SIInstrInfo::commuteOpcode(unsigned Opcode) const {
10591059

10601060
void SIInstrInfo::materializeImmediate(MachineBasicBlock &MBB,
10611061
MachineBasicBlock::iterator MI,
1062-
const DebugLoc &DL, unsigned DestReg,
1062+
const DebugLoc &DL, Register DestReg,
10631063
int64_t Value) const {
10641064
MachineRegisterInfo &MRI = MBB.getParent()->getRegInfo();
10651065
const TargetRegisterClass *RegClass = MRI.getRegClass(DestReg);
@@ -3974,7 +3974,7 @@ static Register findImplicitSGPRRead(const MachineInstr &MI) {
39743974
}
39753975
}
39763976

3977-
return AMDGPU::NoRegister;
3977+
return Register();
39783978
}
39793979

39803980
static bool shouldReadExec(const MachineInstr &MI) {
@@ -4326,7 +4326,7 @@ bool SIInstrInfo::verifyInstruction(const MachineInstr &MI,
43264326
}
43274327

43284328
SGPRUsed = findImplicitSGPRRead(MI);
4329-
if (SGPRUsed != AMDGPU::NoRegister) {
4329+
if (SGPRUsed) {
43304330
// Implicit uses may safely overlap true operands
43314331
if (llvm::all_of(SGPRsUsed, [this, SGPRUsed](unsigned SGPR) {
43324332
return !RI.regsOverlap(SGPRUsed, SGPR);
@@ -4354,7 +4354,7 @@ bool SIInstrInfo::verifyInstruction(const MachineInstr &MI,
43544354
// but still can't use more than one SGPR register
43554355
if (Desc.getOpcode() == AMDGPU::V_WRITELANE_B32) {
43564356
unsigned SGPRCount = 0;
4357-
Register SGPRUsed = AMDGPU::NoRegister;
4357+
Register SGPRUsed;
43584358

43594359
for (int OpIdx : {Src0Idx, Src1Idx}) {
43604360
if (OpIdx == -1)
@@ -5105,7 +5105,7 @@ void SIInstrInfo::legalizeOperandsVOP2(MachineRegisterInfo &MRI,
51055105

51065106
// If there is an implicit SGPR use such as VCC use for v_addc_u32/v_subb_u32
51075107
// we need to only have one constant bus use before GFX10.
5108-
bool HasImplicitSGPR = findImplicitSGPRRead(MI) != AMDGPU::NoRegister;
5108+
bool HasImplicitSGPR = findImplicitSGPRRead(MI);
51095109
if (HasImplicitSGPR && ST.getConstantBusLimit(Opc) <= 1 &&
51105110
Src0.isReg() && (RI.isSGPRReg(MRI, Src0.getReg()) ||
51115111
isLiteralConstantLike(Src0, InstrDesc.OpInfo[Src0Idx])))
@@ -5239,7 +5239,7 @@ void SIInstrInfo::legalizeOperandsVOP3(MachineRegisterInfo &MRI,
52395239
int LiteralLimit = ST.hasVOP3Literal() ? 1 : 0;
52405240
SmallDenseSet<unsigned> SGPRsUsed;
52415241
Register SGPRReg = findUsedSGPR(MI, VOP3Idx);
5242-
if (SGPRReg != AMDGPU::NoRegister) {
5242+
if (SGPRReg) {
52435243
SGPRsUsed.insert(SGPRReg);
52445244
--ConstantBusLimit;
52455245
}
@@ -5313,7 +5313,7 @@ Register SIInstrInfo::readlaneVGPRToSGPR(Register SrcReg, MachineInstr &UseMI,
53135313
return DstReg;
53145314
}
53155315

5316-
SmallVector<unsigned, 8> SRegs;
5316+
SmallVector<Register, 8> SRegs;
53175317
for (unsigned i = 0; i < SubRegs; ++i) {
53185318
Register SGPR = MRI.createVirtualRegister(&AMDGPU::SGPR_32RegClass);
53195319
BuildMI(*UseMI.getParent(), UseMI, UseMI.getDebugLoc(),
@@ -5515,7 +5515,7 @@ emitLoadSRsrcFromVGPRLoop(const SIInstrInfo &TII, MachineRegisterInfo &MRI,
55155515
MachineBasicBlock::iterator I = LoopBB.begin();
55165516

55175517
SmallVector<Register, 8> ReadlanePieces;
5518-
Register CondReg = AMDGPU::NoRegister;
5518+
Register CondReg;
55195519

55205520
Register VRsrc = Rsrc.getReg();
55215521
unsigned VRsrcUndef = getUndefRegState(Rsrc.isUndef());
@@ -5558,7 +5558,7 @@ emitLoadSRsrcFromVGPRLoop(const SIInstrInfo &TII, MachineRegisterInfo &MRI,
55585558
Cmp.addReg(VRsrc, VRsrcUndef, TRI->getSubRegFromChannel(Idx, 2));
55595559

55605560
// Combine the comparison results with AND.
5561-
if (CondReg == AMDGPU::NoRegister) // First.
5561+
if (!CondReg) // First.
55625562
CondReg = NewCondReg;
55635563
else { // If not the first, we create an AND.
55645564
Register AndReg = MRI.createVirtualRegister(BoolXExecRC);
@@ -6417,7 +6417,7 @@ MachineBasicBlock *SIInstrInfo::moveToVALU(MachineInstr &TopInst,
64176417
}
64186418

64196419
bool HasDst = Inst.getOperand(0).isReg() && Inst.getOperand(0).isDef();
6420-
unsigned NewDstReg = AMDGPU::NoRegister;
6420+
Register NewDstReg;
64216421
if (HasDst) {
64226422
Register DstReg = Inst.getOperand(0).getReg();
64236423
if (DstReg.isPhysical())
@@ -7308,10 +7308,10 @@ Register SIInstrInfo::findUsedSGPR(const MachineInstr &MI,
73087308
// If the operand's class is an SGPR, we can never move it.
73097309

73107310
Register SGPRReg = findImplicitSGPRRead(MI);
7311-
if (SGPRReg != AMDGPU::NoRegister)
7311+
if (SGPRReg)
73127312
return SGPRReg;
73137313

7314-
Register UsedSGPRs[3] = { AMDGPU::NoRegister };
7314+
Register UsedSGPRs[3] = {Register()};
73157315
const MachineRegisterInfo &MRI = MI.getParent()->getParent()->getRegInfo();
73167316

73177317
for (unsigned i = 0; i < 3; ++i) {
@@ -7350,12 +7350,12 @@ Register SIInstrInfo::findUsedSGPR(const MachineInstr &MI,
73507350
// TODO: If some of the operands are 64-bit SGPRs and some 32, we should
73517351
// prefer those.
73527352

7353-
if (UsedSGPRs[0] != AMDGPU::NoRegister) {
7353+
if (UsedSGPRs[0]) {
73547354
if (UsedSGPRs[0] == UsedSGPRs[1] || UsedSGPRs[0] == UsedSGPRs[2])
73557355
SGPRReg = UsedSGPRs[0];
73567356
}
73577357

7358-
if (SGPRReg == AMDGPU::NoRegister && UsedSGPRs[1] != AMDGPU::NoRegister) {
7358+
if (!SGPRReg && UsedSGPRs[1]) {
73597359
if (UsedSGPRs[1] == UsedSGPRs[2])
73607360
SGPRReg = UsedSGPRs[1];
73617361
}
@@ -7436,7 +7436,7 @@ unsigned SIInstrInfo::isStackAccess(const MachineInstr &MI,
74367436
int &FrameIndex) const {
74377437
const MachineOperand *Addr = getNamedOperand(MI, AMDGPU::OpName::vaddr);
74387438
if (!Addr || !Addr->isFI())
7439-
return AMDGPU::NoRegister;
7439+
return Register();
74407440

74417441
assert(!MI.memoperands_empty() &&
74427442
(*MI.memoperands_begin())->getAddrSpace() == AMDGPUAS::PRIVATE_ADDRESS);
@@ -7456,29 +7456,29 @@ unsigned SIInstrInfo::isSGPRStackAccess(const MachineInstr &MI,
74567456
unsigned SIInstrInfo::isLoadFromStackSlot(const MachineInstr &MI,
74577457
int &FrameIndex) const {
74587458
if (!MI.mayLoad())
7459-
return AMDGPU::NoRegister;
7459+
return Register();
74607460

74617461
if (isMUBUF(MI) || isVGPRSpill(MI))
74627462
return isStackAccess(MI, FrameIndex);
74637463

74647464
if (isSGPRSpill(MI))
74657465
return isSGPRStackAccess(MI, FrameIndex);
74667466

7467-
return AMDGPU::NoRegister;
7467+
return Register();
74687468
}
74697469

74707470
unsigned SIInstrInfo::isStoreToStackSlot(const MachineInstr &MI,
74717471
int &FrameIndex) const {
74727472
if (!MI.mayStore())
7473-
return AMDGPU::NoRegister;
7473+
return Register();
74747474

74757475
if (isMUBUF(MI) || isVGPRSpill(MI))
74767476
return isStackAccess(MI, FrameIndex);
74777477

74787478
if (isSGPRSpill(MI))
74797479
return isSGPRStackAccess(MI, FrameIndex);
74807480

7481-
return AMDGPU::NoRegister;
7481+
return Register();
74827482
}
74837483

74847484
unsigned SIInstrInfo::getInstBundleSize(const MachineInstr &MI) const {

llvm/lib/Target/AMDGPU/SIInstrInfo.h

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -210,10 +210,8 @@ class SIInstrInfo final : public AMDGPUGenInstrInfo {
210210
bool KillSrc) const override;
211211

212212
void materializeImmediate(MachineBasicBlock &MBB,
213-
MachineBasicBlock::iterator MI,
214-
const DebugLoc &DL,
215-
unsigned DestReg,
216-
int64_t Value) const;
213+
MachineBasicBlock::iterator MI, const DebugLoc &DL,
214+
Register DestReg, int64_t Value) const;
217215

218216
const TargetRegisterClass *getPreferredSelectRegClass(
219217
unsigned Size) const;

0 commit comments

Comments
 (0)