@@ -107,6 +107,7 @@ class RISCVAsmParser : public MCTargetAsmParser {
107
107
uint64_t &ErrorInfo,
108
108
bool MatchingInlineAsm) override ;
109
109
110
+ MCRegister matchRegisterNameHelper (StringRef Name) const ;
110
111
bool parseRegister (MCRegister &Reg, SMLoc &StartLoc, SMLoc &EndLoc) override ;
111
112
ParseStatus tryParseRegister (MCRegister &Reg, SMLoc &StartLoc,
112
113
SMLoc &EndLoc) override ;
@@ -1630,7 +1631,7 @@ bool RISCVAsmParser::MatchAndEmitInstruction(SMLoc IDLoc, unsigned &Opcode,
1630
1631
// alternative ABI names), setting RegNo to the matching register. Upon
1631
1632
// failure, returns a non-valid MCRegister. If IsRVE, then registers x16-x31
1632
1633
// will be rejected.
1633
- static MCRegister matchRegisterNameHelper (bool IsRVE, StringRef Name) {
1634
+ MCRegister RISCVAsmParser:: matchRegisterNameHelper (StringRef Name) const {
1634
1635
MCRegister Reg = MatchRegisterName (Name);
1635
1636
// The 16-/32- and 64-bit FPRs have the same asm name. Check that the initial
1636
1637
// match always matches the 64-bit variant, and not the 16/32-bit one.
@@ -1641,7 +1642,7 @@ static MCRegister matchRegisterNameHelper(bool IsRVE, StringRef Name) {
1641
1642
static_assert (RISCV::F0_D < RISCV::F0_F, " FPR matching must be updated" );
1642
1643
if (!Reg)
1643
1644
Reg = MatchRegisterAltName (Name);
1644
- if (IsRVE && Reg >= RISCV::X16 && Reg <= RISCV::X31)
1645
+ if (isRVE () && Reg >= RISCV::X16 && Reg <= RISCV::X31)
1645
1646
Reg = RISCV::NoRegister;
1646
1647
return Reg;
1647
1648
}
@@ -1660,7 +1661,7 @@ ParseStatus RISCVAsmParser::tryParseRegister(MCRegister &Reg, SMLoc &StartLoc,
1660
1661
EndLoc = Tok.getEndLoc ();
1661
1662
StringRef Name = getLexer ().getTok ().getIdentifier ();
1662
1663
1663
- Reg = matchRegisterNameHelper (isRVE (), Name);
1664
+ Reg = matchRegisterNameHelper (Name);
1664
1665
if (!Reg)
1665
1666
return ParseStatus::NoMatch;
1666
1667
@@ -1693,7 +1694,7 @@ ParseStatus RISCVAsmParser::parseRegister(OperandVector &Operands,
1693
1694
return ParseStatus::NoMatch;
1694
1695
case AsmToken::Identifier:
1695
1696
StringRef Name = getLexer ().getTok ().getIdentifier ();
1696
- MCRegister RegNo = matchRegisterNameHelper (isRVE (), Name);
1697
+ MCRegister RegNo = matchRegisterNameHelper (Name);
1697
1698
1698
1699
if (!RegNo) {
1699
1700
if (HadParens)
@@ -2232,7 +2233,7 @@ ParseStatus RISCVAsmParser::parseMaskReg(OperandVector &Operands) {
2232
2233
StringRef Name = getLexer ().getTok ().getIdentifier ();
2233
2234
if (!Name.consume_back (" .t" ))
2234
2235
return Error (getLoc (), " expected '.t' suffix" );
2235
- MCRegister RegNo = matchRegisterNameHelper (isRVE (), Name);
2236
+ MCRegister RegNo = matchRegisterNameHelper (Name);
2236
2237
2237
2238
if (!RegNo)
2238
2239
return ParseStatus::NoMatch;
@@ -2250,7 +2251,7 @@ ParseStatus RISCVAsmParser::parseGPRAsFPR(OperandVector &Operands) {
2250
2251
return ParseStatus::NoMatch;
2251
2252
2252
2253
StringRef Name = getLexer ().getTok ().getIdentifier ();
2253
- MCRegister RegNo = matchRegisterNameHelper (isRVE (), Name);
2254
+ MCRegister RegNo = matchRegisterNameHelper (Name);
2254
2255
2255
2256
if (!RegNo)
2256
2257
return ParseStatus::NoMatch;
@@ -2281,7 +2282,7 @@ ParseStatus RISCVAsmParser::parseGPRPair(OperandVector &Operands,
2281
2282
return ParseStatus::NoMatch;
2282
2283
2283
2284
StringRef Name = getLexer ().getTok ().getIdentifier ();
2284
- MCRegister RegNo = matchRegisterNameHelper (isRVE (), Name);
2285
+ MCRegister RegNo = matchRegisterNameHelper (Name);
2285
2286
2286
2287
if (!RegNo)
2287
2288
return ParseStatus::NoMatch;
@@ -2461,7 +2462,7 @@ ParseStatus RISCVAsmParser::parseRegReg(OperandVector &Operands) {
2461
2462
return ParseStatus::NoMatch;
2462
2463
2463
2464
StringRef RegName = getLexer ().getTok ().getIdentifier ();
2464
- MCRegister Reg = matchRegisterNameHelper (isRVE (), RegName);
2465
+ MCRegister Reg = matchRegisterNameHelper (RegName);
2465
2466
if (!Reg)
2466
2467
return Error (getLoc (), " invalid register" );
2467
2468
getLexer ().Lex ();
@@ -2473,7 +2474,7 @@ ParseStatus RISCVAsmParser::parseRegReg(OperandVector &Operands) {
2473
2474
return Error (getLoc (), " expected register" );
2474
2475
2475
2476
StringRef Reg2Name = getLexer ().getTok ().getIdentifier ();
2476
- MCRegister Reg2 = matchRegisterNameHelper (isRVE (), Reg2Name);
2477
+ MCRegister Reg2 = matchRegisterNameHelper (Reg2Name);
2477
2478
if (!Reg2)
2478
2479
return Error (getLoc (), " invalid register" );
2479
2480
getLexer ().Lex ();
@@ -2500,7 +2501,7 @@ ParseStatus RISCVAsmParser::parseReglist(OperandVector &Operands) {
2500
2501
return Error (getLoc (), " register list must start from 'ra' or 'x1'" );
2501
2502
2502
2503
StringRef RegName = getLexer ().getTok ().getIdentifier ();
2503
- MCRegister RegStart = matchRegisterNameHelper (IsEABI, RegName);
2504
+ MCRegister RegStart = matchRegisterNameHelper (RegName);
2504
2505
MCRegister RegEnd;
2505
2506
if (RegStart != RISCV::X1)
2506
2507
return Error (getLoc (), " register list must start from 'ra' or 'x1'" );
@@ -2511,7 +2512,7 @@ ParseStatus RISCVAsmParser::parseReglist(OperandVector &Operands) {
2511
2512
if (getLexer ().isNot (AsmToken::Identifier))
2512
2513
return Error (getLoc (), " invalid register" );
2513
2514
StringRef RegName = getLexer ().getTok ().getIdentifier ();
2514
- RegStart = matchRegisterNameHelper (IsEABI, RegName);
2515
+ RegStart = matchRegisterNameHelper (RegName);
2515
2516
if (!RegStart)
2516
2517
return Error (getLoc (), " invalid register" );
2517
2518
if (RegStart != RISCV::X8)
@@ -2524,7 +2525,7 @@ ParseStatus RISCVAsmParser::parseReglist(OperandVector &Operands) {
2524
2525
if (parseOptionalToken (AsmToken::Minus)) {
2525
2526
StringRef EndName = getLexer ().getTok ().getIdentifier ();
2526
2527
// FIXME: the register mapping and checks of EABI is wrong
2527
- RegEnd = matchRegisterNameHelper (IsEABI, EndName);
2528
+ RegEnd = matchRegisterNameHelper (EndName);
2528
2529
if (!RegEnd)
2529
2530
return Error (getLoc (), " invalid register" );
2530
2531
if (IsEABI && RegEnd != RISCV::X9)
0 commit comments