22# RUN: | FileCheck -check-prefixes=CHECK-ASM,CHECK-ASM-AND -OBJ %s
33# RUN: llvm-mc -filetype=obj -triple=riscv32 < %s \
44# RUN: | llvm-objdump -M no-aliases --no-print-imm-hex -d -r - \
5- # RUN: | FileCheck -check-prefixes=CHECK-ASM-AND -OBJ %s
5+ # RUN: | FileCheck -check-prefixes=CHECK-OBJ,CHECK- ASM-AND -OBJ %s
66
77# CHECK-ASM-AND -OBJ: addi a0 , a1 , -1
88# CHECK-ASM: encoding: [0x13,0x85,0xf5,0xff]
@@ -16,3 +16,46 @@ lw a1, 0xfffff9ab(a2)
1616# CHECK-ASM-AND -OBJ: sw a1 , -8 (a2 )
1717# CHECK-ASM: encoding: [0x23,0x2c,0xb6,0xfe]
1818sw a1 , 0xfffffff8(a2 )
19+
20+ ## Branch and Jump immediates are relative but printed as their absolute address
21+ ## when disassembling.
22+
23+ # CHECK-ASM: beq t0 , t1, -4096
24+ # CHECK-ASM: encoding: [0x63,0x80,0x62,0x80]
25+ # CHECK-OBJ: beq t0 , t1, 0xfffff010
26+ beq t0, t1, 0xfffff000
27+
28+ # CHECK-ASM: bne t1 , t2, -4082
29+ # CHECK-ASM: encoding: [0x63,0x17,0x73,0x80]
30+ # CHECK-OBJ: bne t1 , t2, 0xfffff022
31+ bne t1, t2, 0xfffff00e
32+
33+ # CHECK-ASM: beq t2 , zero, -3550
34+ # CHECK-ASM: encoding: [0x63,0x81,0x03,0xa2]
35+ # CHECK-OBJ: beq t2 , zero, 0xfffff23a
36+ beqz t2, 0xfffff222
37+
38+ # CHECK-ASM: .insn b 99 , 0 , a0 , a1 , -3004
39+ # CHECK-ASM: encoding: [0x63,0x02,0xb5,0xc4]
40+ # CHECK-OBJ: beq a0 , a1 , 0xfffff460
41+ .insn b BRANCH, 0 , a0 , a1 , 0xfffff444
42+
43+ # CHECK-ASM: jal ra, -2458
44+ # CHECK-ASM: encoding: [0xef,0xf0,0x6f,0xe6]
45+ # CHECK-OBJ: jal ra, 0xfffff686
46+ jal ra, 0xfffff666
47+
48+ # CHECK-ASM: jal ra, -1912
49+ # CHECK-ASM: encoding: [0xef,0xf0,0x9f,0x88]
50+ # CHECK-OBJ: jal ra, 0xfffff8ac
51+ jal 0xfffff888
52+
53+ # CHECK-ASM: jal zero, -1366
54+ # CHECK-ASM: encoding: [0x6f,0xf0,0xbf,0xaa]
55+ # CHECK-OBJ: jal zero, 0xfffffad2
56+ j 0xfffffaaa
57+
58+ # CHECK-ASM: .insn j 111 , a0 , -820
59+ # CHECK-ASM: encoding: [0x6f,0x65,0xe6,0xff]
60+ # CHECK-OBJ: jal a0 , 0xfff6682a
61+ .insn j JAL, a0 , 0xfffffccc
0 commit comments