xref: /llvm-project/llvm/test/ExecutionEngine/JITLink/RISCV/ELF_relax_align.s (revision 310473c536dd4837934832d1b5454d212f15d5cc)
1## Test that we can handle R_RISCV_ALIGN.
2
3# RUN: rm -rf %t && mkdir %t && cd %t
4
5# RUN: llvm-mc -filetype=obj -triple=riscv32 -mattr=+relax %s -o %t.rv32
6# RUN: llvm-jitlink -noexec \
7# RUN:     -slab-allocate 100Kb -slab-address 0x0 -slab-page-size 4096 \
8# RUN:     -check %s %t.rv32
9
10# RUN: llvm-mc -filetype=obj -triple=riscv64 -mattr=+relax %s -o %t.rv64
11# RUN: llvm-jitlink -noexec \
12# RUN:     -slab-allocate 100Kb -slab-address 0x0 -slab-page-size 4096 \
13# RUN:     -check %s %t.rv64
14
15    .globl main,align4,align8,align16,align32
16    .size align4, 1
17    .size align8, 1
18    .size align16, 1
19    .size align32, 1
20main:
21    call f
22    .balign 4
23align4:
24    call f
25    .balign 8
26align8:
27    call f
28    .balign 16
29align16:
30    call f
31    .balign 32
32align32:
33    call f
34    .size main, .-main
35
36    .globl f
37f:
38    ret
39    .size f, .-f
40
41# jitlink-check: main = 0x0
42# jitlink-check: align4 = 0x4
43# jitlink-check: align8 = 0x8
44# jitlink-check: align16 = 0x10
45# jitlink-check: align32 = 0x20
46
47## main: jal f
48# jitlink-check: (*{4}(main))[11:0] = 0xef
49# jitlink-check: decode_operand(main, 1) = (f - main)
50
51## align 4: jal f
52# jitlink-check: (*{4}(align4))[11:0] = 0xef
53# jitlink-check: decode_operand(align4, 1) = (f - align4)
54
55## align8: jal f; nop
56# jitlink-check: (*{4}(align8))[11:0] = 0xef
57# jitlink-check: decode_operand(align8, 1) = (f - align8)
58# jitlink-check: (*{4}(align8+4)) = 0x13
59
60## align16: jal f; nop; nop; nop
61# jitlink-check: (*{4}(align16))[11:0] = 0xef
62# jitlink-check: decode_operand(align16, 1) = (f - align16)
63# jitlink-check: (*{4}(align16+4)) = 0x13
64# jitlink-check: (*{4}(align16+8)) = 0x13
65# jitlink-check: (*{4}(align16+12)) = 0x13
66
67## align32: jal f
68# jitlink-check: (*{4}(align32))[11:0] = 0xef
69# jitlink-check: decode_operand(align32, 1) = (f - align32)
70