1cd44aee3SSam Elliott; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2cd44aee3SSam Elliott; RUN: llc -mtriple=riscv32 -verify-machineinstrs < %s \
3cd44aee3SSam Elliott; RUN:   | FileCheck %s -check-prefix=RV32I
4cd44aee3SSam Elliott; RUN: llc -mtriple=riscv64 -verify-machineinstrs < %s \
5cd44aee3SSam Elliott; RUN:   | FileCheck %s -check-prefix=RV64I
6cd44aee3SSam Elliott
7cd44aee3SSam Elliottdeclare void @callee(i8*)
8cd44aee3SSam Elliott
98a53a737SSam Elliottdefine void @caller32() {
10cd44aee3SSam Elliott; RV32I-LABEL: caller32:
11cd44aee3SSam Elliott; RV32I:       # %bb.0:
12524d8fa9SRoger Ferrer Ibanez; RV32I-NEXT:    addi sp, sp, -32
138a53a737SSam Elliott; RV32I-NEXT:    .cfi_def_cfa_offset 32
14524d8fa9SRoger Ferrer Ibanez; RV32I-NEXT:    sw ra, 28(sp) # 4-byte Folded Spill
15524d8fa9SRoger Ferrer Ibanez; RV32I-NEXT:    sw s0, 24(sp) # 4-byte Folded Spill
168a53a737SSam Elliott; RV32I-NEXT:    .cfi_offset ra, -4
178a53a737SSam Elliott; RV32I-NEXT:    .cfi_offset s0, -8
18524d8fa9SRoger Ferrer Ibanez; RV32I-NEXT:    addi s0, sp, 32
198a53a737SSam Elliott; RV32I-NEXT:    .cfi_def_cfa s0, 0
20cd44aee3SSam Elliott; RV32I-NEXT:    andi sp, sp, -32
21524d8fa9SRoger Ferrer Ibanez; RV32I-NEXT:    mv a0, sp
22e28b6a60SMichael Munday; RV32I-NEXT:    call callee@plt
23524d8fa9SRoger Ferrer Ibanez; RV32I-NEXT:    addi sp, s0, -32
24524d8fa9SRoger Ferrer Ibanez; RV32I-NEXT:    lw ra, 28(sp) # 4-byte Folded Reload
25137d3474SHsiangkai Wang; RV32I-NEXT:    lw s0, 24(sp) # 4-byte Folded Reload
26524d8fa9SRoger Ferrer Ibanez; RV32I-NEXT:    addi sp, sp, 32
27cd44aee3SSam Elliott; RV32I-NEXT:    ret
28cd44aee3SSam Elliott;
29cd44aee3SSam Elliott; RV64I-LABEL: caller32:
30cd44aee3SSam Elliott; RV64I:       # %bb.0:
31524d8fa9SRoger Ferrer Ibanez; RV64I-NEXT:    addi sp, sp, -32
328a53a737SSam Elliott; RV64I-NEXT:    .cfi_def_cfa_offset 32
33524d8fa9SRoger Ferrer Ibanez; RV64I-NEXT:    sd ra, 24(sp) # 8-byte Folded Spill
34524d8fa9SRoger Ferrer Ibanez; RV64I-NEXT:    sd s0, 16(sp) # 8-byte Folded Spill
358a53a737SSam Elliott; RV64I-NEXT:    .cfi_offset ra, -8
368a53a737SSam Elliott; RV64I-NEXT:    .cfi_offset s0, -16
37524d8fa9SRoger Ferrer Ibanez; RV64I-NEXT:    addi s0, sp, 32
388a53a737SSam Elliott; RV64I-NEXT:    .cfi_def_cfa s0, 0
39cd44aee3SSam Elliott; RV64I-NEXT:    andi sp, sp, -32
40524d8fa9SRoger Ferrer Ibanez; RV64I-NEXT:    mv a0, sp
41e28b6a60SMichael Munday; RV64I-NEXT:    call callee@plt
42524d8fa9SRoger Ferrer Ibanez; RV64I-NEXT:    addi sp, s0, -32
43524d8fa9SRoger Ferrer Ibanez; RV64I-NEXT:    ld ra, 24(sp) # 8-byte Folded Reload
44137d3474SHsiangkai Wang; RV64I-NEXT:    ld s0, 16(sp) # 8-byte Folded Reload
45524d8fa9SRoger Ferrer Ibanez; RV64I-NEXT:    addi sp, sp, 32
46cd44aee3SSam Elliott; RV64I-NEXT:    ret
47cd44aee3SSam Elliott  %1 = alloca i8, align 32
48cd44aee3SSam Elliott  call void @callee(i8* %1)
49cd44aee3SSam Elliott  ret void
50cd44aee3SSam Elliott}
51cd44aee3SSam Elliott
528a53a737SSam Elliottdefine void @caller_no_realign32() "no-realign-stack" {
53cd44aee3SSam Elliott; RV32I-LABEL: caller_no_realign32:
54cd44aee3SSam Elliott; RV32I:       # %bb.0:
55cd44aee3SSam Elliott; RV32I-NEXT:    addi sp, sp, -16
568a53a737SSam Elliott; RV32I-NEXT:    .cfi_def_cfa_offset 16
57e28b6a60SMichael Munday; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill
588a53a737SSam Elliott; RV32I-NEXT:    .cfi_offset ra, -4
59cd44aee3SSam Elliott; RV32I-NEXT:    mv a0, sp
60e28b6a60SMichael Munday; RV32I-NEXT:    call callee@plt
61e28b6a60SMichael Munday; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload
62cd44aee3SSam Elliott; RV32I-NEXT:    addi sp, sp, 16
63cd44aee3SSam Elliott; RV32I-NEXT:    ret
64cd44aee3SSam Elliott;
65cd44aee3SSam Elliott; RV64I-LABEL: caller_no_realign32:
66cd44aee3SSam Elliott; RV64I:       # %bb.0:
67cd44aee3SSam Elliott; RV64I-NEXT:    addi sp, sp, -16
688a53a737SSam Elliott; RV64I-NEXT:    .cfi_def_cfa_offset 16
69e28b6a60SMichael Munday; RV64I-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill
708a53a737SSam Elliott; RV64I-NEXT:    .cfi_offset ra, -8
71cd44aee3SSam Elliott; RV64I-NEXT:    mv a0, sp
72e28b6a60SMichael Munday; RV64I-NEXT:    call callee@plt
73e28b6a60SMichael Munday; RV64I-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload
74cd44aee3SSam Elliott; RV64I-NEXT:    addi sp, sp, 16
75cd44aee3SSam Elliott; RV64I-NEXT:    ret
76cd44aee3SSam Elliott  %1 = alloca i8, align 32
77cd44aee3SSam Elliott  call void @callee(i8* %1)
78cd44aee3SSam Elliott  ret void
79cd44aee3SSam Elliott}
80cd44aee3SSam Elliott
818a53a737SSam Elliottdefine void @caller64() {
82cd44aee3SSam Elliott; RV32I-LABEL: caller64:
83cd44aee3SSam Elliott; RV32I:       # %bb.0:
84524d8fa9SRoger Ferrer Ibanez; RV32I-NEXT:    addi sp, sp, -64
858a53a737SSam Elliott; RV32I-NEXT:    .cfi_def_cfa_offset 64
86524d8fa9SRoger Ferrer Ibanez; RV32I-NEXT:    sw ra, 60(sp) # 4-byte Folded Spill
87524d8fa9SRoger Ferrer Ibanez; RV32I-NEXT:    sw s0, 56(sp) # 4-byte Folded Spill
888a53a737SSam Elliott; RV32I-NEXT:    .cfi_offset ra, -4
898a53a737SSam Elliott; RV32I-NEXT:    .cfi_offset s0, -8
90524d8fa9SRoger Ferrer Ibanez; RV32I-NEXT:    addi s0, sp, 64
918a53a737SSam Elliott; RV32I-NEXT:    .cfi_def_cfa s0, 0
92cd44aee3SSam Elliott; RV32I-NEXT:    andi sp, sp, -64
93524d8fa9SRoger Ferrer Ibanez; RV32I-NEXT:    mv a0, sp
94e28b6a60SMichael Munday; RV32I-NEXT:    call callee@plt
95524d8fa9SRoger Ferrer Ibanez; RV32I-NEXT:    addi sp, s0, -64
96524d8fa9SRoger Ferrer Ibanez; RV32I-NEXT:    lw ra, 60(sp) # 4-byte Folded Reload
97137d3474SHsiangkai Wang; RV32I-NEXT:    lw s0, 56(sp) # 4-byte Folded Reload
98524d8fa9SRoger Ferrer Ibanez; RV32I-NEXT:    addi sp, sp, 64
99cd44aee3SSam Elliott; RV32I-NEXT:    ret
100cd44aee3SSam Elliott;
101cd44aee3SSam Elliott; RV64I-LABEL: caller64:
102cd44aee3SSam Elliott; RV64I:       # %bb.0:
103524d8fa9SRoger Ferrer Ibanez; RV64I-NEXT:    addi sp, sp, -64
1048a53a737SSam Elliott; RV64I-NEXT:    .cfi_def_cfa_offset 64
105524d8fa9SRoger Ferrer Ibanez; RV64I-NEXT:    sd ra, 56(sp) # 8-byte Folded Spill
106524d8fa9SRoger Ferrer Ibanez; RV64I-NEXT:    sd s0, 48(sp) # 8-byte Folded Spill
1078a53a737SSam Elliott; RV64I-NEXT:    .cfi_offset ra, -8
1088a53a737SSam Elliott; RV64I-NEXT:    .cfi_offset s0, -16
109524d8fa9SRoger Ferrer Ibanez; RV64I-NEXT:    addi s0, sp, 64
1108a53a737SSam Elliott; RV64I-NEXT:    .cfi_def_cfa s0, 0
111cd44aee3SSam Elliott; RV64I-NEXT:    andi sp, sp, -64
112524d8fa9SRoger Ferrer Ibanez; RV64I-NEXT:    mv a0, sp
113e28b6a60SMichael Munday; RV64I-NEXT:    call callee@plt
114524d8fa9SRoger Ferrer Ibanez; RV64I-NEXT:    addi sp, s0, -64
115524d8fa9SRoger Ferrer Ibanez; RV64I-NEXT:    ld ra, 56(sp) # 8-byte Folded Reload
116137d3474SHsiangkai Wang; RV64I-NEXT:    ld s0, 48(sp) # 8-byte Folded Reload
117524d8fa9SRoger Ferrer Ibanez; RV64I-NEXT:    addi sp, sp, 64
118cd44aee3SSam Elliott; RV64I-NEXT:    ret
119cd44aee3SSam Elliott  %1 = alloca i8, align 64
120cd44aee3SSam Elliott  call void @callee(i8* %1)
121cd44aee3SSam Elliott  ret void
122cd44aee3SSam Elliott}
123cd44aee3SSam Elliott
1248a53a737SSam Elliottdefine void @caller_no_realign64() "no-realign-stack" {
125cd44aee3SSam Elliott; RV32I-LABEL: caller_no_realign64:
126cd44aee3SSam Elliott; RV32I:       # %bb.0:
127cd44aee3SSam Elliott; RV32I-NEXT:    addi sp, sp, -16
1288a53a737SSam Elliott; RV32I-NEXT:    .cfi_def_cfa_offset 16
129e28b6a60SMichael Munday; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill
1308a53a737SSam Elliott; RV32I-NEXT:    .cfi_offset ra, -4
131cd44aee3SSam Elliott; RV32I-NEXT:    mv a0, sp
132e28b6a60SMichael Munday; RV32I-NEXT:    call callee@plt
133e28b6a60SMichael Munday; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload
134cd44aee3SSam Elliott; RV32I-NEXT:    addi sp, sp, 16
135cd44aee3SSam Elliott; RV32I-NEXT:    ret
136cd44aee3SSam Elliott;
137cd44aee3SSam Elliott; RV64I-LABEL: caller_no_realign64:
138cd44aee3SSam Elliott; RV64I:       # %bb.0:
139cd44aee3SSam Elliott; RV64I-NEXT:    addi sp, sp, -16
1408a53a737SSam Elliott; RV64I-NEXT:    .cfi_def_cfa_offset 16
141e28b6a60SMichael Munday; RV64I-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill
1428a53a737SSam Elliott; RV64I-NEXT:    .cfi_offset ra, -8
143cd44aee3SSam Elliott; RV64I-NEXT:    mv a0, sp
144e28b6a60SMichael Munday; RV64I-NEXT:    call callee@plt
145e28b6a60SMichael Munday; RV64I-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload
146cd44aee3SSam Elliott; RV64I-NEXT:    addi sp, sp, 16
147cd44aee3SSam Elliott; RV64I-NEXT:    ret
148cd44aee3SSam Elliott  %1 = alloca i8, align 64
149cd44aee3SSam Elliott  call void @callee(i8* %1)
150cd44aee3SSam Elliott  ret void
151cd44aee3SSam Elliott}
152cd44aee3SSam Elliott
1538a53a737SSam Elliottdefine void @caller128() {
154cd44aee3SSam Elliott; RV32I-LABEL: caller128:
155cd44aee3SSam Elliott; RV32I:       # %bb.0:
156524d8fa9SRoger Ferrer Ibanez; RV32I-NEXT:    addi sp, sp, -128
1578a53a737SSam Elliott; RV32I-NEXT:    .cfi_def_cfa_offset 128
158524d8fa9SRoger Ferrer Ibanez; RV32I-NEXT:    sw ra, 124(sp) # 4-byte Folded Spill
159524d8fa9SRoger Ferrer Ibanez; RV32I-NEXT:    sw s0, 120(sp) # 4-byte Folded Spill
1608a53a737SSam Elliott; RV32I-NEXT:    .cfi_offset ra, -4
1618a53a737SSam Elliott; RV32I-NEXT:    .cfi_offset s0, -8
162524d8fa9SRoger Ferrer Ibanez; RV32I-NEXT:    addi s0, sp, 128
1638a53a737SSam Elliott; RV32I-NEXT:    .cfi_def_cfa s0, 0
164cd44aee3SSam Elliott; RV32I-NEXT:    andi sp, sp, -128
165524d8fa9SRoger Ferrer Ibanez; RV32I-NEXT:    mv a0, sp
166e28b6a60SMichael Munday; RV32I-NEXT:    call callee@plt
167524d8fa9SRoger Ferrer Ibanez; RV32I-NEXT:    addi sp, s0, -128
168524d8fa9SRoger Ferrer Ibanez; RV32I-NEXT:    lw ra, 124(sp) # 4-byte Folded Reload
169137d3474SHsiangkai Wang; RV32I-NEXT:    lw s0, 120(sp) # 4-byte Folded Reload
170524d8fa9SRoger Ferrer Ibanez; RV32I-NEXT:    addi sp, sp, 128
171cd44aee3SSam Elliott; RV32I-NEXT:    ret
172cd44aee3SSam Elliott;
173cd44aee3SSam Elliott; RV64I-LABEL: caller128:
174cd44aee3SSam Elliott; RV64I:       # %bb.0:
175524d8fa9SRoger Ferrer Ibanez; RV64I-NEXT:    addi sp, sp, -128
1768a53a737SSam Elliott; RV64I-NEXT:    .cfi_def_cfa_offset 128
177524d8fa9SRoger Ferrer Ibanez; RV64I-NEXT:    sd ra, 120(sp) # 8-byte Folded Spill
178524d8fa9SRoger Ferrer Ibanez; RV64I-NEXT:    sd s0, 112(sp) # 8-byte Folded Spill
1798a53a737SSam Elliott; RV64I-NEXT:    .cfi_offset ra, -8
1808a53a737SSam Elliott; RV64I-NEXT:    .cfi_offset s0, -16
181524d8fa9SRoger Ferrer Ibanez; RV64I-NEXT:    addi s0, sp, 128
1828a53a737SSam Elliott; RV64I-NEXT:    .cfi_def_cfa s0, 0
183cd44aee3SSam Elliott; RV64I-NEXT:    andi sp, sp, -128
184524d8fa9SRoger Ferrer Ibanez; RV64I-NEXT:    mv a0, sp
185e28b6a60SMichael Munday; RV64I-NEXT:    call callee@plt
186524d8fa9SRoger Ferrer Ibanez; RV64I-NEXT:    addi sp, s0, -128
187524d8fa9SRoger Ferrer Ibanez; RV64I-NEXT:    ld ra, 120(sp) # 8-byte Folded Reload
188137d3474SHsiangkai Wang; RV64I-NEXT:    ld s0, 112(sp) # 8-byte Folded Reload
189524d8fa9SRoger Ferrer Ibanez; RV64I-NEXT:    addi sp, sp, 128
190cd44aee3SSam Elliott; RV64I-NEXT:    ret
191cd44aee3SSam Elliott  %1 = alloca i8, align 128
192cd44aee3SSam Elliott  call void @callee(i8* %1)
193cd44aee3SSam Elliott  ret void
194cd44aee3SSam Elliott}
195cd44aee3SSam Elliott
1968a53a737SSam Elliottdefine void @caller_no_realign128() "no-realign-stack" {
197cd44aee3SSam Elliott; RV32I-LABEL: caller_no_realign128:
198cd44aee3SSam Elliott; RV32I:       # %bb.0:
199cd44aee3SSam Elliott; RV32I-NEXT:    addi sp, sp, -16
2008a53a737SSam Elliott; RV32I-NEXT:    .cfi_def_cfa_offset 16
201e28b6a60SMichael Munday; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill
2028a53a737SSam Elliott; RV32I-NEXT:    .cfi_offset ra, -4
203cd44aee3SSam Elliott; RV32I-NEXT:    mv a0, sp
204e28b6a60SMichael Munday; RV32I-NEXT:    call callee@plt
205e28b6a60SMichael Munday; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload
206cd44aee3SSam Elliott; RV32I-NEXT:    addi sp, sp, 16
207cd44aee3SSam Elliott; RV32I-NEXT:    ret
208cd44aee3SSam Elliott;
209cd44aee3SSam Elliott; RV64I-LABEL: caller_no_realign128:
210cd44aee3SSam Elliott; RV64I:       # %bb.0:
211cd44aee3SSam Elliott; RV64I-NEXT:    addi sp, sp, -16
2128a53a737SSam Elliott; RV64I-NEXT:    .cfi_def_cfa_offset 16
213e28b6a60SMichael Munday; RV64I-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill
2148a53a737SSam Elliott; RV64I-NEXT:    .cfi_offset ra, -8
215cd44aee3SSam Elliott; RV64I-NEXT:    mv a0, sp
216e28b6a60SMichael Munday; RV64I-NEXT:    call callee@plt
217e28b6a60SMichael Munday; RV64I-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload
218cd44aee3SSam Elliott; RV64I-NEXT:    addi sp, sp, 16
219cd44aee3SSam Elliott; RV64I-NEXT:    ret
220cd44aee3SSam Elliott  %1 = alloca i8, align 128
221cd44aee3SSam Elliott  call void @callee(i8* %1)
222cd44aee3SSam Elliott  ret void
223cd44aee3SSam Elliott}
224cd44aee3SSam Elliott
2258a53a737SSam Elliottdefine void @caller256() {
226cd44aee3SSam Elliott; RV32I-LABEL: caller256:
227cd44aee3SSam Elliott; RV32I:       # %bb.0:
228524d8fa9SRoger Ferrer Ibanez; RV32I-NEXT:    addi sp, sp, -256
2298a53a737SSam Elliott; RV32I-NEXT:    .cfi_def_cfa_offset 256
230524d8fa9SRoger Ferrer Ibanez; RV32I-NEXT:    sw ra, 252(sp) # 4-byte Folded Spill
231524d8fa9SRoger Ferrer Ibanez; RV32I-NEXT:    sw s0, 248(sp) # 4-byte Folded Spill
2328a53a737SSam Elliott; RV32I-NEXT:    .cfi_offset ra, -4
2338a53a737SSam Elliott; RV32I-NEXT:    .cfi_offset s0, -8
234524d8fa9SRoger Ferrer Ibanez; RV32I-NEXT:    addi s0, sp, 256
2358a53a737SSam Elliott; RV32I-NEXT:    .cfi_def_cfa s0, 0
236cd44aee3SSam Elliott; RV32I-NEXT:    andi sp, sp, -256
237524d8fa9SRoger Ferrer Ibanez; RV32I-NEXT:    mv a0, sp
238e28b6a60SMichael Munday; RV32I-NEXT:    call callee@plt
239524d8fa9SRoger Ferrer Ibanez; RV32I-NEXT:    addi sp, s0, -256
240524d8fa9SRoger Ferrer Ibanez; RV32I-NEXT:    lw ra, 252(sp) # 4-byte Folded Reload
241137d3474SHsiangkai Wang; RV32I-NEXT:    lw s0, 248(sp) # 4-byte Folded Reload
242524d8fa9SRoger Ferrer Ibanez; RV32I-NEXT:    addi sp, sp, 256
243cd44aee3SSam Elliott; RV32I-NEXT:    ret
244cd44aee3SSam Elliott;
245cd44aee3SSam Elliott; RV64I-LABEL: caller256:
246cd44aee3SSam Elliott; RV64I:       # %bb.0:
247524d8fa9SRoger Ferrer Ibanez; RV64I-NEXT:    addi sp, sp, -256
2488a53a737SSam Elliott; RV64I-NEXT:    .cfi_def_cfa_offset 256
249524d8fa9SRoger Ferrer Ibanez; RV64I-NEXT:    sd ra, 248(sp) # 8-byte Folded Spill
250524d8fa9SRoger Ferrer Ibanez; RV64I-NEXT:    sd s0, 240(sp) # 8-byte Folded Spill
2518a53a737SSam Elliott; RV64I-NEXT:    .cfi_offset ra, -8
2528a53a737SSam Elliott; RV64I-NEXT:    .cfi_offset s0, -16
253524d8fa9SRoger Ferrer Ibanez; RV64I-NEXT:    addi s0, sp, 256
2548a53a737SSam Elliott; RV64I-NEXT:    .cfi_def_cfa s0, 0
255cd44aee3SSam Elliott; RV64I-NEXT:    andi sp, sp, -256
256524d8fa9SRoger Ferrer Ibanez; RV64I-NEXT:    mv a0, sp
257e28b6a60SMichael Munday; RV64I-NEXT:    call callee@plt
258524d8fa9SRoger Ferrer Ibanez; RV64I-NEXT:    addi sp, s0, -256
259524d8fa9SRoger Ferrer Ibanez; RV64I-NEXT:    ld ra, 248(sp) # 8-byte Folded Reload
260137d3474SHsiangkai Wang; RV64I-NEXT:    ld s0, 240(sp) # 8-byte Folded Reload
261524d8fa9SRoger Ferrer Ibanez; RV64I-NEXT:    addi sp, sp, 256
262cd44aee3SSam Elliott; RV64I-NEXT:    ret
263cd44aee3SSam Elliott  %1 = alloca i8, align 256
264cd44aee3SSam Elliott  call void @callee(i8* %1)
265cd44aee3SSam Elliott  ret void
266cd44aee3SSam Elliott}
267cd44aee3SSam Elliott
2688a53a737SSam Elliottdefine void @caller_no_realign256() "no-realign-stack" {
269cd44aee3SSam Elliott; RV32I-LABEL: caller_no_realign256:
270cd44aee3SSam Elliott; RV32I:       # %bb.0:
271cd44aee3SSam Elliott; RV32I-NEXT:    addi sp, sp, -16
2728a53a737SSam Elliott; RV32I-NEXT:    .cfi_def_cfa_offset 16
273e28b6a60SMichael Munday; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill
2748a53a737SSam Elliott; RV32I-NEXT:    .cfi_offset ra, -4
275cd44aee3SSam Elliott; RV32I-NEXT:    mv a0, sp
276e28b6a60SMichael Munday; RV32I-NEXT:    call callee@plt
277e28b6a60SMichael Munday; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload
278cd44aee3SSam Elliott; RV32I-NEXT:    addi sp, sp, 16
279cd44aee3SSam Elliott; RV32I-NEXT:    ret
280cd44aee3SSam Elliott;
281cd44aee3SSam Elliott; RV64I-LABEL: caller_no_realign256:
282cd44aee3SSam Elliott; RV64I:       # %bb.0:
283cd44aee3SSam Elliott; RV64I-NEXT:    addi sp, sp, -16
2848a53a737SSam Elliott; RV64I-NEXT:    .cfi_def_cfa_offset 16
285e28b6a60SMichael Munday; RV64I-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill
2868a53a737SSam Elliott; RV64I-NEXT:    .cfi_offset ra, -8
287cd44aee3SSam Elliott; RV64I-NEXT:    mv a0, sp
288e28b6a60SMichael Munday; RV64I-NEXT:    call callee@plt
289e28b6a60SMichael Munday; RV64I-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload
290cd44aee3SSam Elliott; RV64I-NEXT:    addi sp, sp, 16
291cd44aee3SSam Elliott; RV64I-NEXT:    ret
292cd44aee3SSam Elliott  %1 = alloca i8, align 256
293cd44aee3SSam Elliott  call void @callee(i8* %1)
294cd44aee3SSam Elliott  ret void
295cd44aee3SSam Elliott}
296cd44aee3SSam Elliott
2978a53a737SSam Elliottdefine void @caller512() {
298cd44aee3SSam Elliott; RV32I-LABEL: caller512:
299cd44aee3SSam Elliott; RV32I:       # %bb.0:
300524d8fa9SRoger Ferrer Ibanez; RV32I-NEXT:    addi sp, sp, -1024
3018a53a737SSam Elliott; RV32I-NEXT:    .cfi_def_cfa_offset 1024
302524d8fa9SRoger Ferrer Ibanez; RV32I-NEXT:    sw ra, 1020(sp) # 4-byte Folded Spill
303524d8fa9SRoger Ferrer Ibanez; RV32I-NEXT:    sw s0, 1016(sp) # 4-byte Folded Spill
3048a53a737SSam Elliott; RV32I-NEXT:    .cfi_offset ra, -4
3058a53a737SSam Elliott; RV32I-NEXT:    .cfi_offset s0, -8
306524d8fa9SRoger Ferrer Ibanez; RV32I-NEXT:    addi s0, sp, 1024
3078a53a737SSam Elliott; RV32I-NEXT:    .cfi_def_cfa s0, 0
308cd44aee3SSam Elliott; RV32I-NEXT:    andi sp, sp, -512
309524d8fa9SRoger Ferrer Ibanez; RV32I-NEXT:    addi a0, sp, 512
310e28b6a60SMichael Munday; RV32I-NEXT:    call callee@plt
311524d8fa9SRoger Ferrer Ibanez; RV32I-NEXT:    addi sp, s0, -1024
312524d8fa9SRoger Ferrer Ibanez; RV32I-NEXT:    lw ra, 1020(sp) # 4-byte Folded Reload
313137d3474SHsiangkai Wang; RV32I-NEXT:    lw s0, 1016(sp) # 4-byte Folded Reload
314524d8fa9SRoger Ferrer Ibanez; RV32I-NEXT:    addi sp, sp, 1024
315cd44aee3SSam Elliott; RV32I-NEXT:    ret
316cd44aee3SSam Elliott;
317cd44aee3SSam Elliott; RV64I-LABEL: caller512:
318cd44aee3SSam Elliott; RV64I:       # %bb.0:
319524d8fa9SRoger Ferrer Ibanez; RV64I-NEXT:    addi sp, sp, -1024
3208a53a737SSam Elliott; RV64I-NEXT:    .cfi_def_cfa_offset 1024
321524d8fa9SRoger Ferrer Ibanez; RV64I-NEXT:    sd ra, 1016(sp) # 8-byte Folded Spill
322524d8fa9SRoger Ferrer Ibanez; RV64I-NEXT:    sd s0, 1008(sp) # 8-byte Folded Spill
3238a53a737SSam Elliott; RV64I-NEXT:    .cfi_offset ra, -8
3248a53a737SSam Elliott; RV64I-NEXT:    .cfi_offset s0, -16
325524d8fa9SRoger Ferrer Ibanez; RV64I-NEXT:    addi s0, sp, 1024
3268a53a737SSam Elliott; RV64I-NEXT:    .cfi_def_cfa s0, 0
327cd44aee3SSam Elliott; RV64I-NEXT:    andi sp, sp, -512
328524d8fa9SRoger Ferrer Ibanez; RV64I-NEXT:    addi a0, sp, 512
329e28b6a60SMichael Munday; RV64I-NEXT:    call callee@plt
330524d8fa9SRoger Ferrer Ibanez; RV64I-NEXT:    addi sp, s0, -1024
331524d8fa9SRoger Ferrer Ibanez; RV64I-NEXT:    ld ra, 1016(sp) # 8-byte Folded Reload
332137d3474SHsiangkai Wang; RV64I-NEXT:    ld s0, 1008(sp) # 8-byte Folded Reload
333524d8fa9SRoger Ferrer Ibanez; RV64I-NEXT:    addi sp, sp, 1024
334cd44aee3SSam Elliott; RV64I-NEXT:    ret
335cd44aee3SSam Elliott  %1 = alloca i8, align 512
336cd44aee3SSam Elliott  call void @callee(i8* %1)
337cd44aee3SSam Elliott  ret void
338cd44aee3SSam Elliott}
339cd44aee3SSam Elliott
3408a53a737SSam Elliottdefine void @caller_no_realign512() "no-realign-stack" {
341cd44aee3SSam Elliott; RV32I-LABEL: caller_no_realign512:
342cd44aee3SSam Elliott; RV32I:       # %bb.0:
343cd44aee3SSam Elliott; RV32I-NEXT:    addi sp, sp, -16
3448a53a737SSam Elliott; RV32I-NEXT:    .cfi_def_cfa_offset 16
345e28b6a60SMichael Munday; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill
3468a53a737SSam Elliott; RV32I-NEXT:    .cfi_offset ra, -4
347cd44aee3SSam Elliott; RV32I-NEXT:    mv a0, sp
348e28b6a60SMichael Munday; RV32I-NEXT:    call callee@plt
349e28b6a60SMichael Munday; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload
350cd44aee3SSam Elliott; RV32I-NEXT:    addi sp, sp, 16
351cd44aee3SSam Elliott; RV32I-NEXT:    ret
352cd44aee3SSam Elliott;
353cd44aee3SSam Elliott; RV64I-LABEL: caller_no_realign512:
354cd44aee3SSam Elliott; RV64I:       # %bb.0:
355cd44aee3SSam Elliott; RV64I-NEXT:    addi sp, sp, -16
3568a53a737SSam Elliott; RV64I-NEXT:    .cfi_def_cfa_offset 16
357e28b6a60SMichael Munday; RV64I-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill
3588a53a737SSam Elliott; RV64I-NEXT:    .cfi_offset ra, -8
359cd44aee3SSam Elliott; RV64I-NEXT:    mv a0, sp
360e28b6a60SMichael Munday; RV64I-NEXT:    call callee@plt
361e28b6a60SMichael Munday; RV64I-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload
362cd44aee3SSam Elliott; RV64I-NEXT:    addi sp, sp, 16
363cd44aee3SSam Elliott; RV64I-NEXT:    ret
364cd44aee3SSam Elliott  %1 = alloca i8, align 512
365cd44aee3SSam Elliott  call void @callee(i8* %1)
366cd44aee3SSam Elliott  ret void
367cd44aee3SSam Elliott}
368cd44aee3SSam Elliott
3698a53a737SSam Elliottdefine void @caller1024() {
370cd44aee3SSam Elliott; RV32I-LABEL: caller1024:
371cd44aee3SSam Elliott; RV32I:       # %bb.0:
372ff55e2e0SShiva Chen; RV32I-NEXT:    addi sp, sp, -2032
3738a53a737SSam Elliott; RV32I-NEXT:    .cfi_def_cfa_offset 2032
374e28b6a60SMichael Munday; RV32I-NEXT:    sw ra, 2028(sp) # 4-byte Folded Spill
375e28b6a60SMichael Munday; RV32I-NEXT:    sw s0, 2024(sp) # 4-byte Folded Spill
3768a53a737SSam Elliott; RV32I-NEXT:    .cfi_offset ra, -4
3778a53a737SSam Elliott; RV32I-NEXT:    .cfi_offset s0, -8
378ff55e2e0SShiva Chen; RV32I-NEXT:    addi s0, sp, 2032
3798a53a737SSam Elliott; RV32I-NEXT:    .cfi_def_cfa s0, 0
380524d8fa9SRoger Ferrer Ibanez; RV32I-NEXT:    addi sp, sp, -16
381cd44aee3SSam Elliott; RV32I-NEXT:    andi sp, sp, -1024
382524d8fa9SRoger Ferrer Ibanez; RV32I-NEXT:    addi a0, sp, 1024
383e28b6a60SMichael Munday; RV32I-NEXT:    call callee@plt
384524d8fa9SRoger Ferrer Ibanez; RV32I-NEXT:    addi sp, s0, -2048
385524d8fa9SRoger Ferrer Ibanez; RV32I-NEXT:    addi sp, sp, 16
386e28b6a60SMichael Munday; RV32I-NEXT:    lw ra, 2028(sp) # 4-byte Folded Reload
387137d3474SHsiangkai Wang; RV32I-NEXT:    lw s0, 2024(sp) # 4-byte Folded Reload
388ff55e2e0SShiva Chen; RV32I-NEXT:    addi sp, sp, 2032
389cd44aee3SSam Elliott; RV32I-NEXT:    ret
390cd44aee3SSam Elliott;
391cd44aee3SSam Elliott; RV64I-LABEL: caller1024:
392cd44aee3SSam Elliott; RV64I:       # %bb.0:
393ff55e2e0SShiva Chen; RV64I-NEXT:    addi sp, sp, -2032
3948a53a737SSam Elliott; RV64I-NEXT:    .cfi_def_cfa_offset 2032
395e28b6a60SMichael Munday; RV64I-NEXT:    sd ra, 2024(sp) # 8-byte Folded Spill
396e28b6a60SMichael Munday; RV64I-NEXT:    sd s0, 2016(sp) # 8-byte Folded Spill
3978a53a737SSam Elliott; RV64I-NEXT:    .cfi_offset ra, -8
3988a53a737SSam Elliott; RV64I-NEXT:    .cfi_offset s0, -16
399ff55e2e0SShiva Chen; RV64I-NEXT:    addi s0, sp, 2032
4008a53a737SSam Elliott; RV64I-NEXT:    .cfi_def_cfa s0, 0
401524d8fa9SRoger Ferrer Ibanez; RV64I-NEXT:    addi sp, sp, -16
402cd44aee3SSam Elliott; RV64I-NEXT:    andi sp, sp, -1024
403524d8fa9SRoger Ferrer Ibanez; RV64I-NEXT:    addi a0, sp, 1024
404e28b6a60SMichael Munday; RV64I-NEXT:    call callee@plt
405524d8fa9SRoger Ferrer Ibanez; RV64I-NEXT:    addi sp, s0, -2048
406524d8fa9SRoger Ferrer Ibanez; RV64I-NEXT:    addi sp, sp, 16
407e28b6a60SMichael Munday; RV64I-NEXT:    ld ra, 2024(sp) # 8-byte Folded Reload
408137d3474SHsiangkai Wang; RV64I-NEXT:    ld s0, 2016(sp) # 8-byte Folded Reload
409ff55e2e0SShiva Chen; RV64I-NEXT:    addi sp, sp, 2032
410cd44aee3SSam Elliott; RV64I-NEXT:    ret
411cd44aee3SSam Elliott  %1 = alloca i8, align 1024
412cd44aee3SSam Elliott  call void @callee(i8* %1)
413cd44aee3SSam Elliott  ret void
414cd44aee3SSam Elliott}
415cd44aee3SSam Elliott
4168a53a737SSam Elliottdefine void @caller_no_realign1024() "no-realign-stack" {
417cd44aee3SSam Elliott; RV32I-LABEL: caller_no_realign1024:
418cd44aee3SSam Elliott; RV32I:       # %bb.0:
419cd44aee3SSam Elliott; RV32I-NEXT:    addi sp, sp, -16
4208a53a737SSam Elliott; RV32I-NEXT:    .cfi_def_cfa_offset 16
421e28b6a60SMichael Munday; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill
4228a53a737SSam Elliott; RV32I-NEXT:    .cfi_offset ra, -4
423cd44aee3SSam Elliott; RV32I-NEXT:    mv a0, sp
424e28b6a60SMichael Munday; RV32I-NEXT:    call callee@plt
425e28b6a60SMichael Munday; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload
426cd44aee3SSam Elliott; RV32I-NEXT:    addi sp, sp, 16
427cd44aee3SSam Elliott; RV32I-NEXT:    ret
428cd44aee3SSam Elliott;
429cd44aee3SSam Elliott; RV64I-LABEL: caller_no_realign1024:
430cd44aee3SSam Elliott; RV64I:       # %bb.0:
431cd44aee3SSam Elliott; RV64I-NEXT:    addi sp, sp, -16
4328a53a737SSam Elliott; RV64I-NEXT:    .cfi_def_cfa_offset 16
433e28b6a60SMichael Munday; RV64I-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill
4348a53a737SSam Elliott; RV64I-NEXT:    .cfi_offset ra, -8
435cd44aee3SSam Elliott; RV64I-NEXT:    mv a0, sp
436e28b6a60SMichael Munday; RV64I-NEXT:    call callee@plt
437e28b6a60SMichael Munday; RV64I-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload
438cd44aee3SSam Elliott; RV64I-NEXT:    addi sp, sp, 16
439cd44aee3SSam Elliott; RV64I-NEXT:    ret
440cd44aee3SSam Elliott  %1 = alloca i8, align 1024
441cd44aee3SSam Elliott  call void @callee(i8* %1)
442cd44aee3SSam Elliott  ret void
443cd44aee3SSam Elliott}
444cd44aee3SSam Elliott
4458a53a737SSam Elliottdefine void @caller2048() {
446cd44aee3SSam Elliott; RV32I-LABEL: caller2048:
447cd44aee3SSam Elliott; RV32I:       # %bb.0:
448ff55e2e0SShiva Chen; RV32I-NEXT:    addi sp, sp, -2032
4498a53a737SSam Elliott; RV32I-NEXT:    .cfi_def_cfa_offset 2032
450e28b6a60SMichael Munday; RV32I-NEXT:    sw ra, 2028(sp) # 4-byte Folded Spill
451e28b6a60SMichael Munday; RV32I-NEXT:    sw s0, 2024(sp) # 4-byte Folded Spill
4528a53a737SSam Elliott; RV32I-NEXT:    .cfi_offset ra, -4
4538a53a737SSam Elliott; RV32I-NEXT:    .cfi_offset s0, -8
454ff55e2e0SShiva Chen; RV32I-NEXT:    addi s0, sp, 2032
4558a53a737SSam Elliott; RV32I-NEXT:    .cfi_def_cfa s0, 0
456*1b2de79fSCraig Topper; RV32I-NEXT:    addi sp, sp, -2048
457*1b2de79fSCraig Topper; RV32I-NEXT:    addi sp, sp, -16
458cd44aee3SSam Elliott; RV32I-NEXT:    andi sp, sp, -2048
459cd44aee3SSam Elliott; RV32I-NEXT:    lui a0, 1
460524d8fa9SRoger Ferrer Ibanez; RV32I-NEXT:    addi a0, a0, -2048
461cd44aee3SSam Elliott; RV32I-NEXT:    add a0, sp, a0
462e28b6a60SMichael Munday; RV32I-NEXT:    call callee@plt
463524d8fa9SRoger Ferrer Ibanez; RV32I-NEXT:    lui a0, 1
464cd44aee3SSam Elliott; RV32I-NEXT:    sub sp, s0, a0
465*1b2de79fSCraig Topper; RV32I-NEXT:    addi sp, sp, 2032
466*1b2de79fSCraig Topper; RV32I-NEXT:    addi sp, sp, 32
467e28b6a60SMichael Munday; RV32I-NEXT:    lw ra, 2028(sp) # 4-byte Folded Reload
468137d3474SHsiangkai Wang; RV32I-NEXT:    lw s0, 2024(sp) # 4-byte Folded Reload
469ff55e2e0SShiva Chen; RV32I-NEXT:    addi sp, sp, 2032
470cd44aee3SSam Elliott; RV32I-NEXT:    ret
471cd44aee3SSam Elliott;
472cd44aee3SSam Elliott; RV64I-LABEL: caller2048:
473cd44aee3SSam Elliott; RV64I:       # %bb.0:
474ff55e2e0SShiva Chen; RV64I-NEXT:    addi sp, sp, -2032
4758a53a737SSam Elliott; RV64I-NEXT:    .cfi_def_cfa_offset 2032
476e28b6a60SMichael Munday; RV64I-NEXT:    sd ra, 2024(sp) # 8-byte Folded Spill
477e28b6a60SMichael Munday; RV64I-NEXT:    sd s0, 2016(sp) # 8-byte Folded Spill
4788a53a737SSam Elliott; RV64I-NEXT:    .cfi_offset ra, -8
4798a53a737SSam Elliott; RV64I-NEXT:    .cfi_offset s0, -16
480ff55e2e0SShiva Chen; RV64I-NEXT:    addi s0, sp, 2032
4818a53a737SSam Elliott; RV64I-NEXT:    .cfi_def_cfa s0, 0
482*1b2de79fSCraig Topper; RV64I-NEXT:    addi sp, sp, -2048
483*1b2de79fSCraig Topper; RV64I-NEXT:    addi sp, sp, -16
484cd44aee3SSam Elliott; RV64I-NEXT:    andi sp, sp, -2048
485cd44aee3SSam Elliott; RV64I-NEXT:    lui a0, 1
486524d8fa9SRoger Ferrer Ibanez; RV64I-NEXT:    addiw a0, a0, -2048
487cd44aee3SSam Elliott; RV64I-NEXT:    add a0, sp, a0
488e28b6a60SMichael Munday; RV64I-NEXT:    call callee@plt
489524d8fa9SRoger Ferrer Ibanez; RV64I-NEXT:    lui a0, 1
490cd44aee3SSam Elliott; RV64I-NEXT:    sub sp, s0, a0
491*1b2de79fSCraig Topper; RV64I-NEXT:    addi sp, sp, 2032
492*1b2de79fSCraig Topper; RV64I-NEXT:    addi sp, sp, 32
493e28b6a60SMichael Munday; RV64I-NEXT:    ld ra, 2024(sp) # 8-byte Folded Reload
494137d3474SHsiangkai Wang; RV64I-NEXT:    ld s0, 2016(sp) # 8-byte Folded Reload
495ff55e2e0SShiva Chen; RV64I-NEXT:    addi sp, sp, 2032
496cd44aee3SSam Elliott; RV64I-NEXT:    ret
497cd44aee3SSam Elliott  %1 = alloca i8, align 2048
498cd44aee3SSam Elliott  call void @callee(i8* %1)
499cd44aee3SSam Elliott  ret void
500cd44aee3SSam Elliott}
501cd44aee3SSam Elliott
5028a53a737SSam Elliottdefine void @caller_no_realign2048() "no-realign-stack" {
503cd44aee3SSam Elliott; RV32I-LABEL: caller_no_realign2048:
504cd44aee3SSam Elliott; RV32I:       # %bb.0:
505cd44aee3SSam Elliott; RV32I-NEXT:    addi sp, sp, -16
5068a53a737SSam Elliott; RV32I-NEXT:    .cfi_def_cfa_offset 16
507e28b6a60SMichael Munday; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill
5088a53a737SSam Elliott; RV32I-NEXT:    .cfi_offset ra, -4
509cd44aee3SSam Elliott; RV32I-NEXT:    mv a0, sp
510e28b6a60SMichael Munday; RV32I-NEXT:    call callee@plt
511e28b6a60SMichael Munday; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload
512cd44aee3SSam Elliott; RV32I-NEXT:    addi sp, sp, 16
513cd44aee3SSam Elliott; RV32I-NEXT:    ret
514cd44aee3SSam Elliott;
515cd44aee3SSam Elliott; RV64I-LABEL: caller_no_realign2048:
516cd44aee3SSam Elliott; RV64I:       # %bb.0:
517cd44aee3SSam Elliott; RV64I-NEXT:    addi sp, sp, -16
5188a53a737SSam Elliott; RV64I-NEXT:    .cfi_def_cfa_offset 16
519e28b6a60SMichael Munday; RV64I-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill
5208a53a737SSam Elliott; RV64I-NEXT:    .cfi_offset ra, -8
521cd44aee3SSam Elliott; RV64I-NEXT:    mv a0, sp
522e28b6a60SMichael Munday; RV64I-NEXT:    call callee@plt
523e28b6a60SMichael Munday; RV64I-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload
524cd44aee3SSam Elliott; RV64I-NEXT:    addi sp, sp, 16
525cd44aee3SSam Elliott; RV64I-NEXT:    ret
526cd44aee3SSam Elliott  %1 = alloca i8, align 2048
527cd44aee3SSam Elliott  call void @callee(i8* %1)
528cd44aee3SSam Elliott  ret void
529cd44aee3SSam Elliott}
530cd44aee3SSam Elliott
5318a53a737SSam Elliottdefine void @caller4096() {
532cd44aee3SSam Elliott; RV32I-LABEL: caller4096:
533cd44aee3SSam Elliott; RV32I:       # %bb.0:
534ff55e2e0SShiva Chen; RV32I-NEXT:    addi sp, sp, -2032
5358a53a737SSam Elliott; RV32I-NEXT:    .cfi_def_cfa_offset 2032
536e28b6a60SMichael Munday; RV32I-NEXT:    sw ra, 2028(sp) # 4-byte Folded Spill
537e28b6a60SMichael Munday; RV32I-NEXT:    sw s0, 2024(sp) # 4-byte Folded Spill
5388a53a737SSam Elliott; RV32I-NEXT:    .cfi_offset ra, -4
5398a53a737SSam Elliott; RV32I-NEXT:    .cfi_offset s0, -8
540ff55e2e0SShiva Chen; RV32I-NEXT:    addi s0, sp, 2032
5418a53a737SSam Elliott; RV32I-NEXT:    .cfi_def_cfa s0, 0
542524d8fa9SRoger Ferrer Ibanez; RV32I-NEXT:    lui a0, 2
543ff55e2e0SShiva Chen; RV32I-NEXT:    addi a0, a0, -2032
544cd44aee3SSam Elliott; RV32I-NEXT:    sub sp, sp, a0
545cd44aee3SSam Elliott; RV32I-NEXT:    srli a0, sp, 12
546cd44aee3SSam Elliott; RV32I-NEXT:    slli sp, a0, 12
547524d8fa9SRoger Ferrer Ibanez; RV32I-NEXT:    lui a0, 1
548cd44aee3SSam Elliott; RV32I-NEXT:    add a0, sp, a0
549e28b6a60SMichael Munday; RV32I-NEXT:    call callee@plt
550524d8fa9SRoger Ferrer Ibanez; RV32I-NEXT:    lui a0, 2
551cd44aee3SSam Elliott; RV32I-NEXT:    sub sp, s0, a0
552524d8fa9SRoger Ferrer Ibanez; RV32I-NEXT:    lui a0, 2
553ff55e2e0SShiva Chen; RV32I-NEXT:    addi a0, a0, -2032
554cd44aee3SSam Elliott; RV32I-NEXT:    add sp, sp, a0
555e28b6a60SMichael Munday; RV32I-NEXT:    lw ra, 2028(sp) # 4-byte Folded Reload
556137d3474SHsiangkai Wang; RV32I-NEXT:    lw s0, 2024(sp) # 4-byte Folded Reload
557ff55e2e0SShiva Chen; RV32I-NEXT:    addi sp, sp, 2032
558cd44aee3SSam Elliott; RV32I-NEXT:    ret
559cd44aee3SSam Elliott;
560cd44aee3SSam Elliott; RV64I-LABEL: caller4096:
561cd44aee3SSam Elliott; RV64I:       # %bb.0:
562ff55e2e0SShiva Chen; RV64I-NEXT:    addi sp, sp, -2032
5638a53a737SSam Elliott; RV64I-NEXT:    .cfi_def_cfa_offset 2032
564e28b6a60SMichael Munday; RV64I-NEXT:    sd ra, 2024(sp) # 8-byte Folded Spill
565e28b6a60SMichael Munday; RV64I-NEXT:    sd s0, 2016(sp) # 8-byte Folded Spill
5668a53a737SSam Elliott; RV64I-NEXT:    .cfi_offset ra, -8
5678a53a737SSam Elliott; RV64I-NEXT:    .cfi_offset s0, -16
568ff55e2e0SShiva Chen; RV64I-NEXT:    addi s0, sp, 2032
5698a53a737SSam Elliott; RV64I-NEXT:    .cfi_def_cfa s0, 0
570524d8fa9SRoger Ferrer Ibanez; RV64I-NEXT:    lui a0, 2
571ff55e2e0SShiva Chen; RV64I-NEXT:    addiw a0, a0, -2032
572cd44aee3SSam Elliott; RV64I-NEXT:    sub sp, sp, a0
573cd44aee3SSam Elliott; RV64I-NEXT:    srli a0, sp, 12
574cd44aee3SSam Elliott; RV64I-NEXT:    slli sp, a0, 12
575524d8fa9SRoger Ferrer Ibanez; RV64I-NEXT:    lui a0, 1
576cd44aee3SSam Elliott; RV64I-NEXT:    add a0, sp, a0
577e28b6a60SMichael Munday; RV64I-NEXT:    call callee@plt
578524d8fa9SRoger Ferrer Ibanez; RV64I-NEXT:    lui a0, 2
579cd44aee3SSam Elliott; RV64I-NEXT:    sub sp, s0, a0
580524d8fa9SRoger Ferrer Ibanez; RV64I-NEXT:    lui a0, 2
581ff55e2e0SShiva Chen; RV64I-NEXT:    addiw a0, a0, -2032
582cd44aee3SSam Elliott; RV64I-NEXT:    add sp, sp, a0
583e28b6a60SMichael Munday; RV64I-NEXT:    ld ra, 2024(sp) # 8-byte Folded Reload
584137d3474SHsiangkai Wang; RV64I-NEXT:    ld s0, 2016(sp) # 8-byte Folded Reload
585ff55e2e0SShiva Chen; RV64I-NEXT:    addi sp, sp, 2032
586cd44aee3SSam Elliott; RV64I-NEXT:    ret
587cd44aee3SSam Elliott  %1 = alloca i8, align 4096
588cd44aee3SSam Elliott  call void @callee(i8* %1)
589cd44aee3SSam Elliott  ret void
590cd44aee3SSam Elliott}
591cd44aee3SSam Elliott
5928a53a737SSam Elliottdefine void @caller_no_realign4096() "no-realign-stack" {
593cd44aee3SSam Elliott; RV32I-LABEL: caller_no_realign4096:
594cd44aee3SSam Elliott; RV32I:       # %bb.0:
595cd44aee3SSam Elliott; RV32I-NEXT:    addi sp, sp, -16
5968a53a737SSam Elliott; RV32I-NEXT:    .cfi_def_cfa_offset 16
597e28b6a60SMichael Munday; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill
5988a53a737SSam Elliott; RV32I-NEXT:    .cfi_offset ra, -4
599cd44aee3SSam Elliott; RV32I-NEXT:    mv a0, sp
600e28b6a60SMichael Munday; RV32I-NEXT:    call callee@plt
601e28b6a60SMichael Munday; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload
602cd44aee3SSam Elliott; RV32I-NEXT:    addi sp, sp, 16
603cd44aee3SSam Elliott; RV32I-NEXT:    ret
604cd44aee3SSam Elliott;
605cd44aee3SSam Elliott; RV64I-LABEL: caller_no_realign4096:
606cd44aee3SSam Elliott; RV64I:       # %bb.0:
607cd44aee3SSam Elliott; RV64I-NEXT:    addi sp, sp, -16
6088a53a737SSam Elliott; RV64I-NEXT:    .cfi_def_cfa_offset 16
609e28b6a60SMichael Munday; RV64I-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill
6108a53a737SSam Elliott; RV64I-NEXT:    .cfi_offset ra, -8
611cd44aee3SSam Elliott; RV64I-NEXT:    mv a0, sp
612e28b6a60SMichael Munday; RV64I-NEXT:    call callee@plt
613e28b6a60SMichael Munday; RV64I-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload
614cd44aee3SSam Elliott; RV64I-NEXT:    addi sp, sp, 16
615cd44aee3SSam Elliott; RV64I-NEXT:    ret
616cd44aee3SSam Elliott  %1 = alloca i8, align 4096
617cd44aee3SSam Elliott  call void @callee(i8* %1)
618cd44aee3SSam Elliott  ret void
619cd44aee3SSam Elliott}
620