Skip to content

Commit 8c5d53f

Browse files
committed
[RISCV] Use MCRegister instead of unsigned in RISCVAsmParser.cpp. NFC
Rename RegNo to Reg.
1 parent 49aa255 commit 8c5d53f

File tree

1 file changed

+48
-49
lines changed

1 file changed

+48
-49
lines changed

llvm/lib/Target/RISCV/AsmParser/RISCVAsmParser.cpp

Lines changed: 48 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1110,9 +1110,9 @@ struct RISCVOperand final : public MCParsedAsmOperand {
11101110
}
11111111

11121112
static std::unique_ptr<RISCVOperand>
1113-
createReg(unsigned RegNo, SMLoc S, SMLoc E, bool IsGPRAsFPR = false) {
1113+
createReg(MCRegister Reg, SMLoc S, SMLoc E, bool IsGPRAsFPR = false) {
11141114
auto Op = std::make_unique<RISCVOperand>(KindTy::Register);
1115-
Op->Reg.RegNum = RegNo;
1115+
Op->Reg.RegNum = Reg.id();
11161116
Op->Reg.IsGPRAsFPR = IsGPRAsFPR;
11171117
Op->StartLoc = S;
11181118
Op->EndLoc = E;
@@ -1181,11 +1181,11 @@ struct RISCVOperand final : public MCParsedAsmOperand {
11811181
return Op;
11821182
}
11831183

1184-
static std::unique_ptr<RISCVOperand> createRegReg(unsigned Reg1No,
1185-
unsigned Reg2No, SMLoc S) {
1184+
static std::unique_ptr<RISCVOperand> createRegReg(MCRegister Reg1,
1185+
MCRegister Reg2, SMLoc S) {
11861186
auto Op = std::make_unique<RISCVOperand>(KindTy::RegReg);
1187-
Op->RegReg.Reg1 = Reg1No;
1188-
Op->RegReg.Reg2 = Reg2No;
1187+
Op->RegReg.Reg1 = Reg1.id();
1188+
Op->RegReg.Reg2 = Reg2.id();
11891189
Op->StartLoc = S;
11901190
Op->EndLoc = S;
11911191
return Op;
@@ -1310,7 +1310,7 @@ static MCRegister convertVRToVRMx(const MCRegisterInfo &RI, MCRegister Reg,
13101310
else if (Kind == MCK_VRM8)
13111311
RegClassID = RISCV::VRM8RegClassID;
13121312
else
1313-
return 0;
1313+
return MCRegister();
13141314
return RI.getMatchingSuperReg(Reg, RISCV::sub_vrm1_0,
13151315
&RISCVMCRegisterClasses[RegClassID]);
13161316
}
@@ -1661,9 +1661,9 @@ bool RISCVAsmParser::MatchAndEmitInstruction(SMLoc IDLoc, unsigned &Opcode,
16611661
}
16621662

16631663
// Attempts to match Name as a register (either using the default name or
1664-
// alternative ABI names), setting RegNo to the matching register. Upon
1665-
// failure, returns a non-valid MCRegister. If IsRVE, then registers x16-x31
1666-
// will be rejected.
1664+
// alternative ABI names), returning the matching register. Upon failure,
1665+
// returns a non-valid MCRegister. If IsRVE, then registers x16-x31 will be
1666+
// rejected.
16671667
MCRegister RISCVAsmParser::matchRegisterNameHelper(StringRef Name) const {
16681668
MCRegister Reg = MatchRegisterName(Name);
16691669
// The 16-/32- and 64-bit FPRs have the same asm name. Check that the initial
@@ -1676,7 +1676,7 @@ MCRegister RISCVAsmParser::matchRegisterNameHelper(StringRef Name) const {
16761676
if (!Reg)
16771677
Reg = MatchRegisterAltName(Name);
16781678
if (isRVE() && Reg >= RISCV::X16 && Reg <= RISCV::X31)
1679-
Reg = RISCV::NoRegister;
1679+
Reg = MCRegister();
16801680
return Reg;
16811681
}
16821682

@@ -1727,9 +1727,9 @@ ParseStatus RISCVAsmParser::parseRegister(OperandVector &Operands,
17271727
return ParseStatus::NoMatch;
17281728
case AsmToken::Identifier:
17291729
StringRef Name = getLexer().getTok().getIdentifier();
1730-
MCRegister RegNo = matchRegisterNameHelper(Name);
1730+
MCRegister Reg = matchRegisterNameHelper(Name);
17311731

1732-
if (!RegNo) {
1732+
if (!Reg) {
17331733
if (HadParens)
17341734
getLexer().UnLex(LParen);
17351735
return ParseStatus::NoMatch;
@@ -1739,7 +1739,7 @@ ParseStatus RISCVAsmParser::parseRegister(OperandVector &Operands,
17391739
SMLoc S = getLoc();
17401740
SMLoc E = SMLoc::getFromPointer(S.getPointer() + Name.size());
17411741
getLexer().Lex();
1742-
Operands.push_back(RISCVOperand::createReg(RegNo, S, E));
1742+
Operands.push_back(RISCVOperand::createReg(Reg, S, E));
17431743
}
17441744

17451745
if (HadParens) {
@@ -2305,16 +2305,16 @@ ParseStatus RISCVAsmParser::parseMaskReg(OperandVector &Operands) {
23052305
StringRef Name = getLexer().getTok().getIdentifier();
23062306
if (!Name.consume_back(".t"))
23072307
return Error(getLoc(), "expected '.t' suffix");
2308-
MCRegister RegNo = matchRegisterNameHelper(Name);
2308+
MCRegister Reg = matchRegisterNameHelper(Name);
23092309

2310-
if (!RegNo)
2310+
if (!Reg)
23112311
return ParseStatus::NoMatch;
2312-
if (RegNo != RISCV::V0)
2312+
if (Reg != RISCV::V0)
23132313
return ParseStatus::NoMatch;
23142314
SMLoc S = getLoc();
23152315
SMLoc E = SMLoc::getFromPointer(S.getPointer() + Name.size());
23162316
getLexer().Lex();
2317-
Operands.push_back(RISCVOperand::createReg(RegNo, S, E));
2317+
Operands.push_back(RISCVOperand::createReg(Reg, S, E));
23182318
return ParseStatus::Success;
23192319
}
23202320

@@ -2323,15 +2323,15 @@ ParseStatus RISCVAsmParser::parseGPRAsFPR(OperandVector &Operands) {
23232323
return ParseStatus::NoMatch;
23242324

23252325
StringRef Name = getLexer().getTok().getIdentifier();
2326-
MCRegister RegNo = matchRegisterNameHelper(Name);
2326+
MCRegister Reg = matchRegisterNameHelper(Name);
23272327

2328-
if (!RegNo)
2328+
if (!Reg)
23292329
return ParseStatus::NoMatch;
23302330
SMLoc S = getLoc();
23312331
SMLoc E = SMLoc::getFromPointer(S.getPointer() + Name.size());
23322332
getLexer().Lex();
23332333
Operands.push_back(RISCVOperand::createReg(
2334-
RegNo, S, E, !getSTI().hasFeature(RISCV::FeatureStdExtF)));
2334+
Reg, S, E, !getSTI().hasFeature(RISCV::FeatureStdExtF)));
23352335
return ParseStatus::Success;
23362336
}
23372337

@@ -2354,24 +2354,24 @@ ParseStatus RISCVAsmParser::parseGPRPair(OperandVector &Operands,
23542354
return ParseStatus::NoMatch;
23552355

23562356
StringRef Name = getLexer().getTok().getIdentifier();
2357-
MCRegister RegNo = matchRegisterNameHelper(Name);
2357+
MCRegister Reg = matchRegisterNameHelper(Name);
23582358

2359-
if (!RegNo)
2359+
if (!Reg)
23602360
return ParseStatus::NoMatch;
23612361

2362-
if (!RISCVMCRegisterClasses[RISCV::GPRRegClassID].contains(RegNo))
2362+
if (!RISCVMCRegisterClasses[RISCV::GPRRegClassID].contains(Reg))
23632363
return ParseStatus::NoMatch;
23642364

2365-
if ((RegNo - RISCV::X0) & 1)
2365+
if ((Reg - RISCV::X0) & 1)
23662366
return TokError("register must be even");
23672367

23682368
SMLoc S = getLoc();
23692369
SMLoc E = SMLoc::getFromPointer(S.getPointer() + Name.size());
23702370
getLexer().Lex();
23712371

23722372
const MCRegisterInfo *RI = getContext().getRegisterInfo();
2373-
unsigned Pair = RI->getMatchingSuperReg(
2374-
RegNo, RISCV::sub_gpr_even,
2373+
MCRegister Pair = RI->getMatchingSuperReg(
2374+
Reg, RISCV::sub_gpr_even,
23752375
&RISCVMCRegisterClasses[RISCV::GPRPairRegClassID]);
23762376
Operands.push_back(RISCVOperand::createReg(Pair, S, E));
23772377
return ParseStatus::Success;
@@ -2629,7 +2629,7 @@ ParseStatus RISCVAsmParser::parseReglist(OperandVector &Operands) {
26292629
if (getLexer().isNot(AsmToken::Identifier))
26302630
return Error(getLoc(), "invalid register");
26312631
EndName = getLexer().getTok().getIdentifier();
2632-
if (MatchRegisterName(EndName) == RISCV::NoRegister)
2632+
if (!MatchRegisterName(EndName))
26332633
return Error(getLoc(), "invalid register");
26342634
getLexer().Lex();
26352635
}
@@ -2644,7 +2644,7 @@ ParseStatus RISCVAsmParser::parseReglist(OperandVector &Operands) {
26442644
if (parseToken(AsmToken::RCurly, "register list must end with '}'"))
26452645
return ParseStatus::Failure;
26462646

2647-
if (RegEnd == RISCV::NoRegister)
2647+
if (!RegEnd)
26482648
RegEnd = RegStart;
26492649

26502650
auto Encode = RISCVZC::encodeRlist(RegEnd, IsEABI);
@@ -3356,7 +3356,7 @@ void RISCVAsmParser::emitVMSGE(MCInst &Inst, unsigned Opcode, SMLoc IDLoc,
33563356
.addOperand(Inst.getOperand(0))
33573357
.addOperand(Inst.getOperand(1))
33583358
.addOperand(Inst.getOperand(2))
3359-
.addReg(RISCV::NoRegister)
3359+
.addReg(MCRegister())
33603360
.setLoc(IDLoc));
33613361
emitToStreamer(Out, MCInstBuilder(RISCV::VMNAND_MM)
33623362
.addOperand(Inst.getOperand(0))
@@ -3395,7 +3395,7 @@ void RISCVAsmParser::emitVMSGE(MCInst &Inst, unsigned Opcode, SMLoc IDLoc,
33953395
.addOperand(Inst.getOperand(1))
33963396
.addOperand(Inst.getOperand(2))
33973397
.addOperand(Inst.getOperand(3))
3398-
.addReg(RISCV::NoRegister)
3398+
.addReg(MCRegister())
33993399
.setLoc(IDLoc));
34003400
emitToStreamer(Out, MCInstBuilder(RISCV::VMANDN_MM)
34013401
.addOperand(Inst.getOperand(0))
@@ -3414,7 +3414,7 @@ void RISCVAsmParser::emitVMSGE(MCInst &Inst, unsigned Opcode, SMLoc IDLoc,
34143414
.addOperand(Inst.getOperand(1))
34153415
.addOperand(Inst.getOperand(2))
34163416
.addOperand(Inst.getOperand(3))
3417-
.addReg(RISCV::NoRegister)
3417+
.addReg(MCRegister())
34183418
.setLoc(IDLoc));
34193419
emitToStreamer(Out, MCInstBuilder(RISCV::VMANDN_MM)
34203420
.addOperand(Inst.getOperand(1))
@@ -3461,8 +3461,7 @@ bool RISCVAsmParser::checkPseudoTLSDESCCall(MCInst &Inst,
34613461
}
34623462

34633463
std::unique_ptr<RISCVOperand> RISCVAsmParser::defaultMaskRegOp() const {
3464-
return RISCVOperand::createReg(RISCV::NoRegister, llvm::SMLoc(),
3465-
llvm::SMLoc());
3464+
return RISCVOperand::createReg(MCRegister(), llvm::SMLoc(), llvm::SMLoc());
34663465
}
34673466

34683467
std::unique_ptr<RISCVOperand> RISCVAsmParser::defaultFRMArgOp() const {
@@ -3481,8 +3480,8 @@ bool RISCVAsmParser::validateInstruction(MCInst &Inst,
34813480

34823481
if (Opcode == RISCV::PseudoVMSGEU_VX_M_T ||
34833482
Opcode == RISCV::PseudoVMSGE_VX_M_T) {
3484-
unsigned DestReg = Inst.getOperand(0).getReg();
3485-
unsigned TempReg = Inst.getOperand(1).getReg();
3483+
MCRegister DestReg = Inst.getOperand(0).getReg();
3484+
MCRegister TempReg = Inst.getOperand(1).getReg();
34863485
if (DestReg == TempReg) {
34873486
SMLoc Loc = Operands.back()->getStartLoc();
34883487
return Error(Loc, "the temporary vector register cannot be the same as "
@@ -3492,9 +3491,9 @@ bool RISCVAsmParser::validateInstruction(MCInst &Inst,
34923491

34933492
if (Opcode == RISCV::TH_LDD || Opcode == RISCV::TH_LWUD ||
34943493
Opcode == RISCV::TH_LWD) {
3495-
unsigned Rd1 = Inst.getOperand(0).getReg();
3496-
unsigned Rd2 = Inst.getOperand(1).getReg();
3497-
unsigned Rs1 = Inst.getOperand(2).getReg();
3494+
MCRegister Rd1 = Inst.getOperand(0).getReg();
3495+
MCRegister Rd2 = Inst.getOperand(1).getReg();
3496+
MCRegister Rs1 = Inst.getOperand(2).getReg();
34983497
// The encoding with rd1 == rd2 == rs1 is reserved for XTHead load pair.
34993498
if (Rs1 == Rd1 && Rs1 == Rd2) {
35003499
SMLoc Loc = Operands[1]->getStartLoc();
@@ -3503,8 +3502,8 @@ bool RISCVAsmParser::validateInstruction(MCInst &Inst,
35033502
}
35043503

35053504
if (Opcode == RISCV::CM_MVSA01) {
3506-
unsigned Rd1 = Inst.getOperand(0).getReg();
3507-
unsigned Rd2 = Inst.getOperand(1).getReg();
3505+
MCRegister Rd1 = Inst.getOperand(0).getReg();
3506+
MCRegister Rd2 = Inst.getOperand(1).getReg();
35083507
if (Rd1 == Rd2) {
35093508
SMLoc Loc = Operands[1]->getStartLoc();
35103509
return Error(Loc, "rs1 and rs2 must be different");
@@ -3531,24 +3530,24 @@ bool RISCVAsmParser::validateInstruction(MCInst &Inst,
35313530
if (Opcode == RISCV::VC_V_XVW || Opcode == RISCV::VC_V_IVW ||
35323531
Opcode == RISCV::VC_V_FVW || Opcode == RISCV::VC_V_VVW) {
35333532
// Operands Opcode, Dst, uimm, Dst, Rs2, Rs1 for VC_V_XVW.
3534-
unsigned VCIXDst = Inst.getOperand(0).getReg();
3533+
MCRegister VCIXDst = Inst.getOperand(0).getReg();
35353534
SMLoc VCIXDstLoc = Operands[2]->getStartLoc();
35363535
if (MCID.TSFlags & RISCVII::VS1Constraint) {
3537-
unsigned VCIXRs1 = Inst.getOperand(Inst.getNumOperands() - 1).getReg();
3536+
MCRegister VCIXRs1 = Inst.getOperand(Inst.getNumOperands() - 1).getReg();
35383537
if (VCIXDst == VCIXRs1)
35393538
return Error(VCIXDstLoc, "the destination vector register group cannot"
35403539
" overlap the source vector register group");
35413540
}
35423541
if (MCID.TSFlags & RISCVII::VS2Constraint) {
3543-
unsigned VCIXRs2 = Inst.getOperand(Inst.getNumOperands() - 2).getReg();
3542+
MCRegister VCIXRs2 = Inst.getOperand(Inst.getNumOperands() - 2).getReg();
35443543
if (VCIXDst == VCIXRs2)
35453544
return Error(VCIXDstLoc, "the destination vector register group cannot"
35463545
" overlap the source vector register group");
35473546
}
35483547
return false;
35493548
}
35503549

3551-
unsigned DestReg = Inst.getOperand(0).getReg();
3550+
MCRegister DestReg = Inst.getOperand(0).getReg();
35523551
unsigned Offset = 0;
35533552
int TiedOp = MCID.getOperandConstraint(1, MCOI::TIED_TO);
35543553
if (TiedOp == 0)
@@ -3557,13 +3556,13 @@ bool RISCVAsmParser::validateInstruction(MCInst &Inst,
35573556
// Operands[1] will be the first operand, DestReg.
35583557
SMLoc Loc = Operands[1]->getStartLoc();
35593558
if (MCID.TSFlags & RISCVII::VS2Constraint) {
3560-
unsigned CheckReg = Inst.getOperand(Offset + 1).getReg();
3559+
MCRegister CheckReg = Inst.getOperand(Offset + 1).getReg();
35613560
if (DestReg == CheckReg)
35623561
return Error(Loc, "the destination vector register group cannot overlap"
35633562
" the source vector register group");
35643563
}
35653564
if ((MCID.TSFlags & RISCVII::VS1Constraint) && Inst.getOperand(Offset + 2).isReg()) {
3566-
unsigned CheckReg = Inst.getOperand(Offset + 2).getReg();
3565+
MCRegister CheckReg = Inst.getOperand(Offset + 2).getReg();
35673566
if (DestReg == CheckReg)
35683567
return Error(Loc, "the destination vector register group cannot overlap"
35693568
" the source vector register group");
@@ -3582,8 +3581,8 @@ bool RISCVAsmParser::validateInstruction(MCInst &Inst,
35823581
// same. For example, "viota.m v0, v2" is "viota.m v0, v2, NoRegister"
35833582
// actually. We need to check the last operand to ensure whether it is
35843583
// masked or not.
3585-
unsigned CheckReg = Inst.getOperand(Inst.getNumOperands() - 1).getReg();
3586-
assert((CheckReg == RISCV::V0 || CheckReg == RISCV::NoRegister) &&
3584+
MCRegister CheckReg = Inst.getOperand(Inst.getNumOperands() - 1).getReg();
3585+
assert((CheckReg == RISCV::V0 || !CheckReg) &&
35873586
"Unexpected register for mask operand");
35883587

35893588
if (DestReg == CheckReg)

0 commit comments

Comments
 (0)