@@ -105,28 +105,37 @@ static const MCPhysReg MR23DecoderTable[] = {Xtensa::M2, Xtensa::M3};
105105static DecodeStatus DecodeMR23RegisterClass (MCInst &Inst, uint64_t RegNo,
106106 uint64_t Address,
107107 const void *Decoder) {
108- if (RegNo != 2 && RegNo != 3 )
108+ if (RegNo != 0 && RegNo != 1 )
109109 return MCDisassembler::Fail;
110110
111- MCPhysReg Reg = MR23DecoderTable[RegNo - 2 ];
111+ MCPhysReg Reg = MR23DecoderTable[RegNo];
112112 Inst.addOperand (MCOperand::createReg (Reg));
113113 return MCDisassembler::Success;
114114}
115115
116- const MCPhysReg SRDecoderTable[] = {
117- Xtensa::SAR, 3 , Xtensa::ACCLO, 16 , Xtensa::ACCHI, 17 ,
118- Xtensa::M0, 32 , Xtensa::M1, 33 , Xtensa::M2, 34 ,
119- Xtensa::M3, 35 , Xtensa::WINDOWBASE, 72 , Xtensa::WINDOWSTART, 73 };
116+ struct DecodeRegister {
117+ MCPhysReg Reg;
118+ uint32_t RegNo;
119+ };
120+
121+ const DecodeRegister SRDecoderTable[] = {
122+ {Xtensa::LBEG, 0 }, {Xtensa::LEND, 1 }, {Xtensa::LCOUNT, 2 },
123+ {Xtensa::SAR, 3 }, {Xtensa::BREG, 4 }, {Xtensa::SAR, 3 },
124+ {Xtensa::LITBASE, 5 }, {Xtensa::ACCLO, 16 }, {Xtensa::ACCHI, 17 },
125+ {Xtensa::M0, 32 }, {Xtensa::M1, 33 }, {Xtensa::M2, 34 },
126+ {Xtensa::M3, 35 }, {Xtensa::WINDOWBASE, 72 }, {Xtensa::WINDOWSTART, 73 },
127+ {Xtensa::MEMCTL, 97 }, {Xtensa::VECBASE, 231 }, {Xtensa::MISC0, 244 },
128+ {Xtensa::MISC1, 245 }, {Xtensa::MISC2, 246 }, {Xtensa::MISC3, 247 }};
120129
121130static DecodeStatus DecodeSRRegisterClass (MCInst &Inst, uint64_t RegNo,
122131 uint64_t Address,
123132 const MCDisassembler *Decoder) {
124133 if (RegNo > 255 )
125134 return MCDisassembler::Fail;
126135
127- for (unsigned i = 0 ; i < std::size (SRDecoderTable); i += 2 ) {
128- if (SRDecoderTable[i + 1 ] == RegNo) {
129- MCPhysReg Reg = SRDecoderTable[i];
136+ for (unsigned i = 0 ; i < std::size (SRDecoderTable); i++ ) {
137+ if (SRDecoderTable[i]. RegNo == RegNo) {
138+ MCPhysReg Reg = SRDecoderTable[i]. Reg ;
130139
131140 if (!Xtensa::checkRegister (Reg,
132141 Decoder->getSubtargetInfo ().getFeatureBits ()))
0 commit comments