Skip to content

Commit 8c6172b

Browse files
authored
[AMDGPU][True16] Don't use the VGPR_LO/HI16 register classes. (#76440)
Removing the classes requires updating tests and so is planned to be done with a separate change.
1 parent 9d3fbf9 commit 8c6172b

File tree

6 files changed

+10
-20
lines changed

6 files changed

+10
-20
lines changed

llvm/lib/Target/AMDGPU/AMDGPURegisterBanks.td

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ def SGPRRegBank : RegisterBank<"SGPR",
1111
>;
1212

1313
def VGPRRegBank : RegisterBank<"VGPR",
14-
[VGPR_LO16, VGPR_HI16, VGPR_32, VReg_64, VReg_96, VReg_128, VReg_160, VReg_192, VReg_224, VReg_256, VReg_288, VReg_320, VReg_352, VReg_384, VReg_512, VReg_1024]
14+
[VGPR_32, VReg_64, VReg_96, VReg_128, VReg_160, VReg_192, VReg_224, VReg_256, VReg_288, VReg_320, VReg_352, VReg_384, VReg_512, VReg_1024]
1515
>;
1616

1717
// It is helpful to distinguish conditions from ordinary SGPRs.

llvm/lib/Target/AMDGPU/AMDGPUResourceUsageAnalysis.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -346,8 +346,7 @@ AMDGPUResourceUsageAnalysis::analyzeResourceUsage(
346346
IsSGPR = true;
347347
Width = 1;
348348
} else if (AMDGPU::VGPR_32RegClass.contains(Reg) ||
349-
AMDGPU::VGPR_LO16RegClass.contains(Reg) ||
350-
AMDGPU::VGPR_HI16RegClass.contains(Reg)) {
349+
AMDGPU::VGPR_16RegClass.contains(Reg)) {
351350
IsSGPR = false;
352351
Width = 1;
353352
} else if (AMDGPU::AGPR_32RegClass.contains(Reg) ||

llvm/lib/Target/AMDGPU/Disassembler/AMDGPUDisassembler.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1284,9 +1284,8 @@ MCOperand AMDGPUDisassembler::createSRegOperand(unsigned SRegClassID,
12841284

12851285
MCOperand AMDGPUDisassembler::createVGPR16Operand(unsigned RegIdx,
12861286
bool IsHi) const {
1287-
unsigned RCID =
1288-
IsHi ? AMDGPU::VGPR_HI16RegClassID : AMDGPU::VGPR_LO16RegClassID;
1289-
return createRegOperand(RCID, RegIdx);
1287+
unsigned RegIdxInVGPR16 = RegIdx * 2 + (IsHi ? 1 : 0);
1288+
return createRegOperand(AMDGPU::VGPR_16RegClassID, RegIdxInVGPR16);
12901289
}
12911290

12921291
// Decode Literals for insts which always have a literal in the encoding

llvm/lib/Target/AMDGPU/SIInstrInfo.cpp

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -955,12 +955,8 @@ void SIInstrInfo::copyPhysReg(MachineBasicBlock &MBB,
955955
bool IsSGPRSrc = AMDGPU::SReg_LO16RegClass.contains(SrcReg);
956956
bool IsAGPRDst = AMDGPU::AGPR_LO16RegClass.contains(DestReg);
957957
bool IsAGPRSrc = AMDGPU::AGPR_LO16RegClass.contains(SrcReg);
958-
bool DstLow = AMDGPU::VGPR_LO16RegClass.contains(DestReg) ||
959-
AMDGPU::SReg_LO16RegClass.contains(DestReg) ||
960-
AMDGPU::AGPR_LO16RegClass.contains(DestReg);
961-
bool SrcLow = AMDGPU::VGPR_LO16RegClass.contains(SrcReg) ||
962-
AMDGPU::SReg_LO16RegClass.contains(SrcReg) ||
963-
AMDGPU::AGPR_LO16RegClass.contains(SrcReg);
958+
bool DstLow = !AMDGPU::isHi(DestReg, RI);
959+
bool SrcLow = !AMDGPU::isHi(SrcReg, RI);
964960
MCRegister NewDestReg = RI.get32BitRegister(DestReg);
965961
MCRegister NewSrcReg = RI.get32BitRegister(SrcReg);
966962

llvm/lib/Target/AMDGPU/SIRegisterInfo.cpp

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -330,8 +330,10 @@ SIRegisterInfo::SIRegisterInfo(const GCNSubtarget &ST)
330330

331331
RegPressureIgnoredUnits.resize(getNumRegUnits());
332332
RegPressureIgnoredUnits.set(*regunits(MCRegister::from(AMDGPU::M0)).begin());
333-
for (auto Reg : AMDGPU::VGPR_HI16RegClass)
334-
RegPressureIgnoredUnits.set(*regunits(Reg).begin());
333+
for (auto Reg : AMDGPU::VGPR_16RegClass) {
334+
if (AMDGPU::isHi(Reg, *this))
335+
RegPressureIgnoredUnits.set(*regunits(Reg).begin());
336+
}
335337

336338
// HACK: Until this is fully tablegen'd.
337339
static llvm::once_flag InitializeRegSplitPartsFlag;
@@ -2808,8 +2810,6 @@ getAlignedVectorSuperClassForBitWidth(unsigned BitWidth) {
28082810

28092811
const TargetRegisterClass *
28102812
SIRegisterInfo::getVectorSuperClassForBitWidth(unsigned BitWidth) const {
2811-
if (BitWidth == 16)
2812-
return &AMDGPU::VGPR_LO16RegClass;
28132813
if (BitWidth == 32)
28142814
return &AMDGPU::AV_32RegClass;
28152815
return ST.needsAlignedVGPRs()
@@ -3041,8 +3041,6 @@ unsigned SIRegisterInfo::getRegPressureLimit(const TargetRegisterClass *RC,
30413041
default:
30423042
return AMDGPUGenRegisterInfo::getRegPressureLimit(RC, MF);
30433043
case AMDGPU::VGPR_32RegClassID:
3044-
case AMDGPU::VGPR_LO16RegClassID:
3045-
case AMDGPU::VGPR_HI16RegClassID:
30463044
return std::min(ST.getMaxNumVGPRs(Occupancy), ST.getMaxNumVGPRs(MF));
30473045
case AMDGPU::SGPR_32RegClassID:
30483046
case AMDGPU::SGPR_LO16RegClassID:

llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2296,8 +2296,6 @@ bool isSISrcInlinableOperand(const MCInstrDesc &Desc, unsigned OpNo) {
22962296
// (move from MC* level to Target* level). Return size in bits.
22972297
unsigned getRegBitWidth(unsigned RCID) {
22982298
switch (RCID) {
2299-
case AMDGPU::VGPR_LO16RegClassID:
2300-
case AMDGPU::VGPR_HI16RegClassID:
23012299
case AMDGPU::SGPR_LO16RegClassID:
23022300
case AMDGPU::AGPR_LO16RegClassID:
23032301
return 16;

0 commit comments

Comments
 (0)