353 lines
8.5 KiB
ArmAsm
353 lines
8.5 KiB
ArmAsm
# RUN: llvm-mc %s -triple=riscv32 -riscv-no-aliases -show-encoding \
|
|
# RUN: | FileCheck -check-prefixes=CHECK-INST,CHECK-ENC %s
|
|
# RUN: llvm-mc -filetype=obj -triple riscv32 < %s \
|
|
# RUN: | llvm-objdump -d - \
|
|
# RUN: | FileCheck -check-prefix=CHECK-INST-ALIAS %s
|
|
#
|
|
# RUN: llvm-mc %s -triple=riscv64 -riscv-no-aliases -show-encoding \
|
|
# RUN: | FileCheck -check-prefixes=CHECK-INST,CHECK-ENC %s
|
|
# RUN: llvm-mc -filetype=obj -triple riscv64 < %s \
|
|
# RUN: | llvm-objdump -d - \
|
|
# RUN: | FileCheck -check-prefix=CHECK-INST-ALIAS %s
|
|
|
|
##################################
|
|
# Supervisor Trap Setup
|
|
##################################
|
|
|
|
# sstatus
|
|
# name
|
|
# CHECK-INST: csrrs t1, sstatus, zero
|
|
# CHECK-ENC: encoding: [0x73,0x23,0x00,0x10]
|
|
# CHECK-INST-ALIAS: csrr t1, sstatus
|
|
# uimm12
|
|
# CHECK-INST: csrrs t2, sstatus, zero
|
|
# CHECK-ENC: encoding: [0xf3,0x23,0x00,0x10]
|
|
# CHECK-INST-ALIAS: csrr t2, sstatus
|
|
# name
|
|
csrrs t1, sstatus, zero
|
|
# uimm12
|
|
csrrs t2, 0x100, zero
|
|
|
|
# sie
|
|
# name
|
|
# CHECK-INST: csrrs t1, sie, zero
|
|
# CHECK-ENC: [0x73,0x23,0x40,0x10]
|
|
# CHECK-INST-ALIAS: csrr t1, sie
|
|
# uimm12
|
|
# CHECK-INST: csrrs t2, sie, zero
|
|
# CHECK-ENC: encoding: [0xf3,0x23,0x40,0x10]
|
|
# CHECK-INST-ALIAS: csrr t2, sie
|
|
# name
|
|
csrrs t1, sie, zero
|
|
# uimm12
|
|
csrrs t2, 0x104, zero
|
|
|
|
# stvec
|
|
# name
|
|
# CHECK-INST: csrrs t1, stvec, zero
|
|
# CHECK-ENC: encoding: [0x73,0x23,0x50,0x10]
|
|
# CHECK-INST-ALIAS: csrr t1, stvec
|
|
# uimm12
|
|
# CHECK-INST: csrrs t2, stvec, zero
|
|
# CHECK-ENC: encoding: [0xf3,0x23,0x50,0x10]
|
|
# CHECK-INST-ALIAS: csrr t2, stvec
|
|
# name
|
|
csrrs t1, stvec, zero
|
|
# uimm12
|
|
csrrs t2, 0x105, zero
|
|
|
|
# scounteren
|
|
# name
|
|
# CHECK-INST: csrrs t1, scounteren, zero
|
|
# CHECK-ENC: encoding: [0x73,0x23,0x60,0x10]
|
|
# CHECK-INST-ALIAS: csrr t1, scounteren
|
|
# uimm12
|
|
# CHECK-INST: csrrs t2, scounteren, zero
|
|
# CHECK-ENC: encoding: [0xf3,0x23,0x60,0x10]
|
|
# CHECK-INST-ALIAS: csrr t2, scounteren
|
|
# name
|
|
csrrs t1, scounteren, zero
|
|
# uimm12
|
|
csrrs t2, 0x106, zero
|
|
|
|
# stimecmp
|
|
# name
|
|
# CHECK-INST: csrrs t1, stimecmp, zero
|
|
# CHECK-ENC: encoding: [0x73,0x23,0xd0,0x14]
|
|
# CHECK-INST-ALIAS: csrr t1, stimecmp
|
|
# uimm12
|
|
# CHECK-INST: csrrs t2, stimecmp, zero
|
|
# CHECK-ENC: encoding: [0xf3,0x23,0xd0,0x14]
|
|
# CHECK-INST-ALIAS: csrr t2, stimecmp
|
|
# name
|
|
csrrs t1, stimecmp, zero
|
|
# uimm12
|
|
csrrs t2, 0x14D, zero
|
|
|
|
##################################
|
|
# Supervisor Configuration
|
|
##################################
|
|
|
|
# senvcfg
|
|
# name
|
|
# CHECK-INST: csrrs t1, senvcfg, zero
|
|
# CHECK-ENC: encoding: [0x73,0x23,0xa0,0x10]
|
|
# CHECK-INST-ALIAS: csrr t1, senvcfg
|
|
# uimm12
|
|
# CHECK-INST: csrrs t2, senvcfg, zero
|
|
# CHECK-ENC: encoding: [0xf3,0x23,0xa0,0x10]
|
|
# CHECK-INST-ALIAS: csrr t2, senvcfg
|
|
# name
|
|
csrrs t1, senvcfg, zero
|
|
# uimm12
|
|
csrrs t2, 0x10A, zero
|
|
|
|
##################################
|
|
# Supervisor Trap Handling
|
|
##################################
|
|
|
|
# sscratch
|
|
# name
|
|
# CHECK-INST: csrrs t1, sscratch, zero
|
|
# CHECK-ENC: encoding: [0x73,0x23,0x00,0x14]
|
|
# CHECK-INST-ALIAS: csrr t1, sscratch
|
|
# uimm12
|
|
# CHECK-INST: csrrs t2, sscratch, zero
|
|
# CHECK-ENC: encoding: [0xf3,0x23,0x00,0x14]
|
|
# CHECK-INST-ALIAS: csrr t2, sscratch
|
|
# name
|
|
csrrs t1, sscratch, zero
|
|
# uimm12
|
|
csrrs t2, 0x140, zero
|
|
|
|
# sepc
|
|
# name
|
|
# CHECK-INST: csrrs t1, sepc, zero
|
|
# CHECK-ENC: encoding: [0x73,0x23,0x10,0x14]
|
|
# CHECK-INST-ALIAS: csrr t1, sepc
|
|
# uimm12
|
|
# CHECK-INST: csrrs t2, sepc, zero
|
|
# CHECK-ENC: encoding: [0xf3,0x23,0x10,0x14]
|
|
# CHECK-INST-ALIAS: csrr t2, sepc
|
|
# name
|
|
csrrs t1, sepc, zero
|
|
# uimm12
|
|
csrrs t2, 0x141, zero
|
|
|
|
# scause
|
|
# name
|
|
# CHECK-INST: csrrs t1, scause, zero
|
|
# CHECK-ENC: encoding: [0x73,0x23,0x20,0x14]
|
|
# CHECK-INST-ALIAS: csrr t1, scause
|
|
# uimm12
|
|
# CHECK-INST: csrrs t2, scause, zero
|
|
# CHECK-ENC: encoding: [0xf3,0x23,0x20,0x14]
|
|
# CHECK-INST-ALIAS: csrr t2, scause
|
|
# name
|
|
csrrs t1, scause, zero
|
|
# uimm12
|
|
csrrs t2, 0x142, zero
|
|
|
|
# stval
|
|
# name
|
|
# CHECK-INST: csrrs t1, stval, zero
|
|
# CHECK-ENC: encoding: [0x73,0x23,0x30,0x14]
|
|
# CHECK-INST-ALIAS: csrr t1, stval
|
|
# uimm12
|
|
# CHECK-INST: csrrs t2, stval, zero
|
|
# CHECK-ENC: encoding: [0xf3,0x23,0x30,0x14]
|
|
# CHECK-INST-ALIAS: csrr t2, stval
|
|
# aliases
|
|
# aliases with uimm12
|
|
# name
|
|
csrrs t1, stval, zero
|
|
# uimm12
|
|
csrrs t2, 0x143, zero
|
|
|
|
# sip
|
|
# name
|
|
# CHECK-INST: csrrs t1, sip, zero
|
|
# CHECK-ENC: encoding: [0x73,0x23,0x40,0x14]
|
|
# CHECK-INST-ALIAS: csrr t1, sip
|
|
# uimm12
|
|
# CHECK-INST: csrrs t2, sip, zero
|
|
# CHECK-ENC: encoding: [0xf3,0x23,0x40,0x14]
|
|
# CHECK-INST-ALIAS: csrr t2, sip
|
|
csrrs t1, sip, zero
|
|
# uimm12
|
|
csrrs t2, 0x144, zero
|
|
|
|
|
|
#########################################
|
|
# Supervisor Protection and Translation
|
|
#########################################
|
|
|
|
# satp
|
|
# name
|
|
# CHECK-INST: csrrs t1, satp, zero
|
|
# CHECK-ENC: encoding: [0x73,0x23,0x00,0x18]
|
|
# CHECK-INST-ALIAS: csrr t1, satp
|
|
# uimm12
|
|
# CHECK-INST: csrrs t2, satp, zero
|
|
# CHECK-ENC: encoding: [0xf3,0x23,0x00,0x18]
|
|
# CHECK-INST-ALIAS: csrr t2, satp
|
|
# name
|
|
csrrs t1, satp, zero
|
|
# uimm12
|
|
csrrs t2, 0x180, zero
|
|
|
|
#########################################
|
|
# Debug/Trace Registers
|
|
#########################################
|
|
|
|
# scontext
|
|
# name
|
|
# CHECK-INST: csrrs t1, scontext, zero
|
|
# CHECK-ENC: encoding: [0x73,0x23,0x80,0x5a]
|
|
# CHECK-INST-ALIAS: csrr t1, scontext
|
|
# uimm12
|
|
# CHECK-INST: csrrs t2, scontext, zero
|
|
# CHECK-ENC: encoding: [0xf3,0x23,0x80,0x5a]
|
|
# CHECK-INST-ALIAS: csrr t2, scontext
|
|
# name
|
|
csrrs t1, scontext, zero
|
|
# uimm12
|
|
csrrs t2, 0x5A8, zero
|
|
|
|
#########################################
|
|
# Supervisor Count Overflow (Sscofpmf)
|
|
#########################################
|
|
|
|
# scountovf
|
|
# name
|
|
# CHECK-INST: csrrs t1, scountovf, zero
|
|
# CHECK-ENC: encoding: [0x73,0x23,0x00,0xda]
|
|
# CHECK-INST-ALIAS: csrr t1, scountovf
|
|
# uimm12
|
|
# CHECK-INST: csrrs t2, scountovf, zero
|
|
# CHECK-ENC: encoding: [0xf3,0x23,0x00,0xda]
|
|
# CHECK-INST-ALIAS: csrr t2, scountovf
|
|
# name
|
|
csrrs t1, scountovf, zero
|
|
# uimm12
|
|
csrrs t2, 0xDA0, zero
|
|
|
|
#########################################
|
|
# State Enable Extension (Smstateen)
|
|
#########################################
|
|
|
|
# sstateen0
|
|
# name
|
|
# CHECK-INST: csrrs t1, sstateen0, zero
|
|
# CHECK-ENC: encoding: [0x73,0x23,0xc0,0x10]
|
|
# CHECK-INST-ALIAS: csrr t1, sstateen0
|
|
# uimm12
|
|
# CHECK-INST: csrrs t2, sstateen0, zero
|
|
# CHECK-ENC: encoding: [0xf3,0x23,0xc0,0x10]
|
|
# CHECK-INST-ALIAS: csrr t2, sstateen0
|
|
# name
|
|
csrrs t1, sstateen0, zero
|
|
# uimm12
|
|
csrrs t2, 0x10C, zero
|
|
|
|
# sstateen1
|
|
# name
|
|
# CHECK-INST: csrrs t1, sstateen1, zero
|
|
# CHECK-ENC: encoding: [0x73,0x23,0xd0,0x10]
|
|
# CHECK-INST-ALIAS: csrr t1, sstateen1
|
|
# uimm12
|
|
# CHECK-INST: csrrs t2, sstateen1, zero
|
|
# CHECK-ENC: encoding: [0xf3,0x23,0xd0,0x10]
|
|
# CHECK-INST-ALIAS: csrr t2, sstateen1
|
|
# name
|
|
csrrs t1, sstateen1, zero
|
|
# uimm12
|
|
csrrs t2, 0x10D, zero
|
|
|
|
# sstateen2
|
|
# name
|
|
# CHECK-INST: csrrs t1, sstateen2, zero
|
|
# CHECK-ENC: encoding: [0x73,0x23,0xe0,0x10]
|
|
# CHECK-INST-ALIAS: csrr t1, sstateen2
|
|
# uimm12
|
|
# CHECK-INST: csrrs t2, sstateen2, zero
|
|
# CHECK-ENC: encoding: [0xf3,0x23,0xe0,0x10]
|
|
# CHECK-INST-ALIAS: csrr t2, sstateen2
|
|
# name
|
|
csrrs t1, sstateen2, zero
|
|
# uimm12
|
|
csrrs t2, 0x10E, zero
|
|
|
|
# sstateen3
|
|
# name
|
|
# CHECK-INST: csrrs t1, sstateen3, zero
|
|
# CHECK-ENC: encoding: [0x73,0x23,0xf0,0x10]
|
|
# CHECK-INST-ALIAS: csrr t1, sstateen3
|
|
# uimm12
|
|
# CHECK-INST: csrrs t2, sstateen3, zero
|
|
# CHECK-ENC: encoding: [0xf3,0x23,0xf0,0x10]
|
|
# CHECK-INST-ALIAS: csrr t2, sstateen3
|
|
# name
|
|
csrrs t1, sstateen3, zero
|
|
# uimm12
|
|
csrrs t2, 0x10F, zero
|
|
|
|
#########################################
|
|
# Advanced Interrupt Architecture (Smaia and Ssaia)
|
|
#########################################
|
|
|
|
# siselect
|
|
# name
|
|
# CHECK-INST: csrrs t1, siselect, zero
|
|
# CHECK-ENC: encoding: [0x73,0x23,0x00,0x15]
|
|
# CHECK-INST-ALIAS: csrr t1, siselect
|
|
# uimm12
|
|
# CHECK-INST: csrrs t2, siselect, zero
|
|
# CHECK-ENC: encoding: [0xf3,0x23,0x00,0x15]
|
|
# CHECK-INST-ALIAS: csrr t2, siselect
|
|
# name
|
|
csrrs t1, siselect, zero
|
|
# uimm12
|
|
csrrs t2, 0x150, zero
|
|
|
|
# sireg
|
|
# name
|
|
# CHECK-INST: csrrs t1, sireg, zero
|
|
# CHECK-ENC: encoding: [0x73,0x23,0x10,0x15]
|
|
# CHECK-INST-ALIAS: csrr t1, sireg
|
|
# uimm12
|
|
# CHECK-INST: csrrs t2, sireg, zero
|
|
# CHECK-ENC: encoding: [0xf3,0x23,0x10,0x15]
|
|
# CHECK-INST-ALIAS: csrr t2, sireg
|
|
# name
|
|
csrrs t1, sireg, zero
|
|
# uimm12
|
|
csrrs t2, 0x151, zero
|
|
|
|
# stopei
|
|
# name
|
|
# CHECK-INST: csrrs t1, stopei, zero
|
|
# CHECK-ENC: encoding: [0x73,0x23,0xc0,0x15]
|
|
# CHECK-INST-ALIAS: csrr t1, stopei
|
|
# uimm12
|
|
# CHECK-INST: csrrs t2, stopei, zero
|
|
# CHECK-ENC: encoding: [0xf3,0x23,0xc0,0x15]
|
|
# CHECK-INST-ALIAS: csrr t2, stopei
|
|
# name
|
|
csrrs t1, stopei, zero
|
|
# uimm12
|
|
csrrs t2, 0x15C, zero
|
|
|
|
# stopi
|
|
# name
|
|
# CHECK-INST: csrrs t1, stopi, zero
|
|
# CHECK-ENC: encoding: [0x73,0x23,0x00,0xdb]
|
|
# CHECK-INST-ALIAS: csrr t1, stopi
|
|
# uimm12
|
|
# CHECK-INST: csrrs t2, stopi, zero
|
|
# CHECK-ENC: encoding: [0xf3,0x23,0x00,0xdb]
|
|
# CHECK-INST-ALIAS: csrr t2, stopi
|
|
# name
|
|
csrrs t1, stopi, zero
|
|
# uimm12
|
|
csrrs t2, 0xDB0, zero
|