@@ -118,16 +118,16 @@ struct LanaiOperand : public MCParsedAsmOperand {
118
118
};
119
119
120
120
struct RegOp {
121
- unsigned RegNum;
121
+ MCRegister RegNum;
122
122
};
123
123
124
124
struct ImmOp {
125
125
const MCExpr *Value;
126
126
};
127
127
128
128
struct MemOp {
129
- unsigned BaseReg;
130
- unsigned OffsetReg;
129
+ MCRegister BaseReg;
130
+ MCRegister OffsetReg;
131
131
unsigned AluOp;
132
132
const MCExpr *Offset;
133
133
};
@@ -166,12 +166,12 @@ struct LanaiOperand : public MCParsedAsmOperand {
166
166
return StringRef (Tok.Data , Tok.Length );
167
167
}
168
168
169
- unsigned getMemBaseReg () const {
169
+ MCRegister getMemBaseReg () const {
170
170
assert (isMem () && " Invalid type access!" );
171
171
return Mem.BaseReg ;
172
172
}
173
173
174
- unsigned getMemOffsetReg () const {
174
+ MCRegister getMemOffsetReg () const {
175
175
assert (isMem () && " Invalid type access!" );
176
176
return Mem.OffsetReg ;
177
177
}
@@ -439,7 +439,7 @@ struct LanaiOperand : public MCParsedAsmOperand {
439
439
void addMemRegRegOperands (MCInst &Inst, unsigned N) const {
440
440
assert (N == 3 && " Invalid number of operands!" );
441
441
Inst.addOperand (MCOperand::createReg (getMemBaseReg ()));
442
- assert (getMemOffsetReg () != 0 && " Invalid offset" );
442
+ assert (getMemOffsetReg () && " Invalid offset" );
443
443
Inst.addOperand (MCOperand::createReg (getMemOffsetReg ()));
444
444
Inst.addOperand (MCOperand::createImm (getMemOp ()));
445
445
}
@@ -589,10 +589,10 @@ struct LanaiOperand : public MCParsedAsmOperand {
589
589
return Op;
590
590
}
591
591
592
- static std::unique_ptr<LanaiOperand> createReg (unsigned RegNum , SMLoc Start,
592
+ static std::unique_ptr<LanaiOperand> createReg (MCRegister Reg , SMLoc Start,
593
593
SMLoc End) {
594
594
auto Op = std::make_unique<LanaiOperand>(REGISTER);
595
- Op->Reg .RegNum = RegNum ;
595
+ Op->Reg .RegNum = Reg ;
596
596
Op->StartLoc = Start;
597
597
Op->EndLoc = End;
598
598
return Op;
@@ -611,17 +611,17 @@ struct LanaiOperand : public MCParsedAsmOperand {
611
611
MorphToMemImm (std::unique_ptr<LanaiOperand> Op) {
612
612
const MCExpr *Imm = Op->getImm ();
613
613
Op->Kind = MEMORY_IMM;
614
- Op->Mem .BaseReg = 0 ;
614
+ Op->Mem .BaseReg = MCRegister () ;
615
615
Op->Mem .AluOp = LPAC::ADD;
616
616
Op->Mem .OffsetReg = 0 ;
617
617
Op->Mem .Offset = Imm;
618
618
return Op;
619
619
}
620
620
621
621
static std::unique_ptr<LanaiOperand>
622
- MorphToMemRegReg (unsigned BaseReg, std::unique_ptr<LanaiOperand> Op,
622
+ MorphToMemRegReg (MCRegister BaseReg, std::unique_ptr<LanaiOperand> Op,
623
623
unsigned AluOp) {
624
- unsigned OffsetReg = Op->getReg ();
624
+ MCRegister OffsetReg = Op->getReg ();
625
625
Op->Kind = MEMORY_REG_REG;
626
626
Op->Mem .BaseReg = BaseReg;
627
627
Op->Mem .AluOp = AluOp;
@@ -631,7 +631,7 @@ struct LanaiOperand : public MCParsedAsmOperand {
631
631
}
632
632
633
633
static std::unique_ptr<LanaiOperand>
634
- MorphToMemRegImm (unsigned BaseReg, std::unique_ptr<LanaiOperand> Op,
634
+ MorphToMemRegImm (MCRegister BaseReg, std::unique_ptr<LanaiOperand> Op,
635
635
unsigned AluOp) {
636
636
const MCExpr *Imm = Op->getImm ();
637
637
Op->Kind = MEMORY_REG_IMM;
@@ -691,21 +691,21 @@ LanaiAsmParser::parseRegister(bool RestoreOnFailure) {
691
691
SMLoc End = SMLoc::getFromPointer (Parser.getTok ().getLoc ().getPointer () - 1 );
692
692
std::optional<AsmToken> PercentTok;
693
693
694
- unsigned RegNum ;
694
+ MCRegister Reg ;
695
695
// Eat the '%'.
696
696
if (Lexer.getKind () == AsmToken::Percent) {
697
697
PercentTok = Parser.getTok ();
698
698
Parser.Lex ();
699
699
}
700
700
if (Lexer.getKind () == AsmToken::Identifier) {
701
- RegNum = MatchRegisterName (Lexer.getTok ().getIdentifier ());
702
- if (RegNum == 0 ) {
701
+ Reg = MatchRegisterName (Lexer.getTok ().getIdentifier ());
702
+ if (!Reg ) {
703
703
if (PercentTok && RestoreOnFailure)
704
704
Lexer.UnLex (*PercentTok);
705
705
return nullptr ;
706
706
}
707
707
Parser.Lex (); // Eat identifier token
708
- return LanaiOperand::createReg (RegNum , Start, End);
708
+ return LanaiOperand::createReg (Reg , Start, End);
709
709
}
710
710
if (PercentTok && RestoreOnFailure)
711
711
Lexer.UnLex (*PercentTok);
@@ -900,7 +900,7 @@ ParseStatus LanaiAsmParser::parseMemoryOperand(OperandVector &Operands) {
900
900
901
901
// Use 0 if no offset given
902
902
int OffsetValue = 0 ;
903
- unsigned BaseReg = 0 ;
903
+ MCRegister BaseReg;
904
904
unsigned AluOp = LPAC::ADD;
905
905
bool PostOp = false , PreOp = false ;
906
906
0 commit comments