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