Skip to content

Commit e28dc7c

Browse files
heiheryuxuanchen1997
authored andcommitted
[LoongArch][test] Add --relocation-model=pic option to psabi-restricted-scheduling. NFC
Add --relocation-model=pic option for generating %gd_pc_hi20 and %ld_pc_hi20.
1 parent cca6e2f commit e28dc7c

File tree

1 file changed

+92
-60
lines changed

1 file changed

+92
-60
lines changed

llvm/test/CodeGen/LoongArch/psabi-restricted-scheduling.ll

+92-60
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 4
2-
; RUN: llc --mtriple=loongarch64 -mattr=+d --code-model=medium --post-RA-scheduler=0 < %s \
2+
; RUN: llc --mtriple=loongarch64 -mattr=+d --code-model=medium --relocation-model=pic --post-RA-scheduler=0 < %s \
33
; RUN: | FileCheck %s --check-prefix=MEDIUM_NO_SCH
4-
; RUN: llc --mtriple=loongarch64 -mattr=+d --code-model=medium --post-RA-scheduler=1 < %s \
4+
; RUN: llc --mtriple=loongarch64 -mattr=+d --code-model=medium --relocation-model=pic --post-RA-scheduler=1 < %s \
55
; RUN: | FileCheck %s --check-prefix=MEDIUM_SCH
6-
; RUN: llc --mtriple=loongarch64 -mattr=+d --code-model=large --post-RA-scheduler=0 < %s \
6+
; RUN: llc --mtriple=loongarch64 -mattr=+d --code-model=large --relocation-model=pic --post-RA-scheduler=0 < %s \
77
; RUN: | FileCheck %s --check-prefix=LARGE_NO_SCH
8-
; RUN: llc --mtriple=loongarch64 -mattr=+d --code-model=large --post-RA-scheduler=1 < %s \
8+
; RUN: llc --mtriple=loongarch64 -mattr=+d --code-model=large --relocation-model=pic --post-RA-scheduler=1 < %s \
99
; RUN: | FileCheck %s --check-prefix=LARGE_SCH
1010

