Skip to content

Commit 8b5bbff

Browse files
committed
add a test
1 parent 0265ba7 commit 8b5bbff

File tree

1 file changed

+287
-0
lines changed

1 file changed

+287
-0
lines changed
Lines changed: 287 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,287 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5
2+
; RUN: llc --mtriple=loongarch64 -mattr=+d,+lsx --verify-machineinstrs < %s | FileCheck %s
3+
define void @eliminate_frame_index(<16 x i8> %a) nounwind {
4+
; CHECK-LABEL: eliminate_frame_index:
5+
; CHECK: # %bb.0:
6+
; CHECK-NEXT: addi.d $sp, $sp, -240
7+
; CHECK-NEXT: st.d $ra, $sp, 232 # 8-byte Folded Spill
8+
; CHECK-NEXT: st.d $fp, $sp, 224 # 8-byte Folded Spill
9+
; CHECK-NEXT: st.d $s0, $sp, 216 # 8-byte Folded Spill
10+
; CHECK-NEXT: st.d $s1, $sp, 208 # 8-byte Folded Spill
11+
; CHECK-NEXT: st.d $s2, $sp, 200 # 8-byte Folded Spill
12+
; CHECK-NEXT: st.d $s3, $sp, 192 # 8-byte Folded Spill
13+
; CHECK-NEXT: st.d $s4, $sp, 184 # 8-byte Folded Spill
14+
; CHECK-NEXT: st.d $s5, $sp, 176 # 8-byte Folded Spill
15+
; CHECK-NEXT: st.d $s6, $sp, 168 # 8-byte Folded Spill
16+
; CHECK-NEXT: st.d $s7, $sp, 160 # 8-byte Folded Spill
17+
; CHECK-NEXT: st.d $s8, $sp, 152 # 8-byte Folded Spill
18+
; CHECK-NEXT: #APP
19+
; CHECK-NEXT: addi.d $zero, $zero, 1
20+
; CHECK-NEXT: #NO_APP
21+
; CHECK-NEXT: #APP
22+
; CHECK-NEXT: addi.d $ra, $zero, 1
23+
; CHECK-NEXT: #NO_APP
24+
; CHECK-NEXT: #APP
25+
; CHECK-NEXT: addi.d $tp, $zero, 1
26+
; CHECK-NEXT: #NO_APP
27+
; CHECK-NEXT: #APP
28+
; CHECK-NEXT: addi.d $a0, $zero, 1
29+
; CHECK-NEXT: #NO_APP
30+
; CHECK-NEXT: #APP
31+
; CHECK-NEXT: addi.d $a1, $zero, 1
32+
; CHECK-NEXT: #NO_APP
33+
; CHECK-NEXT: #APP
34+
; CHECK-NEXT: addi.d $a2, $zero, 1
35+
; CHECK-NEXT: #NO_APP
36+
; CHECK-NEXT: #APP
37+
; CHECK-NEXT: addi.d $a3, $zero, 1
38+
; CHECK-NEXT: #NO_APP
39+
; CHECK-NEXT: #APP
40+
; CHECK-NEXT: addi.d $a4, $zero, 1
41+
; CHECK-NEXT: #NO_APP
42+
; CHECK-NEXT: #APP
43+
; CHECK-NEXT: addi.d $a5, $zero, 1
44+
; CHECK-NEXT: #NO_APP
45+
; CHECK-NEXT: #APP
46+
; CHECK-NEXT: addi.d $a6, $zero, 1
47+
; CHECK-NEXT: #NO_APP
48+
; CHECK-NEXT: #APP
49+
; CHECK-NEXT: addi.d $a7, $zero, 1
50+
; CHECK-NEXT: #NO_APP
51+
; CHECK-NEXT: #APP
52+
; CHECK-NEXT: addi.d $t0, $zero, 1
53+
; CHECK-NEXT: #NO_APP
54+
; CHECK-NEXT: #APP
55+
; CHECK-NEXT: addi.d $t1, $zero, 1
56+
; CHECK-NEXT: #NO_APP
57+
; CHECK-NEXT: #APP
58+
; CHECK-NEXT: addi.d $t2, $zero, 1
59+
; CHECK-NEXT: #NO_APP
60+
; CHECK-NEXT: #APP
61+
; CHECK-NEXT: addi.d $t3, $zero, 1
62+
; CHECK-NEXT: #NO_APP
63+
; CHECK-NEXT: #APP
64+
; CHECK-NEXT: addi.d $t4, $zero, 1
65+
; CHECK-NEXT: #NO_APP
66+
; CHECK-NEXT: #APP
67+
; CHECK-NEXT: addi.d $t5, $zero, 1
68+
; CHECK-NEXT: #NO_APP
69+
; CHECK-NEXT: #APP
70+
; CHECK-NEXT: addi.d $t6, $zero, 1
71+
; CHECK-NEXT: #NO_APP
72+
; CHECK-NEXT: #APP
73+
; CHECK-NEXT: addi.d $t7, $zero, 1
74+
; CHECK-NEXT: #NO_APP
75+
; CHECK-NEXT: #APP
76+
; CHECK-NEXT: addi.d $t8, $zero, 1
77+
; CHECK-NEXT: #NO_APP
78+
; CHECK-NEXT: #APP
79+
; CHECK-NEXT: addi.d $fp, $zero, 1
80+
; CHECK-NEXT: #NO_APP
81+
; CHECK-NEXT: #APP
82+
; CHECK-NEXT: addi.d $s0, $zero, 1
83+
; CHECK-NEXT: #NO_APP
84+
; CHECK-NEXT: #APP
85+
; CHECK-NEXT: addi.d $s1, $zero, 1
86+
; CHECK-NEXT: #NO_APP
87+
; CHECK-NEXT: #APP
88+
; CHECK-NEXT: addi.d $s2, $zero, 1
89+
; CHECK-NEXT: #NO_APP
90+
; CHECK-NEXT: #APP
91+
; CHECK-NEXT: addi.d $s3, $zero, 1
92+
; CHECK-NEXT: #NO_APP
93+
; CHECK-NEXT: #APP
94+
; CHECK-NEXT: addi.d $s4, $zero, 1
95+
; CHECK-NEXT: #NO_APP
96+
; CHECK-NEXT: #APP
97+
; CHECK-NEXT: addi.d $s5, $zero, 1
98+
; CHECK-NEXT: #NO_APP
99+
; CHECK-NEXT: #APP
100+
; CHECK-NEXT: addi.d $s6, $zero, 1
101+
; CHECK-NEXT: #NO_APP
102+
; CHECK-NEXT: #APP
103+
; CHECK-NEXT: addi.d $s7, $zero, 1
104+
; CHECK-NEXT: #NO_APP
105+
; CHECK-NEXT: #APP
106+
; CHECK-NEXT: addi.d $s8, $zero, 1
107+
; CHECK-NEXT: #NO_APP
108+
; CHECK-NEXT: st.d $a0, $sp, 0 # 8-byte Folded Spill
109+
; CHECK-NEXT: addi.d $a0, $sp, 136
110+
; CHECK-NEXT: vstelm.b $vr0, $a0, 0, 0
111+
; CHECK-NEXT: ld.d $a0, $sp, 0 # 8-byte Folded Reload
112+
; CHECK-NEXT: #APP
113+
; CHECK-NEXT: # reg use $zero
114+
; CHECK-NEXT: #NO_APP
115+
; CHECK-NEXT: #APP
116+
; CHECK-NEXT: # reg use $ra
117+
; CHECK-NEXT: #NO_APP
118+
; CHECK-NEXT: #APP
119+
; CHECK-NEXT: # reg use $tp
120+
; CHECK-NEXT: #NO_APP
121+
; CHECK-NEXT: #APP
122+
; CHECK-NEXT: # reg use $a0
123+
; CHECK-NEXT: #NO_APP
124+
; CHECK-NEXT: #APP
125+
; CHECK-NEXT: # reg use $a1
126+
; CHECK-NEXT: #NO_APP
127+
; CHECK-NEXT: #APP
128+
; CHECK-NEXT: # reg use $a2
129+
; CHECK-NEXT: #NO_APP
130+
; CHECK-NEXT: #APP
131+
; CHECK-NEXT: # reg use $a3
132+
; CHECK-NEXT: #NO_APP
133+
; CHECK-NEXT: #APP
134+
; CHECK-NEXT: # reg use $a4
135+
; CHECK-NEXT: #NO_APP
136+
; CHECK-NEXT: #APP
137+
; CHECK-NEXT: # reg use $a5
138+
; CHECK-NEXT: #NO_APP
139+
; CHECK-NEXT: #APP
140+
; CHECK-NEXT: # reg use $a6
141+
; CHECK-NEXT: #NO_APP
142+
; CHECK-NEXT: #APP
143+
; CHECK-NEXT: # reg use $a7
144+
; CHECK-NEXT: #NO_APP
145+
; CHECK-NEXT: #APP
146+
; CHECK-NEXT: # reg use $t0
147+
; CHECK-NEXT: #NO_APP
148+
; CHECK-NEXT: #APP
149+
; CHECK-NEXT: # reg use $t1
150+
; CHECK-NEXT: #NO_APP
151+
; CHECK-NEXT: #APP
152+
; CHECK-NEXT: # reg use $t2
153+
; CHECK-NEXT: #NO_APP
154+
; CHECK-NEXT: #APP
155+
; CHECK-NEXT: # reg use $t3
156+
; CHECK-NEXT: #NO_APP
157+
; CHECK-NEXT: #APP
158+
; CHECK-NEXT: # reg use $t4
159+
; CHECK-NEXT: #NO_APP
160+
; CHECK-NEXT: #APP
161+
; CHECK-NEXT: # reg use $t5
162+
; CHECK-NEXT: #NO_APP
163+
; CHECK-NEXT: #APP
164+
; CHECK-NEXT: # reg use $t6
165+
; CHECK-NEXT: #NO_APP
166+
; CHECK-NEXT: #APP
167+
; CHECK-NEXT: # reg use $t7
168+
; CHECK-NEXT: #NO_APP
169+
; CHECK-NEXT: #APP
170+
; CHECK-NEXT: # reg use $t8
171+
; CHECK-NEXT: #NO_APP
172+
; CHECK-NEXT: #APP
173+
; CHECK-NEXT: # reg use $fp
174+
; CHECK-NEXT: #NO_APP
175+
; CHECK-NEXT: #APP
176+
; CHECK-NEXT: # reg use $s0
177+
; CHECK-NEXT: #NO_APP
178+
; CHECK-NEXT: #APP
179+
; CHECK-NEXT: # reg use $s1
180+
; CHECK-NEXT: #NO_APP
181+
; CHECK-NEXT: #APP
182+
; CHECK-NEXT: # reg use $s2
183+
; CHECK-NEXT: #NO_APP
184+
; CHECK-NEXT: #APP
185+
; CHECK-NEXT: # reg use $s3
186+
; CHECK-NEXT: #NO_APP
187+
; CHECK-NEXT: #APP
188+
; CHECK-NEXT: # reg use $s4
189+
; CHECK-NEXT: #NO_APP
190+
; CHECK-NEXT: #APP
191+
; CHECK-NEXT: # reg use $s5
192+
; CHECK-NEXT: #NO_APP
193+
; CHECK-NEXT: #APP
194+
; CHECK-NEXT: # reg use $s6
195+
; CHECK-NEXT: #NO_APP
196+
; CHECK-NEXT: #APP
197+
; CHECK-NEXT: # reg use $s7
198+
; CHECK-NEXT: #NO_APP
199+
; CHECK-NEXT: #APP
200+
; CHECK-NEXT: # reg use $s8
201+
; CHECK-NEXT: #NO_APP
202+
; CHECK-NEXT: ld.d $s8, $sp, 152 # 8-byte Folded Reload
203+
; CHECK-NEXT: ld.d $s7, $sp, 160 # 8-byte Folded Reload
204+
; CHECK-NEXT: ld.d $s6, $sp, 168 # 8-byte Folded Reload
205+
; CHECK-NEXT: ld.d $s5, $sp, 176 # 8-byte Folded Reload
206+
; CHECK-NEXT: ld.d $s4, $sp, 184 # 8-byte Folded Reload
207+
; CHECK-NEXT: ld.d $s3, $sp, 192 # 8-byte Folded Reload
208+
; CHECK-NEXT: ld.d $s2, $sp, 200 # 8-byte Folded Reload
209+
; CHECK-NEXT: ld.d $s1, $sp, 208 # 8-byte Folded Reload
210+
; CHECK-NEXT: ld.d $s0, $sp, 216 # 8-byte Folded Reload
211+
; CHECK-NEXT: ld.d $fp, $sp, 224 # 8-byte Folded Reload
212+
; CHECK-NEXT: ld.d $ra, $sp, 232 # 8-byte Folded Reload
213+
; CHECK-NEXT: addi.d $sp, $sp, 240
214+
; CHECK-NEXT: ret
215+
%s = alloca [16 x i8]
216+
%ss = alloca [128 x i8]
217+
218+
%zero = call i64 asm sideeffect "addi.d $$zero, $$zero, 1", "={r0}"()
219+
%ra = call i64 asm sideeffect "addi.d $$ra, $$zero, 1", "={r1}"()
220+
%tp = call i64 asm sideeffect "addi.d $$tp, $$zero, 1", "={r2}"()
221+
%a0 = call i64 asm sideeffect "addi.d $$a0, $$zero, 1", "={r4}"()
222+
%a1 = call i64 asm sideeffect "addi.d $$a1, $$zero, 1", "={r5}"()
223+
%a2 = call i64 asm sideeffect "addi.d $$a2, $$zero, 1", "={r6}"()
224+
%a3 = call i64 asm sideeffect "addi.d $$a3, $$zero, 1", "={r7}"()
225+
%a4 = call i64 asm sideeffect "addi.d $$a4, $$zero, 1", "={r8}"()
226+
%a5 = call i64 asm sideeffect "addi.d $$a5, $$zero, 1", "={r9}"()
227+
%a6 = call i64 asm sideeffect "addi.d $$a6, $$zero, 1", "={r10}"()
228+
%a7 = call i64 asm sideeffect "addi.d $$a7, $$zero, 1", "={r11}"()
229+
%t0 = call i64 asm sideeffect "addi.d $$t0, $$zero, 1", "={r12}"()
230+
%t1 = call i64 asm sideeffect "addi.d $$t1, $$zero, 1", "={r13}"()
231+
%t2 = call i64 asm sideeffect "addi.d $$t2, $$zero, 1", "={r14}"()
232+
%t3 = call i64 asm sideeffect "addi.d $$t3, $$zero, 1", "={r15}"()
233+
%t4 = call i64 asm sideeffect "addi.d $$t4, $$zero, 1", "={r16}"()
234+
%t5 = call i64 asm sideeffect "addi.d $$t5, $$zero, 1", "={r17}"()
235+
%t6 = call i64 asm sideeffect "addi.d $$t6, $$zero, 1", "={r18}"()
236+
%t7 = call i64 asm sideeffect "addi.d $$t7, $$zero, 1", "={r19}"()
237+
%t8 = call i64 asm sideeffect "addi.d $$t8, $$zero, 1", "={r20}"()
238+
;; r21 Reserved (Non-allocatable)
239+
%s9 = call i64 asm sideeffect "addi.d $$s9, $$zero, 1", "={r22}"()
240+
%s0 = call i64 asm sideeffect "addi.d $$s0, $$zero, 1", "={r23}"()
241+
%s1 = call i64 asm sideeffect "addi.d $$s1, $$zero, 1", "={r24}"()
242+
%s2 = call i64 asm sideeffect "addi.d $$s2, $$zero, 1", "={r25}"()
243+
%s3 = call i64 asm sideeffect "addi.d $$s3, $$zero, 1", "={r26}"()
244+
%s4 = call i64 asm sideeffect "addi.d $$s4, $$zero, 1", "={r27}"()
245+
%s5 = call i64 asm sideeffect "addi.d $$s5, $$zero, 1", "={r28}"()
246+
%s6 = call i64 asm sideeffect "addi.d $$s6, $$zero, 1", "={r29}"()
247+
%s7 = call i64 asm sideeffect "addi.d $$s7, $$zero, 1", "={r30}"()
248+
%s8 = call i64 asm sideeffect "addi.d $$s8, $$zero, 1", "={r31}"()
249+
250+
%e = extractelement <16 x i8> %a, i64 0
251+
252+
store volatile i8 %e, ptr %s
253+
254+
call void asm sideeffect "# reg use $0", "{r0}"(i64 %zero)
255+
call void asm sideeffect "# reg use $0", "{r1}"(i64 %ra)
256+
call void asm sideeffect "# reg use $0", "{r2}"(i64 %tp)
257+
call void asm sideeffect "# reg use $0", "{r4}"(i64 %a0)
258+
call void asm sideeffect "# reg use $0", "{r5}"(i64 %a1)
259+
call void asm sideeffect "# reg use $0", "{r6}"(i64 %a2)
260+
call void asm sideeffect "# reg use $0", "{r7}"(i64 %a3)
261+
call void asm sideeffect "# reg use $0", "{r8}"(i64 %a4)
262+
call void asm sideeffect "# reg use $0", "{r9}"(i64 %a5)
263+
call void asm sideeffect "# reg use $0", "{r10}"(i64 %a6)
264+
call void asm sideeffect "# reg use $0", "{r11}"(i64 %a7)
265+
call void asm sideeffect "# reg use $0", "{r12}"(i64 %t0)
266+
call void asm sideeffect "# reg use $0", "{r13}"(i64 %t1)
267+
call void asm sideeffect "# reg use $0", "{r14}"(i64 %t2)
268+
call void asm sideeffect "# reg use $0", "{r15}"(i64 %t3)
269+
call void asm sideeffect "# reg use $0", "{r16}"(i64 %t4)
270+
call void asm sideeffect "# reg use $0", "{r17}"(i64 %t5)
271+
call void asm sideeffect "# reg use $0", "{r18}"(i64 %t6)
272+
call void asm sideeffect "# reg use $0", "{r19}"(i64 %t7)
273+
call void asm sideeffect "# reg use $0", "{r20}"(i64 %t8)
274+
;; r21 Reserved (Non-allocatable)
275+
call void asm sideeffect "# reg use $0", "{r22}"(i64 %s9)
276+
call void asm sideeffect "# reg use $0", "{r23}"(i64 %s0)
277+
call void asm sideeffect "# reg use $0", "{r24}"(i64 %s1)
278+
call void asm sideeffect "# reg use $0", "{r25}"(i64 %s2)
279+
call void asm sideeffect "# reg use $0", "{r26}"(i64 %s3)
280+
call void asm sideeffect "# reg use $0", "{r27}"(i64 %s4)
281+
call void asm sideeffect "# reg use $0", "{r28}"(i64 %s5)
282+
call void asm sideeffect "# reg use $0", "{r29}"(i64 %s6)
283+
call void asm sideeffect "# reg use $0", "{r30}"(i64 %s7)
284+
call void asm sideeffect "# reg use $0", "{r31}"(i64 %s8)
285+
286+
ret void
287+
}

0 commit comments

Comments
 (0)