Skip to content

Commit 6bc1f2c

Browse files
committed
[RISCV] Add user trap CSRs
1 parent 55758c3 commit 6bc1f2c

File tree

4 files changed

+136
-4
lines changed

4 files changed

+136
-4
lines changed

llvm/lib/Target/RISCV/RISCVSystemOperands.td

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -327,6 +327,22 @@ let AltName = "dscratch" in
327327
def : SysReg<"dscratch0", 0x7B2>;
328328
def : SysReg<"dscratch1", 0x7B3>;
329329

330+
//===----------------------------------------------------------------------===//
331+
// User Trap Setup
332+
//===----------------------------------------------------------------------===//
333+
def : SysReg<"ustatus", 0x000>;
334+
def : SysReg<"uie", 0x004>;
335+
def : SysReg<"utvec", 0x005>;
336+
337+
//===----------------------------------------------------------------------===//
338+
// User Trap Handling
339+
//===----------------------------------------------------------------------===//
340+
def : SysReg<"uscratch", 0x040>;
341+
def : SysReg<"uepc", 0x041>;
342+
def : SysReg<"ucause", 0x042>;
343+
def : SysReg<"utval", 0x043>;
344+
def : SysReg<"uip", 0x044>;
345+
330346
//===----------------------------------------------------------------------===//
331347
// User Vector CSRs
332348
//===----------------------------------------------------------------------===//

llvm/test/MC/RISCV/rv32e-valid.s

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -116,9 +116,9 @@ csrrw t0, 0xfff, t1
116116
csrrs s0, 0xc00, x0
117117
# CHECK-ASM-AND-OBJ: csrrs s0, fflags, a5
118118
csrrs s0, 0x001, a5
119-
# CHECK-ASM-AND-OBJ: csrrc sp, 0, ra
119+
# CHECK-ASM-AND-OBJ: csrrc sp, ustatus, ra
120120
csrrc sp, 0x000, ra
121-
# CHECK-ASM-AND-OBJ: csrrwi a5, 0, 0
121+
# CHECK-ASM-AND-OBJ: csrrwi a5, ustatus, 0
122122
csrrwi a5, 0x000, 0
123123
# CHECK-ASM-AND-OBJ: csrrsi t2, 4095, 31
124124
csrrsi t2, 0xfff, 31

llvm/test/MC/RISCV/rv32i-valid.s

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -361,10 +361,10 @@ csrrs s0, 0xc00, x0
361361
# CHECK-ASM-AND-OBJ: csrrs s3, fflags, s5
362362
# CHECK-ASM: encoding: [0xf3,0xa9,0x1a,0x00]
363363
csrrs s3, 0x001, s5
364-
# CHECK-ASM-AND-OBJ: csrrc sp, 0, ra
364+
# CHECK-ASM-AND-OBJ: csrrc sp, ustatus, ra
365365
# CHECK-ASM: encoding: [0x73,0xb1,0x00,0x00]
366366
csrrc sp, 0x000, ra
367-
# CHECK-ASM-AND-OBJ: csrrwi a5, 0, 0
367+
# CHECK-ASM-AND-OBJ: csrrwi a5, ustatus, 0
368368
# CHECK-ASM: encoding: [0xf3,0x57,0x00,0x00]
369369
csrrwi a5, 0x000, 0
370370
# CHECK-ASM-AND-OBJ: csrrsi t2, 4095, 31

