Skip to content

Commit 9f9b7a4

Browse files
committed
Re-use RegInfo HwMode kind
1 parent 727a373 commit 9f9b7a4

File tree

6 files changed

+11
-17
lines changed

6 files changed

+11
-17
lines changed

llvm/include/llvm/MC/MCSubtargetInfo.h

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -255,11 +255,10 @@ class LLVM_ABI MCSubtargetInfo {
255255
/// this method also supports controlling multiple attributes with a single
256256
/// HwMode ID, just as was done previously.
257257
enum HwModeType {
258-
HwMode_Default, // Return the smallest HwMode ID of current subtarget.
259-
HwMode_ValueType, // Return the HwMode ID that controls the ValueType.
260-
HwMode_RegInfo, // Return the HwMode ID that controls the RegSizeInfo and
261-
// SubRegRange.
262-
HwMode_RegClass, // Return the HwMode ID that controls the RegisterClass.
258+
HwMode_Default, // Return the smallest HwMode ID of current subtarget.
259+
HwMode_ValueType, // Return the HwMode ID that controls the ValueType.
260+
HwMode_RegInfo, // Return the HwMode ID that controls the RegSizeInfo,
261+
// SubRegRange, and RegisterClass.
263262
HwMode_EncodingInfo // Return the HwMode ID that controls the EncodingInfo.
264263
};
265264

llvm/test/TableGen/RegClassByHwMode.td

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ include "llvm/Target/Target.td"
9797
// ASMMATCHER-NEXT: };
9898
// ASMMATCHER-EMPTY:
9999
// ASMMATCHER-NEXT: static_assert(MCK_LAST_REGCLASS_BY_HWMODE - MCK_LAST_REGISTER == 3);
100-
// ASMMATCHER-NEXT: const unsigned HwMode = STI.getHwMode(MCSubtargetInfo::HwMode_RegClass);
100+
// ASMMATCHER-NEXT: const unsigned HwMode = STI.getHwMode(MCSubtargetInfo::HwMode_RegInfo);
101101
// ASMMATCHER-NEXT: Kind = RegClassByHwModeMatchTable[HwMode][Kind - (MCK_LAST_REGISTER + 1)];
102102
// ASMMATCHER-NEXT: }
103103

@@ -116,7 +116,7 @@ include "llvm/Target/Target.td"
116116

117117
// DISASM{LITERAL}: [[maybe_unused]]
118118
// DISASM-NEXT: static DecodeStatus DecodeMyPtrRCRegClassByHwMode(MCInst &Inst, unsigned Imm, uint64_t Addr, const MCDisassembler *Decoder) {
119-
// DISASM-NEXT: switch (Decoder->getSubtargetInfo().getHwMode(MCSubtargetInfo::HwMode_RegClass)) {
119+
// DISASM-NEXT: switch (Decoder->getSubtargetInfo().getHwMode(MCSubtargetInfo::HwMode_RegInfo)) {
120120
// DISASM-NEXT: case 0: // DefaultMode
121121
// DISASM-NEXT: return DecodePtrRegs32RegisterClass(Inst, Imm, Addr, Decoder);
122122
// DISASM-NEXT: case 3: // Ptr64
@@ -128,7 +128,7 @@ include "llvm/Target/Target.td"
128128

129129
// DISASM{LITERAL}: [[maybe_unused]]
130130
// DISASM-NEXT: static DecodeStatus DecodeXRegs_EvenIfRequiredRegClassByHwMode(MCInst &Inst, unsigned Imm, uint64_t Addr, const MCDisassembler *Decoder) {
131-
// DISASM-NEXT: switch (Decoder->getSubtargetInfo().getHwMode(MCSubtargetInfo::HwMode_RegClass)) {
131+
// DISASM-NEXT: switch (Decoder->getSubtargetInfo().getHwMode(MCSubtargetInfo::HwMode_RegInfo)) {
132132
// DISASM-NEXT: case 0: // DefaultMode
133133
// DISASM-NEXT: return DecodeXRegsRegisterClass(Inst, Imm, Addr, Decoder);
134134
// DISASM-NEXT: case 1: // EvenMode
@@ -142,7 +142,7 @@ include "llvm/Target/Target.td"
142142
// DISASM-EMPTY:
143143
// DISASM{LITERAL}: [[maybe_unused]]
144144
// DISASM-NEXT: static DecodeStatus DecodeYRegs_EvenIfRequiredRegClassByHwMode(MCInst &Inst, unsigned Imm, uint64_t Addr, const MCDisassembler *Decoder) {
145-
// DISASM-NEXT: switch (Decoder->getSubtargetInfo().getHwMode(MCSubtargetInfo::HwMode_RegClass)) {
145+
// DISASM-NEXT: switch (Decoder->getSubtargetInfo().getHwMode(MCSubtargetInfo::HwMode_RegInfo)) {
146146
// DISASM-NEXT: case 0: // DefaultMode
147147
// DISASM-NEXT: return DecodeYRegsRegisterClass(Inst, Imm, Addr, Decoder);
148148
// DISASM-NEXT: case 1: // EvenMode

llvm/utils/TableGen/AsmMatcherEmitter.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2606,7 +2606,7 @@ static void emitValidateOperandClass(const CodeGenTarget &Target,
26062606

26072607
OS << indent(4)
26082608
<< "const unsigned HwMode = "
2609-
"STI.getHwMode(MCSubtargetInfo::HwMode_RegClass);\n"
2609+
"STI.getHwMode(MCSubtargetInfo::HwMode_RegInfo);\n"
26102610
"Kind = RegClassByHwModeMatchTable[HwMode][Kind - (MCK_LAST_REGISTER "
26112611
"+ 1)];\n"
26122612
" }\n\n";

llvm/utils/TableGen/DecoderEmitter.cpp

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -864,8 +864,6 @@ void DecoderEmitter::emitRegClassByHwModeDecoders(
864864
if (RegClassByHwMode.empty())
865865
return;
866866

867-
const CodeGenRegBank &RegBank = Target.getRegBank();
868-
869867
for (const Record *ClassByHwMode : RegClassByHwMode) {
870868
// Ignore cases that had an explicit DecoderMethod set.
871869
if (!InstructionEncoding::findOperandDecoderMethod(Target, ClassByHwMode)
@@ -882,11 +880,9 @@ void DecoderEmitter::emitRegClassByHwModeDecoders(
882880
OS << "static DecodeStatus Decode" << ClassByHwMode->getName()
883881
<< "RegClassByHwMode";
884882
OS << R"((MCInst &Inst, unsigned Imm, uint64_t Addr, const MCDisassembler *Decoder) {
885-
switch (Decoder->getSubtargetInfo().getHwMode(MCSubtargetInfo::HwMode_RegClass)) {
883+
switch (Decoder->getSubtargetInfo().getHwMode(MCSubtargetInfo::HwMode_RegInfo)) {
886884
)";
887885
for (auto [ModeID, RegClassRec] : ModeSelect.Items) {
888-
const CodeGenRegisterClass *RegClass = RegBank.getRegClass(RegClassRec);
889-
890886
OS << indent(2) << "case " << ModeID << ": // "
891887
<< CGH.getModeName(ModeID, /*IncludeDefault=*/true) << '\n'
892888
<< indent(4) << "return "

llvm/utils/TableGen/InstrInfoEmitter.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1181,7 +1181,7 @@ void InstrInfoEmitter::run(raw_ostream &OS) {
11811181
if (NumClassesByHwMode != 0)
11821182
OS << ", " << TargetName
11831183
<< "RegClassByHwModeTables[STI.getHwMode(MCSubtargetInfo::HwMode_"
1184-
"RegClass)]";
1184+
"RegInfo)]";
11851185

11861186
OS << ") {\n"
11871187
<< " InitMCInstrInfo(" << TargetName << "Descs.Insts, " << TargetName

llvm/utils/TableGen/SubtargetEmitter.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1850,7 +1850,6 @@ void SubtargetEmitter::emitHwModeCheck(const std::string &ClassName,
18501850
OS << " case HwMode_Default:\n return llvm::countr_zero(Modes) + 1;\n";
18511851
HandlePerMode("ValueType", ValueTypeModes);
18521852
HandlePerMode("RegInfo", RegInfoModes);
1853-
HandlePerMode("RegClass", RegInfoModes);
18541853
HandlePerMode("EncodingInfo", EncodingInfoModes);
18551854
OS << " }\n";
18561855
OS << " llvm_unreachable(\"unexpected HwModeType\");\n"

0 commit comments

Comments
 (0)