Skip to content

Commit 658f33d

Browse files
committed
[AMDGPU] Remove selectSGPRVectorRegClassID. NFC.
This was yet another function that had to be updated whenever you added a new register class. Remove it by refactoring its only caller to use standard helper functions from SIRegisterInfo. Differential Revision: https://reviews.llvm.org/D78557
1 parent 497c76e commit 658f33d

File tree

3 files changed

+12
-27
lines changed

3 files changed

+12
-27
lines changed

llvm/lib/Target/AMDGPU/AMDGPUISelDAGToDAG.cpp

Lines changed: 2 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -647,29 +647,6 @@ MachineSDNode *AMDGPUDAGToDAGISel::buildSMovImm64(SDLoc &DL, uint64_t Imm,
647647
return CurDAG->getMachineNode(TargetOpcode::REG_SEQUENCE, DL, VT, Ops);
648648
}
649649

650-
static unsigned selectSGPRVectorRegClassID(unsigned NumVectorElts) {
651-
switch (NumVectorElts) {
652-
case 1:
653-
return AMDGPU::SReg_32RegClassID;
654-
case 2:
655-
return AMDGPU::SReg_64RegClassID;
656-
case 3:
657-
return AMDGPU::SGPR_96RegClassID;
658-
case 4:
659-
return AMDGPU::SGPR_128RegClassID;
660-
case 5:
661-
return AMDGPU::SGPR_160RegClassID;
662-
case 8:
663-
return AMDGPU::SReg_256RegClassID;
664-
case 16:
665-
return AMDGPU::SReg_512RegClassID;
666-
case 32:
667-
return AMDGPU::SReg_1024RegClassID;
668-
}
669-
670-
llvm_unreachable("invalid vector size");
671-
}
672-
673650
void AMDGPUDAGToDAGISel::SelectBuildVector(SDNode *N, unsigned RegClassID) {
674651
EVT VT = N->getValueType(0);
675652
unsigned NumVectorElts = VT.getVectorNumElements();
@@ -797,7 +774,8 @@ void AMDGPUDAGToDAGISel::Select(SDNode *N) {
797774
}
798775

799776
assert(VT.getVectorElementType().bitsEq(MVT::i32));
800-
unsigned RegClassID = selectSGPRVectorRegClassID(NumVectorElts);
777+
unsigned RegClassID =
778+
SIRegisterInfo::getSGPRClassForBitWidth(NumVectorElts * 32)->getID();
801779
SelectBuildVector(N, RegClassID);
802780
return;
803781
}

llvm/lib/Target/AMDGPU/SIRegisterInfo.cpp

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1274,7 +1274,8 @@ StringRef SIRegisterInfo::getRegAsmName(MCRegister Reg) const {
12741274
return AMDGPUInstPrinter::getRegisterName(Reg);
12751275
}
12761276

1277-
static const TargetRegisterClass *getVGPRClassForBitWidth(unsigned BitWidth) {
1277+
const TargetRegisterClass *
1278+
SIRegisterInfo::getVGPRClassForBitWidth(unsigned BitWidth) {
12781279
switch (BitWidth) {
12791280
case 1:
12801281
return &AMDGPU::VReg_1RegClass;
@@ -1301,7 +1302,8 @@ static const TargetRegisterClass *getVGPRClassForBitWidth(unsigned BitWidth) {
13011302
}
13021303
}
13031304

1304-
static const TargetRegisterClass *getAGPRClassForBitWidth(unsigned BitWidth) {
1305+
const TargetRegisterClass *
1306+
SIRegisterInfo::getAGPRClassForBitWidth(unsigned BitWidth) {
13051307
switch (BitWidth) {
13061308
case 32:
13071309
return &AMDGPU::AGPR_32RegClass;
@@ -1318,7 +1320,8 @@ static const TargetRegisterClass *getAGPRClassForBitWidth(unsigned BitWidth) {
13181320
}
13191321
}
13201322

1321-
static const TargetRegisterClass *getSGPRClassForBitWidth(unsigned BitWidth) {
1323+
const TargetRegisterClass *
1324+
SIRegisterInfo::getSGPRClassForBitWidth(unsigned BitWidth) {
13221325
switch (BitWidth) {
13231326
case 16:
13241327
return &AMDGPU::SGPR_LO16RegClass;

llvm/lib/Target/AMDGPU/SIRegisterInfo.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,10 @@ class SIRegisterInfo final : public AMDGPUGenRegisterInfo {
116116
return getEncodingValue(Reg) & 0xff;
117117
}
118118

119+
static const TargetRegisterClass *getVGPRClassForBitWidth(unsigned BitWidth);
120+
static const TargetRegisterClass *getAGPRClassForBitWidth(unsigned BitWidth);
121+
static const TargetRegisterClass *getSGPRClassForBitWidth(unsigned BitWidth);
122+
119123
/// Return the 'base' register class for this register.
120124
/// e.g. SGPR0 => SReg_32, VGPR => VGPR_32 SGPR0_SGPR1 -> SReg_32, etc.
121125
const TargetRegisterClass *getPhysRegClass(MCRegister Reg) const;

0 commit comments

Comments
 (0)