Skip to content

Commit 83049f5

Browse files
committed
[LoongArch] Pre-commit test for xxx. NFC
1 parent e8b15f3 commit 83049f5

File tree

1 file changed

+172
-0
lines changed

1 file changed

+172
-0
lines changed
Lines changed: 172 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,172 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 4
2+
; RUN: llc --mtriple=loongarch64 --code-model=medium --post-RA-scheduler=0 < %s \
3+
; RUN: | FileCheck %s --check-prefix=MEDIUM_NO_SCH
4+
; RUN: llc --mtriple=loongarch64 --code-model=medium --post-RA-scheduler=1 < %s \
5+
; RUN: | FileCheck %s --check-prefix=MEDIUM_SCH
6+
; RUN: llc --mtriple=loongarch64 --code-model=large --post-RA-scheduler=0 < %s \
7+
; RUN: | FileCheck %s --check-prefix=LARGE_NO_SCH
8+
; RUN: llc --mtriple=loongarch64 --code-model=large --post-RA-scheduler=1 < %s \
9+
; RUN: | FileCheck %s --check-prefix=LARGE_SCH
10+
11+
;; FIXME: According to the description of the psABI v2.30, the code sequences
12+
;; of `PseudoLA*_LARGE` instruction and Medium code model's function call must
13+
;; be adjacent.
14+
15+
@g = dso_local global i64 zeroinitializer, align 4
16+
@G = global i64 zeroinitializer, align 4
17+
@gd = external thread_local global i64
18+
@ld = external thread_local(localdynamic) global i64
19+
@ie = external thread_local(initialexec) global i64
20+
21+
declare ptr @bar(i64)
22+
23+
define void @foo() nounwind {
24+
; MEDIUM_NO_SCH-LABEL: foo:
25+
; MEDIUM_NO_SCH: # %bb.0:
26+
; MEDIUM_NO_SCH-NEXT: addi.d $sp, $sp, -16
27+
; MEDIUM_NO_SCH-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill
28+
; MEDIUM_NO_SCH-NEXT: pcalau12i $a0, %got_pc_hi20(G)
29+
; MEDIUM_NO_SCH-NEXT: ld.d $a0, $a0, %got_pc_lo12(G)
30+
; MEDIUM_NO_SCH-NEXT: ld.d $a0, $a0, 0
31+
; MEDIUM_NO_SCH-NEXT: pcalau12i $a0, %pc_hi20(g)
32+
; MEDIUM_NO_SCH-NEXT: addi.d $a0, $a0, %pc_lo12(g)
33+
; MEDIUM_NO_SCH-NEXT: ld.d $a0, $a0, 0
34+
; MEDIUM_NO_SCH-NEXT: ori $a0, $zero, 1
35+
; MEDIUM_NO_SCH-NEXT: pcaddu18i $ra, %call36(bar)
36+
; MEDIUM_NO_SCH-NEXT: jirl $ra, $ra, 0
37+
; MEDIUM_NO_SCH-NEXT: pcalau12i $a0, %ie_pc_hi20(gd)
38+
; MEDIUM_NO_SCH-NEXT: ld.d $a0, $a0, %ie_pc_lo12(gd)
39+
; MEDIUM_NO_SCH-NEXT: ldx.d $a0, $a0, $tp
40+
; MEDIUM_NO_SCH-NEXT: pcalau12i $a0, %ie_pc_hi20(ld)
41+
; MEDIUM_NO_SCH-NEXT: ld.d $a0, $a0, %ie_pc_lo12(ld)
42+
; MEDIUM_NO_SCH-NEXT: ldx.d $a0, $a0, $tp
43+
; MEDIUM_NO_SCH-NEXT: pcalau12i $a0, %ie_pc_hi20(ie)
44+
; MEDIUM_NO_SCH-NEXT: ld.d $a0, $a0, %ie_pc_lo12(ie)
45+
; MEDIUM_NO_SCH-NEXT: ldx.d $a0, $a0, $tp
46+
; MEDIUM_NO_SCH-NEXT: ld.d $ra, $sp, 8 # 8-byte Folded Reload
47+
; MEDIUM_NO_SCH-NEXT: addi.d $sp, $sp, 16
48+
; MEDIUM_NO_SCH-NEXT: ret
49+
;
50+
; MEDIUM_SCH-LABEL: foo:
51+
; MEDIUM_SCH: # %bb.0:
52+
; MEDIUM_SCH-NEXT: addi.d $sp, $sp, -16
53+
; MEDIUM_SCH-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill
54+
; MEDIUM_SCH-NEXT: pcalau12i $a0, %got_pc_hi20(G)
55+
; MEDIUM_SCH-NEXT: pcaddu18i $ra, %call36(bar)
56+
; MEDIUM_SCH-NEXT: ld.d $a0, $a0, %got_pc_lo12(G)
57+
; MEDIUM_SCH-NEXT: ld.d $a0, $a0, 0
58+
; MEDIUM_SCH-NEXT: pcalau12i $a0, %pc_hi20(g)
59+
; MEDIUM_SCH-NEXT: addi.d $a0, $a0, %pc_lo12(g)
60+
; MEDIUM_SCH-NEXT: ld.d $a0, $a0, 0
61+
; MEDIUM_SCH-NEXT: ori $a0, $zero, 1
62+
; MEDIUM_SCH-NEXT: jirl $ra, $ra, 0
63+
; MEDIUM_SCH-NEXT: pcalau12i $a0, %ie_pc_hi20(gd)
64+
; MEDIUM_SCH-NEXT: ld.d $a0, $a0, %ie_pc_lo12(gd)
65+
; MEDIUM_SCH-NEXT: ldx.d $a0, $a0, $tp
66+
; MEDIUM_SCH-NEXT: pcalau12i $a0, %ie_pc_hi20(ld)
67+
; MEDIUM_SCH-NEXT: ld.d $a0, $a0, %ie_pc_lo12(ld)
68+
; MEDIUM_SCH-NEXT: ldx.d $a0, $a0, $tp
69+
; MEDIUM_SCH-NEXT: pcalau12i $a0, %ie_pc_hi20(ie)
70+
; MEDIUM_SCH-NEXT: ld.d $a0, $a0, %ie_pc_lo12(ie)
71+
; MEDIUM_SCH-NEXT: ldx.d $a0, $a0, $tp
72+
; MEDIUM_SCH-NEXT: ld.d $ra, $sp, 8 # 8-byte Folded Reload
73+
; MEDIUM_SCH-NEXT: addi.d $sp, $sp, 16
74+
; MEDIUM_SCH-NEXT: ret
75+
;
76+
; LARGE_NO_SCH-LABEL: foo:
77+
; LARGE_NO_SCH: # %bb.0:
78+
; LARGE_NO_SCH-NEXT: addi.d $sp, $sp, -16
79+
; LARGE_NO_SCH-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill
80+
; LARGE_NO_SCH-NEXT: pcalau12i $a0, %got_pc_hi20(G)
81+
; LARGE_NO_SCH-NEXT: addi.d $a1, $zero, %got_pc_lo12(G)
82+
; LARGE_NO_SCH-NEXT: lu32i.d $a1, %got64_pc_lo20(G)
83+
; LARGE_NO_SCH-NEXT: lu52i.d $a1, $a1, %got64_pc_hi12(G)
84+
; LARGE_NO_SCH-NEXT: ldx.d $a0, $a1, $a0
85+
; LARGE_NO_SCH-NEXT: ld.d $a0, $a0, 0
86+
; LARGE_NO_SCH-NEXT: pcalau12i $a0, %pc_hi20(g)
87+
; LARGE_NO_SCH-NEXT: addi.d $a1, $zero, %pc_lo12(g)
88+
; LARGE_NO_SCH-NEXT: lu32i.d $a1, %pc64_lo20(g)
89+
; LARGE_NO_SCH-NEXT: lu52i.d $a1, $a1, %pc64_hi12(g)
90+
; LARGE_NO_SCH-NEXT: add.d $a0, $a1, $a0
91+
; LARGE_NO_SCH-NEXT: ld.d $a0, $a0, 0
92+
; LARGE_NO_SCH-NEXT: ori $a0, $zero, 1
93+
; LARGE_NO_SCH-NEXT: pcalau12i $a1, %got_pc_hi20(bar)
94+
; LARGE_NO_SCH-NEXT: addi.d $ra, $zero, %got_pc_lo12(bar)
95+
; LARGE_NO_SCH-NEXT: lu32i.d $ra, %got64_pc_lo20(bar)
96+
; LARGE_NO_SCH-NEXT: lu52i.d $ra, $ra, %got64_pc_hi12(bar)
97+
; LARGE_NO_SCH-NEXT: ldx.d $ra, $ra, $a1
98+
; LARGE_NO_SCH-NEXT: jirl $ra, $ra, 0
99+
; LARGE_NO_SCH-NEXT: pcalau12i $a0, %ie_pc_hi20(gd)
100+
; LARGE_NO_SCH-NEXT: addi.d $a1, $zero, %ie_pc_lo12(gd)
101+
; LARGE_NO_SCH-NEXT: lu32i.d $a1, %ie64_pc_lo20(gd)
102+
; LARGE_NO_SCH-NEXT: lu52i.d $a1, $a1, %ie64_pc_hi12(gd)
103+
; LARGE_NO_SCH-NEXT: ldx.d $a0, $a1, $a0
104+
; LARGE_NO_SCH-NEXT: ldx.d $a0, $a0, $tp
105+
; LARGE_NO_SCH-NEXT: pcalau12i $a0, %ie_pc_hi20(ld)
106+
; LARGE_NO_SCH-NEXT: addi.d $a1, $zero, %ie_pc_lo12(ld)
107+
; LARGE_NO_SCH-NEXT: lu32i.d $a1, %ie64_pc_lo20(ld)
108+
; LARGE_NO_SCH-NEXT: lu52i.d $a1, $a1, %ie64_pc_hi12(ld)
109+
; LARGE_NO_SCH-NEXT: ldx.d $a0, $a1, $a0
110+
; LARGE_NO_SCH-NEXT: ldx.d $a0, $a0, $tp
111+
; LARGE_NO_SCH-NEXT: pcalau12i $a0, %ie_pc_hi20(ie)
112+
; LARGE_NO_SCH-NEXT: addi.d $a1, $zero, %ie_pc_lo12(ie)
113+
; LARGE_NO_SCH-NEXT: lu32i.d $a1, %ie64_pc_lo20(ie)
114+
; LARGE_NO_SCH-NEXT: lu52i.d $a1, $a1, %ie64_pc_hi12(ie)
115+
; LARGE_NO_SCH-NEXT: ldx.d $a0, $a1, $a0
116+
; LARGE_NO_SCH-NEXT: ldx.d $a0, $a0, $tp
117+
; LARGE_NO_SCH-NEXT: ld.d $ra, $sp, 8 # 8-byte Folded Reload
118+
; LARGE_NO_SCH-NEXT: addi.d $sp, $sp, 16
119+
; LARGE_NO_SCH-NEXT: ret
120+
;
121+
; LARGE_SCH-LABEL: foo:
122+
; LARGE_SCH: # %bb.0:
123+
; LARGE_SCH-NEXT: addi.d $sp, $sp, -16
124+
; LARGE_SCH-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill
125+
; LARGE_SCH-NEXT: addi.d $a1, $zero, %got_pc_lo12(G)
126+
; LARGE_SCH-NEXT: pcalau12i $a0, %got_pc_hi20(G)
127+
; LARGE_SCH-NEXT: addi.d $ra, $zero, %got_pc_lo12(bar)
128+
; LARGE_SCH-NEXT: lu32i.d $a1, %got64_pc_lo20(G)
129+
; LARGE_SCH-NEXT: lu32i.d $ra, %got64_pc_lo20(bar)
130+
; LARGE_SCH-NEXT: lu52i.d $a1, $a1, %got64_pc_hi12(G)
131+
; LARGE_SCH-NEXT: lu52i.d $ra, $ra, %got64_pc_hi12(bar)
132+
; LARGE_SCH-NEXT: ldx.d $a0, $a1, $a0
133+
; LARGE_SCH-NEXT: addi.d $a1, $zero, %pc_lo12(g)
134+
; LARGE_SCH-NEXT: lu32i.d $a1, %pc64_lo20(g)
135+
; LARGE_SCH-NEXT: lu52i.d $a1, $a1, %pc64_hi12(g)
136+
; LARGE_SCH-NEXT: ld.d $a0, $a0, 0
137+
; LARGE_SCH-NEXT: pcalau12i $a0, %pc_hi20(g)
138+
; LARGE_SCH-NEXT: add.d $a0, $a1, $a0
139+
; LARGE_SCH-NEXT: pcalau12i $a1, %got_pc_hi20(bar)
140+
; LARGE_SCH-NEXT: ld.d $a0, $a0, 0
141+
; LARGE_SCH-NEXT: ldx.d $ra, $ra, $a1
142+
; LARGE_SCH-NEXT: ori $a0, $zero, 1
143+
; LARGE_SCH-NEXT: jirl $ra, $ra, 0
144+
; LARGE_SCH-NEXT: addi.d $a1, $zero, %ie_pc_lo12(gd)
145+
; LARGE_SCH-NEXT: pcalau12i $a0, %ie_pc_hi20(gd)
146+
; LARGE_SCH-NEXT: lu32i.d $a1, %ie64_pc_lo20(gd)
147+
; LARGE_SCH-NEXT: lu52i.d $a1, $a1, %ie64_pc_hi12(gd)
148+
; LARGE_SCH-NEXT: ldx.d $a0, $a1, $a0
149+
; LARGE_SCH-NEXT: addi.d $a1, $zero, %ie_pc_lo12(ld)
150+
; LARGE_SCH-NEXT: lu32i.d $a1, %ie64_pc_lo20(ld)
151+
; LARGE_SCH-NEXT: lu52i.d $a1, $a1, %ie64_pc_hi12(ld)
152+
; LARGE_SCH-NEXT: ldx.d $a0, $a0, $tp
153+
; LARGE_SCH-NEXT: pcalau12i $a0, %ie_pc_hi20(ld)
154+
; LARGE_SCH-NEXT: ldx.d $a0, $a1, $a0
155+
; LARGE_SCH-NEXT: addi.d $a1, $zero, %ie_pc_lo12(ie)
156+
; LARGE_SCH-NEXT: lu32i.d $a1, %ie64_pc_lo20(ie)
157+
; LARGE_SCH-NEXT: lu52i.d $a1, $a1, %ie64_pc_hi12(ie)
158+
; LARGE_SCH-NEXT: ldx.d $a0, $a0, $tp
159+
; LARGE_SCH-NEXT: pcalau12i $a0, %ie_pc_hi20(ie)
160+
; LARGE_SCH-NEXT: ldx.d $a0, $a1, $a0
161+
; LARGE_SCH-NEXT: ldx.d $a0, $a0, $tp
162+
; LARGE_SCH-NEXT: ld.d $ra, $sp, 8 # 8-byte Folded Reload
163+
; LARGE_SCH-NEXT: addi.d $sp, $sp, 16
164+
; LARGE_SCH-NEXT: ret
165+
%V = load volatile i64, ptr @G
166+
%v = load volatile i64, ptr @g
167+
call void @bar(i64 1)
168+
%v_gd = load volatile i64, ptr @gd
169+
%v_ld = load volatile i64, ptr @ld
170+
%v_ie = load volatile i64, ptr @ie
171+
ret void
172+
}

0 commit comments

Comments
 (0)