@@ -209,20 +209,33 @@ void RISCVInstPrinter::printVTypeI(const MCInst *MI, unsigned OpNo,
209
209
void RISCVInstPrinter::printRlist (const MCInst *MI, unsigned OpNo,
210
210
const MCSubtargetInfo &STI, raw_ostream &O) {
211
211
unsigned Imm = MI->getOperand (OpNo).getImm ();
212
- auto OS = markup (O, Markup::Register);
213
- OS << " {" ;
212
+ O << " {" ;
214
213
switch (Imm) {
215
214
case RISCVZC::RLISTENCODE::RA:
216
- OS << (ArchRegNames ? " x1" : " ra" );
215
+ markup (O, Markup::Register) << (ArchRegNames ? " x1" : " ra" );
217
216
break ;
218
217
case RISCVZC::RLISTENCODE::RA_S0:
219
- OS << (ArchRegNames ? " x1, x8" : " ra, s0" );
218
+ markup (O, Markup::Register) << (ArchRegNames ? " x1" : " ra" );
219
+ O << " , " ;
220
+ markup (O, Markup::Register) << (ArchRegNames ? " x8" : " s0" );
220
221
break ;
221
222
case RISCVZC::RLISTENCODE::RA_S0_S1:
222
- OS << (ArchRegNames ? " x1, x8-x9" : " ra, s0-s1" );
223
+ markup (O, Markup::Register) << (ArchRegNames ? " x1" : " ra" );
224
+ O << " , " ;
225
+ markup (O, Markup::Register) << (ArchRegNames ? " x8" : " s0" );
226
+ O << ' -' ;
227
+ markup (O, Markup::Register) << (ArchRegNames ? " x9" : " s1" );
223
228
break ;
224
229
case RISCVZC::RLISTENCODE::RA_S0_S2:
225
- OS << (ArchRegNames ? " x1, x8-x9, x18" : " ra, s0-s2" );
230
+ markup (O, Markup::Register) << (ArchRegNames ? " x1" : " ra" );
231
+ O << " , " ;
232
+ markup (O, Markup::Register) << (ArchRegNames ? " x8" : " s0" );
233
+ O << ' -' ;
234
+ markup (O, Markup::Register) << (ArchRegNames ? " x9" : " s2" );
235
+ if (ArchRegNames) {
236
+ O << " , " ;
237
+ markup (O, Markup::Register) << " x18" ;
238
+ }
226
239
break ;
227
240
case RISCVZC::RLISTENCODE::RA_S0_S3:
228
241
case RISCVZC::RLISTENCODE::RA_S0_S4:
@@ -231,16 +244,26 @@ void RISCVInstPrinter::printRlist(const MCInst *MI, unsigned OpNo,
231
244
case RISCVZC::RLISTENCODE::RA_S0_S7:
232
245
case RISCVZC::RLISTENCODE::RA_S0_S8:
233
246
case RISCVZC::RLISTENCODE::RA_S0_S9:
234
- OS << (ArchRegNames ? " x1, x8-x9, x18-" : " ra, s0-" )
235
- << getRegisterName (RISCV::X19 + (Imm - RISCVZC::RLISTENCODE::RA_S0_S3));
236
- break ;
237
247
case RISCVZC::RLISTENCODE::RA_S0_S11:
238
- OS << (ArchRegNames ? " x1, x8-x9, x18-x27" : " ra, s0-s11" );
248
+ markup (O, Markup::Register) << (ArchRegNames ? " x1" : " ra" );
249
+ O << " , " ;
250
+ markup (O, Markup::Register) << (ArchRegNames ? " x8" : " s0" );
251
+ O << ' -' ;
252
+ if (ArchRegNames) {
253
+ markup (O, Markup::Register) << " x9" ;
254
+ O << " , " ;
255
+ markup (O, Markup::Register) << " x18" ;
256
+ O << ' -' ;
257
+ }
258
+ markup (O, Markup::Register) << getRegisterName (
259
+ RISCV::X19 + (Imm == RISCVZC::RLISTENCODE::RA_S0_S11
260
+ ? 8
261
+ : Imm - RISCVZC::RLISTENCODE::RA_S0_S3));
239
262
break ;
240
263
default :
241
264
llvm_unreachable (" invalid register list" );
242
265
}
243
- OS << " }" ;
266
+ O << " }" ;
244
267
}
245
268
246
269
void RISCVInstPrinter::printSpimm (const MCInst *MI, unsigned OpNo,
@@ -258,6 +281,7 @@ void RISCVInstPrinter::printSpimm(const MCInst *MI, unsigned OpNo,
258
281
if (Opcode == RISCV::CM_PUSH)
259
282
Spimm = -Spimm;
260
283
284
+ // RAII guard for ANSI color escape sequences
261
285
auto OS = markup (O, Markup::Immediate);
262
286
RISCVZC::printSpimm (Spimm, O);
263
287
}
@@ -272,7 +296,7 @@ void RISCVInstPrinter::printVMaskReg(const MCInst *MI, unsigned OpNo,
272
296
return ;
273
297
O << " , " ;
274
298
printRegName (O, MO.getReg ());
275
- O << " .t" ;
299
+ markup (O, Markup::Register) << " .t" ;
276
300
}
277
301
278
302
const char *RISCVInstPrinter::getRegisterName (MCRegister Reg) {
0 commit comments