mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-24 19:52:54 +01:00
7213248ea3
This patch adds support for UNIMP in both 32- and 16-bit forms. The 32-bit form can be seen as a variant of the ECALL/EBREAK/etc. family of instructions. The 16-bit form is just all zeroes, which isn't a valid RISC-V instruction, but still follows the 16-bit instruction form (i.e. bits 0-1 != 11). Until recently unimp was undocumented and supported just by binutils, which printed unimp for either the 16 or 32-bit form. Both forms are now documented <https://github.com/riscv/riscv-asm-manual/pull/20> and binutils now supports c.unimp <https://sourceware.org/ml/binutils-cvs/2018-11/msg00179.html>. Differential Revision: https://reviews.llvm.org/D54316 Patch by Luís Marques. llvm-svn: 347988
109 lines
3.3 KiB
ArmAsm
109 lines
3.3 KiB
ArmAsm
# RUN: llvm-mc %s -triple=riscv32 -mattr=+c -riscv-no-aliases -show-encoding \
|
|
# RUN: | FileCheck -check-prefixes=CHECK-ASM,CHECK-ASM-AND-OBJ %s
|
|
# RUN: llvm-mc -filetype=obj -triple=riscv32 -mattr=+c < %s \
|
|
# RUN: | llvm-objdump -mattr=+c -riscv-no-aliases -d -r - \
|
|
# RUN: | FileCheck -check-prefixes=CHECK-OBJ,CHECK-ASM-AND-OBJ %s
|
|
# RUN: llvm-mc %s -triple=riscv64 -mattr=+c -riscv-no-aliases -show-encoding \
|
|
# RUN: | FileCheck -check-prefixes=CHECK-ASM,CHECK-ASM-AND-OBJ %s
|
|
# RUN: llvm-mc -filetype=obj -triple=riscv64 -mattr=+c < %s \
|
|
# RUN: | llvm-objdump -mattr=+c -riscv-no-aliases -d -r - \
|
|
# RUN: | FileCheck -check-prefixes=CHECK-OBJ,CHECK-ASM-AND-OBJ %s
|
|
|
|
# TODO: more exhaustive testing of immediate encoding.
|
|
|
|
# CHECK-ASM-AND-OBJ: c.lwsp ra, 0(sp)
|
|
# CHECK-ASM: encoding: [0x82,0x40]
|
|
c.lwsp ra, 0(sp)
|
|
# CHECK-ASM-AND-OBJ: c.swsp ra, 252(sp)
|
|
# CHECK-ASM: encoding: [0x86,0xdf]
|
|
c.swsp ra, 252(sp)
|
|
# CHECK-ASM-AND-OBJ: c.lw a2, 0(a0)
|
|
# CHECK-ASM: encoding: [0x10,0x41]
|
|
c.lw a2, 0(a0)
|
|
# CHECK-ASM-AND-OBJ: c.sw a5, 124(a3)
|
|
# CHECK-ASM: encoding: [0xfc,0xde]
|
|
c.sw a5, 124(a3)
|
|
|
|
# CHECK-ASM-AND-OBJ: c.j -2048
|
|
# CHECK-ASM: encoding: [0x01,0xb0]
|
|
c.j -2048
|
|
# CHECK-ASM-AND-OBJ: c.jr a7
|
|
# CHECK-ASM: encoding: [0x82,0x88]
|
|
c.jr a7
|
|
# CHECK-ASM-AND-OBJ: c.jalr a1
|
|
# CHECK-ASM: encoding: [0x82,0x95]
|
|
c.jalr a1
|
|
# CHECK-ASM-AND-OBJ: c.beqz a3, -256
|
|
# CHECK-ASM: encoding: [0x81,0xd2]
|
|
c.beqz a3, -256
|
|
# CHECK-ASM-AND-OBJ: c.bnez a5, 254
|
|
# CHECK-ASM: encoding: [0xfd,0xef]
|
|
c.bnez a5, 254
|
|
|
|
# CHECK-ASM-AND-OBJ: c.li a7, 31
|
|
# CHECK-ASM: encoding: [0xfd,0x48]
|
|
c.li a7, 31
|
|
# CHECK-ASM-AND-OBJ: c.addi a3, -32
|
|
# CHECK-ASM: encoding: [0x81,0x16]
|
|
c.addi a3, -32
|
|
# CHECK-ASM-AND-OBJ: c.addi16sp sp, -512
|
|
# CHECK-ASM: encoding: [0x01,0x71]
|
|
c.addi16sp sp, -512
|
|
# CHECK-ASM-AND-OBJ: c.addi16sp sp, 496
|
|
# CHECK-ASM: encoding: [0x7d,0x61]
|
|
c.addi16sp sp, 496
|
|
# CHECK-ASM-AND-OBJ: c.addi4spn a3, sp, 1020
|
|
# CHECK-ASM: encoding: [0xf4,0x1f]
|
|
c.addi4spn a3, sp, 1020
|
|
# CHECK-ASM-AND-OBJ: c.addi4spn a3, sp, 4
|
|
# CHECK-ASM: encoding: [0x54,0x00]
|
|
c.addi4spn a3, sp, 4
|
|
# CHECK-ASM-AND-OBJ: c.slli a1, 1
|
|
# CHECK-ASM: encoding: [0x86,0x05]
|
|
c.slli a1, 1
|
|
# CHECK-ASM-AND-OBJ: c.srli a3, 31
|
|
# CHECK-ASM: encoding: [0xfd,0x82]
|
|
c.srli a3, 31
|
|
# CHECK-ASM-AND-OBJ: c.srai a4, 2
|
|
# CHECK-ASM: encoding: [0x09,0x87]
|
|
c.srai a4, 2
|
|
# CHECK-ASM-AND-OBJ: c.andi a5, 15
|
|
# CHECK-ASM: encoding: [0xbd,0x8b]
|
|
c.andi a5, 15
|
|
# CHECK-ASM-AND-OBJ: c.mv a7, s0
|
|
# CHECK-ASM: encoding: [0xa2,0x88]
|
|
c.mv a7, s0
|
|
# CHECK-ASM-AND-OBJ: c.and a1, a2
|
|
# CHECK-ASM: encoding: [0xf1,0x8d]
|
|
c.and a1, a2
|
|
# CHECK-ASM-AND-OBJ: c.or a2, a3
|
|
# CHECK-ASM: encoding: [0x55,0x8e]
|
|
c.or a2, a3
|
|
# CHECK-ASM-AND-OBJ: c.xor a3, a4
|
|
# CHECK-ASM: encoding: [0xb9,0x8e]
|
|
c.xor a3, a4
|
|
# CHECK-ASM-AND-OBJ: c.sub a4, a5
|
|
# CHECK-ASM: encoding: [0x1d,0x8f]
|
|
c.sub a4, a5
|
|
# CHECK-ASM-AND-OBJ: c.nop
|
|
# CHECK-ASM: encoding: [0x01,0x00]
|
|
c.nop
|
|
# CHECK-ASM-AND-OBJ: c.ebreak
|
|
# CHECK-ASM: encoding: [0x02,0x90]
|
|
c.ebreak
|
|
# CHECK-ASM-AND-OBJ: c.lui s0, 1
|
|
# CHECK-ASM: encoding: [0x05,0x64]
|
|
c.lui s0, 1
|
|
# CHECK-ASM-AND-OBJ: c.lui s0, 31
|
|
# CHECK-ASM: encoding: [0x7d,0x64]
|
|
c.lui s0, 31
|
|
# CHECK-ASM-AND-OBJ: c.lui s0, 1048544
|
|
# CHECK-ASM: encoding: [0x01,0x74]
|
|
c.lui s0, 0xfffe0
|
|
# CHECK-ASM-AND-OBJ: c.lui s0, 1048575
|
|
# CHECK-ASM: encoding: [0x7d,0x74]
|
|
c.lui s0, 0xfffff
|
|
# CHECK-ASM-AND-OBJ: c.unimp
|
|
# CHECK-ASM: encoding: [0x00,0x00]
|
|
c.unimp
|