llvm/test/MC/RISCV/user-csr-names.s

Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -466,3 +466,119 @@ csrrs t2, 0xC1E, zero
466466
csrrs t1, hpmcounter31, zero
467467
# uimm12
468468
csrrs t2, 0xC1F, zero
469+
470+
##################################
471+
# User Trap Setup
472+
##################################
473+
474+
# ustatus
475+
# name
476+
# CHECK-INST: csrrs t1, ustatus, zero
477+
# CHECK-ENC: encoding: [0x73,0x23,0x00,0x00]
478+
# CHECK-INST-ALIAS: csrr t1, ustatus
479+
# uimm12
480+
# CHECK-INST: csrrs t2, ustatus, zero
481+
# CHECK-ENC: encoding: [0xf3,0x23,0x00,0x00]
482+
# CHECK-INST-ALIAS: csrr t2, ustatus
483+
# name
484+
csrrs t1, ustatus, zero
485+
# uimm12
486+
csrrs t2, 0x000, zero
487+
488+
# uie
489+
# name
490+
# CHECK-INST: csrrs t1, uie, zero
491+
# CHECK-ENC: encoding: [0x73,0x23,0x40,0x00]
492+
# CHECK-INST-ALIAS: csrr t1, uie
493+
# uimm12
494+
# CHECK-INST: csrrs t2, uie, zero
495+
# CHECK-ENC: encoding: [0xf3,0x23,0x40,0x00]
496+
# CHECK-INST-ALIAS: csrr t2, uie
497+
# name
498+
csrrs t1, uie, zero
499+
# uimm12
500+
csrrs t2, 0x004, zero
501+
502+
# utvec
503+
# name
504+
# CHECK-INST: csrrs t1, utvec, zero
505+
# CHECK-ENC: encoding: [0x73,0x23,0x50,0x00]
506+
# CHECK-INST-ALIAS: csrr t1, utvec
507+
# uimm12
508+
# CHECK-INST: csrrs t2, utvec, zero
509+
# CHECK-ENC: encoding: [0xf3,0x23,0x50,0x00]
510+
# CHECK-INST-ALIAS: csrr t2, utvec
511+
# name
512+
csrrs t1, utvec, zero
513+
# uimm12
514+
csrrs t2, 0x005, zero
515+
516+
# uscratch
517+
# name
518+
# CHECK-INST: csrrs t1, uscratch, zero
519+
# CHECK-ENC: encoding: [0x73,0x23,0x00,0x04]
520+
# CHECK-INST-ALIAS: csrr t1, uscratch
521+
# uimm12
522+
# CHECK-INST: csrrs t2, uscratch, zero
523+
# CHECK-ENC: encoding: [0xf3,0x23,0x00,0x04]
524+
# CHECK-INST-ALIAS: csrr t2, uscratch
525+
# name
526+
csrrs t1, uscratch, zero
527+
# uimm12
528+
csrrs t2, 0x040, zero
529+
530+
# uepc
531+
# name
532+
# CHECK-INST: csrrs t1, uepc, zero
533+
# CHECK-ENC: encoding: [0x73,0x23,0x10,0x04]
534+
# CHECK-INST-ALIAS: csrr t1, uepc
535+
# uimm12
536+
# CHECK-INST: csrrs t2, uepc, zero
537+
# CHECK-ENC: encoding: [0xf3,0x23,0x10,0x04]
538+
# CHECK-INST-ALIAS: csrr t2, uepc
539+
# name
540+
csrrs t1, uepc, zero
541+
# uimm12
542+
csrrs t2, 0x041, zero
543+
544+
# ucause
545+
# name
546+
# CHECK-INST: csrrs t1, ucause, zero
547+
# CHECK-ENC: encoding: [0x73,0x23,0x20,0x04]
548+
# CHECK-INST-ALIAS: csrr t1, ucause
549+
# uimm12
550+
# CHECK-INST: csrrs t2, ucause, zero
551+
# CHECK-ENC: encoding: [0xf3,0x23,0x20,0x04]
552+
# CHECK-INST-ALIAS: csrr t2, ucause
553+
# name
554+
csrrs t1, ucause, zero
555+
# uimm12
556+
csrrs t2, 0x042, zero
557+
558+
# utval
559+
# name
560+
# CHECK-INST: csrrs t1, utval, zero
561+
# CHECK-ENC: encoding: [0x73,0x23,0x30,0x04]
562+
# CHECK-INST-ALIAS: csrr t1, utval
563+
# uimm12
564+
# CHECK-INST: csrrs t2, utval, zero
565+
# CHECK-ENC: encoding: [0xf3,0x23,0x30,0x04]
566+
# CHECK-INST-ALIAS: csrr t2, utval
567+
# name
568+
csrrs t1, utval, zero
569+
# uimm12
570+
csrrs t2, 0x043, zero
571+
572+
# uip
573+
# name
574+
# CHECK-INST: csrrs t1, uip, zero
575+
# CHECK-ENC: encoding: [0x73,0x23,0x40,0x04]
576+
# CHECK-INST-ALIAS: csrr t1, uip
577+
# uimm12
578+
# CHECK-INST: csrrs t2, uip, zero
579+
# CHECK-ENC: encoding: [0xf3,0x23,0x40,0x04]
580+
# CHECK-INST-ALIAS: csrr t2, uip
581+
# name
582+
csrrs t1, uip, zero
583+
# uimm12
584+
csrrs t2, 0x044, zero

0 commit comments

Comments
 (0)