1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -mtriple=riscv32 -verify-machineinstrs < %s \
3 ; RUN: | FileCheck %s -check-prefix=RV32I
4 ; RUN: llc -mtriple=riscv32 -mattr=+f -target-abi ilp32f -verify-machineinstrs < %s \
5 ; RUN: | FileCheck %s -check-prefix=RV32I
6 ; RUN: llc -mtriple=riscv32 -mattr=+d -target-abi ilp32f -verify-machineinstrs < %s \
7 ; RUN: | FileCheck %s -check-prefix=RV32I
8 ; RUN: llc -mtriple=riscv32 -mattr=+d -target-abi ilp32d -verify-machineinstrs < %s \
9 ; RUN: | FileCheck %s -check-prefix=RV32I
10 ; RUN: llc -mtriple=riscv32 -verify-machineinstrs -frame-pointer=all < %s \
11 ; RUN: | FileCheck %s -check-prefix=RV32I-WITH-FP
12 ; RUN: llc -mtriple=riscv32 -mattr=+zcmp -verify-machineinstrs < %s \
13 ; RUN: | FileCheck %s -check-prefixes=RV32IZCMP
14 ; RUN: llc -mtriple=riscv32 -mattr=+zcmp -verify-machineinstrs \
15 ; RUN: -frame-pointer=all < %s | FileCheck %s -check-prefixes=RV32IZCMP-WITH-FP
16 ; RUN: llc -mtriple=riscv64 -verify-machineinstrs < %s \
17 ; RUN: | FileCheck %s -check-prefix=RV64I
18 ; RUN: llc -mtriple=riscv64 -mattr=+f -target-abi lp64f -verify-machineinstrs < %s \
19 ; RUN: | FileCheck %s -check-prefix=RV64I
20 ; RUN: llc -mtriple=riscv64 -mattr=+d -target-abi lp64f -verify-machineinstrs < %s \
21 ; RUN: | FileCheck %s -check-prefix=RV64I
22 ; RUN: llc -mtriple=riscv64 -mattr=+d -target-abi lp64d -verify-machineinstrs < %s \
23 ; RUN: | FileCheck %s -check-prefix=RV64I
24 ; RUN: llc -mtriple=riscv64 -verify-machineinstrs -frame-pointer=all < %s \
25 ; RUN: | FileCheck %s -check-prefix=RV64I-WITH-FP
26 ; RUN: llc -mtriple=riscv64 -mattr=+zcmp -verify-machineinstrs < %s \
27 ; RUN: | FileCheck %s -check-prefixes=RV64IZCMP
28 ; RUN: llc -mtriple=riscv64 -mattr=+zcmp -verify-machineinstrs \
29 ; RUN: -frame-pointer=all < %s | FileCheck %s -check-prefixes=RV64IZCMP-WITH-FP
31 @var = global [32 x i32] zeroinitializer
33 ; This function tests that RISCVRegisterInfo::getCalleeSavedRegs returns
34 ; something appropriate.
36 define void @callee() nounwind {
37 ; RV32I-LABEL: callee:
39 ; RV32I-NEXT: addi sp, sp, -80
40 ; RV32I-NEXT: sw ra, 76(sp) # 4-byte Folded Spill
41 ; RV32I-NEXT: sw s0, 72(sp) # 4-byte Folded Spill
42 ; RV32I-NEXT: sw s1, 68(sp) # 4-byte Folded Spill
43 ; RV32I-NEXT: sw s2, 64(sp) # 4-byte Folded Spill
44 ; RV32I-NEXT: sw s3, 60(sp) # 4-byte Folded Spill
45 ; RV32I-NEXT: sw s4, 56(sp) # 4-byte Folded Spill
46 ; RV32I-NEXT: sw s5, 52(sp) # 4-byte Folded Spill
47 ; RV32I-NEXT: sw s6, 48(sp) # 4-byte Folded Spill
48 ; RV32I-NEXT: sw s7, 44(sp) # 4-byte Folded Spill
49 ; RV32I-NEXT: sw s8, 40(sp) # 4-byte Folded Spill
50 ; RV32I-NEXT: sw s9, 36(sp) # 4-byte Folded Spill
51 ; RV32I-NEXT: sw s10, 32(sp) # 4-byte Folded Spill
52 ; RV32I-NEXT: sw s11, 28(sp) # 4-byte Folded Spill
53 ; RV32I-NEXT: lui a6, %hi(var)
54 ; RV32I-NEXT: lw a0, %lo(var)(a6)
55 ; RV32I-NEXT: sw a0, 24(sp) # 4-byte Folded Spill
56 ; RV32I-NEXT: lw a0, %lo(var+4)(a6)
57 ; RV32I-NEXT: sw a0, 20(sp) # 4-byte Folded Spill
58 ; RV32I-NEXT: lw a0, %lo(var+8)(a6)
59 ; RV32I-NEXT: sw a0, 16(sp) # 4-byte Folded Spill
60 ; RV32I-NEXT: lw a0, %lo(var+12)(a6)
61 ; RV32I-NEXT: sw a0, 12(sp) # 4-byte Folded Spill
62 ; RV32I-NEXT: addi a5, a6, %lo(var)
63 ; RV32I-NEXT: lw a0, 16(a5)
64 ; RV32I-NEXT: sw a0, 8(sp) # 4-byte Folded Spill
65 ; RV32I-NEXT: lw a0, 20(a5)
66 ; RV32I-NEXT: sw a0, 4(sp) # 4-byte Folded Spill
67 ; RV32I-NEXT: lw t0, 24(a5)
68 ; RV32I-NEXT: lw t1, 28(a5)
69 ; RV32I-NEXT: lw t2, 32(a5)
70 ; RV32I-NEXT: lw t3, 36(a5)
71 ; RV32I-NEXT: lw t4, 40(a5)
72 ; RV32I-NEXT: lw t5, 44(a5)
73 ; RV32I-NEXT: lw t6, 48(a5)
74 ; RV32I-NEXT: lw s0, 52(a5)
75 ; RV32I-NEXT: lw s1, 56(a5)
76 ; RV32I-NEXT: lw s2, 60(a5)
77 ; RV32I-NEXT: lw s3, 64(a5)
78 ; RV32I-NEXT: lw s4, 68(a5)
79 ; RV32I-NEXT: lw s5, 72(a5)
80 ; RV32I-NEXT: lw s6, 76(a5)
81 ; RV32I-NEXT: lw s7, 80(a5)
82 ; RV32I-NEXT: lw s8, 84(a5)
83 ; RV32I-NEXT: lw s9, 88(a5)
84 ; RV32I-NEXT: lw s10, 92(a5)
85 ; RV32I-NEXT: lw s11, 96(a5)
86 ; RV32I-NEXT: lw ra, 100(a5)
87 ; RV32I-NEXT: lw a7, 104(a5)
88 ; RV32I-NEXT: lw a4, 108(a5)
89 ; RV32I-NEXT: lw a0, 124(a5)
90 ; RV32I-NEXT: lw a1, 120(a5)
91 ; RV32I-NEXT: lw a2, 116(a5)
92 ; RV32I-NEXT: lw a3, 112(a5)
93 ; RV32I-NEXT: sw a0, 124(a5)
94 ; RV32I-NEXT: sw a1, 120(a5)
95 ; RV32I-NEXT: sw a2, 116(a5)
96 ; RV32I-NEXT: sw a3, 112(a5)
97 ; RV32I-NEXT: sw a4, 108(a5)
98 ; RV32I-NEXT: sw a7, 104(a5)
99 ; RV32I-NEXT: sw ra, 100(a5)
100 ; RV32I-NEXT: sw s11, 96(a5)
101 ; RV32I-NEXT: sw s10, 92(a5)
102 ; RV32I-NEXT: sw s9, 88(a5)
103 ; RV32I-NEXT: sw s8, 84(a5)
104 ; RV32I-NEXT: sw s7, 80(a5)
105 ; RV32I-NEXT: sw s6, 76(a5)
106 ; RV32I-NEXT: sw s5, 72(a5)
107 ; RV32I-NEXT: sw s4, 68(a5)
108 ; RV32I-NEXT: sw s3, 64(a5)
109 ; RV32I-NEXT: sw s2, 60(a5)
110 ; RV32I-NEXT: sw s1, 56(a5)
111 ; RV32I-NEXT: sw s0, 52(a5)
112 ; RV32I-NEXT: sw t6, 48(a5)
113 ; RV32I-NEXT: sw t5, 44(a5)
114 ; RV32I-NEXT: sw t4, 40(a5)
115 ; RV32I-NEXT: sw t3, 36(a5)
116 ; RV32I-NEXT: sw t2, 32(a5)
117 ; RV32I-NEXT: sw t1, 28(a5)
118 ; RV32I-NEXT: sw t0, 24(a5)
119 ; RV32I-NEXT: lw a0, 4(sp) # 4-byte Folded Reload
120 ; RV32I-NEXT: sw a0, 20(a5)
121 ; RV32I-NEXT: lw a0, 8(sp) # 4-byte Folded Reload
122 ; RV32I-NEXT: sw a0, 16(a5)
123 ; RV32I-NEXT: lw a0, 12(sp) # 4-byte Folded Reload
124 ; RV32I-NEXT: sw a0, %lo(var+12)(a6)
125 ; RV32I-NEXT: lw a0, 16(sp) # 4-byte Folded Reload
126 ; RV32I-NEXT: sw a0, %lo(var+8)(a6)
127 ; RV32I-NEXT: lw a0, 20(sp) # 4-byte Folded Reload
128 ; RV32I-NEXT: sw a0, %lo(var+4)(a6)
129 ; RV32I-NEXT: lw a0, 24(sp) # 4-byte Folded Reload
130 ; RV32I-NEXT: sw a0, %lo(var)(a6)
131 ; RV32I-NEXT: lw ra, 76(sp) # 4-byte Folded Reload
132 ; RV32I-NEXT: lw s0, 72(sp) # 4-byte Folded Reload
133 ; RV32I-NEXT: lw s1, 68(sp) # 4-byte Folded Reload
134 ; RV32I-NEXT: lw s2, 64(sp) # 4-byte Folded Reload
135 ; RV32I-NEXT: lw s3, 60(sp) # 4-byte Folded Reload
136 ; RV32I-NEXT: lw s4, 56(sp) # 4-byte Folded Reload
137 ; RV32I-NEXT: lw s5, 52(sp) # 4-byte Folded Reload
138 ; RV32I-NEXT: lw s6, 48(sp) # 4-byte Folded Reload
139 ; RV32I-NEXT: lw s7, 44(sp) # 4-byte Folded Reload
140 ; RV32I-NEXT: lw s8, 40(sp) # 4-byte Folded Reload
141 ; RV32I-NEXT: lw s9, 36(sp) # 4-byte Folded Reload
142 ; RV32I-NEXT: lw s10, 32(sp) # 4-byte Folded Reload
143 ; RV32I-NEXT: lw s11, 28(sp) # 4-byte Folded Reload
144 ; RV32I-NEXT: addi sp, sp, 80
147 ; RV32I-WITH-FP-LABEL: callee:
148 ; RV32I-WITH-FP: # %bb.0:
149 ; RV32I-WITH-FP-NEXT: addi sp, sp, -80
150 ; RV32I-WITH-FP-NEXT: sw ra, 76(sp) # 4-byte Folded Spill
151 ; RV32I-WITH-FP-NEXT: sw s0, 72(sp) # 4-byte Folded Spill
152 ; RV32I-WITH-FP-NEXT: sw s1, 68(sp) # 4-byte Folded Spill
153 ; RV32I-WITH-FP-NEXT: sw s2, 64(sp) # 4-byte Folded Spill
154 ; RV32I-WITH-FP-NEXT: sw s3, 60(sp) # 4-byte Folded Spill
155 ; RV32I-WITH-FP-NEXT: sw s4, 56(sp) # 4-byte Folded Spill
156 ; RV32I-WITH-FP-NEXT: sw s5, 52(sp) # 4-byte Folded Spill
157 ; RV32I-WITH-FP-NEXT: sw s6, 48(sp) # 4-byte Folded Spill
158 ; RV32I-WITH-FP-NEXT: sw s7, 44(sp) # 4-byte Folded Spill
159 ; RV32I-WITH-FP-NEXT: sw s8, 40(sp) # 4-byte Folded Spill
160 ; RV32I-WITH-FP-NEXT: sw s9, 36(sp) # 4-byte Folded Spill
161 ; RV32I-WITH-FP-NEXT: sw s10, 32(sp) # 4-byte Folded Spill
162 ; RV32I-WITH-FP-NEXT: sw s11, 28(sp) # 4-byte Folded Spill
163 ; RV32I-WITH-FP-NEXT: addi s0, sp, 80
164 ; RV32I-WITH-FP-NEXT: lui a6, %hi(var)
165 ; RV32I-WITH-FP-NEXT: lw a0, %lo(var)(a6)
166 ; RV32I-WITH-FP-NEXT: sw a0, -56(s0) # 4-byte Folded Spill
167 ; RV32I-WITH-FP-NEXT: lw a0, %lo(var+4)(a6)
168 ; RV32I-WITH-FP-NEXT: sw a0, -60(s0) # 4-byte Folded Spill
169 ; RV32I-WITH-FP-NEXT: lw a0, %lo(var+8)(a6)
170 ; RV32I-WITH-FP-NEXT: sw a0, -64(s0) # 4-byte Folded Spill
171 ; RV32I-WITH-FP-NEXT: lw a0, %lo(var+12)(a6)
172 ; RV32I-WITH-FP-NEXT: sw a0, -68(s0) # 4-byte Folded Spill
173 ; RV32I-WITH-FP-NEXT: addi a5, a6, %lo(var)
174 ; RV32I-WITH-FP-NEXT: lw a0, 16(a5)
175 ; RV32I-WITH-FP-NEXT: sw a0, -72(s0) # 4-byte Folded Spill
176 ; RV32I-WITH-FP-NEXT: lw a0, 20(a5)
177 ; RV32I-WITH-FP-NEXT: sw a0, -76(s0) # 4-byte Folded Spill
178 ; RV32I-WITH-FP-NEXT: lw a0, 24(a5)
179 ; RV32I-WITH-FP-NEXT: sw a0, -80(s0) # 4-byte Folded Spill
180 ; RV32I-WITH-FP-NEXT: lw t1, 28(a5)
181 ; RV32I-WITH-FP-NEXT: lw t2, 32(a5)
182 ; RV32I-WITH-FP-NEXT: lw t3, 36(a5)
183 ; RV32I-WITH-FP-NEXT: lw t4, 40(a5)
184 ; RV32I-WITH-FP-NEXT: lw t5, 44(a5)
185 ; RV32I-WITH-FP-NEXT: lw t6, 48(a5)
186 ; RV32I-WITH-FP-NEXT: lw s1, 52(a5)
187 ; RV32I-WITH-FP-NEXT: lw s2, 56(a5)
188 ; RV32I-WITH-FP-NEXT: lw s3, 60(a5)
189 ; RV32I-WITH-FP-NEXT: lw s4, 64(a5)
190 ; RV32I-WITH-FP-NEXT: lw s5, 68(a5)
191 ; RV32I-WITH-FP-NEXT: lw s6, 72(a5)
192 ; RV32I-WITH-FP-NEXT: lw s7, 76(a5)
193 ; RV32I-WITH-FP-NEXT: lw s8, 80(a5)
194 ; RV32I-WITH-FP-NEXT: lw s9, 84(a5)
195 ; RV32I-WITH-FP-NEXT: lw s10, 88(a5)
196 ; RV32I-WITH-FP-NEXT: lw s11, 92(a5)
197 ; RV32I-WITH-FP-NEXT: lw ra, 96(a5)
198 ; RV32I-WITH-FP-NEXT: lw t0, 100(a5)
199 ; RV32I-WITH-FP-NEXT: lw a7, 104(a5)
200 ; RV32I-WITH-FP-NEXT: lw a4, 108(a5)
201 ; RV32I-WITH-FP-NEXT: lw a0, 124(a5)
202 ; RV32I-WITH-FP-NEXT: lw a1, 120(a5)
203 ; RV32I-WITH-FP-NEXT: lw a2, 116(a5)
204 ; RV32I-WITH-FP-NEXT: lw a3, 112(a5)
205 ; RV32I-WITH-FP-NEXT: sw a0, 124(a5)
206 ; RV32I-WITH-FP-NEXT: sw a1, 120(a5)
207 ; RV32I-WITH-FP-NEXT: sw a2, 116(a5)
208 ; RV32I-WITH-FP-NEXT: sw a3, 112(a5)
209 ; RV32I-WITH-FP-NEXT: sw a4, 108(a5)
210 ; RV32I-WITH-FP-NEXT: sw a7, 104(a5)
211 ; RV32I-WITH-FP-NEXT: sw t0, 100(a5)
212 ; RV32I-WITH-FP-NEXT: sw ra, 96(a5)
213 ; RV32I-WITH-FP-NEXT: sw s11, 92(a5)
214 ; RV32I-WITH-FP-NEXT: sw s10, 88(a5)
215 ; RV32I-WITH-FP-NEXT: sw s9, 84(a5)
216 ; RV32I-WITH-FP-NEXT: sw s8, 80(a5)
217 ; RV32I-WITH-FP-NEXT: sw s7, 76(a5)
218 ; RV32I-WITH-FP-NEXT: sw s6, 72(a5)
219 ; RV32I-WITH-FP-NEXT: sw s5, 68(a5)
220 ; RV32I-WITH-FP-NEXT: sw s4, 64(a5)
221 ; RV32I-WITH-FP-NEXT: sw s3, 60(a5)
222 ; RV32I-WITH-FP-NEXT: sw s2, 56(a5)
223 ; RV32I-WITH-FP-NEXT: sw s1, 52(a5)
224 ; RV32I-WITH-FP-NEXT: sw t6, 48(a5)
225 ; RV32I-WITH-FP-NEXT: sw t5, 44(a5)
226 ; RV32I-WITH-FP-NEXT: sw t4, 40(a5)
227 ; RV32I-WITH-FP-NEXT: sw t3, 36(a5)
228 ; RV32I-WITH-FP-NEXT: sw t2, 32(a5)
229 ; RV32I-WITH-FP-NEXT: sw t1, 28(a5)
230 ; RV32I-WITH-FP-NEXT: lw a0, -80(s0) # 4-byte Folded Reload
231 ; RV32I-WITH-FP-NEXT: sw a0, 24(a5)
232 ; RV32I-WITH-FP-NEXT: lw a0, -76(s0) # 4-byte Folded Reload
233 ; RV32I-WITH-FP-NEXT: sw a0, 20(a5)
234 ; RV32I-WITH-FP-NEXT: lw a0, -72(s0) # 4-byte Folded Reload
235 ; RV32I-WITH-FP-NEXT: sw a0, 16(a5)
236 ; RV32I-WITH-FP-NEXT: lw a0, -68(s0) # 4-byte Folded Reload
237 ; RV32I-WITH-FP-NEXT: sw a0, %lo(var+12)(a6)
238 ; RV32I-WITH-FP-NEXT: lw a0, -64(s0) # 4-byte Folded Reload
239 ; RV32I-WITH-FP-NEXT: sw a0, %lo(var+8)(a6)
240 ; RV32I-WITH-FP-NEXT: lw a0, -60(s0) # 4-byte Folded Reload
241 ; RV32I-WITH-FP-NEXT: sw a0, %lo(var+4)(a6)
242 ; RV32I-WITH-FP-NEXT: lw a0, -56(s0) # 4-byte Folded Reload
243 ; RV32I-WITH-FP-NEXT: sw a0, %lo(var)(a6)
244 ; RV32I-WITH-FP-NEXT: lw ra, 76(sp) # 4-byte Folded Reload
245 ; RV32I-WITH-FP-NEXT: lw s0, 72(sp) # 4-byte Folded Reload
246 ; RV32I-WITH-FP-NEXT: lw s1, 68(sp) # 4-byte Folded Reload
247 ; RV32I-WITH-FP-NEXT: lw s2, 64(sp) # 4-byte Folded Reload
248 ; RV32I-WITH-FP-NEXT: lw s3, 60(sp) # 4-byte Folded Reload
249 ; RV32I-WITH-FP-NEXT: lw s4, 56(sp) # 4-byte Folded Reload
250 ; RV32I-WITH-FP-NEXT: lw s5, 52(sp) # 4-byte Folded Reload
251 ; RV32I-WITH-FP-NEXT: lw s6, 48(sp) # 4-byte Folded Reload
252 ; RV32I-WITH-FP-NEXT: lw s7, 44(sp) # 4-byte Folded Reload
253 ; RV32I-WITH-FP-NEXT: lw s8, 40(sp) # 4-byte Folded Reload
254 ; RV32I-WITH-FP-NEXT: lw s9, 36(sp) # 4-byte Folded Reload
255 ; RV32I-WITH-FP-NEXT: lw s10, 32(sp) # 4-byte Folded Reload
256 ; RV32I-WITH-FP-NEXT: lw s11, 28(sp) # 4-byte Folded Reload
257 ; RV32I-WITH-FP-NEXT: addi sp, sp, 80
258 ; RV32I-WITH-FP-NEXT: ret
260 ; RV32IZCMP-LABEL: callee:
261 ; RV32IZCMP: # %bb.0:
262 ; RV32IZCMP-NEXT: cm.push {ra, s0-s11}, -96
263 ; RV32IZCMP-NEXT: lui a6, %hi(var)
264 ; RV32IZCMP-NEXT: lw a0, %lo(var)(a6)
265 ; RV32IZCMP-NEXT: sw a0, 28(sp) # 4-byte Folded Spill
266 ; RV32IZCMP-NEXT: lw a0, %lo(var+4)(a6)
267 ; RV32IZCMP-NEXT: sw a0, 24(sp) # 4-byte Folded Spill
268 ; RV32IZCMP-NEXT: lw a0, %lo(var+8)(a6)
269 ; RV32IZCMP-NEXT: sw a0, 20(sp) # 4-byte Folded Spill
270 ; RV32IZCMP-NEXT: lw a0, %lo(var+12)(a6)
271 ; RV32IZCMP-NEXT: sw a0, 16(sp) # 4-byte Folded Spill
272 ; RV32IZCMP-NEXT: addi a5, a6, %lo(var)
273 ; RV32IZCMP-NEXT: lw a0, 16(a5)
274 ; RV32IZCMP-NEXT: sw a0, 12(sp) # 4-byte Folded Spill
275 ; RV32IZCMP-NEXT: lw a0, 20(a5)
276 ; RV32IZCMP-NEXT: sw a0, 8(sp) # 4-byte Folded Spill
277 ; RV32IZCMP-NEXT: lw t4, 24(a5)
278 ; RV32IZCMP-NEXT: lw t5, 28(a5)
279 ; RV32IZCMP-NEXT: lw t6, 32(a5)
280 ; RV32IZCMP-NEXT: lw s2, 36(a5)
281 ; RV32IZCMP-NEXT: lw s3, 40(a5)
282 ; RV32IZCMP-NEXT: lw s4, 44(a5)
283 ; RV32IZCMP-NEXT: lw s5, 48(a5)
284 ; RV32IZCMP-NEXT: lw s6, 52(a5)
285 ; RV32IZCMP-NEXT: lw s7, 56(a5)
286 ; RV32IZCMP-NEXT: lw s8, 60(a5)
287 ; RV32IZCMP-NEXT: lw s9, 64(a5)
288 ; RV32IZCMP-NEXT: lw s10, 68(a5)
289 ; RV32IZCMP-NEXT: lw s11, 72(a5)
290 ; RV32IZCMP-NEXT: lw ra, 76(a5)
291 ; RV32IZCMP-NEXT: lw s1, 80(a5)
292 ; RV32IZCMP-NEXT: lw t3, 84(a5)
293 ; RV32IZCMP-NEXT: lw t2, 88(a5)
294 ; RV32IZCMP-NEXT: lw t1, 92(a5)
295 ; RV32IZCMP-NEXT: lw t0, 96(a5)
296 ; RV32IZCMP-NEXT: lw s0, 100(a5)
297 ; RV32IZCMP-NEXT: lw a7, 104(a5)
298 ; RV32IZCMP-NEXT: lw a4, 108(a5)
299 ; RV32IZCMP-NEXT: lw a0, 124(a5)
300 ; RV32IZCMP-NEXT: lw a1, 120(a5)
301 ; RV32IZCMP-NEXT: lw a2, 116(a5)
302 ; RV32IZCMP-NEXT: lw a3, 112(a5)
303 ; RV32IZCMP-NEXT: sw a0, 124(a5)
304 ; RV32IZCMP-NEXT: sw a1, 120(a5)
305 ; RV32IZCMP-NEXT: sw a2, 116(a5)
306 ; RV32IZCMP-NEXT: sw a3, 112(a5)
307 ; RV32IZCMP-NEXT: sw a4, 108(a5)
308 ; RV32IZCMP-NEXT: sw a7, 104(a5)
309 ; RV32IZCMP-NEXT: sw s0, 100(a5)
310 ; RV32IZCMP-NEXT: sw t0, 96(a5)
311 ; RV32IZCMP-NEXT: sw t1, 92(a5)
312 ; RV32IZCMP-NEXT: sw t2, 88(a5)
313 ; RV32IZCMP-NEXT: sw t3, 84(a5)
314 ; RV32IZCMP-NEXT: sw s1, 80(a5)
315 ; RV32IZCMP-NEXT: sw ra, 76(a5)
316 ; RV32IZCMP-NEXT: sw s11, 72(a5)
317 ; RV32IZCMP-NEXT: sw s10, 68(a5)
318 ; RV32IZCMP-NEXT: sw s9, 64(a5)
319 ; RV32IZCMP-NEXT: sw s8, 60(a5)
320 ; RV32IZCMP-NEXT: sw s7, 56(a5)
321 ; RV32IZCMP-NEXT: sw s6, 52(a5)
322 ; RV32IZCMP-NEXT: sw s5, 48(a5)
323 ; RV32IZCMP-NEXT: sw s4, 44(a5)
324 ; RV32IZCMP-NEXT: sw s3, 40(a5)
325 ; RV32IZCMP-NEXT: sw s2, 36(a5)
326 ; RV32IZCMP-NEXT: sw t6, 32(a5)
327 ; RV32IZCMP-NEXT: sw t5, 28(a5)
328 ; RV32IZCMP-NEXT: sw t4, 24(a5)
329 ; RV32IZCMP-NEXT: lw a0, 8(sp) # 4-byte Folded Reload
330 ; RV32IZCMP-NEXT: sw a0, 20(a5)
331 ; RV32IZCMP-NEXT: lw a0, 12(sp) # 4-byte Folded Reload
332 ; RV32IZCMP-NEXT: sw a0, 16(a5)
333 ; RV32IZCMP-NEXT: lw a0, 16(sp) # 4-byte Folded Reload
334 ; RV32IZCMP-NEXT: sw a0, %lo(var+12)(a6)
335 ; RV32IZCMP-NEXT: lw a0, 20(sp) # 4-byte Folded Reload
336 ; RV32IZCMP-NEXT: sw a0, %lo(var+8)(a6)
337 ; RV32IZCMP-NEXT: lw a0, 24(sp) # 4-byte Folded Reload
338 ; RV32IZCMP-NEXT: sw a0, %lo(var+4)(a6)
339 ; RV32IZCMP-NEXT: lw a0, 28(sp) # 4-byte Folded Reload
340 ; RV32IZCMP-NEXT: sw a0, %lo(var)(a6)
341 ; RV32IZCMP-NEXT: cm.popret {ra, s0-s11}, 96
343 ; RV32IZCMP-WITH-FP-LABEL: callee:
344 ; RV32IZCMP-WITH-FP: # %bb.0:
345 ; RV32IZCMP-WITH-FP-NEXT: addi sp, sp, -80
346 ; RV32IZCMP-WITH-FP-NEXT: sw ra, 76(sp) # 4-byte Folded Spill
347 ; RV32IZCMP-WITH-FP-NEXT: sw s0, 72(sp) # 4-byte Folded Spill
348 ; RV32IZCMP-WITH-FP-NEXT: sw s1, 68(sp) # 4-byte Folded Spill
349 ; RV32IZCMP-WITH-FP-NEXT: sw s2, 64(sp) # 4-byte Folded Spill
350 ; RV32IZCMP-WITH-FP-NEXT: sw s3, 60(sp) # 4-byte Folded Spill
351 ; RV32IZCMP-WITH-FP-NEXT: sw s4, 56(sp) # 4-byte Folded Spill
352 ; RV32IZCMP-WITH-FP-NEXT: sw s5, 52(sp) # 4-byte Folded Spill
353 ; RV32IZCMP-WITH-FP-NEXT: sw s6, 48(sp) # 4-byte Folded Spill
354 ; RV32IZCMP-WITH-FP-NEXT: sw s7, 44(sp) # 4-byte Folded Spill
355 ; RV32IZCMP-WITH-FP-NEXT: sw s8, 40(sp) # 4-byte Folded Spill
356 ; RV32IZCMP-WITH-FP-NEXT: sw s9, 36(sp) # 4-byte Folded Spill
357 ; RV32IZCMP-WITH-FP-NEXT: sw s10, 32(sp) # 4-byte Folded Spill
358 ; RV32IZCMP-WITH-FP-NEXT: sw s11, 28(sp) # 4-byte Folded Spill
359 ; RV32IZCMP-WITH-FP-NEXT: addi s0, sp, 80
360 ; RV32IZCMP-WITH-FP-NEXT: lui a6, %hi(var)
361 ; RV32IZCMP-WITH-FP-NEXT: lw a0, %lo(var)(a6)
362 ; RV32IZCMP-WITH-FP-NEXT: sw a0, -56(s0) # 4-byte Folded Spill
363 ; RV32IZCMP-WITH-FP-NEXT: lw a0, %lo(var+4)(a6)
364 ; RV32IZCMP-WITH-FP-NEXT: sw a0, -60(s0) # 4-byte Folded Spill
365 ; RV32IZCMP-WITH-FP-NEXT: lw a0, %lo(var+8)(a6)
366 ; RV32IZCMP-WITH-FP-NEXT: sw a0, -64(s0) # 4-byte Folded Spill
367 ; RV32IZCMP-WITH-FP-NEXT: lw a0, %lo(var+12)(a6)
368 ; RV32IZCMP-WITH-FP-NEXT: sw a0, -68(s0) # 4-byte Folded Spill
369 ; RV32IZCMP-WITH-FP-NEXT: addi a5, a6, %lo(var)
370 ; RV32IZCMP-WITH-FP-NEXT: lw a0, 16(a5)
371 ; RV32IZCMP-WITH-FP-NEXT: sw a0, -72(s0) # 4-byte Folded Spill
372 ; RV32IZCMP-WITH-FP-NEXT: lw a0, 20(a5)
373 ; RV32IZCMP-WITH-FP-NEXT: sw a0, -76(s0) # 4-byte Folded Spill
374 ; RV32IZCMP-WITH-FP-NEXT: lw a0, 24(a5)
375 ; RV32IZCMP-WITH-FP-NEXT: sw a0, -80(s0) # 4-byte Folded Spill
376 ; RV32IZCMP-WITH-FP-NEXT: lw t5, 28(a5)
377 ; RV32IZCMP-WITH-FP-NEXT: lw t6, 32(a5)
378 ; RV32IZCMP-WITH-FP-NEXT: lw s2, 36(a5)
379 ; RV32IZCMP-WITH-FP-NEXT: lw s3, 40(a5)
380 ; RV32IZCMP-WITH-FP-NEXT: lw s4, 44(a5)
381 ; RV32IZCMP-WITH-FP-NEXT: lw s5, 48(a5)
382 ; RV32IZCMP-WITH-FP-NEXT: lw s6, 52(a5)
383 ; RV32IZCMP-WITH-FP-NEXT: lw s7, 56(a5)
384 ; RV32IZCMP-WITH-FP-NEXT: lw s8, 60(a5)
385 ; RV32IZCMP-WITH-FP-NEXT: lw s9, 64(a5)
386 ; RV32IZCMP-WITH-FP-NEXT: lw s10, 68(a5)
387 ; RV32IZCMP-WITH-FP-NEXT: lw s11, 72(a5)
388 ; RV32IZCMP-WITH-FP-NEXT: lw ra, 76(a5)
389 ; RV32IZCMP-WITH-FP-NEXT: lw t4, 80(a5)
390 ; RV32IZCMP-WITH-FP-NEXT: lw t3, 84(a5)
391 ; RV32IZCMP-WITH-FP-NEXT: lw t2, 88(a5)
392 ; RV32IZCMP-WITH-FP-NEXT: lw s1, 92(a5)
393 ; RV32IZCMP-WITH-FP-NEXT: lw t1, 96(a5)
394 ; RV32IZCMP-WITH-FP-NEXT: lw t0, 100(a5)
395 ; RV32IZCMP-WITH-FP-NEXT: lw a7, 104(a5)
396 ; RV32IZCMP-WITH-FP-NEXT: lw a4, 108(a5)
397 ; RV32IZCMP-WITH-FP-NEXT: lw a0, 124(a5)
398 ; RV32IZCMP-WITH-FP-NEXT: lw a1, 120(a5)
399 ; RV32IZCMP-WITH-FP-NEXT: lw a2, 116(a5)
400 ; RV32IZCMP-WITH-FP-NEXT: lw a3, 112(a5)
401 ; RV32IZCMP-WITH-FP-NEXT: sw a0, 124(a5)
402 ; RV32IZCMP-WITH-FP-NEXT: sw a1, 120(a5)
403 ; RV32IZCMP-WITH-FP-NEXT: sw a2, 116(a5)
404 ; RV32IZCMP-WITH-FP-NEXT: sw a3, 112(a5)
405 ; RV32IZCMP-WITH-FP-NEXT: sw a4, 108(a5)
406 ; RV32IZCMP-WITH-FP-NEXT: sw a7, 104(a5)
407 ; RV32IZCMP-WITH-FP-NEXT: sw t0, 100(a5)
408 ; RV32IZCMP-WITH-FP-NEXT: sw t1, 96(a5)
409 ; RV32IZCMP-WITH-FP-NEXT: sw s1, 92(a5)
410 ; RV32IZCMP-WITH-FP-NEXT: sw t2, 88(a5)
411 ; RV32IZCMP-WITH-FP-NEXT: sw t3, 84(a5)
412 ; RV32IZCMP-WITH-FP-NEXT: sw t4, 80(a5)
413 ; RV32IZCMP-WITH-FP-NEXT: sw ra, 76(a5)
414 ; RV32IZCMP-WITH-FP-NEXT: sw s11, 72(a5)
415 ; RV32IZCMP-WITH-FP-NEXT: sw s10, 68(a5)
416 ; RV32IZCMP-WITH-FP-NEXT: sw s9, 64(a5)
417 ; RV32IZCMP-WITH-FP-NEXT: sw s8, 60(a5)
418 ; RV32IZCMP-WITH-FP-NEXT: sw s7, 56(a5)
419 ; RV32IZCMP-WITH-FP-NEXT: sw s6, 52(a5)
420 ; RV32IZCMP-WITH-FP-NEXT: sw s5, 48(a5)
421 ; RV32IZCMP-WITH-FP-NEXT: sw s4, 44(a5)
422 ; RV32IZCMP-WITH-FP-NEXT: sw s3, 40(a5)
423 ; RV32IZCMP-WITH-FP-NEXT: sw s2, 36(a5)
424 ; RV32IZCMP-WITH-FP-NEXT: sw t6, 32(a5)
425 ; RV32IZCMP-WITH-FP-NEXT: sw t5, 28(a5)
426 ; RV32IZCMP-WITH-FP-NEXT: lw a0, -80(s0) # 4-byte Folded Reload
427 ; RV32IZCMP-WITH-FP-NEXT: sw a0, 24(a5)
428 ; RV32IZCMP-WITH-FP-NEXT: lw a0, -76(s0) # 4-byte Folded Reload
429 ; RV32IZCMP-WITH-FP-NEXT: sw a0, 20(a5)
430 ; RV32IZCMP-WITH-FP-NEXT: lw a0, -72(s0) # 4-byte Folded Reload
431 ; RV32IZCMP-WITH-FP-NEXT: sw a0, 16(a5)
432 ; RV32IZCMP-WITH-FP-NEXT: lw a0, -68(s0) # 4-byte Folded Reload
433 ; RV32IZCMP-WITH-FP-NEXT: sw a0, %lo(var+12)(a6)
434 ; RV32IZCMP-WITH-FP-NEXT: lw a0, -64(s0) # 4-byte Folded Reload
435 ; RV32IZCMP-WITH-FP-NEXT: sw a0, %lo(var+8)(a6)
436 ; RV32IZCMP-WITH-FP-NEXT: lw a0, -60(s0) # 4-byte Folded Reload
437 ; RV32IZCMP-WITH-FP-NEXT: sw a0, %lo(var+4)(a6)
438 ; RV32IZCMP-WITH-FP-NEXT: lw a0, -56(s0) # 4-byte Folded Reload
439 ; RV32IZCMP-WITH-FP-NEXT: sw a0, %lo(var)(a6)
440 ; RV32IZCMP-WITH-FP-NEXT: lw ra, 76(sp) # 4-byte Folded Reload
441 ; RV32IZCMP-WITH-FP-NEXT: lw s0, 72(sp) # 4-byte Folded Reload
442 ; RV32IZCMP-WITH-FP-NEXT: lw s1, 68(sp) # 4-byte Folded Reload
443 ; RV32IZCMP-WITH-FP-NEXT: lw s2, 64(sp) # 4-byte Folded Reload
444 ; RV32IZCMP-WITH-FP-NEXT: lw s3, 60(sp) # 4-byte Folded Reload
445 ; RV32IZCMP-WITH-FP-NEXT: lw s4, 56(sp) # 4-byte Folded Reload
446 ; RV32IZCMP-WITH-FP-NEXT: lw s5, 52(sp) # 4-byte Folded Reload
447 ; RV32IZCMP-WITH-FP-NEXT: lw s6, 48(sp) # 4-byte Folded Reload
448 ; RV32IZCMP-WITH-FP-NEXT: lw s7, 44(sp) # 4-byte Folded Reload
449 ; RV32IZCMP-WITH-FP-NEXT: lw s8, 40(sp) # 4-byte Folded Reload
450 ; RV32IZCMP-WITH-FP-NEXT: lw s9, 36(sp) # 4-byte Folded Reload
451 ; RV32IZCMP-WITH-FP-NEXT: lw s10, 32(sp) # 4-byte Folded Reload
452 ; RV32IZCMP-WITH-FP-NEXT: lw s11, 28(sp) # 4-byte Folded Reload
453 ; RV32IZCMP-WITH-FP-NEXT: addi sp, sp, 80
454 ; RV32IZCMP-WITH-FP-NEXT: ret
456 ; RV64I-LABEL: callee:
458 ; RV64I-NEXT: addi sp, sp, -160
459 ; RV64I-NEXT: sd ra, 152(sp) # 8-byte Folded Spill
460 ; RV64I-NEXT: sd s0, 144(sp) # 8-byte Folded Spill
461 ; RV64I-NEXT: sd s1, 136(sp) # 8-byte Folded Spill
462 ; RV64I-NEXT: sd s2, 128(sp) # 8-byte Folded Spill
463 ; RV64I-NEXT: sd s3, 120(sp) # 8-byte Folded Spill
464 ; RV64I-NEXT: sd s4, 112(sp) # 8-byte Folded Spill
465 ; RV64I-NEXT: sd s5, 104(sp) # 8-byte Folded Spill
466 ; RV64I-NEXT: sd s6, 96(sp) # 8-byte Folded Spill
467 ; RV64I-NEXT: sd s7, 88(sp) # 8-byte Folded Spill
468 ; RV64I-NEXT: sd s8, 80(sp) # 8-byte Folded Spill
469 ; RV64I-NEXT: sd s9, 72(sp) # 8-byte Folded Spill
470 ; RV64I-NEXT: sd s10, 64(sp) # 8-byte Folded Spill
471 ; RV64I-NEXT: sd s11, 56(sp) # 8-byte Folded Spill
472 ; RV64I-NEXT: lui a6, %hi(var)
473 ; RV64I-NEXT: lw a0, %lo(var)(a6)
474 ; RV64I-NEXT: sd a0, 48(sp) # 8-byte Folded Spill
475 ; RV64I-NEXT: lw a0, %lo(var+4)(a6)
476 ; RV64I-NEXT: sd a0, 40(sp) # 8-byte Folded Spill
477 ; RV64I-NEXT: lw a0, %lo(var+8)(a6)
478 ; RV64I-NEXT: sd a0, 32(sp) # 8-byte Folded Spill
479 ; RV64I-NEXT: lw a0, %lo(var+12)(a6)
480 ; RV64I-NEXT: sd a0, 24(sp) # 8-byte Folded Spill
481 ; RV64I-NEXT: addi a5, a6, %lo(var)
482 ; RV64I-NEXT: lw a0, 16(a5)
483 ; RV64I-NEXT: sd a0, 16(sp) # 8-byte Folded Spill
484 ; RV64I-NEXT: lw a0, 20(a5)
485 ; RV64I-NEXT: sd a0, 8(sp) # 8-byte Folded Spill
486 ; RV64I-NEXT: lw t0, 24(a5)
487 ; RV64I-NEXT: lw t1, 28(a5)
488 ; RV64I-NEXT: lw t2, 32(a5)
489 ; RV64I-NEXT: lw t3, 36(a5)
490 ; RV64I-NEXT: lw t4, 40(a5)
491 ; RV64I-NEXT: lw t5, 44(a5)
492 ; RV64I-NEXT: lw t6, 48(a5)
493 ; RV64I-NEXT: lw s0, 52(a5)
494 ; RV64I-NEXT: lw s1, 56(a5)
495 ; RV64I-NEXT: lw s2, 60(a5)
496 ; RV64I-NEXT: lw s3, 64(a5)
497 ; RV64I-NEXT: lw s4, 68(a5)
498 ; RV64I-NEXT: lw s5, 72(a5)
499 ; RV64I-NEXT: lw s6, 76(a5)
500 ; RV64I-NEXT: lw s7, 80(a5)
501 ; RV64I-NEXT: lw s8, 84(a5)
502 ; RV64I-NEXT: lw s9, 88(a5)
503 ; RV64I-NEXT: lw s10, 92(a5)
504 ; RV64I-NEXT: lw s11, 96(a5)
505 ; RV64I-NEXT: lw ra, 100(a5)
506 ; RV64I-NEXT: lw a7, 104(a5)
507 ; RV64I-NEXT: lw a4, 108(a5)
508 ; RV64I-NEXT: lw a0, 124(a5)
509 ; RV64I-NEXT: lw a1, 120(a5)
510 ; RV64I-NEXT: lw a2, 116(a5)
511 ; RV64I-NEXT: lw a3, 112(a5)
512 ; RV64I-NEXT: sw a0, 124(a5)
513 ; RV64I-NEXT: sw a1, 120(a5)
514 ; RV64I-NEXT: sw a2, 116(a5)
515 ; RV64I-NEXT: sw a3, 112(a5)
516 ; RV64I-NEXT: sw a4, 108(a5)
517 ; RV64I-NEXT: sw a7, 104(a5)
518 ; RV64I-NEXT: sw ra, 100(a5)
519 ; RV64I-NEXT: sw s11, 96(a5)
520 ; RV64I-NEXT: sw s10, 92(a5)
521 ; RV64I-NEXT: sw s9, 88(a5)
522 ; RV64I-NEXT: sw s8, 84(a5)
523 ; RV64I-NEXT: sw s7, 80(a5)
524 ; RV64I-NEXT: sw s6, 76(a5)
525 ; RV64I-NEXT: sw s5, 72(a5)
526 ; RV64I-NEXT: sw s4, 68(a5)
527 ; RV64I-NEXT: sw s3, 64(a5)
528 ; RV64I-NEXT: sw s2, 60(a5)
529 ; RV64I-NEXT: sw s1, 56(a5)
530 ; RV64I-NEXT: sw s0, 52(a5)
531 ; RV64I-NEXT: sw t6, 48(a5)
532 ; RV64I-NEXT: sw t5, 44(a5)
533 ; RV64I-NEXT: sw t4, 40(a5)
534 ; RV64I-NEXT: sw t3, 36(a5)
535 ; RV64I-NEXT: sw t2, 32(a5)
536 ; RV64I-NEXT: sw t1, 28(a5)
537 ; RV64I-NEXT: sw t0, 24(a5)
538 ; RV64I-NEXT: ld a0, 8(sp) # 8-byte Folded Reload
539 ; RV64I-NEXT: sw a0, 20(a5)
540 ; RV64I-NEXT: ld a0, 16(sp) # 8-byte Folded Reload
541 ; RV64I-NEXT: sw a0, 16(a5)
542 ; RV64I-NEXT: ld a0, 24(sp) # 8-byte Folded Reload
543 ; RV64I-NEXT: sw a0, %lo(var+12)(a6)
544 ; RV64I-NEXT: ld a0, 32(sp) # 8-byte Folded Reload
545 ; RV64I-NEXT: sw a0, %lo(var+8)(a6)
546 ; RV64I-NEXT: ld a0, 40(sp) # 8-byte Folded Reload
547 ; RV64I-NEXT: sw a0, %lo(var+4)(a6)
548 ; RV64I-NEXT: ld a0, 48(sp) # 8-byte Folded Reload
549 ; RV64I-NEXT: sw a0, %lo(var)(a6)
550 ; RV64I-NEXT: ld ra, 152(sp) # 8-byte Folded Reload
551 ; RV64I-NEXT: ld s0, 144(sp) # 8-byte Folded Reload
552 ; RV64I-NEXT: ld s1, 136(sp) # 8-byte Folded Reload
553 ; RV64I-NEXT: ld s2, 128(sp) # 8-byte Folded Reload
554 ; RV64I-NEXT: ld s3, 120(sp) # 8-byte Folded Reload
555 ; RV64I-NEXT: ld s4, 112(sp) # 8-byte Folded Reload
556 ; RV64I-NEXT: ld s5, 104(sp) # 8-byte Folded Reload
557 ; RV64I-NEXT: ld s6, 96(sp) # 8-byte Folded Reload
558 ; RV64I-NEXT: ld s7, 88(sp) # 8-byte Folded Reload
559 ; RV64I-NEXT: ld s8, 80(sp) # 8-byte Folded Reload
560 ; RV64I-NEXT: ld s9, 72(sp) # 8-byte Folded Reload
561 ; RV64I-NEXT: ld s10, 64(sp) # 8-byte Folded Reload
562 ; RV64I-NEXT: ld s11, 56(sp) # 8-byte Folded Reload
563 ; RV64I-NEXT: addi sp, sp, 160
566 ; RV64I-WITH-FP-LABEL: callee:
567 ; RV64I-WITH-FP: # %bb.0:
568 ; RV64I-WITH-FP-NEXT: addi sp, sp, -160
569 ; RV64I-WITH-FP-NEXT: sd ra, 152(sp) # 8-byte Folded Spill
570 ; RV64I-WITH-FP-NEXT: sd s0, 144(sp) # 8-byte Folded Spill
571 ; RV64I-WITH-FP-NEXT: sd s1, 136(sp) # 8-byte Folded Spill
572 ; RV64I-WITH-FP-NEXT: sd s2, 128(sp) # 8-byte Folded Spill
573 ; RV64I-WITH-FP-NEXT: sd s3, 120(sp) # 8-byte Folded Spill
574 ; RV64I-WITH-FP-NEXT: sd s4, 112(sp) # 8-byte Folded Spill
575 ; RV64I-WITH-FP-NEXT: sd s5, 104(sp) # 8-byte Folded Spill
576 ; RV64I-WITH-FP-NEXT: sd s6, 96(sp) # 8-byte Folded Spill
577 ; RV64I-WITH-FP-NEXT: sd s7, 88(sp) # 8-byte Folded Spill
578 ; RV64I-WITH-FP-NEXT: sd s8, 80(sp) # 8-byte Folded Spill
579 ; RV64I-WITH-FP-NEXT: sd s9, 72(sp) # 8-byte Folded Spill
580 ; RV64I-WITH-FP-NEXT: sd s10, 64(sp) # 8-byte Folded Spill
581 ; RV64I-WITH-FP-NEXT: sd s11, 56(sp) # 8-byte Folded Spill
582 ; RV64I-WITH-FP-NEXT: addi s0, sp, 160
583 ; RV64I-WITH-FP-NEXT: lui a6, %hi(var)
584 ; RV64I-WITH-FP-NEXT: lw a0, %lo(var)(a6)
585 ; RV64I-WITH-FP-NEXT: sd a0, -112(s0) # 8-byte Folded Spill
586 ; RV64I-WITH-FP-NEXT: lw a0, %lo(var+4)(a6)
587 ; RV64I-WITH-FP-NEXT: sd a0, -120(s0) # 8-byte Folded Spill
588 ; RV64I-WITH-FP-NEXT: lw a0, %lo(var+8)(a6)
589 ; RV64I-WITH-FP-NEXT: sd a0, -128(s0) # 8-byte Folded Spill
590 ; RV64I-WITH-FP-NEXT: lw a0, %lo(var+12)(a6)
591 ; RV64I-WITH-FP-NEXT: sd a0, -136(s0) # 8-byte Folded Spill
592 ; RV64I-WITH-FP-NEXT: addi a5, a6, %lo(var)
593 ; RV64I-WITH-FP-NEXT: lw a0, 16(a5)
594 ; RV64I-WITH-FP-NEXT: sd a0, -144(s0) # 8-byte Folded Spill
595 ; RV64I-WITH-FP-NEXT: lw a0, 20(a5)
596 ; RV64I-WITH-FP-NEXT: sd a0, -152(s0) # 8-byte Folded Spill
597 ; RV64I-WITH-FP-NEXT: lw a0, 24(a5)
598 ; RV64I-WITH-FP-NEXT: sd a0, -160(s0) # 8-byte Folded Spill
599 ; RV64I-WITH-FP-NEXT: lw t1, 28(a5)
600 ; RV64I-WITH-FP-NEXT: lw t2, 32(a5)
601 ; RV64I-WITH-FP-NEXT: lw t3, 36(a5)
602 ; RV64I-WITH-FP-NEXT: lw t4, 40(a5)
603 ; RV64I-WITH-FP-NEXT: lw t5, 44(a5)
604 ; RV64I-WITH-FP-NEXT: lw t6, 48(a5)
605 ; RV64I-WITH-FP-NEXT: lw s1, 52(a5)
606 ; RV64I-WITH-FP-NEXT: lw s2, 56(a5)
607 ; RV64I-WITH-FP-NEXT: lw s3, 60(a5)
608 ; RV64I-WITH-FP-NEXT: lw s4, 64(a5)
609 ; RV64I-WITH-FP-NEXT: lw s5, 68(a5)
610 ; RV64I-WITH-FP-NEXT: lw s6, 72(a5)
611 ; RV64I-WITH-FP-NEXT: lw s7, 76(a5)
612 ; RV64I-WITH-FP-NEXT: lw s8, 80(a5)
613 ; RV64I-WITH-FP-NEXT: lw s9, 84(a5)
614 ; RV64I-WITH-FP-NEXT: lw s10, 88(a5)
615 ; RV64I-WITH-FP-NEXT: lw s11, 92(a5)
616 ; RV64I-WITH-FP-NEXT: lw ra, 96(a5)
617 ; RV64I-WITH-FP-NEXT: lw t0, 100(a5)
618 ; RV64I-WITH-FP-NEXT: lw a7, 104(a5)
619 ; RV64I-WITH-FP-NEXT: lw a4, 108(a5)
620 ; RV64I-WITH-FP-NEXT: lw a0, 124(a5)
621 ; RV64I-WITH-FP-NEXT: lw a1, 120(a5)
622 ; RV64I-WITH-FP-NEXT: lw a2, 116(a5)
623 ; RV64I-WITH-FP-NEXT: lw a3, 112(a5)
624 ; RV64I-WITH-FP-NEXT: sw a0, 124(a5)
625 ; RV64I-WITH-FP-NEXT: sw a1, 120(a5)
626 ; RV64I-WITH-FP-NEXT: sw a2, 116(a5)
627 ; RV64I-WITH-FP-NEXT: sw a3, 112(a5)
628 ; RV64I-WITH-FP-NEXT: sw a4, 108(a5)
629 ; RV64I-WITH-FP-NEXT: sw a7, 104(a5)
630 ; RV64I-WITH-FP-NEXT: sw t0, 100(a5)
631 ; RV64I-WITH-FP-NEXT: sw ra, 96(a5)
632 ; RV64I-WITH-FP-NEXT: sw s11, 92(a5)
633 ; RV64I-WITH-FP-NEXT: sw s10, 88(a5)
634 ; RV64I-WITH-FP-NEXT: sw s9, 84(a5)
635 ; RV64I-WITH-FP-NEXT: sw s8, 80(a5)
636 ; RV64I-WITH-FP-NEXT: sw s7, 76(a5)
637 ; RV64I-WITH-FP-NEXT: sw s6, 72(a5)
638 ; RV64I-WITH-FP-NEXT: sw s5, 68(a5)
639 ; RV64I-WITH-FP-NEXT: sw s4, 64(a5)
640 ; RV64I-WITH-FP-NEXT: sw s3, 60(a5)
641 ; RV64I-WITH-FP-NEXT: sw s2, 56(a5)
642 ; RV64I-WITH-FP-NEXT: sw s1, 52(a5)
643 ; RV64I-WITH-FP-NEXT: sw t6, 48(a5)
644 ; RV64I-WITH-FP-NEXT: sw t5, 44(a5)
645 ; RV64I-WITH-FP-NEXT: sw t4, 40(a5)
646 ; RV64I-WITH-FP-NEXT: sw t3, 36(a5)
647 ; RV64I-WITH-FP-NEXT: sw t2, 32(a5)
648 ; RV64I-WITH-FP-NEXT: sw t1, 28(a5)
649 ; RV64I-WITH-FP-NEXT: ld a0, -160(s0) # 8-byte Folded Reload
650 ; RV64I-WITH-FP-NEXT: sw a0, 24(a5)
651 ; RV64I-WITH-FP-NEXT: ld a0, -152(s0) # 8-byte Folded Reload
652 ; RV64I-WITH-FP-NEXT: sw a0, 20(a5)
653 ; RV64I-WITH-FP-NEXT: ld a0, -144(s0) # 8-byte Folded Reload
654 ; RV64I-WITH-FP-NEXT: sw a0, 16(a5)
655 ; RV64I-WITH-FP-NEXT: ld a0, -136(s0) # 8-byte Folded Reload
656 ; RV64I-WITH-FP-NEXT: sw a0, %lo(var+12)(a6)
657 ; RV64I-WITH-FP-NEXT: ld a0, -128(s0) # 8-byte Folded Reload
658 ; RV64I-WITH-FP-NEXT: sw a0, %lo(var+8)(a6)
659 ; RV64I-WITH-FP-NEXT: ld a0, -120(s0) # 8-byte Folded Reload
660 ; RV64I-WITH-FP-NEXT: sw a0, %lo(var+4)(a6)
661 ; RV64I-WITH-FP-NEXT: ld a0, -112(s0) # 8-byte Folded Reload
662 ; RV64I-WITH-FP-NEXT: sw a0, %lo(var)(a6)
663 ; RV64I-WITH-FP-NEXT: ld ra, 152(sp) # 8-byte Folded Reload
664 ; RV64I-WITH-FP-NEXT: ld s0, 144(sp) # 8-byte Folded Reload
665 ; RV64I-WITH-FP-NEXT: ld s1, 136(sp) # 8-byte Folded Reload
666 ; RV64I-WITH-FP-NEXT: ld s2, 128(sp) # 8-byte Folded Reload
667 ; RV64I-WITH-FP-NEXT: ld s3, 120(sp) # 8-byte Folded Reload
668 ; RV64I-WITH-FP-NEXT: ld s4, 112(sp) # 8-byte Folded Reload
669 ; RV64I-WITH-FP-NEXT: ld s5, 104(sp) # 8-byte Folded Reload
670 ; RV64I-WITH-FP-NEXT: ld s6, 96(sp) # 8-byte Folded Reload
671 ; RV64I-WITH-FP-NEXT: ld s7, 88(sp) # 8-byte Folded Reload
672 ; RV64I-WITH-FP-NEXT: ld s8, 80(sp) # 8-byte Folded Reload
673 ; RV64I-WITH-FP-NEXT: ld s9, 72(sp) # 8-byte Folded Reload
674 ; RV64I-WITH-FP-NEXT: ld s10, 64(sp) # 8-byte Folded Reload
675 ; RV64I-WITH-FP-NEXT: ld s11, 56(sp) # 8-byte Folded Reload
676 ; RV64I-WITH-FP-NEXT: addi sp, sp, 160
677 ; RV64I-WITH-FP-NEXT: ret
679 ; RV64IZCMP-LABEL: callee:
680 ; RV64IZCMP: # %bb.0:
681 ; RV64IZCMP-NEXT: cm.push {ra, s0-s11}, -160
682 ; RV64IZCMP-NEXT: lui a6, %hi(var)
683 ; RV64IZCMP-NEXT: lw a0, %lo(var)(a6)
684 ; RV64IZCMP-NEXT: sd a0, 40(sp) # 8-byte Folded Spill
685 ; RV64IZCMP-NEXT: lw a0, %lo(var+4)(a6)
686 ; RV64IZCMP-NEXT: sd a0, 32(sp) # 8-byte Folded Spill
687 ; RV64IZCMP-NEXT: lw a0, %lo(var+8)(a6)
688 ; RV64IZCMP-NEXT: sd a0, 24(sp) # 8-byte Folded Spill
689 ; RV64IZCMP-NEXT: lw a0, %lo(var+12)(a6)
690 ; RV64IZCMP-NEXT: sd a0, 16(sp) # 8-byte Folded Spill
691 ; RV64IZCMP-NEXT: addi a5, a6, %lo(var)
692 ; RV64IZCMP-NEXT: lw a0, 16(a5)
693 ; RV64IZCMP-NEXT: sd a0, 8(sp) # 8-byte Folded Spill
694 ; RV64IZCMP-NEXT: lw a0, 20(a5)
695 ; RV64IZCMP-NEXT: sd a0, 0(sp) # 8-byte Folded Spill
696 ; RV64IZCMP-NEXT: lw t4, 24(a5)
697 ; RV64IZCMP-NEXT: lw t5, 28(a5)
698 ; RV64IZCMP-NEXT: lw t6, 32(a5)
699 ; RV64IZCMP-NEXT: lw s2, 36(a5)
700 ; RV64IZCMP-NEXT: lw s3, 40(a5)
701 ; RV64IZCMP-NEXT: lw s4, 44(a5)
702 ; RV64IZCMP-NEXT: lw s5, 48(a5)
703 ; RV64IZCMP-NEXT: lw s6, 52(a5)
704 ; RV64IZCMP-NEXT: lw s7, 56(a5)
705 ; RV64IZCMP-NEXT: lw s8, 60(a5)
706 ; RV64IZCMP-NEXT: lw s9, 64(a5)
707 ; RV64IZCMP-NEXT: lw s10, 68(a5)
708 ; RV64IZCMP-NEXT: lw s11, 72(a5)
709 ; RV64IZCMP-NEXT: lw ra, 76(a5)
710 ; RV64IZCMP-NEXT: lw s1, 80(a5)
711 ; RV64IZCMP-NEXT: lw t3, 84(a5)
712 ; RV64IZCMP-NEXT: lw t2, 88(a5)
713 ; RV64IZCMP-NEXT: lw t1, 92(a5)
714 ; RV64IZCMP-NEXT: lw t0, 96(a5)
715 ; RV64IZCMP-NEXT: lw s0, 100(a5)
716 ; RV64IZCMP-NEXT: lw a7, 104(a5)
717 ; RV64IZCMP-NEXT: lw a4, 108(a5)
718 ; RV64IZCMP-NEXT: lw a0, 124(a5)
719 ; RV64IZCMP-NEXT: lw a1, 120(a5)
720 ; RV64IZCMP-NEXT: lw a2, 116(a5)
721 ; RV64IZCMP-NEXT: lw a3, 112(a5)
722 ; RV64IZCMP-NEXT: sw a0, 124(a5)
723 ; RV64IZCMP-NEXT: sw a1, 120(a5)
724 ; RV64IZCMP-NEXT: sw a2, 116(a5)
725 ; RV64IZCMP-NEXT: sw a3, 112(a5)
726 ; RV64IZCMP-NEXT: sw a4, 108(a5)
727 ; RV64IZCMP-NEXT: sw a7, 104(a5)
728 ; RV64IZCMP-NEXT: sw s0, 100(a5)
729 ; RV64IZCMP-NEXT: sw t0, 96(a5)
730 ; RV64IZCMP-NEXT: sw t1, 92(a5)
731 ; RV64IZCMP-NEXT: sw t2, 88(a5)
732 ; RV64IZCMP-NEXT: sw t3, 84(a5)
733 ; RV64IZCMP-NEXT: sw s1, 80(a5)
734 ; RV64IZCMP-NEXT: sw ra, 76(a5)
735 ; RV64IZCMP-NEXT: sw s11, 72(a5)
736 ; RV64IZCMP-NEXT: sw s10, 68(a5)
737 ; RV64IZCMP-NEXT: sw s9, 64(a5)
738 ; RV64IZCMP-NEXT: sw s8, 60(a5)
739 ; RV64IZCMP-NEXT: sw s7, 56(a5)
740 ; RV64IZCMP-NEXT: sw s6, 52(a5)
741 ; RV64IZCMP-NEXT: sw s5, 48(a5)
742 ; RV64IZCMP-NEXT: sw s4, 44(a5)
743 ; RV64IZCMP-NEXT: sw s3, 40(a5)
744 ; RV64IZCMP-NEXT: sw s2, 36(a5)
745 ; RV64IZCMP-NEXT: sw t6, 32(a5)
746 ; RV64IZCMP-NEXT: sw t5, 28(a5)
747 ; RV64IZCMP-NEXT: sw t4, 24(a5)
748 ; RV64IZCMP-NEXT: ld a0, 0(sp) # 8-byte Folded Reload
749 ; RV64IZCMP-NEXT: sw a0, 20(a5)
750 ; RV64IZCMP-NEXT: ld a0, 8(sp) # 8-byte Folded Reload
751 ; RV64IZCMP-NEXT: sw a0, 16(a5)
752 ; RV64IZCMP-NEXT: ld a0, 16(sp) # 8-byte Folded Reload
753 ; RV64IZCMP-NEXT: sw a0, %lo(var+12)(a6)
754 ; RV64IZCMP-NEXT: ld a0, 24(sp) # 8-byte Folded Reload
755 ; RV64IZCMP-NEXT: sw a0, %lo(var+8)(a6)
756 ; RV64IZCMP-NEXT: ld a0, 32(sp) # 8-byte Folded Reload
757 ; RV64IZCMP-NEXT: sw a0, %lo(var+4)(a6)
758 ; RV64IZCMP-NEXT: ld a0, 40(sp) # 8-byte Folded Reload
759 ; RV64IZCMP-NEXT: sw a0, %lo(var)(a6)
760 ; RV64IZCMP-NEXT: cm.popret {ra, s0-s11}, 160
762 ; RV64IZCMP-WITH-FP-LABEL: callee:
763 ; RV64IZCMP-WITH-FP: # %bb.0:
764 ; RV64IZCMP-WITH-FP-NEXT: addi sp, sp, -160
765 ; RV64IZCMP-WITH-FP-NEXT: sd ra, 152(sp) # 8-byte Folded Spill
766 ; RV64IZCMP-WITH-FP-NEXT: sd s0, 144(sp) # 8-byte Folded Spill
767 ; RV64IZCMP-WITH-FP-NEXT: sd s1, 136(sp) # 8-byte Folded Spill
768 ; RV64IZCMP-WITH-FP-NEXT: sd s2, 128(sp) # 8-byte Folded Spill
769 ; RV64IZCMP-WITH-FP-NEXT: sd s3, 120(sp) # 8-byte Folded Spill
770 ; RV64IZCMP-WITH-FP-NEXT: sd s4, 112(sp) # 8-byte Folded Spill
771 ; RV64IZCMP-WITH-FP-NEXT: sd s5, 104(sp) # 8-byte Folded Spill
772 ; RV64IZCMP-WITH-FP-NEXT: sd s6, 96(sp) # 8-byte Folded Spill
773 ; RV64IZCMP-WITH-FP-NEXT: sd s7, 88(sp) # 8-byte Folded Spill
774 ; RV64IZCMP-WITH-FP-NEXT: sd s8, 80(sp) # 8-byte Folded Spill
775 ; RV64IZCMP-WITH-FP-NEXT: sd s9, 72(sp) # 8-byte Folded Spill
776 ; RV64IZCMP-WITH-FP-NEXT: sd s10, 64(sp) # 8-byte Folded Spill
777 ; RV64IZCMP-WITH-FP-NEXT: sd s11, 56(sp) # 8-byte Folded Spill
778 ; RV64IZCMP-WITH-FP-NEXT: addi s0, sp, 160
779 ; RV64IZCMP-WITH-FP-NEXT: lui a6, %hi(var)
780 ; RV64IZCMP-WITH-FP-NEXT: lw a0, %lo(var)(a6)
781 ; RV64IZCMP-WITH-FP-NEXT: sd a0, -112(s0) # 8-byte Folded Spill
782 ; RV64IZCMP-WITH-FP-NEXT: lw a0, %lo(var+4)(a6)
783 ; RV64IZCMP-WITH-FP-NEXT: sd a0, -120(s0) # 8-byte Folded Spill
784 ; RV64IZCMP-WITH-FP-NEXT: lw a0, %lo(var+8)(a6)
785 ; RV64IZCMP-WITH-FP-NEXT: sd a0, -128(s0) # 8-byte Folded Spill
786 ; RV64IZCMP-WITH-FP-NEXT: lw a0, %lo(var+12)(a6)
787 ; RV64IZCMP-WITH-FP-NEXT: sd a0, -136(s0) # 8-byte Folded Spill
788 ; RV64IZCMP-WITH-FP-NEXT: addi a5, a6, %lo(var)
789 ; RV64IZCMP-WITH-FP-NEXT: lw a0, 16(a5)
790 ; RV64IZCMP-WITH-FP-NEXT: sd a0, -144(s0) # 8-byte Folded Spill
791 ; RV64IZCMP-WITH-FP-NEXT: lw a0, 20(a5)
792 ; RV64IZCMP-WITH-FP-NEXT: sd a0, -152(s0) # 8-byte Folded Spill
793 ; RV64IZCMP-WITH-FP-NEXT: lw a0, 24(a5)
794 ; RV64IZCMP-WITH-FP-NEXT: sd a0, -160(s0) # 8-byte Folded Spill
795 ; RV64IZCMP-WITH-FP-NEXT: lw t5, 28(a5)
796 ; RV64IZCMP-WITH-FP-NEXT: lw t6, 32(a5)
797 ; RV64IZCMP-WITH-FP-NEXT: lw s2, 36(a5)
798 ; RV64IZCMP-WITH-FP-NEXT: lw s3, 40(a5)
799 ; RV64IZCMP-WITH-FP-NEXT: lw s4, 44(a5)
800 ; RV64IZCMP-WITH-FP-NEXT: lw s5, 48(a5)
801 ; RV64IZCMP-WITH-FP-NEXT: lw s6, 52(a5)
802 ; RV64IZCMP-WITH-FP-NEXT: lw s7, 56(a5)
803 ; RV64IZCMP-WITH-FP-NEXT: lw s8, 60(a5)
804 ; RV64IZCMP-WITH-FP-NEXT: lw s9, 64(a5)
805 ; RV64IZCMP-WITH-FP-NEXT: lw s10, 68(a5)
806 ; RV64IZCMP-WITH-FP-NEXT: lw s11, 72(a5)
807 ; RV64IZCMP-WITH-FP-NEXT: lw ra, 76(a5)
808 ; RV64IZCMP-WITH-FP-NEXT: lw t4, 80(a5)
809 ; RV64IZCMP-WITH-FP-NEXT: lw t3, 84(a5)
810 ; RV64IZCMP-WITH-FP-NEXT: lw t2, 88(a5)
811 ; RV64IZCMP-WITH-FP-NEXT: lw s1, 92(a5)
812 ; RV64IZCMP-WITH-FP-NEXT: lw t1, 96(a5)
813 ; RV64IZCMP-WITH-FP-NEXT: lw t0, 100(a5)
814 ; RV64IZCMP-WITH-FP-NEXT: lw a7, 104(a5)
815 ; RV64IZCMP-WITH-FP-NEXT: lw a4, 108(a5)
816 ; RV64IZCMP-WITH-FP-NEXT: lw a0, 124(a5)
817 ; RV64IZCMP-WITH-FP-NEXT: lw a1, 120(a5)
818 ; RV64IZCMP-WITH-FP-NEXT: lw a2, 116(a5)
819 ; RV64IZCMP-WITH-FP-NEXT: lw a3, 112(a5)
820 ; RV64IZCMP-WITH-FP-NEXT: sw a0, 124(a5)
821 ; RV64IZCMP-WITH-FP-NEXT: sw a1, 120(a5)
822 ; RV64IZCMP-WITH-FP-NEXT: sw a2, 116(a5)
823 ; RV64IZCMP-WITH-FP-NEXT: sw a3, 112(a5)
824 ; RV64IZCMP-WITH-FP-NEXT: sw a4, 108(a5)
825 ; RV64IZCMP-WITH-FP-NEXT: sw a7, 104(a5)
826 ; RV64IZCMP-WITH-FP-NEXT: sw t0, 100(a5)
827 ; RV64IZCMP-WITH-FP-NEXT: sw t1, 96(a5)
828 ; RV64IZCMP-WITH-FP-NEXT: sw s1, 92(a5)
829 ; RV64IZCMP-WITH-FP-NEXT: sw t2, 88(a5)
830 ; RV64IZCMP-WITH-FP-NEXT: sw t3, 84(a5)
831 ; RV64IZCMP-WITH-FP-NEXT: sw t4, 80(a5)
832 ; RV64IZCMP-WITH-FP-NEXT: sw ra, 76(a5)
833 ; RV64IZCMP-WITH-FP-NEXT: sw s11, 72(a5)
834 ; RV64IZCMP-WITH-FP-NEXT: sw s10, 68(a5)
835 ; RV64IZCMP-WITH-FP-NEXT: sw s9, 64(a5)
836 ; RV64IZCMP-WITH-FP-NEXT: sw s8, 60(a5)
837 ; RV64IZCMP-WITH-FP-NEXT: sw s7, 56(a5)
838 ; RV64IZCMP-WITH-FP-NEXT: sw s6, 52(a5)
839 ; RV64IZCMP-WITH-FP-NEXT: sw s5, 48(a5)
840 ; RV64IZCMP-WITH-FP-NEXT: sw s4, 44(a5)
841 ; RV64IZCMP-WITH-FP-NEXT: sw s3, 40(a5)
842 ; RV64IZCMP-WITH-FP-NEXT: sw s2, 36(a5)
843 ; RV64IZCMP-WITH-FP-NEXT: sw t6, 32(a5)
844 ; RV64IZCMP-WITH-FP-NEXT: sw t5, 28(a5)
845 ; RV64IZCMP-WITH-FP-NEXT: ld a0, -160(s0) # 8-byte Folded Reload
846 ; RV64IZCMP-WITH-FP-NEXT: sw a0, 24(a5)
847 ; RV64IZCMP-WITH-FP-NEXT: ld a0, -152(s0) # 8-byte Folded Reload
848 ; RV64IZCMP-WITH-FP-NEXT: sw a0, 20(a5)
849 ; RV64IZCMP-WITH-FP-NEXT: ld a0, -144(s0) # 8-byte Folded Reload
850 ; RV64IZCMP-WITH-FP-NEXT: sw a0, 16(a5)
851 ; RV64IZCMP-WITH-FP-NEXT: ld a0, -136(s0) # 8-byte Folded Reload
852 ; RV64IZCMP-WITH-FP-NEXT: sw a0, %lo(var+12)(a6)
853 ; RV64IZCMP-WITH-FP-NEXT: ld a0, -128(s0) # 8-byte Folded Reload
854 ; RV64IZCMP-WITH-FP-NEXT: sw a0, %lo(var+8)(a6)
855 ; RV64IZCMP-WITH-FP-NEXT: ld a0, -120(s0) # 8-byte Folded Reload
856 ; RV64IZCMP-WITH-FP-NEXT: sw a0, %lo(var+4)(a6)
857 ; RV64IZCMP-WITH-FP-NEXT: ld a0, -112(s0) # 8-byte Folded Reload
858 ; RV64IZCMP-WITH-FP-NEXT: sw a0, %lo(var)(a6)
859 ; RV64IZCMP-WITH-FP-NEXT: ld ra, 152(sp) # 8-byte Folded Reload
860 ; RV64IZCMP-WITH-FP-NEXT: ld s0, 144(sp) # 8-byte Folded Reload
861 ; RV64IZCMP-WITH-FP-NEXT: ld s1, 136(sp) # 8-byte Folded Reload
862 ; RV64IZCMP-WITH-FP-NEXT: ld s2, 128(sp) # 8-byte Folded Reload
863 ; RV64IZCMP-WITH-FP-NEXT: ld s3, 120(sp) # 8-byte Folded Reload
864 ; RV64IZCMP-WITH-FP-NEXT: ld s4, 112(sp) # 8-byte Folded Reload
865 ; RV64IZCMP-WITH-FP-NEXT: ld s5, 104(sp) # 8-byte Folded Reload
866 ; RV64IZCMP-WITH-FP-NEXT: ld s6, 96(sp) # 8-byte Folded Reload
867 ; RV64IZCMP-WITH-FP-NEXT: ld s7, 88(sp) # 8-byte Folded Reload
868 ; RV64IZCMP-WITH-FP-NEXT: ld s8, 80(sp) # 8-byte Folded Reload
869 ; RV64IZCMP-WITH-FP-NEXT: ld s9, 72(sp) # 8-byte Folded Reload
870 ; RV64IZCMP-WITH-FP-NEXT: ld s10, 64(sp) # 8-byte Folded Reload
871 ; RV64IZCMP-WITH-FP-NEXT: ld s11, 56(sp) # 8-byte Folded Reload
872 ; RV64IZCMP-WITH-FP-NEXT: addi sp, sp, 160
873 ; RV64IZCMP-WITH-FP-NEXT: ret
874 %val = load [32 x i32], ptr @var
875 store volatile [32 x i32] %val, ptr @var
879 ; This function tests that RISCVRegisterInfo::getCallPreservedMask returns
880 ; something appropriate.
882 define void @caller() nounwind {
883 ; RV32I-LABEL: caller:
885 ; RV32I-NEXT: addi sp, sp, -144
886 ; RV32I-NEXT: sw ra, 140(sp) # 4-byte Folded Spill
887 ; RV32I-NEXT: sw s0, 136(sp) # 4-byte Folded Spill
888 ; RV32I-NEXT: sw s1, 132(sp) # 4-byte Folded Spill
889 ; RV32I-NEXT: sw s2, 128(sp) # 4-byte Folded Spill
890 ; RV32I-NEXT: sw s3, 124(sp) # 4-byte Folded Spill
891 ; RV32I-NEXT: sw s4, 120(sp) # 4-byte Folded Spill
892 ; RV32I-NEXT: sw s5, 116(sp) # 4-byte Folded Spill
893 ; RV32I-NEXT: sw s6, 112(sp) # 4-byte Folded Spill
894 ; RV32I-NEXT: sw s7, 108(sp) # 4-byte Folded Spill
895 ; RV32I-NEXT: sw s8, 104(sp) # 4-byte Folded Spill
896 ; RV32I-NEXT: sw s9, 100(sp) # 4-byte Folded Spill
897 ; RV32I-NEXT: sw s10, 96(sp) # 4-byte Folded Spill
898 ; RV32I-NEXT: sw s11, 92(sp) # 4-byte Folded Spill
899 ; RV32I-NEXT: lui s0, %hi(var)
900 ; RV32I-NEXT: lw a0, %lo(var)(s0)
901 ; RV32I-NEXT: sw a0, 88(sp) # 4-byte Folded Spill
902 ; RV32I-NEXT: lw a0, %lo(var+4)(s0)
903 ; RV32I-NEXT: sw a0, 84(sp) # 4-byte Folded Spill
904 ; RV32I-NEXT: lw a0, %lo(var+8)(s0)
905 ; RV32I-NEXT: sw a0, 80(sp) # 4-byte Folded Spill
906 ; RV32I-NEXT: lw a0, %lo(var+12)(s0)
907 ; RV32I-NEXT: sw a0, 76(sp) # 4-byte Folded Spill
908 ; RV32I-NEXT: addi s5, s0, %lo(var)
909 ; RV32I-NEXT: lw a0, 16(s5)
910 ; RV32I-NEXT: sw a0, 72(sp) # 4-byte Folded Spill
911 ; RV32I-NEXT: lw a0, 20(s5)
912 ; RV32I-NEXT: sw a0, 68(sp) # 4-byte Folded Spill
913 ; RV32I-NEXT: lw a0, 24(s5)
914 ; RV32I-NEXT: sw a0, 64(sp) # 4-byte Folded Spill
915 ; RV32I-NEXT: lw a0, 28(s5)
916 ; RV32I-NEXT: sw a0, 60(sp) # 4-byte Folded Spill
917 ; RV32I-NEXT: lw a0, 32(s5)
918 ; RV32I-NEXT: sw a0, 56(sp) # 4-byte Folded Spill
919 ; RV32I-NEXT: lw a0, 36(s5)
920 ; RV32I-NEXT: sw a0, 52(sp) # 4-byte Folded Spill
921 ; RV32I-NEXT: lw a0, 40(s5)
922 ; RV32I-NEXT: sw a0, 48(sp) # 4-byte Folded Spill
923 ; RV32I-NEXT: lw a0, 44(s5)
924 ; RV32I-NEXT: sw a0, 44(sp) # 4-byte Folded Spill
925 ; RV32I-NEXT: lw a0, 48(s5)
926 ; RV32I-NEXT: sw a0, 40(sp) # 4-byte Folded Spill
927 ; RV32I-NEXT: lw a0, 52(s5)
928 ; RV32I-NEXT: sw a0, 36(sp) # 4-byte Folded Spill
929 ; RV32I-NEXT: lw a0, 56(s5)
930 ; RV32I-NEXT: sw a0, 32(sp) # 4-byte Folded Spill
931 ; RV32I-NEXT: lw a0, 60(s5)
932 ; RV32I-NEXT: sw a0, 28(sp) # 4-byte Folded Spill
933 ; RV32I-NEXT: lw a0, 64(s5)
934 ; RV32I-NEXT: sw a0, 24(sp) # 4-byte Folded Spill
935 ; RV32I-NEXT: lw a0, 68(s5)
936 ; RV32I-NEXT: sw a0, 20(sp) # 4-byte Folded Spill
937 ; RV32I-NEXT: lw a0, 72(s5)
938 ; RV32I-NEXT: sw a0, 16(sp) # 4-byte Folded Spill
939 ; RV32I-NEXT: lw a0, 76(s5)
940 ; RV32I-NEXT: sw a0, 12(sp) # 4-byte Folded Spill
941 ; RV32I-NEXT: lw a0, 80(s5)
942 ; RV32I-NEXT: sw a0, 8(sp) # 4-byte Folded Spill
943 ; RV32I-NEXT: lw a0, 84(s5)
944 ; RV32I-NEXT: sw a0, 4(sp) # 4-byte Folded Spill
945 ; RV32I-NEXT: lw s3, 88(s5)
946 ; RV32I-NEXT: lw s4, 92(s5)
947 ; RV32I-NEXT: lw s6, 96(s5)
948 ; RV32I-NEXT: lw s7, 100(s5)
949 ; RV32I-NEXT: lw s8, 104(s5)
950 ; RV32I-NEXT: lw s9, 108(s5)
951 ; RV32I-NEXT: lw s10, 112(s5)
952 ; RV32I-NEXT: lw s11, 116(s5)
953 ; RV32I-NEXT: lw s1, 120(s5)
954 ; RV32I-NEXT: lw s2, 124(s5)
955 ; RV32I-NEXT: call callee@plt
956 ; RV32I-NEXT: sw s2, 124(s5)
957 ; RV32I-NEXT: sw s1, 120(s5)
958 ; RV32I-NEXT: sw s11, 116(s5)
959 ; RV32I-NEXT: sw s10, 112(s5)
960 ; RV32I-NEXT: sw s9, 108(s5)
961 ; RV32I-NEXT: sw s8, 104(s5)
962 ; RV32I-NEXT: sw s7, 100(s5)
963 ; RV32I-NEXT: sw s6, 96(s5)
964 ; RV32I-NEXT: sw s4, 92(s5)
965 ; RV32I-NEXT: sw s3, 88(s5)
966 ; RV32I-NEXT: lw a0, 4(sp) # 4-byte Folded Reload
967 ; RV32I-NEXT: sw a0, 84(s5)
968 ; RV32I-NEXT: lw a0, 8(sp) # 4-byte Folded Reload
969 ; RV32I-NEXT: sw a0, 80(s5)
970 ; RV32I-NEXT: lw a0, 12(sp) # 4-byte Folded Reload
971 ; RV32I-NEXT: sw a0, 76(s5)
972 ; RV32I-NEXT: lw a0, 16(sp) # 4-byte Folded Reload
973 ; RV32I-NEXT: sw a0, 72(s5)
974 ; RV32I-NEXT: lw a0, 20(sp) # 4-byte Folded Reload
975 ; RV32I-NEXT: sw a0, 68(s5)
976 ; RV32I-NEXT: lw a0, 24(sp) # 4-byte Folded Reload
977 ; RV32I-NEXT: sw a0, 64(s5)
978 ; RV32I-NEXT: lw a0, 28(sp) # 4-byte Folded Reload
979 ; RV32I-NEXT: sw a0, 60(s5)
980 ; RV32I-NEXT: lw a0, 32(sp) # 4-byte Folded Reload
981 ; RV32I-NEXT: sw a0, 56(s5)
982 ; RV32I-NEXT: lw a0, 36(sp) # 4-byte Folded Reload
983 ; RV32I-NEXT: sw a0, 52(s5)
984 ; RV32I-NEXT: lw a0, 40(sp) # 4-byte Folded Reload
985 ; RV32I-NEXT: sw a0, 48(s5)
986 ; RV32I-NEXT: lw a0, 44(sp) # 4-byte Folded Reload
987 ; RV32I-NEXT: sw a0, 44(s5)
988 ; RV32I-NEXT: lw a0, 48(sp) # 4-byte Folded Reload
989 ; RV32I-NEXT: sw a0, 40(s5)
990 ; RV32I-NEXT: lw a0, 52(sp) # 4-byte Folded Reload
991 ; RV32I-NEXT: sw a0, 36(s5)
992 ; RV32I-NEXT: lw a0, 56(sp) # 4-byte Folded Reload
993 ; RV32I-NEXT: sw a0, 32(s5)
994 ; RV32I-NEXT: lw a0, 60(sp) # 4-byte Folded Reload
995 ; RV32I-NEXT: sw a0, 28(s5)
996 ; RV32I-NEXT: lw a0, 64(sp) # 4-byte Folded Reload
997 ; RV32I-NEXT: sw a0, 24(s5)
998 ; RV32I-NEXT: lw a0, 68(sp) # 4-byte Folded Reload
999 ; RV32I-NEXT: sw a0, 20(s5)
1000 ; RV32I-NEXT: lw a0, 72(sp) # 4-byte Folded Reload
1001 ; RV32I-NEXT: sw a0, 16(s5)
1002 ; RV32I-NEXT: lw a0, 76(sp) # 4-byte Folded Reload
1003 ; RV32I-NEXT: sw a0, %lo(var+12)(s0)
1004 ; RV32I-NEXT: lw a0, 80(sp) # 4-byte Folded Reload
1005 ; RV32I-NEXT: sw a0, %lo(var+8)(s0)
1006 ; RV32I-NEXT: lw a0, 84(sp) # 4-byte Folded Reload
1007 ; RV32I-NEXT: sw a0, %lo(var+4)(s0)
1008 ; RV32I-NEXT: lw a0, 88(sp) # 4-byte Folded Reload
1009 ; RV32I-NEXT: sw a0, %lo(var)(s0)
1010 ; RV32I-NEXT: lw ra, 140(sp) # 4-byte Folded Reload
1011 ; RV32I-NEXT: lw s0, 136(sp) # 4-byte Folded Reload
1012 ; RV32I-NEXT: lw s1, 132(sp) # 4-byte Folded Reload
1013 ; RV32I-NEXT: lw s2, 128(sp) # 4-byte Folded Reload
1014 ; RV32I-NEXT: lw s3, 124(sp) # 4-byte Folded Reload
1015 ; RV32I-NEXT: lw s4, 120(sp) # 4-byte Folded Reload
1016 ; RV32I-NEXT: lw s5, 116(sp) # 4-byte Folded Reload
1017 ; RV32I-NEXT: lw s6, 112(sp) # 4-byte Folded Reload
1018 ; RV32I-NEXT: lw s7, 108(sp) # 4-byte Folded Reload
1019 ; RV32I-NEXT: lw s8, 104(sp) # 4-byte Folded Reload
1020 ; RV32I-NEXT: lw s9, 100(sp) # 4-byte Folded Reload
1021 ; RV32I-NEXT: lw s10, 96(sp) # 4-byte Folded Reload
1022 ; RV32I-NEXT: lw s11, 92(sp) # 4-byte Folded Reload
1023 ; RV32I-NEXT: addi sp, sp, 144
1026 ; RV32I-WITH-FP-LABEL: caller:
1027 ; RV32I-WITH-FP: # %bb.0:
1028 ; RV32I-WITH-FP-NEXT: addi sp, sp, -144
1029 ; RV32I-WITH-FP-NEXT: sw ra, 140(sp) # 4-byte Folded Spill
1030 ; RV32I-WITH-FP-NEXT: sw s0, 136(sp) # 4-byte Folded Spill
1031 ; RV32I-WITH-FP-NEXT: sw s1, 132(sp) # 4-byte Folded Spill
1032 ; RV32I-WITH-FP-NEXT: sw s2, 128(sp) # 4-byte Folded Spill
1033 ; RV32I-WITH-FP-NEXT: sw s3, 124(sp) # 4-byte Folded Spill
1034 ; RV32I-WITH-FP-NEXT: sw s4, 120(sp) # 4-byte Folded Spill
1035 ; RV32I-WITH-FP-NEXT: sw s5, 116(sp) # 4-byte Folded Spill
1036 ; RV32I-WITH-FP-NEXT: sw s6, 112(sp) # 4-byte Folded Spill
1037 ; RV32I-WITH-FP-NEXT: sw s7, 108(sp) # 4-byte Folded Spill
1038 ; RV32I-WITH-FP-NEXT: sw s8, 104(sp) # 4-byte Folded Spill
1039 ; RV32I-WITH-FP-NEXT: sw s9, 100(sp) # 4-byte Folded Spill
1040 ; RV32I-WITH-FP-NEXT: sw s10, 96(sp) # 4-byte Folded Spill
1041 ; RV32I-WITH-FP-NEXT: sw s11, 92(sp) # 4-byte Folded Spill
1042 ; RV32I-WITH-FP-NEXT: addi s0, sp, 144
1043 ; RV32I-WITH-FP-NEXT: lui s1, %hi(var)
1044 ; RV32I-WITH-FP-NEXT: lw a0, %lo(var)(s1)
1045 ; RV32I-WITH-FP-NEXT: sw a0, -56(s0) # 4-byte Folded Spill
1046 ; RV32I-WITH-FP-NEXT: lw a0, %lo(var+4)(s1)
1047 ; RV32I-WITH-FP-NEXT: sw a0, -60(s0) # 4-byte Folded Spill
1048 ; RV32I-WITH-FP-NEXT: lw a0, %lo(var+8)(s1)
1049 ; RV32I-WITH-FP-NEXT: sw a0, -64(s0) # 4-byte Folded Spill
1050 ; RV32I-WITH-FP-NEXT: lw a0, %lo(var+12)(s1)
1051 ; RV32I-WITH-FP-NEXT: sw a0, -68(s0) # 4-byte Folded Spill
1052 ; RV32I-WITH-FP-NEXT: addi s6, s1, %lo(var)
1053 ; RV32I-WITH-FP-NEXT: lw a0, 16(s6)
1054 ; RV32I-WITH-FP-NEXT: sw a0, -72(s0) # 4-byte Folded Spill
1055 ; RV32I-WITH-FP-NEXT: lw a0, 20(s6)
1056 ; RV32I-WITH-FP-NEXT: sw a0, -76(s0) # 4-byte Folded Spill
1057 ; RV32I-WITH-FP-NEXT: lw a0, 24(s6)
1058 ; RV32I-WITH-FP-NEXT: sw a0, -80(s0) # 4-byte Folded Spill
1059 ; RV32I-WITH-FP-NEXT: lw a0, 28(s6)
1060 ; RV32I-WITH-FP-NEXT: sw a0, -84(s0) # 4-byte Folded Spill
1061 ; RV32I-WITH-FP-NEXT: lw a0, 32(s6)
1062 ; RV32I-WITH-FP-NEXT: sw a0, -88(s0) # 4-byte Folded Spill
1063 ; RV32I-WITH-FP-NEXT: lw a0, 36(s6)
1064 ; RV32I-WITH-FP-NEXT: sw a0, -92(s0) # 4-byte Folded Spill
1065 ; RV32I-WITH-FP-NEXT: lw a0, 40(s6)
1066 ; RV32I-WITH-FP-NEXT: sw a0, -96(s0) # 4-byte Folded Spill
1067 ; RV32I-WITH-FP-NEXT: lw a0, 44(s6)
1068 ; RV32I-WITH-FP-NEXT: sw a0, -100(s0) # 4-byte Folded Spill
1069 ; RV32I-WITH-FP-NEXT: lw a0, 48(s6)
1070 ; RV32I-WITH-FP-NEXT: sw a0, -104(s0) # 4-byte Folded Spill
1071 ; RV32I-WITH-FP-NEXT: lw a0, 52(s6)
1072 ; RV32I-WITH-FP-NEXT: sw a0, -108(s0) # 4-byte Folded Spill
1073 ; RV32I-WITH-FP-NEXT: lw a0, 56(s6)
1074 ; RV32I-WITH-FP-NEXT: sw a0, -112(s0) # 4-byte Folded Spill
1075 ; RV32I-WITH-FP-NEXT: lw a0, 60(s6)
1076 ; RV32I-WITH-FP-NEXT: sw a0, -116(s0) # 4-byte Folded Spill
1077 ; RV32I-WITH-FP-NEXT: lw a0, 64(s6)
1078 ; RV32I-WITH-FP-NEXT: sw a0, -120(s0) # 4-byte Folded Spill
1079 ; RV32I-WITH-FP-NEXT: lw a0, 68(s6)
1080 ; RV32I-WITH-FP-NEXT: sw a0, -124(s0) # 4-byte Folded Spill
1081 ; RV32I-WITH-FP-NEXT: lw a0, 72(s6)
1082 ; RV32I-WITH-FP-NEXT: sw a0, -128(s0) # 4-byte Folded Spill
1083 ; RV32I-WITH-FP-NEXT: lw a0, 76(s6)
1084 ; RV32I-WITH-FP-NEXT: sw a0, -132(s0) # 4-byte Folded Spill
1085 ; RV32I-WITH-FP-NEXT: lw a0, 80(s6)
1086 ; RV32I-WITH-FP-NEXT: sw a0, -136(s0) # 4-byte Folded Spill
1087 ; RV32I-WITH-FP-NEXT: lw a0, 84(s6)
1088 ; RV32I-WITH-FP-NEXT: sw a0, -140(s0) # 4-byte Folded Spill
1089 ; RV32I-WITH-FP-NEXT: lw a0, 88(s6)
1090 ; RV32I-WITH-FP-NEXT: sw a0, -144(s0) # 4-byte Folded Spill
1091 ; RV32I-WITH-FP-NEXT: lw s8, 92(s6)
1092 ; RV32I-WITH-FP-NEXT: lw s9, 96(s6)
1093 ; RV32I-WITH-FP-NEXT: lw s10, 100(s6)
1094 ; RV32I-WITH-FP-NEXT: lw s11, 104(s6)
1095 ; RV32I-WITH-FP-NEXT: lw s2, 108(s6)
1096 ; RV32I-WITH-FP-NEXT: lw s3, 112(s6)
1097 ; RV32I-WITH-FP-NEXT: lw s4, 116(s6)
1098 ; RV32I-WITH-FP-NEXT: lw s5, 120(s6)
1099 ; RV32I-WITH-FP-NEXT: lw s7, 124(s6)
1100 ; RV32I-WITH-FP-NEXT: call callee@plt
1101 ; RV32I-WITH-FP-NEXT: sw s7, 124(s6)
1102 ; RV32I-WITH-FP-NEXT: sw s5, 120(s6)
1103 ; RV32I-WITH-FP-NEXT: sw s4, 116(s6)
1104 ; RV32I-WITH-FP-NEXT: sw s3, 112(s6)
1105 ; RV32I-WITH-FP-NEXT: sw s2, 108(s6)
1106 ; RV32I-WITH-FP-NEXT: sw s11, 104(s6)
1107 ; RV32I-WITH-FP-NEXT: sw s10, 100(s6)
1108 ; RV32I-WITH-FP-NEXT: sw s9, 96(s6)
1109 ; RV32I-WITH-FP-NEXT: sw s8, 92(s6)
1110 ; RV32I-WITH-FP-NEXT: lw a0, -144(s0) # 4-byte Folded Reload
1111 ; RV32I-WITH-FP-NEXT: sw a0, 88(s6)
1112 ; RV32I-WITH-FP-NEXT: lw a0, -140(s0) # 4-byte Folded Reload
1113 ; RV32I-WITH-FP-NEXT: sw a0, 84(s6)
1114 ; RV32I-WITH-FP-NEXT: lw a0, -136(s0) # 4-byte Folded Reload
1115 ; RV32I-WITH-FP-NEXT: sw a0, 80(s6)
1116 ; RV32I-WITH-FP-NEXT: lw a0, -132(s0) # 4-byte Folded Reload
1117 ; RV32I-WITH-FP-NEXT: sw a0, 76(s6)
1118 ; RV32I-WITH-FP-NEXT: lw a0, -128(s0) # 4-byte Folded Reload
1119 ; RV32I-WITH-FP-NEXT: sw a0, 72(s6)
1120 ; RV32I-WITH-FP-NEXT: lw a0, -124(s0) # 4-byte Folded Reload
1121 ; RV32I-WITH-FP-NEXT: sw a0, 68(s6)
1122 ; RV32I-WITH-FP-NEXT: lw a0, -120(s0) # 4-byte Folded Reload
1123 ; RV32I-WITH-FP-NEXT: sw a0, 64(s6)
1124 ; RV32I-WITH-FP-NEXT: lw a0, -116(s0) # 4-byte Folded Reload
1125 ; RV32I-WITH-FP-NEXT: sw a0, 60(s6)
1126 ; RV32I-WITH-FP-NEXT: lw a0, -112(s0) # 4-byte Folded Reload
1127 ; RV32I-WITH-FP-NEXT: sw a0, 56(s6)
1128 ; RV32I-WITH-FP-NEXT: lw a0, -108(s0) # 4-byte Folded Reload
1129 ; RV32I-WITH-FP-NEXT: sw a0, 52(s6)
1130 ; RV32I-WITH-FP-NEXT: lw a0, -104(s0) # 4-byte Folded Reload
1131 ; RV32I-WITH-FP-NEXT: sw a0, 48(s6)
1132 ; RV32I-WITH-FP-NEXT: lw a0, -100(s0) # 4-byte Folded Reload
1133 ; RV32I-WITH-FP-NEXT: sw a0, 44(s6)
1134 ; RV32I-WITH-FP-NEXT: lw a0, -96(s0) # 4-byte Folded Reload
1135 ; RV32I-WITH-FP-NEXT: sw a0, 40(s6)
1136 ; RV32I-WITH-FP-NEXT: lw a0, -92(s0) # 4-byte Folded Reload
1137 ; RV32I-WITH-FP-NEXT: sw a0, 36(s6)
1138 ; RV32I-WITH-FP-NEXT: lw a0, -88(s0) # 4-byte Folded Reload
1139 ; RV32I-WITH-FP-NEXT: sw a0, 32(s6)
1140 ; RV32I-WITH-FP-NEXT: lw a0, -84(s0) # 4-byte Folded Reload
1141 ; RV32I-WITH-FP-NEXT: sw a0, 28(s6)
1142 ; RV32I-WITH-FP-NEXT: lw a0, -80(s0) # 4-byte Folded Reload
1143 ; RV32I-WITH-FP-NEXT: sw a0, 24(s6)
1144 ; RV32I-WITH-FP-NEXT: lw a0, -76(s0) # 4-byte Folded Reload
1145 ; RV32I-WITH-FP-NEXT: sw a0, 20(s6)
1146 ; RV32I-WITH-FP-NEXT: lw a0, -72(s0) # 4-byte Folded Reload
1147 ; RV32I-WITH-FP-NEXT: sw a0, 16(s6)
1148 ; RV32I-WITH-FP-NEXT: lw a0, -68(s0) # 4-byte Folded Reload
1149 ; RV32I-WITH-FP-NEXT: sw a0, %lo(var+12)(s1)
1150 ; RV32I-WITH-FP-NEXT: lw a0, -64(s0) # 4-byte Folded Reload
1151 ; RV32I-WITH-FP-NEXT: sw a0, %lo(var+8)(s1)
1152 ; RV32I-WITH-FP-NEXT: lw a0, -60(s0) # 4-byte Folded Reload
1153 ; RV32I-WITH-FP-NEXT: sw a0, %lo(var+4)(s1)
1154 ; RV32I-WITH-FP-NEXT: lw a0, -56(s0) # 4-byte Folded Reload
1155 ; RV32I-WITH-FP-NEXT: sw a0, %lo(var)(s1)
1156 ; RV32I-WITH-FP-NEXT: lw ra, 140(sp) # 4-byte Folded Reload
1157 ; RV32I-WITH-FP-NEXT: lw s0, 136(sp) # 4-byte Folded Reload
1158 ; RV32I-WITH-FP-NEXT: lw s1, 132(sp) # 4-byte Folded Reload
1159 ; RV32I-WITH-FP-NEXT: lw s2, 128(sp) # 4-byte Folded Reload
1160 ; RV32I-WITH-FP-NEXT: lw s3, 124(sp) # 4-byte Folded Reload
1161 ; RV32I-WITH-FP-NEXT: lw s4, 120(sp) # 4-byte Folded Reload
1162 ; RV32I-WITH-FP-NEXT: lw s5, 116(sp) # 4-byte Folded Reload
1163 ; RV32I-WITH-FP-NEXT: lw s6, 112(sp) # 4-byte Folded Reload
1164 ; RV32I-WITH-FP-NEXT: lw s7, 108(sp) # 4-byte Folded Reload
1165 ; RV32I-WITH-FP-NEXT: lw s8, 104(sp) # 4-byte Folded Reload
1166 ; RV32I-WITH-FP-NEXT: lw s9, 100(sp) # 4-byte Folded Reload
1167 ; RV32I-WITH-FP-NEXT: lw s10, 96(sp) # 4-byte Folded Reload
1168 ; RV32I-WITH-FP-NEXT: lw s11, 92(sp) # 4-byte Folded Reload
1169 ; RV32I-WITH-FP-NEXT: addi sp, sp, 144
1170 ; RV32I-WITH-FP-NEXT: ret
1172 ; RV32IZCMP-LABEL: caller:
1173 ; RV32IZCMP: # %bb.0:
1174 ; RV32IZCMP-NEXT: cm.push {ra, s0-s11}, -112
1175 ; RV32IZCMP-NEXT: addi sp, sp, -48
1176 ; RV32IZCMP-NEXT: lui s0, %hi(var)
1177 ; RV32IZCMP-NEXT: lw a0, %lo(var)(s0)
1178 ; RV32IZCMP-NEXT: sw a0, 92(sp) # 4-byte Folded Spill
1179 ; RV32IZCMP-NEXT: lw a0, %lo(var+4)(s0)
1180 ; RV32IZCMP-NEXT: sw a0, 88(sp) # 4-byte Folded Spill
1181 ; RV32IZCMP-NEXT: lw a0, %lo(var+8)(s0)
1182 ; RV32IZCMP-NEXT: sw a0, 84(sp) # 4-byte Folded Spill
1183 ; RV32IZCMP-NEXT: lw a0, %lo(var+12)(s0)
1184 ; RV32IZCMP-NEXT: sw a0, 80(sp) # 4-byte Folded Spill
1185 ; RV32IZCMP-NEXT: addi s1, s0, %lo(var)
1186 ; RV32IZCMP-NEXT: lw a0, 16(s1)
1187 ; RV32IZCMP-NEXT: sw a0, 76(sp) # 4-byte Folded Spill
1188 ; RV32IZCMP-NEXT: lw a0, 20(s1)
1189 ; RV32IZCMP-NEXT: sw a0, 72(sp) # 4-byte Folded Spill
1190 ; RV32IZCMP-NEXT: lw a0, 24(s1)
1191 ; RV32IZCMP-NEXT: sw a0, 68(sp) # 4-byte Folded Spill
1192 ; RV32IZCMP-NEXT: lw a0, 28(s1)
1193 ; RV32IZCMP-NEXT: sw a0, 64(sp) # 4-byte Folded Spill
1194 ; RV32IZCMP-NEXT: lw a0, 32(s1)
1195 ; RV32IZCMP-NEXT: sw a0, 60(sp) # 4-byte Folded Spill
1196 ; RV32IZCMP-NEXT: lw a0, 36(s1)
1197 ; RV32IZCMP-NEXT: sw a0, 56(sp) # 4-byte Folded Spill
1198 ; RV32IZCMP-NEXT: lw a0, 40(s1)
1199 ; RV32IZCMP-NEXT: sw a0, 52(sp) # 4-byte Folded Spill
1200 ; RV32IZCMP-NEXT: lw a0, 44(s1)
1201 ; RV32IZCMP-NEXT: sw a0, 48(sp) # 4-byte Folded Spill
1202 ; RV32IZCMP-NEXT: lw a0, 48(s1)
1203 ; RV32IZCMP-NEXT: sw a0, 44(sp) # 4-byte Folded Spill
1204 ; RV32IZCMP-NEXT: lw a0, 52(s1)
1205 ; RV32IZCMP-NEXT: sw a0, 40(sp) # 4-byte Folded Spill
1206 ; RV32IZCMP-NEXT: lw a0, 56(s1)
1207 ; RV32IZCMP-NEXT: sw a0, 36(sp) # 4-byte Folded Spill
1208 ; RV32IZCMP-NEXT: lw a0, 60(s1)
1209 ; RV32IZCMP-NEXT: sw a0, 32(sp) # 4-byte Folded Spill
1210 ; RV32IZCMP-NEXT: lw a0, 64(s1)
1211 ; RV32IZCMP-NEXT: sw a0, 28(sp) # 4-byte Folded Spill
1212 ; RV32IZCMP-NEXT: lw a0, 68(s1)
1213 ; RV32IZCMP-NEXT: sw a0, 24(sp) # 4-byte Folded Spill
1214 ; RV32IZCMP-NEXT: lw a0, 72(s1)
1215 ; RV32IZCMP-NEXT: sw a0, 20(sp) # 4-byte Folded Spill
1216 ; RV32IZCMP-NEXT: lw a0, 76(s1)
1217 ; RV32IZCMP-NEXT: sw a0, 16(sp) # 4-byte Folded Spill
1218 ; RV32IZCMP-NEXT: lw a0, 80(s1)
1219 ; RV32IZCMP-NEXT: sw a0, 12(sp) # 4-byte Folded Spill
1220 ; RV32IZCMP-NEXT: lw a0, 84(s1)
1221 ; RV32IZCMP-NEXT: sw a0, 8(sp) # 4-byte Folded Spill
1222 ; RV32IZCMP-NEXT: lw s4, 88(s1)
1223 ; RV32IZCMP-NEXT: lw s5, 92(s1)
1224 ; RV32IZCMP-NEXT: lw s6, 96(s1)
1225 ; RV32IZCMP-NEXT: lw s7, 100(s1)
1226 ; RV32IZCMP-NEXT: lw s8, 104(s1)
1227 ; RV32IZCMP-NEXT: lw s9, 108(s1)
1228 ; RV32IZCMP-NEXT: lw s10, 112(s1)
1229 ; RV32IZCMP-NEXT: lw s11, 116(s1)
1230 ; RV32IZCMP-NEXT: lw s2, 120(s1)
1231 ; RV32IZCMP-NEXT: lw s3, 124(s1)
1232 ; RV32IZCMP-NEXT: call callee@plt
1233 ; RV32IZCMP-NEXT: sw s3, 124(s1)
1234 ; RV32IZCMP-NEXT: sw s2, 120(s1)
1235 ; RV32IZCMP-NEXT: sw s11, 116(s1)
1236 ; RV32IZCMP-NEXT: sw s10, 112(s1)
1237 ; RV32IZCMP-NEXT: sw s9, 108(s1)
1238 ; RV32IZCMP-NEXT: sw s8, 104(s1)
1239 ; RV32IZCMP-NEXT: sw s7, 100(s1)
1240 ; RV32IZCMP-NEXT: sw s6, 96(s1)
1241 ; RV32IZCMP-NEXT: sw s5, 92(s1)
1242 ; RV32IZCMP-NEXT: sw s4, 88(s1)
1243 ; RV32IZCMP-NEXT: lw a0, 8(sp) # 4-byte Folded Reload
1244 ; RV32IZCMP-NEXT: sw a0, 84(s1)
1245 ; RV32IZCMP-NEXT: lw a0, 12(sp) # 4-byte Folded Reload
1246 ; RV32IZCMP-NEXT: sw a0, 80(s1)
1247 ; RV32IZCMP-NEXT: lw a0, 16(sp) # 4-byte Folded Reload
1248 ; RV32IZCMP-NEXT: sw a0, 76(s1)
1249 ; RV32IZCMP-NEXT: lw a0, 20(sp) # 4-byte Folded Reload
1250 ; RV32IZCMP-NEXT: sw a0, 72(s1)
1251 ; RV32IZCMP-NEXT: lw a0, 24(sp) # 4-byte Folded Reload
1252 ; RV32IZCMP-NEXT: sw a0, 68(s1)
1253 ; RV32IZCMP-NEXT: lw a0, 28(sp) # 4-byte Folded Reload
1254 ; RV32IZCMP-NEXT: sw a0, 64(s1)
1255 ; RV32IZCMP-NEXT: lw a0, 32(sp) # 4-byte Folded Reload
1256 ; RV32IZCMP-NEXT: sw a0, 60(s1)
1257 ; RV32IZCMP-NEXT: lw a0, 36(sp) # 4-byte Folded Reload
1258 ; RV32IZCMP-NEXT: sw a0, 56(s1)
1259 ; RV32IZCMP-NEXT: lw a0, 40(sp) # 4-byte Folded Reload
1260 ; RV32IZCMP-NEXT: sw a0, 52(s1)
1261 ; RV32IZCMP-NEXT: lw a0, 44(sp) # 4-byte Folded Reload
1262 ; RV32IZCMP-NEXT: sw a0, 48(s1)
1263 ; RV32IZCMP-NEXT: lw a0, 48(sp) # 4-byte Folded Reload
1264 ; RV32IZCMP-NEXT: sw a0, 44(s1)
1265 ; RV32IZCMP-NEXT: lw a0, 52(sp) # 4-byte Folded Reload
1266 ; RV32IZCMP-NEXT: sw a0, 40(s1)
1267 ; RV32IZCMP-NEXT: lw a0, 56(sp) # 4-byte Folded Reload
1268 ; RV32IZCMP-NEXT: sw a0, 36(s1)
1269 ; RV32IZCMP-NEXT: lw a0, 60(sp) # 4-byte Folded Reload
1270 ; RV32IZCMP-NEXT: sw a0, 32(s1)
1271 ; RV32IZCMP-NEXT: lw a0, 64(sp) # 4-byte Folded Reload
1272 ; RV32IZCMP-NEXT: sw a0, 28(s1)
1273 ; RV32IZCMP-NEXT: lw a0, 68(sp) # 4-byte Folded Reload
1274 ; RV32IZCMP-NEXT: sw a0, 24(s1)
1275 ; RV32IZCMP-NEXT: lw a0, 72(sp) # 4-byte Folded Reload
1276 ; RV32IZCMP-NEXT: sw a0, 20(s1)
1277 ; RV32IZCMP-NEXT: lw a0, 76(sp) # 4-byte Folded Reload
1278 ; RV32IZCMP-NEXT: sw a0, 16(s1)
1279 ; RV32IZCMP-NEXT: lw a0, 80(sp) # 4-byte Folded Reload
1280 ; RV32IZCMP-NEXT: sw a0, %lo(var+12)(s0)
1281 ; RV32IZCMP-NEXT: lw a0, 84(sp) # 4-byte Folded Reload
1282 ; RV32IZCMP-NEXT: sw a0, %lo(var+8)(s0)
1283 ; RV32IZCMP-NEXT: lw a0, 88(sp) # 4-byte Folded Reload
1284 ; RV32IZCMP-NEXT: sw a0, %lo(var+4)(s0)
1285 ; RV32IZCMP-NEXT: lw a0, 92(sp) # 4-byte Folded Reload
1286 ; RV32IZCMP-NEXT: sw a0, %lo(var)(s0)
1287 ; RV32IZCMP-NEXT: addi sp, sp, 48
1288 ; RV32IZCMP-NEXT: cm.popret {ra, s0-s11}, 112
1290 ; RV32IZCMP-WITH-FP-LABEL: caller:
1291 ; RV32IZCMP-WITH-FP: # %bb.0:
1292 ; RV32IZCMP-WITH-FP-NEXT: addi sp, sp, -144
1293 ; RV32IZCMP-WITH-FP-NEXT: sw ra, 140(sp) # 4-byte Folded Spill
1294 ; RV32IZCMP-WITH-FP-NEXT: sw s0, 136(sp) # 4-byte Folded Spill
1295 ; RV32IZCMP-WITH-FP-NEXT: sw s1, 132(sp) # 4-byte Folded Spill
1296 ; RV32IZCMP-WITH-FP-NEXT: sw s2, 128(sp) # 4-byte Folded Spill
1297 ; RV32IZCMP-WITH-FP-NEXT: sw s3, 124(sp) # 4-byte Folded Spill
1298 ; RV32IZCMP-WITH-FP-NEXT: sw s4, 120(sp) # 4-byte Folded Spill
1299 ; RV32IZCMP-WITH-FP-NEXT: sw s5, 116(sp) # 4-byte Folded Spill
1300 ; RV32IZCMP-WITH-FP-NEXT: sw s6, 112(sp) # 4-byte Folded Spill
1301 ; RV32IZCMP-WITH-FP-NEXT: sw s7, 108(sp) # 4-byte Folded Spill
1302 ; RV32IZCMP-WITH-FP-NEXT: sw s8, 104(sp) # 4-byte Folded Spill
1303 ; RV32IZCMP-WITH-FP-NEXT: sw s9, 100(sp) # 4-byte Folded Spill
1304 ; RV32IZCMP-WITH-FP-NEXT: sw s10, 96(sp) # 4-byte Folded Spill
1305 ; RV32IZCMP-WITH-FP-NEXT: sw s11, 92(sp) # 4-byte Folded Spill
1306 ; RV32IZCMP-WITH-FP-NEXT: addi s0, sp, 144
1307 ; RV32IZCMP-WITH-FP-NEXT: lui s6, %hi(var)
1308 ; RV32IZCMP-WITH-FP-NEXT: lw a0, %lo(var)(s6)
1309 ; RV32IZCMP-WITH-FP-NEXT: sw a0, -56(s0) # 4-byte Folded Spill
1310 ; RV32IZCMP-WITH-FP-NEXT: lw a0, %lo(var+4)(s6)
1311 ; RV32IZCMP-WITH-FP-NEXT: sw a0, -60(s0) # 4-byte Folded Spill
1312 ; RV32IZCMP-WITH-FP-NEXT: lw a0, %lo(var+8)(s6)
1313 ; RV32IZCMP-WITH-FP-NEXT: sw a0, -64(s0) # 4-byte Folded Spill
1314 ; RV32IZCMP-WITH-FP-NEXT: lw a0, %lo(var+12)(s6)
1315 ; RV32IZCMP-WITH-FP-NEXT: sw a0, -68(s0) # 4-byte Folded Spill
1316 ; RV32IZCMP-WITH-FP-NEXT: addi s1, s6, %lo(var)
1317 ; RV32IZCMP-WITH-FP-NEXT: lw a0, 16(s1)
1318 ; RV32IZCMP-WITH-FP-NEXT: sw a0, -72(s0) # 4-byte Folded Spill
1319 ; RV32IZCMP-WITH-FP-NEXT: lw a0, 20(s1)
1320 ; RV32IZCMP-WITH-FP-NEXT: sw a0, -76(s0) # 4-byte Folded Spill
1321 ; RV32IZCMP-WITH-FP-NEXT: lw a0, 24(s1)
1322 ; RV32IZCMP-WITH-FP-NEXT: sw a0, -80(s0) # 4-byte Folded Spill
1323 ; RV32IZCMP-WITH-FP-NEXT: lw a0, 28(s1)
1324 ; RV32IZCMP-WITH-FP-NEXT: sw a0, -84(s0) # 4-byte Folded Spill
1325 ; RV32IZCMP-WITH-FP-NEXT: lw a0, 32(s1)
1326 ; RV32IZCMP-WITH-FP-NEXT: sw a0, -88(s0) # 4-byte Folded Spill
1327 ; RV32IZCMP-WITH-FP-NEXT: lw a0, 36(s1)
1328 ; RV32IZCMP-WITH-FP-NEXT: sw a0, -92(s0) # 4-byte Folded Spill
1329 ; RV32IZCMP-WITH-FP-NEXT: lw a0, 40(s1)
1330 ; RV32IZCMP-WITH-FP-NEXT: sw a0, -96(s0) # 4-byte Folded Spill
1331 ; RV32IZCMP-WITH-FP-NEXT: lw a0, 44(s1)
1332 ; RV32IZCMP-WITH-FP-NEXT: sw a0, -100(s0) # 4-byte Folded Spill
1333 ; RV32IZCMP-WITH-FP-NEXT: lw a0, 48(s1)
1334 ; RV32IZCMP-WITH-FP-NEXT: sw a0, -104(s0) # 4-byte Folded Spill
1335 ; RV32IZCMP-WITH-FP-NEXT: lw a0, 52(s1)
1336 ; RV32IZCMP-WITH-FP-NEXT: sw a0, -108(s0) # 4-byte Folded Spill
1337 ; RV32IZCMP-WITH-FP-NEXT: lw a0, 56(s1)
1338 ; RV32IZCMP-WITH-FP-NEXT: sw a0, -112(s0) # 4-byte Folded Spill
1339 ; RV32IZCMP-WITH-FP-NEXT: lw a0, 60(s1)
1340 ; RV32IZCMP-WITH-FP-NEXT: sw a0, -116(s0) # 4-byte Folded Spill
1341 ; RV32IZCMP-WITH-FP-NEXT: lw a0, 64(s1)
1342 ; RV32IZCMP-WITH-FP-NEXT: sw a0, -120(s0) # 4-byte Folded Spill
1343 ; RV32IZCMP-WITH-FP-NEXT: lw a0, 68(s1)
1344 ; RV32IZCMP-WITH-FP-NEXT: sw a0, -124(s0) # 4-byte Folded Spill
1345 ; RV32IZCMP-WITH-FP-NEXT: lw a0, 72(s1)
1346 ; RV32IZCMP-WITH-FP-NEXT: sw a0, -128(s0) # 4-byte Folded Spill
1347 ; RV32IZCMP-WITH-FP-NEXT: lw a0, 76(s1)
1348 ; RV32IZCMP-WITH-FP-NEXT: sw a0, -132(s0) # 4-byte Folded Spill
1349 ; RV32IZCMP-WITH-FP-NEXT: lw a0, 80(s1)
1350 ; RV32IZCMP-WITH-FP-NEXT: sw a0, -136(s0) # 4-byte Folded Spill
1351 ; RV32IZCMP-WITH-FP-NEXT: lw a0, 84(s1)
1352 ; RV32IZCMP-WITH-FP-NEXT: sw a0, -140(s0) # 4-byte Folded Spill
1353 ; RV32IZCMP-WITH-FP-NEXT: lw a0, 88(s1)
1354 ; RV32IZCMP-WITH-FP-NEXT: sw a0, -144(s0) # 4-byte Folded Spill
1355 ; RV32IZCMP-WITH-FP-NEXT: lw s8, 92(s1)
1356 ; RV32IZCMP-WITH-FP-NEXT: lw s9, 96(s1)
1357 ; RV32IZCMP-WITH-FP-NEXT: lw s10, 100(s1)
1358 ; RV32IZCMP-WITH-FP-NEXT: lw s11, 104(s1)
1359 ; RV32IZCMP-WITH-FP-NEXT: lw s2, 108(s1)
1360 ; RV32IZCMP-WITH-FP-NEXT: lw s3, 112(s1)
1361 ; RV32IZCMP-WITH-FP-NEXT: lw s4, 116(s1)
1362 ; RV32IZCMP-WITH-FP-NEXT: lw s5, 120(s1)
1363 ; RV32IZCMP-WITH-FP-NEXT: lw s7, 124(s1)
1364 ; RV32IZCMP-WITH-FP-NEXT: call callee@plt
1365 ; RV32IZCMP-WITH-FP-NEXT: sw s7, 124(s1)
1366 ; RV32IZCMP-WITH-FP-NEXT: sw s5, 120(s1)
1367 ; RV32IZCMP-WITH-FP-NEXT: sw s4, 116(s1)
1368 ; RV32IZCMP-WITH-FP-NEXT: sw s3, 112(s1)
1369 ; RV32IZCMP-WITH-FP-NEXT: sw s2, 108(s1)
1370 ; RV32IZCMP-WITH-FP-NEXT: sw s11, 104(s1)
1371 ; RV32IZCMP-WITH-FP-NEXT: sw s10, 100(s1)
1372 ; RV32IZCMP-WITH-FP-NEXT: sw s9, 96(s1)
1373 ; RV32IZCMP-WITH-FP-NEXT: sw s8, 92(s1)
1374 ; RV32IZCMP-WITH-FP-NEXT: lw a0, -144(s0) # 4-byte Folded Reload
1375 ; RV32IZCMP-WITH-FP-NEXT: sw a0, 88(s1)
1376 ; RV32IZCMP-WITH-FP-NEXT: lw a0, -140(s0) # 4-byte Folded Reload
1377 ; RV32IZCMP-WITH-FP-NEXT: sw a0, 84(s1)
1378 ; RV32IZCMP-WITH-FP-NEXT: lw a0, -136(s0) # 4-byte Folded Reload
1379 ; RV32IZCMP-WITH-FP-NEXT: sw a0, 80(s1)
1380 ; RV32IZCMP-WITH-FP-NEXT: lw a0, -132(s0) # 4-byte Folded Reload
1381 ; RV32IZCMP-WITH-FP-NEXT: sw a0, 76(s1)
1382 ; RV32IZCMP-WITH-FP-NEXT: lw a0, -128(s0) # 4-byte Folded Reload
1383 ; RV32IZCMP-WITH-FP-NEXT: sw a0, 72(s1)
1384 ; RV32IZCMP-WITH-FP-NEXT: lw a0, -124(s0) # 4-byte Folded Reload
1385 ; RV32IZCMP-WITH-FP-NEXT: sw a0, 68(s1)
1386 ; RV32IZCMP-WITH-FP-NEXT: lw a0, -120(s0) # 4-byte Folded Reload
1387 ; RV32IZCMP-WITH-FP-NEXT: sw a0, 64(s1)
1388 ; RV32IZCMP-WITH-FP-NEXT: lw a0, -116(s0) # 4-byte Folded Reload
1389 ; RV32IZCMP-WITH-FP-NEXT: sw a0, 60(s1)
1390 ; RV32IZCMP-WITH-FP-NEXT: lw a0, -112(s0) # 4-byte Folded Reload
1391 ; RV32IZCMP-WITH-FP-NEXT: sw a0, 56(s1)
1392 ; RV32IZCMP-WITH-FP-NEXT: lw a0, -108(s0) # 4-byte Folded Reload
1393 ; RV32IZCMP-WITH-FP-NEXT: sw a0, 52(s1)
1394 ; RV32IZCMP-WITH-FP-NEXT: lw a0, -104(s0) # 4-byte Folded Reload
1395 ; RV32IZCMP-WITH-FP-NEXT: sw a0, 48(s1)
1396 ; RV32IZCMP-WITH-FP-NEXT: lw a0, -100(s0) # 4-byte Folded Reload
1397 ; RV32IZCMP-WITH-FP-NEXT: sw a0, 44(s1)
1398 ; RV32IZCMP-WITH-FP-NEXT: lw a0, -96(s0) # 4-byte Folded Reload
1399 ; RV32IZCMP-WITH-FP-NEXT: sw a0, 40(s1)
1400 ; RV32IZCMP-WITH-FP-NEXT: lw a0, -92(s0) # 4-byte Folded Reload
1401 ; RV32IZCMP-WITH-FP-NEXT: sw a0, 36(s1)
1402 ; RV32IZCMP-WITH-FP-NEXT: lw a0, -88(s0) # 4-byte Folded Reload
1403 ; RV32IZCMP-WITH-FP-NEXT: sw a0, 32(s1)
1404 ; RV32IZCMP-WITH-FP-NEXT: lw a0, -84(s0) # 4-byte Folded Reload
1405 ; RV32IZCMP-WITH-FP-NEXT: sw a0, 28(s1)
1406 ; RV32IZCMP-WITH-FP-NEXT: lw a0, -80(s0) # 4-byte Folded Reload
1407 ; RV32IZCMP-WITH-FP-NEXT: sw a0, 24(s1)
1408 ; RV32IZCMP-WITH-FP-NEXT: lw a0, -76(s0) # 4-byte Folded Reload
1409 ; RV32IZCMP-WITH-FP-NEXT: sw a0, 20(s1)
1410 ; RV32IZCMP-WITH-FP-NEXT: lw a0, -72(s0) # 4-byte Folded Reload
1411 ; RV32IZCMP-WITH-FP-NEXT: sw a0, 16(s1)
1412 ; RV32IZCMP-WITH-FP-NEXT: lw a0, -68(s0) # 4-byte Folded Reload
1413 ; RV32IZCMP-WITH-FP-NEXT: sw a0, %lo(var+12)(s6)
1414 ; RV32IZCMP-WITH-FP-NEXT: lw a0, -64(s0) # 4-byte Folded Reload
1415 ; RV32IZCMP-WITH-FP-NEXT: sw a0, %lo(var+8)(s6)
1416 ; RV32IZCMP-WITH-FP-NEXT: lw a0, -60(s0) # 4-byte Folded Reload
1417 ; RV32IZCMP-WITH-FP-NEXT: sw a0, %lo(var+4)(s6)
1418 ; RV32IZCMP-WITH-FP-NEXT: lw a0, -56(s0) # 4-byte Folded Reload
1419 ; RV32IZCMP-WITH-FP-NEXT: sw a0, %lo(var)(s6)
1420 ; RV32IZCMP-WITH-FP-NEXT: lw ra, 140(sp) # 4-byte Folded Reload
1421 ; RV32IZCMP-WITH-FP-NEXT: lw s0, 136(sp) # 4-byte Folded Reload
1422 ; RV32IZCMP-WITH-FP-NEXT: lw s1, 132(sp) # 4-byte Folded Reload
1423 ; RV32IZCMP-WITH-FP-NEXT: lw s2, 128(sp) # 4-byte Folded Reload
1424 ; RV32IZCMP-WITH-FP-NEXT: lw s3, 124(sp) # 4-byte Folded Reload
1425 ; RV32IZCMP-WITH-FP-NEXT: lw s4, 120(sp) # 4-byte Folded Reload
1426 ; RV32IZCMP-WITH-FP-NEXT: lw s5, 116(sp) # 4-byte Folded Reload
1427 ; RV32IZCMP-WITH-FP-NEXT: lw s6, 112(sp) # 4-byte Folded Reload
1428 ; RV32IZCMP-WITH-FP-NEXT: lw s7, 108(sp) # 4-byte Folded Reload
1429 ; RV32IZCMP-WITH-FP-NEXT: lw s8, 104(sp) # 4-byte Folded Reload
1430 ; RV32IZCMP-WITH-FP-NEXT: lw s9, 100(sp) # 4-byte Folded Reload
1431 ; RV32IZCMP-WITH-FP-NEXT: lw s10, 96(sp) # 4-byte Folded Reload
1432 ; RV32IZCMP-WITH-FP-NEXT: lw s11, 92(sp) # 4-byte Folded Reload
1433 ; RV32IZCMP-WITH-FP-NEXT: addi sp, sp, 144
1434 ; RV32IZCMP-WITH-FP-NEXT: ret
1436 ; RV64I-LABEL: caller:
1438 ; RV64I-NEXT: addi sp, sp, -288
1439 ; RV64I-NEXT: sd ra, 280(sp) # 8-byte Folded Spill
1440 ; RV64I-NEXT: sd s0, 272(sp) # 8-byte Folded Spill
1441 ; RV64I-NEXT: sd s1, 264(sp) # 8-byte Folded Spill
1442 ; RV64I-NEXT: sd s2, 256(sp) # 8-byte Folded Spill
1443 ; RV64I-NEXT: sd s3, 248(sp) # 8-byte Folded Spill
1444 ; RV64I-NEXT: sd s4, 240(sp) # 8-byte Folded Spill
1445 ; RV64I-NEXT: sd s5, 232(sp) # 8-byte Folded Spill
1446 ; RV64I-NEXT: sd s6, 224(sp) # 8-byte Folded Spill
1447 ; RV64I-NEXT: sd s7, 216(sp) # 8-byte Folded Spill
1448 ; RV64I-NEXT: sd s8, 208(sp) # 8-byte Folded Spill
1449 ; RV64I-NEXT: sd s9, 200(sp) # 8-byte Folded Spill
1450 ; RV64I-NEXT: sd s10, 192(sp) # 8-byte Folded Spill
1451 ; RV64I-NEXT: sd s11, 184(sp) # 8-byte Folded Spill
1452 ; RV64I-NEXT: lui s0, %hi(var)
1453 ; RV64I-NEXT: lw a0, %lo(var)(s0)
1454 ; RV64I-NEXT: sd a0, 176(sp) # 8-byte Folded Spill
1455 ; RV64I-NEXT: lw a0, %lo(var+4)(s0)
1456 ; RV64I-NEXT: sd a0, 168(sp) # 8-byte Folded Spill
1457 ; RV64I-NEXT: lw a0, %lo(var+8)(s0)
1458 ; RV64I-NEXT: sd a0, 160(sp) # 8-byte Folded Spill
1459 ; RV64I-NEXT: lw a0, %lo(var+12)(s0)
1460 ; RV64I-NEXT: sd a0, 152(sp) # 8-byte Folded Spill
1461 ; RV64I-NEXT: addi s5, s0, %lo(var)
1462 ; RV64I-NEXT: lw a0, 16(s5)
1463 ; RV64I-NEXT: sd a0, 144(sp) # 8-byte Folded Spill
1464 ; RV64I-NEXT: lw a0, 20(s5)
1465 ; RV64I-NEXT: sd a0, 136(sp) # 8-byte Folded Spill
1466 ; RV64I-NEXT: lw a0, 24(s5)
1467 ; RV64I-NEXT: sd a0, 128(sp) # 8-byte Folded Spill
1468 ; RV64I-NEXT: lw a0, 28(s5)
1469 ; RV64I-NEXT: sd a0, 120(sp) # 8-byte Folded Spill
1470 ; RV64I-NEXT: lw a0, 32(s5)
1471 ; RV64I-NEXT: sd a0, 112(sp) # 8-byte Folded Spill
1472 ; RV64I-NEXT: lw a0, 36(s5)
1473 ; RV64I-NEXT: sd a0, 104(sp) # 8-byte Folded Spill
1474 ; RV64I-NEXT: lw a0, 40(s5)
1475 ; RV64I-NEXT: sd a0, 96(sp) # 8-byte Folded Spill
1476 ; RV64I-NEXT: lw a0, 44(s5)
1477 ; RV64I-NEXT: sd a0, 88(sp) # 8-byte Folded Spill
1478 ; RV64I-NEXT: lw a0, 48(s5)
1479 ; RV64I-NEXT: sd a0, 80(sp) # 8-byte Folded Spill
1480 ; RV64I-NEXT: lw a0, 52(s5)
1481 ; RV64I-NEXT: sd a0, 72(sp) # 8-byte Folded Spill
1482 ; RV64I-NEXT: lw a0, 56(s5)
1483 ; RV64I-NEXT: sd a0, 64(sp) # 8-byte Folded Spill
1484 ; RV64I-NEXT: lw a0, 60(s5)
1485 ; RV64I-NEXT: sd a0, 56(sp) # 8-byte Folded Spill
1486 ; RV64I-NEXT: lw a0, 64(s5)
1487 ; RV64I-NEXT: sd a0, 48(sp) # 8-byte Folded Spill
1488 ; RV64I-NEXT: lw a0, 68(s5)
1489 ; RV64I-NEXT: sd a0, 40(sp) # 8-byte Folded Spill
1490 ; RV64I-NEXT: lw a0, 72(s5)
1491 ; RV64I-NEXT: sd a0, 32(sp) # 8-byte Folded Spill
1492 ; RV64I-NEXT: lw a0, 76(s5)
1493 ; RV64I-NEXT: sd a0, 24(sp) # 8-byte Folded Spill
1494 ; RV64I-NEXT: lw a0, 80(s5)
1495 ; RV64I-NEXT: sd a0, 16(sp) # 8-byte Folded Spill
1496 ; RV64I-NEXT: lw a0, 84(s5)
1497 ; RV64I-NEXT: sd a0, 8(sp) # 8-byte Folded Spill
1498 ; RV64I-NEXT: lw s3, 88(s5)
1499 ; RV64I-NEXT: lw s4, 92(s5)
1500 ; RV64I-NEXT: lw s6, 96(s5)
1501 ; RV64I-NEXT: lw s7, 100(s5)
1502 ; RV64I-NEXT: lw s8, 104(s5)
1503 ; RV64I-NEXT: lw s9, 108(s5)
1504 ; RV64I-NEXT: lw s10, 112(s5)
1505 ; RV64I-NEXT: lw s11, 116(s5)
1506 ; RV64I-NEXT: lw s1, 120(s5)
1507 ; RV64I-NEXT: lw s2, 124(s5)
1508 ; RV64I-NEXT: call callee@plt
1509 ; RV64I-NEXT: sw s2, 124(s5)
1510 ; RV64I-NEXT: sw s1, 120(s5)
1511 ; RV64I-NEXT: sw s11, 116(s5)
1512 ; RV64I-NEXT: sw s10, 112(s5)
1513 ; RV64I-NEXT: sw s9, 108(s5)
1514 ; RV64I-NEXT: sw s8, 104(s5)
1515 ; RV64I-NEXT: sw s7, 100(s5)
1516 ; RV64I-NEXT: sw s6, 96(s5)
1517 ; RV64I-NEXT: sw s4, 92(s5)
1518 ; RV64I-NEXT: sw s3, 88(s5)
1519 ; RV64I-NEXT: ld a0, 8(sp) # 8-byte Folded Reload
1520 ; RV64I-NEXT: sw a0, 84(s5)
1521 ; RV64I-NEXT: ld a0, 16(sp) # 8-byte Folded Reload
1522 ; RV64I-NEXT: sw a0, 80(s5)
1523 ; RV64I-NEXT: ld a0, 24(sp) # 8-byte Folded Reload
1524 ; RV64I-NEXT: sw a0, 76(s5)
1525 ; RV64I-NEXT: ld a0, 32(sp) # 8-byte Folded Reload
1526 ; RV64I-NEXT: sw a0, 72(s5)
1527 ; RV64I-NEXT: ld a0, 40(sp) # 8-byte Folded Reload
1528 ; RV64I-NEXT: sw a0, 68(s5)
1529 ; RV64I-NEXT: ld a0, 48(sp) # 8-byte Folded Reload
1530 ; RV64I-NEXT: sw a0, 64(s5)
1531 ; RV64I-NEXT: ld a0, 56(sp) # 8-byte Folded Reload
1532 ; RV64I-NEXT: sw a0, 60(s5)
1533 ; RV64I-NEXT: ld a0, 64(sp) # 8-byte Folded Reload
1534 ; RV64I-NEXT: sw a0, 56(s5)
1535 ; RV64I-NEXT: ld a0, 72(sp) # 8-byte Folded Reload
1536 ; RV64I-NEXT: sw a0, 52(s5)
1537 ; RV64I-NEXT: ld a0, 80(sp) # 8-byte Folded Reload
1538 ; RV64I-NEXT: sw a0, 48(s5)
1539 ; RV64I-NEXT: ld a0, 88(sp) # 8-byte Folded Reload
1540 ; RV64I-NEXT: sw a0, 44(s5)
1541 ; RV64I-NEXT: ld a0, 96(sp) # 8-byte Folded Reload
1542 ; RV64I-NEXT: sw a0, 40(s5)
1543 ; RV64I-NEXT: ld a0, 104(sp) # 8-byte Folded Reload
1544 ; RV64I-NEXT: sw a0, 36(s5)
1545 ; RV64I-NEXT: ld a0, 112(sp) # 8-byte Folded Reload
1546 ; RV64I-NEXT: sw a0, 32(s5)
1547 ; RV64I-NEXT: ld a0, 120(sp) # 8-byte Folded Reload
1548 ; RV64I-NEXT: sw a0, 28(s5)
1549 ; RV64I-NEXT: ld a0, 128(sp) # 8-byte Folded Reload
1550 ; RV64I-NEXT: sw a0, 24(s5)
1551 ; RV64I-NEXT: ld a0, 136(sp) # 8-byte Folded Reload
1552 ; RV64I-NEXT: sw a0, 20(s5)
1553 ; RV64I-NEXT: ld a0, 144(sp) # 8-byte Folded Reload
1554 ; RV64I-NEXT: sw a0, 16(s5)
1555 ; RV64I-NEXT: ld a0, 152(sp) # 8-byte Folded Reload
1556 ; RV64I-NEXT: sw a0, %lo(var+12)(s0)
1557 ; RV64I-NEXT: ld a0, 160(sp) # 8-byte Folded Reload
1558 ; RV64I-NEXT: sw a0, %lo(var+8)(s0)
1559 ; RV64I-NEXT: ld a0, 168(sp) # 8-byte Folded Reload
1560 ; RV64I-NEXT: sw a0, %lo(var+4)(s0)
1561 ; RV64I-NEXT: ld a0, 176(sp) # 8-byte Folded Reload
1562 ; RV64I-NEXT: sw a0, %lo(var)(s0)
1563 ; RV64I-NEXT: ld ra, 280(sp) # 8-byte Folded Reload
1564 ; RV64I-NEXT: ld s0, 272(sp) # 8-byte Folded Reload
1565 ; RV64I-NEXT: ld s1, 264(sp) # 8-byte Folded Reload
1566 ; RV64I-NEXT: ld s2, 256(sp) # 8-byte Folded Reload
1567 ; RV64I-NEXT: ld s3, 248(sp) # 8-byte Folded Reload
1568 ; RV64I-NEXT: ld s4, 240(sp) # 8-byte Folded Reload
1569 ; RV64I-NEXT: ld s5, 232(sp) # 8-byte Folded Reload
1570 ; RV64I-NEXT: ld s6, 224(sp) # 8-byte Folded Reload
1571 ; RV64I-NEXT: ld s7, 216(sp) # 8-byte Folded Reload
1572 ; RV64I-NEXT: ld s8, 208(sp) # 8-byte Folded Reload
1573 ; RV64I-NEXT: ld s9, 200(sp) # 8-byte Folded Reload
1574 ; RV64I-NEXT: ld s10, 192(sp) # 8-byte Folded Reload
1575 ; RV64I-NEXT: ld s11, 184(sp) # 8-byte Folded Reload
1576 ; RV64I-NEXT: addi sp, sp, 288
1579 ; RV64I-WITH-FP-LABEL: caller:
1580 ; RV64I-WITH-FP: # %bb.0:
1581 ; RV64I-WITH-FP-NEXT: addi sp, sp, -288
1582 ; RV64I-WITH-FP-NEXT: sd ra, 280(sp) # 8-byte Folded Spill
1583 ; RV64I-WITH-FP-NEXT: sd s0, 272(sp) # 8-byte Folded Spill
1584 ; RV64I-WITH-FP-NEXT: sd s1, 264(sp) # 8-byte Folded Spill
1585 ; RV64I-WITH-FP-NEXT: sd s2, 256(sp) # 8-byte Folded Spill
1586 ; RV64I-WITH-FP-NEXT: sd s3, 248(sp) # 8-byte Folded Spill
1587 ; RV64I-WITH-FP-NEXT: sd s4, 240(sp) # 8-byte Folded Spill
1588 ; RV64I-WITH-FP-NEXT: sd s5, 232(sp) # 8-byte Folded Spill
1589 ; RV64I-WITH-FP-NEXT: sd s6, 224(sp) # 8-byte Folded Spill
1590 ; RV64I-WITH-FP-NEXT: sd s7, 216(sp) # 8-byte Folded Spill
1591 ; RV64I-WITH-FP-NEXT: sd s8, 208(sp) # 8-byte Folded Spill
1592 ; RV64I-WITH-FP-NEXT: sd s9, 200(sp) # 8-byte Folded Spill
1593 ; RV64I-WITH-FP-NEXT: sd s10, 192(sp) # 8-byte Folded Spill
1594 ; RV64I-WITH-FP-NEXT: sd s11, 184(sp) # 8-byte Folded Spill
1595 ; RV64I-WITH-FP-NEXT: addi s0, sp, 288
1596 ; RV64I-WITH-FP-NEXT: lui s1, %hi(var)
1597 ; RV64I-WITH-FP-NEXT: lw a0, %lo(var)(s1)
1598 ; RV64I-WITH-FP-NEXT: sd a0, -112(s0) # 8-byte Folded Spill
1599 ; RV64I-WITH-FP-NEXT: lw a0, %lo(var+4)(s1)
1600 ; RV64I-WITH-FP-NEXT: sd a0, -120(s0) # 8-byte Folded Spill
1601 ; RV64I-WITH-FP-NEXT: lw a0, %lo(var+8)(s1)
1602 ; RV64I-WITH-FP-NEXT: sd a0, -128(s0) # 8-byte Folded Spill
1603 ; RV64I-WITH-FP-NEXT: lw a0, %lo(var+12)(s1)
1604 ; RV64I-WITH-FP-NEXT: sd a0, -136(s0) # 8-byte Folded Spill
1605 ; RV64I-WITH-FP-NEXT: addi s6, s1, %lo(var)
1606 ; RV64I-WITH-FP-NEXT: lw a0, 16(s6)
1607 ; RV64I-WITH-FP-NEXT: sd a0, -144(s0) # 8-byte Folded Spill
1608 ; RV64I-WITH-FP-NEXT: lw a0, 20(s6)
1609 ; RV64I-WITH-FP-NEXT: sd a0, -152(s0) # 8-byte Folded Spill
1610 ; RV64I-WITH-FP-NEXT: lw a0, 24(s6)
1611 ; RV64I-WITH-FP-NEXT: sd a0, -160(s0) # 8-byte Folded Spill
1612 ; RV64I-WITH-FP-NEXT: lw a0, 28(s6)
1613 ; RV64I-WITH-FP-NEXT: sd a0, -168(s0) # 8-byte Folded Spill
1614 ; RV64I-WITH-FP-NEXT: lw a0, 32(s6)
1615 ; RV64I-WITH-FP-NEXT: sd a0, -176(s0) # 8-byte Folded Spill
1616 ; RV64I-WITH-FP-NEXT: lw a0, 36(s6)
1617 ; RV64I-WITH-FP-NEXT: sd a0, -184(s0) # 8-byte Folded Spill
1618 ; RV64I-WITH-FP-NEXT: lw a0, 40(s6)
1619 ; RV64I-WITH-FP-NEXT: sd a0, -192(s0) # 8-byte Folded Spill
1620 ; RV64I-WITH-FP-NEXT: lw a0, 44(s6)
1621 ; RV64I-WITH-FP-NEXT: sd a0, -200(s0) # 8-byte Folded Spill
1622 ; RV64I-WITH-FP-NEXT: lw a0, 48(s6)
1623 ; RV64I-WITH-FP-NEXT: sd a0, -208(s0) # 8-byte Folded Spill
1624 ; RV64I-WITH-FP-NEXT: lw a0, 52(s6)
1625 ; RV64I-WITH-FP-NEXT: sd a0, -216(s0) # 8-byte Folded Spill
1626 ; RV64I-WITH-FP-NEXT: lw a0, 56(s6)
1627 ; RV64I-WITH-FP-NEXT: sd a0, -224(s0) # 8-byte Folded Spill
1628 ; RV64I-WITH-FP-NEXT: lw a0, 60(s6)
1629 ; RV64I-WITH-FP-NEXT: sd a0, -232(s0) # 8-byte Folded Spill
1630 ; RV64I-WITH-FP-NEXT: lw a0, 64(s6)
1631 ; RV64I-WITH-FP-NEXT: sd a0, -240(s0) # 8-byte Folded Spill
1632 ; RV64I-WITH-FP-NEXT: lw a0, 68(s6)
1633 ; RV64I-WITH-FP-NEXT: sd a0, -248(s0) # 8-byte Folded Spill
1634 ; RV64I-WITH-FP-NEXT: lw a0, 72(s6)
1635 ; RV64I-WITH-FP-NEXT: sd a0, -256(s0) # 8-byte Folded Spill
1636 ; RV64I-WITH-FP-NEXT: lw a0, 76(s6)
1637 ; RV64I-WITH-FP-NEXT: sd a0, -264(s0) # 8-byte Folded Spill
1638 ; RV64I-WITH-FP-NEXT: lw a0, 80(s6)
1639 ; RV64I-WITH-FP-NEXT: sd a0, -272(s0) # 8-byte Folded Spill
1640 ; RV64I-WITH-FP-NEXT: lw a0, 84(s6)
1641 ; RV64I-WITH-FP-NEXT: sd a0, -280(s0) # 8-byte Folded Spill
1642 ; RV64I-WITH-FP-NEXT: lw a0, 88(s6)
1643 ; RV64I-WITH-FP-NEXT: sd a0, -288(s0) # 8-byte Folded Spill
1644 ; RV64I-WITH-FP-NEXT: lw s8, 92(s6)
1645 ; RV64I-WITH-FP-NEXT: lw s9, 96(s6)
1646 ; RV64I-WITH-FP-NEXT: lw s10, 100(s6)
1647 ; RV64I-WITH-FP-NEXT: lw s11, 104(s6)
1648 ; RV64I-WITH-FP-NEXT: lw s2, 108(s6)
1649 ; RV64I-WITH-FP-NEXT: lw s3, 112(s6)
1650 ; RV64I-WITH-FP-NEXT: lw s4, 116(s6)
1651 ; RV64I-WITH-FP-NEXT: lw s5, 120(s6)
1652 ; RV64I-WITH-FP-NEXT: lw s7, 124(s6)
1653 ; RV64I-WITH-FP-NEXT: call callee@plt
1654 ; RV64I-WITH-FP-NEXT: sw s7, 124(s6)
1655 ; RV64I-WITH-FP-NEXT: sw s5, 120(s6)
1656 ; RV64I-WITH-FP-NEXT: sw s4, 116(s6)
1657 ; RV64I-WITH-FP-NEXT: sw s3, 112(s6)
1658 ; RV64I-WITH-FP-NEXT: sw s2, 108(s6)
1659 ; RV64I-WITH-FP-NEXT: sw s11, 104(s6)
1660 ; RV64I-WITH-FP-NEXT: sw s10, 100(s6)
1661 ; RV64I-WITH-FP-NEXT: sw s9, 96(s6)
1662 ; RV64I-WITH-FP-NEXT: sw s8, 92(s6)
1663 ; RV64I-WITH-FP-NEXT: ld a0, -288(s0) # 8-byte Folded Reload
1664 ; RV64I-WITH-FP-NEXT: sw a0, 88(s6)
1665 ; RV64I-WITH-FP-NEXT: ld a0, -280(s0) # 8-byte Folded Reload
1666 ; RV64I-WITH-FP-NEXT: sw a0, 84(s6)
1667 ; RV64I-WITH-FP-NEXT: ld a0, -272(s0) # 8-byte Folded Reload
1668 ; RV64I-WITH-FP-NEXT: sw a0, 80(s6)
1669 ; RV64I-WITH-FP-NEXT: ld a0, -264(s0) # 8-byte Folded Reload
1670 ; RV64I-WITH-FP-NEXT: sw a0, 76(s6)
1671 ; RV64I-WITH-FP-NEXT: ld a0, -256(s0) # 8-byte Folded Reload
1672 ; RV64I-WITH-FP-NEXT: sw a0, 72(s6)
1673 ; RV64I-WITH-FP-NEXT: ld a0, -248(s0) # 8-byte Folded Reload
1674 ; RV64I-WITH-FP-NEXT: sw a0, 68(s6)
1675 ; RV64I-WITH-FP-NEXT: ld a0, -240(s0) # 8-byte Folded Reload
1676 ; RV64I-WITH-FP-NEXT: sw a0, 64(s6)
1677 ; RV64I-WITH-FP-NEXT: ld a0, -232(s0) # 8-byte Folded Reload
1678 ; RV64I-WITH-FP-NEXT: sw a0, 60(s6)
1679 ; RV64I-WITH-FP-NEXT: ld a0, -224(s0) # 8-byte Folded Reload
1680 ; RV64I-WITH-FP-NEXT: sw a0, 56(s6)
1681 ; RV64I-WITH-FP-NEXT: ld a0, -216(s0) # 8-byte Folded Reload
1682 ; RV64I-WITH-FP-NEXT: sw a0, 52(s6)
1683 ; RV64I-WITH-FP-NEXT: ld a0, -208(s0) # 8-byte Folded Reload
1684 ; RV64I-WITH-FP-NEXT: sw a0, 48(s6)
1685 ; RV64I-WITH-FP-NEXT: ld a0, -200(s0) # 8-byte Folded Reload
1686 ; RV64I-WITH-FP-NEXT: sw a0, 44(s6)
1687 ; RV64I-WITH-FP-NEXT: ld a0, -192(s0) # 8-byte Folded Reload
1688 ; RV64I-WITH-FP-NEXT: sw a0, 40(s6)
1689 ; RV64I-WITH-FP-NEXT: ld a0, -184(s0) # 8-byte Folded Reload
1690 ; RV64I-WITH-FP-NEXT: sw a0, 36(s6)
1691 ; RV64I-WITH-FP-NEXT: ld a0, -176(s0) # 8-byte Folded Reload
1692 ; RV64I-WITH-FP-NEXT: sw a0, 32(s6)
1693 ; RV64I-WITH-FP-NEXT: ld a0, -168(s0) # 8-byte Folded Reload
1694 ; RV64I-WITH-FP-NEXT: sw a0, 28(s6)
1695 ; RV64I-WITH-FP-NEXT: ld a0, -160(s0) # 8-byte Folded Reload
1696 ; RV64I-WITH-FP-NEXT: sw a0, 24(s6)
1697 ; RV64I-WITH-FP-NEXT: ld a0, -152(s0) # 8-byte Folded Reload
1698 ; RV64I-WITH-FP-NEXT: sw a0, 20(s6)
1699 ; RV64I-WITH-FP-NEXT: ld a0, -144(s0) # 8-byte Folded Reload
1700 ; RV64I-WITH-FP-NEXT: sw a0, 16(s6)
1701 ; RV64I-WITH-FP-NEXT: ld a0, -136(s0) # 8-byte Folded Reload
1702 ; RV64I-WITH-FP-NEXT: sw a0, %lo(var+12)(s1)
1703 ; RV64I-WITH-FP-NEXT: ld a0, -128(s0) # 8-byte Folded Reload
1704 ; RV64I-WITH-FP-NEXT: sw a0, %lo(var+8)(s1)
1705 ; RV64I-WITH-FP-NEXT: ld a0, -120(s0) # 8-byte Folded Reload
1706 ; RV64I-WITH-FP-NEXT: sw a0, %lo(var+4)(s1)
1707 ; RV64I-WITH-FP-NEXT: ld a0, -112(s0) # 8-byte Folded Reload
1708 ; RV64I-WITH-FP-NEXT: sw a0, %lo(var)(s1)
1709 ; RV64I-WITH-FP-NEXT: ld ra, 280(sp) # 8-byte Folded Reload
1710 ; RV64I-WITH-FP-NEXT: ld s0, 272(sp) # 8-byte Folded Reload
1711 ; RV64I-WITH-FP-NEXT: ld s1, 264(sp) # 8-byte Folded Reload
1712 ; RV64I-WITH-FP-NEXT: ld s2, 256(sp) # 8-byte Folded Reload
1713 ; RV64I-WITH-FP-NEXT: ld s3, 248(sp) # 8-byte Folded Reload
1714 ; RV64I-WITH-FP-NEXT: ld s4, 240(sp) # 8-byte Folded Reload
1715 ; RV64I-WITH-FP-NEXT: ld s5, 232(sp) # 8-byte Folded Reload
1716 ; RV64I-WITH-FP-NEXT: ld s6, 224(sp) # 8-byte Folded Reload
1717 ; RV64I-WITH-FP-NEXT: ld s7, 216(sp) # 8-byte Folded Reload
1718 ; RV64I-WITH-FP-NEXT: ld s8, 208(sp) # 8-byte Folded Reload
1719 ; RV64I-WITH-FP-NEXT: ld s9, 200(sp) # 8-byte Folded Reload
1720 ; RV64I-WITH-FP-NEXT: ld s10, 192(sp) # 8-byte Folded Reload
1721 ; RV64I-WITH-FP-NEXT: ld s11, 184(sp) # 8-byte Folded Reload
1722 ; RV64I-WITH-FP-NEXT: addi sp, sp, 288
1723 ; RV64I-WITH-FP-NEXT: ret
1725 ; RV64IZCMP-LABEL: caller:
1726 ; RV64IZCMP: # %bb.0:
1727 ; RV64IZCMP-NEXT: cm.push {ra, s0-s11}, -160
1728 ; RV64IZCMP-NEXT: addi sp, sp, -128
1729 ; RV64IZCMP-NEXT: lui s0, %hi(var)
1730 ; RV64IZCMP-NEXT: lw a0, %lo(var)(s0)
1731 ; RV64IZCMP-NEXT: sd a0, 168(sp) # 8-byte Folded Spill
1732 ; RV64IZCMP-NEXT: lw a0, %lo(var+4)(s0)
1733 ; RV64IZCMP-NEXT: sd a0, 160(sp) # 8-byte Folded Spill
1734 ; RV64IZCMP-NEXT: lw a0, %lo(var+8)(s0)
1735 ; RV64IZCMP-NEXT: sd a0, 152(sp) # 8-byte Folded Spill
1736 ; RV64IZCMP-NEXT: lw a0, %lo(var+12)(s0)
1737 ; RV64IZCMP-NEXT: sd a0, 144(sp) # 8-byte Folded Spill
1738 ; RV64IZCMP-NEXT: addi s1, s0, %lo(var)
1739 ; RV64IZCMP-NEXT: lw a0, 16(s1)
1740 ; RV64IZCMP-NEXT: sd a0, 136(sp) # 8-byte Folded Spill
1741 ; RV64IZCMP-NEXT: lw a0, 20(s1)
1742 ; RV64IZCMP-NEXT: sd a0, 128(sp) # 8-byte Folded Spill
1743 ; RV64IZCMP-NEXT: lw a0, 24(s1)
1744 ; RV64IZCMP-NEXT: sd a0, 120(sp) # 8-byte Folded Spill
1745 ; RV64IZCMP-NEXT: lw a0, 28(s1)
1746 ; RV64IZCMP-NEXT: sd a0, 112(sp) # 8-byte Folded Spill
1747 ; RV64IZCMP-NEXT: lw a0, 32(s1)
1748 ; RV64IZCMP-NEXT: sd a0, 104(sp) # 8-byte Folded Spill
1749 ; RV64IZCMP-NEXT: lw a0, 36(s1)
1750 ; RV64IZCMP-NEXT: sd a0, 96(sp) # 8-byte Folded Spill
1751 ; RV64IZCMP-NEXT: lw a0, 40(s1)
1752 ; RV64IZCMP-NEXT: sd a0, 88(sp) # 8-byte Folded Spill
1753 ; RV64IZCMP-NEXT: lw a0, 44(s1)
1754 ; RV64IZCMP-NEXT: sd a0, 80(sp) # 8-byte Folded Spill
1755 ; RV64IZCMP-NEXT: lw a0, 48(s1)
1756 ; RV64IZCMP-NEXT: sd a0, 72(sp) # 8-byte Folded Spill
1757 ; RV64IZCMP-NEXT: lw a0, 52(s1)
1758 ; RV64IZCMP-NEXT: sd a0, 64(sp) # 8-byte Folded Spill
1759 ; RV64IZCMP-NEXT: lw a0, 56(s1)
1760 ; RV64IZCMP-NEXT: sd a0, 56(sp) # 8-byte Folded Spill
1761 ; RV64IZCMP-NEXT: lw a0, 60(s1)
1762 ; RV64IZCMP-NEXT: sd a0, 48(sp) # 8-byte Folded Spill
1763 ; RV64IZCMP-NEXT: lw a0, 64(s1)
1764 ; RV64IZCMP-NEXT: sd a0, 40(sp) # 8-byte Folded Spill
1765 ; RV64IZCMP-NEXT: lw a0, 68(s1)
1766 ; RV64IZCMP-NEXT: sd a0, 32(sp) # 8-byte Folded Spill
1767 ; RV64IZCMP-NEXT: lw a0, 72(s1)
1768 ; RV64IZCMP-NEXT: sd a0, 24(sp) # 8-byte Folded Spill
1769 ; RV64IZCMP-NEXT: lw a0, 76(s1)
1770 ; RV64IZCMP-NEXT: sd a0, 16(sp) # 8-byte Folded Spill
1771 ; RV64IZCMP-NEXT: lw a0, 80(s1)
1772 ; RV64IZCMP-NEXT: sd a0, 8(sp) # 8-byte Folded Spill
1773 ; RV64IZCMP-NEXT: lw a0, 84(s1)
1774 ; RV64IZCMP-NEXT: sd a0, 0(sp) # 8-byte Folded Spill
1775 ; RV64IZCMP-NEXT: lw s4, 88(s1)
1776 ; RV64IZCMP-NEXT: lw s5, 92(s1)
1777 ; RV64IZCMP-NEXT: lw s6, 96(s1)
1778 ; RV64IZCMP-NEXT: lw s7, 100(s1)
1779 ; RV64IZCMP-NEXT: lw s8, 104(s1)
1780 ; RV64IZCMP-NEXT: lw s9, 108(s1)
1781 ; RV64IZCMP-NEXT: lw s10, 112(s1)
1782 ; RV64IZCMP-NEXT: lw s11, 116(s1)
1783 ; RV64IZCMP-NEXT: lw s2, 120(s1)
1784 ; RV64IZCMP-NEXT: lw s3, 124(s1)
1785 ; RV64IZCMP-NEXT: call callee@plt
1786 ; RV64IZCMP-NEXT: sw s3, 124(s1)
1787 ; RV64IZCMP-NEXT: sw s2, 120(s1)
1788 ; RV64IZCMP-NEXT: sw s11, 116(s1)
1789 ; RV64IZCMP-NEXT: sw s10, 112(s1)
1790 ; RV64IZCMP-NEXT: sw s9, 108(s1)
1791 ; RV64IZCMP-NEXT: sw s8, 104(s1)
1792 ; RV64IZCMP-NEXT: sw s7, 100(s1)
1793 ; RV64IZCMP-NEXT: sw s6, 96(s1)
1794 ; RV64IZCMP-NEXT: sw s5, 92(s1)
1795 ; RV64IZCMP-NEXT: sw s4, 88(s1)
1796 ; RV64IZCMP-NEXT: ld a0, 0(sp) # 8-byte Folded Reload
1797 ; RV64IZCMP-NEXT: sw a0, 84(s1)
1798 ; RV64IZCMP-NEXT: ld a0, 8(sp) # 8-byte Folded Reload
1799 ; RV64IZCMP-NEXT: sw a0, 80(s1)
1800 ; RV64IZCMP-NEXT: ld a0, 16(sp) # 8-byte Folded Reload
1801 ; RV64IZCMP-NEXT: sw a0, 76(s1)
1802 ; RV64IZCMP-NEXT: ld a0, 24(sp) # 8-byte Folded Reload
1803 ; RV64IZCMP-NEXT: sw a0, 72(s1)
1804 ; RV64IZCMP-NEXT: ld a0, 32(sp) # 8-byte Folded Reload
1805 ; RV64IZCMP-NEXT: sw a0, 68(s1)
1806 ; RV64IZCMP-NEXT: ld a0, 40(sp) # 8-byte Folded Reload
1807 ; RV64IZCMP-NEXT: sw a0, 64(s1)
1808 ; RV64IZCMP-NEXT: ld a0, 48(sp) # 8-byte Folded Reload
1809 ; RV64IZCMP-NEXT: sw a0, 60(s1)
1810 ; RV64IZCMP-NEXT: ld a0, 56(sp) # 8-byte Folded Reload
1811 ; RV64IZCMP-NEXT: sw a0, 56(s1)
1812 ; RV64IZCMP-NEXT: ld a0, 64(sp) # 8-byte Folded Reload
1813 ; RV64IZCMP-NEXT: sw a0, 52(s1)
1814 ; RV64IZCMP-NEXT: ld a0, 72(sp) # 8-byte Folded Reload
1815 ; RV64IZCMP-NEXT: sw a0, 48(s1)
1816 ; RV64IZCMP-NEXT: ld a0, 80(sp) # 8-byte Folded Reload
1817 ; RV64IZCMP-NEXT: sw a0, 44(s1)
1818 ; RV64IZCMP-NEXT: ld a0, 88(sp) # 8-byte Folded Reload
1819 ; RV64IZCMP-NEXT: sw a0, 40(s1)
1820 ; RV64IZCMP-NEXT: ld a0, 96(sp) # 8-byte Folded Reload
1821 ; RV64IZCMP-NEXT: sw a0, 36(s1)
1822 ; RV64IZCMP-NEXT: ld a0, 104(sp) # 8-byte Folded Reload
1823 ; RV64IZCMP-NEXT: sw a0, 32(s1)
1824 ; RV64IZCMP-NEXT: ld a0, 112(sp) # 8-byte Folded Reload
1825 ; RV64IZCMP-NEXT: sw a0, 28(s1)
1826 ; RV64IZCMP-NEXT: ld a0, 120(sp) # 8-byte Folded Reload
1827 ; RV64IZCMP-NEXT: sw a0, 24(s1)
1828 ; RV64IZCMP-NEXT: ld a0, 128(sp) # 8-byte Folded Reload
1829 ; RV64IZCMP-NEXT: sw a0, 20(s1)
1830 ; RV64IZCMP-NEXT: ld a0, 136(sp) # 8-byte Folded Reload
1831 ; RV64IZCMP-NEXT: sw a0, 16(s1)
1832 ; RV64IZCMP-NEXT: ld a0, 144(sp) # 8-byte Folded Reload
1833 ; RV64IZCMP-NEXT: sw a0, %lo(var+12)(s0)
1834 ; RV64IZCMP-NEXT: ld a0, 152(sp) # 8-byte Folded Reload
1835 ; RV64IZCMP-NEXT: sw a0, %lo(var+8)(s0)
1836 ; RV64IZCMP-NEXT: ld a0, 160(sp) # 8-byte Folded Reload
1837 ; RV64IZCMP-NEXT: sw a0, %lo(var+4)(s0)
1838 ; RV64IZCMP-NEXT: ld a0, 168(sp) # 8-byte Folded Reload
1839 ; RV64IZCMP-NEXT: sw a0, %lo(var)(s0)
1840 ; RV64IZCMP-NEXT: addi sp, sp, 128
1841 ; RV64IZCMP-NEXT: cm.popret {ra, s0-s11}, 160
1843 ; RV64IZCMP-WITH-FP-LABEL: caller:
1844 ; RV64IZCMP-WITH-FP: # %bb.0:
1845 ; RV64IZCMP-WITH-FP-NEXT: addi sp, sp, -288
1846 ; RV64IZCMP-WITH-FP-NEXT: sd ra, 280(sp) # 8-byte Folded Spill
1847 ; RV64IZCMP-WITH-FP-NEXT: sd s0, 272(sp) # 8-byte Folded Spill
1848 ; RV64IZCMP-WITH-FP-NEXT: sd s1, 264(sp) # 8-byte Folded Spill
1849 ; RV64IZCMP-WITH-FP-NEXT: sd s2, 256(sp) # 8-byte Folded Spill
1850 ; RV64IZCMP-WITH-FP-NEXT: sd s3, 248(sp) # 8-byte Folded Spill
1851 ; RV64IZCMP-WITH-FP-NEXT: sd s4, 240(sp) # 8-byte Folded Spill
1852 ; RV64IZCMP-WITH-FP-NEXT: sd s5, 232(sp) # 8-byte Folded Spill
1853 ; RV64IZCMP-WITH-FP-NEXT: sd s6, 224(sp) # 8-byte Folded Spill
1854 ; RV64IZCMP-WITH-FP-NEXT: sd s7, 216(sp) # 8-byte Folded Spill
1855 ; RV64IZCMP-WITH-FP-NEXT: sd s8, 208(sp) # 8-byte Folded Spill
1856 ; RV64IZCMP-WITH-FP-NEXT: sd s9, 200(sp) # 8-byte Folded Spill
1857 ; RV64IZCMP-WITH-FP-NEXT: sd s10, 192(sp) # 8-byte Folded Spill
1858 ; RV64IZCMP-WITH-FP-NEXT: sd s11, 184(sp) # 8-byte Folded Spill
1859 ; RV64IZCMP-WITH-FP-NEXT: addi s0, sp, 288
1860 ; RV64IZCMP-WITH-FP-NEXT: lui s6, %hi(var)
1861 ; RV64IZCMP-WITH-FP-NEXT: lw a0, %lo(var)(s6)
1862 ; RV64IZCMP-WITH-FP-NEXT: sd a0, -112(s0) # 8-byte Folded Spill
1863 ; RV64IZCMP-WITH-FP-NEXT: lw a0, %lo(var+4)(s6)
1864 ; RV64IZCMP-WITH-FP-NEXT: sd a0, -120(s0) # 8-byte Folded Spill
1865 ; RV64IZCMP-WITH-FP-NEXT: lw a0, %lo(var+8)(s6)
1866 ; RV64IZCMP-WITH-FP-NEXT: sd a0, -128(s0) # 8-byte Folded Spill
1867 ; RV64IZCMP-WITH-FP-NEXT: lw a0, %lo(var+12)(s6)
1868 ; RV64IZCMP-WITH-FP-NEXT: sd a0, -136(s0) # 8-byte Folded Spill
1869 ; RV64IZCMP-WITH-FP-NEXT: addi s1, s6, %lo(var)
1870 ; RV64IZCMP-WITH-FP-NEXT: lw a0, 16(s1)
1871 ; RV64IZCMP-WITH-FP-NEXT: sd a0, -144(s0) # 8-byte Folded Spill
1872 ; RV64IZCMP-WITH-FP-NEXT: lw a0, 20(s1)
1873 ; RV64IZCMP-WITH-FP-NEXT: sd a0, -152(s0) # 8-byte Folded Spill
1874 ; RV64IZCMP-WITH-FP-NEXT: lw a0, 24(s1)
1875 ; RV64IZCMP-WITH-FP-NEXT: sd a0, -160(s0) # 8-byte Folded Spill
1876 ; RV64IZCMP-WITH-FP-NEXT: lw a0, 28(s1)
1877 ; RV64IZCMP-WITH-FP-NEXT: sd a0, -168(s0) # 8-byte Folded Spill
1878 ; RV64IZCMP-WITH-FP-NEXT: lw a0, 32(s1)
1879 ; RV64IZCMP-WITH-FP-NEXT: sd a0, -176(s0) # 8-byte Folded Spill
1880 ; RV64IZCMP-WITH-FP-NEXT: lw a0, 36(s1)
1881 ; RV64IZCMP-WITH-FP-NEXT: sd a0, -184(s0) # 8-byte Folded Spill
1882 ; RV64IZCMP-WITH-FP-NEXT: lw a0, 40(s1)
1883 ; RV64IZCMP-WITH-FP-NEXT: sd a0, -192(s0) # 8-byte Folded Spill
1884 ; RV64IZCMP-WITH-FP-NEXT: lw a0, 44(s1)
1885 ; RV64IZCMP-WITH-FP-NEXT: sd a0, -200(s0) # 8-byte Folded Spill
1886 ; RV64IZCMP-WITH-FP-NEXT: lw a0, 48(s1)
1887 ; RV64IZCMP-WITH-FP-NEXT: sd a0, -208(s0) # 8-byte Folded Spill
1888 ; RV64IZCMP-WITH-FP-NEXT: lw a0, 52(s1)
1889 ; RV64IZCMP-WITH-FP-NEXT: sd a0, -216(s0) # 8-byte Folded Spill
1890 ; RV64IZCMP-WITH-FP-NEXT: lw a0, 56(s1)
1891 ; RV64IZCMP-WITH-FP-NEXT: sd a0, -224(s0) # 8-byte Folded Spill
1892 ; RV64IZCMP-WITH-FP-NEXT: lw a0, 60(s1)
1893 ; RV64IZCMP-WITH-FP-NEXT: sd a0, -232(s0) # 8-byte Folded Spill
1894 ; RV64IZCMP-WITH-FP-NEXT: lw a0, 64(s1)
1895 ; RV64IZCMP-WITH-FP-NEXT: sd a0, -240(s0) # 8-byte Folded Spill
1896 ; RV64IZCMP-WITH-FP-NEXT: lw a0, 68(s1)
1897 ; RV64IZCMP-WITH-FP-NEXT: sd a0, -248(s0) # 8-byte Folded Spill
1898 ; RV64IZCMP-WITH-FP-NEXT: lw a0, 72(s1)
1899 ; RV64IZCMP-WITH-FP-NEXT: sd a0, -256(s0) # 8-byte Folded Spill
1900 ; RV64IZCMP-WITH-FP-NEXT: lw a0, 76(s1)
1901 ; RV64IZCMP-WITH-FP-NEXT: sd a0, -264(s0) # 8-byte Folded Spill
1902 ; RV64IZCMP-WITH-FP-NEXT: lw a0, 80(s1)
1903 ; RV64IZCMP-WITH-FP-NEXT: sd a0, -272(s0) # 8-byte Folded Spill
1904 ; RV64IZCMP-WITH-FP-NEXT: lw a0, 84(s1)
1905 ; RV64IZCMP-WITH-FP-NEXT: sd a0, -280(s0) # 8-byte Folded Spill
1906 ; RV64IZCMP-WITH-FP-NEXT: lw a0, 88(s1)
1907 ; RV64IZCMP-WITH-FP-NEXT: sd a0, -288(s0) # 8-byte Folded Spill
1908 ; RV64IZCMP-WITH-FP-NEXT: lw s8, 92(s1)
1909 ; RV64IZCMP-WITH-FP-NEXT: lw s9, 96(s1)
1910 ; RV64IZCMP-WITH-FP-NEXT: lw s10, 100(s1)
1911 ; RV64IZCMP-WITH-FP-NEXT: lw s11, 104(s1)
1912 ; RV64IZCMP-WITH-FP-NEXT: lw s2, 108(s1)
1913 ; RV64IZCMP-WITH-FP-NEXT: lw s3, 112(s1)
1914 ; RV64IZCMP-WITH-FP-NEXT: lw s4, 116(s1)
1915 ; RV64IZCMP-WITH-FP-NEXT: lw s5, 120(s1)
1916 ; RV64IZCMP-WITH-FP-NEXT: lw s7, 124(s1)
1917 ; RV64IZCMP-WITH-FP-NEXT: call callee@plt
1918 ; RV64IZCMP-WITH-FP-NEXT: sw s7, 124(s1)
1919 ; RV64IZCMP-WITH-FP-NEXT: sw s5, 120(s1)
1920 ; RV64IZCMP-WITH-FP-NEXT: sw s4, 116(s1)
1921 ; RV64IZCMP-WITH-FP-NEXT: sw s3, 112(s1)
1922 ; RV64IZCMP-WITH-FP-NEXT: sw s2, 108(s1)
1923 ; RV64IZCMP-WITH-FP-NEXT: sw s11, 104(s1)
1924 ; RV64IZCMP-WITH-FP-NEXT: sw s10, 100(s1)
1925 ; RV64IZCMP-WITH-FP-NEXT: sw s9, 96(s1)
1926 ; RV64IZCMP-WITH-FP-NEXT: sw s8, 92(s1)
1927 ; RV64IZCMP-WITH-FP-NEXT: ld a0, -288(s0) # 8-byte Folded Reload
1928 ; RV64IZCMP-WITH-FP-NEXT: sw a0, 88(s1)
1929 ; RV64IZCMP-WITH-FP-NEXT: ld a0, -280(s0) # 8-byte Folded Reload
1930 ; RV64IZCMP-WITH-FP-NEXT: sw a0, 84(s1)
1931 ; RV64IZCMP-WITH-FP-NEXT: ld a0, -272(s0) # 8-byte Folded Reload
1932 ; RV64IZCMP-WITH-FP-NEXT: sw a0, 80(s1)
1933 ; RV64IZCMP-WITH-FP-NEXT: ld a0, -264(s0) # 8-byte Folded Reload
1934 ; RV64IZCMP-WITH-FP-NEXT: sw a0, 76(s1)
1935 ; RV64IZCMP-WITH-FP-NEXT: ld a0, -256(s0) # 8-byte Folded Reload
1936 ; RV64IZCMP-WITH-FP-NEXT: sw a0, 72(s1)
1937 ; RV64IZCMP-WITH-FP-NEXT: ld a0, -248(s0) # 8-byte Folded Reload
1938 ; RV64IZCMP-WITH-FP-NEXT: sw a0, 68(s1)
1939 ; RV64IZCMP-WITH-FP-NEXT: ld a0, -240(s0) # 8-byte Folded Reload
1940 ; RV64IZCMP-WITH-FP-NEXT: sw a0, 64(s1)
1941 ; RV64IZCMP-WITH-FP-NEXT: ld a0, -232(s0) # 8-byte Folded Reload
1942 ; RV64IZCMP-WITH-FP-NEXT: sw a0, 60(s1)
1943 ; RV64IZCMP-WITH-FP-NEXT: ld a0, -224(s0) # 8-byte Folded Reload
1944 ; RV64IZCMP-WITH-FP-NEXT: sw a0, 56(s1)
1945 ; RV64IZCMP-WITH-FP-NEXT: ld a0, -216(s0) # 8-byte Folded Reload
1946 ; RV64IZCMP-WITH-FP-NEXT: sw a0, 52(s1)
1947 ; RV64IZCMP-WITH-FP-NEXT: ld a0, -208(s0) # 8-byte Folded Reload
1948 ; RV64IZCMP-WITH-FP-NEXT: sw a0, 48(s1)
1949 ; RV64IZCMP-WITH-FP-NEXT: ld a0, -200(s0) # 8-byte Folded Reload
1950 ; RV64IZCMP-WITH-FP-NEXT: sw a0, 44(s1)
1951 ; RV64IZCMP-WITH-FP-NEXT: ld a0, -192(s0) # 8-byte Folded Reload
1952 ; RV64IZCMP-WITH-FP-NEXT: sw a0, 40(s1)
1953 ; RV64IZCMP-WITH-FP-NEXT: ld a0, -184(s0) # 8-byte Folded Reload
1954 ; RV64IZCMP-WITH-FP-NEXT: sw a0, 36(s1)
1955 ; RV64IZCMP-WITH-FP-NEXT: ld a0, -176(s0) # 8-byte Folded Reload
1956 ; RV64IZCMP-WITH-FP-NEXT: sw a0, 32(s1)
1957 ; RV64IZCMP-WITH-FP-NEXT: ld a0, -168(s0) # 8-byte Folded Reload
1958 ; RV64IZCMP-WITH-FP-NEXT: sw a0, 28(s1)
1959 ; RV64IZCMP-WITH-FP-NEXT: ld a0, -160(s0) # 8-byte Folded Reload
1960 ; RV64IZCMP-WITH-FP-NEXT: sw a0, 24(s1)
1961 ; RV64IZCMP-WITH-FP-NEXT: ld a0, -152(s0) # 8-byte Folded Reload
1962 ; RV64IZCMP-WITH-FP-NEXT: sw a0, 20(s1)
1963 ; RV64IZCMP-WITH-FP-NEXT: ld a0, -144(s0) # 8-byte Folded Reload
1964 ; RV64IZCMP-WITH-FP-NEXT: sw a0, 16(s1)
1965 ; RV64IZCMP-WITH-FP-NEXT: ld a0, -136(s0) # 8-byte Folded Reload
1966 ; RV64IZCMP-WITH-FP-NEXT: sw a0, %lo(var+12)(s6)
1967 ; RV64IZCMP-WITH-FP-NEXT: ld a0, -128(s0) # 8-byte Folded Reload
1968 ; RV64IZCMP-WITH-FP-NEXT: sw a0, %lo(var+8)(s6)
1969 ; RV64IZCMP-WITH-FP-NEXT: ld a0, -120(s0) # 8-byte Folded Reload
1970 ; RV64IZCMP-WITH-FP-NEXT: sw a0, %lo(var+4)(s6)
1971 ; RV64IZCMP-WITH-FP-NEXT: ld a0, -112(s0) # 8-byte Folded Reload
1972 ; RV64IZCMP-WITH-FP-NEXT: sw a0, %lo(var)(s6)
1973 ; RV64IZCMP-WITH-FP-NEXT: ld ra, 280(sp) # 8-byte Folded Reload
1974 ; RV64IZCMP-WITH-FP-NEXT: ld s0, 272(sp) # 8-byte Folded Reload
1975 ; RV64IZCMP-WITH-FP-NEXT: ld s1, 264(sp) # 8-byte Folded Reload
1976 ; RV64IZCMP-WITH-FP-NEXT: ld s2, 256(sp) # 8-byte Folded Reload
1977 ; RV64IZCMP-WITH-FP-NEXT: ld s3, 248(sp) # 8-byte Folded Reload
1978 ; RV64IZCMP-WITH-FP-NEXT: ld s4, 240(sp) # 8-byte Folded Reload
1979 ; RV64IZCMP-WITH-FP-NEXT: ld s5, 232(sp) # 8-byte Folded Reload
1980 ; RV64IZCMP-WITH-FP-NEXT: ld s6, 224(sp) # 8-byte Folded Reload
1981 ; RV64IZCMP-WITH-FP-NEXT: ld s7, 216(sp) # 8-byte Folded Reload
1982 ; RV64IZCMP-WITH-FP-NEXT: ld s8, 208(sp) # 8-byte Folded Reload
1983 ; RV64IZCMP-WITH-FP-NEXT: ld s9, 200(sp) # 8-byte Folded Reload
1984 ; RV64IZCMP-WITH-FP-NEXT: ld s10, 192(sp) # 8-byte Folded Reload
1985 ; RV64IZCMP-WITH-FP-NEXT: ld s11, 184(sp) # 8-byte Folded Reload
1986 ; RV64IZCMP-WITH-FP-NEXT: addi sp, sp, 288
1987 ; RV64IZCMP-WITH-FP-NEXT: ret
1988 %val = load [32 x i32], ptr @var
1990 store volatile [32 x i32] %val, ptr @var
1994 ; This function tests if the stack size is correctly calculated when
1995 ; callee-saved registers are not a sequential list from $ra
1996 define void @foo() {
1998 ; RV32I: # %bb.0: # %entry
1999 ; RV32I-NEXT: addi sp, sp, -16
2000 ; RV32I-NEXT: .cfi_def_cfa_offset 16
2001 ; RV32I-NEXT: sw s4, 12(sp) # 4-byte Folded Spill
2002 ; RV32I-NEXT: .cfi_offset s4, -4
2004 ; RV32I-NEXT: li s4, 0
2005 ; RV32I-NEXT: #NO_APP
2006 ; RV32I-NEXT: lw s4, 12(sp) # 4-byte Folded Reload
2007 ; RV32I-NEXT: addi sp, sp, 16
2010 ; RV32I-WITH-FP-LABEL: foo:
2011 ; RV32I-WITH-FP: # %bb.0: # %entry
2012 ; RV32I-WITH-FP-NEXT: addi sp, sp, -16
2013 ; RV32I-WITH-FP-NEXT: .cfi_def_cfa_offset 16
2014 ; RV32I-WITH-FP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill
2015 ; RV32I-WITH-FP-NEXT: sw s0, 8(sp) # 4-byte Folded Spill
2016 ; RV32I-WITH-FP-NEXT: sw s4, 4(sp) # 4-byte Folded Spill
2017 ; RV32I-WITH-FP-NEXT: .cfi_offset ra, -4
2018 ; RV32I-WITH-FP-NEXT: .cfi_offset s0, -8
2019 ; RV32I-WITH-FP-NEXT: .cfi_offset s4, -12
2020 ; RV32I-WITH-FP-NEXT: addi s0, sp, 16
2021 ; RV32I-WITH-FP-NEXT: .cfi_def_cfa s0, 0
2022 ; RV32I-WITH-FP-NEXT: #APP
2023 ; RV32I-WITH-FP-NEXT: li s4, 0
2024 ; RV32I-WITH-FP-NEXT: #NO_APP
2025 ; RV32I-WITH-FP-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
2026 ; RV32I-WITH-FP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload
2027 ; RV32I-WITH-FP-NEXT: lw s4, 4(sp) # 4-byte Folded Reload
2028 ; RV32I-WITH-FP-NEXT: addi sp, sp, 16
2029 ; RV32I-WITH-FP-NEXT: ret
2031 ; RV32IZCMP-LABEL: foo:
2032 ; RV32IZCMP: # %bb.0: # %entry
2033 ; RV32IZCMP-NEXT: cm.push {ra, s0-s4}, -32
2034 ; RV32IZCMP-NEXT: .cfi_def_cfa_offset 32
2035 ; RV32IZCMP-NEXT: .cfi_offset s4, -4
2036 ; RV32IZCMP-NEXT: #APP
2037 ; RV32IZCMP-NEXT: li s4, 0
2038 ; RV32IZCMP-NEXT: #NO_APP
2039 ; RV32IZCMP-NEXT: cm.popret {ra, s0-s4}, 32
2041 ; RV32IZCMP-WITH-FP-LABEL: foo:
2042 ; RV32IZCMP-WITH-FP: # %bb.0: # %entry
2043 ; RV32IZCMP-WITH-FP-NEXT: addi sp, sp, -16
2044 ; RV32IZCMP-WITH-FP-NEXT: .cfi_def_cfa_offset 16
2045 ; RV32IZCMP-WITH-FP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill
2046 ; RV32IZCMP-WITH-FP-NEXT: sw s0, 8(sp) # 4-byte Folded Spill
2047 ; RV32IZCMP-WITH-FP-NEXT: sw s4, 4(sp) # 4-byte Folded Spill
2048 ; RV32IZCMP-WITH-FP-NEXT: .cfi_offset ra, -4
2049 ; RV32IZCMP-WITH-FP-NEXT: .cfi_offset s0, -8
2050 ; RV32IZCMP-WITH-FP-NEXT: .cfi_offset s4, -12
2051 ; RV32IZCMP-WITH-FP-NEXT: addi s0, sp, 16
2052 ; RV32IZCMP-WITH-FP-NEXT: .cfi_def_cfa s0, 0
2053 ; RV32IZCMP-WITH-FP-NEXT: #APP
2054 ; RV32IZCMP-WITH-FP-NEXT: li s4, 0
2055 ; RV32IZCMP-WITH-FP-NEXT: #NO_APP
2056 ; RV32IZCMP-WITH-FP-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
2057 ; RV32IZCMP-WITH-FP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload
2058 ; RV32IZCMP-WITH-FP-NEXT: lw s4, 4(sp) # 4-byte Folded Reload
2059 ; RV32IZCMP-WITH-FP-NEXT: addi sp, sp, 16
2060 ; RV32IZCMP-WITH-FP-NEXT: ret
2063 ; RV64I: # %bb.0: # %entry
2064 ; RV64I-NEXT: addi sp, sp, -16
2065 ; RV64I-NEXT: .cfi_def_cfa_offset 16
2066 ; RV64I-NEXT: sd s4, 8(sp) # 8-byte Folded Spill
2067 ; RV64I-NEXT: .cfi_offset s4, -8
2069 ; RV64I-NEXT: li s4, 0
2070 ; RV64I-NEXT: #NO_APP
2071 ; RV64I-NEXT: ld s4, 8(sp) # 8-byte Folded Reload
2072 ; RV64I-NEXT: addi sp, sp, 16
2075 ; RV64I-WITH-FP-LABEL: foo:
2076 ; RV64I-WITH-FP: # %bb.0: # %entry
2077 ; RV64I-WITH-FP-NEXT: addi sp, sp, -32
2078 ; RV64I-WITH-FP-NEXT: .cfi_def_cfa_offset 32
2079 ; RV64I-WITH-FP-NEXT: sd ra, 24(sp) # 8-byte Folded Spill
2080 ; RV64I-WITH-FP-NEXT: sd s0, 16(sp) # 8-byte Folded Spill
2081 ; RV64I-WITH-FP-NEXT: sd s4, 8(sp) # 8-byte Folded Spill
2082 ; RV64I-WITH-FP-NEXT: .cfi_offset ra, -8
2083 ; RV64I-WITH-FP-NEXT: .cfi_offset s0, -16
2084 ; RV64I-WITH-FP-NEXT: .cfi_offset s4, -24
2085 ; RV64I-WITH-FP-NEXT: addi s0, sp, 32
2086 ; RV64I-WITH-FP-NEXT: .cfi_def_cfa s0, 0
2087 ; RV64I-WITH-FP-NEXT: #APP
2088 ; RV64I-WITH-FP-NEXT: li s4, 0
2089 ; RV64I-WITH-FP-NEXT: #NO_APP
2090 ; RV64I-WITH-FP-NEXT: ld ra, 24(sp) # 8-byte Folded Reload
2091 ; RV64I-WITH-FP-NEXT: ld s0, 16(sp) # 8-byte Folded Reload
2092 ; RV64I-WITH-FP-NEXT: ld s4, 8(sp) # 8-byte Folded Reload
2093 ; RV64I-WITH-FP-NEXT: addi sp, sp, 32
2094 ; RV64I-WITH-FP-NEXT: ret
2096 ; RV64IZCMP-LABEL: foo:
2097 ; RV64IZCMP: # %bb.0: # %entry
2098 ; RV64IZCMP-NEXT: cm.push {ra, s0-s4}, -48
2099 ; RV64IZCMP-NEXT: .cfi_def_cfa_offset 48
2100 ; RV64IZCMP-NEXT: .cfi_offset s4, -8
2101 ; RV64IZCMP-NEXT: #APP
2102 ; RV64IZCMP-NEXT: li s4, 0
2103 ; RV64IZCMP-NEXT: #NO_APP
2104 ; RV64IZCMP-NEXT: cm.popret {ra, s0-s4}, 48
2106 ; RV64IZCMP-WITH-FP-LABEL: foo:
2107 ; RV64IZCMP-WITH-FP: # %bb.0: # %entry
2108 ; RV64IZCMP-WITH-FP-NEXT: addi sp, sp, -32
2109 ; RV64IZCMP-WITH-FP-NEXT: .cfi_def_cfa_offset 32
2110 ; RV64IZCMP-WITH-FP-NEXT: sd ra, 24(sp) # 8-byte Folded Spill
2111 ; RV64IZCMP-WITH-FP-NEXT: sd s0, 16(sp) # 8-byte Folded Spill
2112 ; RV64IZCMP-WITH-FP-NEXT: sd s4, 8(sp) # 8-byte Folded Spill
2113 ; RV64IZCMP-WITH-FP-NEXT: .cfi_offset ra, -8
2114 ; RV64IZCMP-WITH-FP-NEXT: .cfi_offset s0, -16
2115 ; RV64IZCMP-WITH-FP-NEXT: .cfi_offset s4, -24
2116 ; RV64IZCMP-WITH-FP-NEXT: addi s0, sp, 32
2117 ; RV64IZCMP-WITH-FP-NEXT: .cfi_def_cfa s0, 0
2118 ; RV64IZCMP-WITH-FP-NEXT: #APP
2119 ; RV64IZCMP-WITH-FP-NEXT: li s4, 0
2120 ; RV64IZCMP-WITH-FP-NEXT: #NO_APP
2121 ; RV64IZCMP-WITH-FP-NEXT: ld ra, 24(sp) # 8-byte Folded Reload
2122 ; RV64IZCMP-WITH-FP-NEXT: ld s0, 16(sp) # 8-byte Folded Reload
2123 ; RV64IZCMP-WITH-FP-NEXT: ld s4, 8(sp) # 8-byte Folded Reload
2124 ; RV64IZCMP-WITH-FP-NEXT: addi sp, sp, 32
2125 ; RV64IZCMP-WITH-FP-NEXT: ret
2127 tail call void asm sideeffect "li s4, 0", "~{s4}"()
2131 ; Check .cfi_offset of s11 is correct for Zcmp.
2132 define void @bar() {
2134 ; RV32I: # %bb.0: # %entry
2135 ; RV32I-NEXT: addi sp, sp, -16
2136 ; RV32I-NEXT: .cfi_def_cfa_offset 16
2137 ; RV32I-NEXT: sw s11, 12(sp) # 4-byte Folded Spill
2138 ; RV32I-NEXT: .cfi_offset s11, -4
2140 ; RV32I-NEXT: li s11, 0
2141 ; RV32I-NEXT: #NO_APP
2142 ; RV32I-NEXT: lw s11, 12(sp) # 4-byte Folded Reload
2143 ; RV32I-NEXT: addi sp, sp, 16
2146 ; RV32I-WITH-FP-LABEL: bar:
2147 ; RV32I-WITH-FP: # %bb.0: # %entry
2148 ; RV32I-WITH-FP-NEXT: addi sp, sp, -16
2149 ; RV32I-WITH-FP-NEXT: .cfi_def_cfa_offset 16
2150 ; RV32I-WITH-FP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill
2151 ; RV32I-WITH-FP-NEXT: sw s0, 8(sp) # 4-byte Folded Spill
2152 ; RV32I-WITH-FP-NEXT: sw s11, 4(sp) # 4-byte Folded Spill
2153 ; RV32I-WITH-FP-NEXT: .cfi_offset ra, -4
2154 ; RV32I-WITH-FP-NEXT: .cfi_offset s0, -8
2155 ; RV32I-WITH-FP-NEXT: .cfi_offset s11, -12
2156 ; RV32I-WITH-FP-NEXT: addi s0, sp, 16
2157 ; RV32I-WITH-FP-NEXT: .cfi_def_cfa s0, 0
2158 ; RV32I-WITH-FP-NEXT: #APP
2159 ; RV32I-WITH-FP-NEXT: li s11, 0
2160 ; RV32I-WITH-FP-NEXT: #NO_APP
2161 ; RV32I-WITH-FP-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
2162 ; RV32I-WITH-FP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload
2163 ; RV32I-WITH-FP-NEXT: lw s11, 4(sp) # 4-byte Folded Reload
2164 ; RV32I-WITH-FP-NEXT: addi sp, sp, 16
2165 ; RV32I-WITH-FP-NEXT: ret
2167 ; RV32IZCMP-LABEL: bar:
2168 ; RV32IZCMP: # %bb.0: # %entry
2169 ; RV32IZCMP-NEXT: cm.push {ra, s0-s11}, -64
2170 ; RV32IZCMP-NEXT: .cfi_def_cfa_offset 64
2171 ; RV32IZCMP-NEXT: .cfi_offset s11, -4
2172 ; RV32IZCMP-NEXT: #APP
2173 ; RV32IZCMP-NEXT: li s11, 0
2174 ; RV32IZCMP-NEXT: #NO_APP
2175 ; RV32IZCMP-NEXT: cm.popret {ra, s0-s11}, 64
2177 ; RV32IZCMP-WITH-FP-LABEL: bar:
2178 ; RV32IZCMP-WITH-FP: # %bb.0: # %entry
2179 ; RV32IZCMP-WITH-FP-NEXT: addi sp, sp, -16
2180 ; RV32IZCMP-WITH-FP-NEXT: .cfi_def_cfa_offset 16
2181 ; RV32IZCMP-WITH-FP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill
2182 ; RV32IZCMP-WITH-FP-NEXT: sw s0, 8(sp) # 4-byte Folded Spill
2183 ; RV32IZCMP-WITH-FP-NEXT: sw s11, 4(sp) # 4-byte Folded Spill
2184 ; RV32IZCMP-WITH-FP-NEXT: .cfi_offset ra, -4
2185 ; RV32IZCMP-WITH-FP-NEXT: .cfi_offset s0, -8
2186 ; RV32IZCMP-WITH-FP-NEXT: .cfi_offset s11, -12
2187 ; RV32IZCMP-WITH-FP-NEXT: addi s0, sp, 16
2188 ; RV32IZCMP-WITH-FP-NEXT: .cfi_def_cfa s0, 0
2189 ; RV32IZCMP-WITH-FP-NEXT: #APP
2190 ; RV32IZCMP-WITH-FP-NEXT: li s11, 0
2191 ; RV32IZCMP-WITH-FP-NEXT: #NO_APP
2192 ; RV32IZCMP-WITH-FP-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
2193 ; RV32IZCMP-WITH-FP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload
2194 ; RV32IZCMP-WITH-FP-NEXT: lw s11, 4(sp) # 4-byte Folded Reload
2195 ; RV32IZCMP-WITH-FP-NEXT: addi sp, sp, 16
2196 ; RV32IZCMP-WITH-FP-NEXT: ret
2199 ; RV64I: # %bb.0: # %entry
2200 ; RV64I-NEXT: addi sp, sp, -16
2201 ; RV64I-NEXT: .cfi_def_cfa_offset 16
2202 ; RV64I-NEXT: sd s11, 8(sp) # 8-byte Folded Spill
2203 ; RV64I-NEXT: .cfi_offset s11, -8
2205 ; RV64I-NEXT: li s11, 0
2206 ; RV64I-NEXT: #NO_APP
2207 ; RV64I-NEXT: ld s11, 8(sp) # 8-byte Folded Reload
2208 ; RV64I-NEXT: addi sp, sp, 16
2211 ; RV64I-WITH-FP-LABEL: bar:
2212 ; RV64I-WITH-FP: # %bb.0: # %entry
2213 ; RV64I-WITH-FP-NEXT: addi sp, sp, -32
2214 ; RV64I-WITH-FP-NEXT: .cfi_def_cfa_offset 32
2215 ; RV64I-WITH-FP-NEXT: sd ra, 24(sp) # 8-byte Folded Spill
2216 ; RV64I-WITH-FP-NEXT: sd s0, 16(sp) # 8-byte Folded Spill
2217 ; RV64I-WITH-FP-NEXT: sd s11, 8(sp) # 8-byte Folded Spill
2218 ; RV64I-WITH-FP-NEXT: .cfi_offset ra, -8
2219 ; RV64I-WITH-FP-NEXT: .cfi_offset s0, -16
2220 ; RV64I-WITH-FP-NEXT: .cfi_offset s11, -24
2221 ; RV64I-WITH-FP-NEXT: addi s0, sp, 32
2222 ; RV64I-WITH-FP-NEXT: .cfi_def_cfa s0, 0
2223 ; RV64I-WITH-FP-NEXT: #APP
2224 ; RV64I-WITH-FP-NEXT: li s11, 0
2225 ; RV64I-WITH-FP-NEXT: #NO_APP
2226 ; RV64I-WITH-FP-NEXT: ld ra, 24(sp) # 8-byte Folded Reload
2227 ; RV64I-WITH-FP-NEXT: ld s0, 16(sp) # 8-byte Folded Reload
2228 ; RV64I-WITH-FP-NEXT: ld s11, 8(sp) # 8-byte Folded Reload
2229 ; RV64I-WITH-FP-NEXT: addi sp, sp, 32
2230 ; RV64I-WITH-FP-NEXT: ret
2232 ; RV64IZCMP-LABEL: bar:
2233 ; RV64IZCMP: # %bb.0: # %entry
2234 ; RV64IZCMP-NEXT: cm.push {ra, s0-s11}, -112
2235 ; RV64IZCMP-NEXT: .cfi_def_cfa_offset 112
2236 ; RV64IZCMP-NEXT: .cfi_offset s11, -8
2237 ; RV64IZCMP-NEXT: #APP
2238 ; RV64IZCMP-NEXT: li s11, 0
2239 ; RV64IZCMP-NEXT: #NO_APP
2240 ; RV64IZCMP-NEXT: cm.popret {ra, s0-s11}, 112
2242 ; RV64IZCMP-WITH-FP-LABEL: bar:
2243 ; RV64IZCMP-WITH-FP: # %bb.0: # %entry
2244 ; RV64IZCMP-WITH-FP-NEXT: addi sp, sp, -32
2245 ; RV64IZCMP-WITH-FP-NEXT: .cfi_def_cfa_offset 32
2246 ; RV64IZCMP-WITH-FP-NEXT: sd ra, 24(sp) # 8-byte Folded Spill
2247 ; RV64IZCMP-WITH-FP-NEXT: sd s0, 16(sp) # 8-byte Folded Spill
2248 ; RV64IZCMP-WITH-FP-NEXT: sd s11, 8(sp) # 8-byte Folded Spill
2249 ; RV64IZCMP-WITH-FP-NEXT: .cfi_offset ra, -8
2250 ; RV64IZCMP-WITH-FP-NEXT: .cfi_offset s0, -16
2251 ; RV64IZCMP-WITH-FP-NEXT: .cfi_offset s11, -24
2252 ; RV64IZCMP-WITH-FP-NEXT: addi s0, sp, 32
2253 ; RV64IZCMP-WITH-FP-NEXT: .cfi_def_cfa s0, 0
2254 ; RV64IZCMP-WITH-FP-NEXT: #APP
2255 ; RV64IZCMP-WITH-FP-NEXT: li s11, 0
2256 ; RV64IZCMP-WITH-FP-NEXT: #NO_APP
2257 ; RV64IZCMP-WITH-FP-NEXT: ld ra, 24(sp) # 8-byte Folded Reload
2258 ; RV64IZCMP-WITH-FP-NEXT: ld s0, 16(sp) # 8-byte Folded Reload
2259 ; RV64IZCMP-WITH-FP-NEXT: ld s11, 8(sp) # 8-byte Folded Reload
2260 ; RV64IZCMP-WITH-FP-NEXT: addi sp, sp, 32
2261 ; RV64IZCMP-WITH-FP-NEXT: ret
2263 tail call void asm sideeffect "li s11, 0", "~{s11}"()
2267 define void @varargs(...) {
2268 ; RV32I-LABEL: varargs:
2270 ; RV32I-NEXT: addi sp, sp, -48
2271 ; RV32I-NEXT: .cfi_def_cfa_offset 48
2272 ; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill
2273 ; RV32I-NEXT: .cfi_offset ra, -36
2274 ; RV32I-NEXT: sw a7, 44(sp)
2275 ; RV32I-NEXT: sw a6, 40(sp)
2276 ; RV32I-NEXT: sw a5, 36(sp)
2277 ; RV32I-NEXT: sw a4, 32(sp)
2278 ; RV32I-NEXT: sw a3, 28(sp)
2279 ; RV32I-NEXT: sw a2, 24(sp)
2280 ; RV32I-NEXT: sw a1, 20(sp)
2281 ; RV32I-NEXT: sw a0, 16(sp)
2282 ; RV32I-NEXT: call callee@plt
2283 ; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
2284 ; RV32I-NEXT: addi sp, sp, 48
2287 ; RV32I-WITH-FP-LABEL: varargs:
2288 ; RV32I-WITH-FP: # %bb.0:
2289 ; RV32I-WITH-FP-NEXT: addi sp, sp, -48
2290 ; RV32I-WITH-FP-NEXT: .cfi_def_cfa_offset 48
2291 ; RV32I-WITH-FP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill
2292 ; RV32I-WITH-FP-NEXT: sw s0, 8(sp) # 4-byte Folded Spill
2293 ; RV32I-WITH-FP-NEXT: .cfi_offset ra, -36
2294 ; RV32I-WITH-FP-NEXT: .cfi_offset s0, -40
2295 ; RV32I-WITH-FP-NEXT: addi s0, sp, 16
2296 ; RV32I-WITH-FP-NEXT: .cfi_def_cfa s0, 32
2297 ; RV32I-WITH-FP-NEXT: sw a7, 28(s0)
2298 ; RV32I-WITH-FP-NEXT: sw a6, 24(s0)
2299 ; RV32I-WITH-FP-NEXT: sw a5, 20(s0)
2300 ; RV32I-WITH-FP-NEXT: sw a4, 16(s0)
2301 ; RV32I-WITH-FP-NEXT: sw a3, 12(s0)
2302 ; RV32I-WITH-FP-NEXT: sw a2, 8(s0)
2303 ; RV32I-WITH-FP-NEXT: sw a1, 4(s0)
2304 ; RV32I-WITH-FP-NEXT: sw a0, 0(s0)
2305 ; RV32I-WITH-FP-NEXT: call callee@plt
2306 ; RV32I-WITH-FP-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
2307 ; RV32I-WITH-FP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload
2308 ; RV32I-WITH-FP-NEXT: addi sp, sp, 48
2309 ; RV32I-WITH-FP-NEXT: ret
2311 ; RV32IZCMP-LABEL: varargs:
2312 ; RV32IZCMP: # %bb.0:
2313 ; RV32IZCMP-NEXT: addi sp, sp, -48
2314 ; RV32IZCMP-NEXT: .cfi_def_cfa_offset 48
2315 ; RV32IZCMP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill
2316 ; RV32IZCMP-NEXT: .cfi_offset ra, -36
2317 ; RV32IZCMP-NEXT: sw a7, 44(sp)
2318 ; RV32IZCMP-NEXT: sw a6, 40(sp)
2319 ; RV32IZCMP-NEXT: sw a5, 36(sp)
2320 ; RV32IZCMP-NEXT: sw a4, 32(sp)
2321 ; RV32IZCMP-NEXT: sw a3, 28(sp)
2322 ; RV32IZCMP-NEXT: sw a2, 24(sp)
2323 ; RV32IZCMP-NEXT: sw a1, 20(sp)
2324 ; RV32IZCMP-NEXT: sw a0, 16(sp)
2325 ; RV32IZCMP-NEXT: call callee@plt
2326 ; RV32IZCMP-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
2327 ; RV32IZCMP-NEXT: addi sp, sp, 48
2328 ; RV32IZCMP-NEXT: ret
2330 ; RV32IZCMP-WITH-FP-LABEL: varargs:
2331 ; RV32IZCMP-WITH-FP: # %bb.0:
2332 ; RV32IZCMP-WITH-FP-NEXT: addi sp, sp, -48
2333 ; RV32IZCMP-WITH-FP-NEXT: .cfi_def_cfa_offset 48
2334 ; RV32IZCMP-WITH-FP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill
2335 ; RV32IZCMP-WITH-FP-NEXT: sw s0, 8(sp) # 4-byte Folded Spill
2336 ; RV32IZCMP-WITH-FP-NEXT: .cfi_offset ra, -36
2337 ; RV32IZCMP-WITH-FP-NEXT: .cfi_offset s0, -40
2338 ; RV32IZCMP-WITH-FP-NEXT: addi s0, sp, 16
2339 ; RV32IZCMP-WITH-FP-NEXT: .cfi_def_cfa s0, 32
2340 ; RV32IZCMP-WITH-FP-NEXT: sw a7, 28(s0)
2341 ; RV32IZCMP-WITH-FP-NEXT: sw a6, 24(s0)
2342 ; RV32IZCMP-WITH-FP-NEXT: sw a5, 20(s0)
2343 ; RV32IZCMP-WITH-FP-NEXT: sw a4, 16(s0)
2344 ; RV32IZCMP-WITH-FP-NEXT: sw a3, 12(s0)
2345 ; RV32IZCMP-WITH-FP-NEXT: sw a2, 8(s0)
2346 ; RV32IZCMP-WITH-FP-NEXT: sw a1, 4(s0)
2347 ; RV32IZCMP-WITH-FP-NEXT: sw a0, 0(s0)
2348 ; RV32IZCMP-WITH-FP-NEXT: call callee@plt
2349 ; RV32IZCMP-WITH-FP-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
2350 ; RV32IZCMP-WITH-FP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload
2351 ; RV32IZCMP-WITH-FP-NEXT: addi sp, sp, 48
2352 ; RV32IZCMP-WITH-FP-NEXT: ret
2354 ; RV64I-LABEL: varargs:
2356 ; RV64I-NEXT: addi sp, sp, -80
2357 ; RV64I-NEXT: .cfi_def_cfa_offset 80
2358 ; RV64I-NEXT: sd ra, 8(sp) # 8-byte Folded Spill
2359 ; RV64I-NEXT: .cfi_offset ra, -72
2360 ; RV64I-NEXT: sd a7, 72(sp)
2361 ; RV64I-NEXT: sd a6, 64(sp)
2362 ; RV64I-NEXT: sd a5, 56(sp)
2363 ; RV64I-NEXT: sd a4, 48(sp)
2364 ; RV64I-NEXT: sd a3, 40(sp)
2365 ; RV64I-NEXT: sd a2, 32(sp)
2366 ; RV64I-NEXT: sd a1, 24(sp)
2367 ; RV64I-NEXT: sd a0, 16(sp)
2368 ; RV64I-NEXT: call callee@plt
2369 ; RV64I-NEXT: ld ra, 8(sp) # 8-byte Folded Reload
2370 ; RV64I-NEXT: addi sp, sp, 80
2373 ; RV64I-WITH-FP-LABEL: varargs:
2374 ; RV64I-WITH-FP: # %bb.0:
2375 ; RV64I-WITH-FP-NEXT: addi sp, sp, -80
2376 ; RV64I-WITH-FP-NEXT: .cfi_def_cfa_offset 80
2377 ; RV64I-WITH-FP-NEXT: sd ra, 8(sp) # 8-byte Folded Spill
2378 ; RV64I-WITH-FP-NEXT: sd s0, 0(sp) # 8-byte Folded Spill
2379 ; RV64I-WITH-FP-NEXT: .cfi_offset ra, -72
2380 ; RV64I-WITH-FP-NEXT: .cfi_offset s0, -80
2381 ; RV64I-WITH-FP-NEXT: addi s0, sp, 16
2382 ; RV64I-WITH-FP-NEXT: .cfi_def_cfa s0, 64
2383 ; RV64I-WITH-FP-NEXT: sd a7, 56(s0)
2384 ; RV64I-WITH-FP-NEXT: sd a6, 48(s0)
2385 ; RV64I-WITH-FP-NEXT: sd a5, 40(s0)
2386 ; RV64I-WITH-FP-NEXT: sd a4, 32(s0)
2387 ; RV64I-WITH-FP-NEXT: sd a3, 24(s0)
2388 ; RV64I-WITH-FP-NEXT: sd a2, 16(s0)
2389 ; RV64I-WITH-FP-NEXT: sd a1, 8(s0)
2390 ; RV64I-WITH-FP-NEXT: sd a0, 0(s0)
2391 ; RV64I-WITH-FP-NEXT: call callee@plt
2392 ; RV64I-WITH-FP-NEXT: ld ra, 8(sp) # 8-byte Folded Reload
2393 ; RV64I-WITH-FP-NEXT: ld s0, 0(sp) # 8-byte Folded Reload
2394 ; RV64I-WITH-FP-NEXT: addi sp, sp, 80
2395 ; RV64I-WITH-FP-NEXT: ret
2397 ; RV64IZCMP-LABEL: varargs:
2398 ; RV64IZCMP: # %bb.0:
2399 ; RV64IZCMP-NEXT: addi sp, sp, -80
2400 ; RV64IZCMP-NEXT: .cfi_def_cfa_offset 80
2401 ; RV64IZCMP-NEXT: sd ra, 8(sp) # 8-byte Folded Spill
2402 ; RV64IZCMP-NEXT: .cfi_offset ra, -72
2403 ; RV64IZCMP-NEXT: sd a7, 72(sp)
2404 ; RV64IZCMP-NEXT: sd a6, 64(sp)
2405 ; RV64IZCMP-NEXT: sd a5, 56(sp)
2406 ; RV64IZCMP-NEXT: sd a4, 48(sp)
2407 ; RV64IZCMP-NEXT: sd a3, 40(sp)
2408 ; RV64IZCMP-NEXT: sd a2, 32(sp)
2409 ; RV64IZCMP-NEXT: sd a1, 24(sp)
2410 ; RV64IZCMP-NEXT: sd a0, 16(sp)
2411 ; RV64IZCMP-NEXT: call callee@plt
2412 ; RV64IZCMP-NEXT: ld ra, 8(sp) # 8-byte Folded Reload
2413 ; RV64IZCMP-NEXT: addi sp, sp, 80
2414 ; RV64IZCMP-NEXT: ret
2416 ; RV64IZCMP-WITH-FP-LABEL: varargs:
2417 ; RV64IZCMP-WITH-FP: # %bb.0:
2418 ; RV64IZCMP-WITH-FP-NEXT: addi sp, sp, -80
2419 ; RV64IZCMP-WITH-FP-NEXT: .cfi_def_cfa_offset 80
2420 ; RV64IZCMP-WITH-FP-NEXT: sd ra, 8(sp) # 8-byte Folded Spill
2421 ; RV64IZCMP-WITH-FP-NEXT: sd s0, 0(sp) # 8-byte Folded Spill
2422 ; RV64IZCMP-WITH-FP-NEXT: .cfi_offset ra, -72
2423 ; RV64IZCMP-WITH-FP-NEXT: .cfi_offset s0, -80
2424 ; RV64IZCMP-WITH-FP-NEXT: addi s0, sp, 16
2425 ; RV64IZCMP-WITH-FP-NEXT: .cfi_def_cfa s0, 64
2426 ; RV64IZCMP-WITH-FP-NEXT: sd a7, 56(s0)
2427 ; RV64IZCMP-WITH-FP-NEXT: sd a6, 48(s0)
2428 ; RV64IZCMP-WITH-FP-NEXT: sd a5, 40(s0)
2429 ; RV64IZCMP-WITH-FP-NEXT: sd a4, 32(s0)
2430 ; RV64IZCMP-WITH-FP-NEXT: sd a3, 24(s0)
2431 ; RV64IZCMP-WITH-FP-NEXT: sd a2, 16(s0)
2432 ; RV64IZCMP-WITH-FP-NEXT: sd a1, 8(s0)
2433 ; RV64IZCMP-WITH-FP-NEXT: sd a0, 0(s0)
2434 ; RV64IZCMP-WITH-FP-NEXT: call callee@plt
2435 ; RV64IZCMP-WITH-FP-NEXT: ld ra, 8(sp) # 8-byte Folded Reload
2436 ; RV64IZCMP-WITH-FP-NEXT: ld s0, 0(sp) # 8-byte Folded Reload
2437 ; RV64IZCMP-WITH-FP-NEXT: addi sp, sp, 80
2438 ; RV64IZCMP-WITH-FP-NEXT: ret