1 /* ------------------------------------------------------------------ */
2 /* WARNING: relative order of tokens is important. */
5 * The specifications are available under https://riscv.org/technical/specifications/
8 #define DEF_ASM_WITH_SUFFIX(x, y) \
9 DEF(TOK_ASM_ ## x ## _ ## y, #x "." #y)
79 /* register ABI mnemonics, refer to RISC-V ABI 1.0 */
229 /* Zifencei extension */
230 DEF_ASM_WITH_SUFFIX(fence
, i
)
234 /* used to be called scall and sbreak */
247 /* “M” Standard Extension for Integer Multiplication and Division, V2.0 */
263 /* "C" Extension for Compressed Instructions, V2.0 */
264 DEF_ASM_WITH_SUFFIX(c
, nop
)
266 DEF_ASM_WITH_SUFFIX(c
, li
)
267 DEF_ASM_WITH_SUFFIX(c
, lw
)
268 DEF_ASM_WITH_SUFFIX(c
, lwsp
)
270 DEF_ASM_WITH_SUFFIX(c
, flw
)
271 DEF_ASM_WITH_SUFFIX(c
, flwsp
)
273 DEF_ASM_WITH_SUFFIX(c
, fld
)
274 DEF_ASM_WITH_SUFFIX(c
, fldsp
)
276 DEF_ASM_WITH_SUFFIX(c
, ld
)
277 DEF_ASM_WITH_SUFFIX(c
, ldsp
)
281 DEF_ASM_WITH_SUFFIX(c
, sw
)
282 DEF_ASM_WITH_SUFFIX(c
, sd
)
283 DEF_ASM_WITH_SUFFIX(c
, swsp
)
284 DEF_ASM_WITH_SUFFIX(c
, sdsp
)
286 DEF_ASM_WITH_SUFFIX(c
, fsw
)
287 DEF_ASM_WITH_SUFFIX(c
, fswsp
)
289 DEF_ASM_WITH_SUFFIX(c
, fsd
)
290 DEF_ASM_WITH_SUFFIX(c
, fsdsp
)
293 DEF_ASM_WITH_SUFFIX(c
, slli
)
294 DEF_ASM_WITH_SUFFIX(c
, srli
)
295 DEF_ASM_WITH_SUFFIX(c
, srai
)
298 DEF_ASM_WITH_SUFFIX(c
, add
)
299 DEF_ASM_WITH_SUFFIX(c
, addi
)
300 DEF_ASM_WITH_SUFFIX(c
, addi16sp
)
301 DEF_ASM_WITH_SUFFIX(c
, addi4spn
)
302 DEF_ASM_WITH_SUFFIX(c
, lui
)
303 DEF_ASM_WITH_SUFFIX(c
, sub
)
304 DEF_ASM_WITH_SUFFIX(c
, mv
)
306 DEF_ASM_WITH_SUFFIX(c
, addw
)
307 DEF_ASM_WITH_SUFFIX(c
, addiw
)
308 DEF_ASM_WITH_SUFFIX(c
, subw
)
311 DEF_ASM_WITH_SUFFIX(c
, xor)
312 DEF_ASM_WITH_SUFFIX(c
, or)
313 DEF_ASM_WITH_SUFFIX(c
, and)
314 DEF_ASM_WITH_SUFFIX(c
, andi
)
317 DEF_ASM_WITH_SUFFIX(c
, beqz
)
318 DEF_ASM_WITH_SUFFIX(c
, bnez
)
321 DEF_ASM_WITH_SUFFIX(c
, j
)
322 DEF_ASM_WITH_SUFFIX(c
, jr
)
323 DEF_ASM_WITH_SUFFIX(c
, jal
)
324 DEF_ASM_WITH_SUFFIX(c
, jalr
)
327 DEF_ASM_WITH_SUFFIX(c
, ebreak
)
329 /* XXX F Extension: Single-Precision Floating Point */
330 /* XXX D Extension: Double-Precision Floating Point */
331 /* from the spec: Tables 16.5–16.7 list the RVC instructions. */
333 /* “Zicsr”, Control and Status Register (CSR) Instructions, V2.0 */
366 /* Privileged Instructions */
373 /* pseudoinstructions */
385 DEF_ASM_WITH_SUFFIX(fabs
, d
)
386 DEF_ASM_WITH_SUFFIX(fabs
, s
)
389 DEF_ASM_WITH_SUFFIX(fmv
, d
)
390 DEF_ASM_WITH_SUFFIX(fmv
, s
)
391 DEF_ASM_WITH_SUFFIX(fneg
, d
)
392 DEF_ASM_WITH_SUFFIX(fneg
, s
)
408 DEF_ASM_WITH_SUFFIX(sext
, w
)
414 #undef DEF_ASM_WITH_SUFFIX