1111
@g = dso_local global i64 zeroinitializer, align 4
@@ -24,21 +24,25 @@ define void @foo() nounwind {
2424
; MEDIUM_NO_SCH-NEXT: pcalau12i $a0, %got_pc_hi20(G)
2525
; MEDIUM_NO_SCH-NEXT: ld.d $a0, $a0, %got_pc_lo12(G)
2626
; MEDIUM_NO_SCH-NEXT: ld.d $zero, $a0, 0
27-
; MEDIUM_NO_SCH-NEXT: pcalau12i $a0, %pc_hi20(g)
28-
; MEDIUM_NO_SCH-NEXT: addi.d $a0, $a0, %pc_lo12(g)
27+
; MEDIUM_NO_SCH-NEXT: pcalau12i $a0, %pc_hi20(.Lg$local)
28+
; MEDIUM_NO_SCH-NEXT: addi.d $a0, $a0, %pc_lo12(.Lg$local)
2929
; MEDIUM_NO_SCH-NEXT: ld.d $zero, $a0, 0
3030
; MEDIUM_NO_SCH-NEXT: ori $a0, $zero, 1
3131
; MEDIUM_NO_SCH-NEXT: pcaddu18i $ra, %call36(bar)
3232
; MEDIUM_NO_SCH-NEXT: jirl $ra, $ra, 0
33-
; MEDIUM_NO_SCH-NEXT: pcalau12i $a0, %ie_pc_hi20(gd)
34-
; MEDIUM_NO_SCH-NEXT: ld.d $a0, $a0, %ie_pc_lo12(gd)
35-
; MEDIUM_NO_SCH-NEXT: pcalau12i $a1, %ie_pc_hi20(ld)
36-
; MEDIUM_NO_SCH-NEXT: ld.d $a1, $a1, %ie_pc_lo12(ld)
37-
; MEDIUM_NO_SCH-NEXT: pcalau12i $a2, %ie_pc_hi20(ie)
38-
; MEDIUM_NO_SCH-NEXT: ld.d $a2, $a2, %ie_pc_lo12(ie)
39-
; MEDIUM_NO_SCH-NEXT: ldx.d $zero, $a0, $tp
33+
; MEDIUM_NO_SCH-NEXT: pcalau12i $a0, %gd_pc_hi20(gd)
34+
; MEDIUM_NO_SCH-NEXT: addi.d $a0, $a0, %got_pc_lo12(gd)
35+
; MEDIUM_NO_SCH-NEXT: pcaddu18i $ra, %call36(__tls_get_addr)
36+
; MEDIUM_NO_SCH-NEXT: jirl $ra, $ra, 0
37+
; MEDIUM_NO_SCH-NEXT: ld.d $zero, $a0, 0
38+
; MEDIUM_NO_SCH-NEXT: pcalau12i $a0, %ld_pc_hi20(ld)
39+
; MEDIUM_NO_SCH-NEXT: addi.d $a0, $a0, %got_pc_lo12(ld)
40+
; MEDIUM_NO_SCH-NEXT: pcaddu18i $ra, %call36(__tls_get_addr)
41+
; MEDIUM_NO_SCH-NEXT: jirl $ra, $ra, 0
42+
; MEDIUM_NO_SCH-NEXT: pcalau12i $a1, %ie_pc_hi20(ie)
43+
; MEDIUM_NO_SCH-NEXT: ld.d $a1, $a1, %ie_pc_lo12(ie)
44+
; MEDIUM_NO_SCH-NEXT: ld.d $zero, $a0, 0
4045
; MEDIUM_NO_SCH-NEXT: ldx.d $zero, $a1, $tp
41-
; MEDIUM_NO_SCH-NEXT: ldx.d $zero, $a2, $tp
4246
; MEDIUM_NO_SCH-NEXT: ld.d $ra, $sp, 8 # 8-byte Folded Reload
4347
; MEDIUM_NO_SCH-NEXT: addi.d $sp, $sp, 16
4448
; MEDIUM_NO_SCH-NEXT: ret
@@ -50,21 +54,25 @@ define void @foo() nounwind {
5054
; MEDIUM_SCH-NEXT: pcalau12i $a0, %got_pc_hi20(G)
5155
; MEDIUM_SCH-NEXT: ld.d $a0, $a0, %got_pc_lo12(G)
5256
; MEDIUM_SCH-NEXT: ld.d $zero, $a0, 0
53-
; MEDIUM_SCH-NEXT: pcalau12i $a0, %pc_hi20(g)
54-
; MEDIUM_SCH-NEXT: addi.d $a0, $a0, %pc_lo12(g)
57+
; MEDIUM_SCH-NEXT: pcalau12i $a0, %pc_hi20(.Lg$local)
58+
; MEDIUM_SCH-NEXT: addi.d $a0, $a0, %pc_lo12(.Lg$local)
5559
; MEDIUM_SCH-NEXT: ld.d $zero, $a0, 0
5660
; MEDIUM_SCH-NEXT: ori $a0, $zero, 1
5761
; MEDIUM_SCH-NEXT: pcaddu18i $ra, %call36(bar)
5862
; MEDIUM_SCH-NEXT: jirl $ra, $ra, 0
59-
; MEDIUM_SCH-NEXT: pcalau12i $a0, %ie_pc_hi20(gd)
60-
; MEDIUM_SCH-NEXT: pcalau12i $a1, %ie_pc_hi20(ld)
61-
; MEDIUM_SCH-NEXT: pcalau12i $a2, %ie_pc_hi20(ie)
62-
; MEDIUM_SCH-NEXT: ld.d $a0, $a0, %ie_pc_lo12(gd)
63-
; MEDIUM_SCH-NEXT: ld.d $a1, $a1, %ie_pc_lo12(ld)
64-
; MEDIUM_SCH-NEXT: ld.d $a2, $a2, %ie_pc_lo12(ie)
65-
; MEDIUM_SCH-NEXT: ldx.d $zero, $a0, $tp
63+
; MEDIUM_SCH-NEXT: pcalau12i $a0, %gd_pc_hi20(gd)
64+
; MEDIUM_SCH-NEXT: addi.d $a0, $a0, %got_pc_lo12(gd)
65+
; MEDIUM_SCH-NEXT: pcaddu18i $ra, %call36(__tls_get_addr)
66+
; MEDIUM_SCH-NEXT: jirl $ra, $ra, 0
67+
; MEDIUM_SCH-NEXT: ld.d $zero, $a0, 0
68+
; MEDIUM_SCH-NEXT: pcalau12i $a0, %ld_pc_hi20(ld)
69+
; MEDIUM_SCH-NEXT: addi.d $a0, $a0, %got_pc_lo12(ld)
70+
; MEDIUM_SCH-NEXT: pcaddu18i $ra, %call36(__tls_get_addr)
71+
; MEDIUM_SCH-NEXT: jirl $ra, $ra, 0
72+
; MEDIUM_SCH-NEXT: pcalau12i $a1, %ie_pc_hi20(ie)
73+
; MEDIUM_SCH-NEXT: ld.d $zero, $a0, 0
74+
; MEDIUM_SCH-NEXT: ld.d $a1, $a1, %ie_pc_lo12(ie)
6675
; MEDIUM_SCH-NEXT: ldx.d $zero, $a1, $tp
67-
; MEDIUM_SCH-NEXT: ldx.d $zero, $a2, $tp
6876
; MEDIUM_SCH-NEXT: ld.d $ra, $sp, 8 # 8-byte Folded Reload
6977
; MEDIUM_SCH-NEXT: addi.d $sp, $sp, 16
7078
; MEDIUM_SCH-NEXT: ret
@@ -79,10 +87,10 @@ define void @foo() nounwind {
7987
; LARGE_NO_SCH-NEXT: lu52i.d $t8, $t8, %got64_pc_hi12(G)
8088
; LARGE_NO_SCH-NEXT: ldx.d $a0, $t8, $a0
8189
; LARGE_NO_SCH-NEXT: ld.d $zero, $a0, 0
82-
; LARGE_NO_SCH-NEXT: pcalau12i $a0, %pc_hi20(g)
83-
; LARGE_NO_SCH-NEXT: addi.d $t8, $zero, %pc_lo12(g)
84-
; LARGE_NO_SCH-NEXT: lu32i.d $t8, %pc64_lo20(g)
85-
; LARGE_NO_SCH-NEXT: lu52i.d $t8, $t8, %pc64_hi12(g)
90+
; LARGE_NO_SCH-NEXT: pcalau12i $a0, %pc_hi20(.Lg$local)
91+
; LARGE_NO_SCH-NEXT: addi.d $t8, $zero, %pc_lo12(.Lg$local)
92+
; LARGE_NO_SCH-NEXT: lu32i.d $t8, %pc64_lo20(.Lg$local)
93+
; LARGE_NO_SCH-NEXT: lu52i.d $t8, $t8, %pc64_hi12(.Lg$local)
8694
; LARGE_NO_SCH-NEXT: add.d $a0, $t8, $a0
8795
; LARGE_NO_SCH-NEXT: ld.d $zero, $a0, 0
8896
; LARGE_NO_SCH-NEXT: ori $a0, $zero, 1
@@ -92,24 +100,36 @@ define void @foo() nounwind {
92100
; LARGE_NO_SCH-NEXT: lu52i.d $t8, $t8, %got64_pc_hi12(bar)
93101
; LARGE_NO_SCH-NEXT: ldx.d $ra, $t8, $ra
94102
; LARGE_NO_SCH-NEXT: jirl $ra, $ra, 0
95-
; LARGE_NO_SCH-NEXT: pcalau12i $a0, %ie_pc_hi20(gd)
96-
; LARGE_NO_SCH-NEXT: addi.d $t8, $zero, %ie_pc_lo12(gd)
97-
; LARGE_NO_SCH-NEXT: lu32i.d $t8, %ie64_pc_lo20(gd)
98-
; LARGE_NO_SCH-NEXT: lu52i.d $t8, $t8, %ie64_pc_hi12(gd)
99-
; LARGE_NO_SCH-NEXT: ldx.d $a0, $t8, $a0
100-
; LARGE_NO_SCH-NEXT: pcalau12i $a1, %ie_pc_hi20(ld)
101-
; LARGE_NO_SCH-NEXT: addi.d $t8, $zero, %ie_pc_lo12(ld)
102-
; LARGE_NO_SCH-NEXT: lu32i.d $t8, %ie64_pc_lo20(ld)
103-
; LARGE_NO_SCH-NEXT: lu52i.d $t8, $t8, %ie64_pc_hi12(ld)
104-
; LARGE_NO_SCH-NEXT: ldx.d $a1, $t8, $a1
105-
; LARGE_NO_SCH-NEXT: pcalau12i $a2, %ie_pc_hi20(ie)
103+
; LARGE_NO_SCH-NEXT: pcalau12i $a0, %gd_pc_hi20(gd)
104+
; LARGE_NO_SCH-NEXT: addi.d $t8, $zero, %got_pc_lo12(gd)
105+
; LARGE_NO_SCH-NEXT: lu32i.d $t8, %got64_pc_lo20(gd)
106+
; LARGE_NO_SCH-NEXT: lu52i.d $t8, $t8, %got64_pc_hi12(gd)
107+
; LARGE_NO_SCH-NEXT: add.d $a0, $t8, $a0
108+
; LARGE_NO_SCH-NEXT: pcalau12i $ra, %pc_hi20(__tls_get_addr)
109+
; LARGE_NO_SCH-NEXT: addi.d $t8, $zero, %pc_lo12(__tls_get_addr)
110+
; LARGE_NO_SCH-NEXT: lu32i.d $t8, %pc64_lo20(__tls_get_addr)
111+
; LARGE_NO_SCH-NEXT: lu52i.d $t8, $t8, %pc64_hi12(__tls_get_addr)
112+
; LARGE_NO_SCH-NEXT: add.d $ra, $t8, $ra
113+
; LARGE_NO_SCH-NEXT: jirl $ra, $ra, 0
114+
; LARGE_NO_SCH-NEXT: ld.d $zero, $a0, 0
115+
; LARGE_NO_SCH-NEXT: pcalau12i $a0, %ld_pc_hi20(ld)
116+
; LARGE_NO_SCH-NEXT: addi.d $t8, $zero, %got_pc_lo12(ld)
117+
; LARGE_NO_SCH-NEXT: lu32i.d $t8, %got64_pc_lo20(ld)
118+
; LARGE_NO_SCH-NEXT: lu52i.d $t8, $t8, %got64_pc_hi12(ld)
119+
; LARGE_NO_SCH-NEXT: add.d $a0, $t8, $a0
120+
; LARGE_NO_SCH-NEXT: pcalau12i $ra, %pc_hi20(__tls_get_addr)
121+
; LARGE_NO_SCH-NEXT: addi.d $t8, $zero, %pc_lo12(__tls_get_addr)
122+
; LARGE_NO_SCH-NEXT: lu32i.d $t8, %pc64_lo20(__tls_get_addr)
123+
; LARGE_NO_SCH-NEXT: lu52i.d $t8, $t8, %pc64_hi12(__tls_get_addr)
124+
; LARGE_NO_SCH-NEXT: add.d $ra, $t8, $ra
125+
; LARGE_NO_SCH-NEXT: jirl $ra, $ra, 0
126+
; LARGE_NO_SCH-NEXT: pcalau12i $a1, %ie_pc_hi20(ie)
106127
; LARGE_NO_SCH-NEXT: addi.d $t8, $zero, %ie_pc_lo12(ie)
107128
; LARGE_NO_SCH-NEXT: lu32i.d $t8, %ie64_pc_lo20(ie)
108129
; LARGE_NO_SCH-NEXT: lu52i.d $t8, $t8, %ie64_pc_hi12(ie)
109-
; LARGE_NO_SCH-NEXT: ldx.d $a2, $t8, $a2
110-
; LARGE_NO_SCH-NEXT: ldx.d $zero, $a0, $tp
130+
; LARGE_NO_SCH-NEXT: ldx.d $a1, $t8, $a1
131+
; LARGE_NO_SCH-NEXT: ld.d $zero, $a0, 0
111132
; LARGE_NO_SCH-NEXT: ldx.d $zero, $a1, $tp
112-
; LARGE_NO_SCH-NEXT: ldx.d $zero, $a2, $tp
113133
; LARGE_NO_SCH-NEXT: ld.d $ra, $sp, 8 # 8-byte Folded Reload
114134
; LARGE_NO_SCH-NEXT: addi.d $sp, $sp, 16
115135
; LARGE_NO_SCH-NEXT: ret
@@ -124,10 +144,10 @@ define void @foo() nounwind {
124144
; LARGE_SCH-NEXT: lu52i.d $t8, $t8, %got64_pc_hi12(G)
125145
; LARGE_SCH-NEXT: ldx.d $a0, $t8, $a0
126146
; LARGE_SCH-NEXT: ld.d $zero, $a0, 0
127-
; LARGE_SCH-NEXT: pcalau12i $a0, %pc_hi20(g)
128-
; LARGE_SCH-NEXT: addi.d $t8, $zero, %pc_lo12(g)
129-
; LARGE_SCH-NEXT: lu32i.d $t8, %pc64_lo20(g)
130-
; LARGE_SCH-NEXT: lu52i.d $t8, $t8, %pc64_hi12(g)
147+
; LARGE_SCH-NEXT: pcalau12i $a0, %pc_hi20(.Lg$local)
148+
; LARGE_SCH-NEXT: addi.d $t8, $zero, %pc_lo12(.Lg$local)
149+
; LARGE_SCH-NEXT: lu32i.d $t8, %pc64_lo20(.Lg$local)
150+
; LARGE_SCH-NEXT: lu52i.d $t8, $t8, %pc64_hi12(.Lg$local)
131151
; LARGE_SCH-NEXT: add.d $a0, $t8, $a0
132152
; LARGE_SCH-NEXT: ld.d $zero, $a0, 0
133153
; LARGE_SCH-NEXT: ori $a0, $zero, 1
@@ -137,24 +157,36 @@ define void @foo() nounwind {
137157
; LARGE_SCH-NEXT: lu52i.d $t8, $t8, %got64_pc_hi12(bar)
138158
; LARGE_SCH-NEXT: ldx.d $ra, $t8, $ra
139159
; LARGE_SCH-NEXT: jirl $ra, $ra, 0
140-
; LARGE_SCH-NEXT: pcalau12i $a0, %ie_pc_hi20(gd)
141-
; LARGE_SCH-NEXT: addi.d $t8, $zero, %ie_pc_lo12(gd)
142-
; LARGE_SCH-NEXT: lu32i.d $t8, %ie64_pc_lo20(gd)
143-
; LARGE_SCH-NEXT: lu52i.d $t8, $t8, %ie64_pc_hi12(gd)
144-
; LARGE_SCH-NEXT: ldx.d $a0, $t8, $a0
145-
; LARGE_SCH-NEXT: pcalau12i $a1, %ie_pc_hi20(ld)
146-
; LARGE_SCH-NEXT: addi.d $t8, $zero, %ie_pc_lo12(ld)
147-
; LARGE_SCH-NEXT: lu32i.d $t8, %ie64_pc_lo20(ld)
148-
; LARGE_SCH-NEXT: lu52i.d $t8, $t8, %ie64_pc_hi12(ld)
149-
; LARGE_SCH-NEXT: ldx.d $a1, $t8, $a1
150-
; LARGE_SCH-NEXT: pcalau12i $a2, %ie_pc_hi20(ie)
160+
; LARGE_SCH-NEXT: pcalau12i $a0, %gd_pc_hi20(gd)
161+
; LARGE_SCH-NEXT: addi.d $t8, $zero, %got_pc_lo12(gd)
162+
; LARGE_SCH-NEXT: lu32i.d $t8, %got64_pc_lo20(gd)
163+
; LARGE_SCH-NEXT: lu52i.d $t8, $t8, %got64_pc_hi12(gd)
164+
; LARGE_SCH-NEXT: add.d $a0, $t8, $a0
165+
; LARGE_SCH-NEXT: pcalau12i $ra, %pc_hi20(__tls_get_addr)
166+
; LARGE_SCH-NEXT: addi.d $t8, $zero, %pc_lo12(__tls_get_addr)
167+
; LARGE_SCH-NEXT: lu32i.d $t8, %pc64_lo20(__tls_get_addr)
168+
; LARGE_SCH-NEXT: lu52i.d $t8, $t8, %pc64_hi12(__tls_get_addr)
169+
; LARGE_SCH-NEXT: add.d $ra, $t8, $ra
170+
; LARGE_SCH-NEXT: jirl $ra, $ra, 0
171+
; LARGE_SCH-NEXT: ld.d $zero, $a0, 0
172+
; LARGE_SCH-NEXT: pcalau12i $a0, %ld_pc_hi20(ld)
173+
; LARGE_SCH-NEXT: addi.d $t8, $zero, %got_pc_lo12(ld)
174+
; LARGE_SCH-NEXT: lu32i.d $t8, %got64_pc_lo20(ld)
175+
; LARGE_SCH-NEXT: lu52i.d $t8, $t8, %got64_pc_hi12(ld)
176+
; LARGE_SCH-NEXT: add.d $a0, $t8, $a0
177+
; LARGE_SCH-NEXT: pcalau12i $ra, %pc_hi20(__tls_get_addr)
178+
; LARGE_SCH-NEXT: addi.d $t8, $zero, %pc_lo12(__tls_get_addr)
179+
; LARGE_SCH-NEXT: lu32i.d $t8, %pc64_lo20(__tls_get_addr)
180+
; LARGE_SCH-NEXT: lu52i.d $t8, $t8, %pc64_hi12(__tls_get_addr)
181+
; LARGE_SCH-NEXT: add.d $ra, $t8, $ra
182+
; LARGE_SCH-NEXT: jirl $ra, $ra, 0
183+
; LARGE_SCH-NEXT: pcalau12i $a1, %ie_pc_hi20(ie)
151184
; LARGE_SCH-NEXT: addi.d $t8, $zero, %ie_pc_lo12(ie)
152185
; LARGE_SCH-NEXT: lu32i.d $t8, %ie64_pc_lo20(ie)
153186
; LARGE_SCH-NEXT: lu52i.d $t8, $t8, %ie64_pc_hi12(ie)
154-
; LARGE_SCH-NEXT: ldx.d $a2, $t8, $a2
155-
; LARGE_SCH-NEXT: ldx.d $zero, $a0, $tp
187+
; LARGE_SCH-NEXT: ldx.d $a1, $t8, $a1
188+
; LARGE_SCH-NEXT: ld.d $zero, $a0, 0
156189
; LARGE_SCH-NEXT: ldx.d $zero, $a1, $tp
157-
; LARGE_SCH-NEXT: ldx.d $zero, $a2, $tp
158190
; LARGE_SCH-NEXT: ld.d $ra, $sp, 8 # 8-byte Folded Reload
159191
; LARGE_SCH-NEXT: addi.d $sp, $sp, 16
160192
; LARGE_SCH-NEXT: ret

0 commit comments

Comments
 (0)