xref: /llvm-project/llvm/test/CodeGen/RISCV/callee-saved-gprs.ll (revision 97982a8c605fac7c86d02e641a6cd7898b3ca343)
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 -target-abi ilp32e -verify-machineinstrs < %s \
5; RUN:   | FileCheck %s -check-prefix=RV32I-ILP32E
6; RUN: llc -mtriple=riscv32 -mattr=+f -target-abi ilp32f -verify-machineinstrs < %s \
7; RUN:   | FileCheck %s -check-prefix=RV32I
8; RUN: llc -mtriple=riscv32 -mattr=+d -target-abi ilp32f -verify-machineinstrs < %s \
9; RUN:   | FileCheck %s -check-prefix=RV32I
10; RUN: llc -mtriple=riscv32 -mattr=+d -target-abi ilp32d -verify-machineinstrs < %s \
11; RUN:   | FileCheck %s -check-prefix=RV32I
12; RUN: llc -mtriple=riscv32 -verify-machineinstrs -frame-pointer=all < %s \
13; RUN:   | FileCheck %s -check-prefix=RV32I-WITH-FP
14; RUN: llc -mtriple=riscv32 -mattr=+zcmp -verify-machineinstrs < %s \
15; RUN: | FileCheck %s -check-prefixes=RV32IZCMP
16; RUN: llc -mtriple=riscv32 -mattr=+zcmp -verify-machineinstrs \
17; RUN:  -frame-pointer=all < %s | FileCheck %s -check-prefixes=RV32IZCMP-WITH-FP
18; RUN: llc -mtriple=riscv64 -verify-machineinstrs < %s \
19; RUN:   | FileCheck %s -check-prefix=RV64I
20; RUN: llc -mtriple=riscv64 -target-abi lp64e -verify-machineinstrs < %s \
21; RUN:   | FileCheck %s -check-prefix=RV64I-LP64E
22; RUN: llc -mtriple=riscv64 -mattr=+f -target-abi lp64f -verify-machineinstrs < %s \
23; RUN:   | FileCheck %s -check-prefix=RV64I
24; RUN: llc -mtriple=riscv64 -mattr=+d -target-abi lp64f -verify-machineinstrs < %s \
25; RUN:   | FileCheck %s -check-prefix=RV64I
26; RUN: llc -mtriple=riscv64 -mattr=+d -target-abi lp64d -verify-machineinstrs < %s \
27; RUN:   | FileCheck %s -check-prefix=RV64I
28; RUN: llc -mtriple=riscv64 -verify-machineinstrs -frame-pointer=all < %s \
29; RUN:   | FileCheck %s -check-prefix=RV64I-WITH-FP
30; RUN: llc -mtriple=riscv64 -mattr=+zcmp -verify-machineinstrs < %s \
31; RUN: | FileCheck %s -check-prefixes=RV64IZCMP
32; RUN: llc -mtriple=riscv64 -mattr=+zcmp -verify-machineinstrs \
33; RUN:  -frame-pointer=all < %s | FileCheck %s -check-prefixes=RV64IZCMP-WITH-FP
34
35@var = global [32 x i32] zeroinitializer
36
37; This function tests that RISCVRegisterInfo::getCalleeSavedRegs returns
38; something appropriate.
39
40define void @callee() nounwind {
41; RV32I-LABEL: callee:
42; RV32I:       # %bb.0:
43; RV32I-NEXT:    addi sp, sp, -80
44; RV32I-NEXT:    sw ra, 76(sp) # 4-byte Folded Spill
45; RV32I-NEXT:    sw s0, 72(sp) # 4-byte Folded Spill
46; RV32I-NEXT:    sw s1, 68(sp) # 4-byte Folded Spill
47; RV32I-NEXT:    sw s2, 64(sp) # 4-byte Folded Spill
48; RV32I-NEXT:    sw s3, 60(sp) # 4-byte Folded Spill
49; RV32I-NEXT:    sw s4, 56(sp) # 4-byte Folded Spill
50; RV32I-NEXT:    sw s5, 52(sp) # 4-byte Folded Spill
51; RV32I-NEXT:    sw s6, 48(sp) # 4-byte Folded Spill
52; RV32I-NEXT:    sw s7, 44(sp) # 4-byte Folded Spill
53; RV32I-NEXT:    sw s8, 40(sp) # 4-byte Folded Spill
54; RV32I-NEXT:    sw s9, 36(sp) # 4-byte Folded Spill
55; RV32I-NEXT:    sw s10, 32(sp) # 4-byte Folded Spill
56; RV32I-NEXT:    sw s11, 28(sp) # 4-byte Folded Spill
57; RV32I-NEXT:    lui a7, %hi(var)
58; RV32I-NEXT:    lw a0, %lo(var)(a7)
59; RV32I-NEXT:    sw a0, 24(sp) # 4-byte Folded Spill
60; RV32I-NEXT:    lw a0, %lo(var+4)(a7)
61; RV32I-NEXT:    sw a0, 20(sp) # 4-byte Folded Spill
62; RV32I-NEXT:    lw a0, %lo(var+8)(a7)
63; RV32I-NEXT:    sw a0, 16(sp) # 4-byte Folded Spill
64; RV32I-NEXT:    lw a0, %lo(var+12)(a7)
65; RV32I-NEXT:    sw a0, 12(sp) # 4-byte Folded Spill
66; RV32I-NEXT:    addi a5, a7, %lo(var)
67; RV32I-NEXT:    lw a0, 16(a5)
68; RV32I-NEXT:    sw a0, 8(sp) # 4-byte Folded Spill
69; RV32I-NEXT:    lw a0, 20(a5)
70; RV32I-NEXT:    sw a0, 4(sp) # 4-byte Folded Spill
71; RV32I-NEXT:    lw t0, 24(a5)
72; RV32I-NEXT:    lw t1, 28(a5)
73; RV32I-NEXT:    lw t2, 32(a5)
74; RV32I-NEXT:    lw t3, 36(a5)
75; RV32I-NEXT:    lw t4, 40(a5)
76; RV32I-NEXT:    lw t5, 44(a5)
77; RV32I-NEXT:    lw t6, 48(a5)
78; RV32I-NEXT:    lw s0, 52(a5)
79; RV32I-NEXT:    lw s1, 56(a5)
80; RV32I-NEXT:    lw s2, 60(a5)
81; RV32I-NEXT:    lw s3, 64(a5)
82; RV32I-NEXT:    lw s4, 68(a5)
83; RV32I-NEXT:    lw s5, 72(a5)
84; RV32I-NEXT:    lw s6, 76(a5)
85; RV32I-NEXT:    lw s7, 80(a5)
86; RV32I-NEXT:    lw s8, 84(a5)
87; RV32I-NEXT:    lw s9, 88(a5)
88; RV32I-NEXT:    lw s10, 92(a5)
89; RV32I-NEXT:    lw s11, 112(a5)
90; RV32I-NEXT:    lw ra, 116(a5)
91; RV32I-NEXT:    lw a3, 120(a5)
92; RV32I-NEXT:    lw a0, 124(a5)
93; RV32I-NEXT:    lw a6, 96(a5)
94; RV32I-NEXT:    lw a4, 100(a5)
95; RV32I-NEXT:    lw a2, 104(a5)
96; RV32I-NEXT:    lw a1, 108(a5)
97; RV32I-NEXT:    sw a0, 124(a5)
98; RV32I-NEXT:    sw a3, 120(a5)
99; RV32I-NEXT:    sw ra, 116(a5)
100; RV32I-NEXT:    sw s11, 112(a5)
101; RV32I-NEXT:    sw a1, 108(a5)
102; RV32I-NEXT:    sw a2, 104(a5)
103; RV32I-NEXT:    sw a4, 100(a5)
104; RV32I-NEXT:    sw a6, 96(a5)
105; RV32I-NEXT:    sw s10, 92(a5)
106; RV32I-NEXT:    sw s9, 88(a5)
107; RV32I-NEXT:    sw s8, 84(a5)
108; RV32I-NEXT:    sw s7, 80(a5)
109; RV32I-NEXT:    sw s6, 76(a5)
110; RV32I-NEXT:    sw s5, 72(a5)
111; RV32I-NEXT:    sw s4, 68(a5)
112; RV32I-NEXT:    sw s3, 64(a5)
113; RV32I-NEXT:    sw s2, 60(a5)
114; RV32I-NEXT:    sw s1, 56(a5)
115; RV32I-NEXT:    sw s0, 52(a5)
116; RV32I-NEXT:    sw t6, 48(a5)
117; RV32I-NEXT:    sw t5, 44(a5)
118; RV32I-NEXT:    sw t4, 40(a5)
119; RV32I-NEXT:    sw t3, 36(a5)
120; RV32I-NEXT:    sw t2, 32(a5)
121; RV32I-NEXT:    sw t1, 28(a5)
122; RV32I-NEXT:    sw t0, 24(a5)
123; RV32I-NEXT:    lw a0, 4(sp) # 4-byte Folded Reload
124; RV32I-NEXT:    sw a0, 20(a5)
125; RV32I-NEXT:    lw a0, 8(sp) # 4-byte Folded Reload
126; RV32I-NEXT:    sw a0, 16(a5)
127; RV32I-NEXT:    lw a0, 12(sp) # 4-byte Folded Reload
128; RV32I-NEXT:    sw a0, %lo(var+12)(a7)
129; RV32I-NEXT:    lw a0, 16(sp) # 4-byte Folded Reload
130; RV32I-NEXT:    sw a0, %lo(var+8)(a7)
131; RV32I-NEXT:    lw a0, 20(sp) # 4-byte Folded Reload
132; RV32I-NEXT:    sw a0, %lo(var+4)(a7)
133; RV32I-NEXT:    lw a0, 24(sp) # 4-byte Folded Reload
134; RV32I-NEXT:    sw a0, %lo(var)(a7)
135; RV32I-NEXT:    lw ra, 76(sp) # 4-byte Folded Reload
136; RV32I-NEXT:    lw s0, 72(sp) # 4-byte Folded Reload
137; RV32I-NEXT:    lw s1, 68(sp) # 4-byte Folded Reload
138; RV32I-NEXT:    lw s2, 64(sp) # 4-byte Folded Reload
139; RV32I-NEXT:    lw s3, 60(sp) # 4-byte Folded Reload
140; RV32I-NEXT:    lw s4, 56(sp) # 4-byte Folded Reload
141; RV32I-NEXT:    lw s5, 52(sp) # 4-byte Folded Reload
142; RV32I-NEXT:    lw s6, 48(sp) # 4-byte Folded Reload
143; RV32I-NEXT:    lw s7, 44(sp) # 4-byte Folded Reload
144; RV32I-NEXT:    lw s8, 40(sp) # 4-byte Folded Reload
145; RV32I-NEXT:    lw s9, 36(sp) # 4-byte Folded Reload
146; RV32I-NEXT:    lw s10, 32(sp) # 4-byte Folded Reload
147; RV32I-NEXT:    lw s11, 28(sp) # 4-byte Folded Reload
148; RV32I-NEXT:    addi sp, sp, 80
149; RV32I-NEXT:    ret
150;
151; RV32I-ILP32E-LABEL: callee:
152; RV32I-ILP32E:       # %bb.0:
153; RV32I-ILP32E-NEXT:    addi sp, sp, -36
154; RV32I-ILP32E-NEXT:    sw ra, 32(sp) # 4-byte Folded Spill
155; RV32I-ILP32E-NEXT:    sw s0, 28(sp) # 4-byte Folded Spill
156; RV32I-ILP32E-NEXT:    sw s1, 24(sp) # 4-byte Folded Spill
157; RV32I-ILP32E-NEXT:    lui a7, %hi(var)
158; RV32I-ILP32E-NEXT:    lw a0, %lo(var)(a7)
159; RV32I-ILP32E-NEXT:    sw a0, 20(sp) # 4-byte Folded Spill
160; RV32I-ILP32E-NEXT:    lw a0, %lo(var+4)(a7)
161; RV32I-ILP32E-NEXT:    sw a0, 16(sp) # 4-byte Folded Spill
162; RV32I-ILP32E-NEXT:    lw a0, %lo(var+8)(a7)
163; RV32I-ILP32E-NEXT:    sw a0, 12(sp) # 4-byte Folded Spill
164; RV32I-ILP32E-NEXT:    lw a0, %lo(var+12)(a7)
165; RV32I-ILP32E-NEXT:    sw a0, 8(sp) # 4-byte Folded Spill
166; RV32I-ILP32E-NEXT:    addi a5, a7, %lo(var)
167; RV32I-ILP32E-NEXT:    lw a0, 16(a5)
168; RV32I-ILP32E-NEXT:    sw a0, 4(sp) # 4-byte Folded Spill
169; RV32I-ILP32E-NEXT:    lw a0, 20(a5)
170; RV32I-ILP32E-NEXT:    sw a0, 0(sp) # 4-byte Folded Spill
171; RV32I-ILP32E-NEXT:    lw t0, 24(a5)
172; RV32I-ILP32E-NEXT:    lw t1, 28(a5)
173; RV32I-ILP32E-NEXT:    lw t2, 32(a5)
174; RV32I-ILP32E-NEXT:    lw t3, 36(a5)
175; RV32I-ILP32E-NEXT:    lw t4, 40(a5)
176; RV32I-ILP32E-NEXT:    lw t5, 44(a5)
177; RV32I-ILP32E-NEXT:    lw t6, 48(a5)
178; RV32I-ILP32E-NEXT:    lw s2, 52(a5)
179; RV32I-ILP32E-NEXT:    lw s3, 56(a5)
180; RV32I-ILP32E-NEXT:    lw s4, 60(a5)
181; RV32I-ILP32E-NEXT:    lw s5, 64(a5)
182; RV32I-ILP32E-NEXT:    lw s6, 68(a5)
183; RV32I-ILP32E-NEXT:    lw s7, 72(a5)
184; RV32I-ILP32E-NEXT:    lw s8, 76(a5)
185; RV32I-ILP32E-NEXT:    lw s9, 80(a5)
186; RV32I-ILP32E-NEXT:    lw s10, 84(a5)
187; RV32I-ILP32E-NEXT:    lw s11, 88(a5)
188; RV32I-ILP32E-NEXT:    lw s0, 92(a5)
189; RV32I-ILP32E-NEXT:    lw s1, 112(a5)
190; RV32I-ILP32E-NEXT:    lw ra, 116(a5)
191; RV32I-ILP32E-NEXT:    lw a3, 120(a5)
192; RV32I-ILP32E-NEXT:    lw a0, 124(a5)
193; RV32I-ILP32E-NEXT:    lw a6, 96(a5)
194; RV32I-ILP32E-NEXT:    lw a4, 100(a5)
195; RV32I-ILP32E-NEXT:    lw a2, 104(a5)
196; RV32I-ILP32E-NEXT:    lw a1, 108(a5)
197; RV32I-ILP32E-NEXT:    sw a0, 124(a5)
198; RV32I-ILP32E-NEXT:    sw a3, 120(a5)
199; RV32I-ILP32E-NEXT:    sw ra, 116(a5)
200; RV32I-ILP32E-NEXT:    sw s1, 112(a5)
201; RV32I-ILP32E-NEXT:    sw a1, 108(a5)
202; RV32I-ILP32E-NEXT:    sw a2, 104(a5)
203; RV32I-ILP32E-NEXT:    sw a4, 100(a5)
204; RV32I-ILP32E-NEXT:    sw a6, 96(a5)
205; RV32I-ILP32E-NEXT:    sw s0, 92(a5)
206; RV32I-ILP32E-NEXT:    sw s11, 88(a5)
207; RV32I-ILP32E-NEXT:    sw s10, 84(a5)
208; RV32I-ILP32E-NEXT:    sw s9, 80(a5)
209; RV32I-ILP32E-NEXT:    sw s8, 76(a5)
210; RV32I-ILP32E-NEXT:    sw s7, 72(a5)
211; RV32I-ILP32E-NEXT:    sw s6, 68(a5)
212; RV32I-ILP32E-NEXT:    sw s5, 64(a5)
213; RV32I-ILP32E-NEXT:    sw s4, 60(a5)
214; RV32I-ILP32E-NEXT:    sw s3, 56(a5)
215; RV32I-ILP32E-NEXT:    sw s2, 52(a5)
216; RV32I-ILP32E-NEXT:    sw t6, 48(a5)
217; RV32I-ILP32E-NEXT:    sw t5, 44(a5)
218; RV32I-ILP32E-NEXT:    sw t4, 40(a5)
219; RV32I-ILP32E-NEXT:    sw t3, 36(a5)
220; RV32I-ILP32E-NEXT:    sw t2, 32(a5)
221; RV32I-ILP32E-NEXT:    sw t1, 28(a5)
222; RV32I-ILP32E-NEXT:    sw t0, 24(a5)
223; RV32I-ILP32E-NEXT:    lw a0, 0(sp) # 4-byte Folded Reload
224; RV32I-ILP32E-NEXT:    sw a0, 20(a5)
225; RV32I-ILP32E-NEXT:    lw a0, 4(sp) # 4-byte Folded Reload
226; RV32I-ILP32E-NEXT:    sw a0, 16(a5)
227; RV32I-ILP32E-NEXT:    lw a0, 8(sp) # 4-byte Folded Reload
228; RV32I-ILP32E-NEXT:    sw a0, %lo(var+12)(a7)
229; RV32I-ILP32E-NEXT:    lw a0, 12(sp) # 4-byte Folded Reload
230; RV32I-ILP32E-NEXT:    sw a0, %lo(var+8)(a7)
231; RV32I-ILP32E-NEXT:    lw a0, 16(sp) # 4-byte Folded Reload
232; RV32I-ILP32E-NEXT:    sw a0, %lo(var+4)(a7)
233; RV32I-ILP32E-NEXT:    lw a0, 20(sp) # 4-byte Folded Reload
234; RV32I-ILP32E-NEXT:    sw a0, %lo(var)(a7)
235; RV32I-ILP32E-NEXT:    lw ra, 32(sp) # 4-byte Folded Reload
236; RV32I-ILP32E-NEXT:    lw s0, 28(sp) # 4-byte Folded Reload
237; RV32I-ILP32E-NEXT:    lw s1, 24(sp) # 4-byte Folded Reload
238; RV32I-ILP32E-NEXT:    addi sp, sp, 36
239; RV32I-ILP32E-NEXT:    ret
240;
241; RV32I-WITH-FP-LABEL: callee:
242; RV32I-WITH-FP:       # %bb.0:
243; RV32I-WITH-FP-NEXT:    addi sp, sp, -80
244; RV32I-WITH-FP-NEXT:    sw ra, 76(sp) # 4-byte Folded Spill
245; RV32I-WITH-FP-NEXT:    sw s0, 72(sp) # 4-byte Folded Spill
246; RV32I-WITH-FP-NEXT:    sw s1, 68(sp) # 4-byte Folded Spill
247; RV32I-WITH-FP-NEXT:    sw s2, 64(sp) # 4-byte Folded Spill
248; RV32I-WITH-FP-NEXT:    sw s3, 60(sp) # 4-byte Folded Spill
249; RV32I-WITH-FP-NEXT:    sw s4, 56(sp) # 4-byte Folded Spill
250; RV32I-WITH-FP-NEXT:    sw s5, 52(sp) # 4-byte Folded Spill
251; RV32I-WITH-FP-NEXT:    sw s6, 48(sp) # 4-byte Folded Spill
252; RV32I-WITH-FP-NEXT:    sw s7, 44(sp) # 4-byte Folded Spill
253; RV32I-WITH-FP-NEXT:    sw s8, 40(sp) # 4-byte Folded Spill
254; RV32I-WITH-FP-NEXT:    sw s9, 36(sp) # 4-byte Folded Spill
255; RV32I-WITH-FP-NEXT:    sw s10, 32(sp) # 4-byte Folded Spill
256; RV32I-WITH-FP-NEXT:    sw s11, 28(sp) # 4-byte Folded Spill
257; RV32I-WITH-FP-NEXT:    addi s0, sp, 80
258; RV32I-WITH-FP-NEXT:    lui t0, %hi(var)
259; RV32I-WITH-FP-NEXT:    lw a0, %lo(var)(t0)
260; RV32I-WITH-FP-NEXT:    sw a0, -56(s0) # 4-byte Folded Spill
261; RV32I-WITH-FP-NEXT:    lw a0, %lo(var+4)(t0)
262; RV32I-WITH-FP-NEXT:    sw a0, -60(s0) # 4-byte Folded Spill
263; RV32I-WITH-FP-NEXT:    lw a0, %lo(var+8)(t0)
264; RV32I-WITH-FP-NEXT:    sw a0, -64(s0) # 4-byte Folded Spill
265; RV32I-WITH-FP-NEXT:    lw a0, %lo(var+12)(t0)
266; RV32I-WITH-FP-NEXT:    sw a0, -68(s0) # 4-byte Folded Spill
267; RV32I-WITH-FP-NEXT:    addi a5, t0, %lo(var)
268; RV32I-WITH-FP-NEXT:    lw a0, 16(a5)
269; RV32I-WITH-FP-NEXT:    sw a0, -72(s0) # 4-byte Folded Spill
270; RV32I-WITH-FP-NEXT:    lw a0, 20(a5)
271; RV32I-WITH-FP-NEXT:    sw a0, -76(s0) # 4-byte Folded Spill
272; RV32I-WITH-FP-NEXT:    lw a0, 24(a5)
273; RV32I-WITH-FP-NEXT:    sw a0, -80(s0) # 4-byte Folded Spill
274; RV32I-WITH-FP-NEXT:    lw t1, 28(a5)
275; RV32I-WITH-FP-NEXT:    lw t2, 32(a5)
276; RV32I-WITH-FP-NEXT:    lw t3, 36(a5)
277; RV32I-WITH-FP-NEXT:    lw t4, 40(a5)
278; RV32I-WITH-FP-NEXT:    lw t5, 44(a5)
279; RV32I-WITH-FP-NEXT:    lw t6, 48(a5)
280; RV32I-WITH-FP-NEXT:    lw s1, 52(a5)
281; RV32I-WITH-FP-NEXT:    lw s2, 56(a5)
282; RV32I-WITH-FP-NEXT:    lw s3, 60(a5)
283; RV32I-WITH-FP-NEXT:    lw s4, 64(a5)
284; RV32I-WITH-FP-NEXT:    lw s5, 68(a5)
285; RV32I-WITH-FP-NEXT:    lw s6, 72(a5)
286; RV32I-WITH-FP-NEXT:    lw s7, 76(a5)
287; RV32I-WITH-FP-NEXT:    lw s8, 80(a5)
288; RV32I-WITH-FP-NEXT:    lw s9, 84(a5)
289; RV32I-WITH-FP-NEXT:    lw s10, 88(a5)
290; RV32I-WITH-FP-NEXT:    lw s11, 92(a5)
291; RV32I-WITH-FP-NEXT:    lw ra, 112(a5)
292; RV32I-WITH-FP-NEXT:    lw a4, 116(a5)
293; RV32I-WITH-FP-NEXT:    lw a3, 120(a5)
294; RV32I-WITH-FP-NEXT:    lw a0, 124(a5)
295; RV32I-WITH-FP-NEXT:    lw a7, 96(a5)
296; RV32I-WITH-FP-NEXT:    lw a6, 100(a5)
297; RV32I-WITH-FP-NEXT:    lw a2, 104(a5)
298; RV32I-WITH-FP-NEXT:    lw a1, 108(a5)
299; RV32I-WITH-FP-NEXT:    sw a0, 124(a5)
300; RV32I-WITH-FP-NEXT:    sw a3, 120(a5)
301; RV32I-WITH-FP-NEXT:    sw a4, 116(a5)
302; RV32I-WITH-FP-NEXT:    sw ra, 112(a5)
303; RV32I-WITH-FP-NEXT:    sw a1, 108(a5)
304; RV32I-WITH-FP-NEXT:    sw a2, 104(a5)
305; RV32I-WITH-FP-NEXT:    sw a6, 100(a5)
306; RV32I-WITH-FP-NEXT:    sw a7, 96(a5)
307; RV32I-WITH-FP-NEXT:    sw s11, 92(a5)
308; RV32I-WITH-FP-NEXT:    sw s10, 88(a5)
309; RV32I-WITH-FP-NEXT:    sw s9, 84(a5)
310; RV32I-WITH-FP-NEXT:    sw s8, 80(a5)
311; RV32I-WITH-FP-NEXT:    sw s7, 76(a5)
312; RV32I-WITH-FP-NEXT:    sw s6, 72(a5)
313; RV32I-WITH-FP-NEXT:    sw s5, 68(a5)
314; RV32I-WITH-FP-NEXT:    sw s4, 64(a5)
315; RV32I-WITH-FP-NEXT:    sw s3, 60(a5)
316; RV32I-WITH-FP-NEXT:    sw s2, 56(a5)
317; RV32I-WITH-FP-NEXT:    sw s1, 52(a5)
318; RV32I-WITH-FP-NEXT:    sw t6, 48(a5)
319; RV32I-WITH-FP-NEXT:    sw t5, 44(a5)
320; RV32I-WITH-FP-NEXT:    sw t4, 40(a5)
321; RV32I-WITH-FP-NEXT:    sw t3, 36(a5)
322; RV32I-WITH-FP-NEXT:    sw t2, 32(a5)
323; RV32I-WITH-FP-NEXT:    sw t1, 28(a5)
324; RV32I-WITH-FP-NEXT:    lw a0, -80(s0) # 4-byte Folded Reload
325; RV32I-WITH-FP-NEXT:    sw a0, 24(a5)
326; RV32I-WITH-FP-NEXT:    lw a0, -76(s0) # 4-byte Folded Reload
327; RV32I-WITH-FP-NEXT:    sw a0, 20(a5)
328; RV32I-WITH-FP-NEXT:    lw a0, -72(s0) # 4-byte Folded Reload
329; RV32I-WITH-FP-NEXT:    sw a0, 16(a5)
330; RV32I-WITH-FP-NEXT:    lw a0, -68(s0) # 4-byte Folded Reload
331; RV32I-WITH-FP-NEXT:    sw a0, %lo(var+12)(t0)
332; RV32I-WITH-FP-NEXT:    lw a0, -64(s0) # 4-byte Folded Reload
333; RV32I-WITH-FP-NEXT:    sw a0, %lo(var+8)(t0)
334; RV32I-WITH-FP-NEXT:    lw a0, -60(s0) # 4-byte Folded Reload
335; RV32I-WITH-FP-NEXT:    sw a0, %lo(var+4)(t0)
336; RV32I-WITH-FP-NEXT:    lw a0, -56(s0) # 4-byte Folded Reload
337; RV32I-WITH-FP-NEXT:    sw a0, %lo(var)(t0)
338; RV32I-WITH-FP-NEXT:    lw ra, 76(sp) # 4-byte Folded Reload
339; RV32I-WITH-FP-NEXT:    lw s0, 72(sp) # 4-byte Folded Reload
340; RV32I-WITH-FP-NEXT:    lw s1, 68(sp) # 4-byte Folded Reload
341; RV32I-WITH-FP-NEXT:    lw s2, 64(sp) # 4-byte Folded Reload
342; RV32I-WITH-FP-NEXT:    lw s3, 60(sp) # 4-byte Folded Reload
343; RV32I-WITH-FP-NEXT:    lw s4, 56(sp) # 4-byte Folded Reload
344; RV32I-WITH-FP-NEXT:    lw s5, 52(sp) # 4-byte Folded Reload
345; RV32I-WITH-FP-NEXT:    lw s6, 48(sp) # 4-byte Folded Reload
346; RV32I-WITH-FP-NEXT:    lw s7, 44(sp) # 4-byte Folded Reload
347; RV32I-WITH-FP-NEXT:    lw s8, 40(sp) # 4-byte Folded Reload
348; RV32I-WITH-FP-NEXT:    lw s9, 36(sp) # 4-byte Folded Reload
349; RV32I-WITH-FP-NEXT:    lw s10, 32(sp) # 4-byte Folded Reload
350; RV32I-WITH-FP-NEXT:    lw s11, 28(sp) # 4-byte Folded Reload
351; RV32I-WITH-FP-NEXT:    addi sp, sp, 80
352; RV32I-WITH-FP-NEXT:    ret
353;
354; RV32IZCMP-LABEL: callee:
355; RV32IZCMP:       # %bb.0:
356; RV32IZCMP-NEXT:    cm.push {ra, s0-s11}, -96
357; RV32IZCMP-NEXT:    lui t0, %hi(var)
358; RV32IZCMP-NEXT:    lw a0, %lo(var)(t0)
359; RV32IZCMP-NEXT:    sw a0, 28(sp) # 4-byte Folded Spill
360; RV32IZCMP-NEXT:    lw a0, %lo(var+4)(t0)
361; RV32IZCMP-NEXT:    sw a0, 24(sp) # 4-byte Folded Spill
362; RV32IZCMP-NEXT:    lw a0, %lo(var+8)(t0)
363; RV32IZCMP-NEXT:    sw a0, 20(sp) # 4-byte Folded Spill
364; RV32IZCMP-NEXT:    lw a0, %lo(var+12)(t0)
365; RV32IZCMP-NEXT:    sw a0, 16(sp) # 4-byte Folded Spill
366; RV32IZCMP-NEXT:    addi a5, t0, %lo(var)
367; RV32IZCMP-NEXT:    lw a0, 16(a5)
368; RV32IZCMP-NEXT:    sw a0, 12(sp) # 4-byte Folded Spill
369; RV32IZCMP-NEXT:    lw a0, 20(a5)
370; RV32IZCMP-NEXT:    sw a0, 8(sp) # 4-byte Folded Spill
371; RV32IZCMP-NEXT:    lw t4, 24(a5)
372; RV32IZCMP-NEXT:    lw t5, 28(a5)
373; RV32IZCMP-NEXT:    lw t6, 32(a5)
374; RV32IZCMP-NEXT:    lw s2, 36(a5)
375; RV32IZCMP-NEXT:    lw s3, 40(a5)
376; RV32IZCMP-NEXT:    lw s4, 44(a5)
377; RV32IZCMP-NEXT:    lw s5, 48(a5)
378; RV32IZCMP-NEXT:    lw s6, 52(a5)
379; RV32IZCMP-NEXT:    lw s7, 56(a5)
380; RV32IZCMP-NEXT:    lw s8, 60(a5)
381; RV32IZCMP-NEXT:    lw s9, 64(a5)
382; RV32IZCMP-NEXT:    lw s10, 68(a5)
383; RV32IZCMP-NEXT:    lw s11, 72(a5)
384; RV32IZCMP-NEXT:    lw ra, 76(a5)
385; RV32IZCMP-NEXT:    lw s1, 80(a5)
386; RV32IZCMP-NEXT:    lw t3, 84(a5)
387; RV32IZCMP-NEXT:    lw t2, 88(a5)
388; RV32IZCMP-NEXT:    lw t1, 92(a5)
389; RV32IZCMP-NEXT:    lw a7, 112(a5)
390; RV32IZCMP-NEXT:    lw s0, 116(a5)
391; RV32IZCMP-NEXT:    lw a3, 120(a5)
392; RV32IZCMP-NEXT:    lw a0, 124(a5)
393; RV32IZCMP-NEXT:    lw a6, 96(a5)
394; RV32IZCMP-NEXT:    lw a4, 100(a5)
395; RV32IZCMP-NEXT:    lw a2, 104(a5)
396; RV32IZCMP-NEXT:    lw a1, 108(a5)
397; RV32IZCMP-NEXT:    sw a0, 124(a5)
398; RV32IZCMP-NEXT:    sw a3, 120(a5)
399; RV32IZCMP-NEXT:    sw s0, 116(a5)
400; RV32IZCMP-NEXT:    sw a7, 112(a5)
401; RV32IZCMP-NEXT:    sw a1, 108(a5)
402; RV32IZCMP-NEXT:    sw a2, 104(a5)
403; RV32IZCMP-NEXT:    sw a4, 100(a5)
404; RV32IZCMP-NEXT:    sw a6, 96(a5)
405; RV32IZCMP-NEXT:    sw t1, 92(a5)
406; RV32IZCMP-NEXT:    sw t2, 88(a5)
407; RV32IZCMP-NEXT:    sw t3, 84(a5)
408; RV32IZCMP-NEXT:    sw s1, 80(a5)
409; RV32IZCMP-NEXT:    sw ra, 76(a5)
410; RV32IZCMP-NEXT:    sw s11, 72(a5)
411; RV32IZCMP-NEXT:    sw s10, 68(a5)
412; RV32IZCMP-NEXT:    sw s9, 64(a5)
413; RV32IZCMP-NEXT:    sw s8, 60(a5)
414; RV32IZCMP-NEXT:    sw s7, 56(a5)
415; RV32IZCMP-NEXT:    sw s6, 52(a5)
416; RV32IZCMP-NEXT:    sw s5, 48(a5)
417; RV32IZCMP-NEXT:    sw s4, 44(a5)
418; RV32IZCMP-NEXT:    sw s3, 40(a5)
419; RV32IZCMP-NEXT:    sw s2, 36(a5)
420; RV32IZCMP-NEXT:    sw t6, 32(a5)
421; RV32IZCMP-NEXT:    sw t5, 28(a5)
422; RV32IZCMP-NEXT:    sw t4, 24(a5)
423; RV32IZCMP-NEXT:    lw a0, 8(sp) # 4-byte Folded Reload
424; RV32IZCMP-NEXT:    sw a0, 20(a5)
425; RV32IZCMP-NEXT:    lw a0, 12(sp) # 4-byte Folded Reload
426; RV32IZCMP-NEXT:    sw a0, 16(a5)
427; RV32IZCMP-NEXT:    lw a0, 16(sp) # 4-byte Folded Reload
428; RV32IZCMP-NEXT:    sw a0, %lo(var+12)(t0)
429; RV32IZCMP-NEXT:    lw a0, 20(sp) # 4-byte Folded Reload
430; RV32IZCMP-NEXT:    sw a0, %lo(var+8)(t0)
431; RV32IZCMP-NEXT:    lw a0, 24(sp) # 4-byte Folded Reload
432; RV32IZCMP-NEXT:    sw a0, %lo(var+4)(t0)
433; RV32IZCMP-NEXT:    lw a0, 28(sp) # 4-byte Folded Reload
434; RV32IZCMP-NEXT:    sw a0, %lo(var)(t0)
435; RV32IZCMP-NEXT:    cm.popret {ra, s0-s11}, 96
436;
437; RV32IZCMP-WITH-FP-LABEL: callee:
438; RV32IZCMP-WITH-FP:       # %bb.0:
439; RV32IZCMP-WITH-FP-NEXT:    addi sp, sp, -80
440; RV32IZCMP-WITH-FP-NEXT:    sw ra, 76(sp) # 4-byte Folded Spill
441; RV32IZCMP-WITH-FP-NEXT:    sw s0, 72(sp) # 4-byte Folded Spill
442; RV32IZCMP-WITH-FP-NEXT:    sw s1, 68(sp) # 4-byte Folded Spill
443; RV32IZCMP-WITH-FP-NEXT:    sw s2, 64(sp) # 4-byte Folded Spill
444; RV32IZCMP-WITH-FP-NEXT:    sw s3, 60(sp) # 4-byte Folded Spill
445; RV32IZCMP-WITH-FP-NEXT:    sw s4, 56(sp) # 4-byte Folded Spill
446; RV32IZCMP-WITH-FP-NEXT:    sw s5, 52(sp) # 4-byte Folded Spill
447; RV32IZCMP-WITH-FP-NEXT:    sw s6, 48(sp) # 4-byte Folded Spill
448; RV32IZCMP-WITH-FP-NEXT:    sw s7, 44(sp) # 4-byte Folded Spill
449; RV32IZCMP-WITH-FP-NEXT:    sw s8, 40(sp) # 4-byte Folded Spill
450; RV32IZCMP-WITH-FP-NEXT:    sw s9, 36(sp) # 4-byte Folded Spill
451; RV32IZCMP-WITH-FP-NEXT:    sw s10, 32(sp) # 4-byte Folded Spill
452; RV32IZCMP-WITH-FP-NEXT:    sw s11, 28(sp) # 4-byte Folded Spill
453; RV32IZCMP-WITH-FP-NEXT:    addi s0, sp, 80
454; RV32IZCMP-WITH-FP-NEXT:    lui t1, %hi(var)
455; RV32IZCMP-WITH-FP-NEXT:    lw a0, %lo(var)(t1)
456; RV32IZCMP-WITH-FP-NEXT:    sw a0, -56(s0) # 4-byte Folded Spill
457; RV32IZCMP-WITH-FP-NEXT:    lw a0, %lo(var+4)(t1)
458; RV32IZCMP-WITH-FP-NEXT:    sw a0, -60(s0) # 4-byte Folded Spill
459; RV32IZCMP-WITH-FP-NEXT:    lw a0, %lo(var+8)(t1)
460; RV32IZCMP-WITH-FP-NEXT:    sw a0, -64(s0) # 4-byte Folded Spill
461; RV32IZCMP-WITH-FP-NEXT:    lw a0, %lo(var+12)(t1)
462; RV32IZCMP-WITH-FP-NEXT:    sw a0, -68(s0) # 4-byte Folded Spill
463; RV32IZCMP-WITH-FP-NEXT:    addi a5, t1, %lo(var)
464; RV32IZCMP-WITH-FP-NEXT:    lw a0, 16(a5)
465; RV32IZCMP-WITH-FP-NEXT:    sw a0, -72(s0) # 4-byte Folded Spill
466; RV32IZCMP-WITH-FP-NEXT:    lw a0, 20(a5)
467; RV32IZCMP-WITH-FP-NEXT:    sw a0, -76(s0) # 4-byte Folded Spill
468; RV32IZCMP-WITH-FP-NEXT:    lw a0, 24(a5)
469; RV32IZCMP-WITH-FP-NEXT:    sw a0, -80(s0) # 4-byte Folded Spill
470; RV32IZCMP-WITH-FP-NEXT:    lw t5, 28(a5)
471; RV32IZCMP-WITH-FP-NEXT:    lw t6, 32(a5)
472; RV32IZCMP-WITH-FP-NEXT:    lw s2, 36(a5)
473; RV32IZCMP-WITH-FP-NEXT:    lw s3, 40(a5)
474; RV32IZCMP-WITH-FP-NEXT:    lw s4, 44(a5)
475; RV32IZCMP-WITH-FP-NEXT:    lw s5, 48(a5)
476; RV32IZCMP-WITH-FP-NEXT:    lw s6, 52(a5)
477; RV32IZCMP-WITH-FP-NEXT:    lw s7, 56(a5)
478; RV32IZCMP-WITH-FP-NEXT:    lw s8, 60(a5)
479; RV32IZCMP-WITH-FP-NEXT:    lw s9, 64(a5)
480; RV32IZCMP-WITH-FP-NEXT:    lw s10, 68(a5)
481; RV32IZCMP-WITH-FP-NEXT:    lw s11, 72(a5)
482; RV32IZCMP-WITH-FP-NEXT:    lw ra, 76(a5)
483; RV32IZCMP-WITH-FP-NEXT:    lw t4, 80(a5)
484; RV32IZCMP-WITH-FP-NEXT:    lw t3, 84(a5)
485; RV32IZCMP-WITH-FP-NEXT:    lw t2, 88(a5)
486; RV32IZCMP-WITH-FP-NEXT:    lw s1, 92(a5)
487; RV32IZCMP-WITH-FP-NEXT:    lw t0, 112(a5)
488; RV32IZCMP-WITH-FP-NEXT:    lw a4, 116(a5)
489; RV32IZCMP-WITH-FP-NEXT:    lw a3, 120(a5)
490; RV32IZCMP-WITH-FP-NEXT:    lw a0, 124(a5)
491; RV32IZCMP-WITH-FP-NEXT:    lw a7, 96(a5)
492; RV32IZCMP-WITH-FP-NEXT:    lw a6, 100(a5)
493; RV32IZCMP-WITH-FP-NEXT:    lw a2, 104(a5)
494; RV32IZCMP-WITH-FP-NEXT:    lw a1, 108(a5)
495; RV32IZCMP-WITH-FP-NEXT:    sw a0, 124(a5)
496; RV32IZCMP-WITH-FP-NEXT:    sw a3, 120(a5)
497; RV32IZCMP-WITH-FP-NEXT:    sw a4, 116(a5)
498; RV32IZCMP-WITH-FP-NEXT:    sw t0, 112(a5)
499; RV32IZCMP-WITH-FP-NEXT:    sw a1, 108(a5)
500; RV32IZCMP-WITH-FP-NEXT:    sw a2, 104(a5)
501; RV32IZCMP-WITH-FP-NEXT:    sw a6, 100(a5)
502; RV32IZCMP-WITH-FP-NEXT:    sw a7, 96(a5)
503; RV32IZCMP-WITH-FP-NEXT:    sw s1, 92(a5)
504; RV32IZCMP-WITH-FP-NEXT:    sw t2, 88(a5)
505; RV32IZCMP-WITH-FP-NEXT:    sw t3, 84(a5)
506; RV32IZCMP-WITH-FP-NEXT:    sw t4, 80(a5)
507; RV32IZCMP-WITH-FP-NEXT:    sw ra, 76(a5)
508; RV32IZCMP-WITH-FP-NEXT:    sw s11, 72(a5)
509; RV32IZCMP-WITH-FP-NEXT:    sw s10, 68(a5)
510; RV32IZCMP-WITH-FP-NEXT:    sw s9, 64(a5)
511; RV32IZCMP-WITH-FP-NEXT:    sw s8, 60(a5)
512; RV32IZCMP-WITH-FP-NEXT:    sw s7, 56(a5)
513; RV32IZCMP-WITH-FP-NEXT:    sw s6, 52(a5)
514; RV32IZCMP-WITH-FP-NEXT:    sw s5, 48(a5)
515; RV32IZCMP-WITH-FP-NEXT:    sw s4, 44(a5)
516; RV32IZCMP-WITH-FP-NEXT:    sw s3, 40(a5)
517; RV32IZCMP-WITH-FP-NEXT:    sw s2, 36(a5)
518; RV32IZCMP-WITH-FP-NEXT:    sw t6, 32(a5)
519; RV32IZCMP-WITH-FP-NEXT:    sw t5, 28(a5)
520; RV32IZCMP-WITH-FP-NEXT:    lw a0, -80(s0) # 4-byte Folded Reload
521; RV32IZCMP-WITH-FP-NEXT:    sw a0, 24(a5)
522; RV32IZCMP-WITH-FP-NEXT:    lw a0, -76(s0) # 4-byte Folded Reload
523; RV32IZCMP-WITH-FP-NEXT:    sw a0, 20(a5)
524; RV32IZCMP-WITH-FP-NEXT:    lw a0, -72(s0) # 4-byte Folded Reload
525; RV32IZCMP-WITH-FP-NEXT:    sw a0, 16(a5)
526; RV32IZCMP-WITH-FP-NEXT:    lw a0, -68(s0) # 4-byte Folded Reload
527; RV32IZCMP-WITH-FP-NEXT:    sw a0, %lo(var+12)(t1)
528; RV32IZCMP-WITH-FP-NEXT:    lw a0, -64(s0) # 4-byte Folded Reload
529; RV32IZCMP-WITH-FP-NEXT:    sw a0, %lo(var+8)(t1)
530; RV32IZCMP-WITH-FP-NEXT:    lw a0, -60(s0) # 4-byte Folded Reload
531; RV32IZCMP-WITH-FP-NEXT:    sw a0, %lo(var+4)(t1)
532; RV32IZCMP-WITH-FP-NEXT:    lw a0, -56(s0) # 4-byte Folded Reload
533; RV32IZCMP-WITH-FP-NEXT:    sw a0, %lo(var)(t1)
534; RV32IZCMP-WITH-FP-NEXT:    lw ra, 76(sp) # 4-byte Folded Reload
535; RV32IZCMP-WITH-FP-NEXT:    lw s0, 72(sp) # 4-byte Folded Reload
536; RV32IZCMP-WITH-FP-NEXT:    lw s1, 68(sp) # 4-byte Folded Reload
537; RV32IZCMP-WITH-FP-NEXT:    lw s2, 64(sp) # 4-byte Folded Reload
538; RV32IZCMP-WITH-FP-NEXT:    lw s3, 60(sp) # 4-byte Folded Reload
539; RV32IZCMP-WITH-FP-NEXT:    lw s4, 56(sp) # 4-byte Folded Reload
540; RV32IZCMP-WITH-FP-NEXT:    lw s5, 52(sp) # 4-byte Folded Reload
541; RV32IZCMP-WITH-FP-NEXT:    lw s6, 48(sp) # 4-byte Folded Reload
542; RV32IZCMP-WITH-FP-NEXT:    lw s7, 44(sp) # 4-byte Folded Reload
543; RV32IZCMP-WITH-FP-NEXT:    lw s8, 40(sp) # 4-byte Folded Reload
544; RV32IZCMP-WITH-FP-NEXT:    lw s9, 36(sp) # 4-byte Folded Reload
545; RV32IZCMP-WITH-FP-NEXT:    lw s10, 32(sp) # 4-byte Folded Reload
546; RV32IZCMP-WITH-FP-NEXT:    lw s11, 28(sp) # 4-byte Folded Reload
547; RV32IZCMP-WITH-FP-NEXT:    addi sp, sp, 80
548; RV32IZCMP-WITH-FP-NEXT:    ret
549;
550; RV64I-LABEL: callee:
551; RV64I:       # %bb.0:
552; RV64I-NEXT:    addi sp, sp, -160
553; RV64I-NEXT:    sd ra, 152(sp) # 8-byte Folded Spill
554; RV64I-NEXT:    sd s0, 144(sp) # 8-byte Folded Spill
555; RV64I-NEXT:    sd s1, 136(sp) # 8-byte Folded Spill
556; RV64I-NEXT:    sd s2, 128(sp) # 8-byte Folded Spill
557; RV64I-NEXT:    sd s3, 120(sp) # 8-byte Folded Spill
558; RV64I-NEXT:    sd s4, 112(sp) # 8-byte Folded Spill
559; RV64I-NEXT:    sd s5, 104(sp) # 8-byte Folded Spill
560; RV64I-NEXT:    sd s6, 96(sp) # 8-byte Folded Spill
561; RV64I-NEXT:    sd s7, 88(sp) # 8-byte Folded Spill
562; RV64I-NEXT:    sd s8, 80(sp) # 8-byte Folded Spill
563; RV64I-NEXT:    sd s9, 72(sp) # 8-byte Folded Spill
564; RV64I-NEXT:    sd s10, 64(sp) # 8-byte Folded Spill
565; RV64I-NEXT:    sd s11, 56(sp) # 8-byte Folded Spill
566; RV64I-NEXT:    lui a7, %hi(var)
567; RV64I-NEXT:    lw a0, %lo(var)(a7)
568; RV64I-NEXT:    sd a0, 48(sp) # 8-byte Folded Spill
569; RV64I-NEXT:    lw a0, %lo(var+4)(a7)
570; RV64I-NEXT:    sd a0, 40(sp) # 8-byte Folded Spill
571; RV64I-NEXT:    lw a0, %lo(var+8)(a7)
572; RV64I-NEXT:    sd a0, 32(sp) # 8-byte Folded Spill
573; RV64I-NEXT:    lw a0, %lo(var+12)(a7)
574; RV64I-NEXT:    sd a0, 24(sp) # 8-byte Folded Spill
575; RV64I-NEXT:    addi a5, a7, %lo(var)
576; RV64I-NEXT:    lw a0, 16(a5)
577; RV64I-NEXT:    sd a0, 16(sp) # 8-byte Folded Spill
578; RV64I-NEXT:    lw a0, 20(a5)
579; RV64I-NEXT:    sd a0, 8(sp) # 8-byte Folded Spill
580; RV64I-NEXT:    lw t0, 24(a5)
581; RV64I-NEXT:    lw t1, 28(a5)
582; RV64I-NEXT:    lw t2, 32(a5)
583; RV64I-NEXT:    lw t3, 36(a5)
584; RV64I-NEXT:    lw t4, 40(a5)
585; RV64I-NEXT:    lw t5, 44(a5)
586; RV64I-NEXT:    lw t6, 48(a5)
587; RV64I-NEXT:    lw s0, 52(a5)
588; RV64I-NEXT:    lw s1, 56(a5)
589; RV64I-NEXT:    lw s2, 60(a5)
590; RV64I-NEXT:    lw s3, 64(a5)
591; RV64I-NEXT:    lw s4, 68(a5)
592; RV64I-NEXT:    lw s5, 72(a5)
593; RV64I-NEXT:    lw s6, 76(a5)
594; RV64I-NEXT:    lw s7, 80(a5)
595; RV64I-NEXT:    lw s8, 84(a5)
596; RV64I-NEXT:    lw s9, 88(a5)
597; RV64I-NEXT:    lw s10, 92(a5)
598; RV64I-NEXT:    lw s11, 112(a5)
599; RV64I-NEXT:    lw ra, 116(a5)
600; RV64I-NEXT:    lw a3, 120(a5)
601; RV64I-NEXT:    lw a0, 124(a5)
602; RV64I-NEXT:    lw a6, 96(a5)
603; RV64I-NEXT:    lw a4, 100(a5)
604; RV64I-NEXT:    lw a2, 104(a5)
605; RV64I-NEXT:    lw a1, 108(a5)
606; RV64I-NEXT:    sw a0, 124(a5)
607; RV64I-NEXT:    sw a3, 120(a5)
608; RV64I-NEXT:    sw ra, 116(a5)
609; RV64I-NEXT:    sw s11, 112(a5)
610; RV64I-NEXT:    sw a1, 108(a5)
611; RV64I-NEXT:    sw a2, 104(a5)
612; RV64I-NEXT:    sw a4, 100(a5)
613; RV64I-NEXT:    sw a6, 96(a5)
614; RV64I-NEXT:    sw s10, 92(a5)
615; RV64I-NEXT:    sw s9, 88(a5)
616; RV64I-NEXT:    sw s8, 84(a5)
617; RV64I-NEXT:    sw s7, 80(a5)
618; RV64I-NEXT:    sw s6, 76(a5)
619; RV64I-NEXT:    sw s5, 72(a5)
620; RV64I-NEXT:    sw s4, 68(a5)
621; RV64I-NEXT:    sw s3, 64(a5)
622; RV64I-NEXT:    sw s2, 60(a5)
623; RV64I-NEXT:    sw s1, 56(a5)
624; RV64I-NEXT:    sw s0, 52(a5)
625; RV64I-NEXT:    sw t6, 48(a5)
626; RV64I-NEXT:    sw t5, 44(a5)
627; RV64I-NEXT:    sw t4, 40(a5)
628; RV64I-NEXT:    sw t3, 36(a5)
629; RV64I-NEXT:    sw t2, 32(a5)
630; RV64I-NEXT:    sw t1, 28(a5)
631; RV64I-NEXT:    sw t0, 24(a5)
632; RV64I-NEXT:    ld a0, 8(sp) # 8-byte Folded Reload
633; RV64I-NEXT:    sw a0, 20(a5)
634; RV64I-NEXT:    ld a0, 16(sp) # 8-byte Folded Reload
635; RV64I-NEXT:    sw a0, 16(a5)
636; RV64I-NEXT:    ld a0, 24(sp) # 8-byte Folded Reload
637; RV64I-NEXT:    sw a0, %lo(var+12)(a7)
638; RV64I-NEXT:    ld a0, 32(sp) # 8-byte Folded Reload
639; RV64I-NEXT:    sw a0, %lo(var+8)(a7)
640; RV64I-NEXT:    ld a0, 40(sp) # 8-byte Folded Reload
641; RV64I-NEXT:    sw a0, %lo(var+4)(a7)
642; RV64I-NEXT:    ld a0, 48(sp) # 8-byte Folded Reload
643; RV64I-NEXT:    sw a0, %lo(var)(a7)
644; RV64I-NEXT:    ld ra, 152(sp) # 8-byte Folded Reload
645; RV64I-NEXT:    ld s0, 144(sp) # 8-byte Folded Reload
646; RV64I-NEXT:    ld s1, 136(sp) # 8-byte Folded Reload
647; RV64I-NEXT:    ld s2, 128(sp) # 8-byte Folded Reload
648; RV64I-NEXT:    ld s3, 120(sp) # 8-byte Folded Reload
649; RV64I-NEXT:    ld s4, 112(sp) # 8-byte Folded Reload
650; RV64I-NEXT:    ld s5, 104(sp) # 8-byte Folded Reload
651; RV64I-NEXT:    ld s6, 96(sp) # 8-byte Folded Reload
652; RV64I-NEXT:    ld s7, 88(sp) # 8-byte Folded Reload
653; RV64I-NEXT:    ld s8, 80(sp) # 8-byte Folded Reload
654; RV64I-NEXT:    ld s9, 72(sp) # 8-byte Folded Reload
655; RV64I-NEXT:    ld s10, 64(sp) # 8-byte Folded Reload
656; RV64I-NEXT:    ld s11, 56(sp) # 8-byte Folded Reload
657; RV64I-NEXT:    addi sp, sp, 160
658; RV64I-NEXT:    ret
659;
660; RV64I-LP64E-LABEL: callee:
661; RV64I-LP64E:       # %bb.0:
662; RV64I-LP64E-NEXT:    addi sp, sp, -72
663; RV64I-LP64E-NEXT:    sd ra, 64(sp) # 8-byte Folded Spill
664; RV64I-LP64E-NEXT:    sd s0, 56(sp) # 8-byte Folded Spill
665; RV64I-LP64E-NEXT:    sd s1, 48(sp) # 8-byte Folded Spill
666; RV64I-LP64E-NEXT:    lui a7, %hi(var)
667; RV64I-LP64E-NEXT:    lw a0, %lo(var)(a7)
668; RV64I-LP64E-NEXT:    sd a0, 40(sp) # 8-byte Folded Spill
669; RV64I-LP64E-NEXT:    lw a0, %lo(var+4)(a7)
670; RV64I-LP64E-NEXT:    sd a0, 32(sp) # 8-byte Folded Spill
671; RV64I-LP64E-NEXT:    lw a0, %lo(var+8)(a7)
672; RV64I-LP64E-NEXT:    sd a0, 24(sp) # 8-byte Folded Spill
673; RV64I-LP64E-NEXT:    lw a0, %lo(var+12)(a7)
674; RV64I-LP64E-NEXT:    sd a0, 16(sp) # 8-byte Folded Spill
675; RV64I-LP64E-NEXT:    addi a5, a7, %lo(var)
676; RV64I-LP64E-NEXT:    lw a0, 16(a5)
677; RV64I-LP64E-NEXT:    sd a0, 8(sp) # 8-byte Folded Spill
678; RV64I-LP64E-NEXT:    lw a0, 20(a5)
679; RV64I-LP64E-NEXT:    sd a0, 0(sp) # 8-byte Folded Spill
680; RV64I-LP64E-NEXT:    lw t0, 24(a5)
681; RV64I-LP64E-NEXT:    lw t1, 28(a5)
682; RV64I-LP64E-NEXT:    lw t2, 32(a5)
683; RV64I-LP64E-NEXT:    lw t3, 36(a5)
684; RV64I-LP64E-NEXT:    lw t4, 40(a5)
685; RV64I-LP64E-NEXT:    lw t5, 44(a5)
686; RV64I-LP64E-NEXT:    lw t6, 48(a5)
687; RV64I-LP64E-NEXT:    lw s2, 52(a5)
688; RV64I-LP64E-NEXT:    lw s3, 56(a5)
689; RV64I-LP64E-NEXT:    lw s4, 60(a5)
690; RV64I-LP64E-NEXT:    lw s5, 64(a5)
691; RV64I-LP64E-NEXT:    lw s6, 68(a5)
692; RV64I-LP64E-NEXT:    lw s7, 72(a5)
693; RV64I-LP64E-NEXT:    lw s8, 76(a5)
694; RV64I-LP64E-NEXT:    lw s9, 80(a5)
695; RV64I-LP64E-NEXT:    lw s10, 84(a5)
696; RV64I-LP64E-NEXT:    lw s11, 88(a5)
697; RV64I-LP64E-NEXT:    lw s0, 92(a5)
698; RV64I-LP64E-NEXT:    lw s1, 112(a5)
699; RV64I-LP64E-NEXT:    lw ra, 116(a5)
700; RV64I-LP64E-NEXT:    lw a3, 120(a5)
701; RV64I-LP64E-NEXT:    lw a0, 124(a5)
702; RV64I-LP64E-NEXT:    lw a6, 96(a5)
703; RV64I-LP64E-NEXT:    lw a4, 100(a5)
704; RV64I-LP64E-NEXT:    lw a2, 104(a5)
705; RV64I-LP64E-NEXT:    lw a1, 108(a5)
706; RV64I-LP64E-NEXT:    sw a0, 124(a5)
707; RV64I-LP64E-NEXT:    sw a3, 120(a5)
708; RV64I-LP64E-NEXT:    sw ra, 116(a5)
709; RV64I-LP64E-NEXT:    sw s1, 112(a5)
710; RV64I-LP64E-NEXT:    sw a1, 108(a5)
711; RV64I-LP64E-NEXT:    sw a2, 104(a5)
712; RV64I-LP64E-NEXT:    sw a4, 100(a5)
713; RV64I-LP64E-NEXT:    sw a6, 96(a5)
714; RV64I-LP64E-NEXT:    sw s0, 92(a5)
715; RV64I-LP64E-NEXT:    sw s11, 88(a5)
716; RV64I-LP64E-NEXT:    sw s10, 84(a5)
717; RV64I-LP64E-NEXT:    sw s9, 80(a5)
718; RV64I-LP64E-NEXT:    sw s8, 76(a5)
719; RV64I-LP64E-NEXT:    sw s7, 72(a5)
720; RV64I-LP64E-NEXT:    sw s6, 68(a5)
721; RV64I-LP64E-NEXT:    sw s5, 64(a5)
722; RV64I-LP64E-NEXT:    sw s4, 60(a5)
723; RV64I-LP64E-NEXT:    sw s3, 56(a5)
724; RV64I-LP64E-NEXT:    sw s2, 52(a5)
725; RV64I-LP64E-NEXT:    sw t6, 48(a5)
726; RV64I-LP64E-NEXT:    sw t5, 44(a5)
727; RV64I-LP64E-NEXT:    sw t4, 40(a5)
728; RV64I-LP64E-NEXT:    sw t3, 36(a5)
729; RV64I-LP64E-NEXT:    sw t2, 32(a5)
730; RV64I-LP64E-NEXT:    sw t1, 28(a5)
731; RV64I-LP64E-NEXT:    sw t0, 24(a5)
732; RV64I-LP64E-NEXT:    ld a0, 0(sp) # 8-byte Folded Reload
733; RV64I-LP64E-NEXT:    sw a0, 20(a5)
734; RV64I-LP64E-NEXT:    ld a0, 8(sp) # 8-byte Folded Reload
735; RV64I-LP64E-NEXT:    sw a0, 16(a5)
736; RV64I-LP64E-NEXT:    ld a0, 16(sp) # 8-byte Folded Reload
737; RV64I-LP64E-NEXT:    sw a0, %lo(var+12)(a7)
738; RV64I-LP64E-NEXT:    ld a0, 24(sp) # 8-byte Folded Reload
739; RV64I-LP64E-NEXT:    sw a0, %lo(var+8)(a7)
740; RV64I-LP64E-NEXT:    ld a0, 32(sp) # 8-byte Folded Reload
741; RV64I-LP64E-NEXT:    sw a0, %lo(var+4)(a7)
742; RV64I-LP64E-NEXT:    ld a0, 40(sp) # 8-byte Folded Reload
743; RV64I-LP64E-NEXT:    sw a0, %lo(var)(a7)
744; RV64I-LP64E-NEXT:    ld ra, 64(sp) # 8-byte Folded Reload
745; RV64I-LP64E-NEXT:    ld s0, 56(sp) # 8-byte Folded Reload
746; RV64I-LP64E-NEXT:    ld s1, 48(sp) # 8-byte Folded Reload
747; RV64I-LP64E-NEXT:    addi sp, sp, 72
748; RV64I-LP64E-NEXT:    ret
749;
750; RV64I-WITH-FP-LABEL: callee:
751; RV64I-WITH-FP:       # %bb.0:
752; RV64I-WITH-FP-NEXT:    addi sp, sp, -160
753; RV64I-WITH-FP-NEXT:    sd ra, 152(sp) # 8-byte Folded Spill
754; RV64I-WITH-FP-NEXT:    sd s0, 144(sp) # 8-byte Folded Spill
755; RV64I-WITH-FP-NEXT:    sd s1, 136(sp) # 8-byte Folded Spill
756; RV64I-WITH-FP-NEXT:    sd s2, 128(sp) # 8-byte Folded Spill
757; RV64I-WITH-FP-NEXT:    sd s3, 120(sp) # 8-byte Folded Spill
758; RV64I-WITH-FP-NEXT:    sd s4, 112(sp) # 8-byte Folded Spill
759; RV64I-WITH-FP-NEXT:    sd s5, 104(sp) # 8-byte Folded Spill
760; RV64I-WITH-FP-NEXT:    sd s6, 96(sp) # 8-byte Folded Spill
761; RV64I-WITH-FP-NEXT:    sd s7, 88(sp) # 8-byte Folded Spill
762; RV64I-WITH-FP-NEXT:    sd s8, 80(sp) # 8-byte Folded Spill
763; RV64I-WITH-FP-NEXT:    sd s9, 72(sp) # 8-byte Folded Spill
764; RV64I-WITH-FP-NEXT:    sd s10, 64(sp) # 8-byte Folded Spill
765; RV64I-WITH-FP-NEXT:    sd s11, 56(sp) # 8-byte Folded Spill
766; RV64I-WITH-FP-NEXT:    addi s0, sp, 160
767; RV64I-WITH-FP-NEXT:    lui t0, %hi(var)
768; RV64I-WITH-FP-NEXT:    lw a0, %lo(var)(t0)
769; RV64I-WITH-FP-NEXT:    sd a0, -112(s0) # 8-byte Folded Spill
770; RV64I-WITH-FP-NEXT:    lw a0, %lo(var+4)(t0)
771; RV64I-WITH-FP-NEXT:    sd a0, -120(s0) # 8-byte Folded Spill
772; RV64I-WITH-FP-NEXT:    lw a0, %lo(var+8)(t0)
773; RV64I-WITH-FP-NEXT:    sd a0, -128(s0) # 8-byte Folded Spill
774; RV64I-WITH-FP-NEXT:    lw a0, %lo(var+12)(t0)
775; RV64I-WITH-FP-NEXT:    sd a0, -136(s0) # 8-byte Folded Spill
776; RV64I-WITH-FP-NEXT:    addi a5, t0, %lo(var)
777; RV64I-WITH-FP-NEXT:    lw a0, 16(a5)
778; RV64I-WITH-FP-NEXT:    sd a0, -144(s0) # 8-byte Folded Spill
779; RV64I-WITH-FP-NEXT:    lw a0, 20(a5)
780; RV64I-WITH-FP-NEXT:    sd a0, -152(s0) # 8-byte Folded Spill
781; RV64I-WITH-FP-NEXT:    lw a0, 24(a5)
782; RV64I-WITH-FP-NEXT:    sd a0, -160(s0) # 8-byte Folded Spill
783; RV64I-WITH-FP-NEXT:    lw t1, 28(a5)
784; RV64I-WITH-FP-NEXT:    lw t2, 32(a5)
785; RV64I-WITH-FP-NEXT:    lw t3, 36(a5)
786; RV64I-WITH-FP-NEXT:    lw t4, 40(a5)
787; RV64I-WITH-FP-NEXT:    lw t5, 44(a5)
788; RV64I-WITH-FP-NEXT:    lw t6, 48(a5)
789; RV64I-WITH-FP-NEXT:    lw s1, 52(a5)
790; RV64I-WITH-FP-NEXT:    lw s2, 56(a5)
791; RV64I-WITH-FP-NEXT:    lw s3, 60(a5)
792; RV64I-WITH-FP-NEXT:    lw s4, 64(a5)
793; RV64I-WITH-FP-NEXT:    lw s5, 68(a5)
794; RV64I-WITH-FP-NEXT:    lw s6, 72(a5)
795; RV64I-WITH-FP-NEXT:    lw s7, 76(a5)
796; RV64I-WITH-FP-NEXT:    lw s8, 80(a5)
797; RV64I-WITH-FP-NEXT:    lw s9, 84(a5)
798; RV64I-WITH-FP-NEXT:    lw s10, 88(a5)
799; RV64I-WITH-FP-NEXT:    lw s11, 92(a5)
800; RV64I-WITH-FP-NEXT:    lw ra, 112(a5)
801; RV64I-WITH-FP-NEXT:    lw a4, 116(a5)
802; RV64I-WITH-FP-NEXT:    lw a3, 120(a5)
803; RV64I-WITH-FP-NEXT:    lw a0, 124(a5)
804; RV64I-WITH-FP-NEXT:    lw a7, 96(a5)
805; RV64I-WITH-FP-NEXT:    lw a6, 100(a5)
806; RV64I-WITH-FP-NEXT:    lw a2, 104(a5)
807; RV64I-WITH-FP-NEXT:    lw a1, 108(a5)
808; RV64I-WITH-FP-NEXT:    sw a0, 124(a5)
809; RV64I-WITH-FP-NEXT:    sw a3, 120(a5)
810; RV64I-WITH-FP-NEXT:    sw a4, 116(a5)
811; RV64I-WITH-FP-NEXT:    sw ra, 112(a5)
812; RV64I-WITH-FP-NEXT:    sw a1, 108(a5)
813; RV64I-WITH-FP-NEXT:    sw a2, 104(a5)
814; RV64I-WITH-FP-NEXT:    sw a6, 100(a5)
815; RV64I-WITH-FP-NEXT:    sw a7, 96(a5)
816; RV64I-WITH-FP-NEXT:    sw s11, 92(a5)
817; RV64I-WITH-FP-NEXT:    sw s10, 88(a5)
818; RV64I-WITH-FP-NEXT:    sw s9, 84(a5)
819; RV64I-WITH-FP-NEXT:    sw s8, 80(a5)
820; RV64I-WITH-FP-NEXT:    sw s7, 76(a5)
821; RV64I-WITH-FP-NEXT:    sw s6, 72(a5)
822; RV64I-WITH-FP-NEXT:    sw s5, 68(a5)
823; RV64I-WITH-FP-NEXT:    sw s4, 64(a5)
824; RV64I-WITH-FP-NEXT:    sw s3, 60(a5)
825; RV64I-WITH-FP-NEXT:    sw s2, 56(a5)
826; RV64I-WITH-FP-NEXT:    sw s1, 52(a5)
827; RV64I-WITH-FP-NEXT:    sw t6, 48(a5)
828; RV64I-WITH-FP-NEXT:    sw t5, 44(a5)
829; RV64I-WITH-FP-NEXT:    sw t4, 40(a5)
830; RV64I-WITH-FP-NEXT:    sw t3, 36(a5)
831; RV64I-WITH-FP-NEXT:    sw t2, 32(a5)
832; RV64I-WITH-FP-NEXT:    sw t1, 28(a5)
833; RV64I-WITH-FP-NEXT:    ld a0, -160(s0) # 8-byte Folded Reload
834; RV64I-WITH-FP-NEXT:    sw a0, 24(a5)
835; RV64I-WITH-FP-NEXT:    ld a0, -152(s0) # 8-byte Folded Reload
836; RV64I-WITH-FP-NEXT:    sw a0, 20(a5)
837; RV64I-WITH-FP-NEXT:    ld a0, -144(s0) # 8-byte Folded Reload
838; RV64I-WITH-FP-NEXT:    sw a0, 16(a5)
839; RV64I-WITH-FP-NEXT:    ld a0, -136(s0) # 8-byte Folded Reload
840; RV64I-WITH-FP-NEXT:    sw a0, %lo(var+12)(t0)
841; RV64I-WITH-FP-NEXT:    ld a0, -128(s0) # 8-byte Folded Reload
842; RV64I-WITH-FP-NEXT:    sw a0, %lo(var+8)(t0)
843; RV64I-WITH-FP-NEXT:    ld a0, -120(s0) # 8-byte Folded Reload
844; RV64I-WITH-FP-NEXT:    sw a0, %lo(var+4)(t0)
845; RV64I-WITH-FP-NEXT:    ld a0, -112(s0) # 8-byte Folded Reload
846; RV64I-WITH-FP-NEXT:    sw a0, %lo(var)(t0)
847; RV64I-WITH-FP-NEXT:    ld ra, 152(sp) # 8-byte Folded Reload
848; RV64I-WITH-FP-NEXT:    ld s0, 144(sp) # 8-byte Folded Reload
849; RV64I-WITH-FP-NEXT:    ld s1, 136(sp) # 8-byte Folded Reload
850; RV64I-WITH-FP-NEXT:    ld s2, 128(sp) # 8-byte Folded Reload
851; RV64I-WITH-FP-NEXT:    ld s3, 120(sp) # 8-byte Folded Reload
852; RV64I-WITH-FP-NEXT:    ld s4, 112(sp) # 8-byte Folded Reload
853; RV64I-WITH-FP-NEXT:    ld s5, 104(sp) # 8-byte Folded Reload
854; RV64I-WITH-FP-NEXT:    ld s6, 96(sp) # 8-byte Folded Reload
855; RV64I-WITH-FP-NEXT:    ld s7, 88(sp) # 8-byte Folded Reload
856; RV64I-WITH-FP-NEXT:    ld s8, 80(sp) # 8-byte Folded Reload
857; RV64I-WITH-FP-NEXT:    ld s9, 72(sp) # 8-byte Folded Reload
858; RV64I-WITH-FP-NEXT:    ld s10, 64(sp) # 8-byte Folded Reload
859; RV64I-WITH-FP-NEXT:    ld s11, 56(sp) # 8-byte Folded Reload
860; RV64I-WITH-FP-NEXT:    addi sp, sp, 160
861; RV64I-WITH-FP-NEXT:    ret
862;
863; RV64IZCMP-LABEL: callee:
864; RV64IZCMP:       # %bb.0:
865; RV64IZCMP-NEXT:    cm.push {ra, s0-s11}, -160
866; RV64IZCMP-NEXT:    lui t0, %hi(var)
867; RV64IZCMP-NEXT:    lw a0, %lo(var)(t0)
868; RV64IZCMP-NEXT:    sd a0, 40(sp) # 8-byte Folded Spill
869; RV64IZCMP-NEXT:    lw a0, %lo(var+4)(t0)
870; RV64IZCMP-NEXT:    sd a0, 32(sp) # 8-byte Folded Spill
871; RV64IZCMP-NEXT:    lw a0, %lo(var+8)(t0)
872; RV64IZCMP-NEXT:    sd a0, 24(sp) # 8-byte Folded Spill
873; RV64IZCMP-NEXT:    lw a0, %lo(var+12)(t0)
874; RV64IZCMP-NEXT:    sd a0, 16(sp) # 8-byte Folded Spill
875; RV64IZCMP-NEXT:    addi a5, t0, %lo(var)
876; RV64IZCMP-NEXT:    lw a0, 16(a5)
877; RV64IZCMP-NEXT:    sd a0, 8(sp) # 8-byte Folded Spill
878; RV64IZCMP-NEXT:    lw a0, 20(a5)
879; RV64IZCMP-NEXT:    sd a0, 0(sp) # 8-byte Folded Spill
880; RV64IZCMP-NEXT:    lw t4, 24(a5)
881; RV64IZCMP-NEXT:    lw t5, 28(a5)
882; RV64IZCMP-NEXT:    lw t6, 32(a5)
883; RV64IZCMP-NEXT:    lw s2, 36(a5)
884; RV64IZCMP-NEXT:    lw s3, 40(a5)
885; RV64IZCMP-NEXT:    lw s4, 44(a5)
886; RV64IZCMP-NEXT:    lw s5, 48(a5)
887; RV64IZCMP-NEXT:    lw s6, 52(a5)
888; RV64IZCMP-NEXT:    lw s7, 56(a5)
889; RV64IZCMP-NEXT:    lw s8, 60(a5)
890; RV64IZCMP-NEXT:    lw s9, 64(a5)
891; RV64IZCMP-NEXT:    lw s10, 68(a5)
892; RV64IZCMP-NEXT:    lw s11, 72(a5)
893; RV64IZCMP-NEXT:    lw ra, 76(a5)
894; RV64IZCMP-NEXT:    lw s1, 80(a5)
895; RV64IZCMP-NEXT:    lw t3, 84(a5)
896; RV64IZCMP-NEXT:    lw t2, 88(a5)
897; RV64IZCMP-NEXT:    lw t1, 92(a5)
898; RV64IZCMP-NEXT:    lw a7, 112(a5)
899; RV64IZCMP-NEXT:    lw s0, 116(a5)
900; RV64IZCMP-NEXT:    lw a3, 120(a5)
901; RV64IZCMP-NEXT:    lw a0, 124(a5)
902; RV64IZCMP-NEXT:    lw a6, 96(a5)
903; RV64IZCMP-NEXT:    lw a4, 100(a5)
904; RV64IZCMP-NEXT:    lw a2, 104(a5)
905; RV64IZCMP-NEXT:    lw a1, 108(a5)
906; RV64IZCMP-NEXT:    sw a0, 124(a5)
907; RV64IZCMP-NEXT:    sw a3, 120(a5)
908; RV64IZCMP-NEXT:    sw s0, 116(a5)
909; RV64IZCMP-NEXT:    sw a7, 112(a5)
910; RV64IZCMP-NEXT:    sw a1, 108(a5)
911; RV64IZCMP-NEXT:    sw a2, 104(a5)
912; RV64IZCMP-NEXT:    sw a4, 100(a5)
913; RV64IZCMP-NEXT:    sw a6, 96(a5)
914; RV64IZCMP-NEXT:    sw t1, 92(a5)
915; RV64IZCMP-NEXT:    sw t2, 88(a5)
916; RV64IZCMP-NEXT:    sw t3, 84(a5)
917; RV64IZCMP-NEXT:    sw s1, 80(a5)
918; RV64IZCMP-NEXT:    sw ra, 76(a5)
919; RV64IZCMP-NEXT:    sw s11, 72(a5)
920; RV64IZCMP-NEXT:    sw s10, 68(a5)
921; RV64IZCMP-NEXT:    sw s9, 64(a5)
922; RV64IZCMP-NEXT:    sw s8, 60(a5)
923; RV64IZCMP-NEXT:    sw s7, 56(a5)
924; RV64IZCMP-NEXT:    sw s6, 52(a5)
925; RV64IZCMP-NEXT:    sw s5, 48(a5)
926; RV64IZCMP-NEXT:    sw s4, 44(a5)
927; RV64IZCMP-NEXT:    sw s3, 40(a5)
928; RV64IZCMP-NEXT:    sw s2, 36(a5)
929; RV64IZCMP-NEXT:    sw t6, 32(a5)
930; RV64IZCMP-NEXT:    sw t5, 28(a5)
931; RV64IZCMP-NEXT:    sw t4, 24(a5)
932; RV64IZCMP-NEXT:    ld a0, 0(sp) # 8-byte Folded Reload
933; RV64IZCMP-NEXT:    sw a0, 20(a5)
934; RV64IZCMP-NEXT:    ld a0, 8(sp) # 8-byte Folded Reload
935; RV64IZCMP-NEXT:    sw a0, 16(a5)
936; RV64IZCMP-NEXT:    ld a0, 16(sp) # 8-byte Folded Reload
937; RV64IZCMP-NEXT:    sw a0, %lo(var+12)(t0)
938; RV64IZCMP-NEXT:    ld a0, 24(sp) # 8-byte Folded Reload
939; RV64IZCMP-NEXT:    sw a0, %lo(var+8)(t0)
940; RV64IZCMP-NEXT:    ld a0, 32(sp) # 8-byte Folded Reload
941; RV64IZCMP-NEXT:    sw a0, %lo(var+4)(t0)
942; RV64IZCMP-NEXT:    ld a0, 40(sp) # 8-byte Folded Reload
943; RV64IZCMP-NEXT:    sw a0, %lo(var)(t0)
944; RV64IZCMP-NEXT:    cm.popret {ra, s0-s11}, 160
945;
946; RV64IZCMP-WITH-FP-LABEL: callee:
947; RV64IZCMP-WITH-FP:       # %bb.0:
948; RV64IZCMP-WITH-FP-NEXT:    addi sp, sp, -160
949; RV64IZCMP-WITH-FP-NEXT:    sd ra, 152(sp) # 8-byte Folded Spill
950; RV64IZCMP-WITH-FP-NEXT:    sd s0, 144(sp) # 8-byte Folded Spill
951; RV64IZCMP-WITH-FP-NEXT:    sd s1, 136(sp) # 8-byte Folded Spill
952; RV64IZCMP-WITH-FP-NEXT:    sd s2, 128(sp) # 8-byte Folded Spill
953; RV64IZCMP-WITH-FP-NEXT:    sd s3, 120(sp) # 8-byte Folded Spill
954; RV64IZCMP-WITH-FP-NEXT:    sd s4, 112(sp) # 8-byte Folded Spill
955; RV64IZCMP-WITH-FP-NEXT:    sd s5, 104(sp) # 8-byte Folded Spill
956; RV64IZCMP-WITH-FP-NEXT:    sd s6, 96(sp) # 8-byte Folded Spill
957; RV64IZCMP-WITH-FP-NEXT:    sd s7, 88(sp) # 8-byte Folded Spill
958; RV64IZCMP-WITH-FP-NEXT:    sd s8, 80(sp) # 8-byte Folded Spill
959; RV64IZCMP-WITH-FP-NEXT:    sd s9, 72(sp) # 8-byte Folded Spill
960; RV64IZCMP-WITH-FP-NEXT:    sd s10, 64(sp) # 8-byte Folded Spill
961; RV64IZCMP-WITH-FP-NEXT:    sd s11, 56(sp) # 8-byte Folded Spill
962; RV64IZCMP-WITH-FP-NEXT:    addi s0, sp, 160
963; RV64IZCMP-WITH-FP-NEXT:    lui t1, %hi(var)
964; RV64IZCMP-WITH-FP-NEXT:    lw a0, %lo(var)(t1)
965; RV64IZCMP-WITH-FP-NEXT:    sd a0, -112(s0) # 8-byte Folded Spill
966; RV64IZCMP-WITH-FP-NEXT:    lw a0, %lo(var+4)(t1)
967; RV64IZCMP-WITH-FP-NEXT:    sd a0, -120(s0) # 8-byte Folded Spill
968; RV64IZCMP-WITH-FP-NEXT:    lw a0, %lo(var+8)(t1)
969; RV64IZCMP-WITH-FP-NEXT:    sd a0, -128(s0) # 8-byte Folded Spill
970; RV64IZCMP-WITH-FP-NEXT:    lw a0, %lo(var+12)(t1)
971; RV64IZCMP-WITH-FP-NEXT:    sd a0, -136(s0) # 8-byte Folded Spill
972; RV64IZCMP-WITH-FP-NEXT:    addi a5, t1, %lo(var)
973; RV64IZCMP-WITH-FP-NEXT:    lw a0, 16(a5)
974; RV64IZCMP-WITH-FP-NEXT:    sd a0, -144(s0) # 8-byte Folded Spill
975; RV64IZCMP-WITH-FP-NEXT:    lw a0, 20(a5)
976; RV64IZCMP-WITH-FP-NEXT:    sd a0, -152(s0) # 8-byte Folded Spill
977; RV64IZCMP-WITH-FP-NEXT:    lw a0, 24(a5)
978; RV64IZCMP-WITH-FP-NEXT:    sd a0, -160(s0) # 8-byte Folded Spill
979; RV64IZCMP-WITH-FP-NEXT:    lw t5, 28(a5)
980; RV64IZCMP-WITH-FP-NEXT:    lw t6, 32(a5)
981; RV64IZCMP-WITH-FP-NEXT:    lw s2, 36(a5)
982; RV64IZCMP-WITH-FP-NEXT:    lw s3, 40(a5)
983; RV64IZCMP-WITH-FP-NEXT:    lw s4, 44(a5)
984; RV64IZCMP-WITH-FP-NEXT:    lw s5, 48(a5)
985; RV64IZCMP-WITH-FP-NEXT:    lw s6, 52(a5)
986; RV64IZCMP-WITH-FP-NEXT:    lw s7, 56(a5)
987; RV64IZCMP-WITH-FP-NEXT:    lw s8, 60(a5)
988; RV64IZCMP-WITH-FP-NEXT:    lw s9, 64(a5)
989; RV64IZCMP-WITH-FP-NEXT:    lw s10, 68(a5)
990; RV64IZCMP-WITH-FP-NEXT:    lw s11, 72(a5)
991; RV64IZCMP-WITH-FP-NEXT:    lw ra, 76(a5)
992; RV64IZCMP-WITH-FP-NEXT:    lw t4, 80(a5)
993; RV64IZCMP-WITH-FP-NEXT:    lw t3, 84(a5)
994; RV64IZCMP-WITH-FP-NEXT:    lw t2, 88(a5)
995; RV64IZCMP-WITH-FP-NEXT:    lw s1, 92(a5)
996; RV64IZCMP-WITH-FP-NEXT:    lw t0, 112(a5)
997; RV64IZCMP-WITH-FP-NEXT:    lw a4, 116(a5)
998; RV64IZCMP-WITH-FP-NEXT:    lw a3, 120(a5)
999; RV64IZCMP-WITH-FP-NEXT:    lw a0, 124(a5)
1000; RV64IZCMP-WITH-FP-NEXT:    lw a7, 96(a5)
1001; RV64IZCMP-WITH-FP-NEXT:    lw a6, 100(a5)
1002; RV64IZCMP-WITH-FP-NEXT:    lw a2, 104(a5)
1003; RV64IZCMP-WITH-FP-NEXT:    lw a1, 108(a5)
1004; RV64IZCMP-WITH-FP-NEXT:    sw a0, 124(a5)
1005; RV64IZCMP-WITH-FP-NEXT:    sw a3, 120(a5)
1006; RV64IZCMP-WITH-FP-NEXT:    sw a4, 116(a5)
1007; RV64IZCMP-WITH-FP-NEXT:    sw t0, 112(a5)
1008; RV64IZCMP-WITH-FP-NEXT:    sw a1, 108(a5)
1009; RV64IZCMP-WITH-FP-NEXT:    sw a2, 104(a5)
1010; RV64IZCMP-WITH-FP-NEXT:    sw a6, 100(a5)
1011; RV64IZCMP-WITH-FP-NEXT:    sw a7, 96(a5)
1012; RV64IZCMP-WITH-FP-NEXT:    sw s1, 92(a5)
1013; RV64IZCMP-WITH-FP-NEXT:    sw t2, 88(a5)
1014; RV64IZCMP-WITH-FP-NEXT:    sw t3, 84(a5)
1015; RV64IZCMP-WITH-FP-NEXT:    sw t4, 80(a5)
1016; RV64IZCMP-WITH-FP-NEXT:    sw ra, 76(a5)
1017; RV64IZCMP-WITH-FP-NEXT:    sw s11, 72(a5)
1018; RV64IZCMP-WITH-FP-NEXT:    sw s10, 68(a5)
1019; RV64IZCMP-WITH-FP-NEXT:    sw s9, 64(a5)
1020; RV64IZCMP-WITH-FP-NEXT:    sw s8, 60(a5)
1021; RV64IZCMP-WITH-FP-NEXT:    sw s7, 56(a5)
1022; RV64IZCMP-WITH-FP-NEXT:    sw s6, 52(a5)
1023; RV64IZCMP-WITH-FP-NEXT:    sw s5, 48(a5)
1024; RV64IZCMP-WITH-FP-NEXT:    sw s4, 44(a5)
1025; RV64IZCMP-WITH-FP-NEXT:    sw s3, 40(a5)
1026; RV64IZCMP-WITH-FP-NEXT:    sw s2, 36(a5)
1027; RV64IZCMP-WITH-FP-NEXT:    sw t6, 32(a5)
1028; RV64IZCMP-WITH-FP-NEXT:    sw t5, 28(a5)
1029; RV64IZCMP-WITH-FP-NEXT:    ld a0, -160(s0) # 8-byte Folded Reload
1030; RV64IZCMP-WITH-FP-NEXT:    sw a0, 24(a5)
1031; RV64IZCMP-WITH-FP-NEXT:    ld a0, -152(s0) # 8-byte Folded Reload
1032; RV64IZCMP-WITH-FP-NEXT:    sw a0, 20(a5)
1033; RV64IZCMP-WITH-FP-NEXT:    ld a0, -144(s0) # 8-byte Folded Reload
1034; RV64IZCMP-WITH-FP-NEXT:    sw a0, 16(a5)
1035; RV64IZCMP-WITH-FP-NEXT:    ld a0, -136(s0) # 8-byte Folded Reload
1036; RV64IZCMP-WITH-FP-NEXT:    sw a0, %lo(var+12)(t1)
1037; RV64IZCMP-WITH-FP-NEXT:    ld a0, -128(s0) # 8-byte Folded Reload
1038; RV64IZCMP-WITH-FP-NEXT:    sw a0, %lo(var+8)(t1)
1039; RV64IZCMP-WITH-FP-NEXT:    ld a0, -120(s0) # 8-byte Folded Reload
1040; RV64IZCMP-WITH-FP-NEXT:    sw a0, %lo(var+4)(t1)
1041; RV64IZCMP-WITH-FP-NEXT:    ld a0, -112(s0) # 8-byte Folded Reload
1042; RV64IZCMP-WITH-FP-NEXT:    sw a0, %lo(var)(t1)
1043; RV64IZCMP-WITH-FP-NEXT:    ld ra, 152(sp) # 8-byte Folded Reload
1044; RV64IZCMP-WITH-FP-NEXT:    ld s0, 144(sp) # 8-byte Folded Reload
1045; RV64IZCMP-WITH-FP-NEXT:    ld s1, 136(sp) # 8-byte Folded Reload
1046; RV64IZCMP-WITH-FP-NEXT:    ld s2, 128(sp) # 8-byte Folded Reload
1047; RV64IZCMP-WITH-FP-NEXT:    ld s3, 120(sp) # 8-byte Folded Reload
1048; RV64IZCMP-WITH-FP-NEXT:    ld s4, 112(sp) # 8-byte Folded Reload
1049; RV64IZCMP-WITH-FP-NEXT:    ld s5, 104(sp) # 8-byte Folded Reload
1050; RV64IZCMP-WITH-FP-NEXT:    ld s6, 96(sp) # 8-byte Folded Reload
1051; RV64IZCMP-WITH-FP-NEXT:    ld s7, 88(sp) # 8-byte Folded Reload
1052; RV64IZCMP-WITH-FP-NEXT:    ld s8, 80(sp) # 8-byte Folded Reload
1053; RV64IZCMP-WITH-FP-NEXT:    ld s9, 72(sp) # 8-byte Folded Reload
1054; RV64IZCMP-WITH-FP-NEXT:    ld s10, 64(sp) # 8-byte Folded Reload
1055; RV64IZCMP-WITH-FP-NEXT:    ld s11, 56(sp) # 8-byte Folded Reload
1056; RV64IZCMP-WITH-FP-NEXT:    addi sp, sp, 160
1057; RV64IZCMP-WITH-FP-NEXT:    ret
1058  %val = load [32 x i32], ptr @var
1059  store volatile [32 x i32] %val, ptr @var
1060  ret void
1061}
1062
1063; This function tests that RISCVRegisterInfo::getCallPreservedMask returns
1064; something appropriate.
1065
1066define void @caller() nounwind {
1067; RV32I-LABEL: caller:
1068; RV32I:       # %bb.0:
1069; RV32I-NEXT:    addi sp, sp, -144
1070; RV32I-NEXT:    sw ra, 140(sp) # 4-byte Folded Spill
1071; RV32I-NEXT:    sw s0, 136(sp) # 4-byte Folded Spill
1072; RV32I-NEXT:    sw s1, 132(sp) # 4-byte Folded Spill
1073; RV32I-NEXT:    sw s2, 128(sp) # 4-byte Folded Spill
1074; RV32I-NEXT:    sw s3, 124(sp) # 4-byte Folded Spill
1075; RV32I-NEXT:    sw s4, 120(sp) # 4-byte Folded Spill
1076; RV32I-NEXT:    sw s5, 116(sp) # 4-byte Folded Spill
1077; RV32I-NEXT:    sw s6, 112(sp) # 4-byte Folded Spill
1078; RV32I-NEXT:    sw s7, 108(sp) # 4-byte Folded Spill
1079; RV32I-NEXT:    sw s8, 104(sp) # 4-byte Folded Spill
1080; RV32I-NEXT:    sw s9, 100(sp) # 4-byte Folded Spill
1081; RV32I-NEXT:    sw s10, 96(sp) # 4-byte Folded Spill
1082; RV32I-NEXT:    sw s11, 92(sp) # 4-byte Folded Spill
1083; RV32I-NEXT:    lui s0, %hi(var)
1084; RV32I-NEXT:    lw a0, %lo(var)(s0)
1085; RV32I-NEXT:    sw a0, 88(sp) # 4-byte Folded Spill
1086; RV32I-NEXT:    lw a0, %lo(var+4)(s0)
1087; RV32I-NEXT:    sw a0, 84(sp) # 4-byte Folded Spill
1088; RV32I-NEXT:    lw a0, %lo(var+8)(s0)
1089; RV32I-NEXT:    sw a0, 80(sp) # 4-byte Folded Spill
1090; RV32I-NEXT:    lw a0, %lo(var+12)(s0)
1091; RV32I-NEXT:    sw a0, 76(sp) # 4-byte Folded Spill
1092; RV32I-NEXT:    addi s5, s0, %lo(var)
1093; RV32I-NEXT:    lw a0, 16(s5)
1094; RV32I-NEXT:    sw a0, 72(sp) # 4-byte Folded Spill
1095; RV32I-NEXT:    lw a0, 20(s5)
1096; RV32I-NEXT:    sw a0, 68(sp) # 4-byte Folded Spill
1097; RV32I-NEXT:    lw a0, 24(s5)
1098; RV32I-NEXT:    sw a0, 64(sp) # 4-byte Folded Spill
1099; RV32I-NEXT:    lw a0, 28(s5)
1100; RV32I-NEXT:    sw a0, 60(sp) # 4-byte Folded Spill
1101; RV32I-NEXT:    lw a0, 32(s5)
1102; RV32I-NEXT:    sw a0, 56(sp) # 4-byte Folded Spill
1103; RV32I-NEXT:    lw a0, 36(s5)
1104; RV32I-NEXT:    sw a0, 52(sp) # 4-byte Folded Spill
1105; RV32I-NEXT:    lw a0, 40(s5)
1106; RV32I-NEXT:    sw a0, 48(sp) # 4-byte Folded Spill
1107; RV32I-NEXT:    lw a0, 44(s5)
1108; RV32I-NEXT:    sw a0, 44(sp) # 4-byte Folded Spill
1109; RV32I-NEXT:    lw a0, 48(s5)
1110; RV32I-NEXT:    sw a0, 40(sp) # 4-byte Folded Spill
1111; RV32I-NEXT:    lw a0, 52(s5)
1112; RV32I-NEXT:    sw a0, 36(sp) # 4-byte Folded Spill
1113; RV32I-NEXT:    lw a0, 56(s5)
1114; RV32I-NEXT:    sw a0, 32(sp) # 4-byte Folded Spill
1115; RV32I-NEXT:    lw a0, 60(s5)
1116; RV32I-NEXT:    sw a0, 28(sp) # 4-byte Folded Spill
1117; RV32I-NEXT:    lw a0, 64(s5)
1118; RV32I-NEXT:    sw a0, 24(sp) # 4-byte Folded Spill
1119; RV32I-NEXT:    lw a0, 68(s5)
1120; RV32I-NEXT:    sw a0, 20(sp) # 4-byte Folded Spill
1121; RV32I-NEXT:    lw a0, 72(s5)
1122; RV32I-NEXT:    sw a0, 16(sp) # 4-byte Folded Spill
1123; RV32I-NEXT:    lw a0, 76(s5)
1124; RV32I-NEXT:    sw a0, 12(sp) # 4-byte Folded Spill
1125; RV32I-NEXT:    lw a0, 80(s5)
1126; RV32I-NEXT:    sw a0, 8(sp) # 4-byte Folded Spill
1127; RV32I-NEXT:    lw a0, 84(s5)
1128; RV32I-NEXT:    sw a0, 4(sp) # 4-byte Folded Spill
1129; RV32I-NEXT:    lw s3, 88(s5)
1130; RV32I-NEXT:    lw s4, 92(s5)
1131; RV32I-NEXT:    lw s6, 96(s5)
1132; RV32I-NEXT:    lw s7, 100(s5)
1133; RV32I-NEXT:    lw s8, 104(s5)
1134; RV32I-NEXT:    lw s9, 108(s5)
1135; RV32I-NEXT:    lw s10, 112(s5)
1136; RV32I-NEXT:    lw s11, 116(s5)
1137; RV32I-NEXT:    lw s1, 120(s5)
1138; RV32I-NEXT:    lw s2, 124(s5)
1139; RV32I-NEXT:    call callee
1140; RV32I-NEXT:    sw s2, 124(s5)
1141; RV32I-NEXT:    sw s1, 120(s5)
1142; RV32I-NEXT:    sw s11, 116(s5)
1143; RV32I-NEXT:    sw s10, 112(s5)
1144; RV32I-NEXT:    sw s9, 108(s5)
1145; RV32I-NEXT:    sw s8, 104(s5)
1146; RV32I-NEXT:    sw s7, 100(s5)
1147; RV32I-NEXT:    sw s6, 96(s5)
1148; RV32I-NEXT:    sw s4, 92(s5)
1149; RV32I-NEXT:    sw s3, 88(s5)
1150; RV32I-NEXT:    lw a0, 4(sp) # 4-byte Folded Reload
1151; RV32I-NEXT:    sw a0, 84(s5)
1152; RV32I-NEXT:    lw a0, 8(sp) # 4-byte Folded Reload
1153; RV32I-NEXT:    sw a0, 80(s5)
1154; RV32I-NEXT:    lw a0, 12(sp) # 4-byte Folded Reload
1155; RV32I-NEXT:    sw a0, 76(s5)
1156; RV32I-NEXT:    lw a0, 16(sp) # 4-byte Folded Reload
1157; RV32I-NEXT:    sw a0, 72(s5)
1158; RV32I-NEXT:    lw a0, 20(sp) # 4-byte Folded Reload
1159; RV32I-NEXT:    sw a0, 68(s5)
1160; RV32I-NEXT:    lw a0, 24(sp) # 4-byte Folded Reload
1161; RV32I-NEXT:    sw a0, 64(s5)
1162; RV32I-NEXT:    lw a0, 28(sp) # 4-byte Folded Reload
1163; RV32I-NEXT:    sw a0, 60(s5)
1164; RV32I-NEXT:    lw a0, 32(sp) # 4-byte Folded Reload
1165; RV32I-NEXT:    sw a0, 56(s5)
1166; RV32I-NEXT:    lw a0, 36(sp) # 4-byte Folded Reload
1167; RV32I-NEXT:    sw a0, 52(s5)
1168; RV32I-NEXT:    lw a0, 40(sp) # 4-byte Folded Reload
1169; RV32I-NEXT:    sw a0, 48(s5)
1170; RV32I-NEXT:    lw a0, 44(sp) # 4-byte Folded Reload
1171; RV32I-NEXT:    sw a0, 44(s5)
1172; RV32I-NEXT:    lw a0, 48(sp) # 4-byte Folded Reload
1173; RV32I-NEXT:    sw a0, 40(s5)
1174; RV32I-NEXT:    lw a0, 52(sp) # 4-byte Folded Reload
1175; RV32I-NEXT:    sw a0, 36(s5)
1176; RV32I-NEXT:    lw a0, 56(sp) # 4-byte Folded Reload
1177; RV32I-NEXT:    sw a0, 32(s5)
1178; RV32I-NEXT:    lw a0, 60(sp) # 4-byte Folded Reload
1179; RV32I-NEXT:    sw a0, 28(s5)
1180; RV32I-NEXT:    lw a0, 64(sp) # 4-byte Folded Reload
1181; RV32I-NEXT:    sw a0, 24(s5)
1182; RV32I-NEXT:    lw a0, 68(sp) # 4-byte Folded Reload
1183; RV32I-NEXT:    sw a0, 20(s5)
1184; RV32I-NEXT:    lw a0, 72(sp) # 4-byte Folded Reload
1185; RV32I-NEXT:    sw a0, 16(s5)
1186; RV32I-NEXT:    lw a0, 76(sp) # 4-byte Folded Reload
1187; RV32I-NEXT:    sw a0, %lo(var+12)(s0)
1188; RV32I-NEXT:    lw a0, 80(sp) # 4-byte Folded Reload
1189; RV32I-NEXT:    sw a0, %lo(var+8)(s0)
1190; RV32I-NEXT:    lw a0, 84(sp) # 4-byte Folded Reload
1191; RV32I-NEXT:    sw a0, %lo(var+4)(s0)
1192; RV32I-NEXT:    lw a0, 88(sp) # 4-byte Folded Reload
1193; RV32I-NEXT:    sw a0, %lo(var)(s0)
1194; RV32I-NEXT:    lw ra, 140(sp) # 4-byte Folded Reload
1195; RV32I-NEXT:    lw s0, 136(sp) # 4-byte Folded Reload
1196; RV32I-NEXT:    lw s1, 132(sp) # 4-byte Folded Reload
1197; RV32I-NEXT:    lw s2, 128(sp) # 4-byte Folded Reload
1198; RV32I-NEXT:    lw s3, 124(sp) # 4-byte Folded Reload
1199; RV32I-NEXT:    lw s4, 120(sp) # 4-byte Folded Reload
1200; RV32I-NEXT:    lw s5, 116(sp) # 4-byte Folded Reload
1201; RV32I-NEXT:    lw s6, 112(sp) # 4-byte Folded Reload
1202; RV32I-NEXT:    lw s7, 108(sp) # 4-byte Folded Reload
1203; RV32I-NEXT:    lw s8, 104(sp) # 4-byte Folded Reload
1204; RV32I-NEXT:    lw s9, 100(sp) # 4-byte Folded Reload
1205; RV32I-NEXT:    lw s10, 96(sp) # 4-byte Folded Reload
1206; RV32I-NEXT:    lw s11, 92(sp) # 4-byte Folded Reload
1207; RV32I-NEXT:    addi sp, sp, 144
1208; RV32I-NEXT:    ret
1209;
1210; RV32I-ILP32E-LABEL: caller:
1211; RV32I-ILP32E:       # %bb.0:
1212; RV32I-ILP32E-NEXT:    addi sp, sp, -136
1213; RV32I-ILP32E-NEXT:    sw ra, 132(sp) # 4-byte Folded Spill
1214; RV32I-ILP32E-NEXT:    sw s0, 128(sp) # 4-byte Folded Spill
1215; RV32I-ILP32E-NEXT:    sw s1, 124(sp) # 4-byte Folded Spill
1216; RV32I-ILP32E-NEXT:    lui a0, %hi(var)
1217; RV32I-ILP32E-NEXT:    lw a1, %lo(var)(a0)
1218; RV32I-ILP32E-NEXT:    sw a1, 120(sp) # 4-byte Folded Spill
1219; RV32I-ILP32E-NEXT:    lw a1, %lo(var+4)(a0)
1220; RV32I-ILP32E-NEXT:    sw a1, 116(sp) # 4-byte Folded Spill
1221; RV32I-ILP32E-NEXT:    lw a1, %lo(var+8)(a0)
1222; RV32I-ILP32E-NEXT:    sw a1, 112(sp) # 4-byte Folded Spill
1223; RV32I-ILP32E-NEXT:    lw a1, %lo(var+12)(a0)
1224; RV32I-ILP32E-NEXT:    sw a1, 108(sp) # 4-byte Folded Spill
1225; RV32I-ILP32E-NEXT:    addi s1, a0, %lo(var)
1226; RV32I-ILP32E-NEXT:    lw a0, 16(s1)
1227; RV32I-ILP32E-NEXT:    sw a0, 104(sp) # 4-byte Folded Spill
1228; RV32I-ILP32E-NEXT:    lw a0, 20(s1)
1229; RV32I-ILP32E-NEXT:    sw a0, 100(sp) # 4-byte Folded Spill
1230; RV32I-ILP32E-NEXT:    lw a0, 24(s1)
1231; RV32I-ILP32E-NEXT:    sw a0, 96(sp) # 4-byte Folded Spill
1232; RV32I-ILP32E-NEXT:    lw a0, 28(s1)
1233; RV32I-ILP32E-NEXT:    sw a0, 92(sp) # 4-byte Folded Spill
1234; RV32I-ILP32E-NEXT:    lw a0, 32(s1)
1235; RV32I-ILP32E-NEXT:    sw a0, 88(sp) # 4-byte Folded Spill
1236; RV32I-ILP32E-NEXT:    lw a0, 36(s1)
1237; RV32I-ILP32E-NEXT:    sw a0, 84(sp) # 4-byte Folded Spill
1238; RV32I-ILP32E-NEXT:    lw a0, 40(s1)
1239; RV32I-ILP32E-NEXT:    sw a0, 80(sp) # 4-byte Folded Spill
1240; RV32I-ILP32E-NEXT:    lw a0, 44(s1)
1241; RV32I-ILP32E-NEXT:    sw a0, 76(sp) # 4-byte Folded Spill
1242; RV32I-ILP32E-NEXT:    lw a0, 48(s1)
1243; RV32I-ILP32E-NEXT:    sw a0, 72(sp) # 4-byte Folded Spill
1244; RV32I-ILP32E-NEXT:    lw a0, 52(s1)
1245; RV32I-ILP32E-NEXT:    sw a0, 68(sp) # 4-byte Folded Spill
1246; RV32I-ILP32E-NEXT:    lw a0, 56(s1)
1247; RV32I-ILP32E-NEXT:    sw a0, 64(sp) # 4-byte Folded Spill
1248; RV32I-ILP32E-NEXT:    lw a0, 60(s1)
1249; RV32I-ILP32E-NEXT:    sw a0, 60(sp) # 4-byte Folded Spill
1250; RV32I-ILP32E-NEXT:    lw a0, 64(s1)
1251; RV32I-ILP32E-NEXT:    sw a0, 56(sp) # 4-byte Folded Spill
1252; RV32I-ILP32E-NEXT:    lw a0, 68(s1)
1253; RV32I-ILP32E-NEXT:    sw a0, 52(sp) # 4-byte Folded Spill
1254; RV32I-ILP32E-NEXT:    lw a0, 72(s1)
1255; RV32I-ILP32E-NEXT:    sw a0, 48(sp) # 4-byte Folded Spill
1256; RV32I-ILP32E-NEXT:    lw a0, 76(s1)
1257; RV32I-ILP32E-NEXT:    sw a0, 44(sp) # 4-byte Folded Spill
1258; RV32I-ILP32E-NEXT:    lw a0, 80(s1)
1259; RV32I-ILP32E-NEXT:    sw a0, 40(sp) # 4-byte Folded Spill
1260; RV32I-ILP32E-NEXT:    lw a0, 84(s1)
1261; RV32I-ILP32E-NEXT:    sw a0, 36(sp) # 4-byte Folded Spill
1262; RV32I-ILP32E-NEXT:    lw a0, 88(s1)
1263; RV32I-ILP32E-NEXT:    sw a0, 32(sp) # 4-byte Folded Spill
1264; RV32I-ILP32E-NEXT:    lw a0, 92(s1)
1265; RV32I-ILP32E-NEXT:    sw a0, 28(sp) # 4-byte Folded Spill
1266; RV32I-ILP32E-NEXT:    lw a0, 96(s1)
1267; RV32I-ILP32E-NEXT:    sw a0, 24(sp) # 4-byte Folded Spill
1268; RV32I-ILP32E-NEXT:    lw a0, 100(s1)
1269; RV32I-ILP32E-NEXT:    sw a0, 20(sp) # 4-byte Folded Spill
1270; RV32I-ILP32E-NEXT:    lw a0, 104(s1)
1271; RV32I-ILP32E-NEXT:    sw a0, 16(sp) # 4-byte Folded Spill
1272; RV32I-ILP32E-NEXT:    lw a0, 108(s1)
1273; RV32I-ILP32E-NEXT:    sw a0, 12(sp) # 4-byte Folded Spill
1274; RV32I-ILP32E-NEXT:    lw a0, 112(s1)
1275; RV32I-ILP32E-NEXT:    sw a0, 8(sp) # 4-byte Folded Spill
1276; RV32I-ILP32E-NEXT:    lw a0, 116(s1)
1277; RV32I-ILP32E-NEXT:    sw a0, 4(sp) # 4-byte Folded Spill
1278; RV32I-ILP32E-NEXT:    lw a0, 120(s1)
1279; RV32I-ILP32E-NEXT:    sw a0, 0(sp) # 4-byte Folded Spill
1280; RV32I-ILP32E-NEXT:    lw s0, 124(s1)
1281; RV32I-ILP32E-NEXT:    call callee
1282; RV32I-ILP32E-NEXT:    sw s0, 124(s1)
1283; RV32I-ILP32E-NEXT:    lw a0, 0(sp) # 4-byte Folded Reload
1284; RV32I-ILP32E-NEXT:    sw a0, 120(s1)
1285; RV32I-ILP32E-NEXT:    lw a0, 4(sp) # 4-byte Folded Reload
1286; RV32I-ILP32E-NEXT:    sw a0, 116(s1)
1287; RV32I-ILP32E-NEXT:    lw a0, 8(sp) # 4-byte Folded Reload
1288; RV32I-ILP32E-NEXT:    sw a0, 112(s1)
1289; RV32I-ILP32E-NEXT:    lw a0, 12(sp) # 4-byte Folded Reload
1290; RV32I-ILP32E-NEXT:    sw a0, 108(s1)
1291; RV32I-ILP32E-NEXT:    lw a0, 16(sp) # 4-byte Folded Reload
1292; RV32I-ILP32E-NEXT:    sw a0, 104(s1)
1293; RV32I-ILP32E-NEXT:    lw a0, 20(sp) # 4-byte Folded Reload
1294; RV32I-ILP32E-NEXT:    sw a0, 100(s1)
1295; RV32I-ILP32E-NEXT:    lw a0, 24(sp) # 4-byte Folded Reload
1296; RV32I-ILP32E-NEXT:    sw a0, 96(s1)
1297; RV32I-ILP32E-NEXT:    lw a0, 28(sp) # 4-byte Folded Reload
1298; RV32I-ILP32E-NEXT:    sw a0, 92(s1)
1299; RV32I-ILP32E-NEXT:    lw a0, 32(sp) # 4-byte Folded Reload
1300; RV32I-ILP32E-NEXT:    sw a0, 88(s1)
1301; RV32I-ILP32E-NEXT:    lw a0, 36(sp) # 4-byte Folded Reload
1302; RV32I-ILP32E-NEXT:    sw a0, 84(s1)
1303; RV32I-ILP32E-NEXT:    lw a0, 40(sp) # 4-byte Folded Reload
1304; RV32I-ILP32E-NEXT:    sw a0, 80(s1)
1305; RV32I-ILP32E-NEXT:    lw a0, 44(sp) # 4-byte Folded Reload
1306; RV32I-ILP32E-NEXT:    sw a0, 76(s1)
1307; RV32I-ILP32E-NEXT:    lw a0, 48(sp) # 4-byte Folded Reload
1308; RV32I-ILP32E-NEXT:    sw a0, 72(s1)
1309; RV32I-ILP32E-NEXT:    lw a0, 52(sp) # 4-byte Folded Reload
1310; RV32I-ILP32E-NEXT:    sw a0, 68(s1)
1311; RV32I-ILP32E-NEXT:    lw a0, 56(sp) # 4-byte Folded Reload
1312; RV32I-ILP32E-NEXT:    sw a0, 64(s1)
1313; RV32I-ILP32E-NEXT:    lw a0, 60(sp) # 4-byte Folded Reload
1314; RV32I-ILP32E-NEXT:    sw a0, 60(s1)
1315; RV32I-ILP32E-NEXT:    lw a0, 64(sp) # 4-byte Folded Reload
1316; RV32I-ILP32E-NEXT:    sw a0, 56(s1)
1317; RV32I-ILP32E-NEXT:    lw a0, 68(sp) # 4-byte Folded Reload
1318; RV32I-ILP32E-NEXT:    sw a0, 52(s1)
1319; RV32I-ILP32E-NEXT:    lw a0, 72(sp) # 4-byte Folded Reload
1320; RV32I-ILP32E-NEXT:    sw a0, 48(s1)
1321; RV32I-ILP32E-NEXT:    lw a0, 76(sp) # 4-byte Folded Reload
1322; RV32I-ILP32E-NEXT:    sw a0, 44(s1)
1323; RV32I-ILP32E-NEXT:    lw a0, 80(sp) # 4-byte Folded Reload
1324; RV32I-ILP32E-NEXT:    sw a0, 40(s1)
1325; RV32I-ILP32E-NEXT:    lw a0, 84(sp) # 4-byte Folded Reload
1326; RV32I-ILP32E-NEXT:    sw a0, 36(s1)
1327; RV32I-ILP32E-NEXT:    lw a0, 88(sp) # 4-byte Folded Reload
1328; RV32I-ILP32E-NEXT:    sw a0, 32(s1)
1329; RV32I-ILP32E-NEXT:    lw a0, 92(sp) # 4-byte Folded Reload
1330; RV32I-ILP32E-NEXT:    sw a0, 28(s1)
1331; RV32I-ILP32E-NEXT:    lw a0, 96(sp) # 4-byte Folded Reload
1332; RV32I-ILP32E-NEXT:    sw a0, 24(s1)
1333; RV32I-ILP32E-NEXT:    lw a0, 100(sp) # 4-byte Folded Reload
1334; RV32I-ILP32E-NEXT:    sw a0, 20(s1)
1335; RV32I-ILP32E-NEXT:    lw a0, 104(sp) # 4-byte Folded Reload
1336; RV32I-ILP32E-NEXT:    sw a0, 16(s1)
1337; RV32I-ILP32E-NEXT:    lui a1, %hi(var)
1338; RV32I-ILP32E-NEXT:    lw a0, 108(sp) # 4-byte Folded Reload
1339; RV32I-ILP32E-NEXT:    sw a0, %lo(var+12)(a1)
1340; RV32I-ILP32E-NEXT:    lw a0, 112(sp) # 4-byte Folded Reload
1341; RV32I-ILP32E-NEXT:    sw a0, %lo(var+8)(a1)
1342; RV32I-ILP32E-NEXT:    lw a0, 116(sp) # 4-byte Folded Reload
1343; RV32I-ILP32E-NEXT:    sw a0, %lo(var+4)(a1)
1344; RV32I-ILP32E-NEXT:    lw a0, 120(sp) # 4-byte Folded Reload
1345; RV32I-ILP32E-NEXT:    sw a0, %lo(var)(a1)
1346; RV32I-ILP32E-NEXT:    lw ra, 132(sp) # 4-byte Folded Reload
1347; RV32I-ILP32E-NEXT:    lw s0, 128(sp) # 4-byte Folded Reload
1348; RV32I-ILP32E-NEXT:    lw s1, 124(sp) # 4-byte Folded Reload
1349; RV32I-ILP32E-NEXT:    addi sp, sp, 136
1350; RV32I-ILP32E-NEXT:    ret
1351;
1352; RV32I-WITH-FP-LABEL: caller:
1353; RV32I-WITH-FP:       # %bb.0:
1354; RV32I-WITH-FP-NEXT:    addi sp, sp, -144
1355; RV32I-WITH-FP-NEXT:    sw ra, 140(sp) # 4-byte Folded Spill
1356; RV32I-WITH-FP-NEXT:    sw s0, 136(sp) # 4-byte Folded Spill
1357; RV32I-WITH-FP-NEXT:    sw s1, 132(sp) # 4-byte Folded Spill
1358; RV32I-WITH-FP-NEXT:    sw s2, 128(sp) # 4-byte Folded Spill
1359; RV32I-WITH-FP-NEXT:    sw s3, 124(sp) # 4-byte Folded Spill
1360; RV32I-WITH-FP-NEXT:    sw s4, 120(sp) # 4-byte Folded Spill
1361; RV32I-WITH-FP-NEXT:    sw s5, 116(sp) # 4-byte Folded Spill
1362; RV32I-WITH-FP-NEXT:    sw s6, 112(sp) # 4-byte Folded Spill
1363; RV32I-WITH-FP-NEXT:    sw s7, 108(sp) # 4-byte Folded Spill
1364; RV32I-WITH-FP-NEXT:    sw s8, 104(sp) # 4-byte Folded Spill
1365; RV32I-WITH-FP-NEXT:    sw s9, 100(sp) # 4-byte Folded Spill
1366; RV32I-WITH-FP-NEXT:    sw s10, 96(sp) # 4-byte Folded Spill
1367; RV32I-WITH-FP-NEXT:    sw s11, 92(sp) # 4-byte Folded Spill
1368; RV32I-WITH-FP-NEXT:    addi s0, sp, 144
1369; RV32I-WITH-FP-NEXT:    lui s1, %hi(var)
1370; RV32I-WITH-FP-NEXT:    lw a0, %lo(var)(s1)
1371; RV32I-WITH-FP-NEXT:    sw a0, -56(s0) # 4-byte Folded Spill
1372; RV32I-WITH-FP-NEXT:    lw a0, %lo(var+4)(s1)
1373; RV32I-WITH-FP-NEXT:    sw a0, -60(s0) # 4-byte Folded Spill
1374; RV32I-WITH-FP-NEXT:    lw a0, %lo(var+8)(s1)
1375; RV32I-WITH-FP-NEXT:    sw a0, -64(s0) # 4-byte Folded Spill
1376; RV32I-WITH-FP-NEXT:    lw a0, %lo(var+12)(s1)
1377; RV32I-WITH-FP-NEXT:    sw a0, -68(s0) # 4-byte Folded Spill
1378; RV32I-WITH-FP-NEXT:    addi s6, s1, %lo(var)
1379; RV32I-WITH-FP-NEXT:    lw a0, 16(s6)
1380; RV32I-WITH-FP-NEXT:    sw a0, -72(s0) # 4-byte Folded Spill
1381; RV32I-WITH-FP-NEXT:    lw a0, 20(s6)
1382; RV32I-WITH-FP-NEXT:    sw a0, -76(s0) # 4-byte Folded Spill
1383; RV32I-WITH-FP-NEXT:    lw a0, 24(s6)
1384; RV32I-WITH-FP-NEXT:    sw a0, -80(s0) # 4-byte Folded Spill
1385; RV32I-WITH-FP-NEXT:    lw a0, 28(s6)
1386; RV32I-WITH-FP-NEXT:    sw a0, -84(s0) # 4-byte Folded Spill
1387; RV32I-WITH-FP-NEXT:    lw a0, 32(s6)
1388; RV32I-WITH-FP-NEXT:    sw a0, -88(s0) # 4-byte Folded Spill
1389; RV32I-WITH-FP-NEXT:    lw a0, 36(s6)
1390; RV32I-WITH-FP-NEXT:    sw a0, -92(s0) # 4-byte Folded Spill
1391; RV32I-WITH-FP-NEXT:    lw a0, 40(s6)
1392; RV32I-WITH-FP-NEXT:    sw a0, -96(s0) # 4-byte Folded Spill
1393; RV32I-WITH-FP-NEXT:    lw a0, 44(s6)
1394; RV32I-WITH-FP-NEXT:    sw a0, -100(s0) # 4-byte Folded Spill
1395; RV32I-WITH-FP-NEXT:    lw a0, 48(s6)
1396; RV32I-WITH-FP-NEXT:    sw a0, -104(s0) # 4-byte Folded Spill
1397; RV32I-WITH-FP-NEXT:    lw a0, 52(s6)
1398; RV32I-WITH-FP-NEXT:    sw a0, -108(s0) # 4-byte Folded Spill
1399; RV32I-WITH-FP-NEXT:    lw a0, 56(s6)
1400; RV32I-WITH-FP-NEXT:    sw a0, -112(s0) # 4-byte Folded Spill
1401; RV32I-WITH-FP-NEXT:    lw a0, 60(s6)
1402; RV32I-WITH-FP-NEXT:    sw a0, -116(s0) # 4-byte Folded Spill
1403; RV32I-WITH-FP-NEXT:    lw a0, 64(s6)
1404; RV32I-WITH-FP-NEXT:    sw a0, -120(s0) # 4-byte Folded Spill
1405; RV32I-WITH-FP-NEXT:    lw a0, 68(s6)
1406; RV32I-WITH-FP-NEXT:    sw a0, -124(s0) # 4-byte Folded Spill
1407; RV32I-WITH-FP-NEXT:    lw a0, 72(s6)
1408; RV32I-WITH-FP-NEXT:    sw a0, -128(s0) # 4-byte Folded Spill
1409; RV32I-WITH-FP-NEXT:    lw a0, 76(s6)
1410; RV32I-WITH-FP-NEXT:    sw a0, -132(s0) # 4-byte Folded Spill
1411; RV32I-WITH-FP-NEXT:    lw a0, 80(s6)
1412; RV32I-WITH-FP-NEXT:    sw a0, -136(s0) # 4-byte Folded Spill
1413; RV32I-WITH-FP-NEXT:    lw a0, 84(s6)
1414; RV32I-WITH-FP-NEXT:    sw a0, -140(s0) # 4-byte Folded Spill
1415; RV32I-WITH-FP-NEXT:    lw a0, 88(s6)
1416; RV32I-WITH-FP-NEXT:    sw a0, -144(s0) # 4-byte Folded Spill
1417; RV32I-WITH-FP-NEXT:    lw s8, 92(s6)
1418; RV32I-WITH-FP-NEXT:    lw s9, 96(s6)
1419; RV32I-WITH-FP-NEXT:    lw s10, 100(s6)
1420; RV32I-WITH-FP-NEXT:    lw s11, 104(s6)
1421; RV32I-WITH-FP-NEXT:    lw s2, 108(s6)
1422; RV32I-WITH-FP-NEXT:    lw s3, 112(s6)
1423; RV32I-WITH-FP-NEXT:    lw s4, 116(s6)
1424; RV32I-WITH-FP-NEXT:    lw s5, 120(s6)
1425; RV32I-WITH-FP-NEXT:    lw s7, 124(s6)
1426; RV32I-WITH-FP-NEXT:    call callee
1427; RV32I-WITH-FP-NEXT:    sw s7, 124(s6)
1428; RV32I-WITH-FP-NEXT:    sw s5, 120(s6)
1429; RV32I-WITH-FP-NEXT:    sw s4, 116(s6)
1430; RV32I-WITH-FP-NEXT:    sw s3, 112(s6)
1431; RV32I-WITH-FP-NEXT:    sw s2, 108(s6)
1432; RV32I-WITH-FP-NEXT:    sw s11, 104(s6)
1433; RV32I-WITH-FP-NEXT:    sw s10, 100(s6)
1434; RV32I-WITH-FP-NEXT:    sw s9, 96(s6)
1435; RV32I-WITH-FP-NEXT:    sw s8, 92(s6)
1436; RV32I-WITH-FP-NEXT:    lw a0, -144(s0) # 4-byte Folded Reload
1437; RV32I-WITH-FP-NEXT:    sw a0, 88(s6)
1438; RV32I-WITH-FP-NEXT:    lw a0, -140(s0) # 4-byte Folded Reload
1439; RV32I-WITH-FP-NEXT:    sw a0, 84(s6)
1440; RV32I-WITH-FP-NEXT:    lw a0, -136(s0) # 4-byte Folded Reload
1441; RV32I-WITH-FP-NEXT:    sw a0, 80(s6)
1442; RV32I-WITH-FP-NEXT:    lw a0, -132(s0) # 4-byte Folded Reload
1443; RV32I-WITH-FP-NEXT:    sw a0, 76(s6)
1444; RV32I-WITH-FP-NEXT:    lw a0, -128(s0) # 4-byte Folded Reload
1445; RV32I-WITH-FP-NEXT:    sw a0, 72(s6)
1446; RV32I-WITH-FP-NEXT:    lw a0, -124(s0) # 4-byte Folded Reload
1447; RV32I-WITH-FP-NEXT:    sw a0, 68(s6)
1448; RV32I-WITH-FP-NEXT:    lw a0, -120(s0) # 4-byte Folded Reload
1449; RV32I-WITH-FP-NEXT:    sw a0, 64(s6)
1450; RV32I-WITH-FP-NEXT:    lw a0, -116(s0) # 4-byte Folded Reload
1451; RV32I-WITH-FP-NEXT:    sw a0, 60(s6)
1452; RV32I-WITH-FP-NEXT:    lw a0, -112(s0) # 4-byte Folded Reload
1453; RV32I-WITH-FP-NEXT:    sw a0, 56(s6)
1454; RV32I-WITH-FP-NEXT:    lw a0, -108(s0) # 4-byte Folded Reload
1455; RV32I-WITH-FP-NEXT:    sw a0, 52(s6)
1456; RV32I-WITH-FP-NEXT:    lw a0, -104(s0) # 4-byte Folded Reload
1457; RV32I-WITH-FP-NEXT:    sw a0, 48(s6)
1458; RV32I-WITH-FP-NEXT:    lw a0, -100(s0) # 4-byte Folded Reload
1459; RV32I-WITH-FP-NEXT:    sw a0, 44(s6)
1460; RV32I-WITH-FP-NEXT:    lw a0, -96(s0) # 4-byte Folded Reload
1461; RV32I-WITH-FP-NEXT:    sw a0, 40(s6)
1462; RV32I-WITH-FP-NEXT:    lw a0, -92(s0) # 4-byte Folded Reload
1463; RV32I-WITH-FP-NEXT:    sw a0, 36(s6)
1464; RV32I-WITH-FP-NEXT:    lw a0, -88(s0) # 4-byte Folded Reload
1465; RV32I-WITH-FP-NEXT:    sw a0, 32(s6)
1466; RV32I-WITH-FP-NEXT:    lw a0, -84(s0) # 4-byte Folded Reload
1467; RV32I-WITH-FP-NEXT:    sw a0, 28(s6)
1468; RV32I-WITH-FP-NEXT:    lw a0, -80(s0) # 4-byte Folded Reload
1469; RV32I-WITH-FP-NEXT:    sw a0, 24(s6)
1470; RV32I-WITH-FP-NEXT:    lw a0, -76(s0) # 4-byte Folded Reload
1471; RV32I-WITH-FP-NEXT:    sw a0, 20(s6)
1472; RV32I-WITH-FP-NEXT:    lw a0, -72(s0) # 4-byte Folded Reload
1473; RV32I-WITH-FP-NEXT:    sw a0, 16(s6)
1474; RV32I-WITH-FP-NEXT:    lw a0, -68(s0) # 4-byte Folded Reload
1475; RV32I-WITH-FP-NEXT:    sw a0, %lo(var+12)(s1)
1476; RV32I-WITH-FP-NEXT:    lw a0, -64(s0) # 4-byte Folded Reload
1477; RV32I-WITH-FP-NEXT:    sw a0, %lo(var+8)(s1)
1478; RV32I-WITH-FP-NEXT:    lw a0, -60(s0) # 4-byte Folded Reload
1479; RV32I-WITH-FP-NEXT:    sw a0, %lo(var+4)(s1)
1480; RV32I-WITH-FP-NEXT:    lw a0, -56(s0) # 4-byte Folded Reload
1481; RV32I-WITH-FP-NEXT:    sw a0, %lo(var)(s1)
1482; RV32I-WITH-FP-NEXT:    lw ra, 140(sp) # 4-byte Folded Reload
1483; RV32I-WITH-FP-NEXT:    lw s0, 136(sp) # 4-byte Folded Reload
1484; RV32I-WITH-FP-NEXT:    lw s1, 132(sp) # 4-byte Folded Reload
1485; RV32I-WITH-FP-NEXT:    lw s2, 128(sp) # 4-byte Folded Reload
1486; RV32I-WITH-FP-NEXT:    lw s3, 124(sp) # 4-byte Folded Reload
1487; RV32I-WITH-FP-NEXT:    lw s4, 120(sp) # 4-byte Folded Reload
1488; RV32I-WITH-FP-NEXT:    lw s5, 116(sp) # 4-byte Folded Reload
1489; RV32I-WITH-FP-NEXT:    lw s6, 112(sp) # 4-byte Folded Reload
1490; RV32I-WITH-FP-NEXT:    lw s7, 108(sp) # 4-byte Folded Reload
1491; RV32I-WITH-FP-NEXT:    lw s8, 104(sp) # 4-byte Folded Reload
1492; RV32I-WITH-FP-NEXT:    lw s9, 100(sp) # 4-byte Folded Reload
1493; RV32I-WITH-FP-NEXT:    lw s10, 96(sp) # 4-byte Folded Reload
1494; RV32I-WITH-FP-NEXT:    lw s11, 92(sp) # 4-byte Folded Reload
1495; RV32I-WITH-FP-NEXT:    addi sp, sp, 144
1496; RV32I-WITH-FP-NEXT:    ret
1497;
1498; RV32IZCMP-LABEL: caller:
1499; RV32IZCMP:       # %bb.0:
1500; RV32IZCMP-NEXT:    cm.push {ra, s0-s11}, -112
1501; RV32IZCMP-NEXT:    addi sp, sp, -48
1502; RV32IZCMP-NEXT:    lui s0, %hi(var)
1503; RV32IZCMP-NEXT:    lw a0, %lo(var)(s0)
1504; RV32IZCMP-NEXT:    sw a0, 92(sp) # 4-byte Folded Spill
1505; RV32IZCMP-NEXT:    lw a0, %lo(var+4)(s0)
1506; RV32IZCMP-NEXT:    sw a0, 88(sp) # 4-byte Folded Spill
1507; RV32IZCMP-NEXT:    lw a0, %lo(var+8)(s0)
1508; RV32IZCMP-NEXT:    sw a0, 84(sp) # 4-byte Folded Spill
1509; RV32IZCMP-NEXT:    lw a0, %lo(var+12)(s0)
1510; RV32IZCMP-NEXT:    sw a0, 80(sp) # 4-byte Folded Spill
1511; RV32IZCMP-NEXT:    addi s1, s0, %lo(var)
1512; RV32IZCMP-NEXT:    lw a0, 16(s1)
1513; RV32IZCMP-NEXT:    sw a0, 76(sp) # 4-byte Folded Spill
1514; RV32IZCMP-NEXT:    lw a0, 20(s1)
1515; RV32IZCMP-NEXT:    sw a0, 72(sp) # 4-byte Folded Spill
1516; RV32IZCMP-NEXT:    lw a0, 24(s1)
1517; RV32IZCMP-NEXT:    sw a0, 68(sp) # 4-byte Folded Spill
1518; RV32IZCMP-NEXT:    lw a0, 28(s1)
1519; RV32IZCMP-NEXT:    sw a0, 64(sp) # 4-byte Folded Spill
1520; RV32IZCMP-NEXT:    lw a0, 32(s1)
1521; RV32IZCMP-NEXT:    sw a0, 60(sp) # 4-byte Folded Spill
1522; RV32IZCMP-NEXT:    lw a0, 36(s1)
1523; RV32IZCMP-NEXT:    sw a0, 56(sp) # 4-byte Folded Spill
1524; RV32IZCMP-NEXT:    lw a0, 40(s1)
1525; RV32IZCMP-NEXT:    sw a0, 52(sp) # 4-byte Folded Spill
1526; RV32IZCMP-NEXT:    lw a0, 44(s1)
1527; RV32IZCMP-NEXT:    sw a0, 48(sp) # 4-byte Folded Spill
1528; RV32IZCMP-NEXT:    lw a0, 48(s1)
1529; RV32IZCMP-NEXT:    sw a0, 44(sp) # 4-byte Folded Spill
1530; RV32IZCMP-NEXT:    lw a0, 52(s1)
1531; RV32IZCMP-NEXT:    sw a0, 40(sp) # 4-byte Folded Spill
1532; RV32IZCMP-NEXT:    lw a0, 56(s1)
1533; RV32IZCMP-NEXT:    sw a0, 36(sp) # 4-byte Folded Spill
1534; RV32IZCMP-NEXT:    lw a0, 60(s1)
1535; RV32IZCMP-NEXT:    sw a0, 32(sp) # 4-byte Folded Spill
1536; RV32IZCMP-NEXT:    lw a0, 64(s1)
1537; RV32IZCMP-NEXT:    sw a0, 28(sp) # 4-byte Folded Spill
1538; RV32IZCMP-NEXT:    lw a0, 68(s1)
1539; RV32IZCMP-NEXT:    sw a0, 24(sp) # 4-byte Folded Spill
1540; RV32IZCMP-NEXT:    lw a0, 72(s1)
1541; RV32IZCMP-NEXT:    sw a0, 20(sp) # 4-byte Folded Spill
1542; RV32IZCMP-NEXT:    lw a0, 76(s1)
1543; RV32IZCMP-NEXT:    sw a0, 16(sp) # 4-byte Folded Spill
1544; RV32IZCMP-NEXT:    lw a0, 80(s1)
1545; RV32IZCMP-NEXT:    sw a0, 12(sp) # 4-byte Folded Spill
1546; RV32IZCMP-NEXT:    lw a0, 84(s1)
1547; RV32IZCMP-NEXT:    sw a0, 8(sp) # 4-byte Folded Spill
1548; RV32IZCMP-NEXT:    lw s4, 88(s1)
1549; RV32IZCMP-NEXT:    lw s5, 92(s1)
1550; RV32IZCMP-NEXT:    lw s6, 96(s1)
1551; RV32IZCMP-NEXT:    lw s7, 100(s1)
1552; RV32IZCMP-NEXT:    lw s8, 104(s1)
1553; RV32IZCMP-NEXT:    lw s9, 108(s1)
1554; RV32IZCMP-NEXT:    lw s10, 112(s1)
1555; RV32IZCMP-NEXT:    lw s11, 116(s1)
1556; RV32IZCMP-NEXT:    lw s2, 120(s1)
1557; RV32IZCMP-NEXT:    lw s3, 124(s1)
1558; RV32IZCMP-NEXT:    call callee
1559; RV32IZCMP-NEXT:    sw s3, 124(s1)
1560; RV32IZCMP-NEXT:    sw s2, 120(s1)
1561; RV32IZCMP-NEXT:    sw s11, 116(s1)
1562; RV32IZCMP-NEXT:    sw s10, 112(s1)
1563; RV32IZCMP-NEXT:    sw s9, 108(s1)
1564; RV32IZCMP-NEXT:    sw s8, 104(s1)
1565; RV32IZCMP-NEXT:    sw s7, 100(s1)
1566; RV32IZCMP-NEXT:    sw s6, 96(s1)
1567; RV32IZCMP-NEXT:    sw s5, 92(s1)
1568; RV32IZCMP-NEXT:    sw s4, 88(s1)
1569; RV32IZCMP-NEXT:    lw a0, 8(sp) # 4-byte Folded Reload
1570; RV32IZCMP-NEXT:    sw a0, 84(s1)
1571; RV32IZCMP-NEXT:    lw a0, 12(sp) # 4-byte Folded Reload
1572; RV32IZCMP-NEXT:    sw a0, 80(s1)
1573; RV32IZCMP-NEXT:    lw a0, 16(sp) # 4-byte Folded Reload
1574; RV32IZCMP-NEXT:    sw a0, 76(s1)
1575; RV32IZCMP-NEXT:    lw a0, 20(sp) # 4-byte Folded Reload
1576; RV32IZCMP-NEXT:    sw a0, 72(s1)
1577; RV32IZCMP-NEXT:    lw a0, 24(sp) # 4-byte Folded Reload
1578; RV32IZCMP-NEXT:    sw a0, 68(s1)
1579; RV32IZCMP-NEXT:    lw a0, 28(sp) # 4-byte Folded Reload
1580; RV32IZCMP-NEXT:    sw a0, 64(s1)
1581; RV32IZCMP-NEXT:    lw a0, 32(sp) # 4-byte Folded Reload
1582; RV32IZCMP-NEXT:    sw a0, 60(s1)
1583; RV32IZCMP-NEXT:    lw a0, 36(sp) # 4-byte Folded Reload
1584; RV32IZCMP-NEXT:    sw a0, 56(s1)
1585; RV32IZCMP-NEXT:    lw a0, 40(sp) # 4-byte Folded Reload
1586; RV32IZCMP-NEXT:    sw a0, 52(s1)
1587; RV32IZCMP-NEXT:    lw a0, 44(sp) # 4-byte Folded Reload
1588; RV32IZCMP-NEXT:    sw a0, 48(s1)
1589; RV32IZCMP-NEXT:    lw a0, 48(sp) # 4-byte Folded Reload
1590; RV32IZCMP-NEXT:    sw a0, 44(s1)
1591; RV32IZCMP-NEXT:    lw a0, 52(sp) # 4-byte Folded Reload
1592; RV32IZCMP-NEXT:    sw a0, 40(s1)
1593; RV32IZCMP-NEXT:    lw a0, 56(sp) # 4-byte Folded Reload
1594; RV32IZCMP-NEXT:    sw a0, 36(s1)
1595; RV32IZCMP-NEXT:    lw a0, 60(sp) # 4-byte Folded Reload
1596; RV32IZCMP-NEXT:    sw a0, 32(s1)
1597; RV32IZCMP-NEXT:    lw a0, 64(sp) # 4-byte Folded Reload
1598; RV32IZCMP-NEXT:    sw a0, 28(s1)
1599; RV32IZCMP-NEXT:    lw a0, 68(sp) # 4-byte Folded Reload
1600; RV32IZCMP-NEXT:    sw a0, 24(s1)
1601; RV32IZCMP-NEXT:    lw a0, 72(sp) # 4-byte Folded Reload
1602; RV32IZCMP-NEXT:    sw a0, 20(s1)
1603; RV32IZCMP-NEXT:    lw a0, 76(sp) # 4-byte Folded Reload
1604; RV32IZCMP-NEXT:    sw a0, 16(s1)
1605; RV32IZCMP-NEXT:    lw a0, 80(sp) # 4-byte Folded Reload
1606; RV32IZCMP-NEXT:    sw a0, %lo(var+12)(s0)
1607; RV32IZCMP-NEXT:    lw a0, 84(sp) # 4-byte Folded Reload
1608; RV32IZCMP-NEXT:    sw a0, %lo(var+8)(s0)
1609; RV32IZCMP-NEXT:    lw a0, 88(sp) # 4-byte Folded Reload
1610; RV32IZCMP-NEXT:    sw a0, %lo(var+4)(s0)
1611; RV32IZCMP-NEXT:    lw a0, 92(sp) # 4-byte Folded Reload
1612; RV32IZCMP-NEXT:    sw a0, %lo(var)(s0)
1613; RV32IZCMP-NEXT:    addi sp, sp, 48
1614; RV32IZCMP-NEXT:    cm.popret {ra, s0-s11}, 112
1615;
1616; RV32IZCMP-WITH-FP-LABEL: caller:
1617; RV32IZCMP-WITH-FP:       # %bb.0:
1618; RV32IZCMP-WITH-FP-NEXT:    addi sp, sp, -144
1619; RV32IZCMP-WITH-FP-NEXT:    sw ra, 140(sp) # 4-byte Folded Spill
1620; RV32IZCMP-WITH-FP-NEXT:    sw s0, 136(sp) # 4-byte Folded Spill
1621; RV32IZCMP-WITH-FP-NEXT:    sw s1, 132(sp) # 4-byte Folded Spill
1622; RV32IZCMP-WITH-FP-NEXT:    sw s2, 128(sp) # 4-byte Folded Spill
1623; RV32IZCMP-WITH-FP-NEXT:    sw s3, 124(sp) # 4-byte Folded Spill
1624; RV32IZCMP-WITH-FP-NEXT:    sw s4, 120(sp) # 4-byte Folded Spill
1625; RV32IZCMP-WITH-FP-NEXT:    sw s5, 116(sp) # 4-byte Folded Spill
1626; RV32IZCMP-WITH-FP-NEXT:    sw s6, 112(sp) # 4-byte Folded Spill
1627; RV32IZCMP-WITH-FP-NEXT:    sw s7, 108(sp) # 4-byte Folded Spill
1628; RV32IZCMP-WITH-FP-NEXT:    sw s8, 104(sp) # 4-byte Folded Spill
1629; RV32IZCMP-WITH-FP-NEXT:    sw s9, 100(sp) # 4-byte Folded Spill
1630; RV32IZCMP-WITH-FP-NEXT:    sw s10, 96(sp) # 4-byte Folded Spill
1631; RV32IZCMP-WITH-FP-NEXT:    sw s11, 92(sp) # 4-byte Folded Spill
1632; RV32IZCMP-WITH-FP-NEXT:    addi s0, sp, 144
1633; RV32IZCMP-WITH-FP-NEXT:    lui s6, %hi(var)
1634; RV32IZCMP-WITH-FP-NEXT:    lw a0, %lo(var)(s6)
1635; RV32IZCMP-WITH-FP-NEXT:    sw a0, -56(s0) # 4-byte Folded Spill
1636; RV32IZCMP-WITH-FP-NEXT:    lw a0, %lo(var+4)(s6)
1637; RV32IZCMP-WITH-FP-NEXT:    sw a0, -60(s0) # 4-byte Folded Spill
1638; RV32IZCMP-WITH-FP-NEXT:    lw a0, %lo(var+8)(s6)
1639; RV32IZCMP-WITH-FP-NEXT:    sw a0, -64(s0) # 4-byte Folded Spill
1640; RV32IZCMP-WITH-FP-NEXT:    lw a0, %lo(var+12)(s6)
1641; RV32IZCMP-WITH-FP-NEXT:    sw a0, -68(s0) # 4-byte Folded Spill
1642; RV32IZCMP-WITH-FP-NEXT:    addi s1, s6, %lo(var)
1643; RV32IZCMP-WITH-FP-NEXT:    lw a0, 16(s1)
1644; RV32IZCMP-WITH-FP-NEXT:    sw a0, -72(s0) # 4-byte Folded Spill
1645; RV32IZCMP-WITH-FP-NEXT:    lw a0, 20(s1)
1646; RV32IZCMP-WITH-FP-NEXT:    sw a0, -76(s0) # 4-byte Folded Spill
1647; RV32IZCMP-WITH-FP-NEXT:    lw a0, 24(s1)
1648; RV32IZCMP-WITH-FP-NEXT:    sw a0, -80(s0) # 4-byte Folded Spill
1649; RV32IZCMP-WITH-FP-NEXT:    lw a0, 28(s1)
1650; RV32IZCMP-WITH-FP-NEXT:    sw a0, -84(s0) # 4-byte Folded Spill
1651; RV32IZCMP-WITH-FP-NEXT:    lw a0, 32(s1)
1652; RV32IZCMP-WITH-FP-NEXT:    sw a0, -88(s0) # 4-byte Folded Spill
1653; RV32IZCMP-WITH-FP-NEXT:    lw a0, 36(s1)
1654; RV32IZCMP-WITH-FP-NEXT:    sw a0, -92(s0) # 4-byte Folded Spill
1655; RV32IZCMP-WITH-FP-NEXT:    lw a0, 40(s1)
1656; RV32IZCMP-WITH-FP-NEXT:    sw a0, -96(s0) # 4-byte Folded Spill
1657; RV32IZCMP-WITH-FP-NEXT:    lw a0, 44(s1)
1658; RV32IZCMP-WITH-FP-NEXT:    sw a0, -100(s0) # 4-byte Folded Spill
1659; RV32IZCMP-WITH-FP-NEXT:    lw a0, 48(s1)
1660; RV32IZCMP-WITH-FP-NEXT:    sw a0, -104(s0) # 4-byte Folded Spill
1661; RV32IZCMP-WITH-FP-NEXT:    lw a0, 52(s1)
1662; RV32IZCMP-WITH-FP-NEXT:    sw a0, -108(s0) # 4-byte Folded Spill
1663; RV32IZCMP-WITH-FP-NEXT:    lw a0, 56(s1)
1664; RV32IZCMP-WITH-FP-NEXT:    sw a0, -112(s0) # 4-byte Folded Spill
1665; RV32IZCMP-WITH-FP-NEXT:    lw a0, 60(s1)
1666; RV32IZCMP-WITH-FP-NEXT:    sw a0, -116(s0) # 4-byte Folded Spill
1667; RV32IZCMP-WITH-FP-NEXT:    lw a0, 64(s1)
1668; RV32IZCMP-WITH-FP-NEXT:    sw a0, -120(s0) # 4-byte Folded Spill
1669; RV32IZCMP-WITH-FP-NEXT:    lw a0, 68(s1)
1670; RV32IZCMP-WITH-FP-NEXT:    sw a0, -124(s0) # 4-byte Folded Spill
1671; RV32IZCMP-WITH-FP-NEXT:    lw a0, 72(s1)
1672; RV32IZCMP-WITH-FP-NEXT:    sw a0, -128(s0) # 4-byte Folded Spill
1673; RV32IZCMP-WITH-FP-NEXT:    lw a0, 76(s1)
1674; RV32IZCMP-WITH-FP-NEXT:    sw a0, -132(s0) # 4-byte Folded Spill
1675; RV32IZCMP-WITH-FP-NEXT:    lw a0, 80(s1)
1676; RV32IZCMP-WITH-FP-NEXT:    sw a0, -136(s0) # 4-byte Folded Spill
1677; RV32IZCMP-WITH-FP-NEXT:    lw a0, 84(s1)
1678; RV32IZCMP-WITH-FP-NEXT:    sw a0, -140(s0) # 4-byte Folded Spill
1679; RV32IZCMP-WITH-FP-NEXT:    lw a0, 88(s1)
1680; RV32IZCMP-WITH-FP-NEXT:    sw a0, -144(s0) # 4-byte Folded Spill
1681; RV32IZCMP-WITH-FP-NEXT:    lw s8, 92(s1)
1682; RV32IZCMP-WITH-FP-NEXT:    lw s9, 96(s1)
1683; RV32IZCMP-WITH-FP-NEXT:    lw s10, 100(s1)
1684; RV32IZCMP-WITH-FP-NEXT:    lw s11, 104(s1)
1685; RV32IZCMP-WITH-FP-NEXT:    lw s2, 108(s1)
1686; RV32IZCMP-WITH-FP-NEXT:    lw s3, 112(s1)
1687; RV32IZCMP-WITH-FP-NEXT:    lw s4, 116(s1)
1688; RV32IZCMP-WITH-FP-NEXT:    lw s5, 120(s1)
1689; RV32IZCMP-WITH-FP-NEXT:    lw s7, 124(s1)
1690; RV32IZCMP-WITH-FP-NEXT:    call callee
1691; RV32IZCMP-WITH-FP-NEXT:    sw s7, 124(s1)
1692; RV32IZCMP-WITH-FP-NEXT:    sw s5, 120(s1)
1693; RV32IZCMP-WITH-FP-NEXT:    sw s4, 116(s1)
1694; RV32IZCMP-WITH-FP-NEXT:    sw s3, 112(s1)
1695; RV32IZCMP-WITH-FP-NEXT:    sw s2, 108(s1)
1696; RV32IZCMP-WITH-FP-NEXT:    sw s11, 104(s1)
1697; RV32IZCMP-WITH-FP-NEXT:    sw s10, 100(s1)
1698; RV32IZCMP-WITH-FP-NEXT:    sw s9, 96(s1)
1699; RV32IZCMP-WITH-FP-NEXT:    sw s8, 92(s1)
1700; RV32IZCMP-WITH-FP-NEXT:    lw a0, -144(s0) # 4-byte Folded Reload
1701; RV32IZCMP-WITH-FP-NEXT:    sw a0, 88(s1)
1702; RV32IZCMP-WITH-FP-NEXT:    lw a0, -140(s0) # 4-byte Folded Reload
1703; RV32IZCMP-WITH-FP-NEXT:    sw a0, 84(s1)
1704; RV32IZCMP-WITH-FP-NEXT:    lw a0, -136(s0) # 4-byte Folded Reload
1705; RV32IZCMP-WITH-FP-NEXT:    sw a0, 80(s1)
1706; RV32IZCMP-WITH-FP-NEXT:    lw a0, -132(s0) # 4-byte Folded Reload
1707; RV32IZCMP-WITH-FP-NEXT:    sw a0, 76(s1)
1708; RV32IZCMP-WITH-FP-NEXT:    lw a0, -128(s0) # 4-byte Folded Reload
1709; RV32IZCMP-WITH-FP-NEXT:    sw a0, 72(s1)
1710; RV32IZCMP-WITH-FP-NEXT:    lw a0, -124(s0) # 4-byte Folded Reload
1711; RV32IZCMP-WITH-FP-NEXT:    sw a0, 68(s1)
1712; RV32IZCMP-WITH-FP-NEXT:    lw a0, -120(s0) # 4-byte Folded Reload
1713; RV32IZCMP-WITH-FP-NEXT:    sw a0, 64(s1)
1714; RV32IZCMP-WITH-FP-NEXT:    lw a0, -116(s0) # 4-byte Folded Reload
1715; RV32IZCMP-WITH-FP-NEXT:    sw a0, 60(s1)
1716; RV32IZCMP-WITH-FP-NEXT:    lw a0, -112(s0) # 4-byte Folded Reload
1717; RV32IZCMP-WITH-FP-NEXT:    sw a0, 56(s1)
1718; RV32IZCMP-WITH-FP-NEXT:    lw a0, -108(s0) # 4-byte Folded Reload
1719; RV32IZCMP-WITH-FP-NEXT:    sw a0, 52(s1)
1720; RV32IZCMP-WITH-FP-NEXT:    lw a0, -104(s0) # 4-byte Folded Reload
1721; RV32IZCMP-WITH-FP-NEXT:    sw a0, 48(s1)
1722; RV32IZCMP-WITH-FP-NEXT:    lw a0, -100(s0) # 4-byte Folded Reload
1723; RV32IZCMP-WITH-FP-NEXT:    sw a0, 44(s1)
1724; RV32IZCMP-WITH-FP-NEXT:    lw a0, -96(s0) # 4-byte Folded Reload
1725; RV32IZCMP-WITH-FP-NEXT:    sw a0, 40(s1)
1726; RV32IZCMP-WITH-FP-NEXT:    lw a0, -92(s0) # 4-byte Folded Reload
1727; RV32IZCMP-WITH-FP-NEXT:    sw a0, 36(s1)
1728; RV32IZCMP-WITH-FP-NEXT:    lw a0, -88(s0) # 4-byte Folded Reload
1729; RV32IZCMP-WITH-FP-NEXT:    sw a0, 32(s1)
1730; RV32IZCMP-WITH-FP-NEXT:    lw a0, -84(s0) # 4-byte Folded Reload
1731; RV32IZCMP-WITH-FP-NEXT:    sw a0, 28(s1)
1732; RV32IZCMP-WITH-FP-NEXT:    lw a0, -80(s0) # 4-byte Folded Reload
1733; RV32IZCMP-WITH-FP-NEXT:    sw a0, 24(s1)
1734; RV32IZCMP-WITH-FP-NEXT:    lw a0, -76(s0) # 4-byte Folded Reload
1735; RV32IZCMP-WITH-FP-NEXT:    sw a0, 20(s1)
1736; RV32IZCMP-WITH-FP-NEXT:    lw a0, -72(s0) # 4-byte Folded Reload
1737; RV32IZCMP-WITH-FP-NEXT:    sw a0, 16(s1)
1738; RV32IZCMP-WITH-FP-NEXT:    lw a0, -68(s0) # 4-byte Folded Reload
1739; RV32IZCMP-WITH-FP-NEXT:    sw a0, %lo(var+12)(s6)
1740; RV32IZCMP-WITH-FP-NEXT:    lw a0, -64(s0) # 4-byte Folded Reload
1741; RV32IZCMP-WITH-FP-NEXT:    sw a0, %lo(var+8)(s6)
1742; RV32IZCMP-WITH-FP-NEXT:    lw a0, -60(s0) # 4-byte Folded Reload
1743; RV32IZCMP-WITH-FP-NEXT:    sw a0, %lo(var+4)(s6)
1744; RV32IZCMP-WITH-FP-NEXT:    lw a0, -56(s0) # 4-byte Folded Reload
1745; RV32IZCMP-WITH-FP-NEXT:    sw a0, %lo(var)(s6)
1746; RV32IZCMP-WITH-FP-NEXT:    lw ra, 140(sp) # 4-byte Folded Reload
1747; RV32IZCMP-WITH-FP-NEXT:    lw s0, 136(sp) # 4-byte Folded Reload
1748; RV32IZCMP-WITH-FP-NEXT:    lw s1, 132(sp) # 4-byte Folded Reload
1749; RV32IZCMP-WITH-FP-NEXT:    lw s2, 128(sp) # 4-byte Folded Reload
1750; RV32IZCMP-WITH-FP-NEXT:    lw s3, 124(sp) # 4-byte Folded Reload
1751; RV32IZCMP-WITH-FP-NEXT:    lw s4, 120(sp) # 4-byte Folded Reload
1752; RV32IZCMP-WITH-FP-NEXT:    lw s5, 116(sp) # 4-byte Folded Reload
1753; RV32IZCMP-WITH-FP-NEXT:    lw s6, 112(sp) # 4-byte Folded Reload
1754; RV32IZCMP-WITH-FP-NEXT:    lw s7, 108(sp) # 4-byte Folded Reload
1755; RV32IZCMP-WITH-FP-NEXT:    lw s8, 104(sp) # 4-byte Folded Reload
1756; RV32IZCMP-WITH-FP-NEXT:    lw s9, 100(sp) # 4-byte Folded Reload
1757; RV32IZCMP-WITH-FP-NEXT:    lw s10, 96(sp) # 4-byte Folded Reload
1758; RV32IZCMP-WITH-FP-NEXT:    lw s11, 92(sp) # 4-byte Folded Reload
1759; RV32IZCMP-WITH-FP-NEXT:    addi sp, sp, 144
1760; RV32IZCMP-WITH-FP-NEXT:    ret
1761;
1762; RV64I-LABEL: caller:
1763; RV64I:       # %bb.0:
1764; RV64I-NEXT:    addi sp, sp, -288
1765; RV64I-NEXT:    sd ra, 280(sp) # 8-byte Folded Spill
1766; RV64I-NEXT:    sd s0, 272(sp) # 8-byte Folded Spill
1767; RV64I-NEXT:    sd s1, 264(sp) # 8-byte Folded Spill
1768; RV64I-NEXT:    sd s2, 256(sp) # 8-byte Folded Spill
1769; RV64I-NEXT:    sd s3, 248(sp) # 8-byte Folded Spill
1770; RV64I-NEXT:    sd s4, 240(sp) # 8-byte Folded Spill
1771; RV64I-NEXT:    sd s5, 232(sp) # 8-byte Folded Spill
1772; RV64I-NEXT:    sd s6, 224(sp) # 8-byte Folded Spill
1773; RV64I-NEXT:    sd s7, 216(sp) # 8-byte Folded Spill
1774; RV64I-NEXT:    sd s8, 208(sp) # 8-byte Folded Spill
1775; RV64I-NEXT:    sd s9, 200(sp) # 8-byte Folded Spill
1776; RV64I-NEXT:    sd s10, 192(sp) # 8-byte Folded Spill
1777; RV64I-NEXT:    sd s11, 184(sp) # 8-byte Folded Spill
1778; RV64I-NEXT:    lui s0, %hi(var)
1779; RV64I-NEXT:    lw a0, %lo(var)(s0)
1780; RV64I-NEXT:    sd a0, 176(sp) # 8-byte Folded Spill
1781; RV64I-NEXT:    lw a0, %lo(var+4)(s0)
1782; RV64I-NEXT:    sd a0, 168(sp) # 8-byte Folded Spill
1783; RV64I-NEXT:    lw a0, %lo(var+8)(s0)
1784; RV64I-NEXT:    sd a0, 160(sp) # 8-byte Folded Spill
1785; RV64I-NEXT:    lw a0, %lo(var+12)(s0)
1786; RV64I-NEXT:    sd a0, 152(sp) # 8-byte Folded Spill
1787; RV64I-NEXT:    addi s5, s0, %lo(var)
1788; RV64I-NEXT:    lw a0, 16(s5)
1789; RV64I-NEXT:    sd a0, 144(sp) # 8-byte Folded Spill
1790; RV64I-NEXT:    lw a0, 20(s5)
1791; RV64I-NEXT:    sd a0, 136(sp) # 8-byte Folded Spill
1792; RV64I-NEXT:    lw a0, 24(s5)
1793; RV64I-NEXT:    sd a0, 128(sp) # 8-byte Folded Spill
1794; RV64I-NEXT:    lw a0, 28(s5)
1795; RV64I-NEXT:    sd a0, 120(sp) # 8-byte Folded Spill
1796; RV64I-NEXT:    lw a0, 32(s5)
1797; RV64I-NEXT:    sd a0, 112(sp) # 8-byte Folded Spill
1798; RV64I-NEXT:    lw a0, 36(s5)
1799; RV64I-NEXT:    sd a0, 104(sp) # 8-byte Folded Spill
1800; RV64I-NEXT:    lw a0, 40(s5)
1801; RV64I-NEXT:    sd a0, 96(sp) # 8-byte Folded Spill
1802; RV64I-NEXT:    lw a0, 44(s5)
1803; RV64I-NEXT:    sd a0, 88(sp) # 8-byte Folded Spill
1804; RV64I-NEXT:    lw a0, 48(s5)
1805; RV64I-NEXT:    sd a0, 80(sp) # 8-byte Folded Spill
1806; RV64I-NEXT:    lw a0, 52(s5)
1807; RV64I-NEXT:    sd a0, 72(sp) # 8-byte Folded Spill
1808; RV64I-NEXT:    lw a0, 56(s5)
1809; RV64I-NEXT:    sd a0, 64(sp) # 8-byte Folded Spill
1810; RV64I-NEXT:    lw a0, 60(s5)
1811; RV64I-NEXT:    sd a0, 56(sp) # 8-byte Folded Spill
1812; RV64I-NEXT:    lw a0, 64(s5)
1813; RV64I-NEXT:    sd a0, 48(sp) # 8-byte Folded Spill
1814; RV64I-NEXT:    lw a0, 68(s5)
1815; RV64I-NEXT:    sd a0, 40(sp) # 8-byte Folded Spill
1816; RV64I-NEXT:    lw a0, 72(s5)
1817; RV64I-NEXT:    sd a0, 32(sp) # 8-byte Folded Spill
1818; RV64I-NEXT:    lw a0, 76(s5)
1819; RV64I-NEXT:    sd a0, 24(sp) # 8-byte Folded Spill
1820; RV64I-NEXT:    lw a0, 80(s5)
1821; RV64I-NEXT:    sd a0, 16(sp) # 8-byte Folded Spill
1822; RV64I-NEXT:    lw a0, 84(s5)
1823; RV64I-NEXT:    sd a0, 8(sp) # 8-byte Folded Spill
1824; RV64I-NEXT:    lw s3, 88(s5)
1825; RV64I-NEXT:    lw s4, 92(s5)
1826; RV64I-NEXT:    lw s6, 96(s5)
1827; RV64I-NEXT:    lw s7, 100(s5)
1828; RV64I-NEXT:    lw s8, 104(s5)
1829; RV64I-NEXT:    lw s9, 108(s5)
1830; RV64I-NEXT:    lw s10, 112(s5)
1831; RV64I-NEXT:    lw s11, 116(s5)
1832; RV64I-NEXT:    lw s1, 120(s5)
1833; RV64I-NEXT:    lw s2, 124(s5)
1834; RV64I-NEXT:    call callee
1835; RV64I-NEXT:    sw s2, 124(s5)
1836; RV64I-NEXT:    sw s1, 120(s5)
1837; RV64I-NEXT:    sw s11, 116(s5)
1838; RV64I-NEXT:    sw s10, 112(s5)
1839; RV64I-NEXT:    sw s9, 108(s5)
1840; RV64I-NEXT:    sw s8, 104(s5)
1841; RV64I-NEXT:    sw s7, 100(s5)
1842; RV64I-NEXT:    sw s6, 96(s5)
1843; RV64I-NEXT:    sw s4, 92(s5)
1844; RV64I-NEXT:    sw s3, 88(s5)
1845; RV64I-NEXT:    ld a0, 8(sp) # 8-byte Folded Reload
1846; RV64I-NEXT:    sw a0, 84(s5)
1847; RV64I-NEXT:    ld a0, 16(sp) # 8-byte Folded Reload
1848; RV64I-NEXT:    sw a0, 80(s5)
1849; RV64I-NEXT:    ld a0, 24(sp) # 8-byte Folded Reload
1850; RV64I-NEXT:    sw a0, 76(s5)
1851; RV64I-NEXT:    ld a0, 32(sp) # 8-byte Folded Reload
1852; RV64I-NEXT:    sw a0, 72(s5)
1853; RV64I-NEXT:    ld a0, 40(sp) # 8-byte Folded Reload
1854; RV64I-NEXT:    sw a0, 68(s5)
1855; RV64I-NEXT:    ld a0, 48(sp) # 8-byte Folded Reload
1856; RV64I-NEXT:    sw a0, 64(s5)
1857; RV64I-NEXT:    ld a0, 56(sp) # 8-byte Folded Reload
1858; RV64I-NEXT:    sw a0, 60(s5)
1859; RV64I-NEXT:    ld a0, 64(sp) # 8-byte Folded Reload
1860; RV64I-NEXT:    sw a0, 56(s5)
1861; RV64I-NEXT:    ld a0, 72(sp) # 8-byte Folded Reload
1862; RV64I-NEXT:    sw a0, 52(s5)
1863; RV64I-NEXT:    ld a0, 80(sp) # 8-byte Folded Reload
1864; RV64I-NEXT:    sw a0, 48(s5)
1865; RV64I-NEXT:    ld a0, 88(sp) # 8-byte Folded Reload
1866; RV64I-NEXT:    sw a0, 44(s5)
1867; RV64I-NEXT:    ld a0, 96(sp) # 8-byte Folded Reload
1868; RV64I-NEXT:    sw a0, 40(s5)
1869; RV64I-NEXT:    ld a0, 104(sp) # 8-byte Folded Reload
1870; RV64I-NEXT:    sw a0, 36(s5)
1871; RV64I-NEXT:    ld a0, 112(sp) # 8-byte Folded Reload
1872; RV64I-NEXT:    sw a0, 32(s5)
1873; RV64I-NEXT:    ld a0, 120(sp) # 8-byte Folded Reload
1874; RV64I-NEXT:    sw a0, 28(s5)
1875; RV64I-NEXT:    ld a0, 128(sp) # 8-byte Folded Reload
1876; RV64I-NEXT:    sw a0, 24(s5)
1877; RV64I-NEXT:    ld a0, 136(sp) # 8-byte Folded Reload
1878; RV64I-NEXT:    sw a0, 20(s5)
1879; RV64I-NEXT:    ld a0, 144(sp) # 8-byte Folded Reload
1880; RV64I-NEXT:    sw a0, 16(s5)
1881; RV64I-NEXT:    ld a0, 152(sp) # 8-byte Folded Reload
1882; RV64I-NEXT:    sw a0, %lo(var+12)(s0)
1883; RV64I-NEXT:    ld a0, 160(sp) # 8-byte Folded Reload
1884; RV64I-NEXT:    sw a0, %lo(var+8)(s0)
1885; RV64I-NEXT:    ld a0, 168(sp) # 8-byte Folded Reload
1886; RV64I-NEXT:    sw a0, %lo(var+4)(s0)
1887; RV64I-NEXT:    ld a0, 176(sp) # 8-byte Folded Reload
1888; RV64I-NEXT:    sw a0, %lo(var)(s0)
1889; RV64I-NEXT:    ld ra, 280(sp) # 8-byte Folded Reload
1890; RV64I-NEXT:    ld s0, 272(sp) # 8-byte Folded Reload
1891; RV64I-NEXT:    ld s1, 264(sp) # 8-byte Folded Reload
1892; RV64I-NEXT:    ld s2, 256(sp) # 8-byte Folded Reload
1893; RV64I-NEXT:    ld s3, 248(sp) # 8-byte Folded Reload
1894; RV64I-NEXT:    ld s4, 240(sp) # 8-byte Folded Reload
1895; RV64I-NEXT:    ld s5, 232(sp) # 8-byte Folded Reload
1896; RV64I-NEXT:    ld s6, 224(sp) # 8-byte Folded Reload
1897; RV64I-NEXT:    ld s7, 216(sp) # 8-byte Folded Reload
1898; RV64I-NEXT:    ld s8, 208(sp) # 8-byte Folded Reload
1899; RV64I-NEXT:    ld s9, 200(sp) # 8-byte Folded Reload
1900; RV64I-NEXT:    ld s10, 192(sp) # 8-byte Folded Reload
1901; RV64I-NEXT:    ld s11, 184(sp) # 8-byte Folded Reload
1902; RV64I-NEXT:    addi sp, sp, 288
1903; RV64I-NEXT:    ret
1904;
1905; RV64I-LP64E-LABEL: caller:
1906; RV64I-LP64E:       # %bb.0:
1907; RV64I-LP64E-NEXT:    addi sp, sp, -272
1908; RV64I-LP64E-NEXT:    sd ra, 264(sp) # 8-byte Folded Spill
1909; RV64I-LP64E-NEXT:    sd s0, 256(sp) # 8-byte Folded Spill
1910; RV64I-LP64E-NEXT:    sd s1, 248(sp) # 8-byte Folded Spill
1911; RV64I-LP64E-NEXT:    lui a0, %hi(var)
1912; RV64I-LP64E-NEXT:    lw a1, %lo(var)(a0)
1913; RV64I-LP64E-NEXT:    sd a1, 240(sp) # 8-byte Folded Spill
1914; RV64I-LP64E-NEXT:    lw a1, %lo(var+4)(a0)
1915; RV64I-LP64E-NEXT:    sd a1, 232(sp) # 8-byte Folded Spill
1916; RV64I-LP64E-NEXT:    lw a1, %lo(var+8)(a0)
1917; RV64I-LP64E-NEXT:    sd a1, 224(sp) # 8-byte Folded Spill
1918; RV64I-LP64E-NEXT:    lw a1, %lo(var+12)(a0)
1919; RV64I-LP64E-NEXT:    sd a1, 216(sp) # 8-byte Folded Spill
1920; RV64I-LP64E-NEXT:    addi s1, a0, %lo(var)
1921; RV64I-LP64E-NEXT:    lw a0, 16(s1)
1922; RV64I-LP64E-NEXT:    sd a0, 208(sp) # 8-byte Folded Spill
1923; RV64I-LP64E-NEXT:    lw a0, 20(s1)
1924; RV64I-LP64E-NEXT:    sd a0, 200(sp) # 8-byte Folded Spill
1925; RV64I-LP64E-NEXT:    lw a0, 24(s1)
1926; RV64I-LP64E-NEXT:    sd a0, 192(sp) # 8-byte Folded Spill
1927; RV64I-LP64E-NEXT:    lw a0, 28(s1)
1928; RV64I-LP64E-NEXT:    sd a0, 184(sp) # 8-byte Folded Spill
1929; RV64I-LP64E-NEXT:    lw a0, 32(s1)
1930; RV64I-LP64E-NEXT:    sd a0, 176(sp) # 8-byte Folded Spill
1931; RV64I-LP64E-NEXT:    lw a0, 36(s1)
1932; RV64I-LP64E-NEXT:    sd a0, 168(sp) # 8-byte Folded Spill
1933; RV64I-LP64E-NEXT:    lw a0, 40(s1)
1934; RV64I-LP64E-NEXT:    sd a0, 160(sp) # 8-byte Folded Spill
1935; RV64I-LP64E-NEXT:    lw a0, 44(s1)
1936; RV64I-LP64E-NEXT:    sd a0, 152(sp) # 8-byte Folded Spill
1937; RV64I-LP64E-NEXT:    lw a0, 48(s1)
1938; RV64I-LP64E-NEXT:    sd a0, 144(sp) # 8-byte Folded Spill
1939; RV64I-LP64E-NEXT:    lw a0, 52(s1)
1940; RV64I-LP64E-NEXT:    sd a0, 136(sp) # 8-byte Folded Spill
1941; RV64I-LP64E-NEXT:    lw a0, 56(s1)
1942; RV64I-LP64E-NEXT:    sd a0, 128(sp) # 8-byte Folded Spill
1943; RV64I-LP64E-NEXT:    lw a0, 60(s1)
1944; RV64I-LP64E-NEXT:    sd a0, 120(sp) # 8-byte Folded Spill
1945; RV64I-LP64E-NEXT:    lw a0, 64(s1)
1946; RV64I-LP64E-NEXT:    sd a0, 112(sp) # 8-byte Folded Spill
1947; RV64I-LP64E-NEXT:    lw a0, 68(s1)
1948; RV64I-LP64E-NEXT:    sd a0, 104(sp) # 8-byte Folded Spill
1949; RV64I-LP64E-NEXT:    lw a0, 72(s1)
1950; RV64I-LP64E-NEXT:    sd a0, 96(sp) # 8-byte Folded Spill
1951; RV64I-LP64E-NEXT:    lw a0, 76(s1)
1952; RV64I-LP64E-NEXT:    sd a0, 88(sp) # 8-byte Folded Spill
1953; RV64I-LP64E-NEXT:    lw a0, 80(s1)
1954; RV64I-LP64E-NEXT:    sd a0, 80(sp) # 8-byte Folded Spill
1955; RV64I-LP64E-NEXT:    lw a0, 84(s1)
1956; RV64I-LP64E-NEXT:    sd a0, 72(sp) # 8-byte Folded Spill
1957; RV64I-LP64E-NEXT:    lw a0, 88(s1)
1958; RV64I-LP64E-NEXT:    sd a0, 64(sp) # 8-byte Folded Spill
1959; RV64I-LP64E-NEXT:    lw a0, 92(s1)
1960; RV64I-LP64E-NEXT:    sd a0, 56(sp) # 8-byte Folded Spill
1961; RV64I-LP64E-NEXT:    lw a0, 96(s1)
1962; RV64I-LP64E-NEXT:    sd a0, 48(sp) # 8-byte Folded Spill
1963; RV64I-LP64E-NEXT:    lw a0, 100(s1)
1964; RV64I-LP64E-NEXT:    sd a0, 40(sp) # 8-byte Folded Spill
1965; RV64I-LP64E-NEXT:    lw a0, 104(s1)
1966; RV64I-LP64E-NEXT:    sd a0, 32(sp) # 8-byte Folded Spill
1967; RV64I-LP64E-NEXT:    lw a0, 108(s1)
1968; RV64I-LP64E-NEXT:    sd a0, 24(sp) # 8-byte Folded Spill
1969; RV64I-LP64E-NEXT:    lw a0, 112(s1)
1970; RV64I-LP64E-NEXT:    sd a0, 16(sp) # 8-byte Folded Spill
1971; RV64I-LP64E-NEXT:    lw a0, 116(s1)
1972; RV64I-LP64E-NEXT:    sd a0, 8(sp) # 8-byte Folded Spill
1973; RV64I-LP64E-NEXT:    lw a0, 120(s1)
1974; RV64I-LP64E-NEXT:    sd a0, 0(sp) # 8-byte Folded Spill
1975; RV64I-LP64E-NEXT:    lw s0, 124(s1)
1976; RV64I-LP64E-NEXT:    call callee
1977; RV64I-LP64E-NEXT:    sw s0, 124(s1)
1978; RV64I-LP64E-NEXT:    ld a0, 0(sp) # 8-byte Folded Reload
1979; RV64I-LP64E-NEXT:    sw a0, 120(s1)
1980; RV64I-LP64E-NEXT:    ld a0, 8(sp) # 8-byte Folded Reload
1981; RV64I-LP64E-NEXT:    sw a0, 116(s1)
1982; RV64I-LP64E-NEXT:    ld a0, 16(sp) # 8-byte Folded Reload
1983; RV64I-LP64E-NEXT:    sw a0, 112(s1)
1984; RV64I-LP64E-NEXT:    ld a0, 24(sp) # 8-byte Folded Reload
1985; RV64I-LP64E-NEXT:    sw a0, 108(s1)
1986; RV64I-LP64E-NEXT:    ld a0, 32(sp) # 8-byte Folded Reload
1987; RV64I-LP64E-NEXT:    sw a0, 104(s1)
1988; RV64I-LP64E-NEXT:    ld a0, 40(sp) # 8-byte Folded Reload
1989; RV64I-LP64E-NEXT:    sw a0, 100(s1)
1990; RV64I-LP64E-NEXT:    ld a0, 48(sp) # 8-byte Folded Reload
1991; RV64I-LP64E-NEXT:    sw a0, 96(s1)
1992; RV64I-LP64E-NEXT:    ld a0, 56(sp) # 8-byte Folded Reload
1993; RV64I-LP64E-NEXT:    sw a0, 92(s1)
1994; RV64I-LP64E-NEXT:    ld a0, 64(sp) # 8-byte Folded Reload
1995; RV64I-LP64E-NEXT:    sw a0, 88(s1)
1996; RV64I-LP64E-NEXT:    ld a0, 72(sp) # 8-byte Folded Reload
1997; RV64I-LP64E-NEXT:    sw a0, 84(s1)
1998; RV64I-LP64E-NEXT:    ld a0, 80(sp) # 8-byte Folded Reload
1999; RV64I-LP64E-NEXT:    sw a0, 80(s1)
2000; RV64I-LP64E-NEXT:    ld a0, 88(sp) # 8-byte Folded Reload
2001; RV64I-LP64E-NEXT:    sw a0, 76(s1)
2002; RV64I-LP64E-NEXT:    ld a0, 96(sp) # 8-byte Folded Reload
2003; RV64I-LP64E-NEXT:    sw a0, 72(s1)
2004; RV64I-LP64E-NEXT:    ld a0, 104(sp) # 8-byte Folded Reload
2005; RV64I-LP64E-NEXT:    sw a0, 68(s1)
2006; RV64I-LP64E-NEXT:    ld a0, 112(sp) # 8-byte Folded Reload
2007; RV64I-LP64E-NEXT:    sw a0, 64(s1)
2008; RV64I-LP64E-NEXT:    ld a0, 120(sp) # 8-byte Folded Reload
2009; RV64I-LP64E-NEXT:    sw a0, 60(s1)
2010; RV64I-LP64E-NEXT:    ld a0, 128(sp) # 8-byte Folded Reload
2011; RV64I-LP64E-NEXT:    sw a0, 56(s1)
2012; RV64I-LP64E-NEXT:    ld a0, 136(sp) # 8-byte Folded Reload
2013; RV64I-LP64E-NEXT:    sw a0, 52(s1)
2014; RV64I-LP64E-NEXT:    ld a0, 144(sp) # 8-byte Folded Reload
2015; RV64I-LP64E-NEXT:    sw a0, 48(s1)
2016; RV64I-LP64E-NEXT:    ld a0, 152(sp) # 8-byte Folded Reload
2017; RV64I-LP64E-NEXT:    sw a0, 44(s1)
2018; RV64I-LP64E-NEXT:    ld a0, 160(sp) # 8-byte Folded Reload
2019; RV64I-LP64E-NEXT:    sw a0, 40(s1)
2020; RV64I-LP64E-NEXT:    ld a0, 168(sp) # 8-byte Folded Reload
2021; RV64I-LP64E-NEXT:    sw a0, 36(s1)
2022; RV64I-LP64E-NEXT:    ld a0, 176(sp) # 8-byte Folded Reload
2023; RV64I-LP64E-NEXT:    sw a0, 32(s1)
2024; RV64I-LP64E-NEXT:    ld a0, 184(sp) # 8-byte Folded Reload
2025; RV64I-LP64E-NEXT:    sw a0, 28(s1)
2026; RV64I-LP64E-NEXT:    ld a0, 192(sp) # 8-byte Folded Reload
2027; RV64I-LP64E-NEXT:    sw a0, 24(s1)
2028; RV64I-LP64E-NEXT:    ld a0, 200(sp) # 8-byte Folded Reload
2029; RV64I-LP64E-NEXT:    sw a0, 20(s1)
2030; RV64I-LP64E-NEXT:    ld a0, 208(sp) # 8-byte Folded Reload
2031; RV64I-LP64E-NEXT:    sw a0, 16(s1)
2032; RV64I-LP64E-NEXT:    lui a1, %hi(var)
2033; RV64I-LP64E-NEXT:    ld a0, 216(sp) # 8-byte Folded Reload
2034; RV64I-LP64E-NEXT:    sw a0, %lo(var+12)(a1)
2035; RV64I-LP64E-NEXT:    ld a0, 224(sp) # 8-byte Folded Reload
2036; RV64I-LP64E-NEXT:    sw a0, %lo(var+8)(a1)
2037; RV64I-LP64E-NEXT:    ld a0, 232(sp) # 8-byte Folded Reload
2038; RV64I-LP64E-NEXT:    sw a0, %lo(var+4)(a1)
2039; RV64I-LP64E-NEXT:    ld a0, 240(sp) # 8-byte Folded Reload
2040; RV64I-LP64E-NEXT:    sw a0, %lo(var)(a1)
2041; RV64I-LP64E-NEXT:    ld ra, 264(sp) # 8-byte Folded Reload
2042; RV64I-LP64E-NEXT:    ld s0, 256(sp) # 8-byte Folded Reload
2043; RV64I-LP64E-NEXT:    ld s1, 248(sp) # 8-byte Folded Reload
2044; RV64I-LP64E-NEXT:    addi sp, sp, 272
2045; RV64I-LP64E-NEXT:    ret
2046;
2047; RV64I-WITH-FP-LABEL: caller:
2048; RV64I-WITH-FP:       # %bb.0:
2049; RV64I-WITH-FP-NEXT:    addi sp, sp, -288
2050; RV64I-WITH-FP-NEXT:    sd ra, 280(sp) # 8-byte Folded Spill
2051; RV64I-WITH-FP-NEXT:    sd s0, 272(sp) # 8-byte Folded Spill
2052; RV64I-WITH-FP-NEXT:    sd s1, 264(sp) # 8-byte Folded Spill
2053; RV64I-WITH-FP-NEXT:    sd s2, 256(sp) # 8-byte Folded Spill
2054; RV64I-WITH-FP-NEXT:    sd s3, 248(sp) # 8-byte Folded Spill
2055; RV64I-WITH-FP-NEXT:    sd s4, 240(sp) # 8-byte Folded Spill
2056; RV64I-WITH-FP-NEXT:    sd s5, 232(sp) # 8-byte Folded Spill
2057; RV64I-WITH-FP-NEXT:    sd s6, 224(sp) # 8-byte Folded Spill
2058; RV64I-WITH-FP-NEXT:    sd s7, 216(sp) # 8-byte Folded Spill
2059; RV64I-WITH-FP-NEXT:    sd s8, 208(sp) # 8-byte Folded Spill
2060; RV64I-WITH-FP-NEXT:    sd s9, 200(sp) # 8-byte Folded Spill
2061; RV64I-WITH-FP-NEXT:    sd s10, 192(sp) # 8-byte Folded Spill
2062; RV64I-WITH-FP-NEXT:    sd s11, 184(sp) # 8-byte Folded Spill
2063; RV64I-WITH-FP-NEXT:    addi s0, sp, 288
2064; RV64I-WITH-FP-NEXT:    lui s1, %hi(var)
2065; RV64I-WITH-FP-NEXT:    lw a0, %lo(var)(s1)
2066; RV64I-WITH-FP-NEXT:    sd a0, -112(s0) # 8-byte Folded Spill
2067; RV64I-WITH-FP-NEXT:    lw a0, %lo(var+4)(s1)
2068; RV64I-WITH-FP-NEXT:    sd a0, -120(s0) # 8-byte Folded Spill
2069; RV64I-WITH-FP-NEXT:    lw a0, %lo(var+8)(s1)
2070; RV64I-WITH-FP-NEXT:    sd a0, -128(s0) # 8-byte Folded Spill
2071; RV64I-WITH-FP-NEXT:    lw a0, %lo(var+12)(s1)
2072; RV64I-WITH-FP-NEXT:    sd a0, -136(s0) # 8-byte Folded Spill
2073; RV64I-WITH-FP-NEXT:    addi s6, s1, %lo(var)
2074; RV64I-WITH-FP-NEXT:    lw a0, 16(s6)
2075; RV64I-WITH-FP-NEXT:    sd a0, -144(s0) # 8-byte Folded Spill
2076; RV64I-WITH-FP-NEXT:    lw a0, 20(s6)
2077; RV64I-WITH-FP-NEXT:    sd a0, -152(s0) # 8-byte Folded Spill
2078; RV64I-WITH-FP-NEXT:    lw a0, 24(s6)
2079; RV64I-WITH-FP-NEXT:    sd a0, -160(s0) # 8-byte Folded Spill
2080; RV64I-WITH-FP-NEXT:    lw a0, 28(s6)
2081; RV64I-WITH-FP-NEXT:    sd a0, -168(s0) # 8-byte Folded Spill
2082; RV64I-WITH-FP-NEXT:    lw a0, 32(s6)
2083; RV64I-WITH-FP-NEXT:    sd a0, -176(s0) # 8-byte Folded Spill
2084; RV64I-WITH-FP-NEXT:    lw a0, 36(s6)
2085; RV64I-WITH-FP-NEXT:    sd a0, -184(s0) # 8-byte Folded Spill
2086; RV64I-WITH-FP-NEXT:    lw a0, 40(s6)
2087; RV64I-WITH-FP-NEXT:    sd a0, -192(s0) # 8-byte Folded Spill
2088; RV64I-WITH-FP-NEXT:    lw a0, 44(s6)
2089; RV64I-WITH-FP-NEXT:    sd a0, -200(s0) # 8-byte Folded Spill
2090; RV64I-WITH-FP-NEXT:    lw a0, 48(s6)
2091; RV64I-WITH-FP-NEXT:    sd a0, -208(s0) # 8-byte Folded Spill
2092; RV64I-WITH-FP-NEXT:    lw a0, 52(s6)
2093; RV64I-WITH-FP-NEXT:    sd a0, -216(s0) # 8-byte Folded Spill
2094; RV64I-WITH-FP-NEXT:    lw a0, 56(s6)
2095; RV64I-WITH-FP-NEXT:    sd a0, -224(s0) # 8-byte Folded Spill
2096; RV64I-WITH-FP-NEXT:    lw a0, 60(s6)
2097; RV64I-WITH-FP-NEXT:    sd a0, -232(s0) # 8-byte Folded Spill
2098; RV64I-WITH-FP-NEXT:    lw a0, 64(s6)
2099; RV64I-WITH-FP-NEXT:    sd a0, -240(s0) # 8-byte Folded Spill
2100; RV64I-WITH-FP-NEXT:    lw a0, 68(s6)
2101; RV64I-WITH-FP-NEXT:    sd a0, -248(s0) # 8-byte Folded Spill
2102; RV64I-WITH-FP-NEXT:    lw a0, 72(s6)
2103; RV64I-WITH-FP-NEXT:    sd a0, -256(s0) # 8-byte Folded Spill
2104; RV64I-WITH-FP-NEXT:    lw a0, 76(s6)
2105; RV64I-WITH-FP-NEXT:    sd a0, -264(s0) # 8-byte Folded Spill
2106; RV64I-WITH-FP-NEXT:    lw a0, 80(s6)
2107; RV64I-WITH-FP-NEXT:    sd a0, -272(s0) # 8-byte Folded Spill
2108; RV64I-WITH-FP-NEXT:    lw a0, 84(s6)
2109; RV64I-WITH-FP-NEXT:    sd a0, -280(s0) # 8-byte Folded Spill
2110; RV64I-WITH-FP-NEXT:    lw a0, 88(s6)
2111; RV64I-WITH-FP-NEXT:    sd a0, -288(s0) # 8-byte Folded Spill
2112; RV64I-WITH-FP-NEXT:    lw s8, 92(s6)
2113; RV64I-WITH-FP-NEXT:    lw s9, 96(s6)
2114; RV64I-WITH-FP-NEXT:    lw s10, 100(s6)
2115; RV64I-WITH-FP-NEXT:    lw s11, 104(s6)
2116; RV64I-WITH-FP-NEXT:    lw s2, 108(s6)
2117; RV64I-WITH-FP-NEXT:    lw s3, 112(s6)
2118; RV64I-WITH-FP-NEXT:    lw s4, 116(s6)
2119; RV64I-WITH-FP-NEXT:    lw s5, 120(s6)
2120; RV64I-WITH-FP-NEXT:    lw s7, 124(s6)
2121; RV64I-WITH-FP-NEXT:    call callee
2122; RV64I-WITH-FP-NEXT:    sw s7, 124(s6)
2123; RV64I-WITH-FP-NEXT:    sw s5, 120(s6)
2124; RV64I-WITH-FP-NEXT:    sw s4, 116(s6)
2125; RV64I-WITH-FP-NEXT:    sw s3, 112(s6)
2126; RV64I-WITH-FP-NEXT:    sw s2, 108(s6)
2127; RV64I-WITH-FP-NEXT:    sw s11, 104(s6)
2128; RV64I-WITH-FP-NEXT:    sw s10, 100(s6)
2129; RV64I-WITH-FP-NEXT:    sw s9, 96(s6)
2130; RV64I-WITH-FP-NEXT:    sw s8, 92(s6)
2131; RV64I-WITH-FP-NEXT:    ld a0, -288(s0) # 8-byte Folded Reload
2132; RV64I-WITH-FP-NEXT:    sw a0, 88(s6)
2133; RV64I-WITH-FP-NEXT:    ld a0, -280(s0) # 8-byte Folded Reload
2134; RV64I-WITH-FP-NEXT:    sw a0, 84(s6)
2135; RV64I-WITH-FP-NEXT:    ld a0, -272(s0) # 8-byte Folded Reload
2136; RV64I-WITH-FP-NEXT:    sw a0, 80(s6)
2137; RV64I-WITH-FP-NEXT:    ld a0, -264(s0) # 8-byte Folded Reload
2138; RV64I-WITH-FP-NEXT:    sw a0, 76(s6)
2139; RV64I-WITH-FP-NEXT:    ld a0, -256(s0) # 8-byte Folded Reload
2140; RV64I-WITH-FP-NEXT:    sw a0, 72(s6)
2141; RV64I-WITH-FP-NEXT:    ld a0, -248(s0) # 8-byte Folded Reload
2142; RV64I-WITH-FP-NEXT:    sw a0, 68(s6)
2143; RV64I-WITH-FP-NEXT:    ld a0, -240(s0) # 8-byte Folded Reload
2144; RV64I-WITH-FP-NEXT:    sw a0, 64(s6)
2145; RV64I-WITH-FP-NEXT:    ld a0, -232(s0) # 8-byte Folded Reload
2146; RV64I-WITH-FP-NEXT:    sw a0, 60(s6)
2147; RV64I-WITH-FP-NEXT:    ld a0, -224(s0) # 8-byte Folded Reload
2148; RV64I-WITH-FP-NEXT:    sw a0, 56(s6)
2149; RV64I-WITH-FP-NEXT:    ld a0, -216(s0) # 8-byte Folded Reload
2150; RV64I-WITH-FP-NEXT:    sw a0, 52(s6)
2151; RV64I-WITH-FP-NEXT:    ld a0, -208(s0) # 8-byte Folded Reload
2152; RV64I-WITH-FP-NEXT:    sw a0, 48(s6)
2153; RV64I-WITH-FP-NEXT:    ld a0, -200(s0) # 8-byte Folded Reload
2154; RV64I-WITH-FP-NEXT:    sw a0, 44(s6)
2155; RV64I-WITH-FP-NEXT:    ld a0, -192(s0) # 8-byte Folded Reload
2156; RV64I-WITH-FP-NEXT:    sw a0, 40(s6)
2157; RV64I-WITH-FP-NEXT:    ld a0, -184(s0) # 8-byte Folded Reload
2158; RV64I-WITH-FP-NEXT:    sw a0, 36(s6)
2159; RV64I-WITH-FP-NEXT:    ld a0, -176(s0) # 8-byte Folded Reload
2160; RV64I-WITH-FP-NEXT:    sw a0, 32(s6)
2161; RV64I-WITH-FP-NEXT:    ld a0, -168(s0) # 8-byte Folded Reload
2162; RV64I-WITH-FP-NEXT:    sw a0, 28(s6)
2163; RV64I-WITH-FP-NEXT:    ld a0, -160(s0) # 8-byte Folded Reload
2164; RV64I-WITH-FP-NEXT:    sw a0, 24(s6)
2165; RV64I-WITH-FP-NEXT:    ld a0, -152(s0) # 8-byte Folded Reload
2166; RV64I-WITH-FP-NEXT:    sw a0, 20(s6)
2167; RV64I-WITH-FP-NEXT:    ld a0, -144(s0) # 8-byte Folded Reload
2168; RV64I-WITH-FP-NEXT:    sw a0, 16(s6)
2169; RV64I-WITH-FP-NEXT:    ld a0, -136(s0) # 8-byte Folded Reload
2170; RV64I-WITH-FP-NEXT:    sw a0, %lo(var+12)(s1)
2171; RV64I-WITH-FP-NEXT:    ld a0, -128(s0) # 8-byte Folded Reload
2172; RV64I-WITH-FP-NEXT:    sw a0, %lo(var+8)(s1)
2173; RV64I-WITH-FP-NEXT:    ld a0, -120(s0) # 8-byte Folded Reload
2174; RV64I-WITH-FP-NEXT:    sw a0, %lo(var+4)(s1)
2175; RV64I-WITH-FP-NEXT:    ld a0, -112(s0) # 8-byte Folded Reload
2176; RV64I-WITH-FP-NEXT:    sw a0, %lo(var)(s1)
2177; RV64I-WITH-FP-NEXT:    ld ra, 280(sp) # 8-byte Folded Reload
2178; RV64I-WITH-FP-NEXT:    ld s0, 272(sp) # 8-byte Folded Reload
2179; RV64I-WITH-FP-NEXT:    ld s1, 264(sp) # 8-byte Folded Reload
2180; RV64I-WITH-FP-NEXT:    ld s2, 256(sp) # 8-byte Folded Reload
2181; RV64I-WITH-FP-NEXT:    ld s3, 248(sp) # 8-byte Folded Reload
2182; RV64I-WITH-FP-NEXT:    ld s4, 240(sp) # 8-byte Folded Reload
2183; RV64I-WITH-FP-NEXT:    ld s5, 232(sp) # 8-byte Folded Reload
2184; RV64I-WITH-FP-NEXT:    ld s6, 224(sp) # 8-byte Folded Reload
2185; RV64I-WITH-FP-NEXT:    ld s7, 216(sp) # 8-byte Folded Reload
2186; RV64I-WITH-FP-NEXT:    ld s8, 208(sp) # 8-byte Folded Reload
2187; RV64I-WITH-FP-NEXT:    ld s9, 200(sp) # 8-byte Folded Reload
2188; RV64I-WITH-FP-NEXT:    ld s10, 192(sp) # 8-byte Folded Reload
2189; RV64I-WITH-FP-NEXT:    ld s11, 184(sp) # 8-byte Folded Reload
2190; RV64I-WITH-FP-NEXT:    addi sp, sp, 288
2191; RV64I-WITH-FP-NEXT:    ret
2192;
2193; RV64IZCMP-LABEL: caller:
2194; RV64IZCMP:       # %bb.0:
2195; RV64IZCMP-NEXT:    cm.push {ra, s0-s11}, -160
2196; RV64IZCMP-NEXT:    addi sp, sp, -128
2197; RV64IZCMP-NEXT:    lui s0, %hi(var)
2198; RV64IZCMP-NEXT:    lw a0, %lo(var)(s0)
2199; RV64IZCMP-NEXT:    sd a0, 168(sp) # 8-byte Folded Spill
2200; RV64IZCMP-NEXT:    lw a0, %lo(var+4)(s0)
2201; RV64IZCMP-NEXT:    sd a0, 160(sp) # 8-byte Folded Spill
2202; RV64IZCMP-NEXT:    lw a0, %lo(var+8)(s0)
2203; RV64IZCMP-NEXT:    sd a0, 152(sp) # 8-byte Folded Spill
2204; RV64IZCMP-NEXT:    lw a0, %lo(var+12)(s0)
2205; RV64IZCMP-NEXT:    sd a0, 144(sp) # 8-byte Folded Spill
2206; RV64IZCMP-NEXT:    addi s1, s0, %lo(var)
2207; RV64IZCMP-NEXT:    lw a0, 16(s1)
2208; RV64IZCMP-NEXT:    sd a0, 136(sp) # 8-byte Folded Spill
2209; RV64IZCMP-NEXT:    lw a0, 20(s1)
2210; RV64IZCMP-NEXT:    sd a0, 128(sp) # 8-byte Folded Spill
2211; RV64IZCMP-NEXT:    lw a0, 24(s1)
2212; RV64IZCMP-NEXT:    sd a0, 120(sp) # 8-byte Folded Spill
2213; RV64IZCMP-NEXT:    lw a0, 28(s1)
2214; RV64IZCMP-NEXT:    sd a0, 112(sp) # 8-byte Folded Spill
2215; RV64IZCMP-NEXT:    lw a0, 32(s1)
2216; RV64IZCMP-NEXT:    sd a0, 104(sp) # 8-byte Folded Spill
2217; RV64IZCMP-NEXT:    lw a0, 36(s1)
2218; RV64IZCMP-NEXT:    sd a0, 96(sp) # 8-byte Folded Spill
2219; RV64IZCMP-NEXT:    lw a0, 40(s1)
2220; RV64IZCMP-NEXT:    sd a0, 88(sp) # 8-byte Folded Spill
2221; RV64IZCMP-NEXT:    lw a0, 44(s1)
2222; RV64IZCMP-NEXT:    sd a0, 80(sp) # 8-byte Folded Spill
2223; RV64IZCMP-NEXT:    lw a0, 48(s1)
2224; RV64IZCMP-NEXT:    sd a0, 72(sp) # 8-byte Folded Spill
2225; RV64IZCMP-NEXT:    lw a0, 52(s1)
2226; RV64IZCMP-NEXT:    sd a0, 64(sp) # 8-byte Folded Spill
2227; RV64IZCMP-NEXT:    lw a0, 56(s1)
2228; RV64IZCMP-NEXT:    sd a0, 56(sp) # 8-byte Folded Spill
2229; RV64IZCMP-NEXT:    lw a0, 60(s1)
2230; RV64IZCMP-NEXT:    sd a0, 48(sp) # 8-byte Folded Spill
2231; RV64IZCMP-NEXT:    lw a0, 64(s1)
2232; RV64IZCMP-NEXT:    sd a0, 40(sp) # 8-byte Folded Spill
2233; RV64IZCMP-NEXT:    lw a0, 68(s1)
2234; RV64IZCMP-NEXT:    sd a0, 32(sp) # 8-byte Folded Spill
2235; RV64IZCMP-NEXT:    lw a0, 72(s1)
2236; RV64IZCMP-NEXT:    sd a0, 24(sp) # 8-byte Folded Spill
2237; RV64IZCMP-NEXT:    lw a0, 76(s1)
2238; RV64IZCMP-NEXT:    sd a0, 16(sp) # 8-byte Folded Spill
2239; RV64IZCMP-NEXT:    lw a0, 80(s1)
2240; RV64IZCMP-NEXT:    sd a0, 8(sp) # 8-byte Folded Spill
2241; RV64IZCMP-NEXT:    lw a0, 84(s1)
2242; RV64IZCMP-NEXT:    sd a0, 0(sp) # 8-byte Folded Spill
2243; RV64IZCMP-NEXT:    lw s4, 88(s1)
2244; RV64IZCMP-NEXT:    lw s5, 92(s1)
2245; RV64IZCMP-NEXT:    lw s6, 96(s1)
2246; RV64IZCMP-NEXT:    lw s7, 100(s1)
2247; RV64IZCMP-NEXT:    lw s8, 104(s1)
2248; RV64IZCMP-NEXT:    lw s9, 108(s1)
2249; RV64IZCMP-NEXT:    lw s10, 112(s1)
2250; RV64IZCMP-NEXT:    lw s11, 116(s1)
2251; RV64IZCMP-NEXT:    lw s2, 120(s1)
2252; RV64IZCMP-NEXT:    lw s3, 124(s1)
2253; RV64IZCMP-NEXT:    call callee
2254; RV64IZCMP-NEXT:    sw s3, 124(s1)
2255; RV64IZCMP-NEXT:    sw s2, 120(s1)
2256; RV64IZCMP-NEXT:    sw s11, 116(s1)
2257; RV64IZCMP-NEXT:    sw s10, 112(s1)
2258; RV64IZCMP-NEXT:    sw s9, 108(s1)
2259; RV64IZCMP-NEXT:    sw s8, 104(s1)
2260; RV64IZCMP-NEXT:    sw s7, 100(s1)
2261; RV64IZCMP-NEXT:    sw s6, 96(s1)
2262; RV64IZCMP-NEXT:    sw s5, 92(s1)
2263; RV64IZCMP-NEXT:    sw s4, 88(s1)
2264; RV64IZCMP-NEXT:    ld a0, 0(sp) # 8-byte Folded Reload
2265; RV64IZCMP-NEXT:    sw a0, 84(s1)
2266; RV64IZCMP-NEXT:    ld a0, 8(sp) # 8-byte Folded Reload
2267; RV64IZCMP-NEXT:    sw a0, 80(s1)
2268; RV64IZCMP-NEXT:    ld a0, 16(sp) # 8-byte Folded Reload
2269; RV64IZCMP-NEXT:    sw a0, 76(s1)
2270; RV64IZCMP-NEXT:    ld a0, 24(sp) # 8-byte Folded Reload
2271; RV64IZCMP-NEXT:    sw a0, 72(s1)
2272; RV64IZCMP-NEXT:    ld a0, 32(sp) # 8-byte Folded Reload
2273; RV64IZCMP-NEXT:    sw a0, 68(s1)
2274; RV64IZCMP-NEXT:    ld a0, 40(sp) # 8-byte Folded Reload
2275; RV64IZCMP-NEXT:    sw a0, 64(s1)
2276; RV64IZCMP-NEXT:    ld a0, 48(sp) # 8-byte Folded Reload
2277; RV64IZCMP-NEXT:    sw a0, 60(s1)
2278; RV64IZCMP-NEXT:    ld a0, 56(sp) # 8-byte Folded Reload
2279; RV64IZCMP-NEXT:    sw a0, 56(s1)
2280; RV64IZCMP-NEXT:    ld a0, 64(sp) # 8-byte Folded Reload
2281; RV64IZCMP-NEXT:    sw a0, 52(s1)
2282; RV64IZCMP-NEXT:    ld a0, 72(sp) # 8-byte Folded Reload
2283; RV64IZCMP-NEXT:    sw a0, 48(s1)
2284; RV64IZCMP-NEXT:    ld a0, 80(sp) # 8-byte Folded Reload
2285; RV64IZCMP-NEXT:    sw a0, 44(s1)
2286; RV64IZCMP-NEXT:    ld a0, 88(sp) # 8-byte Folded Reload
2287; RV64IZCMP-NEXT:    sw a0, 40(s1)
2288; RV64IZCMP-NEXT:    ld a0, 96(sp) # 8-byte Folded Reload
2289; RV64IZCMP-NEXT:    sw a0, 36(s1)
2290; RV64IZCMP-NEXT:    ld a0, 104(sp) # 8-byte Folded Reload
2291; RV64IZCMP-NEXT:    sw a0, 32(s1)
2292; RV64IZCMP-NEXT:    ld a0, 112(sp) # 8-byte Folded Reload
2293; RV64IZCMP-NEXT:    sw a0, 28(s1)
2294; RV64IZCMP-NEXT:    ld a0, 120(sp) # 8-byte Folded Reload
2295; RV64IZCMP-NEXT:    sw a0, 24(s1)
2296; RV64IZCMP-NEXT:    ld a0, 128(sp) # 8-byte Folded Reload
2297; RV64IZCMP-NEXT:    sw a0, 20(s1)
2298; RV64IZCMP-NEXT:    ld a0, 136(sp) # 8-byte Folded Reload
2299; RV64IZCMP-NEXT:    sw a0, 16(s1)
2300; RV64IZCMP-NEXT:    ld a0, 144(sp) # 8-byte Folded Reload
2301; RV64IZCMP-NEXT:    sw a0, %lo(var+12)(s0)
2302; RV64IZCMP-NEXT:    ld a0, 152(sp) # 8-byte Folded Reload
2303; RV64IZCMP-NEXT:    sw a0, %lo(var+8)(s0)
2304; RV64IZCMP-NEXT:    ld a0, 160(sp) # 8-byte Folded Reload
2305; RV64IZCMP-NEXT:    sw a0, %lo(var+4)(s0)
2306; RV64IZCMP-NEXT:    ld a0, 168(sp) # 8-byte Folded Reload
2307; RV64IZCMP-NEXT:    sw a0, %lo(var)(s0)
2308; RV64IZCMP-NEXT:    addi sp, sp, 128
2309; RV64IZCMP-NEXT:    cm.popret {ra, s0-s11}, 160
2310;
2311; RV64IZCMP-WITH-FP-LABEL: caller:
2312; RV64IZCMP-WITH-FP:       # %bb.0:
2313; RV64IZCMP-WITH-FP-NEXT:    addi sp, sp, -288
2314; RV64IZCMP-WITH-FP-NEXT:    sd ra, 280(sp) # 8-byte Folded Spill
2315; RV64IZCMP-WITH-FP-NEXT:    sd s0, 272(sp) # 8-byte Folded Spill
2316; RV64IZCMP-WITH-FP-NEXT:    sd s1, 264(sp) # 8-byte Folded Spill
2317; RV64IZCMP-WITH-FP-NEXT:    sd s2, 256(sp) # 8-byte Folded Spill
2318; RV64IZCMP-WITH-FP-NEXT:    sd s3, 248(sp) # 8-byte Folded Spill
2319; RV64IZCMP-WITH-FP-NEXT:    sd s4, 240(sp) # 8-byte Folded Spill
2320; RV64IZCMP-WITH-FP-NEXT:    sd s5, 232(sp) # 8-byte Folded Spill
2321; RV64IZCMP-WITH-FP-NEXT:    sd s6, 224(sp) # 8-byte Folded Spill
2322; RV64IZCMP-WITH-FP-NEXT:    sd s7, 216(sp) # 8-byte Folded Spill
2323; RV64IZCMP-WITH-FP-NEXT:    sd s8, 208(sp) # 8-byte Folded Spill
2324; RV64IZCMP-WITH-FP-NEXT:    sd s9, 200(sp) # 8-byte Folded Spill
2325; RV64IZCMP-WITH-FP-NEXT:    sd s10, 192(sp) # 8-byte Folded Spill
2326; RV64IZCMP-WITH-FP-NEXT:    sd s11, 184(sp) # 8-byte Folded Spill
2327; RV64IZCMP-WITH-FP-NEXT:    addi s0, sp, 288
2328; RV64IZCMP-WITH-FP-NEXT:    lui s6, %hi(var)
2329; RV64IZCMP-WITH-FP-NEXT:    lw a0, %lo(var)(s6)
2330; RV64IZCMP-WITH-FP-NEXT:    sd a0, -112(s0) # 8-byte Folded Spill
2331; RV64IZCMP-WITH-FP-NEXT:    lw a0, %lo(var+4)(s6)
2332; RV64IZCMP-WITH-FP-NEXT:    sd a0, -120(s0) # 8-byte Folded Spill
2333; RV64IZCMP-WITH-FP-NEXT:    lw a0, %lo(var+8)(s6)
2334; RV64IZCMP-WITH-FP-NEXT:    sd a0, -128(s0) # 8-byte Folded Spill
2335; RV64IZCMP-WITH-FP-NEXT:    lw a0, %lo(var+12)(s6)
2336; RV64IZCMP-WITH-FP-NEXT:    sd a0, -136(s0) # 8-byte Folded Spill
2337; RV64IZCMP-WITH-FP-NEXT:    addi s1, s6, %lo(var)
2338; RV64IZCMP-WITH-FP-NEXT:    lw a0, 16(s1)
2339; RV64IZCMP-WITH-FP-NEXT:    sd a0, -144(s0) # 8-byte Folded Spill
2340; RV64IZCMP-WITH-FP-NEXT:    lw a0, 20(s1)
2341; RV64IZCMP-WITH-FP-NEXT:    sd a0, -152(s0) # 8-byte Folded Spill
2342; RV64IZCMP-WITH-FP-NEXT:    lw a0, 24(s1)
2343; RV64IZCMP-WITH-FP-NEXT:    sd a0, -160(s0) # 8-byte Folded Spill
2344; RV64IZCMP-WITH-FP-NEXT:    lw a0, 28(s1)
2345; RV64IZCMP-WITH-FP-NEXT:    sd a0, -168(s0) # 8-byte Folded Spill
2346; RV64IZCMP-WITH-FP-NEXT:    lw a0, 32(s1)
2347; RV64IZCMP-WITH-FP-NEXT:    sd a0, -176(s0) # 8-byte Folded Spill
2348; RV64IZCMP-WITH-FP-NEXT:    lw a0, 36(s1)
2349; RV64IZCMP-WITH-FP-NEXT:    sd a0, -184(s0) # 8-byte Folded Spill
2350; RV64IZCMP-WITH-FP-NEXT:    lw a0, 40(s1)
2351; RV64IZCMP-WITH-FP-NEXT:    sd a0, -192(s0) # 8-byte Folded Spill
2352; RV64IZCMP-WITH-FP-NEXT:    lw a0, 44(s1)
2353; RV64IZCMP-WITH-FP-NEXT:    sd a0, -200(s0) # 8-byte Folded Spill
2354; RV64IZCMP-WITH-FP-NEXT:    lw a0, 48(s1)
2355; RV64IZCMP-WITH-FP-NEXT:    sd a0, -208(s0) # 8-byte Folded Spill
2356; RV64IZCMP-WITH-FP-NEXT:    lw a0, 52(s1)
2357; RV64IZCMP-WITH-FP-NEXT:    sd a0, -216(s0) # 8-byte Folded Spill
2358; RV64IZCMP-WITH-FP-NEXT:    lw a0, 56(s1)
2359; RV64IZCMP-WITH-FP-NEXT:    sd a0, -224(s0) # 8-byte Folded Spill
2360; RV64IZCMP-WITH-FP-NEXT:    lw a0, 60(s1)
2361; RV64IZCMP-WITH-FP-NEXT:    sd a0, -232(s0) # 8-byte Folded Spill
2362; RV64IZCMP-WITH-FP-NEXT:    lw a0, 64(s1)
2363; RV64IZCMP-WITH-FP-NEXT:    sd a0, -240(s0) # 8-byte Folded Spill
2364; RV64IZCMP-WITH-FP-NEXT:    lw a0, 68(s1)
2365; RV64IZCMP-WITH-FP-NEXT:    sd a0, -248(s0) # 8-byte Folded Spill
2366; RV64IZCMP-WITH-FP-NEXT:    lw a0, 72(s1)
2367; RV64IZCMP-WITH-FP-NEXT:    sd a0, -256(s0) # 8-byte Folded Spill
2368; RV64IZCMP-WITH-FP-NEXT:    lw a0, 76(s1)
2369; RV64IZCMP-WITH-FP-NEXT:    sd a0, -264(s0) # 8-byte Folded Spill
2370; RV64IZCMP-WITH-FP-NEXT:    lw a0, 80(s1)
2371; RV64IZCMP-WITH-FP-NEXT:    sd a0, -272(s0) # 8-byte Folded Spill
2372; RV64IZCMP-WITH-FP-NEXT:    lw a0, 84(s1)
2373; RV64IZCMP-WITH-FP-NEXT:    sd a0, -280(s0) # 8-byte Folded Spill
2374; RV64IZCMP-WITH-FP-NEXT:    lw a0, 88(s1)
2375; RV64IZCMP-WITH-FP-NEXT:    sd a0, -288(s0) # 8-byte Folded Spill
2376; RV64IZCMP-WITH-FP-NEXT:    lw s8, 92(s1)
2377; RV64IZCMP-WITH-FP-NEXT:    lw s9, 96(s1)
2378; RV64IZCMP-WITH-FP-NEXT:    lw s10, 100(s1)
2379; RV64IZCMP-WITH-FP-NEXT:    lw s11, 104(s1)
2380; RV64IZCMP-WITH-FP-NEXT:    lw s2, 108(s1)
2381; RV64IZCMP-WITH-FP-NEXT:    lw s3, 112(s1)
2382; RV64IZCMP-WITH-FP-NEXT:    lw s4, 116(s1)
2383; RV64IZCMP-WITH-FP-NEXT:    lw s5, 120(s1)
2384; RV64IZCMP-WITH-FP-NEXT:    lw s7, 124(s1)
2385; RV64IZCMP-WITH-FP-NEXT:    call callee
2386; RV64IZCMP-WITH-FP-NEXT:    sw s7, 124(s1)
2387; RV64IZCMP-WITH-FP-NEXT:    sw s5, 120(s1)
2388; RV64IZCMP-WITH-FP-NEXT:    sw s4, 116(s1)
2389; RV64IZCMP-WITH-FP-NEXT:    sw s3, 112(s1)
2390; RV64IZCMP-WITH-FP-NEXT:    sw s2, 108(s1)
2391; RV64IZCMP-WITH-FP-NEXT:    sw s11, 104(s1)
2392; RV64IZCMP-WITH-FP-NEXT:    sw s10, 100(s1)
2393; RV64IZCMP-WITH-FP-NEXT:    sw s9, 96(s1)
2394; RV64IZCMP-WITH-FP-NEXT:    sw s8, 92(s1)
2395; RV64IZCMP-WITH-FP-NEXT:    ld a0, -288(s0) # 8-byte Folded Reload
2396; RV64IZCMP-WITH-FP-NEXT:    sw a0, 88(s1)
2397; RV64IZCMP-WITH-FP-NEXT:    ld a0, -280(s0) # 8-byte Folded Reload
2398; RV64IZCMP-WITH-FP-NEXT:    sw a0, 84(s1)
2399; RV64IZCMP-WITH-FP-NEXT:    ld a0, -272(s0) # 8-byte Folded Reload
2400; RV64IZCMP-WITH-FP-NEXT:    sw a0, 80(s1)
2401; RV64IZCMP-WITH-FP-NEXT:    ld a0, -264(s0) # 8-byte Folded Reload
2402; RV64IZCMP-WITH-FP-NEXT:    sw a0, 76(s1)
2403; RV64IZCMP-WITH-FP-NEXT:    ld a0, -256(s0) # 8-byte Folded Reload
2404; RV64IZCMP-WITH-FP-NEXT:    sw a0, 72(s1)
2405; RV64IZCMP-WITH-FP-NEXT:    ld a0, -248(s0) # 8-byte Folded Reload
2406; RV64IZCMP-WITH-FP-NEXT:    sw a0, 68(s1)
2407; RV64IZCMP-WITH-FP-NEXT:    ld a0, -240(s0) # 8-byte Folded Reload
2408; RV64IZCMP-WITH-FP-NEXT:    sw a0, 64(s1)
2409; RV64IZCMP-WITH-FP-NEXT:    ld a0, -232(s0) # 8-byte Folded Reload
2410; RV64IZCMP-WITH-FP-NEXT:    sw a0, 60(s1)
2411; RV64IZCMP-WITH-FP-NEXT:    ld a0, -224(s0) # 8-byte Folded Reload
2412; RV64IZCMP-WITH-FP-NEXT:    sw a0, 56(s1)
2413; RV64IZCMP-WITH-FP-NEXT:    ld a0, -216(s0) # 8-byte Folded Reload
2414; RV64IZCMP-WITH-FP-NEXT:    sw a0, 52(s1)
2415; RV64IZCMP-WITH-FP-NEXT:    ld a0, -208(s0) # 8-byte Folded Reload
2416; RV64IZCMP-WITH-FP-NEXT:    sw a0, 48(s1)
2417; RV64IZCMP-WITH-FP-NEXT:    ld a0, -200(s0) # 8-byte Folded Reload
2418; RV64IZCMP-WITH-FP-NEXT:    sw a0, 44(s1)
2419; RV64IZCMP-WITH-FP-NEXT:    ld a0, -192(s0) # 8-byte Folded Reload
2420; RV64IZCMP-WITH-FP-NEXT:    sw a0, 40(s1)
2421; RV64IZCMP-WITH-FP-NEXT:    ld a0, -184(s0) # 8-byte Folded Reload
2422; RV64IZCMP-WITH-FP-NEXT:    sw a0, 36(s1)
2423; RV64IZCMP-WITH-FP-NEXT:    ld a0, -176(s0) # 8-byte Folded Reload
2424; RV64IZCMP-WITH-FP-NEXT:    sw a0, 32(s1)
2425; RV64IZCMP-WITH-FP-NEXT:    ld a0, -168(s0) # 8-byte Folded Reload
2426; RV64IZCMP-WITH-FP-NEXT:    sw a0, 28(s1)
2427; RV64IZCMP-WITH-FP-NEXT:    ld a0, -160(s0) # 8-byte Folded Reload
2428; RV64IZCMP-WITH-FP-NEXT:    sw a0, 24(s1)
2429; RV64IZCMP-WITH-FP-NEXT:    ld a0, -152(s0) # 8-byte Folded Reload
2430; RV64IZCMP-WITH-FP-NEXT:    sw a0, 20(s1)
2431; RV64IZCMP-WITH-FP-NEXT:    ld a0, -144(s0) # 8-byte Folded Reload
2432; RV64IZCMP-WITH-FP-NEXT:    sw a0, 16(s1)
2433; RV64IZCMP-WITH-FP-NEXT:    ld a0, -136(s0) # 8-byte Folded Reload
2434; RV64IZCMP-WITH-FP-NEXT:    sw a0, %lo(var+12)(s6)
2435; RV64IZCMP-WITH-FP-NEXT:    ld a0, -128(s0) # 8-byte Folded Reload
2436; RV64IZCMP-WITH-FP-NEXT:    sw a0, %lo(var+8)(s6)
2437; RV64IZCMP-WITH-FP-NEXT:    ld a0, -120(s0) # 8-byte Folded Reload
2438; RV64IZCMP-WITH-FP-NEXT:    sw a0, %lo(var+4)(s6)
2439; RV64IZCMP-WITH-FP-NEXT:    ld a0, -112(s0) # 8-byte Folded Reload
2440; RV64IZCMP-WITH-FP-NEXT:    sw a0, %lo(var)(s6)
2441; RV64IZCMP-WITH-FP-NEXT:    ld ra, 280(sp) # 8-byte Folded Reload
2442; RV64IZCMP-WITH-FP-NEXT:    ld s0, 272(sp) # 8-byte Folded Reload
2443; RV64IZCMP-WITH-FP-NEXT:    ld s1, 264(sp) # 8-byte Folded Reload
2444; RV64IZCMP-WITH-FP-NEXT:    ld s2, 256(sp) # 8-byte Folded Reload
2445; RV64IZCMP-WITH-FP-NEXT:    ld s3, 248(sp) # 8-byte Folded Reload
2446; RV64IZCMP-WITH-FP-NEXT:    ld s4, 240(sp) # 8-byte Folded Reload
2447; RV64IZCMP-WITH-FP-NEXT:    ld s5, 232(sp) # 8-byte Folded Reload
2448; RV64IZCMP-WITH-FP-NEXT:    ld s6, 224(sp) # 8-byte Folded Reload
2449; RV64IZCMP-WITH-FP-NEXT:    ld s7, 216(sp) # 8-byte Folded Reload
2450; RV64IZCMP-WITH-FP-NEXT:    ld s8, 208(sp) # 8-byte Folded Reload
2451; RV64IZCMP-WITH-FP-NEXT:    ld s9, 200(sp) # 8-byte Folded Reload
2452; RV64IZCMP-WITH-FP-NEXT:    ld s10, 192(sp) # 8-byte Folded Reload
2453; RV64IZCMP-WITH-FP-NEXT:    ld s11, 184(sp) # 8-byte Folded Reload
2454; RV64IZCMP-WITH-FP-NEXT:    addi sp, sp, 288
2455; RV64IZCMP-WITH-FP-NEXT:    ret
2456  %val = load [32 x i32], ptr @var
2457  call void @callee()
2458  store volatile [32 x i32] %val, ptr @var
2459  ret void
2460}
2461
2462; This function tests if the stack size is correctly calculated when
2463; callee-saved registers are not a sequential list from $ra
2464define void @foo() {
2465; RV32I-LABEL: foo:
2466; RV32I:       # %bb.0: # %entry
2467; RV32I-NEXT:    addi sp, sp, -16
2468; RV32I-NEXT:    .cfi_def_cfa_offset 16
2469; RV32I-NEXT:    sw s4, 12(sp) # 4-byte Folded Spill
2470; RV32I-NEXT:    .cfi_offset s4, -4
2471; RV32I-NEXT:    #APP
2472; RV32I-NEXT:    li s4, 0
2473; RV32I-NEXT:    #NO_APP
2474; RV32I-NEXT:    lw s4, 12(sp) # 4-byte Folded Reload
2475; RV32I-NEXT:    .cfi_restore s4
2476; RV32I-NEXT:    addi sp, sp, 16
2477; RV32I-NEXT:    .cfi_def_cfa_offset 0
2478; RV32I-NEXT:    ret
2479;
2480; RV32I-ILP32E-LABEL: foo:
2481; RV32I-ILP32E:       # %bb.0: # %entry
2482; RV32I-ILP32E-NEXT:    #APP
2483; RV32I-ILP32E-NEXT:    li s4, 0
2484; RV32I-ILP32E-NEXT:    #NO_APP
2485; RV32I-ILP32E-NEXT:    ret
2486;
2487; RV32I-WITH-FP-LABEL: foo:
2488; RV32I-WITH-FP:       # %bb.0: # %entry
2489; RV32I-WITH-FP-NEXT:    addi sp, sp, -16
2490; RV32I-WITH-FP-NEXT:    .cfi_def_cfa_offset 16
2491; RV32I-WITH-FP-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill
2492; RV32I-WITH-FP-NEXT:    sw s0, 8(sp) # 4-byte Folded Spill
2493; RV32I-WITH-FP-NEXT:    sw s4, 4(sp) # 4-byte Folded Spill
2494; RV32I-WITH-FP-NEXT:    .cfi_offset ra, -4
2495; RV32I-WITH-FP-NEXT:    .cfi_offset s0, -8
2496; RV32I-WITH-FP-NEXT:    .cfi_offset s4, -12
2497; RV32I-WITH-FP-NEXT:    addi s0, sp, 16
2498; RV32I-WITH-FP-NEXT:    .cfi_def_cfa s0, 0
2499; RV32I-WITH-FP-NEXT:    #APP
2500; RV32I-WITH-FP-NEXT:    li s4, 0
2501; RV32I-WITH-FP-NEXT:    #NO_APP
2502; RV32I-WITH-FP-NEXT:    .cfi_def_cfa sp, 16
2503; RV32I-WITH-FP-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload
2504; RV32I-WITH-FP-NEXT:    lw s0, 8(sp) # 4-byte Folded Reload
2505; RV32I-WITH-FP-NEXT:    lw s4, 4(sp) # 4-byte Folded Reload
2506; RV32I-WITH-FP-NEXT:    .cfi_restore ra
2507; RV32I-WITH-FP-NEXT:    .cfi_restore s0
2508; RV32I-WITH-FP-NEXT:    .cfi_restore s4
2509; RV32I-WITH-FP-NEXT:    addi sp, sp, 16
2510; RV32I-WITH-FP-NEXT:    .cfi_def_cfa_offset 0
2511; RV32I-WITH-FP-NEXT:    ret
2512;
2513; RV32IZCMP-LABEL: foo:
2514; RV32IZCMP:       # %bb.0: # %entry
2515; RV32IZCMP-NEXT:    cm.push {ra, s0-s4}, -32
2516; RV32IZCMP-NEXT:    .cfi_def_cfa_offset 32
2517; RV32IZCMP-NEXT:    .cfi_offset s4, -4
2518; RV32IZCMP-NEXT:    #APP
2519; RV32IZCMP-NEXT:    li s4, 0
2520; RV32IZCMP-NEXT:    #NO_APP
2521; RV32IZCMP-NEXT:    cm.popret {ra, s0-s4}, 32
2522;
2523; RV32IZCMP-WITH-FP-LABEL: foo:
2524; RV32IZCMP-WITH-FP:       # %bb.0: # %entry
2525; RV32IZCMP-WITH-FP-NEXT:    addi sp, sp, -16
2526; RV32IZCMP-WITH-FP-NEXT:    .cfi_def_cfa_offset 16
2527; RV32IZCMP-WITH-FP-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill
2528; RV32IZCMP-WITH-FP-NEXT:    sw s0, 8(sp) # 4-byte Folded Spill
2529; RV32IZCMP-WITH-FP-NEXT:    sw s4, 4(sp) # 4-byte Folded Spill
2530; RV32IZCMP-WITH-FP-NEXT:    .cfi_offset ra, -4
2531; RV32IZCMP-WITH-FP-NEXT:    .cfi_offset s0, -8
2532; RV32IZCMP-WITH-FP-NEXT:    .cfi_offset s4, -12
2533; RV32IZCMP-WITH-FP-NEXT:    addi s0, sp, 16
2534; RV32IZCMP-WITH-FP-NEXT:    .cfi_def_cfa s0, 0
2535; RV32IZCMP-WITH-FP-NEXT:    #APP
2536; RV32IZCMP-WITH-FP-NEXT:    li s4, 0
2537; RV32IZCMP-WITH-FP-NEXT:    #NO_APP
2538; RV32IZCMP-WITH-FP-NEXT:    .cfi_def_cfa sp, 16
2539; RV32IZCMP-WITH-FP-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload
2540; RV32IZCMP-WITH-FP-NEXT:    lw s0, 8(sp) # 4-byte Folded Reload
2541; RV32IZCMP-WITH-FP-NEXT:    lw s4, 4(sp) # 4-byte Folded Reload
2542; RV32IZCMP-WITH-FP-NEXT:    .cfi_restore ra
2543; RV32IZCMP-WITH-FP-NEXT:    .cfi_restore s0
2544; RV32IZCMP-WITH-FP-NEXT:    .cfi_restore s4
2545; RV32IZCMP-WITH-FP-NEXT:    addi sp, sp, 16
2546; RV32IZCMP-WITH-FP-NEXT:    .cfi_def_cfa_offset 0
2547; RV32IZCMP-WITH-FP-NEXT:    ret
2548;
2549; RV64I-LABEL: foo:
2550; RV64I:       # %bb.0: # %entry
2551; RV64I-NEXT:    addi sp, sp, -16
2552; RV64I-NEXT:    .cfi_def_cfa_offset 16
2553; RV64I-NEXT:    sd s4, 8(sp) # 8-byte Folded Spill
2554; RV64I-NEXT:    .cfi_offset s4, -8
2555; RV64I-NEXT:    #APP
2556; RV64I-NEXT:    li s4, 0
2557; RV64I-NEXT:    #NO_APP
2558; RV64I-NEXT:    ld s4, 8(sp) # 8-byte Folded Reload
2559; RV64I-NEXT:    .cfi_restore s4
2560; RV64I-NEXT:    addi sp, sp, 16
2561; RV64I-NEXT:    .cfi_def_cfa_offset 0
2562; RV64I-NEXT:    ret
2563;
2564; RV64I-LP64E-LABEL: foo:
2565; RV64I-LP64E:       # %bb.0: # %entry
2566; RV64I-LP64E-NEXT:    #APP
2567; RV64I-LP64E-NEXT:    li s4, 0
2568; RV64I-LP64E-NEXT:    #NO_APP
2569; RV64I-LP64E-NEXT:    ret
2570;
2571; RV64I-WITH-FP-LABEL: foo:
2572; RV64I-WITH-FP:       # %bb.0: # %entry
2573; RV64I-WITH-FP-NEXT:    addi sp, sp, -32
2574; RV64I-WITH-FP-NEXT:    .cfi_def_cfa_offset 32
2575; RV64I-WITH-FP-NEXT:    sd ra, 24(sp) # 8-byte Folded Spill
2576; RV64I-WITH-FP-NEXT:    sd s0, 16(sp) # 8-byte Folded Spill
2577; RV64I-WITH-FP-NEXT:    sd s4, 8(sp) # 8-byte Folded Spill
2578; RV64I-WITH-FP-NEXT:    .cfi_offset ra, -8
2579; RV64I-WITH-FP-NEXT:    .cfi_offset s0, -16
2580; RV64I-WITH-FP-NEXT:    .cfi_offset s4, -24
2581; RV64I-WITH-FP-NEXT:    addi s0, sp, 32
2582; RV64I-WITH-FP-NEXT:    .cfi_def_cfa s0, 0
2583; RV64I-WITH-FP-NEXT:    #APP
2584; RV64I-WITH-FP-NEXT:    li s4, 0
2585; RV64I-WITH-FP-NEXT:    #NO_APP
2586; RV64I-WITH-FP-NEXT:    .cfi_def_cfa sp, 32
2587; RV64I-WITH-FP-NEXT:    ld ra, 24(sp) # 8-byte Folded Reload
2588; RV64I-WITH-FP-NEXT:    ld s0, 16(sp) # 8-byte Folded Reload
2589; RV64I-WITH-FP-NEXT:    ld s4, 8(sp) # 8-byte Folded Reload
2590; RV64I-WITH-FP-NEXT:    .cfi_restore ra
2591; RV64I-WITH-FP-NEXT:    .cfi_restore s0
2592; RV64I-WITH-FP-NEXT:    .cfi_restore s4
2593; RV64I-WITH-FP-NEXT:    addi sp, sp, 32
2594; RV64I-WITH-FP-NEXT:    .cfi_def_cfa_offset 0
2595; RV64I-WITH-FP-NEXT:    ret
2596;
2597; RV64IZCMP-LABEL: foo:
2598; RV64IZCMP:       # %bb.0: # %entry
2599; RV64IZCMP-NEXT:    cm.push {ra, s0-s4}, -48
2600; RV64IZCMP-NEXT:    .cfi_def_cfa_offset 48
2601; RV64IZCMP-NEXT:    .cfi_offset s4, -8
2602; RV64IZCMP-NEXT:    #APP
2603; RV64IZCMP-NEXT:    li s4, 0
2604; RV64IZCMP-NEXT:    #NO_APP
2605; RV64IZCMP-NEXT:    cm.popret {ra, s0-s4}, 48
2606;
2607; RV64IZCMP-WITH-FP-LABEL: foo:
2608; RV64IZCMP-WITH-FP:       # %bb.0: # %entry
2609; RV64IZCMP-WITH-FP-NEXT:    addi sp, sp, -32
2610; RV64IZCMP-WITH-FP-NEXT:    .cfi_def_cfa_offset 32
2611; RV64IZCMP-WITH-FP-NEXT:    sd ra, 24(sp) # 8-byte Folded Spill
2612; RV64IZCMP-WITH-FP-NEXT:    sd s0, 16(sp) # 8-byte Folded Spill
2613; RV64IZCMP-WITH-FP-NEXT:    sd s4, 8(sp) # 8-byte Folded Spill
2614; RV64IZCMP-WITH-FP-NEXT:    .cfi_offset ra, -8
2615; RV64IZCMP-WITH-FP-NEXT:    .cfi_offset s0, -16
2616; RV64IZCMP-WITH-FP-NEXT:    .cfi_offset s4, -24
2617; RV64IZCMP-WITH-FP-NEXT:    addi s0, sp, 32
2618; RV64IZCMP-WITH-FP-NEXT:    .cfi_def_cfa s0, 0
2619; RV64IZCMP-WITH-FP-NEXT:    #APP
2620; RV64IZCMP-WITH-FP-NEXT:    li s4, 0
2621; RV64IZCMP-WITH-FP-NEXT:    #NO_APP
2622; RV64IZCMP-WITH-FP-NEXT:    .cfi_def_cfa sp, 32
2623; RV64IZCMP-WITH-FP-NEXT:    ld ra, 24(sp) # 8-byte Folded Reload
2624; RV64IZCMP-WITH-FP-NEXT:    ld s0, 16(sp) # 8-byte Folded Reload
2625; RV64IZCMP-WITH-FP-NEXT:    ld s4, 8(sp) # 8-byte Folded Reload
2626; RV64IZCMP-WITH-FP-NEXT:    .cfi_restore ra
2627; RV64IZCMP-WITH-FP-NEXT:    .cfi_restore s0
2628; RV64IZCMP-WITH-FP-NEXT:    .cfi_restore s4
2629; RV64IZCMP-WITH-FP-NEXT:    addi sp, sp, 32
2630; RV64IZCMP-WITH-FP-NEXT:    .cfi_def_cfa_offset 0
2631; RV64IZCMP-WITH-FP-NEXT:    ret
2632entry:
2633  tail call void asm sideeffect "li s4, 0", "~{s4}"()
2634  ret void
2635}
2636
2637; Check .cfi_offset of s11 is correct for Zcmp.
2638define void @bar() {
2639; RV32I-LABEL: bar:
2640; RV32I:       # %bb.0: # %entry
2641; RV32I-NEXT:    addi sp, sp, -16
2642; RV32I-NEXT:    .cfi_def_cfa_offset 16
2643; RV32I-NEXT:    sw s11, 12(sp) # 4-byte Folded Spill
2644; RV32I-NEXT:    .cfi_offset s11, -4
2645; RV32I-NEXT:    #APP
2646; RV32I-NEXT:    li s11, 0
2647; RV32I-NEXT:    #NO_APP
2648; RV32I-NEXT:    lw s11, 12(sp) # 4-byte Folded Reload
2649; RV32I-NEXT:    .cfi_restore s11
2650; RV32I-NEXT:    addi sp, sp, 16
2651; RV32I-NEXT:    .cfi_def_cfa_offset 0
2652; RV32I-NEXT:    ret
2653;
2654; RV32I-ILP32E-LABEL: bar:
2655; RV32I-ILP32E:       # %bb.0: # %entry
2656; RV32I-ILP32E-NEXT:    #APP
2657; RV32I-ILP32E-NEXT:    li s11, 0
2658; RV32I-ILP32E-NEXT:    #NO_APP
2659; RV32I-ILP32E-NEXT:    ret
2660;
2661; RV32I-WITH-FP-LABEL: bar:
2662; RV32I-WITH-FP:       # %bb.0: # %entry
2663; RV32I-WITH-FP-NEXT:    addi sp, sp, -16
2664; RV32I-WITH-FP-NEXT:    .cfi_def_cfa_offset 16
2665; RV32I-WITH-FP-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill
2666; RV32I-WITH-FP-NEXT:    sw s0, 8(sp) # 4-byte Folded Spill
2667; RV32I-WITH-FP-NEXT:    sw s11, 4(sp) # 4-byte Folded Spill
2668; RV32I-WITH-FP-NEXT:    .cfi_offset ra, -4
2669; RV32I-WITH-FP-NEXT:    .cfi_offset s0, -8
2670; RV32I-WITH-FP-NEXT:    .cfi_offset s11, -12
2671; RV32I-WITH-FP-NEXT:    addi s0, sp, 16
2672; RV32I-WITH-FP-NEXT:    .cfi_def_cfa s0, 0
2673; RV32I-WITH-FP-NEXT:    #APP
2674; RV32I-WITH-FP-NEXT:    li s11, 0
2675; RV32I-WITH-FP-NEXT:    #NO_APP
2676; RV32I-WITH-FP-NEXT:    .cfi_def_cfa sp, 16
2677; RV32I-WITH-FP-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload
2678; RV32I-WITH-FP-NEXT:    lw s0, 8(sp) # 4-byte Folded Reload
2679; RV32I-WITH-FP-NEXT:    lw s11, 4(sp) # 4-byte Folded Reload
2680; RV32I-WITH-FP-NEXT:    .cfi_restore ra
2681; RV32I-WITH-FP-NEXT:    .cfi_restore s0
2682; RV32I-WITH-FP-NEXT:    .cfi_restore s11
2683; RV32I-WITH-FP-NEXT:    addi sp, sp, 16
2684; RV32I-WITH-FP-NEXT:    .cfi_def_cfa_offset 0
2685; RV32I-WITH-FP-NEXT:    ret
2686;
2687; RV32IZCMP-LABEL: bar:
2688; RV32IZCMP:       # %bb.0: # %entry
2689; RV32IZCMP-NEXT:    cm.push {ra, s0-s11}, -64
2690; RV32IZCMP-NEXT:    .cfi_def_cfa_offset 64
2691; RV32IZCMP-NEXT:    .cfi_offset s11, -4
2692; RV32IZCMP-NEXT:    #APP
2693; RV32IZCMP-NEXT:    li s11, 0
2694; RV32IZCMP-NEXT:    #NO_APP
2695; RV32IZCMP-NEXT:    cm.popret {ra, s0-s11}, 64
2696;
2697; RV32IZCMP-WITH-FP-LABEL: bar:
2698; RV32IZCMP-WITH-FP:       # %bb.0: # %entry
2699; RV32IZCMP-WITH-FP-NEXT:    addi sp, sp, -16
2700; RV32IZCMP-WITH-FP-NEXT:    .cfi_def_cfa_offset 16
2701; RV32IZCMP-WITH-FP-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill
2702; RV32IZCMP-WITH-FP-NEXT:    sw s0, 8(sp) # 4-byte Folded Spill
2703; RV32IZCMP-WITH-FP-NEXT:    sw s11, 4(sp) # 4-byte Folded Spill
2704; RV32IZCMP-WITH-FP-NEXT:    .cfi_offset ra, -4
2705; RV32IZCMP-WITH-FP-NEXT:    .cfi_offset s0, -8
2706; RV32IZCMP-WITH-FP-NEXT:    .cfi_offset s11, -12
2707; RV32IZCMP-WITH-FP-NEXT:    addi s0, sp, 16
2708; RV32IZCMP-WITH-FP-NEXT:    .cfi_def_cfa s0, 0
2709; RV32IZCMP-WITH-FP-NEXT:    #APP
2710; RV32IZCMP-WITH-FP-NEXT:    li s11, 0
2711; RV32IZCMP-WITH-FP-NEXT:    #NO_APP
2712; RV32IZCMP-WITH-FP-NEXT:    .cfi_def_cfa sp, 16
2713; RV32IZCMP-WITH-FP-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload
2714; RV32IZCMP-WITH-FP-NEXT:    lw s0, 8(sp) # 4-byte Folded Reload
2715; RV32IZCMP-WITH-FP-NEXT:    lw s11, 4(sp) # 4-byte Folded Reload
2716; RV32IZCMP-WITH-FP-NEXT:    .cfi_restore ra
2717; RV32IZCMP-WITH-FP-NEXT:    .cfi_restore s0
2718; RV32IZCMP-WITH-FP-NEXT:    .cfi_restore s11
2719; RV32IZCMP-WITH-FP-NEXT:    addi sp, sp, 16
2720; RV32IZCMP-WITH-FP-NEXT:    .cfi_def_cfa_offset 0
2721; RV32IZCMP-WITH-FP-NEXT:    ret
2722;
2723; RV64I-LABEL: bar:
2724; RV64I:       # %bb.0: # %entry
2725; RV64I-NEXT:    addi sp, sp, -16
2726; RV64I-NEXT:    .cfi_def_cfa_offset 16
2727; RV64I-NEXT:    sd s11, 8(sp) # 8-byte Folded Spill
2728; RV64I-NEXT:    .cfi_offset s11, -8
2729; RV64I-NEXT:    #APP
2730; RV64I-NEXT:    li s11, 0
2731; RV64I-NEXT:    #NO_APP
2732; RV64I-NEXT:    ld s11, 8(sp) # 8-byte Folded Reload
2733; RV64I-NEXT:    .cfi_restore s11
2734; RV64I-NEXT:    addi sp, sp, 16
2735; RV64I-NEXT:    .cfi_def_cfa_offset 0
2736; RV64I-NEXT:    ret
2737;
2738; RV64I-LP64E-LABEL: bar:
2739; RV64I-LP64E:       # %bb.0: # %entry
2740; RV64I-LP64E-NEXT:    #APP
2741; RV64I-LP64E-NEXT:    li s11, 0
2742; RV64I-LP64E-NEXT:    #NO_APP
2743; RV64I-LP64E-NEXT:    ret
2744;
2745; RV64I-WITH-FP-LABEL: bar:
2746; RV64I-WITH-FP:       # %bb.0: # %entry
2747; RV64I-WITH-FP-NEXT:    addi sp, sp, -32
2748; RV64I-WITH-FP-NEXT:    .cfi_def_cfa_offset 32
2749; RV64I-WITH-FP-NEXT:    sd ra, 24(sp) # 8-byte Folded Spill
2750; RV64I-WITH-FP-NEXT:    sd s0, 16(sp) # 8-byte Folded Spill
2751; RV64I-WITH-FP-NEXT:    sd s11, 8(sp) # 8-byte Folded Spill
2752; RV64I-WITH-FP-NEXT:    .cfi_offset ra, -8
2753; RV64I-WITH-FP-NEXT:    .cfi_offset s0, -16
2754; RV64I-WITH-FP-NEXT:    .cfi_offset s11, -24
2755; RV64I-WITH-FP-NEXT:    addi s0, sp, 32
2756; RV64I-WITH-FP-NEXT:    .cfi_def_cfa s0, 0
2757; RV64I-WITH-FP-NEXT:    #APP
2758; RV64I-WITH-FP-NEXT:    li s11, 0
2759; RV64I-WITH-FP-NEXT:    #NO_APP
2760; RV64I-WITH-FP-NEXT:    .cfi_def_cfa sp, 32
2761; RV64I-WITH-FP-NEXT:    ld ra, 24(sp) # 8-byte Folded Reload
2762; RV64I-WITH-FP-NEXT:    ld s0, 16(sp) # 8-byte Folded Reload
2763; RV64I-WITH-FP-NEXT:    ld s11, 8(sp) # 8-byte Folded Reload
2764; RV64I-WITH-FP-NEXT:    .cfi_restore ra
2765; RV64I-WITH-FP-NEXT:    .cfi_restore s0
2766; RV64I-WITH-FP-NEXT:    .cfi_restore s11
2767; RV64I-WITH-FP-NEXT:    addi sp, sp, 32
2768; RV64I-WITH-FP-NEXT:    .cfi_def_cfa_offset 0
2769; RV64I-WITH-FP-NEXT:    ret
2770;
2771; RV64IZCMP-LABEL: bar:
2772; RV64IZCMP:       # %bb.0: # %entry
2773; RV64IZCMP-NEXT:    cm.push {ra, s0-s11}, -112
2774; RV64IZCMP-NEXT:    .cfi_def_cfa_offset 112
2775; RV64IZCMP-NEXT:    .cfi_offset s11, -8
2776; RV64IZCMP-NEXT:    #APP
2777; RV64IZCMP-NEXT:    li s11, 0
2778; RV64IZCMP-NEXT:    #NO_APP
2779; RV64IZCMP-NEXT:    cm.popret {ra, s0-s11}, 112
2780;
2781; RV64IZCMP-WITH-FP-LABEL: bar:
2782; RV64IZCMP-WITH-FP:       # %bb.0: # %entry
2783; RV64IZCMP-WITH-FP-NEXT:    addi sp, sp, -32
2784; RV64IZCMP-WITH-FP-NEXT:    .cfi_def_cfa_offset 32
2785; RV64IZCMP-WITH-FP-NEXT:    sd ra, 24(sp) # 8-byte Folded Spill
2786; RV64IZCMP-WITH-FP-NEXT:    sd s0, 16(sp) # 8-byte Folded Spill
2787; RV64IZCMP-WITH-FP-NEXT:    sd s11, 8(sp) # 8-byte Folded Spill
2788; RV64IZCMP-WITH-FP-NEXT:    .cfi_offset ra, -8
2789; RV64IZCMP-WITH-FP-NEXT:    .cfi_offset s0, -16
2790; RV64IZCMP-WITH-FP-NEXT:    .cfi_offset s11, -24
2791; RV64IZCMP-WITH-FP-NEXT:    addi s0, sp, 32
2792; RV64IZCMP-WITH-FP-NEXT:    .cfi_def_cfa s0, 0
2793; RV64IZCMP-WITH-FP-NEXT:    #APP
2794; RV64IZCMP-WITH-FP-NEXT:    li s11, 0
2795; RV64IZCMP-WITH-FP-NEXT:    #NO_APP
2796; RV64IZCMP-WITH-FP-NEXT:    .cfi_def_cfa sp, 32
2797; RV64IZCMP-WITH-FP-NEXT:    ld ra, 24(sp) # 8-byte Folded Reload
2798; RV64IZCMP-WITH-FP-NEXT:    ld s0, 16(sp) # 8-byte Folded Reload
2799; RV64IZCMP-WITH-FP-NEXT:    ld s11, 8(sp) # 8-byte Folded Reload
2800; RV64IZCMP-WITH-FP-NEXT:    .cfi_restore ra
2801; RV64IZCMP-WITH-FP-NEXT:    .cfi_restore s0
2802; RV64IZCMP-WITH-FP-NEXT:    .cfi_restore s11
2803; RV64IZCMP-WITH-FP-NEXT:    addi sp, sp, 32
2804; RV64IZCMP-WITH-FP-NEXT:    .cfi_def_cfa_offset 0
2805; RV64IZCMP-WITH-FP-NEXT:    ret
2806entry:
2807  tail call void asm sideeffect "li s11, 0", "~{s11}"()
2808  ret void
2809}
2810
2811define void @varargs(...) {
2812; RV32I-LABEL: varargs:
2813; RV32I:       # %bb.0:
2814; RV32I-NEXT:    addi sp, sp, -48
2815; RV32I-NEXT:    .cfi_def_cfa_offset 48
2816; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill
2817; RV32I-NEXT:    .cfi_offset ra, -36
2818; RV32I-NEXT:    sw a4, 32(sp)
2819; RV32I-NEXT:    sw a5, 36(sp)
2820; RV32I-NEXT:    sw a6, 40(sp)
2821; RV32I-NEXT:    sw a7, 44(sp)
2822; RV32I-NEXT:    sw a0, 16(sp)
2823; RV32I-NEXT:    sw a1, 20(sp)
2824; RV32I-NEXT:    sw a2, 24(sp)
2825; RV32I-NEXT:    sw a3, 28(sp)
2826; RV32I-NEXT:    call callee
2827; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload
2828; RV32I-NEXT:    .cfi_restore ra
2829; RV32I-NEXT:    addi sp, sp, 48
2830; RV32I-NEXT:    .cfi_def_cfa_offset 0
2831; RV32I-NEXT:    ret
2832;
2833; RV32I-ILP32E-LABEL: varargs:
2834; RV32I-ILP32E:       # %bb.0:
2835; RV32I-ILP32E-NEXT:    addi sp, sp, -28
2836; RV32I-ILP32E-NEXT:    .cfi_def_cfa_offset 28
2837; RV32I-ILP32E-NEXT:    sw ra, 0(sp) # 4-byte Folded Spill
2838; RV32I-ILP32E-NEXT:    .cfi_offset ra, -28
2839; RV32I-ILP32E-NEXT:    sw a4, 20(sp)
2840; RV32I-ILP32E-NEXT:    sw a5, 24(sp)
2841; RV32I-ILP32E-NEXT:    sw a0, 4(sp)
2842; RV32I-ILP32E-NEXT:    sw a1, 8(sp)
2843; RV32I-ILP32E-NEXT:    sw a2, 12(sp)
2844; RV32I-ILP32E-NEXT:    sw a3, 16(sp)
2845; RV32I-ILP32E-NEXT:    call callee
2846; RV32I-ILP32E-NEXT:    lw ra, 0(sp) # 4-byte Folded Reload
2847; RV32I-ILP32E-NEXT:    .cfi_restore ra
2848; RV32I-ILP32E-NEXT:    addi sp, sp, 28
2849; RV32I-ILP32E-NEXT:    .cfi_def_cfa_offset 0
2850; RV32I-ILP32E-NEXT:    ret
2851;
2852; RV32I-WITH-FP-LABEL: varargs:
2853; RV32I-WITH-FP:       # %bb.0:
2854; RV32I-WITH-FP-NEXT:    addi sp, sp, -48
2855; RV32I-WITH-FP-NEXT:    .cfi_def_cfa_offset 48
2856; RV32I-WITH-FP-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill
2857; RV32I-WITH-FP-NEXT:    sw s0, 8(sp) # 4-byte Folded Spill
2858; RV32I-WITH-FP-NEXT:    .cfi_offset ra, -36
2859; RV32I-WITH-FP-NEXT:    .cfi_offset s0, -40
2860; RV32I-WITH-FP-NEXT:    addi s0, sp, 16
2861; RV32I-WITH-FP-NEXT:    .cfi_def_cfa s0, 32
2862; RV32I-WITH-FP-NEXT:    sw a4, 16(s0)
2863; RV32I-WITH-FP-NEXT:    sw a5, 20(s0)
2864; RV32I-WITH-FP-NEXT:    sw a6, 24(s0)
2865; RV32I-WITH-FP-NEXT:    sw a7, 28(s0)
2866; RV32I-WITH-FP-NEXT:    sw a0, 0(s0)
2867; RV32I-WITH-FP-NEXT:    sw a1, 4(s0)
2868; RV32I-WITH-FP-NEXT:    sw a2, 8(s0)
2869; RV32I-WITH-FP-NEXT:    sw a3, 12(s0)
2870; RV32I-WITH-FP-NEXT:    call callee
2871; RV32I-WITH-FP-NEXT:    .cfi_def_cfa sp, 48
2872; RV32I-WITH-FP-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload
2873; RV32I-WITH-FP-NEXT:    lw s0, 8(sp) # 4-byte Folded Reload
2874; RV32I-WITH-FP-NEXT:    .cfi_restore ra
2875; RV32I-WITH-FP-NEXT:    .cfi_restore s0
2876; RV32I-WITH-FP-NEXT:    addi sp, sp, 48
2877; RV32I-WITH-FP-NEXT:    .cfi_def_cfa_offset 0
2878; RV32I-WITH-FP-NEXT:    ret
2879;
2880; RV32IZCMP-LABEL: varargs:
2881; RV32IZCMP:       # %bb.0:
2882; RV32IZCMP-NEXT:    addi sp, sp, -48
2883; RV32IZCMP-NEXT:    .cfi_def_cfa_offset 48
2884; RV32IZCMP-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill
2885; RV32IZCMP-NEXT:    .cfi_offset ra, -36
2886; RV32IZCMP-NEXT:    sw a4, 32(sp)
2887; RV32IZCMP-NEXT:    sw a5, 36(sp)
2888; RV32IZCMP-NEXT:    sw a6, 40(sp)
2889; RV32IZCMP-NEXT:    sw a7, 44(sp)
2890; RV32IZCMP-NEXT:    sw a0, 16(sp)
2891; RV32IZCMP-NEXT:    sw a1, 20(sp)
2892; RV32IZCMP-NEXT:    sw a2, 24(sp)
2893; RV32IZCMP-NEXT:    sw a3, 28(sp)
2894; RV32IZCMP-NEXT:    call callee
2895; RV32IZCMP-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload
2896; RV32IZCMP-NEXT:    .cfi_restore ra
2897; RV32IZCMP-NEXT:    addi sp, sp, 48
2898; RV32IZCMP-NEXT:    .cfi_def_cfa_offset 0
2899; RV32IZCMP-NEXT:    ret
2900;
2901; RV32IZCMP-WITH-FP-LABEL: varargs:
2902; RV32IZCMP-WITH-FP:       # %bb.0:
2903; RV32IZCMP-WITH-FP-NEXT:    addi sp, sp, -48
2904; RV32IZCMP-WITH-FP-NEXT:    .cfi_def_cfa_offset 48
2905; RV32IZCMP-WITH-FP-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill
2906; RV32IZCMP-WITH-FP-NEXT:    sw s0, 8(sp) # 4-byte Folded Spill
2907; RV32IZCMP-WITH-FP-NEXT:    .cfi_offset ra, -36
2908; RV32IZCMP-WITH-FP-NEXT:    .cfi_offset s0, -40
2909; RV32IZCMP-WITH-FP-NEXT:    addi s0, sp, 16
2910; RV32IZCMP-WITH-FP-NEXT:    .cfi_def_cfa s0, 32
2911; RV32IZCMP-WITH-FP-NEXT:    sw a4, 16(s0)
2912; RV32IZCMP-WITH-FP-NEXT:    sw a5, 20(s0)
2913; RV32IZCMP-WITH-FP-NEXT:    sw a6, 24(s0)
2914; RV32IZCMP-WITH-FP-NEXT:    sw a7, 28(s0)
2915; RV32IZCMP-WITH-FP-NEXT:    sw a0, 0(s0)
2916; RV32IZCMP-WITH-FP-NEXT:    sw a1, 4(s0)
2917; RV32IZCMP-WITH-FP-NEXT:    sw a2, 8(s0)
2918; RV32IZCMP-WITH-FP-NEXT:    sw a3, 12(s0)
2919; RV32IZCMP-WITH-FP-NEXT:    call callee
2920; RV32IZCMP-WITH-FP-NEXT:    .cfi_def_cfa sp, 48
2921; RV32IZCMP-WITH-FP-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload
2922; RV32IZCMP-WITH-FP-NEXT:    lw s0, 8(sp) # 4-byte Folded Reload
2923; RV32IZCMP-WITH-FP-NEXT:    .cfi_restore ra
2924; RV32IZCMP-WITH-FP-NEXT:    .cfi_restore s0
2925; RV32IZCMP-WITH-FP-NEXT:    addi sp, sp, 48
2926; RV32IZCMP-WITH-FP-NEXT:    .cfi_def_cfa_offset 0
2927; RV32IZCMP-WITH-FP-NEXT:    ret
2928;
2929; RV64I-LABEL: varargs:
2930; RV64I:       # %bb.0:
2931; RV64I-NEXT:    addi sp, sp, -80
2932; RV64I-NEXT:    .cfi_def_cfa_offset 80
2933; RV64I-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill
2934; RV64I-NEXT:    .cfi_offset ra, -72
2935; RV64I-NEXT:    sd a4, 48(sp)
2936; RV64I-NEXT:    sd a5, 56(sp)
2937; RV64I-NEXT:    sd a6, 64(sp)
2938; RV64I-NEXT:    sd a7, 72(sp)
2939; RV64I-NEXT:    sd a0, 16(sp)
2940; RV64I-NEXT:    sd a1, 24(sp)
2941; RV64I-NEXT:    sd a2, 32(sp)
2942; RV64I-NEXT:    sd a3, 40(sp)
2943; RV64I-NEXT:    call callee
2944; RV64I-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload
2945; RV64I-NEXT:    .cfi_restore ra
2946; RV64I-NEXT:    addi sp, sp, 80
2947; RV64I-NEXT:    .cfi_def_cfa_offset 0
2948; RV64I-NEXT:    ret
2949;
2950; RV64I-LP64E-LABEL: varargs:
2951; RV64I-LP64E:       # %bb.0:
2952; RV64I-LP64E-NEXT:    addi sp, sp, -56
2953; RV64I-LP64E-NEXT:    .cfi_def_cfa_offset 56
2954; RV64I-LP64E-NEXT:    sd ra, 0(sp) # 8-byte Folded Spill
2955; RV64I-LP64E-NEXT:    .cfi_offset ra, -56
2956; RV64I-LP64E-NEXT:    sd a4, 40(sp)
2957; RV64I-LP64E-NEXT:    sd a5, 48(sp)
2958; RV64I-LP64E-NEXT:    sd a0, 8(sp)
2959; RV64I-LP64E-NEXT:    sd a1, 16(sp)
2960; RV64I-LP64E-NEXT:    sd a2, 24(sp)
2961; RV64I-LP64E-NEXT:    sd a3, 32(sp)
2962; RV64I-LP64E-NEXT:    call callee
2963; RV64I-LP64E-NEXT:    ld ra, 0(sp) # 8-byte Folded Reload
2964; RV64I-LP64E-NEXT:    .cfi_restore ra
2965; RV64I-LP64E-NEXT:    addi sp, sp, 56
2966; RV64I-LP64E-NEXT:    .cfi_def_cfa_offset 0
2967; RV64I-LP64E-NEXT:    ret
2968;
2969; RV64I-WITH-FP-LABEL: varargs:
2970; RV64I-WITH-FP:       # %bb.0:
2971; RV64I-WITH-FP-NEXT:    addi sp, sp, -80
2972; RV64I-WITH-FP-NEXT:    .cfi_def_cfa_offset 80
2973; RV64I-WITH-FP-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill
2974; RV64I-WITH-FP-NEXT:    sd s0, 0(sp) # 8-byte Folded Spill
2975; RV64I-WITH-FP-NEXT:    .cfi_offset ra, -72
2976; RV64I-WITH-FP-NEXT:    .cfi_offset s0, -80
2977; RV64I-WITH-FP-NEXT:    addi s0, sp, 16
2978; RV64I-WITH-FP-NEXT:    .cfi_def_cfa s0, 64
2979; RV64I-WITH-FP-NEXT:    sd a4, 32(s0)
2980; RV64I-WITH-FP-NEXT:    sd a5, 40(s0)
2981; RV64I-WITH-FP-NEXT:    sd a6, 48(s0)
2982; RV64I-WITH-FP-NEXT:    sd a7, 56(s0)
2983; RV64I-WITH-FP-NEXT:    sd a0, 0(s0)
2984; RV64I-WITH-FP-NEXT:    sd a1, 8(s0)
2985; RV64I-WITH-FP-NEXT:    sd a2, 16(s0)
2986; RV64I-WITH-FP-NEXT:    sd a3, 24(s0)
2987; RV64I-WITH-FP-NEXT:    call callee
2988; RV64I-WITH-FP-NEXT:    .cfi_def_cfa sp, 80
2989; RV64I-WITH-FP-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload
2990; RV64I-WITH-FP-NEXT:    ld s0, 0(sp) # 8-byte Folded Reload
2991; RV64I-WITH-FP-NEXT:    .cfi_restore ra
2992; RV64I-WITH-FP-NEXT:    .cfi_restore s0
2993; RV64I-WITH-FP-NEXT:    addi sp, sp, 80
2994; RV64I-WITH-FP-NEXT:    .cfi_def_cfa_offset 0
2995; RV64I-WITH-FP-NEXT:    ret
2996;
2997; RV64IZCMP-LABEL: varargs:
2998; RV64IZCMP:       # %bb.0:
2999; RV64IZCMP-NEXT:    addi sp, sp, -80
3000; RV64IZCMP-NEXT:    .cfi_def_cfa_offset 80
3001; RV64IZCMP-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill
3002; RV64IZCMP-NEXT:    .cfi_offset ra, -72
3003; RV64IZCMP-NEXT:    sd a4, 48(sp)
3004; RV64IZCMP-NEXT:    sd a5, 56(sp)
3005; RV64IZCMP-NEXT:    sd a6, 64(sp)
3006; RV64IZCMP-NEXT:    sd a7, 72(sp)
3007; RV64IZCMP-NEXT:    sd a0, 16(sp)
3008; RV64IZCMP-NEXT:    sd a1, 24(sp)
3009; RV64IZCMP-NEXT:    sd a2, 32(sp)
3010; RV64IZCMP-NEXT:    sd a3, 40(sp)
3011; RV64IZCMP-NEXT:    call callee
3012; RV64IZCMP-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload
3013; RV64IZCMP-NEXT:    .cfi_restore ra
3014; RV64IZCMP-NEXT:    addi sp, sp, 80
3015; RV64IZCMP-NEXT:    .cfi_def_cfa_offset 0
3016; RV64IZCMP-NEXT:    ret
3017;
3018; RV64IZCMP-WITH-FP-LABEL: varargs:
3019; RV64IZCMP-WITH-FP:       # %bb.0:
3020; RV64IZCMP-WITH-FP-NEXT:    addi sp, sp, -80
3021; RV64IZCMP-WITH-FP-NEXT:    .cfi_def_cfa_offset 80
3022; RV64IZCMP-WITH-FP-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill
3023; RV64IZCMP-WITH-FP-NEXT:    sd s0, 0(sp) # 8-byte Folded Spill
3024; RV64IZCMP-WITH-FP-NEXT:    .cfi_offset ra, -72
3025; RV64IZCMP-WITH-FP-NEXT:    .cfi_offset s0, -80
3026; RV64IZCMP-WITH-FP-NEXT:    addi s0, sp, 16
3027; RV64IZCMP-WITH-FP-NEXT:    .cfi_def_cfa s0, 64
3028; RV64IZCMP-WITH-FP-NEXT:    sd a4, 32(s0)
3029; RV64IZCMP-WITH-FP-NEXT:    sd a5, 40(s0)
3030; RV64IZCMP-WITH-FP-NEXT:    sd a6, 48(s0)
3031; RV64IZCMP-WITH-FP-NEXT:    sd a7, 56(s0)
3032; RV64IZCMP-WITH-FP-NEXT:    sd a0, 0(s0)
3033; RV64IZCMP-WITH-FP-NEXT:    sd a1, 8(s0)
3034; RV64IZCMP-WITH-FP-NEXT:    sd a2, 16(s0)
3035; RV64IZCMP-WITH-FP-NEXT:    sd a3, 24(s0)
3036; RV64IZCMP-WITH-FP-NEXT:    call callee
3037; RV64IZCMP-WITH-FP-NEXT:    .cfi_def_cfa sp, 80
3038; RV64IZCMP-WITH-FP-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload
3039; RV64IZCMP-WITH-FP-NEXT:    ld s0, 0(sp) # 8-byte Folded Reload
3040; RV64IZCMP-WITH-FP-NEXT:    .cfi_restore ra
3041; RV64IZCMP-WITH-FP-NEXT:    .cfi_restore s0
3042; RV64IZCMP-WITH-FP-NEXT:    addi sp, sp, 80
3043; RV64IZCMP-WITH-FP-NEXT:    .cfi_def_cfa_offset 0
3044; RV64IZCMP-WITH-FP-NEXT:    ret
3045  call void @callee()
3046  ret void
3047}
3048