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