Skip to content

Commit 40aa39d

Browse files
authored
[Sparc] Change register spelling to lowercase (NFC) (#65464)
This change allows to simplify SparcAsmParser a bit by delegating some work (parsing singleton registers) to the code generated by llvm-tblgen. Other than that, there is no functionality change, because registers are matched using custom code in SparcAsmParser.cpp and always printed in lowercase by SparcInstPrinter.
1 parent 7c6419b commit 40aa39d

File tree

4 files changed

+248
-274
lines changed

4 files changed

+248
-274
lines changed

llvm/lib/Target/Sparc/AsmParser/SparcAsmParser.cpp

Lines changed: 7 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1261,44 +1261,16 @@ SparcAsmParser::parseSparcAsmOperand(std::unique_ptr<SparcOperand> &Op,
12611261

12621262
case AsmToken::Percent: {
12631263
Parser.Lex(); // Eat the '%'.
1264-
MCRegister RegNo;
1264+
MCRegister Reg;
12651265
unsigned RegKind;
1266-
if (matchRegisterName(Parser.getTok(), RegNo, RegKind)) {
1267-
StringRef name = Parser.getTok().getString();
1266+
if (matchRegisterName(Parser.getTok(), Reg, RegKind)) {
1267+
StringRef Name = Parser.getTok().getString();
12681268
Parser.Lex(); // Eat the identifier token.
12691269
E = SMLoc::getFromPointer(Parser.getTok().getLoc().getPointer() - 1);
1270-
switch (RegNo) {
1271-
default:
1272-
Op = SparcOperand::CreateReg(RegNo, RegKind, S, E);
1273-
break;
1274-
case Sparc::PSR:
1275-
Op = SparcOperand::CreateToken("%psr", S);
1276-
break;
1277-
case Sparc::FSR:
1278-
Op = SparcOperand::CreateToken("%fsr", S);
1279-
break;
1280-
case Sparc::FQ:
1281-
Op = SparcOperand::CreateToken("%fq", S);
1282-
break;
1283-
case Sparc::CPSR:
1284-
Op = SparcOperand::CreateToken("%csr", S);
1285-
break;
1286-
case Sparc::CPQ:
1287-
Op = SparcOperand::CreateToken("%cq", S);
1288-
break;
1289-
case Sparc::WIM:
1290-
Op = SparcOperand::CreateToken("%wim", S);
1291-
break;
1292-
case Sparc::TBR:
1293-
Op = SparcOperand::CreateToken("%tbr", S);
1294-
break;
1295-
case Sparc::ICC:
1296-
if (name == "xcc")
1297-
Op = SparcOperand::CreateToken("%xcc", S);
1298-
else
1299-
Op = SparcOperand::CreateToken("%icc", S);
1300-
break;
1301-
}
1270+
if (Reg == Sparc::ICC && Name == "xcc")
1271+
Op = SparcOperand::CreateToken("%xcc", S);
1272+
else
1273+
Op = SparcOperand::CreateReg(Reg, RegKind, S, E);
13021274
break;
13031275
}
13041276
if (matchSparcAsmModifiers(EVal, E)) {

llvm/lib/Target/Sparc/MCTargetDesc/SparcInstPrinter.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,12 +39,12 @@ bool SparcInstPrinter::isV9(const MCSubtargetInfo &STI) const {
3939
}
4040

4141
void SparcInstPrinter::printRegName(raw_ostream &OS, MCRegister Reg) const {
42-
OS << '%' << StringRef(getRegisterName(Reg)).lower();
42+
OS << '%' << getRegisterName(Reg);
4343
}
4444

4545
void SparcInstPrinter::printRegName(raw_ostream &OS, MCRegister Reg,
4646
unsigned AltIdx) const {
47-
OS << '%' << StringRef(getRegisterName(Reg, AltIdx)).lower();
47+
OS << '%' << getRegisterName(Reg, AltIdx);
4848
}
4949

5050
void SparcInstPrinter::printInst(const MCInst *MI, uint64_t Address,

llvm/lib/Target/Sparc/Sparc.td

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,10 @@ def SparcAsmParser : AsmParser {
8181
bit ShouldEmitMatchRegisterName = 0;
8282
}
8383

84+
def SparcAsmParserVariant : AsmParserVariant {
85+
let RegisterPrefix = "%";
86+
}
87+
8488
//===----------------------------------------------------------------------===//
8589
// SPARC processors supported.
8690
//===----------------------------------------------------------------------===//
@@ -179,6 +183,7 @@ def Sparc : Target {
179183
// Pull in Instruction Info:
180184
let InstructionSet = SparcInstrInfo;
181185
let AssemblyParsers = [SparcAsmParser];
186+
let AssemblyParserVariants = [SparcAsmParserVariant];
182187
let AssemblyWriters = [SparcAsmWriter];
183188
let AllowRegisterRenaming = 1;
184189
}

0 commit comments

Comments
 (0)