[docs] Add LICENSE.txt to the root of the mono-repo
[llvm-project.git] / llvm / test / CodeGen / RISCV / callee-saved-gprs.ll
blob5e0c01ee2678c40f7459cef9f1d47795bca14aae
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=riscv64 -verify-machineinstrs < %s \
13 ; RUN:   | FileCheck %s -check-prefix=RV64I
14 ; RUN: llc -mtriple=riscv64 -mattr=+f -target-abi lp64f -verify-machineinstrs < %s \
15 ; RUN:   | FileCheck %s -check-prefix=RV64I
16 ; RUN: llc -mtriple=riscv64 -mattr=+d -target-abi lp64f -verify-machineinstrs < %s \
17 ; RUN:   | FileCheck %s -check-prefix=RV64I
18 ; RUN: llc -mtriple=riscv64 -mattr=+d -target-abi lp64d -verify-machineinstrs < %s \
19 ; RUN:   | FileCheck %s -check-prefix=RV64I
20 ; RUN: llc -mtriple=riscv64 -verify-machineinstrs -frame-pointer=all < %s \
21 ; RUN:   | FileCheck %s -check-prefix=RV64I-WITH-FP
23 @var = global [32 x i32] zeroinitializer
25 ; This function tests that RISCVRegisterInfo::getCalleeSavedRegs returns
26 ; something appropriate.
28 define void @callee() nounwind {
29 ; RV32I-LABEL: callee:
30 ; RV32I:       # %bb.0:
31 ; RV32I-NEXT:    addi sp, sp, -80
32 ; RV32I-NEXT:    sw ra, 76(sp) # 4-byte Folded Spill
33 ; RV32I-NEXT:    sw s0, 72(sp) # 4-byte Folded Spill
34 ; RV32I-NEXT:    sw s1, 68(sp) # 4-byte Folded Spill
35 ; RV32I-NEXT:    sw s2, 64(sp) # 4-byte Folded Spill
36 ; RV32I-NEXT:    sw s3, 60(sp) # 4-byte Folded Spill
37 ; RV32I-NEXT:    sw s4, 56(sp) # 4-byte Folded Spill
38 ; RV32I-NEXT:    sw s5, 52(sp) # 4-byte Folded Spill
39 ; RV32I-NEXT:    sw s6, 48(sp) # 4-byte Folded Spill
40 ; RV32I-NEXT:    sw s7, 44(sp) # 4-byte Folded Spill
41 ; RV32I-NEXT:    sw s8, 40(sp) # 4-byte Folded Spill
42 ; RV32I-NEXT:    sw s9, 36(sp) # 4-byte Folded Spill
43 ; RV32I-NEXT:    sw s10, 32(sp) # 4-byte Folded Spill
44 ; RV32I-NEXT:    sw s11, 28(sp) # 4-byte Folded Spill
45 ; RV32I-NEXT:    lui a7, %hi(var)
46 ; RV32I-NEXT:    lw a0, %lo(var)(a7)
47 ; RV32I-NEXT:    sw a0, 24(sp) # 4-byte Folded Spill
48 ; RV32I-NEXT:    lw a0, %lo(var+4)(a7)
49 ; RV32I-NEXT:    sw a0, 20(sp) # 4-byte Folded Spill
50 ; RV32I-NEXT:    lw a0, %lo(var+8)(a7)
51 ; RV32I-NEXT:    sw a0, 16(sp) # 4-byte Folded Spill
52 ; RV32I-NEXT:    lw a0, %lo(var+12)(a7)
53 ; RV32I-NEXT:    sw a0, 12(sp) # 4-byte Folded Spill
54 ; RV32I-NEXT:    addi a5, a7, %lo(var)
55 ; RV32I-NEXT:    lw a0, 16(a5)
56 ; RV32I-NEXT:    sw a0, 8(sp) # 4-byte Folded Spill
57 ; RV32I-NEXT:    lw a0, 20(a5)
58 ; RV32I-NEXT:    sw a0, 4(sp) # 4-byte Folded Spill
59 ; RV32I-NEXT:    lw t0, 24(a5)
60 ; RV32I-NEXT:    lw t1, 28(a5)
61 ; RV32I-NEXT:    lw t2, 32(a5)
62 ; RV32I-NEXT:    lw t3, 36(a5)
63 ; RV32I-NEXT:    lw t4, 40(a5)
64 ; RV32I-NEXT:    lw t5, 44(a5)
65 ; RV32I-NEXT:    lw t6, 48(a5)
66 ; RV32I-NEXT:    lw s0, 52(a5)
67 ; RV32I-NEXT:    lw s1, 56(a5)
68 ; RV32I-NEXT:    lw s2, 60(a5)
69 ; RV32I-NEXT:    lw s3, 64(a5)
70 ; RV32I-NEXT:    lw s4, 68(a5)
71 ; RV32I-NEXT:    lw s5, 72(a5)
72 ; RV32I-NEXT:    lw s6, 76(a5)
73 ; RV32I-NEXT:    lw s7, 80(a5)
74 ; RV32I-NEXT:    lw s8, 84(a5)
75 ; RV32I-NEXT:    lw s9, 88(a5)
76 ; RV32I-NEXT:    lw s10, 92(a5)
77 ; RV32I-NEXT:    lw s11, 96(a5)
78 ; RV32I-NEXT:    lw ra, 100(a5)
79 ; RV32I-NEXT:    lw a6, 104(a5)
80 ; RV32I-NEXT:    lw a4, 108(a5)
81 ; RV32I-NEXT:    lw a0, 124(a5)
82 ; RV32I-NEXT:    lw a1, 120(a5)
83 ; RV32I-NEXT:    lw a2, 116(a5)
84 ; RV32I-NEXT:    lw a3, 112(a5)
85 ; RV32I-NEXT:    sw a0, 124(a5)
86 ; RV32I-NEXT:    sw a1, 120(a5)
87 ; RV32I-NEXT:    sw a2, 116(a5)
88 ; RV32I-NEXT:    sw a3, 112(a5)
89 ; RV32I-NEXT:    sw a4, 108(a5)
90 ; RV32I-NEXT:    sw a6, 104(a5)
91 ; RV32I-NEXT:    sw ra, 100(a5)
92 ; RV32I-NEXT:    sw s11, 96(a5)
93 ; RV32I-NEXT:    sw s10, 92(a5)
94 ; RV32I-NEXT:    sw s9, 88(a5)
95 ; RV32I-NEXT:    sw s8, 84(a5)
96 ; RV32I-NEXT:    sw s7, 80(a5)
97 ; RV32I-NEXT:    sw s6, 76(a5)
98 ; RV32I-NEXT:    sw s5, 72(a5)
99 ; RV32I-NEXT:    sw s4, 68(a5)
100 ; RV32I-NEXT:    sw s3, 64(a5)
101 ; RV32I-NEXT:    sw s2, 60(a5)
102 ; RV32I-NEXT:    sw s1, 56(a5)
103 ; RV32I-NEXT:    sw s0, 52(a5)
104 ; RV32I-NEXT:    sw t6, 48(a5)
105 ; RV32I-NEXT:    sw t5, 44(a5)
106 ; RV32I-NEXT:    sw t4, 40(a5)
107 ; RV32I-NEXT:    sw t3, 36(a5)
108 ; RV32I-NEXT:    sw t2, 32(a5)
109 ; RV32I-NEXT:    sw t1, 28(a5)
110 ; RV32I-NEXT:    sw t0, 24(a5)
111 ; RV32I-NEXT:    lw a0, 4(sp) # 4-byte Folded Reload
112 ; RV32I-NEXT:    sw a0, 20(a5)
113 ; RV32I-NEXT:    lw a0, 8(sp) # 4-byte Folded Reload
114 ; RV32I-NEXT:    sw a0, 16(a5)
115 ; RV32I-NEXT:    lw a0, 12(sp) # 4-byte Folded Reload
116 ; RV32I-NEXT:    sw a0, %lo(var+12)(a7)
117 ; RV32I-NEXT:    lw a0, 16(sp) # 4-byte Folded Reload
118 ; RV32I-NEXT:    sw a0, %lo(var+8)(a7)
119 ; RV32I-NEXT:    lw a0, 20(sp) # 4-byte Folded Reload
120 ; RV32I-NEXT:    sw a0, %lo(var+4)(a7)
121 ; RV32I-NEXT:    lw a0, 24(sp) # 4-byte Folded Reload
122 ; RV32I-NEXT:    sw a0, %lo(var)(a7)
123 ; RV32I-NEXT:    lw ra, 76(sp) # 4-byte Folded Reload
124 ; RV32I-NEXT:    lw s0, 72(sp) # 4-byte Folded Reload
125 ; RV32I-NEXT:    lw s1, 68(sp) # 4-byte Folded Reload
126 ; RV32I-NEXT:    lw s2, 64(sp) # 4-byte Folded Reload
127 ; RV32I-NEXT:    lw s3, 60(sp) # 4-byte Folded Reload
128 ; RV32I-NEXT:    lw s4, 56(sp) # 4-byte Folded Reload
129 ; RV32I-NEXT:    lw s5, 52(sp) # 4-byte Folded Reload
130 ; RV32I-NEXT:    lw s6, 48(sp) # 4-byte Folded Reload
131 ; RV32I-NEXT:    lw s7, 44(sp) # 4-byte Folded Reload
132 ; RV32I-NEXT:    lw s8, 40(sp) # 4-byte Folded Reload
133 ; RV32I-NEXT:    lw s9, 36(sp) # 4-byte Folded Reload
134 ; RV32I-NEXT:    lw s10, 32(sp) # 4-byte Folded Reload
135 ; RV32I-NEXT:    lw s11, 28(sp) # 4-byte Folded Reload
136 ; RV32I-NEXT:    addi sp, sp, 80
137 ; RV32I-NEXT:    ret
139 ; RV32I-WITH-FP-LABEL: callee:
140 ; RV32I-WITH-FP:       # %bb.0:
141 ; RV32I-WITH-FP-NEXT:    addi sp, sp, -80
142 ; RV32I-WITH-FP-NEXT:    sw ra, 76(sp) # 4-byte Folded Spill
143 ; RV32I-WITH-FP-NEXT:    sw s0, 72(sp) # 4-byte Folded Spill
144 ; RV32I-WITH-FP-NEXT:    sw s1, 68(sp) # 4-byte Folded Spill
145 ; RV32I-WITH-FP-NEXT:    sw s2, 64(sp) # 4-byte Folded Spill
146 ; RV32I-WITH-FP-NEXT:    sw s3, 60(sp) # 4-byte Folded Spill
147 ; RV32I-WITH-FP-NEXT:    sw s4, 56(sp) # 4-byte Folded Spill
148 ; RV32I-WITH-FP-NEXT:    sw s5, 52(sp) # 4-byte Folded Spill
149 ; RV32I-WITH-FP-NEXT:    sw s6, 48(sp) # 4-byte Folded Spill
150 ; RV32I-WITH-FP-NEXT:    sw s7, 44(sp) # 4-byte Folded Spill
151 ; RV32I-WITH-FP-NEXT:    sw s8, 40(sp) # 4-byte Folded Spill
152 ; RV32I-WITH-FP-NEXT:    sw s9, 36(sp) # 4-byte Folded Spill
153 ; RV32I-WITH-FP-NEXT:    sw s10, 32(sp) # 4-byte Folded Spill
154 ; RV32I-WITH-FP-NEXT:    sw s11, 28(sp) # 4-byte Folded Spill
155 ; RV32I-WITH-FP-NEXT:    addi s0, sp, 80
156 ; RV32I-WITH-FP-NEXT:    lui a7, %hi(var)
157 ; RV32I-WITH-FP-NEXT:    lw a0, %lo(var)(a7)
158 ; RV32I-WITH-FP-NEXT:    sw a0, -56(s0) # 4-byte Folded Spill
159 ; RV32I-WITH-FP-NEXT:    lw a0, %lo(var+4)(a7)
160 ; RV32I-WITH-FP-NEXT:    sw a0, -60(s0) # 4-byte Folded Spill
161 ; RV32I-WITH-FP-NEXT:    lw a0, %lo(var+8)(a7)
162 ; RV32I-WITH-FP-NEXT:    sw a0, -64(s0) # 4-byte Folded Spill
163 ; RV32I-WITH-FP-NEXT:    lw a0, %lo(var+12)(a7)
164 ; RV32I-WITH-FP-NEXT:    sw a0, -68(s0) # 4-byte Folded Spill
165 ; RV32I-WITH-FP-NEXT:    addi a5, a7, %lo(var)
166 ; RV32I-WITH-FP-NEXT:    lw a0, 16(a5)
167 ; RV32I-WITH-FP-NEXT:    sw a0, -72(s0) # 4-byte Folded Spill
168 ; RV32I-WITH-FP-NEXT:    lw a0, 20(a5)
169 ; RV32I-WITH-FP-NEXT:    sw a0, -76(s0) # 4-byte Folded Spill
170 ; RV32I-WITH-FP-NEXT:    lw a0, 24(a5)
171 ; RV32I-WITH-FP-NEXT:    sw a0, -80(s0) # 4-byte Folded Spill
172 ; RV32I-WITH-FP-NEXT:    lw t1, 28(a5)
173 ; RV32I-WITH-FP-NEXT:    lw t2, 32(a5)
174 ; RV32I-WITH-FP-NEXT:    lw t3, 36(a5)
175 ; RV32I-WITH-FP-NEXT:    lw t4, 40(a5)
176 ; RV32I-WITH-FP-NEXT:    lw t5, 44(a5)
177 ; RV32I-WITH-FP-NEXT:    lw t6, 48(a5)
178 ; RV32I-WITH-FP-NEXT:    lw s1, 52(a5)
179 ; RV32I-WITH-FP-NEXT:    lw s2, 56(a5)
180 ; RV32I-WITH-FP-NEXT:    lw s3, 60(a5)
181 ; RV32I-WITH-FP-NEXT:    lw s4, 64(a5)
182 ; RV32I-WITH-FP-NEXT:    lw s5, 68(a5)
183 ; RV32I-WITH-FP-NEXT:    lw s6, 72(a5)
184 ; RV32I-WITH-FP-NEXT:    lw s7, 76(a5)
185 ; RV32I-WITH-FP-NEXT:    lw s8, 80(a5)
186 ; RV32I-WITH-FP-NEXT:    lw s9, 84(a5)
187 ; RV32I-WITH-FP-NEXT:    lw s10, 88(a5)
188 ; RV32I-WITH-FP-NEXT:    lw s11, 92(a5)
189 ; RV32I-WITH-FP-NEXT:    lw ra, 96(a5)
190 ; RV32I-WITH-FP-NEXT:    lw t0, 100(a5)
191 ; RV32I-WITH-FP-NEXT:    lw a6, 104(a5)
192 ; RV32I-WITH-FP-NEXT:    lw a4, 108(a5)
193 ; RV32I-WITH-FP-NEXT:    lw a0, 124(a5)
194 ; RV32I-WITH-FP-NEXT:    lw a1, 120(a5)
195 ; RV32I-WITH-FP-NEXT:    lw a2, 116(a5)
196 ; RV32I-WITH-FP-NEXT:    lw a3, 112(a5)
197 ; RV32I-WITH-FP-NEXT:    sw a0, 124(a5)
198 ; RV32I-WITH-FP-NEXT:    sw a1, 120(a5)
199 ; RV32I-WITH-FP-NEXT:    sw a2, 116(a5)
200 ; RV32I-WITH-FP-NEXT:    sw a3, 112(a5)
201 ; RV32I-WITH-FP-NEXT:    sw a4, 108(a5)
202 ; RV32I-WITH-FP-NEXT:    sw a6, 104(a5)
203 ; RV32I-WITH-FP-NEXT:    sw t0, 100(a5)
204 ; RV32I-WITH-FP-NEXT:    sw ra, 96(a5)
205 ; RV32I-WITH-FP-NEXT:    sw s11, 92(a5)
206 ; RV32I-WITH-FP-NEXT:    sw s10, 88(a5)
207 ; RV32I-WITH-FP-NEXT:    sw s9, 84(a5)
208 ; RV32I-WITH-FP-NEXT:    sw s8, 80(a5)
209 ; RV32I-WITH-FP-NEXT:    sw s7, 76(a5)
210 ; RV32I-WITH-FP-NEXT:    sw s6, 72(a5)
211 ; RV32I-WITH-FP-NEXT:    sw s5, 68(a5)
212 ; RV32I-WITH-FP-NEXT:    sw s4, 64(a5)
213 ; RV32I-WITH-FP-NEXT:    sw s3, 60(a5)
214 ; RV32I-WITH-FP-NEXT:    sw s2, 56(a5)
215 ; RV32I-WITH-FP-NEXT:    sw s1, 52(a5)
216 ; RV32I-WITH-FP-NEXT:    sw t6, 48(a5)
217 ; RV32I-WITH-FP-NEXT:    sw t5, 44(a5)
218 ; RV32I-WITH-FP-NEXT:    sw t4, 40(a5)
219 ; RV32I-WITH-FP-NEXT:    sw t3, 36(a5)
220 ; RV32I-WITH-FP-NEXT:    sw t2, 32(a5)
221 ; RV32I-WITH-FP-NEXT:    sw t1, 28(a5)
222 ; RV32I-WITH-FP-NEXT:    lw a0, -80(s0) # 4-byte Folded Reload
223 ; RV32I-WITH-FP-NEXT:    sw a0, 24(a5)
224 ; RV32I-WITH-FP-NEXT:    lw a0, -76(s0) # 4-byte Folded Reload
225 ; RV32I-WITH-FP-NEXT:    sw a0, 20(a5)
226 ; RV32I-WITH-FP-NEXT:    lw a0, -72(s0) # 4-byte Folded Reload
227 ; RV32I-WITH-FP-NEXT:    sw a0, 16(a5)
228 ; RV32I-WITH-FP-NEXT:    lw a0, -68(s0) # 4-byte Folded Reload
229 ; RV32I-WITH-FP-NEXT:    sw a0, %lo(var+12)(a7)
230 ; RV32I-WITH-FP-NEXT:    lw a0, -64(s0) # 4-byte Folded Reload
231 ; RV32I-WITH-FP-NEXT:    sw a0, %lo(var+8)(a7)
232 ; RV32I-WITH-FP-NEXT:    lw a0, -60(s0) # 4-byte Folded Reload
233 ; RV32I-WITH-FP-NEXT:    sw a0, %lo(var+4)(a7)
234 ; RV32I-WITH-FP-NEXT:    lw a0, -56(s0) # 4-byte Folded Reload
235 ; RV32I-WITH-FP-NEXT:    sw a0, %lo(var)(a7)
236 ; RV32I-WITH-FP-NEXT:    lw ra, 76(sp) # 4-byte Folded Reload
237 ; RV32I-WITH-FP-NEXT:    lw s0, 72(sp) # 4-byte Folded Reload
238 ; RV32I-WITH-FP-NEXT:    lw s1, 68(sp) # 4-byte Folded Reload
239 ; RV32I-WITH-FP-NEXT:    lw s2, 64(sp) # 4-byte Folded Reload
240 ; RV32I-WITH-FP-NEXT:    lw s3, 60(sp) # 4-byte Folded Reload
241 ; RV32I-WITH-FP-NEXT:    lw s4, 56(sp) # 4-byte Folded Reload
242 ; RV32I-WITH-FP-NEXT:    lw s5, 52(sp) # 4-byte Folded Reload
243 ; RV32I-WITH-FP-NEXT:    lw s6, 48(sp) # 4-byte Folded Reload
244 ; RV32I-WITH-FP-NEXT:    lw s7, 44(sp) # 4-byte Folded Reload
245 ; RV32I-WITH-FP-NEXT:    lw s8, 40(sp) # 4-byte Folded Reload
246 ; RV32I-WITH-FP-NEXT:    lw s9, 36(sp) # 4-byte Folded Reload
247 ; RV32I-WITH-FP-NEXT:    lw s10, 32(sp) # 4-byte Folded Reload
248 ; RV32I-WITH-FP-NEXT:    lw s11, 28(sp) # 4-byte Folded Reload
249 ; RV32I-WITH-FP-NEXT:    addi sp, sp, 80
250 ; RV32I-WITH-FP-NEXT:    ret
252 ; RV64I-LABEL: callee:
253 ; RV64I:       # %bb.0:
254 ; RV64I-NEXT:    addi sp, sp, -160
255 ; RV64I-NEXT:    sd ra, 152(sp) # 8-byte Folded Spill
256 ; RV64I-NEXT:    sd s0, 144(sp) # 8-byte Folded Spill
257 ; RV64I-NEXT:    sd s1, 136(sp) # 8-byte Folded Spill
258 ; RV64I-NEXT:    sd s2, 128(sp) # 8-byte Folded Spill
259 ; RV64I-NEXT:    sd s3, 120(sp) # 8-byte Folded Spill
260 ; RV64I-NEXT:    sd s4, 112(sp) # 8-byte Folded Spill
261 ; RV64I-NEXT:    sd s5, 104(sp) # 8-byte Folded Spill
262 ; RV64I-NEXT:    sd s6, 96(sp) # 8-byte Folded Spill
263 ; RV64I-NEXT:    sd s7, 88(sp) # 8-byte Folded Spill
264 ; RV64I-NEXT:    sd s8, 80(sp) # 8-byte Folded Spill
265 ; RV64I-NEXT:    sd s9, 72(sp) # 8-byte Folded Spill
266 ; RV64I-NEXT:    sd s10, 64(sp) # 8-byte Folded Spill
267 ; RV64I-NEXT:    sd s11, 56(sp) # 8-byte Folded Spill
268 ; RV64I-NEXT:    lui a7, %hi(var)
269 ; RV64I-NEXT:    lw a0, %lo(var)(a7)
270 ; RV64I-NEXT:    sd a0, 48(sp) # 8-byte Folded Spill
271 ; RV64I-NEXT:    lw a0, %lo(var+4)(a7)
272 ; RV64I-NEXT:    sd a0, 40(sp) # 8-byte Folded Spill
273 ; RV64I-NEXT:    lw a0, %lo(var+8)(a7)
274 ; RV64I-NEXT:    sd a0, 32(sp) # 8-byte Folded Spill
275 ; RV64I-NEXT:    lw a0, %lo(var+12)(a7)
276 ; RV64I-NEXT:    sd a0, 24(sp) # 8-byte Folded Spill
277 ; RV64I-NEXT:    addi a5, a7, %lo(var)
278 ; RV64I-NEXT:    lw a0, 16(a5)
279 ; RV64I-NEXT:    sd a0, 16(sp) # 8-byte Folded Spill
280 ; RV64I-NEXT:    lw a0, 20(a5)
281 ; RV64I-NEXT:    sd a0, 8(sp) # 8-byte Folded Spill
282 ; RV64I-NEXT:    lw t0, 24(a5)
283 ; RV64I-NEXT:    lw t1, 28(a5)
284 ; RV64I-NEXT:    lw t2, 32(a5)
285 ; RV64I-NEXT:    lw t3, 36(a5)
286 ; RV64I-NEXT:    lw t4, 40(a5)
287 ; RV64I-NEXT:    lw t5, 44(a5)
288 ; RV64I-NEXT:    lw t6, 48(a5)
289 ; RV64I-NEXT:    lw s0, 52(a5)
290 ; RV64I-NEXT:    lw s1, 56(a5)
291 ; RV64I-NEXT:    lw s2, 60(a5)
292 ; RV64I-NEXT:    lw s3, 64(a5)
293 ; RV64I-NEXT:    lw s4, 68(a5)
294 ; RV64I-NEXT:    lw s5, 72(a5)
295 ; RV64I-NEXT:    lw s6, 76(a5)
296 ; RV64I-NEXT:    lw s7, 80(a5)
297 ; RV64I-NEXT:    lw s8, 84(a5)
298 ; RV64I-NEXT:    lw s9, 88(a5)
299 ; RV64I-NEXT:    lw s10, 92(a5)
300 ; RV64I-NEXT:    lw s11, 96(a5)
301 ; RV64I-NEXT:    lw ra, 100(a5)
302 ; RV64I-NEXT:    lw a6, 104(a5)
303 ; RV64I-NEXT:    lw a4, 108(a5)
304 ; RV64I-NEXT:    lw a0, 124(a5)
305 ; RV64I-NEXT:    lw a1, 120(a5)
306 ; RV64I-NEXT:    lw a2, 116(a5)
307 ; RV64I-NEXT:    lw a3, 112(a5)
308 ; RV64I-NEXT:    sw a0, 124(a5)
309 ; RV64I-NEXT:    sw a1, 120(a5)
310 ; RV64I-NEXT:    sw a2, 116(a5)
311 ; RV64I-NEXT:    sw a3, 112(a5)
312 ; RV64I-NEXT:    sw a4, 108(a5)
313 ; RV64I-NEXT:    sw a6, 104(a5)
314 ; RV64I-NEXT:    sw ra, 100(a5)
315 ; RV64I-NEXT:    sw s11, 96(a5)
316 ; RV64I-NEXT:    sw s10, 92(a5)
317 ; RV64I-NEXT:    sw s9, 88(a5)
318 ; RV64I-NEXT:    sw s8, 84(a5)
319 ; RV64I-NEXT:    sw s7, 80(a5)
320 ; RV64I-NEXT:    sw s6, 76(a5)
321 ; RV64I-NEXT:    sw s5, 72(a5)
322 ; RV64I-NEXT:    sw s4, 68(a5)
323 ; RV64I-NEXT:    sw s3, 64(a5)
324 ; RV64I-NEXT:    sw s2, 60(a5)
325 ; RV64I-NEXT:    sw s1, 56(a5)
326 ; RV64I-NEXT:    sw s0, 52(a5)
327 ; RV64I-NEXT:    sw t6, 48(a5)
328 ; RV64I-NEXT:    sw t5, 44(a5)
329 ; RV64I-NEXT:    sw t4, 40(a5)
330 ; RV64I-NEXT:    sw t3, 36(a5)
331 ; RV64I-NEXT:    sw t2, 32(a5)
332 ; RV64I-NEXT:    sw t1, 28(a5)
333 ; RV64I-NEXT:    sw t0, 24(a5)
334 ; RV64I-NEXT:    ld a0, 8(sp) # 8-byte Folded Reload
335 ; RV64I-NEXT:    sw a0, 20(a5)
336 ; RV64I-NEXT:    ld a0, 16(sp) # 8-byte Folded Reload
337 ; RV64I-NEXT:    sw a0, 16(a5)
338 ; RV64I-NEXT:    ld a0, 24(sp) # 8-byte Folded Reload
339 ; RV64I-NEXT:    sw a0, %lo(var+12)(a7)
340 ; RV64I-NEXT:    ld a0, 32(sp) # 8-byte Folded Reload
341 ; RV64I-NEXT:    sw a0, %lo(var+8)(a7)
342 ; RV64I-NEXT:    ld a0, 40(sp) # 8-byte Folded Reload
343 ; RV64I-NEXT:    sw a0, %lo(var+4)(a7)
344 ; RV64I-NEXT:    ld a0, 48(sp) # 8-byte Folded Reload
345 ; RV64I-NEXT:    sw a0, %lo(var)(a7)
346 ; RV64I-NEXT:    ld ra, 152(sp) # 8-byte Folded Reload
347 ; RV64I-NEXT:    ld s0, 144(sp) # 8-byte Folded Reload
348 ; RV64I-NEXT:    ld s1, 136(sp) # 8-byte Folded Reload
349 ; RV64I-NEXT:    ld s2, 128(sp) # 8-byte Folded Reload
350 ; RV64I-NEXT:    ld s3, 120(sp) # 8-byte Folded Reload
351 ; RV64I-NEXT:    ld s4, 112(sp) # 8-byte Folded Reload
352 ; RV64I-NEXT:    ld s5, 104(sp) # 8-byte Folded Reload
353 ; RV64I-NEXT:    ld s6, 96(sp) # 8-byte Folded Reload
354 ; RV64I-NEXT:    ld s7, 88(sp) # 8-byte Folded Reload
355 ; RV64I-NEXT:    ld s8, 80(sp) # 8-byte Folded Reload
356 ; RV64I-NEXT:    ld s9, 72(sp) # 8-byte Folded Reload
357 ; RV64I-NEXT:    ld s10, 64(sp) # 8-byte Folded Reload
358 ; RV64I-NEXT:    ld s11, 56(sp) # 8-byte Folded Reload
359 ; RV64I-NEXT:    addi sp, sp, 160
360 ; RV64I-NEXT:    ret
362 ; RV64I-WITH-FP-LABEL: callee:
363 ; RV64I-WITH-FP:       # %bb.0:
364 ; RV64I-WITH-FP-NEXT:    addi sp, sp, -160
365 ; RV64I-WITH-FP-NEXT:    sd ra, 152(sp) # 8-byte Folded Spill
366 ; RV64I-WITH-FP-NEXT:    sd s0, 144(sp) # 8-byte Folded Spill
367 ; RV64I-WITH-FP-NEXT:    sd s1, 136(sp) # 8-byte Folded Spill
368 ; RV64I-WITH-FP-NEXT:    sd s2, 128(sp) # 8-byte Folded Spill
369 ; RV64I-WITH-FP-NEXT:    sd s3, 120(sp) # 8-byte Folded Spill
370 ; RV64I-WITH-FP-NEXT:    sd s4, 112(sp) # 8-byte Folded Spill
371 ; RV64I-WITH-FP-NEXT:    sd s5, 104(sp) # 8-byte Folded Spill
372 ; RV64I-WITH-FP-NEXT:    sd s6, 96(sp) # 8-byte Folded Spill
373 ; RV64I-WITH-FP-NEXT:    sd s7, 88(sp) # 8-byte Folded Spill
374 ; RV64I-WITH-FP-NEXT:    sd s8, 80(sp) # 8-byte Folded Spill
375 ; RV64I-WITH-FP-NEXT:    sd s9, 72(sp) # 8-byte Folded Spill
376 ; RV64I-WITH-FP-NEXT:    sd s10, 64(sp) # 8-byte Folded Spill
377 ; RV64I-WITH-FP-NEXT:    sd s11, 56(sp) # 8-byte Folded Spill
378 ; RV64I-WITH-FP-NEXT:    addi s0, sp, 160
379 ; RV64I-WITH-FP-NEXT:    lui a7, %hi(var)
380 ; RV64I-WITH-FP-NEXT:    lw a0, %lo(var)(a7)
381 ; RV64I-WITH-FP-NEXT:    sd a0, -112(s0) # 8-byte Folded Spill
382 ; RV64I-WITH-FP-NEXT:    lw a0, %lo(var+4)(a7)
383 ; RV64I-WITH-FP-NEXT:    sd a0, -120(s0) # 8-byte Folded Spill
384 ; RV64I-WITH-FP-NEXT:    lw a0, %lo(var+8)(a7)
385 ; RV64I-WITH-FP-NEXT:    sd a0, -128(s0) # 8-byte Folded Spill
386 ; RV64I-WITH-FP-NEXT:    lw a0, %lo(var+12)(a7)
387 ; RV64I-WITH-FP-NEXT:    sd a0, -136(s0) # 8-byte Folded Spill
388 ; RV64I-WITH-FP-NEXT:    addi a5, a7, %lo(var)
389 ; RV64I-WITH-FP-NEXT:    lw a0, 16(a5)
390 ; RV64I-WITH-FP-NEXT:    sd a0, -144(s0) # 8-byte Folded Spill
391 ; RV64I-WITH-FP-NEXT:    lw a0, 20(a5)
392 ; RV64I-WITH-FP-NEXT:    sd a0, -152(s0) # 8-byte Folded Spill
393 ; RV64I-WITH-FP-NEXT:    lw a0, 24(a5)
394 ; RV64I-WITH-FP-NEXT:    sd a0, -160(s0) # 8-byte Folded Spill
395 ; RV64I-WITH-FP-NEXT:    lw t1, 28(a5)
396 ; RV64I-WITH-FP-NEXT:    lw t2, 32(a5)
397 ; RV64I-WITH-FP-NEXT:    lw t3, 36(a5)
398 ; RV64I-WITH-FP-NEXT:    lw t4, 40(a5)
399 ; RV64I-WITH-FP-NEXT:    lw t5, 44(a5)
400 ; RV64I-WITH-FP-NEXT:    lw t6, 48(a5)
401 ; RV64I-WITH-FP-NEXT:    lw s1, 52(a5)
402 ; RV64I-WITH-FP-NEXT:    lw s2, 56(a5)
403 ; RV64I-WITH-FP-NEXT:    lw s3, 60(a5)
404 ; RV64I-WITH-FP-NEXT:    lw s4, 64(a5)
405 ; RV64I-WITH-FP-NEXT:    lw s5, 68(a5)
406 ; RV64I-WITH-FP-NEXT:    lw s6, 72(a5)
407 ; RV64I-WITH-FP-NEXT:    lw s7, 76(a5)
408 ; RV64I-WITH-FP-NEXT:    lw s8, 80(a5)
409 ; RV64I-WITH-FP-NEXT:    lw s9, 84(a5)
410 ; RV64I-WITH-FP-NEXT:    lw s10, 88(a5)
411 ; RV64I-WITH-FP-NEXT:    lw s11, 92(a5)
412 ; RV64I-WITH-FP-NEXT:    lw ra, 96(a5)
413 ; RV64I-WITH-FP-NEXT:    lw t0, 100(a5)
414 ; RV64I-WITH-FP-NEXT:    lw a6, 104(a5)
415 ; RV64I-WITH-FP-NEXT:    lw a4, 108(a5)
416 ; RV64I-WITH-FP-NEXT:    lw a0, 124(a5)
417 ; RV64I-WITH-FP-NEXT:    lw a1, 120(a5)
418 ; RV64I-WITH-FP-NEXT:    lw a2, 116(a5)
419 ; RV64I-WITH-FP-NEXT:    lw a3, 112(a5)
420 ; RV64I-WITH-FP-NEXT:    sw a0, 124(a5)
421 ; RV64I-WITH-FP-NEXT:    sw a1, 120(a5)
422 ; RV64I-WITH-FP-NEXT:    sw a2, 116(a5)
423 ; RV64I-WITH-FP-NEXT:    sw a3, 112(a5)
424 ; RV64I-WITH-FP-NEXT:    sw a4, 108(a5)
425 ; RV64I-WITH-FP-NEXT:    sw a6, 104(a5)
426 ; RV64I-WITH-FP-NEXT:    sw t0, 100(a5)
427 ; RV64I-WITH-FP-NEXT:    sw ra, 96(a5)
428 ; RV64I-WITH-FP-NEXT:    sw s11, 92(a5)
429 ; RV64I-WITH-FP-NEXT:    sw s10, 88(a5)
430 ; RV64I-WITH-FP-NEXT:    sw s9, 84(a5)
431 ; RV64I-WITH-FP-NEXT:    sw s8, 80(a5)
432 ; RV64I-WITH-FP-NEXT:    sw s7, 76(a5)
433 ; RV64I-WITH-FP-NEXT:    sw s6, 72(a5)
434 ; RV64I-WITH-FP-NEXT:    sw s5, 68(a5)
435 ; RV64I-WITH-FP-NEXT:    sw s4, 64(a5)
436 ; RV64I-WITH-FP-NEXT:    sw s3, 60(a5)
437 ; RV64I-WITH-FP-NEXT:    sw s2, 56(a5)
438 ; RV64I-WITH-FP-NEXT:    sw s1, 52(a5)
439 ; RV64I-WITH-FP-NEXT:    sw t6, 48(a5)
440 ; RV64I-WITH-FP-NEXT:    sw t5, 44(a5)
441 ; RV64I-WITH-FP-NEXT:    sw t4, 40(a5)
442 ; RV64I-WITH-FP-NEXT:    sw t3, 36(a5)
443 ; RV64I-WITH-FP-NEXT:    sw t2, 32(a5)
444 ; RV64I-WITH-FP-NEXT:    sw t1, 28(a5)
445 ; RV64I-WITH-FP-NEXT:    ld a0, -160(s0) # 8-byte Folded Reload
446 ; RV64I-WITH-FP-NEXT:    sw a0, 24(a5)
447 ; RV64I-WITH-FP-NEXT:    ld a0, -152(s0) # 8-byte Folded Reload
448 ; RV64I-WITH-FP-NEXT:    sw a0, 20(a5)
449 ; RV64I-WITH-FP-NEXT:    ld a0, -144(s0) # 8-byte Folded Reload
450 ; RV64I-WITH-FP-NEXT:    sw a0, 16(a5)
451 ; RV64I-WITH-FP-NEXT:    ld a0, -136(s0) # 8-byte Folded Reload
452 ; RV64I-WITH-FP-NEXT:    sw a0, %lo(var+12)(a7)
453 ; RV64I-WITH-FP-NEXT:    ld a0, -128(s0) # 8-byte Folded Reload
454 ; RV64I-WITH-FP-NEXT:    sw a0, %lo(var+8)(a7)
455 ; RV64I-WITH-FP-NEXT:    ld a0, -120(s0) # 8-byte Folded Reload
456 ; RV64I-WITH-FP-NEXT:    sw a0, %lo(var+4)(a7)
457 ; RV64I-WITH-FP-NEXT:    ld a0, -112(s0) # 8-byte Folded Reload
458 ; RV64I-WITH-FP-NEXT:    sw a0, %lo(var)(a7)
459 ; RV64I-WITH-FP-NEXT:    ld ra, 152(sp) # 8-byte Folded Reload
460 ; RV64I-WITH-FP-NEXT:    ld s0, 144(sp) # 8-byte Folded Reload
461 ; RV64I-WITH-FP-NEXT:    ld s1, 136(sp) # 8-byte Folded Reload
462 ; RV64I-WITH-FP-NEXT:    ld s2, 128(sp) # 8-byte Folded Reload
463 ; RV64I-WITH-FP-NEXT:    ld s3, 120(sp) # 8-byte Folded Reload
464 ; RV64I-WITH-FP-NEXT:    ld s4, 112(sp) # 8-byte Folded Reload
465 ; RV64I-WITH-FP-NEXT:    ld s5, 104(sp) # 8-byte Folded Reload
466 ; RV64I-WITH-FP-NEXT:    ld s6, 96(sp) # 8-byte Folded Reload
467 ; RV64I-WITH-FP-NEXT:    ld s7, 88(sp) # 8-byte Folded Reload
468 ; RV64I-WITH-FP-NEXT:    ld s8, 80(sp) # 8-byte Folded Reload
469 ; RV64I-WITH-FP-NEXT:    ld s9, 72(sp) # 8-byte Folded Reload
470 ; RV64I-WITH-FP-NEXT:    ld s10, 64(sp) # 8-byte Folded Reload
471 ; RV64I-WITH-FP-NEXT:    ld s11, 56(sp) # 8-byte Folded Reload
472 ; RV64I-WITH-FP-NEXT:    addi sp, sp, 160
473 ; RV64I-WITH-FP-NEXT:    ret
474   %val = load [32 x i32], [32 x i32]* @var
475   store volatile [32 x i32] %val, [32 x i32]* @var
476   ret void
479 ; This function tests that RISCVRegisterInfo::getCallPreservedMask returns
480 ; something appropriate.
482 define void @caller() nounwind {
483 ; RV32I-LABEL: caller:
484 ; RV32I:       # %bb.0:
485 ; RV32I-NEXT:    addi sp, sp, -144
486 ; RV32I-NEXT:    sw ra, 140(sp) # 4-byte Folded Spill
487 ; RV32I-NEXT:    sw s0, 136(sp) # 4-byte Folded Spill
488 ; RV32I-NEXT:    sw s1, 132(sp) # 4-byte Folded Spill
489 ; RV32I-NEXT:    sw s2, 128(sp) # 4-byte Folded Spill
490 ; RV32I-NEXT:    sw s3, 124(sp) # 4-byte Folded Spill
491 ; RV32I-NEXT:    sw s4, 120(sp) # 4-byte Folded Spill
492 ; RV32I-NEXT:    sw s5, 116(sp) # 4-byte Folded Spill
493 ; RV32I-NEXT:    sw s6, 112(sp) # 4-byte Folded Spill
494 ; RV32I-NEXT:    sw s7, 108(sp) # 4-byte Folded Spill
495 ; RV32I-NEXT:    sw s8, 104(sp) # 4-byte Folded Spill
496 ; RV32I-NEXT:    sw s9, 100(sp) # 4-byte Folded Spill
497 ; RV32I-NEXT:    sw s10, 96(sp) # 4-byte Folded Spill
498 ; RV32I-NEXT:    sw s11, 92(sp) # 4-byte Folded Spill
499 ; RV32I-NEXT:    lui s0, %hi(var)
500 ; RV32I-NEXT:    lw a0, %lo(var)(s0)
501 ; RV32I-NEXT:    sw a0, 88(sp) # 4-byte Folded Spill
502 ; RV32I-NEXT:    lw a0, %lo(var+4)(s0)
503 ; RV32I-NEXT:    sw a0, 84(sp) # 4-byte Folded Spill
504 ; RV32I-NEXT:    lw a0, %lo(var+8)(s0)
505 ; RV32I-NEXT:    sw a0, 80(sp) # 4-byte Folded Spill
506 ; RV32I-NEXT:    lw a0, %lo(var+12)(s0)
507 ; RV32I-NEXT:    sw a0, 76(sp) # 4-byte Folded Spill
508 ; RV32I-NEXT:    addi s5, s0, %lo(var)
509 ; RV32I-NEXT:    lw a0, 16(s5)
510 ; RV32I-NEXT:    sw a0, 72(sp) # 4-byte Folded Spill
511 ; RV32I-NEXT:    lw a0, 20(s5)
512 ; RV32I-NEXT:    sw a0, 68(sp) # 4-byte Folded Spill
513 ; RV32I-NEXT:    lw a0, 24(s5)
514 ; RV32I-NEXT:    sw a0, 64(sp) # 4-byte Folded Spill
515 ; RV32I-NEXT:    lw a0, 28(s5)
516 ; RV32I-NEXT:    sw a0, 60(sp) # 4-byte Folded Spill
517 ; RV32I-NEXT:    lw a0, 32(s5)
518 ; RV32I-NEXT:    sw a0, 56(sp) # 4-byte Folded Spill
519 ; RV32I-NEXT:    lw a0, 36(s5)
520 ; RV32I-NEXT:    sw a0, 52(sp) # 4-byte Folded Spill
521 ; RV32I-NEXT:    lw a0, 40(s5)
522 ; RV32I-NEXT:    sw a0, 48(sp) # 4-byte Folded Spill
523 ; RV32I-NEXT:    lw a0, 44(s5)
524 ; RV32I-NEXT:    sw a0, 44(sp) # 4-byte Folded Spill
525 ; RV32I-NEXT:    lw a0, 48(s5)
526 ; RV32I-NEXT:    sw a0, 40(sp) # 4-byte Folded Spill
527 ; RV32I-NEXT:    lw a0, 52(s5)
528 ; RV32I-NEXT:    sw a0, 36(sp) # 4-byte Folded Spill
529 ; RV32I-NEXT:    lw a0, 56(s5)
530 ; RV32I-NEXT:    sw a0, 32(sp) # 4-byte Folded Spill
531 ; RV32I-NEXT:    lw a0, 60(s5)
532 ; RV32I-NEXT:    sw a0, 28(sp) # 4-byte Folded Spill
533 ; RV32I-NEXT:    lw a0, 64(s5)
534 ; RV32I-NEXT:    sw a0, 24(sp) # 4-byte Folded Spill
535 ; RV32I-NEXT:    lw a0, 68(s5)
536 ; RV32I-NEXT:    sw a0, 20(sp) # 4-byte Folded Spill
537 ; RV32I-NEXT:    lw a0, 72(s5)
538 ; RV32I-NEXT:    sw a0, 16(sp) # 4-byte Folded Spill
539 ; RV32I-NEXT:    lw a0, 76(s5)
540 ; RV32I-NEXT:    sw a0, 12(sp) # 4-byte Folded Spill
541 ; RV32I-NEXT:    lw a0, 80(s5)
542 ; RV32I-NEXT:    sw a0, 8(sp) # 4-byte Folded Spill
543 ; RV32I-NEXT:    lw a0, 84(s5)
544 ; RV32I-NEXT:    sw a0, 4(sp) # 4-byte Folded Spill
545 ; RV32I-NEXT:    lw s3, 88(s5)
546 ; RV32I-NEXT:    lw s4, 92(s5)
547 ; RV32I-NEXT:    lw s6, 96(s5)
548 ; RV32I-NEXT:    lw s7, 100(s5)
549 ; RV32I-NEXT:    lw s8, 104(s5)
550 ; RV32I-NEXT:    lw s9, 108(s5)
551 ; RV32I-NEXT:    lw s10, 112(s5)
552 ; RV32I-NEXT:    lw s11, 116(s5)
553 ; RV32I-NEXT:    lw s1, 120(s5)
554 ; RV32I-NEXT:    lw s2, 124(s5)
555 ; RV32I-NEXT:    call callee@plt
556 ; RV32I-NEXT:    sw s2, 124(s5)
557 ; RV32I-NEXT:    sw s1, 120(s5)
558 ; RV32I-NEXT:    sw s11, 116(s5)
559 ; RV32I-NEXT:    sw s10, 112(s5)
560 ; RV32I-NEXT:    sw s9, 108(s5)
561 ; RV32I-NEXT:    sw s8, 104(s5)
562 ; RV32I-NEXT:    sw s7, 100(s5)
563 ; RV32I-NEXT:    sw s6, 96(s5)
564 ; RV32I-NEXT:    sw s4, 92(s5)
565 ; RV32I-NEXT:    sw s3, 88(s5)
566 ; RV32I-NEXT:    lw a0, 4(sp) # 4-byte Folded Reload
567 ; RV32I-NEXT:    sw a0, 84(s5)
568 ; RV32I-NEXT:    lw a0, 8(sp) # 4-byte Folded Reload
569 ; RV32I-NEXT:    sw a0, 80(s5)
570 ; RV32I-NEXT:    lw a0, 12(sp) # 4-byte Folded Reload
571 ; RV32I-NEXT:    sw a0, 76(s5)
572 ; RV32I-NEXT:    lw a0, 16(sp) # 4-byte Folded Reload
573 ; RV32I-NEXT:    sw a0, 72(s5)
574 ; RV32I-NEXT:    lw a0, 20(sp) # 4-byte Folded Reload
575 ; RV32I-NEXT:    sw a0, 68(s5)
576 ; RV32I-NEXT:    lw a0, 24(sp) # 4-byte Folded Reload
577 ; RV32I-NEXT:    sw a0, 64(s5)
578 ; RV32I-NEXT:    lw a0, 28(sp) # 4-byte Folded Reload
579 ; RV32I-NEXT:    sw a0, 60(s5)
580 ; RV32I-NEXT:    lw a0, 32(sp) # 4-byte Folded Reload
581 ; RV32I-NEXT:    sw a0, 56(s5)
582 ; RV32I-NEXT:    lw a0, 36(sp) # 4-byte Folded Reload
583 ; RV32I-NEXT:    sw a0, 52(s5)
584 ; RV32I-NEXT:    lw a0, 40(sp) # 4-byte Folded Reload
585 ; RV32I-NEXT:    sw a0, 48(s5)
586 ; RV32I-NEXT:    lw a0, 44(sp) # 4-byte Folded Reload
587 ; RV32I-NEXT:    sw a0, 44(s5)
588 ; RV32I-NEXT:    lw a0, 48(sp) # 4-byte Folded Reload
589 ; RV32I-NEXT:    sw a0, 40(s5)
590 ; RV32I-NEXT:    lw a0, 52(sp) # 4-byte Folded Reload
591 ; RV32I-NEXT:    sw a0, 36(s5)
592 ; RV32I-NEXT:    lw a0, 56(sp) # 4-byte Folded Reload
593 ; RV32I-NEXT:    sw a0, 32(s5)
594 ; RV32I-NEXT:    lw a0, 60(sp) # 4-byte Folded Reload
595 ; RV32I-NEXT:    sw a0, 28(s5)
596 ; RV32I-NEXT:    lw a0, 64(sp) # 4-byte Folded Reload
597 ; RV32I-NEXT:    sw a0, 24(s5)
598 ; RV32I-NEXT:    lw a0, 68(sp) # 4-byte Folded Reload
599 ; RV32I-NEXT:    sw a0, 20(s5)
600 ; RV32I-NEXT:    lw a0, 72(sp) # 4-byte Folded Reload
601 ; RV32I-NEXT:    sw a0, 16(s5)
602 ; RV32I-NEXT:    lw a0, 76(sp) # 4-byte Folded Reload
603 ; RV32I-NEXT:    sw a0, %lo(var+12)(s0)
604 ; RV32I-NEXT:    lw a0, 80(sp) # 4-byte Folded Reload
605 ; RV32I-NEXT:    sw a0, %lo(var+8)(s0)
606 ; RV32I-NEXT:    lw a0, 84(sp) # 4-byte Folded Reload
607 ; RV32I-NEXT:    sw a0, %lo(var+4)(s0)
608 ; RV32I-NEXT:    lw a0, 88(sp) # 4-byte Folded Reload
609 ; RV32I-NEXT:    sw a0, %lo(var)(s0)
610 ; RV32I-NEXT:    lw ra, 140(sp) # 4-byte Folded Reload
611 ; RV32I-NEXT:    lw s0, 136(sp) # 4-byte Folded Reload
612 ; RV32I-NEXT:    lw s1, 132(sp) # 4-byte Folded Reload
613 ; RV32I-NEXT:    lw s2, 128(sp) # 4-byte Folded Reload
614 ; RV32I-NEXT:    lw s3, 124(sp) # 4-byte Folded Reload
615 ; RV32I-NEXT:    lw s4, 120(sp) # 4-byte Folded Reload
616 ; RV32I-NEXT:    lw s5, 116(sp) # 4-byte Folded Reload
617 ; RV32I-NEXT:    lw s6, 112(sp) # 4-byte Folded Reload
618 ; RV32I-NEXT:    lw s7, 108(sp) # 4-byte Folded Reload
619 ; RV32I-NEXT:    lw s8, 104(sp) # 4-byte Folded Reload
620 ; RV32I-NEXT:    lw s9, 100(sp) # 4-byte Folded Reload
621 ; RV32I-NEXT:    lw s10, 96(sp) # 4-byte Folded Reload
622 ; RV32I-NEXT:    lw s11, 92(sp) # 4-byte Folded Reload
623 ; RV32I-NEXT:    addi sp, sp, 144
624 ; RV32I-NEXT:    ret
626 ; RV32I-WITH-FP-LABEL: caller:
627 ; RV32I-WITH-FP:       # %bb.0:
628 ; RV32I-WITH-FP-NEXT:    addi sp, sp, -144
629 ; RV32I-WITH-FP-NEXT:    sw ra, 140(sp) # 4-byte Folded Spill
630 ; RV32I-WITH-FP-NEXT:    sw s0, 136(sp) # 4-byte Folded Spill
631 ; RV32I-WITH-FP-NEXT:    sw s1, 132(sp) # 4-byte Folded Spill
632 ; RV32I-WITH-FP-NEXT:    sw s2, 128(sp) # 4-byte Folded Spill
633 ; RV32I-WITH-FP-NEXT:    sw s3, 124(sp) # 4-byte Folded Spill
634 ; RV32I-WITH-FP-NEXT:    sw s4, 120(sp) # 4-byte Folded Spill
635 ; RV32I-WITH-FP-NEXT:    sw s5, 116(sp) # 4-byte Folded Spill
636 ; RV32I-WITH-FP-NEXT:    sw s6, 112(sp) # 4-byte Folded Spill
637 ; RV32I-WITH-FP-NEXT:    sw s7, 108(sp) # 4-byte Folded Spill
638 ; RV32I-WITH-FP-NEXT:    sw s8, 104(sp) # 4-byte Folded Spill
639 ; RV32I-WITH-FP-NEXT:    sw s9, 100(sp) # 4-byte Folded Spill
640 ; RV32I-WITH-FP-NEXT:    sw s10, 96(sp) # 4-byte Folded Spill
641 ; RV32I-WITH-FP-NEXT:    sw s11, 92(sp) # 4-byte Folded Spill
642 ; RV32I-WITH-FP-NEXT:    addi s0, sp, 144
643 ; RV32I-WITH-FP-NEXT:    lui s1, %hi(var)
644 ; RV32I-WITH-FP-NEXT:    lw a0, %lo(var)(s1)
645 ; RV32I-WITH-FP-NEXT:    sw a0, -56(s0) # 4-byte Folded Spill
646 ; RV32I-WITH-FP-NEXT:    lw a0, %lo(var+4)(s1)
647 ; RV32I-WITH-FP-NEXT:    sw a0, -60(s0) # 4-byte Folded Spill
648 ; RV32I-WITH-FP-NEXT:    lw a0, %lo(var+8)(s1)
649 ; RV32I-WITH-FP-NEXT:    sw a0, -64(s0) # 4-byte Folded Spill
650 ; RV32I-WITH-FP-NEXT:    lw a0, %lo(var+12)(s1)
651 ; RV32I-WITH-FP-NEXT:    sw a0, -68(s0) # 4-byte Folded Spill
652 ; RV32I-WITH-FP-NEXT:    addi s6, s1, %lo(var)
653 ; RV32I-WITH-FP-NEXT:    lw a0, 16(s6)
654 ; RV32I-WITH-FP-NEXT:    sw a0, -72(s0) # 4-byte Folded Spill
655 ; RV32I-WITH-FP-NEXT:    lw a0, 20(s6)
656 ; RV32I-WITH-FP-NEXT:    sw a0, -76(s0) # 4-byte Folded Spill
657 ; RV32I-WITH-FP-NEXT:    lw a0, 24(s6)
658 ; RV32I-WITH-FP-NEXT:    sw a0, -80(s0) # 4-byte Folded Spill
659 ; RV32I-WITH-FP-NEXT:    lw a0, 28(s6)
660 ; RV32I-WITH-FP-NEXT:    sw a0, -84(s0) # 4-byte Folded Spill
661 ; RV32I-WITH-FP-NEXT:    lw a0, 32(s6)
662 ; RV32I-WITH-FP-NEXT:    sw a0, -88(s0) # 4-byte Folded Spill
663 ; RV32I-WITH-FP-NEXT:    lw a0, 36(s6)
664 ; RV32I-WITH-FP-NEXT:    sw a0, -92(s0) # 4-byte Folded Spill
665 ; RV32I-WITH-FP-NEXT:    lw a0, 40(s6)
666 ; RV32I-WITH-FP-NEXT:    sw a0, -96(s0) # 4-byte Folded Spill
667 ; RV32I-WITH-FP-NEXT:    lw a0, 44(s6)
668 ; RV32I-WITH-FP-NEXT:    sw a0, -100(s0) # 4-byte Folded Spill
669 ; RV32I-WITH-FP-NEXT:    lw a0, 48(s6)
670 ; RV32I-WITH-FP-NEXT:    sw a0, -104(s0) # 4-byte Folded Spill
671 ; RV32I-WITH-FP-NEXT:    lw a0, 52(s6)
672 ; RV32I-WITH-FP-NEXT:    sw a0, -108(s0) # 4-byte Folded Spill
673 ; RV32I-WITH-FP-NEXT:    lw a0, 56(s6)
674 ; RV32I-WITH-FP-NEXT:    sw a0, -112(s0) # 4-byte Folded Spill
675 ; RV32I-WITH-FP-NEXT:    lw a0, 60(s6)
676 ; RV32I-WITH-FP-NEXT:    sw a0, -116(s0) # 4-byte Folded Spill
677 ; RV32I-WITH-FP-NEXT:    lw a0, 64(s6)
678 ; RV32I-WITH-FP-NEXT:    sw a0, -120(s0) # 4-byte Folded Spill
679 ; RV32I-WITH-FP-NEXT:    lw a0, 68(s6)
680 ; RV32I-WITH-FP-NEXT:    sw a0, -124(s0) # 4-byte Folded Spill
681 ; RV32I-WITH-FP-NEXT:    lw a0, 72(s6)
682 ; RV32I-WITH-FP-NEXT:    sw a0, -128(s0) # 4-byte Folded Spill
683 ; RV32I-WITH-FP-NEXT:    lw a0, 76(s6)
684 ; RV32I-WITH-FP-NEXT:    sw a0, -132(s0) # 4-byte Folded Spill
685 ; RV32I-WITH-FP-NEXT:    lw a0, 80(s6)
686 ; RV32I-WITH-FP-NEXT:    sw a0, -136(s0) # 4-byte Folded Spill
687 ; RV32I-WITH-FP-NEXT:    lw a0, 84(s6)
688 ; RV32I-WITH-FP-NEXT:    sw a0, -140(s0) # 4-byte Folded Spill
689 ; RV32I-WITH-FP-NEXT:    lw a0, 88(s6)
690 ; RV32I-WITH-FP-NEXT:    sw a0, -144(s0) # 4-byte Folded Spill
691 ; RV32I-WITH-FP-NEXT:    lw s8, 92(s6)
692 ; RV32I-WITH-FP-NEXT:    lw s9, 96(s6)
693 ; RV32I-WITH-FP-NEXT:    lw s10, 100(s6)
694 ; RV32I-WITH-FP-NEXT:    lw s11, 104(s6)
695 ; RV32I-WITH-FP-NEXT:    lw s2, 108(s6)
696 ; RV32I-WITH-FP-NEXT:    lw s3, 112(s6)
697 ; RV32I-WITH-FP-NEXT:    lw s4, 116(s6)
698 ; RV32I-WITH-FP-NEXT:    lw s5, 120(s6)
699 ; RV32I-WITH-FP-NEXT:    lw s7, 124(s6)
700 ; RV32I-WITH-FP-NEXT:    call callee@plt
701 ; RV32I-WITH-FP-NEXT:    sw s7, 124(s6)
702 ; RV32I-WITH-FP-NEXT:    sw s5, 120(s6)
703 ; RV32I-WITH-FP-NEXT:    sw s4, 116(s6)
704 ; RV32I-WITH-FP-NEXT:    sw s3, 112(s6)
705 ; RV32I-WITH-FP-NEXT:    sw s2, 108(s6)
706 ; RV32I-WITH-FP-NEXT:    sw s11, 104(s6)
707 ; RV32I-WITH-FP-NEXT:    sw s10, 100(s6)
708 ; RV32I-WITH-FP-NEXT:    sw s9, 96(s6)
709 ; RV32I-WITH-FP-NEXT:    sw s8, 92(s6)
710 ; RV32I-WITH-FP-NEXT:    lw a0, -144(s0) # 4-byte Folded Reload
711 ; RV32I-WITH-FP-NEXT:    sw a0, 88(s6)
712 ; RV32I-WITH-FP-NEXT:    lw a0, -140(s0) # 4-byte Folded Reload
713 ; RV32I-WITH-FP-NEXT:    sw a0, 84(s6)
714 ; RV32I-WITH-FP-NEXT:    lw a0, -136(s0) # 4-byte Folded Reload
715 ; RV32I-WITH-FP-NEXT:    sw a0, 80(s6)
716 ; RV32I-WITH-FP-NEXT:    lw a0, -132(s0) # 4-byte Folded Reload
717 ; RV32I-WITH-FP-NEXT:    sw a0, 76(s6)
718 ; RV32I-WITH-FP-NEXT:    lw a0, -128(s0) # 4-byte Folded Reload
719 ; RV32I-WITH-FP-NEXT:    sw a0, 72(s6)
720 ; RV32I-WITH-FP-NEXT:    lw a0, -124(s0) # 4-byte Folded Reload
721 ; RV32I-WITH-FP-NEXT:    sw a0, 68(s6)
722 ; RV32I-WITH-FP-NEXT:    lw a0, -120(s0) # 4-byte Folded Reload
723 ; RV32I-WITH-FP-NEXT:    sw a0, 64(s6)
724 ; RV32I-WITH-FP-NEXT:    lw a0, -116(s0) # 4-byte Folded Reload
725 ; RV32I-WITH-FP-NEXT:    sw a0, 60(s6)
726 ; RV32I-WITH-FP-NEXT:    lw a0, -112(s0) # 4-byte Folded Reload
727 ; RV32I-WITH-FP-NEXT:    sw a0, 56(s6)
728 ; RV32I-WITH-FP-NEXT:    lw a0, -108(s0) # 4-byte Folded Reload
729 ; RV32I-WITH-FP-NEXT:    sw a0, 52(s6)
730 ; RV32I-WITH-FP-NEXT:    lw a0, -104(s0) # 4-byte Folded Reload
731 ; RV32I-WITH-FP-NEXT:    sw a0, 48(s6)
732 ; RV32I-WITH-FP-NEXT:    lw a0, -100(s0) # 4-byte Folded Reload
733 ; RV32I-WITH-FP-NEXT:    sw a0, 44(s6)
734 ; RV32I-WITH-FP-NEXT:    lw a0, -96(s0) # 4-byte Folded Reload
735 ; RV32I-WITH-FP-NEXT:    sw a0, 40(s6)
736 ; RV32I-WITH-FP-NEXT:    lw a0, -92(s0) # 4-byte Folded Reload
737 ; RV32I-WITH-FP-NEXT:    sw a0, 36(s6)
738 ; RV32I-WITH-FP-NEXT:    lw a0, -88(s0) # 4-byte Folded Reload
739 ; RV32I-WITH-FP-NEXT:    sw a0, 32(s6)
740 ; RV32I-WITH-FP-NEXT:    lw a0, -84(s0) # 4-byte Folded Reload
741 ; RV32I-WITH-FP-NEXT:    sw a0, 28(s6)
742 ; RV32I-WITH-FP-NEXT:    lw a0, -80(s0) # 4-byte Folded Reload
743 ; RV32I-WITH-FP-NEXT:    sw a0, 24(s6)
744 ; RV32I-WITH-FP-NEXT:    lw a0, -76(s0) # 4-byte Folded Reload
745 ; RV32I-WITH-FP-NEXT:    sw a0, 20(s6)
746 ; RV32I-WITH-FP-NEXT:    lw a0, -72(s0) # 4-byte Folded Reload
747 ; RV32I-WITH-FP-NEXT:    sw a0, 16(s6)
748 ; RV32I-WITH-FP-NEXT:    lw a0, -68(s0) # 4-byte Folded Reload
749 ; RV32I-WITH-FP-NEXT:    sw a0, %lo(var+12)(s1)
750 ; RV32I-WITH-FP-NEXT:    lw a0, -64(s0) # 4-byte Folded Reload
751 ; RV32I-WITH-FP-NEXT:    sw a0, %lo(var+8)(s1)
752 ; RV32I-WITH-FP-NEXT:    lw a0, -60(s0) # 4-byte Folded Reload
753 ; RV32I-WITH-FP-NEXT:    sw a0, %lo(var+4)(s1)
754 ; RV32I-WITH-FP-NEXT:    lw a0, -56(s0) # 4-byte Folded Reload
755 ; RV32I-WITH-FP-NEXT:    sw a0, %lo(var)(s1)
756 ; RV32I-WITH-FP-NEXT:    lw ra, 140(sp) # 4-byte Folded Reload
757 ; RV32I-WITH-FP-NEXT:    lw s0, 136(sp) # 4-byte Folded Reload
758 ; RV32I-WITH-FP-NEXT:    lw s1, 132(sp) # 4-byte Folded Reload
759 ; RV32I-WITH-FP-NEXT:    lw s2, 128(sp) # 4-byte Folded Reload
760 ; RV32I-WITH-FP-NEXT:    lw s3, 124(sp) # 4-byte Folded Reload
761 ; RV32I-WITH-FP-NEXT:    lw s4, 120(sp) # 4-byte Folded Reload
762 ; RV32I-WITH-FP-NEXT:    lw s5, 116(sp) # 4-byte Folded Reload
763 ; RV32I-WITH-FP-NEXT:    lw s6, 112(sp) # 4-byte Folded Reload
764 ; RV32I-WITH-FP-NEXT:    lw s7, 108(sp) # 4-byte Folded Reload
765 ; RV32I-WITH-FP-NEXT:    lw s8, 104(sp) # 4-byte Folded Reload
766 ; RV32I-WITH-FP-NEXT:    lw s9, 100(sp) # 4-byte Folded Reload
767 ; RV32I-WITH-FP-NEXT:    lw s10, 96(sp) # 4-byte Folded Reload
768 ; RV32I-WITH-FP-NEXT:    lw s11, 92(sp) # 4-byte Folded Reload
769 ; RV32I-WITH-FP-NEXT:    addi sp, sp, 144
770 ; RV32I-WITH-FP-NEXT:    ret
772 ; RV64I-LABEL: caller:
773 ; RV64I:       # %bb.0:
774 ; RV64I-NEXT:    addi sp, sp, -288
775 ; RV64I-NEXT:    sd ra, 280(sp) # 8-byte Folded Spill
776 ; RV64I-NEXT:    sd s0, 272(sp) # 8-byte Folded Spill
777 ; RV64I-NEXT:    sd s1, 264(sp) # 8-byte Folded Spill
778 ; RV64I-NEXT:    sd s2, 256(sp) # 8-byte Folded Spill
779 ; RV64I-NEXT:    sd s3, 248(sp) # 8-byte Folded Spill
780 ; RV64I-NEXT:    sd s4, 240(sp) # 8-byte Folded Spill
781 ; RV64I-NEXT:    sd s5, 232(sp) # 8-byte Folded Spill
782 ; RV64I-NEXT:    sd s6, 224(sp) # 8-byte Folded Spill
783 ; RV64I-NEXT:    sd s7, 216(sp) # 8-byte Folded Spill
784 ; RV64I-NEXT:    sd s8, 208(sp) # 8-byte Folded Spill
785 ; RV64I-NEXT:    sd s9, 200(sp) # 8-byte Folded Spill
786 ; RV64I-NEXT:    sd s10, 192(sp) # 8-byte Folded Spill
787 ; RV64I-NEXT:    sd s11, 184(sp) # 8-byte Folded Spill
788 ; RV64I-NEXT:    lui s0, %hi(var)
789 ; RV64I-NEXT:    lw a0, %lo(var)(s0)
790 ; RV64I-NEXT:    sd a0, 176(sp) # 8-byte Folded Spill
791 ; RV64I-NEXT:    lw a0, %lo(var+4)(s0)
792 ; RV64I-NEXT:    sd a0, 168(sp) # 8-byte Folded Spill
793 ; RV64I-NEXT:    lw a0, %lo(var+8)(s0)
794 ; RV64I-NEXT:    sd a0, 160(sp) # 8-byte Folded Spill
795 ; RV64I-NEXT:    lw a0, %lo(var+12)(s0)
796 ; RV64I-NEXT:    sd a0, 152(sp) # 8-byte Folded Spill
797 ; RV64I-NEXT:    addi s5, s0, %lo(var)
798 ; RV64I-NEXT:    lw a0, 16(s5)
799 ; RV64I-NEXT:    sd a0, 144(sp) # 8-byte Folded Spill
800 ; RV64I-NEXT:    lw a0, 20(s5)
801 ; RV64I-NEXT:    sd a0, 136(sp) # 8-byte Folded Spill
802 ; RV64I-NEXT:    lw a0, 24(s5)
803 ; RV64I-NEXT:    sd a0, 128(sp) # 8-byte Folded Spill
804 ; RV64I-NEXT:    lw a0, 28(s5)
805 ; RV64I-NEXT:    sd a0, 120(sp) # 8-byte Folded Spill
806 ; RV64I-NEXT:    lw a0, 32(s5)
807 ; RV64I-NEXT:    sd a0, 112(sp) # 8-byte Folded Spill
808 ; RV64I-NEXT:    lw a0, 36(s5)
809 ; RV64I-NEXT:    sd a0, 104(sp) # 8-byte Folded Spill
810 ; RV64I-NEXT:    lw a0, 40(s5)
811 ; RV64I-NEXT:    sd a0, 96(sp) # 8-byte Folded Spill
812 ; RV64I-NEXT:    lw a0, 44(s5)
813 ; RV64I-NEXT:    sd a0, 88(sp) # 8-byte Folded Spill
814 ; RV64I-NEXT:    lw a0, 48(s5)
815 ; RV64I-NEXT:    sd a0, 80(sp) # 8-byte Folded Spill
816 ; RV64I-NEXT:    lw a0, 52(s5)
817 ; RV64I-NEXT:    sd a0, 72(sp) # 8-byte Folded Spill
818 ; RV64I-NEXT:    lw a0, 56(s5)
819 ; RV64I-NEXT:    sd a0, 64(sp) # 8-byte Folded Spill
820 ; RV64I-NEXT:    lw a0, 60(s5)
821 ; RV64I-NEXT:    sd a0, 56(sp) # 8-byte Folded Spill
822 ; RV64I-NEXT:    lw a0, 64(s5)
823 ; RV64I-NEXT:    sd a0, 48(sp) # 8-byte Folded Spill
824 ; RV64I-NEXT:    lw a0, 68(s5)
825 ; RV64I-NEXT:    sd a0, 40(sp) # 8-byte Folded Spill
826 ; RV64I-NEXT:    lw a0, 72(s5)
827 ; RV64I-NEXT:    sd a0, 32(sp) # 8-byte Folded Spill
828 ; RV64I-NEXT:    lw a0, 76(s5)
829 ; RV64I-NEXT:    sd a0, 24(sp) # 8-byte Folded Spill
830 ; RV64I-NEXT:    lw a0, 80(s5)
831 ; RV64I-NEXT:    sd a0, 16(sp) # 8-byte Folded Spill
832 ; RV64I-NEXT:    lw a0, 84(s5)
833 ; RV64I-NEXT:    sd a0, 8(sp) # 8-byte Folded Spill
834 ; RV64I-NEXT:    lw s3, 88(s5)
835 ; RV64I-NEXT:    lw s4, 92(s5)
836 ; RV64I-NEXT:    lw s6, 96(s5)
837 ; RV64I-NEXT:    lw s7, 100(s5)
838 ; RV64I-NEXT:    lw s8, 104(s5)
839 ; RV64I-NEXT:    lw s9, 108(s5)
840 ; RV64I-NEXT:    lw s10, 112(s5)
841 ; RV64I-NEXT:    lw s11, 116(s5)
842 ; RV64I-NEXT:    lw s1, 120(s5)
843 ; RV64I-NEXT:    lw s2, 124(s5)
844 ; RV64I-NEXT:    call callee@plt
845 ; RV64I-NEXT:    sw s2, 124(s5)
846 ; RV64I-NEXT:    sw s1, 120(s5)
847 ; RV64I-NEXT:    sw s11, 116(s5)
848 ; RV64I-NEXT:    sw s10, 112(s5)
849 ; RV64I-NEXT:    sw s9, 108(s5)
850 ; RV64I-NEXT:    sw s8, 104(s5)
851 ; RV64I-NEXT:    sw s7, 100(s5)
852 ; RV64I-NEXT:    sw s6, 96(s5)
853 ; RV64I-NEXT:    sw s4, 92(s5)
854 ; RV64I-NEXT:    sw s3, 88(s5)
855 ; RV64I-NEXT:    ld a0, 8(sp) # 8-byte Folded Reload
856 ; RV64I-NEXT:    sw a0, 84(s5)
857 ; RV64I-NEXT:    ld a0, 16(sp) # 8-byte Folded Reload
858 ; RV64I-NEXT:    sw a0, 80(s5)
859 ; RV64I-NEXT:    ld a0, 24(sp) # 8-byte Folded Reload
860 ; RV64I-NEXT:    sw a0, 76(s5)
861 ; RV64I-NEXT:    ld a0, 32(sp) # 8-byte Folded Reload
862 ; RV64I-NEXT:    sw a0, 72(s5)
863 ; RV64I-NEXT:    ld a0, 40(sp) # 8-byte Folded Reload
864 ; RV64I-NEXT:    sw a0, 68(s5)
865 ; RV64I-NEXT:    ld a0, 48(sp) # 8-byte Folded Reload
866 ; RV64I-NEXT:    sw a0, 64(s5)
867 ; RV64I-NEXT:    ld a0, 56(sp) # 8-byte Folded Reload
868 ; RV64I-NEXT:    sw a0, 60(s5)
869 ; RV64I-NEXT:    ld a0, 64(sp) # 8-byte Folded Reload
870 ; RV64I-NEXT:    sw a0, 56(s5)
871 ; RV64I-NEXT:    ld a0, 72(sp) # 8-byte Folded Reload
872 ; RV64I-NEXT:    sw a0, 52(s5)
873 ; RV64I-NEXT:    ld a0, 80(sp) # 8-byte Folded Reload
874 ; RV64I-NEXT:    sw a0, 48(s5)
875 ; RV64I-NEXT:    ld a0, 88(sp) # 8-byte Folded Reload
876 ; RV64I-NEXT:    sw a0, 44(s5)
877 ; RV64I-NEXT:    ld a0, 96(sp) # 8-byte Folded Reload
878 ; RV64I-NEXT:    sw a0, 40(s5)
879 ; RV64I-NEXT:    ld a0, 104(sp) # 8-byte Folded Reload
880 ; RV64I-NEXT:    sw a0, 36(s5)
881 ; RV64I-NEXT:    ld a0, 112(sp) # 8-byte Folded Reload
882 ; RV64I-NEXT:    sw a0, 32(s5)
883 ; RV64I-NEXT:    ld a0, 120(sp) # 8-byte Folded Reload
884 ; RV64I-NEXT:    sw a0, 28(s5)
885 ; RV64I-NEXT:    ld a0, 128(sp) # 8-byte Folded Reload
886 ; RV64I-NEXT:    sw a0, 24(s5)
887 ; RV64I-NEXT:    ld a0, 136(sp) # 8-byte Folded Reload
888 ; RV64I-NEXT:    sw a0, 20(s5)
889 ; RV64I-NEXT:    ld a0, 144(sp) # 8-byte Folded Reload
890 ; RV64I-NEXT:    sw a0, 16(s5)
891 ; RV64I-NEXT:    ld a0, 152(sp) # 8-byte Folded Reload
892 ; RV64I-NEXT:    sw a0, %lo(var+12)(s0)
893 ; RV64I-NEXT:    ld a0, 160(sp) # 8-byte Folded Reload
894 ; RV64I-NEXT:    sw a0, %lo(var+8)(s0)
895 ; RV64I-NEXT:    ld a0, 168(sp) # 8-byte Folded Reload
896 ; RV64I-NEXT:    sw a0, %lo(var+4)(s0)
897 ; RV64I-NEXT:    ld a0, 176(sp) # 8-byte Folded Reload
898 ; RV64I-NEXT:    sw a0, %lo(var)(s0)
899 ; RV64I-NEXT:    ld ra, 280(sp) # 8-byte Folded Reload
900 ; RV64I-NEXT:    ld s0, 272(sp) # 8-byte Folded Reload
901 ; RV64I-NEXT:    ld s1, 264(sp) # 8-byte Folded Reload
902 ; RV64I-NEXT:    ld s2, 256(sp) # 8-byte Folded Reload
903 ; RV64I-NEXT:    ld s3, 248(sp) # 8-byte Folded Reload
904 ; RV64I-NEXT:    ld s4, 240(sp) # 8-byte Folded Reload
905 ; RV64I-NEXT:    ld s5, 232(sp) # 8-byte Folded Reload
906 ; RV64I-NEXT:    ld s6, 224(sp) # 8-byte Folded Reload
907 ; RV64I-NEXT:    ld s7, 216(sp) # 8-byte Folded Reload
908 ; RV64I-NEXT:    ld s8, 208(sp) # 8-byte Folded Reload
909 ; RV64I-NEXT:    ld s9, 200(sp) # 8-byte Folded Reload
910 ; RV64I-NEXT:    ld s10, 192(sp) # 8-byte Folded Reload
911 ; RV64I-NEXT:    ld s11, 184(sp) # 8-byte Folded Reload
912 ; RV64I-NEXT:    addi sp, sp, 288
913 ; RV64I-NEXT:    ret
915 ; RV64I-WITH-FP-LABEL: caller:
916 ; RV64I-WITH-FP:       # %bb.0:
917 ; RV64I-WITH-FP-NEXT:    addi sp, sp, -288
918 ; RV64I-WITH-FP-NEXT:    sd ra, 280(sp) # 8-byte Folded Spill
919 ; RV64I-WITH-FP-NEXT:    sd s0, 272(sp) # 8-byte Folded Spill
920 ; RV64I-WITH-FP-NEXT:    sd s1, 264(sp) # 8-byte Folded Spill
921 ; RV64I-WITH-FP-NEXT:    sd s2, 256(sp) # 8-byte Folded Spill
922 ; RV64I-WITH-FP-NEXT:    sd s3, 248(sp) # 8-byte Folded Spill
923 ; RV64I-WITH-FP-NEXT:    sd s4, 240(sp) # 8-byte Folded Spill
924 ; RV64I-WITH-FP-NEXT:    sd s5, 232(sp) # 8-byte Folded Spill
925 ; RV64I-WITH-FP-NEXT:    sd s6, 224(sp) # 8-byte Folded Spill
926 ; RV64I-WITH-FP-NEXT:    sd s7, 216(sp) # 8-byte Folded Spill
927 ; RV64I-WITH-FP-NEXT:    sd s8, 208(sp) # 8-byte Folded Spill
928 ; RV64I-WITH-FP-NEXT:    sd s9, 200(sp) # 8-byte Folded Spill
929 ; RV64I-WITH-FP-NEXT:    sd s10, 192(sp) # 8-byte Folded Spill
930 ; RV64I-WITH-FP-NEXT:    sd s11, 184(sp) # 8-byte Folded Spill
931 ; RV64I-WITH-FP-NEXT:    addi s0, sp, 288
932 ; RV64I-WITH-FP-NEXT:    lui s1, %hi(var)
933 ; RV64I-WITH-FP-NEXT:    lw a0, %lo(var)(s1)
934 ; RV64I-WITH-FP-NEXT:    sd a0, -112(s0) # 8-byte Folded Spill
935 ; RV64I-WITH-FP-NEXT:    lw a0, %lo(var+4)(s1)
936 ; RV64I-WITH-FP-NEXT:    sd a0, -120(s0) # 8-byte Folded Spill
937 ; RV64I-WITH-FP-NEXT:    lw a0, %lo(var+8)(s1)
938 ; RV64I-WITH-FP-NEXT:    sd a0, -128(s0) # 8-byte Folded Spill
939 ; RV64I-WITH-FP-NEXT:    lw a0, %lo(var+12)(s1)
940 ; RV64I-WITH-FP-NEXT:    sd a0, -136(s0) # 8-byte Folded Spill
941 ; RV64I-WITH-FP-NEXT:    addi s6, s1, %lo(var)
942 ; RV64I-WITH-FP-NEXT:    lw a0, 16(s6)
943 ; RV64I-WITH-FP-NEXT:    sd a0, -144(s0) # 8-byte Folded Spill
944 ; RV64I-WITH-FP-NEXT:    lw a0, 20(s6)
945 ; RV64I-WITH-FP-NEXT:    sd a0, -152(s0) # 8-byte Folded Spill
946 ; RV64I-WITH-FP-NEXT:    lw a0, 24(s6)
947 ; RV64I-WITH-FP-NEXT:    sd a0, -160(s0) # 8-byte Folded Spill
948 ; RV64I-WITH-FP-NEXT:    lw a0, 28(s6)
949 ; RV64I-WITH-FP-NEXT:    sd a0, -168(s0) # 8-byte Folded Spill
950 ; RV64I-WITH-FP-NEXT:    lw a0, 32(s6)
951 ; RV64I-WITH-FP-NEXT:    sd a0, -176(s0) # 8-byte Folded Spill
952 ; RV64I-WITH-FP-NEXT:    lw a0, 36(s6)
953 ; RV64I-WITH-FP-NEXT:    sd a0, -184(s0) # 8-byte Folded Spill
954 ; RV64I-WITH-FP-NEXT:    lw a0, 40(s6)
955 ; RV64I-WITH-FP-NEXT:    sd a0, -192(s0) # 8-byte Folded Spill
956 ; RV64I-WITH-FP-NEXT:    lw a0, 44(s6)
957 ; RV64I-WITH-FP-NEXT:    sd a0, -200(s0) # 8-byte Folded Spill
958 ; RV64I-WITH-FP-NEXT:    lw a0, 48(s6)
959 ; RV64I-WITH-FP-NEXT:    sd a0, -208(s0) # 8-byte Folded Spill
960 ; RV64I-WITH-FP-NEXT:    lw a0, 52(s6)
961 ; RV64I-WITH-FP-NEXT:    sd a0, -216(s0) # 8-byte Folded Spill
962 ; RV64I-WITH-FP-NEXT:    lw a0, 56(s6)
963 ; RV64I-WITH-FP-NEXT:    sd a0, -224(s0) # 8-byte Folded Spill
964 ; RV64I-WITH-FP-NEXT:    lw a0, 60(s6)
965 ; RV64I-WITH-FP-NEXT:    sd a0, -232(s0) # 8-byte Folded Spill
966 ; RV64I-WITH-FP-NEXT:    lw a0, 64(s6)
967 ; RV64I-WITH-FP-NEXT:    sd a0, -240(s0) # 8-byte Folded Spill
968 ; RV64I-WITH-FP-NEXT:    lw a0, 68(s6)
969 ; RV64I-WITH-FP-NEXT:    sd a0, -248(s0) # 8-byte Folded Spill
970 ; RV64I-WITH-FP-NEXT:    lw a0, 72(s6)
971 ; RV64I-WITH-FP-NEXT:    sd a0, -256(s0) # 8-byte Folded Spill
972 ; RV64I-WITH-FP-NEXT:    lw a0, 76(s6)
973 ; RV64I-WITH-FP-NEXT:    sd a0, -264(s0) # 8-byte Folded Spill
974 ; RV64I-WITH-FP-NEXT:    lw a0, 80(s6)
975 ; RV64I-WITH-FP-NEXT:    sd a0, -272(s0) # 8-byte Folded Spill
976 ; RV64I-WITH-FP-NEXT:    lw a0, 84(s6)
977 ; RV64I-WITH-FP-NEXT:    sd a0, -280(s0) # 8-byte Folded Spill
978 ; RV64I-WITH-FP-NEXT:    lw a0, 88(s6)
979 ; RV64I-WITH-FP-NEXT:    sd a0, -288(s0) # 8-byte Folded Spill
980 ; RV64I-WITH-FP-NEXT:    lw s8, 92(s6)
981 ; RV64I-WITH-FP-NEXT:    lw s9, 96(s6)
982 ; RV64I-WITH-FP-NEXT:    lw s10, 100(s6)
983 ; RV64I-WITH-FP-NEXT:    lw s11, 104(s6)
984 ; RV64I-WITH-FP-NEXT:    lw s2, 108(s6)
985 ; RV64I-WITH-FP-NEXT:    lw s3, 112(s6)
986 ; RV64I-WITH-FP-NEXT:    lw s4, 116(s6)
987 ; RV64I-WITH-FP-NEXT:    lw s5, 120(s6)
988 ; RV64I-WITH-FP-NEXT:    lw s7, 124(s6)
989 ; RV64I-WITH-FP-NEXT:    call callee@plt
990 ; RV64I-WITH-FP-NEXT:    sw s7, 124(s6)
991 ; RV64I-WITH-FP-NEXT:    sw s5, 120(s6)
992 ; RV64I-WITH-FP-NEXT:    sw s4, 116(s6)
993 ; RV64I-WITH-FP-NEXT:    sw s3, 112(s6)
994 ; RV64I-WITH-FP-NEXT:    sw s2, 108(s6)
995 ; RV64I-WITH-FP-NEXT:    sw s11, 104(s6)
996 ; RV64I-WITH-FP-NEXT:    sw s10, 100(s6)
997 ; RV64I-WITH-FP-NEXT:    sw s9, 96(s6)
998 ; RV64I-WITH-FP-NEXT:    sw s8, 92(s6)
999 ; RV64I-WITH-FP-NEXT:    ld a0, -288(s0) # 8-byte Folded Reload
1000 ; RV64I-WITH-FP-NEXT:    sw a0, 88(s6)
1001 ; RV64I-WITH-FP-NEXT:    ld a0, -280(s0) # 8-byte Folded Reload
1002 ; RV64I-WITH-FP-NEXT:    sw a0, 84(s6)
1003 ; RV64I-WITH-FP-NEXT:    ld a0, -272(s0) # 8-byte Folded Reload
1004 ; RV64I-WITH-FP-NEXT:    sw a0, 80(s6)
1005 ; RV64I-WITH-FP-NEXT:    ld a0, -264(s0) # 8-byte Folded Reload
1006 ; RV64I-WITH-FP-NEXT:    sw a0, 76(s6)
1007 ; RV64I-WITH-FP-NEXT:    ld a0, -256(s0) # 8-byte Folded Reload
1008 ; RV64I-WITH-FP-NEXT:    sw a0, 72(s6)
1009 ; RV64I-WITH-FP-NEXT:    ld a0, -248(s0) # 8-byte Folded Reload
1010 ; RV64I-WITH-FP-NEXT:    sw a0, 68(s6)
1011 ; RV64I-WITH-FP-NEXT:    ld a0, -240(s0) # 8-byte Folded Reload
1012 ; RV64I-WITH-FP-NEXT:    sw a0, 64(s6)
1013 ; RV64I-WITH-FP-NEXT:    ld a0, -232(s0) # 8-byte Folded Reload
1014 ; RV64I-WITH-FP-NEXT:    sw a0, 60(s6)
1015 ; RV64I-WITH-FP-NEXT:    ld a0, -224(s0) # 8-byte Folded Reload
1016 ; RV64I-WITH-FP-NEXT:    sw a0, 56(s6)
1017 ; RV64I-WITH-FP-NEXT:    ld a0, -216(s0) # 8-byte Folded Reload
1018 ; RV64I-WITH-FP-NEXT:    sw a0, 52(s6)
1019 ; RV64I-WITH-FP-NEXT:    ld a0, -208(s0) # 8-byte Folded Reload
1020 ; RV64I-WITH-FP-NEXT:    sw a0, 48(s6)
1021 ; RV64I-WITH-FP-NEXT:    ld a0, -200(s0) # 8-byte Folded Reload
1022 ; RV64I-WITH-FP-NEXT:    sw a0, 44(s6)
1023 ; RV64I-WITH-FP-NEXT:    ld a0, -192(s0) # 8-byte Folded Reload
1024 ; RV64I-WITH-FP-NEXT:    sw a0, 40(s6)
1025 ; RV64I-WITH-FP-NEXT:    ld a0, -184(s0) # 8-byte Folded Reload
1026 ; RV64I-WITH-FP-NEXT:    sw a0, 36(s6)
1027 ; RV64I-WITH-FP-NEXT:    ld a0, -176(s0) # 8-byte Folded Reload
1028 ; RV64I-WITH-FP-NEXT:    sw a0, 32(s6)
1029 ; RV64I-WITH-FP-NEXT:    ld a0, -168(s0) # 8-byte Folded Reload
1030 ; RV64I-WITH-FP-NEXT:    sw a0, 28(s6)
1031 ; RV64I-WITH-FP-NEXT:    ld a0, -160(s0) # 8-byte Folded Reload
1032 ; RV64I-WITH-FP-NEXT:    sw a0, 24(s6)
1033 ; RV64I-WITH-FP-NEXT:    ld a0, -152(s0) # 8-byte Folded Reload
1034 ; RV64I-WITH-FP-NEXT:    sw a0, 20(s6)
1035 ; RV64I-WITH-FP-NEXT:    ld a0, -144(s0) # 8-byte Folded Reload
1036 ; RV64I-WITH-FP-NEXT:    sw a0, 16(s6)
1037 ; RV64I-WITH-FP-NEXT:    ld a0, -136(s0) # 8-byte Folded Reload
1038 ; RV64I-WITH-FP-NEXT:    sw a0, %lo(var+12)(s1)
1039 ; RV64I-WITH-FP-NEXT:    ld a0, -128(s0) # 8-byte Folded Reload
1040 ; RV64I-WITH-FP-NEXT:    sw a0, %lo(var+8)(s1)
1041 ; RV64I-WITH-FP-NEXT:    ld a0, -120(s0) # 8-byte Folded Reload
1042 ; RV64I-WITH-FP-NEXT:    sw a0, %lo(var+4)(s1)
1043 ; RV64I-WITH-FP-NEXT:    ld a0, -112(s0) # 8-byte Folded Reload
1044 ; RV64I-WITH-FP-NEXT:    sw a0, %lo(var)(s1)
1045 ; RV64I-WITH-FP-NEXT:    ld ra, 280(sp) # 8-byte Folded Reload
1046 ; RV64I-WITH-FP-NEXT:    ld s0, 272(sp) # 8-byte Folded Reload
1047 ; RV64I-WITH-FP-NEXT:    ld s1, 264(sp) # 8-byte Folded Reload
1048 ; RV64I-WITH-FP-NEXT:    ld s2, 256(sp) # 8-byte Folded Reload
1049 ; RV64I-WITH-FP-NEXT:    ld s3, 248(sp) # 8-byte Folded Reload
1050 ; RV64I-WITH-FP-NEXT:    ld s4, 240(sp) # 8-byte Folded Reload
1051 ; RV64I-WITH-FP-NEXT:    ld s5, 232(sp) # 8-byte Folded Reload
1052 ; RV64I-WITH-FP-NEXT:    ld s6, 224(sp) # 8-byte Folded Reload
1053 ; RV64I-WITH-FP-NEXT:    ld s7, 216(sp) # 8-byte Folded Reload
1054 ; RV64I-WITH-FP-NEXT:    ld s8, 208(sp) # 8-byte Folded Reload
1055 ; RV64I-WITH-FP-NEXT:    ld s9, 200(sp) # 8-byte Folded Reload
1056 ; RV64I-WITH-FP-NEXT:    ld s10, 192(sp) # 8-byte Folded Reload
1057 ; RV64I-WITH-FP-NEXT:    ld s11, 184(sp) # 8-byte Folded Reload
1058 ; RV64I-WITH-FP-NEXT:    addi sp, sp, 288
1059 ; RV64I-WITH-FP-NEXT:    ret
1061   %val = load [32 x i32], [32 x i32]* @var
1062   call void @callee()
1063   store volatile [32 x i32] %val, [32 x i32]* @var
1064   ret void