riscv-utils

Scheme utility procedures for the RISC-V instruction set architecture

git clone https://git.8pit.net/riscv-utils.git

  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))