1;; Partially auto generated using https://github.com/nmeum/riscv-opcodes
2
3(define (get-value sym alist)
4 (let ((val (assoc sym alist)))
5 (if val (cdr val) val)))
6
7(define (get-opcode instr-symbol)
8 (get-value instr-symbol OPCODES))
9
10(define (get-funct3 instr-symbol)
11 (get-value instr-symbol FUNCT3))
12
13(define (get-funct7 instr-symbol)
14 (get-value instr-symbol FUNCT7))
15
16(define OPCODES '(
17 (BEQ . #x63)
18 (BNE . #x63)
19 (BLT . #x63)
20 (BGE . #x63)
21 (BLTU . #x63)
22 (BGEU . #x63)
23 (JALR . #x67)
24 (JAL . #x6f)
25 (LUI . #x37)
26 (AUIPC . #x17)
27 (ADDI . #x13)
28 (SLLI . #x13)
29 (SLTI . #x13)
30 (SLTIU . #x13)
31 (XORI . #x13)
32 (SRLI . #x13)
33 (SRAI . #x13)
34 (ORI . #x13)
35 (ANDI . #x13)
36 (ADD . #x33)
37 (SUB . #x33)
38 (SLL . #x33)
39 (SLT . #x33)
40 (SLTU . #x33)
41 (XOR . #x33)
42 (SRL . #x33)
43 (SRA . #x33)
44 (OR . #x33)
45 (AND . #x33)
46 (LB . #x3)
47 (LH . #x3)
48 (LW . #x3)
49 (LBU . #x3)
50 (LHU . #x3)
51 (SB . #x23)
52 (SH . #x23)
53 (SW . #x23)
54 (FENCE . #xf)
55 (FENCE.I . #xf)
56))
57
58(define FUNCT3 '(
59 (BEQ . #x0)
60 (BNE . #x1)
61 (BLT . #x4)
62 (BGE . #x5)
63 (BLTU . #x6)
64 (BGEU . #x7)
65 (JALR . #x0)
66 (JAL . #x0)
67 (LUI . #x0)
68 (AUIPC . #x0)
69 (ADDI . #x0)
70 (SLLI . #x1)
71 (SLTI . #x2)
72 (SLTIU . #x3)
73 (XORI . #x4)
74 (SRLI . #x5)
75 (SRAI . #x5)
76 (ORI . #x6)
77 (ANDI . #x7)
78 (ADD . #x0)
79 (SUB . #x0)
80 (SLL . #x1)
81 (SLT . #x2)
82 (SLTU . #x3)
83 (XOR . #x4)
84 (SRL . #x5)
85 (SRA . #x5)
86 (OR . #x6)
87 (AND . #x7)
88 (LB . #x0)
89 (LH . #x1)
90 (LW . #x2)
91 (LBU . #x4)
92 (LHU . #x5)
93 (SB . #x0)
94 (SH . #x1)
95 (SW . #x2)
96 (FENCE . #x0)
97 (FENCE.I . #x1)
98))
99
100(define FUNCT7 '(
101 (BEQ . #x0)
102 (BNE . #x0)
103 (BLT . #x0)
104 (BGE . #x0)
105 (BLTU . #x0)
106 (BGEU . #x0)
107 (JALR . #x0)
108 (JAL . #x0)
109 (LUI . #x0)
110 (AUIPC . #x0)
111 (ADDI . #x0)
112 (SLLI . #x0)
113 (SLTI . #x0)
114 (SLTIU . #x0)
115 (XORI . #x0)
116 (SRLI . #x0)
117 (SRAI . #x20)
118 (ORI . #x0)
119 (ANDI . #x0)
120 (ADD . #x0)
121 (SUB . #x20)
122 (SLL . #x0)
123 (SLT . #x0)
124 (SLTU . #x0)
125 (XOR . #x0)
126 (SRL . #x0)
127 (SRA . #x20)
128 (OR . #x0)
129 (AND . #x0)
130 (LB . #x0)
131 (LH . #x0)
132 (LW . #x0)
133 (LBU . #x0)
134 (LHU . #x0)
135 (SB . #x0)
136 (SH . #x0)
137 (SW . #x0)
138 (FENCE . #x0)
139 (FENCE.I . #x0)
140))