[LLVM][IR] Use splat syntax when printing ConstantExpr based splats. (#116856)
[llvm-project.git] / llvm / test / CodeGen / RISCV / stack-store-check.ll
blobcd1aebfea5ce4e61b04316d455e3bfd88f9818a4
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -mtriple riscv32 -o - %s | FileCheck %s
3 ; This test has been minimized from GCC Torture Suite's regstack-1.c
4 ; and checks that RISCVInstrInfo::storeRegToStackSlot works at the basic
5 ; level.
7 @U = external local_unnamed_addr global fp128, align 16
8 @Y1 = external local_unnamed_addr global fp128, align 16
9 @X = external local_unnamed_addr global fp128, align 16
10 @Y = external local_unnamed_addr global fp128, align 16
11 @T = external local_unnamed_addr global fp128, align 16
12 @S = external local_unnamed_addr global fp128, align 16
14 define void @main() local_unnamed_addr nounwind {
15 ; CHECK-LABEL: main:
16 ; CHECK:       # %bb.0:
17 ; CHECK-NEXT:    addi sp, sp, -704
18 ; CHECK-NEXT:    sw ra, 700(sp) # 4-byte Folded Spill
19 ; CHECK-NEXT:    sw s0, 696(sp) # 4-byte Folded Spill
20 ; CHECK-NEXT:    sw s1, 692(sp) # 4-byte Folded Spill
21 ; CHECK-NEXT:    sw s2, 688(sp) # 4-byte Folded Spill
22 ; CHECK-NEXT:    sw s3, 684(sp) # 4-byte Folded Spill
23 ; CHECK-NEXT:    sw s4, 680(sp) # 4-byte Folded Spill
24 ; CHECK-NEXT:    sw s5, 676(sp) # 4-byte Folded Spill
25 ; CHECK-NEXT:    sw s6, 672(sp) # 4-byte Folded Spill
26 ; CHECK-NEXT:    sw s7, 668(sp) # 4-byte Folded Spill
27 ; CHECK-NEXT:    sw s8, 664(sp) # 4-byte Folded Spill
28 ; CHECK-NEXT:    sw s9, 660(sp) # 4-byte Folded Spill
29 ; CHECK-NEXT:    sw s10, 656(sp) # 4-byte Folded Spill
30 ; CHECK-NEXT:    sw s11, 652(sp) # 4-byte Folded Spill
31 ; CHECK-NEXT:    lui a0, %hi(U)
32 ; CHECK-NEXT:    lw s9, %lo(U)(a0)
33 ; CHECK-NEXT:    lw s10, %lo(U+4)(a0)
34 ; CHECK-NEXT:    lw s11, %lo(U+8)(a0)
35 ; CHECK-NEXT:    lw s5, %lo(U+12)(a0)
36 ; CHECK-NEXT:    sw zero, 616(sp)
37 ; CHECK-NEXT:    sw zero, 620(sp)
38 ; CHECK-NEXT:    sw zero, 624(sp)
39 ; CHECK-NEXT:    sw zero, 628(sp)
40 ; CHECK-NEXT:    addi a0, sp, 632
41 ; CHECK-NEXT:    addi a1, sp, 616
42 ; CHECK-NEXT:    addi a2, sp, 600
43 ; CHECK-NEXT:    sw s9, 600(sp)
44 ; CHECK-NEXT:    sw s10, 604(sp)
45 ; CHECK-NEXT:    sw s11, 608(sp)
46 ; CHECK-NEXT:    sw s5, 612(sp)
47 ; CHECK-NEXT:    call __subtf3
48 ; CHECK-NEXT:    lw s1, 632(sp)
49 ; CHECK-NEXT:    lw s2, 636(sp)
50 ; CHECK-NEXT:    lw s3, 640(sp)
51 ; CHECK-NEXT:    lw s4, 644(sp)
52 ; CHECK-NEXT:    sw s9, 552(sp)
53 ; CHECK-NEXT:    sw s10, 556(sp)
54 ; CHECK-NEXT:    sw s11, 560(sp)
55 ; CHECK-NEXT:    sw s5, 564(sp)
56 ; CHECK-NEXT:    addi a0, sp, 584
57 ; CHECK-NEXT:    addi a1, sp, 568
58 ; CHECK-NEXT:    addi a2, sp, 552
59 ; CHECK-NEXT:    sw s1, 568(sp)
60 ; CHECK-NEXT:    sw s2, 572(sp)
61 ; CHECK-NEXT:    sw s3, 576(sp)
62 ; CHECK-NEXT:    sw s4, 580(sp)
63 ; CHECK-NEXT:    call __subtf3
64 ; CHECK-NEXT:    lw a0, 584(sp)
65 ; CHECK-NEXT:    sw a0, 52(sp) # 4-byte Folded Spill
66 ; CHECK-NEXT:    lw a0, 588(sp)
67 ; CHECK-NEXT:    sw a0, 48(sp) # 4-byte Folded Spill
68 ; CHECK-NEXT:    lw a0, 592(sp)
69 ; CHECK-NEXT:    sw a0, 44(sp) # 4-byte Folded Spill
70 ; CHECK-NEXT:    lw a0, 596(sp)
71 ; CHECK-NEXT:    sw a0, 40(sp) # 4-byte Folded Spill
72 ; CHECK-NEXT:    sw zero, 504(sp)
73 ; CHECK-NEXT:    sw zero, 508(sp)
74 ; CHECK-NEXT:    sw zero, 512(sp)
75 ; CHECK-NEXT:    sw zero, 516(sp)
76 ; CHECK-NEXT:    addi a0, sp, 536
77 ; CHECK-NEXT:    addi a1, sp, 520
78 ; CHECK-NEXT:    addi a2, sp, 504
79 ; CHECK-NEXT:    sw s9, 520(sp)
80 ; CHECK-NEXT:    sw s10, 524(sp)
81 ; CHECK-NEXT:    sw s11, 528(sp)
82 ; CHECK-NEXT:    sw s5, 532(sp)
83 ; CHECK-NEXT:    call __addtf3
84 ; CHECK-NEXT:    lw s0, 536(sp)
85 ; CHECK-NEXT:    lw s6, 540(sp)
86 ; CHECK-NEXT:    lw s7, 544(sp)
87 ; CHECK-NEXT:    lw s8, 548(sp)
88 ; CHECK-NEXT:    lui a0, %hi(Y1)
89 ; CHECK-NEXT:    lw a1, %lo(Y1)(a0)
90 ; CHECK-NEXT:    sw a1, 20(sp) # 4-byte Folded Spill
91 ; CHECK-NEXT:    lw a2, %lo(Y1+4)(a0)
92 ; CHECK-NEXT:    sw a2, 16(sp) # 4-byte Folded Spill
93 ; CHECK-NEXT:    lw a3, %lo(Y1+8)(a0)
94 ; CHECK-NEXT:    sw a3, 12(sp) # 4-byte Folded Spill
95 ; CHECK-NEXT:    lw a0, %lo(Y1+12)(a0)
96 ; CHECK-NEXT:    sw a0, 8(sp) # 4-byte Folded Spill
97 ; CHECK-NEXT:    sw a1, 312(sp)
98 ; CHECK-NEXT:    sw a2, 316(sp)
99 ; CHECK-NEXT:    sw a3, 320(sp)
100 ; CHECK-NEXT:    sw a0, 324(sp)
101 ; CHECK-NEXT:    addi a0, sp, 344
102 ; CHECK-NEXT:    addi a1, sp, 328
103 ; CHECK-NEXT:    addi a2, sp, 312
104 ; CHECK-NEXT:    sw s1, 328(sp)
105 ; CHECK-NEXT:    sw s2, 332(sp)
106 ; CHECK-NEXT:    sw s3, 336(sp)
107 ; CHECK-NEXT:    sw s4, 340(sp)
108 ; CHECK-NEXT:    call __multf3
109 ; CHECK-NEXT:    lw a0, 344(sp)
110 ; CHECK-NEXT:    sw a0, 68(sp) # 4-byte Folded Spill
111 ; CHECK-NEXT:    lw a0, 348(sp)
112 ; CHECK-NEXT:    sw a0, 64(sp) # 4-byte Folded Spill
113 ; CHECK-NEXT:    lw a0, 352(sp)
114 ; CHECK-NEXT:    sw a0, 60(sp) # 4-byte Folded Spill
115 ; CHECK-NEXT:    lw a0, 356(sp)
116 ; CHECK-NEXT:    sw a0, 56(sp) # 4-byte Folded Spill
117 ; CHECK-NEXT:    sw s9, 472(sp)
118 ; CHECK-NEXT:    sw s10, 476(sp)
119 ; CHECK-NEXT:    sw s11, 480(sp)
120 ; CHECK-NEXT:    sw s5, 484(sp)
121 ; CHECK-NEXT:    addi a0, sp, 488
122 ; CHECK-NEXT:    addi a1, sp, 472
123 ; CHECK-NEXT:    addi a2, sp, 456
124 ; CHECK-NEXT:    sw s0, 456(sp)
125 ; CHECK-NEXT:    sw s6, 460(sp)
126 ; CHECK-NEXT:    sw s7, 464(sp)
127 ; CHECK-NEXT:    sw s8, 468(sp)
128 ; CHECK-NEXT:    call __addtf3
129 ; CHECK-NEXT:    lw a3, 488(sp)
130 ; CHECK-NEXT:    lw a4, 492(sp)
131 ; CHECK-NEXT:    lw a5, 496(sp)
132 ; CHECK-NEXT:    lw a6, 500(sp)
133 ; CHECK-NEXT:    sw zero, 424(sp)
134 ; CHECK-NEXT:    sw zero, 428(sp)
135 ; CHECK-NEXT:    sw zero, 432(sp)
136 ; CHECK-NEXT:    sw zero, 436(sp)
137 ; CHECK-NEXT:    addi a0, sp, 440
138 ; CHECK-NEXT:    addi a1, sp, 424
139 ; CHECK-NEXT:    addi a2, sp, 408
140 ; CHECK-NEXT:    sw a3, 408(sp)
141 ; CHECK-NEXT:    sw a4, 412(sp)
142 ; CHECK-NEXT:    sw a5, 416(sp)
143 ; CHECK-NEXT:    sw a6, 420(sp)
144 ; CHECK-NEXT:    call __subtf3
145 ; CHECK-NEXT:    lw a0, 448(sp)
146 ; CHECK-NEXT:    lw a1, 452(sp)
147 ; CHECK-NEXT:    lw a2, 440(sp)
148 ; CHECK-NEXT:    lw a3, 444(sp)
149 ; CHECK-NEXT:    lui a4, %hi(X)
150 ; CHECK-NEXT:    sw a1, %lo(X+12)(a4)
151 ; CHECK-NEXT:    sw a0, %lo(X+8)(a4)
152 ; CHECK-NEXT:    sw a3, %lo(X+4)(a4)
153 ; CHECK-NEXT:    sw a2, %lo(X)(a4)
154 ; CHECK-NEXT:    lw s5, 20(sp) # 4-byte Folded Reload
155 ; CHECK-NEXT:    sw s5, 216(sp)
156 ; CHECK-NEXT:    lw s9, 16(sp) # 4-byte Folded Reload
157 ; CHECK-NEXT:    sw s9, 220(sp)
158 ; CHECK-NEXT:    lw s10, 12(sp) # 4-byte Folded Reload
159 ; CHECK-NEXT:    sw s10, 224(sp)
160 ; CHECK-NEXT:    lw s11, 8(sp) # 4-byte Folded Reload
161 ; CHECK-NEXT:    sw s11, 228(sp)
162 ; CHECK-NEXT:    addi a0, sp, 248
163 ; CHECK-NEXT:    addi a1, sp, 232
164 ; CHECK-NEXT:    addi a2, sp, 216
165 ; CHECK-NEXT:    lw s1, 52(sp) # 4-byte Folded Reload
166 ; CHECK-NEXT:    sw s1, 232(sp)
167 ; CHECK-NEXT:    lw s2, 48(sp) # 4-byte Folded Reload
168 ; CHECK-NEXT:    sw s2, 236(sp)
169 ; CHECK-NEXT:    lw s3, 44(sp) # 4-byte Folded Reload
170 ; CHECK-NEXT:    sw s3, 240(sp)
171 ; CHECK-NEXT:    lw s4, 40(sp) # 4-byte Folded Reload
172 ; CHECK-NEXT:    sw s4, 244(sp)
173 ; CHECK-NEXT:    call __multf3
174 ; CHECK-NEXT:    lw a0, 248(sp)
175 ; CHECK-NEXT:    sw a0, 36(sp) # 4-byte Folded Spill
176 ; CHECK-NEXT:    lw a0, 252(sp)
177 ; CHECK-NEXT:    sw a0, 32(sp) # 4-byte Folded Spill
178 ; CHECK-NEXT:    lw a0, 256(sp)
179 ; CHECK-NEXT:    sw a0, 28(sp) # 4-byte Folded Spill
180 ; CHECK-NEXT:    lw a0, 260(sp)
181 ; CHECK-NEXT:    sw a0, 24(sp) # 4-byte Folded Spill
182 ; CHECK-NEXT:    sw zero, 360(sp)
183 ; CHECK-NEXT:    sw zero, 364(sp)
184 ; CHECK-NEXT:    sw zero, 368(sp)
185 ; CHECK-NEXT:    sw zero, 372(sp)
186 ; CHECK-NEXT:    addi a0, sp, 392
187 ; CHECK-NEXT:    addi a1, sp, 376
188 ; CHECK-NEXT:    addi a2, sp, 360
189 ; CHECK-NEXT:    sw s0, 376(sp)
190 ; CHECK-NEXT:    sw s6, 380(sp)
191 ; CHECK-NEXT:    sw s7, 384(sp)
192 ; CHECK-NEXT:    sw s8, 388(sp)
193 ; CHECK-NEXT:    call __multf3
194 ; CHECK-NEXT:    lw a0, 400(sp)
195 ; CHECK-NEXT:    lw a1, 404(sp)
196 ; CHECK-NEXT:    lw a2, 392(sp)
197 ; CHECK-NEXT:    lw a3, 396(sp)
198 ; CHECK-NEXT:    lui a4, %hi(S)
199 ; CHECK-NEXT:    sw a1, %lo(S+12)(a4)
200 ; CHECK-NEXT:    sw a0, %lo(S+8)(a4)
201 ; CHECK-NEXT:    sw a3, %lo(S+4)(a4)
202 ; CHECK-NEXT:    sw a2, %lo(S)(a4)
203 ; CHECK-NEXT:    sw s1, 264(sp)
204 ; CHECK-NEXT:    sw s2, 268(sp)
205 ; CHECK-NEXT:    sw s3, 272(sp)
206 ; CHECK-NEXT:    sw s4, 276(sp)
207 ; CHECK-NEXT:    addi a0, sp, 296
208 ; CHECK-NEXT:    addi a1, sp, 280
209 ; CHECK-NEXT:    addi a2, sp, 264
210 ; CHECK-NEXT:    lw a3, 68(sp) # 4-byte Folded Reload
211 ; CHECK-NEXT:    sw a3, 280(sp)
212 ; CHECK-NEXT:    lw a3, 64(sp) # 4-byte Folded Reload
213 ; CHECK-NEXT:    sw a3, 284(sp)
214 ; CHECK-NEXT:    lw a3, 60(sp) # 4-byte Folded Reload
215 ; CHECK-NEXT:    sw a3, 288(sp)
216 ; CHECK-NEXT:    lw a3, 56(sp) # 4-byte Folded Reload
217 ; CHECK-NEXT:    sw a3, 292(sp)
218 ; CHECK-NEXT:    call __subtf3
219 ; CHECK-NEXT:    lw a0, 304(sp)
220 ; CHECK-NEXT:    lw a1, 308(sp)
221 ; CHECK-NEXT:    lw a2, 296(sp)
222 ; CHECK-NEXT:    lw a3, 300(sp)
223 ; CHECK-NEXT:    lui a4, %hi(T)
224 ; CHECK-NEXT:    sw a1, %lo(T+12)(a4)
225 ; CHECK-NEXT:    sw a0, %lo(T+8)(a4)
226 ; CHECK-NEXT:    sw a3, %lo(T+4)(a4)
227 ; CHECK-NEXT:    sw a2, %lo(T)(a4)
228 ; CHECK-NEXT:    sw zero, 168(sp)
229 ; CHECK-NEXT:    sw zero, 172(sp)
230 ; CHECK-NEXT:    sw zero, 176(sp)
231 ; CHECK-NEXT:    sw zero, 180(sp)
232 ; CHECK-NEXT:    addi a0, sp, 200
233 ; CHECK-NEXT:    addi a1, sp, 184
234 ; CHECK-NEXT:    addi a2, sp, 168
235 ; CHECK-NEXT:    lw a3, 36(sp) # 4-byte Folded Reload
236 ; CHECK-NEXT:    sw a3, 184(sp)
237 ; CHECK-NEXT:    lw a3, 32(sp) # 4-byte Folded Reload
238 ; CHECK-NEXT:    sw a3, 188(sp)
239 ; CHECK-NEXT:    lw a3, 28(sp) # 4-byte Folded Reload
240 ; CHECK-NEXT:    sw a3, 192(sp)
241 ; CHECK-NEXT:    lw a3, 24(sp) # 4-byte Folded Reload
242 ; CHECK-NEXT:    sw a3, 196(sp)
243 ; CHECK-NEXT:    call __addtf3
244 ; CHECK-NEXT:    lw a0, 208(sp)
245 ; CHECK-NEXT:    lw a1, 212(sp)
246 ; CHECK-NEXT:    lw a2, 200(sp)
247 ; CHECK-NEXT:    lw a3, 204(sp)
248 ; CHECK-NEXT:    lui a4, %hi(Y)
249 ; CHECK-NEXT:    sw a1, %lo(Y+12)(a4)
250 ; CHECK-NEXT:    sw a0, %lo(Y+8)(a4)
251 ; CHECK-NEXT:    sw a3, %lo(Y+4)(a4)
252 ; CHECK-NEXT:    sw a2, %lo(Y)(a4)
253 ; CHECK-NEXT:    sw zero, 120(sp)
254 ; CHECK-NEXT:    sw zero, 124(sp)
255 ; CHECK-NEXT:    sw zero, 128(sp)
256 ; CHECK-NEXT:    sw zero, 132(sp)
257 ; CHECK-NEXT:    addi a0, sp, 152
258 ; CHECK-NEXT:    addi a1, sp, 136
259 ; CHECK-NEXT:    addi a2, sp, 120
260 ; CHECK-NEXT:    sw s5, 136(sp)
261 ; CHECK-NEXT:    sw s9, 140(sp)
262 ; CHECK-NEXT:    sw s10, 144(sp)
263 ; CHECK-NEXT:    sw s11, 148(sp)
264 ; CHECK-NEXT:    call __multf3
265 ; CHECK-NEXT:    lw a3, 152(sp)
266 ; CHECK-NEXT:    lw a4, 156(sp)
267 ; CHECK-NEXT:    lw a5, 160(sp)
268 ; CHECK-NEXT:    lw a6, 164(sp)
269 ; CHECK-NEXT:    lui a2, 786400
270 ; CHECK-NEXT:    addi a0, sp, 104
271 ; CHECK-NEXT:    addi a1, sp, 88
272 ; CHECK-NEXT:    sw zero, 72(sp)
273 ; CHECK-NEXT:    sw zero, 76(sp)
274 ; CHECK-NEXT:    sw zero, 80(sp)
275 ; CHECK-NEXT:    sw a2, 84(sp)
276 ; CHECK-NEXT:    addi a2, sp, 72
277 ; CHECK-NEXT:    sw a3, 88(sp)
278 ; CHECK-NEXT:    sw a4, 92(sp)
279 ; CHECK-NEXT:    sw a5, 96(sp)
280 ; CHECK-NEXT:    sw a6, 100(sp)
281 ; CHECK-NEXT:    call __addtf3
282 ; CHECK-NEXT:    lw a0, 112(sp)
283 ; CHECK-NEXT:    lw a1, 116(sp)
284 ; CHECK-NEXT:    lw a2, 104(sp)
285 ; CHECK-NEXT:    lw a3, 108(sp)
286 ; CHECK-NEXT:    lui a4, %hi(Y1)
287 ; CHECK-NEXT:    sw a0, %lo(Y1+8)(a4)
288 ; CHECK-NEXT:    sw a1, %lo(Y1+12)(a4)
289 ; CHECK-NEXT:    sw a2, %lo(Y1)(a4)
290 ; CHECK-NEXT:    sw a3, %lo(Y1+4)(a4)
291 ; CHECK-NEXT:    lw ra, 700(sp) # 4-byte Folded Reload
292 ; CHECK-NEXT:    lw s0, 696(sp) # 4-byte Folded Reload
293 ; CHECK-NEXT:    lw s1, 692(sp) # 4-byte Folded Reload
294 ; CHECK-NEXT:    lw s2, 688(sp) # 4-byte Folded Reload
295 ; CHECK-NEXT:    lw s3, 684(sp) # 4-byte Folded Reload
296 ; CHECK-NEXT:    lw s4, 680(sp) # 4-byte Folded Reload
297 ; CHECK-NEXT:    lw s5, 676(sp) # 4-byte Folded Reload
298 ; CHECK-NEXT:    lw s6, 672(sp) # 4-byte Folded Reload
299 ; CHECK-NEXT:    lw s7, 668(sp) # 4-byte Folded Reload
300 ; CHECK-NEXT:    lw s8, 664(sp) # 4-byte Folded Reload
301 ; CHECK-NEXT:    lw s9, 660(sp) # 4-byte Folded Reload
302 ; CHECK-NEXT:    lw s10, 656(sp) # 4-byte Folded Reload
303 ; CHECK-NEXT:    lw s11, 652(sp) # 4-byte Folded Reload
304 ; CHECK-NEXT:    addi sp, sp, 704
305 ; CHECK-NEXT:    ret
306   %1 = load fp128, ptr @U, align 16
307   %2 = fsub fp128 0xL00000000000000000000000000000000, %1
308   %3 = fsub fp128 %2, %1
309   %4 = fadd fp128 %1, 0xL00000000000000000000000000000000
310   %5 = load fp128, ptr @Y1, align 16
311   %6 = fmul fp128 %2, %5
312   %7 = fadd fp128 %1, %4
313   %8 = fsub fp128 0xL00000000000000000000000000000000, %7
314   store fp128 %8, ptr @X, align 16
315   %9 = fmul fp128 %3, %5
316   %10 = fmul fp128 0xL00000000000000000000000000000000, %4
317   store fp128 %10, ptr @S, align 16
318   %11 = fsub fp128 %6, %3
319   store fp128 %11, ptr @T, align 16
320   %12 = fadd fp128 0xL00000000000000000000000000000000, %9
321   store fp128 %12, ptr @Y, align 16
322   %13 = fmul fp128 0xL00000000000000000000000000000000, %5
323   %14 = fadd fp128 %13, 0xL0000000000000000BFFE000000000000
324   store fp128 %14, ptr @Y1, align 16
325   ret void