Fix atomic test_and_set and clear
[tinycc.git] / riscv64-tok.h
blob48a50a0c15f4c1be8663baf6988a7c2ed1741496
1 /* ------------------------------------------------------------------ */
2 /* WARNING: relative order of tokens is important. */
4 // See https://riscv.org/wp-content/uploads/2017/05/riscv-spec-v2.2.pdf
6 /* register */
8 DEF_ASM(x0)
9 DEF_ASM(x1)
10 DEF_ASM(x2)
11 DEF_ASM(x3)
12 DEF_ASM(x4)
13 DEF_ASM(x5)
14 DEF_ASM(x6)
15 DEF_ASM(x7)
16 DEF_ASM(x8)
17 DEF_ASM(x9)
18 DEF_ASM(x10)
19 DEF_ASM(x11)
20 DEF_ASM(x12)
21 DEF_ASM(x13)
22 DEF_ASM(x14)
23 DEF_ASM(x15)
24 DEF_ASM(x16)
25 DEF_ASM(x17)
26 DEF_ASM(x18)
27 DEF_ASM(x19)
28 DEF_ASM(x20)
29 DEF_ASM(x21)
30 DEF_ASM(x22)
31 DEF_ASM(x23)
32 DEF_ASM(x24)
33 DEF_ASM(x25)
34 DEF_ASM(x26)
35 DEF_ASM(x27)
36 DEF_ASM(x28)
37 DEF_ASM(x29)
38 DEF_ASM(x30)
39 DEF_ASM(x31)
41 /* register macros */
43 DEF_ASM(zero)
44 DEF_ASM(ra)
45 DEF_ASM(sp)
46 DEF_ASM(gp)
47 DEF_ASM(tp)
48 DEF_ASM(t0)
49 DEF_ASM(t1)
50 DEF_ASM(t2)
51 DEF_ASM(fp)
52 DEF_ASM(s1)
53 DEF_ASM(a0)
54 DEF_ASM(a1)
55 DEF_ASM(a2)
56 DEF_ASM(a3)
57 DEF_ASM(a4)
58 DEF_ASM(a5)
59 DEF_ASM(a6)
60 DEF_ASM(a7)
61 DEF_ASM(s2)
62 DEF_ASM(s3)
63 DEF_ASM(s4)
64 DEF_ASM(s5)
65 DEF_ASM(s6)
66 DEF_ASM(s7)
67 DEF_ASM(s8)
68 DEF_ASM(s9)
69 DEF_ASM(s10)
70 DEF_ASM(s11)
71 DEF_ASM(t3)
72 DEF_ASM(t4)
73 DEF_ASM(t5)
74 DEF_ASM(t6)
76 DEF_ASM(s0) // = x8
78 DEF_ASM(pc)
80 #define DEF_ASM_WITH_SUFFIX(x, y) \
81 DEF(TOK_ASM_ ## x ## _ ## y, #x #y)
83 /* Loads */
85 DEF_ASM(lb)
86 DEF_ASM(lh)
87 DEF_ASM(lw)
88 DEF_ASM(lbu)
89 DEF_ASM(lhu)
90 DEF_ASM(ld)
91 DEF_ASM(lq)
92 DEF_ASM(lwu)
93 DEF_ASM(ldu)
95 /* Stores */
97 DEF_ASM(sb)
98 DEF_ASM(sh)
99 DEF_ASM(sw)
100 DEF_ASM(sd)
101 DEF_ASM(sq)
103 /* Shifts */
105 DEF_ASM(sll)
106 DEF_ASM(slli)
107 DEF_ASM(srl)
108 DEF_ASM(srli)
109 DEF_ASM(sra)
110 DEF_ASM(srai)
112 DEF_ASM(sllw)
113 DEF_ASM(slld)
114 DEF_ASM(slliw)
115 DEF_ASM(sllid)
116 DEF_ASM(srlw)
117 DEF_ASM(srld)
118 DEF_ASM(srliw)
119 DEF_ASM(srlid)
120 DEF_ASM(sraw)
121 DEF_ASM(srad)
122 DEF_ASM(sraiw)
123 DEF_ASM(sraid)
125 /* Arithmetic */
127 DEF_ASM(add)
128 DEF_ASM(addi)
129 DEF_ASM(sub)
130 DEF_ASM(lui)
131 DEF_ASM(auipc)
133 DEF_ASM(addw)
134 DEF_ASM(addd)
135 DEF_ASM(addiw)
136 DEF_ASM(addid)
137 DEF_ASM(subw)
138 DEF_ASM(subd)
140 /* Logical */
142 DEF_ASM(xor)
143 DEF_ASM(xori)
144 DEF_ASM(or)
145 DEF_ASM(ori)
146 DEF_ASM(and)
147 DEF_ASM(andi)
149 /* Compare */
151 DEF_ASM(slt)
152 DEF_ASM(slti)
153 DEF_ASM(sltu)
154 DEF_ASM(sltiu)
156 /* Branch */
158 DEF_ASM(beq)
159 DEF_ASM(bne)
160 DEF_ASM(blt)
161 DEF_ASM(bge)
162 DEF_ASM(bltu)
163 DEF_ASM(bgeu)
165 /* Sync */
167 DEF_ASM(fence)
168 DEF_ASM_WITH_SUFFIX(fence, i)
170 /* System call */
172 DEF_ASM(scall)
173 DEF_ASM(sbreak)
175 /* Counters */
177 DEF_ASM(rdcycle)
178 DEF_ASM(rdcycleh)
179 DEF_ASM(rdtime)
180 DEF_ASM(rdtimeh)
181 DEF_ASM(rdinstret)
182 DEF_ASM(rdinstreth)
184 /* Privileged Instructions */
186 DEF_ASM(ecall)
187 DEF_ASM(ebreak)
189 DEF_ASM(mrts)
190 DEF_ASM(mrth)
191 DEF_ASM(hrts)
192 DEF_ASM(wfi)