Skip to content

Commit 4e6a6ed

Browse files
authored
[PowerPC] Update matchRegisterName() to return MCRegister instead of bool (#111186)
Initial patch to start using TableGen's auto generated function `MatchRegisterName()`. Update `PPCAsmParser::matchRegisterName()` implementation to align more with tablegen's auto generated function.
1 parent e542202 commit 4e6a6ed

File tree

1 file changed

+10
-11
lines changed

1 file changed

+10
-11
lines changed

llvm/lib/Target/PowerPC/AsmParser/PPCAsmParser.cpp

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ class PPCAsmParser : public MCTargetAsmParser {
103103

104104
bool isPPC64() const { return IsPPC64; }
105105

106-
bool matchRegisterName(MCRegister &RegNo, int64_t &IntVal);
106+
MCRegister matchRegisterName(int64_t &IntVal);
107107

108108
bool parseRegister(MCRegister &Reg, SMLoc &StartLoc, SMLoc &EndLoc) override;
109109
ParseStatus tryParseRegister(MCRegister &Reg, SMLoc &StartLoc,
@@ -1291,13 +1291,14 @@ bool PPCAsmParser::matchAndEmitInstruction(SMLoc IDLoc, unsigned &Opcode,
12911291
llvm_unreachable("Implement any new match types added!");
12921292
}
12931293

1294-
bool PPCAsmParser::matchRegisterName(MCRegister &RegNo, int64_t &IntVal) {
1294+
MCRegister PPCAsmParser::matchRegisterName(int64_t &IntVal) {
12951295
if (getParser().getTok().is(AsmToken::Percent))
12961296
getParser().Lex(); // Eat the '%'.
12971297

12981298
if (!getParser().getTok().is(AsmToken::Identifier))
1299-
return true;
1299+
return MCRegister();
13001300

1301+
MCRegister RegNo;
13011302
StringRef Name = getParser().getTok().getString();
13021303
if (Name.equals_insensitive("lr")) {
13031304
RegNo = isPPC64() ? PPC::LR8 : PPC::LR;
@@ -1345,9 +1346,10 @@ bool PPCAsmParser::matchRegisterName(MCRegister &RegNo, int64_t &IntVal) {
13451346
!Name.substr(3).getAsInteger(10, IntVal) && IntVal < 8) {
13461347
RegNo = DMRRegs[IntVal];
13471348
} else
1348-
return true;
1349+
return MCRegister();
1350+
13491351
getParser().Lex();
1350-
return false;
1352+
return RegNo;
13511353
}
13521354

13531355
bool PPCAsmParser::parseRegister(MCRegister &Reg, SMLoc &StartLoc,
@@ -1362,9 +1364,8 @@ ParseStatus PPCAsmParser::tryParseRegister(MCRegister &Reg, SMLoc &StartLoc,
13621364
const AsmToken &Tok = getParser().getTok();
13631365
StartLoc = Tok.getLoc();
13641366
EndLoc = Tok.getEndLoc();
1365-
Reg = PPC::NoRegister;
13661367
int64_t IntVal;
1367-
if (matchRegisterName(Reg, IntVal))
1368+
if (!(Reg = matchRegisterName(IntVal)))
13681369
return ParseStatus::NoMatch;
13691370
return ParseStatus::Success;
13701371
}
@@ -1541,9 +1542,8 @@ bool PPCAsmParser::parseOperand(OperandVector &Operands) {
15411542
// Special handling for register names. These are interpreted
15421543
// as immediates corresponding to the register number.
15431544
case AsmToken::Percent: {
1544-
MCRegister RegNo;
15451545
int64_t IntVal;
1546-
if (matchRegisterName(RegNo, IntVal))
1546+
if (!matchRegisterName(IntVal))
15471547
return Error(S, "invalid register name");
15481548

15491549
Operands.push_back(PPCOperand::CreateImm(IntVal, S, E, isPPC64()));
@@ -1627,8 +1627,7 @@ bool PPCAsmParser::parseOperand(OperandVector &Operands) {
16271627
int64_t IntVal;
16281628
switch (getLexer().getKind()) {
16291629
case AsmToken::Percent: {
1630-
MCRegister RegNo;
1631-
if (matchRegisterName(RegNo, IntVal))
1630+
if (!matchRegisterName(IntVal))
16321631
return Error(S, "invalid register name");
16331632
break;
16341633
}

0 commit comments

Comments
 (0)