xref: /llvm-project/llvm/test/MC/RISCV/long-conditional-jump.s (revision 856745c5ebe5e3da35c4f08bc6090e2d348ea048)
1# RUN: llvm-mc -filetype=obj -triple=riscv64 %s \
2# RUN:     | llvm-objdump -d -M no-aliases - \
3# RUN:     | FileCheck --check-prefix=CHECK-INST %s
4# RUN: llvm-mc -filetype=obj -triple=riscv64 -mattr=+c %s \
5# RUN:     | llvm-objdump -d -M no-aliases - \
6# RUN:     | FileCheck --check-prefix=CHECK-INST-C %s
7# RUN: llvm-mc -filetype=obj -triple=riscv64 -mattr=+relax %s \
8# RUN:     | llvm-objdump -dr -M no-aliases - \
9# RUN:     | FileCheck --check-prefix=CHECK-INST-RELAX %s
10# RUN: llvm-mc -filetype=obj -triple=riscv64 -mattr=+c,+relax %s \
11# RUN:     | llvm-objdump -dr -M no-aliases - \
12# RUN:     | FileCheck --check-prefix=CHECK-INST-C-RELAX %s
13
14       .text
15       .type   test,@function
16test:
17# CHECK-INST:         beq     a0, a1, 0x8
18# CHECK-INST-NEXT:    jal     zero, 0x1458
19# CHECK-INST-C:       beq     a0, a1, 0x8
20# CHECK-INST-C-NEXT:  jal     zero, 0x1458
21# CHECK-INST-RELAX:         beq     a0, a1, 0x8
22# CHECK-INST-RELAX-NEXT:    jal     zero, {{.*}}
23# CHECK-INST-RELAX-NEXT:    R_RISCV_JAL .L1
24# CHECK-INST-C-RELAX:       beq     a0, a1, 0x8
25# CHECK-INST-C-RELAX-NEXT:  jal     zero, {{.*}}
26# CHECK-INST-C-RELAX-NEXT:  R_RISCV_JAL .L1
27   bne a0, a1, .L1
28.fill 1300, 4, 0
29.L1:
30   ret
31# CHECK-INST:         bne     a0, a1, 0x1464
32# CHECK-INST-NEXT:    jal     zero, 0x28b4
33# CHECK-INST-C:       bne     a0, a1, 0x1462
34# CHECK-INST-C-NEXT:  jal     zero, 0x28b2
35# CHECK-INST-RELAX:         bne     a0, a1, 0x1464
36# CHECK-INST-RELAX-NEXT:    jal     zero, {{.*}}
37# CHECK-INST-RELAX-NEXT:    R_RISCV_JAL .L2
38# CHECK-INST-C-RELAX:       bne     a0, a1, 0x1462
39# CHECK-INST-C-RELAX-NEXT:  jal     zero, {{.*}}
40# CHECK-INST-C-RELAX-NEXT:  R_RISCV_JAL .L2
41   beq a0, a1, .L2
42.fill 1300, 4, 0
43.L2:
44   ret
45# CHECK-INST:         bge     a0, a1, 0x28c0
46# CHECK-INST-NEXT:    jal     zero, 0x3d10
47# CHECK-INST-C:       bge     a0, a1, 0x28bc
48# CHECK-INST-C-NEXT:  jal     zero, 0x3d0c
49# CHECK-INST-RELAX:         bge     a0, a1, 0x28c0
50# CHECK-INST-RELAX-NEXT:    jal     zero, {{.*}}
51# CHECK-INST-RELAX-NEXT:    R_RISCV_JAL .L3
52# CHECK-INST-C-RELAX:       bge     a0, a1, 0x28bc
53# CHECK-INST-C-RELAX-NEXT:  jal     zero, {{.*}}
54# CHECK-INST-C-RELAX-NEXT:  R_RISCV_JAL .L3
55   blt a0, a1, .L3
56.fill 1300, 4, 0
57.L3:
58   ret
59# CHECK-INST:         blt     a0, a1, 0x3d1c
60# CHECK-INST-NEXT:    jal     zero, 0x516c
61# CHECK-INST-C:       blt     a0, a1, 0x3d16
62# CHECK-INST-C-NEXT:  jal     zero, 0x5166
63# CHECK-INST-RELAX:         blt     a0, a1, 0x3d1c
64# CHECK-INST-RELAX-NEXT:    jal     zero, {{.*}}
65# CHECK-INST-RELAX-NEXT:    R_RISCV_JAL .L4
66# CHECK-INST-C-RELAX:       blt     a0, a1, 0x3d16
67# CHECK-INST-C-RELAX-NEXT:  jal     zero, {{.*}}
68# CHECK-INST-C-RELAX-NEXT:  R_RISCV_JAL .L4
69   bge a0, a1, .L4
70.fill 1300, 4, 0
71.L4:
72   ret
73# CHECK-INST:         bgeu    a0, a1, 0x5178
74# CHECK-INST-NEXT:    jal     zero, 0x65c8
75# CHECK-INST-C:       bgeu    a0, a1, 0x5170
76# CHECK-INST-C-NEXT:  jal     zero, 0x65c0
77# CHECK-INST-RELAX:         bgeu    a0, a1, 0x5178
78# CHECK-INST-RELAX-NEXT:    jal     zero, {{.*}}
79# CHECK-INST-RELAX-NEXT:    R_RISCV_JAL .L5
80# CHECK-INST-C-RELAX:       bgeu    a0, a1, 0x5170
81# CHECK-INST-C-RELAX-NEXT:  jal     zero, {{.*}}
82# CHECK-INST-C-RELAX-NEXT:  R_RISCV_JAL .L5
83   bltu a0, a1, .L5
84.fill 1300, 4, 0
85.L5:
86   ret
87# CHECK-INST:         bltu    a0, a1, 0x65d4
88# CHECK-INST-NEXT:    jal     zero, 0x7a24
89# CHECK-INST-C:       bltu    a0, a1, 0x65ca
90# CHECK-INST-C-NEXT:  jal     zero, 0x7a1a
91# CHECK-INST-RELAX:         bltu    a0, a1, 0x65d4
92# CHECK-INST-RELAX-NEXT:    jal     zero, {{.*}}
93# CHECK-INST-RELAX-NEXT:    R_RISCV_JAL .L6
94# CHECK-INST-C-RELAX:       bltu    a0, a1, 0x65ca
95# CHECK-INST-C-RELAX-NEXT:  jal     zero, {{.*}}
96# CHECK-INST-C-RELAX-NEXT:  R_RISCV_JAL .L6
97   bgeu a0, a1, .L6
98.fill 1300, 4, 0
99.L6:
100   ret
101# CHECK-INST:         bne     a0, zero, 0x7a30
102# CHECK-INST-NEXT:    jal     zero, 0x8e80
103# CHECK-INST-C:       c.bnez  a0, 0x7a22
104# CHECK-INST-C-NEXT:  jal     zero, 0x8e72
105# CHECK-INST-RELAX:         bne     a0, zero, 0x7a30
106# CHECK-INST-RELAX-NEXT:    jal     zero, {{.*}}
107# CHECK-INST-RELAX-NEXT:    R_RISCV_JAL .L7
108# CHECK-INST-C-RELAX:       c.bnez  a0, 0x7a22
109# CHECK-INST-C-RELAX-NEXT:  jal     zero, {{.*}}
110# CHECK-INST-C-RELAX-NEXT:  R_RISCV_JAL .L7
111   beqz a0, .L7
112.fill 1300, 4, 0
113.L7:
114   ret
115# CHECK-INST:         bne     zero, a0, 0x8e8c
116# CHECK-INST-NEXT:    jal     zero, 0xa2dc
117# CHECK-INST-C:       c.bnez  a0, 0x8e7a
118# CHECK-INST-C-NEXT:  jal     zero, 0xa2ca
119# CHECK-INST-RELAX:         bne     zero, a0, 0x8e8c
120# CHECK-INST-RELAX-NEXT:    jal     zero, {{.*}}
121# CHECK-INST-RELAX-NEXT:    R_RISCV_JAL .L8
122# CHECK-INST-C-RELAX:       c.bnez  a0, 0x8e7a
123# CHECK-INST-C-RELAX-NEXT:  jal     zero, {{.*}}
124# CHECK-INST-C-RELAX-NEXT:  R_RISCV_JAL .L8
125   beq x0, a0, .L8
126.fill 1300, 4, 0
127.L8:
128   ret
129# CHECK-INST:         beq     a0, zero, 0xa2e8
130# CHECK-INST-NEXT:    jal     zero, 0xb738
131# CHECK-INST-C:       c.beqz  a0, 0xa2d2
132# CHECK-INST-C-NEXT:  jal     zero, 0xb722
133# CHECK-INST-RELAX:         beq     a0, zero, 0xa2e8
134# CHECK-INST-RELAX-NEXT:    jal     zero, {{.*}}
135# CHECK-INST-RELAX-NEXT:    R_RISCV_JAL .L9
136# CHECK-INST-C-RELAX:       c.beqz  a0, 0xa2d2
137# CHECK-INST-C-RELAX-NEXT:  jal     zero, {{.*}}
138# CHECK-INST-C-RELAX-NEXT:  R_RISCV_JAL .L9
139   bnez a0, .L9
140.fill 1300, 4, 0
141.L9:
142   ret
143# CHECK-INST:         beq     a6, zero, 0xb744
144# CHECK-INST-NEXT:    jal     zero, 0xcb94
145# CHECK-INST-C:       beq     a6, zero, 0xb72c
146# CHECK-INST-C-NEXT:  jal     zero, 0xcb7c
147# CHECK-INST-RELAX:         beq     a6, zero, 0xb744
148# CHECK-INST-RELAX-NEXT:    jal     zero, {{.*}}
149# CHECK-INST-RELAX-NEXT:    R_RISCV_JAL .L10
150# CHECK-INST-C-RELAX:       beq     a6, zero, 0xb72c
151# CHECK-INST-C-RELAX-NEXT:  jal     zero, {{.*}}
152# CHECK-INST-C-RELAX-NEXT:  R_RISCV_JAL .L10
153   bnez x16, .L10
154.fill 1300, 4, 0
155.L10:
156   ret
157.Lfunc_end0:
158       .size   test, .Lfunc_end0-test
159