@@ -73,58 +73,46 @@ static DecodeStatus DecodeARRegisterClass(MCInst &Inst, uint64_t RegNo,
7373 return MCDisassembler::Success;
7474}
7575
76- static const MCPhysReg MRDecoderTable[] = {Xtensa::M0, Xtensa::M1, Xtensa::M2,
77- Xtensa::M3};
78-
7976static DecodeStatus DecodeMRRegisterClass (MCInst &Inst, uint64_t RegNo,
8077 uint64_t Address,
8178 const void *Decoder) {
82- if (RegNo >= std::size (MRDecoderTable) )
79+ if (RegNo > 3 )
8380 return MCDisassembler::Fail;
8481
85- MCPhysReg Reg = MRDecoderTable[ RegNo] ;
82+ MCPhysReg Reg = Xtensa::M0 + RegNo;
8683 Inst.addOperand (MCOperand::createReg (Reg));
8784 return MCDisassembler::Success;
8885}
8986
90- static const MCPhysReg MR01DecoderTable[] = {Xtensa::M0, Xtensa::M1};
91-
9287static DecodeStatus DecodeMR01RegisterClass (MCInst &Inst, uint64_t RegNo,
9388 uint64_t Address,
9489 const void *Decoder) {
95- if (RegNo > 2 )
90+ if (RegNo > 1 )
9691 return MCDisassembler::Fail;
9792
98- MCPhysReg Reg = MR01DecoderTable[ RegNo] ;
93+ MCPhysReg Reg = Xtensa::M0 + RegNo;
9994 Inst.addOperand (MCOperand::createReg (Reg));
10095 return MCDisassembler::Success;
10196}
10297
103- static const MCPhysReg MR23DecoderTable[] = {Xtensa::M2, Xtensa::M3};
104-
10598static DecodeStatus DecodeMR23RegisterClass (MCInst &Inst, uint64_t RegNo,
10699 uint64_t Address,
107100 const void *Decoder) {
108- if (RegNo != 0 && RegNo != 1 )
101+ if (RegNo > 1 )
109102 return MCDisassembler::Fail;
110103
111- MCPhysReg Reg = MR23DecoderTable[ RegNo] ;
104+ MCPhysReg Reg = Xtensa::M2 + RegNo;
112105 Inst.addOperand (MCOperand::createReg (Reg));
113106 return MCDisassembler::Success;
114107}
115108
116- static const MCPhysReg FPRDecoderTable[] = {
117- Xtensa::F0, Xtensa::F1, Xtensa::F2, Xtensa::F3, Xtensa::F4, Xtensa::F5,
118- Xtensa::F6, Xtensa::F7, Xtensa::F8, Xtensa::F9, Xtensa::F10, Xtensa::F11,
119- Xtensa::F12, Xtensa::F13, Xtensa::F14, Xtensa::F15};
120-
121109static DecodeStatus DecodeFPRRegisterClass (MCInst &Inst, uint64_t RegNo,
122110 uint64_t Address,
123111 const void *Decoder) {
124- if (RegNo >= std::size (FPRDecoderTable) )
112+ if (RegNo > 15 )
125113 return MCDisassembler::Fail;
126114
127- MCPhysReg Reg = FPRDecoderTable[ RegNo] ;
115+ MCPhysReg Reg = Xtensa::F0 + RegNo;
128116 Inst.addOperand (MCOperand::createReg (Reg));
129117 return MCDisassembler::Success;
130118}
@@ -222,18 +210,13 @@ static DecodeStatus DecodeSRRegisterClass(MCInst &Inst, uint64_t RegNo,
222210 return MCDisassembler::Fail;
223211}
224212
225- const MCPhysReg BRDecoderTable[] = {
226- Xtensa::B0, Xtensa::B1, Xtensa::B2, Xtensa::B3, Xtensa::B4, Xtensa::B5,
227- Xtensa::B6, Xtensa::B7, Xtensa::B8, Xtensa::B9, Xtensa::B10, Xtensa::B11,
228- Xtensa::B12, Xtensa::B13, Xtensa::B14, Xtensa::B15};
229-
230213static DecodeStatus DecodeBRRegisterClass (MCInst &Inst, uint64_t RegNo,
231214 uint64_t Address,
232215 const void *Decoder) {
233- if (RegNo >= std::size (BRDecoderTable) )
216+ if (RegNo > 15 )
234217 return MCDisassembler::Fail;
235218
236- MCPhysReg Reg = BRDecoderTable[ RegNo] ;
219+ MCPhysReg Reg = Xtensa::B0 + RegNo;
237220 Inst.addOperand (MCOperand::createReg (Reg));
238221 return MCDisassembler::Success;
239222}
0 commit comments