xref: /llvm-project/llvm/test/CodeGen/RISCV/stack-clash-prologue.ll (revision 01d7f434d21a70158094a9c7da971ce9e0d0915c)
1708a478dSRaphael Moreira Zinsly; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2708a478dSRaphael Moreira Zinsly; RUN: llc -mtriple=riscv64 -mattr=+m -O2 < %s \
3708a478dSRaphael Moreira Zinsly; RUN:   | FileCheck %s -check-prefix=RV64I
4708a478dSRaphael Moreira Zinsly; RUN: llc -mtriple=riscv32 -mattr=+m -O2 < %s \
5708a478dSRaphael Moreira Zinsly; RUN:   | FileCheck %s -check-prefix=RV32I
6708a478dSRaphael Moreira Zinsly
7708a478dSRaphael Moreira Zinsly; Tests copied from PowerPC.
8708a478dSRaphael Moreira Zinsly
9708a478dSRaphael Moreira Zinsly; Free probe
10708a478dSRaphael Moreira Zinslydefine i8 @f0() #0 {
11708a478dSRaphael Moreira Zinsly; RV64I-LABEL: f0:
12708a478dSRaphael Moreira Zinsly; RV64I:       # %bb.0: # %entry
13708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    addi sp, sp, -64
14708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    .cfi_def_cfa_offset 64
15708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    li a0, 3
16708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    sb a0, 0(sp)
17708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    lbu a0, 0(sp)
18708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    addi sp, sp, 64
19708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    .cfi_def_cfa_offset 0
20708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    ret
21708a478dSRaphael Moreira Zinsly;
22708a478dSRaphael Moreira Zinsly; RV32I-LABEL: f0:
23708a478dSRaphael Moreira Zinsly; RV32I:       # %bb.0: # %entry
24708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    addi sp, sp, -64
25708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    .cfi_def_cfa_offset 64
26708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    li a0, 3
27708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    sb a0, 0(sp)
28708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    lbu a0, 0(sp)
29708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    addi sp, sp, 64
30708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    .cfi_def_cfa_offset 0
31708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    ret
32708a478dSRaphael Moreira Zinslyentry:
33708a478dSRaphael Moreira Zinsly  %a = alloca i8, i64 64
34708a478dSRaphael Moreira Zinsly  %b = getelementptr inbounds i8, ptr %a, i64 63
35708a478dSRaphael Moreira Zinsly  store volatile i8 3, ptr %a
36708a478dSRaphael Moreira Zinsly  %c = load volatile i8, ptr %a
37708a478dSRaphael Moreira Zinsly  ret i8 %c
38708a478dSRaphael Moreira Zinsly}
39708a478dSRaphael Moreira Zinsly
40708a478dSRaphael Moreira Zinslydefine i8 @f1() #0 {
41708a478dSRaphael Moreira Zinsly; RV64I-LABEL: f1:
42708a478dSRaphael Moreira Zinsly; RV64I:       # %bb.0: # %entry
43708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    lui a0, 1
44708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    sub sp, sp, a0
45708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    sd zero, 0(sp)
46708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    .cfi_def_cfa_offset 4096
47708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    addi sp, sp, -16
48708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    .cfi_def_cfa_offset 4112
49708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    li a0, 3
50708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    sb a0, 16(sp)
51708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    lbu a0, 16(sp)
52708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    lui a1, 1
53708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    addiw a1, a1, 16
54708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    add sp, sp, a1
55708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    .cfi_def_cfa_offset 0
56708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    ret
57708a478dSRaphael Moreira Zinsly;
58708a478dSRaphael Moreira Zinsly; RV32I-LABEL: f1:
59708a478dSRaphael Moreira Zinsly; RV32I:       # %bb.0: # %entry
60708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    lui a0, 1
61708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    sub sp, sp, a0
62708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    sw zero, 0(sp)
63708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    .cfi_def_cfa_offset 4096
64708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    addi sp, sp, -16
65708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    .cfi_def_cfa_offset 4112
66708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    li a0, 3
67708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    sb a0, 16(sp)
68708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    lbu a0, 16(sp)
69708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    lui a1, 1
70708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    addi a1, a1, 16
71708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    add sp, sp, a1
72708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    .cfi_def_cfa_offset 0
73708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    ret
74708a478dSRaphael Moreira Zinslyentry:
75708a478dSRaphael Moreira Zinsly  %a = alloca i8, i64 4096
76708a478dSRaphael Moreira Zinsly  %b = getelementptr inbounds i8, ptr %a, i64 63
77708a478dSRaphael Moreira Zinsly  store volatile i8 3, ptr %a
78708a478dSRaphael Moreira Zinsly  %c = load volatile i8, ptr %a
79708a478dSRaphael Moreira Zinsly  ret i8 %c
80708a478dSRaphael Moreira Zinsly}
81708a478dSRaphael Moreira Zinsly
82708a478dSRaphael Moreira Zinslydefine i8 @f2() #0 {
83708a478dSRaphael Moreira Zinsly; RV64I-LABEL: f2:
84708a478dSRaphael Moreira Zinsly; RV64I:       # %bb.0: # %entry
85708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    lui a0, 16
86708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    sub t1, sp, a0
87708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    .cfi_def_cfa t1, 65536
88708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    lui t2, 1
89708a478dSRaphael Moreira Zinsly; RV64I-NEXT:  .LBB2_1: # %entry
90708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    # =>This Inner Loop Header: Depth=1
91708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    sub sp, sp, t2
92708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    sd zero, 0(sp)
93708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    bne sp, t1, .LBB2_1
94708a478dSRaphael Moreira Zinsly; RV64I-NEXT:  # %bb.2: # %entry
95708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    .cfi_def_cfa_register sp
96708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    addi sp, sp, -16
97708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    .cfi_def_cfa_offset 65552
98708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    li a0, 3
99708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    sb a0, 16(sp)
100708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    lbu a0, 16(sp)
101708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    lui a1, 16
102708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    addiw a1, a1, 16
103708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    add sp, sp, a1
104708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    .cfi_def_cfa_offset 0
105708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    ret
106708a478dSRaphael Moreira Zinsly;
107708a478dSRaphael Moreira Zinsly; RV32I-LABEL: f2:
108708a478dSRaphael Moreira Zinsly; RV32I:       # %bb.0: # %entry
109708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    lui a0, 16
110708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    sub t1, sp, a0
111708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    .cfi_def_cfa t1, 65536
112708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    lui t2, 1
113708a478dSRaphael Moreira Zinsly; RV32I-NEXT:  .LBB2_1: # %entry
114708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    # =>This Inner Loop Header: Depth=1
115708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    sub sp, sp, t2
116708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    sw zero, 0(sp)
117708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    bne sp, t1, .LBB2_1
118708a478dSRaphael Moreira Zinsly; RV32I-NEXT:  # %bb.2: # %entry
119708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    .cfi_def_cfa_register sp
120708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    addi sp, sp, -16
121708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    .cfi_def_cfa_offset 65552
122708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    li a0, 3
123708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    sb a0, 16(sp)
124708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    lbu a0, 16(sp)
125708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    lui a1, 16
126708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    addi a1, a1, 16
127708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    add sp, sp, a1
128708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    .cfi_def_cfa_offset 0
129708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    ret
130708a478dSRaphael Moreira Zinslyentry:
131708a478dSRaphael Moreira Zinsly  %a = alloca i8, i64 65536
132708a478dSRaphael Moreira Zinsly  %b = getelementptr inbounds i8, ptr %a, i64 63
133708a478dSRaphael Moreira Zinsly  store volatile i8 3, ptr %a
134708a478dSRaphael Moreira Zinsly  %c = load volatile i8, ptr %a
135708a478dSRaphael Moreira Zinsly  ret i8 %c
136708a478dSRaphael Moreira Zinsly}
137708a478dSRaphael Moreira Zinsly
138708a478dSRaphael Moreira Zinslydefine i8 @f3() #0 "stack-probe-size"="32768" {
139708a478dSRaphael Moreira Zinsly; RV64I-LABEL: f3:
140708a478dSRaphael Moreira Zinsly; RV64I:       # %bb.0: # %entry
141708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    lui a0, 8
142708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    sub sp, sp, a0
143708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    sd zero, 0(sp)
144708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    .cfi_def_cfa_offset 32768
145708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    lui a0, 8
146708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    sub sp, sp, a0
147708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    sd zero, 0(sp)
148708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    .cfi_def_cfa_offset 65536
149708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    addi sp, sp, -16
150708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    .cfi_def_cfa_offset 65552
151708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    li a0, 3
152708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    sb a0, 16(sp)
153708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    lbu a0, 16(sp)
154708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    lui a1, 16
155708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    addiw a1, a1, 16
156708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    add sp, sp, a1
157708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    .cfi_def_cfa_offset 0
158708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    ret
159708a478dSRaphael Moreira Zinsly;
160708a478dSRaphael Moreira Zinsly; RV32I-LABEL: f3:
161708a478dSRaphael Moreira Zinsly; RV32I:       # %bb.0: # %entry
162708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    lui a0, 8
163708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    sub sp, sp, a0
164708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    sw zero, 0(sp)
165708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    .cfi_def_cfa_offset 32768
166708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    lui a0, 8
167708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    sub sp, sp, a0
168708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    sw zero, 0(sp)
169708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    .cfi_def_cfa_offset 65536
170708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    addi sp, sp, -16
171708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    .cfi_def_cfa_offset 65552
172708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    li a0, 3
173708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    sb a0, 16(sp)
174708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    lbu a0, 16(sp)
175708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    lui a1, 16
176708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    addi a1, a1, 16
177708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    add sp, sp, a1
178708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    .cfi_def_cfa_offset 0
179708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    ret
180708a478dSRaphael Moreira Zinslyentry:
181708a478dSRaphael Moreira Zinsly  %a = alloca i8, i64 65536
182708a478dSRaphael Moreira Zinsly  %b = getelementptr inbounds i8, ptr %a, i64 63
183708a478dSRaphael Moreira Zinsly  store volatile i8 3, ptr %a
184708a478dSRaphael Moreira Zinsly  %c = load volatile i8, ptr %a
185708a478dSRaphael Moreira Zinsly  ret i8 %c
186708a478dSRaphael Moreira Zinsly}
187708a478dSRaphael Moreira Zinsly
188708a478dSRaphael Moreira Zinsly; Same as f2, but without protection.
189708a478dSRaphael Moreira Zinslydefine i8 @f4() {
190708a478dSRaphael Moreira Zinsly; RV64I-LABEL: f4:
191708a478dSRaphael Moreira Zinsly; RV64I:       # %bb.0: # %entry
192708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    lui a0, 16
193708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    addiw a0, a0, 16
194708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    sub sp, sp, a0
195708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    .cfi_def_cfa_offset 65552
196708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    li a0, 3
197708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    sb a0, 16(sp)
198708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    lbu a0, 16(sp)
199708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    lui a1, 16
200708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    addiw a1, a1, 16
201708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    add sp, sp, a1
202708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    .cfi_def_cfa_offset 0
203708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    ret
204708a478dSRaphael Moreira Zinsly;
205708a478dSRaphael Moreira Zinsly; RV32I-LABEL: f4:
206708a478dSRaphael Moreira Zinsly; RV32I:       # %bb.0: # %entry
207708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    lui a0, 16
208708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    addi a0, a0, 16
209708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    sub sp, sp, a0
210708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    .cfi_def_cfa_offset 65552
211708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    li a0, 3
212708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    sb a0, 16(sp)
213708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    lbu a0, 16(sp)
214708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    lui a1, 16
215708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    addi a1, a1, 16
216708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    add sp, sp, a1
217708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    .cfi_def_cfa_offset 0
218708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    ret
219708a478dSRaphael Moreira Zinslyentry:
220708a478dSRaphael Moreira Zinsly  %a = alloca i8, i64 65536
221708a478dSRaphael Moreira Zinsly  %b = getelementptr inbounds i8, ptr %a, i64 63
222708a478dSRaphael Moreira Zinsly  store volatile i8 3, ptr %a
223708a478dSRaphael Moreira Zinsly  %c = load volatile i8, ptr %a
224708a478dSRaphael Moreira Zinsly  ret i8 %c
225708a478dSRaphael Moreira Zinsly}
226708a478dSRaphael Moreira Zinsly
227708a478dSRaphael Moreira Zinslydefine i8 @f5() #0 "stack-probe-size"="65536" {
228708a478dSRaphael Moreira Zinsly; RV64I-LABEL: f5:
229708a478dSRaphael Moreira Zinsly; RV64I:       # %bb.0: # %entry
230708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    lui a0, 256
231708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    sub t1, sp, a0
232708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    .cfi_def_cfa t1, 1048576
233708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    lui t2, 16
234708a478dSRaphael Moreira Zinsly; RV64I-NEXT:  .LBB5_1: # %entry
235708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    # =>This Inner Loop Header: Depth=1
236708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    sub sp, sp, t2
237708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    sd zero, 0(sp)
238708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    bne sp, t1, .LBB5_1
239708a478dSRaphael Moreira Zinsly; RV64I-NEXT:  # %bb.2: # %entry
240708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    .cfi_def_cfa_register sp
241708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    addi sp, sp, -16
242708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    .cfi_def_cfa_offset 1048592
243708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    li a0, 3
244708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    sb a0, 16(sp)
245708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    lbu a0, 16(sp)
246708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    lui a1, 256
247708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    addiw a1, a1, 16
248708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    add sp, sp, a1
249708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    .cfi_def_cfa_offset 0
250708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    ret
251708a478dSRaphael Moreira Zinsly;
252708a478dSRaphael Moreira Zinsly; RV32I-LABEL: f5:
253708a478dSRaphael Moreira Zinsly; RV32I:       # %bb.0: # %entry
254708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    lui a0, 256
255708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    sub t1, sp, a0
256708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    .cfi_def_cfa t1, 1048576
257708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    lui t2, 16
258708a478dSRaphael Moreira Zinsly; RV32I-NEXT:  .LBB5_1: # %entry
259708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    # =>This Inner Loop Header: Depth=1
260708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    sub sp, sp, t2
261708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    sw zero, 0(sp)
262708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    bne sp, t1, .LBB5_1
263708a478dSRaphael Moreira Zinsly; RV32I-NEXT:  # %bb.2: # %entry
264708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    .cfi_def_cfa_register sp
265708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    addi sp, sp, -16
266708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    .cfi_def_cfa_offset 1048592
267708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    li a0, 3
268708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    sb a0, 16(sp)
269708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    lbu a0, 16(sp)
270708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    lui a1, 256
271708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    addi a1, a1, 16
272708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    add sp, sp, a1
273708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    .cfi_def_cfa_offset 0
274708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    ret
275708a478dSRaphael Moreira Zinslyentry:
276708a478dSRaphael Moreira Zinsly  %a = alloca i8, i64 1048576
277708a478dSRaphael Moreira Zinsly  %b = getelementptr inbounds i8, ptr %a, i64 63
278708a478dSRaphael Moreira Zinsly  store volatile i8 3, ptr %a
279708a478dSRaphael Moreira Zinsly  %c = load volatile i8, ptr %a
280708a478dSRaphael Moreira Zinsly  ret i8 %c
281708a478dSRaphael Moreira Zinsly}
282708a478dSRaphael Moreira Zinsly
283708a478dSRaphael Moreira Zinslydefine i8 @f6() #0 {
284708a478dSRaphael Moreira Zinsly; RV64I-LABEL: f6:
285708a478dSRaphael Moreira Zinsly; RV64I:       # %bb.0: # %entry
286708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    lui a0, 262144
287708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    sub t1, sp, a0
288708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    .cfi_def_cfa t1, 1073741824
289708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    lui t2, 1
290708a478dSRaphael Moreira Zinsly; RV64I-NEXT:  .LBB6_1: # %entry
291708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    # =>This Inner Loop Header: Depth=1
292708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    sub sp, sp, t2
293708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    sd zero, 0(sp)
294708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    bne sp, t1, .LBB6_1
295708a478dSRaphael Moreira Zinsly; RV64I-NEXT:  # %bb.2: # %entry
296708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    .cfi_def_cfa_register sp
297708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    addi sp, sp, -16
298708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    .cfi_def_cfa_offset 1073741840
299708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    li a0, 3
300708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    sb a0, 16(sp)
301708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    lbu a0, 16(sp)
302708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    lui a1, 262144
303708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    addiw a1, a1, 16
304708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    add sp, sp, a1
305708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    .cfi_def_cfa_offset 0
306708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    ret
307708a478dSRaphael Moreira Zinsly;
308708a478dSRaphael Moreira Zinsly; RV32I-LABEL: f6:
309708a478dSRaphael Moreira Zinsly; RV32I:       # %bb.0: # %entry
310708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    lui a0, 262144
311708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    sub t1, sp, a0
312708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    .cfi_def_cfa t1, 1073741824
313708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    lui t2, 1
314708a478dSRaphael Moreira Zinsly; RV32I-NEXT:  .LBB6_1: # %entry
315708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    # =>This Inner Loop Header: Depth=1
316708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    sub sp, sp, t2
317708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    sw zero, 0(sp)
318708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    bne sp, t1, .LBB6_1
319708a478dSRaphael Moreira Zinsly; RV32I-NEXT:  # %bb.2: # %entry
320708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    .cfi_def_cfa_register sp
321708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    addi sp, sp, -16
322708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    .cfi_def_cfa_offset 1073741840
323708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    li a0, 3
324708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    sb a0, 16(sp)
325708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    lbu a0, 16(sp)
326708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    lui a1, 262144
327708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    addi a1, a1, 16
328708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    add sp, sp, a1
329708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    .cfi_def_cfa_offset 0
330708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    ret
331708a478dSRaphael Moreira Zinslyentry:
332708a478dSRaphael Moreira Zinsly  %a = alloca i8, i64 1073741824
333708a478dSRaphael Moreira Zinsly  %b = getelementptr inbounds i8, ptr %a, i64 63
334708a478dSRaphael Moreira Zinsly  store volatile i8 3, ptr %a
335708a478dSRaphael Moreira Zinsly  %c = load volatile i8, ptr %a
336708a478dSRaphael Moreira Zinsly  ret i8 %c
337708a478dSRaphael Moreira Zinsly}
338708a478dSRaphael Moreira Zinsly
339708a478dSRaphael Moreira Zinslydefine i8 @f7() #0 "stack-probe-size"="65536" {
340708a478dSRaphael Moreira Zinsly; RV64I-LABEL: f7:
341708a478dSRaphael Moreira Zinsly; RV64I:       # %bb.0: # %entry
342708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    lui a0, 244128
343708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    sub t1, sp, a0
344708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    .cfi_def_cfa t1, 999948288
345708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    lui t2, 16
346708a478dSRaphael Moreira Zinsly; RV64I-NEXT:  .LBB7_1: # %entry
347708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    # =>This Inner Loop Header: Depth=1
348708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    sub sp, sp, t2
349708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    sd zero, 0(sp)
350708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    bne sp, t1, .LBB7_1
351708a478dSRaphael Moreira Zinsly; RV64I-NEXT:  # %bb.2: # %entry
352708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    .cfi_def_cfa_register sp
353708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    lui a0, 13
354708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    addiw a0, a0, -1520
355708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    sub sp, sp, a0
356708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    .cfi_def_cfa_offset 1000000016
357708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    li a0, 3
358708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    sb a0, 9(sp)
359708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    lbu a0, 9(sp)
360708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    lui a1, 244141
361708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    addiw a1, a1, -1520
362708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    add sp, sp, a1
363708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    .cfi_def_cfa_offset 0
364708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    ret
365708a478dSRaphael Moreira Zinsly;
366708a478dSRaphael Moreira Zinsly; RV32I-LABEL: f7:
367708a478dSRaphael Moreira Zinsly; RV32I:       # %bb.0: # %entry
368708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    lui a0, 244128
369708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    sub t1, sp, a0
370708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    .cfi_def_cfa t1, 999948288
371708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    lui t2, 16
372708a478dSRaphael Moreira Zinsly; RV32I-NEXT:  .LBB7_1: # %entry
373708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    # =>This Inner Loop Header: Depth=1
374708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    sub sp, sp, t2
375708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    sw zero, 0(sp)
376708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    bne sp, t1, .LBB7_1
377708a478dSRaphael Moreira Zinsly; RV32I-NEXT:  # %bb.2: # %entry
378708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    .cfi_def_cfa_register sp
379708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    lui a0, 13
380708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    addi a0, a0, -1520
381708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    sub sp, sp, a0
382708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    .cfi_def_cfa_offset 1000000016
383708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    li a0, 3
384708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    sb a0, 9(sp)
385708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    lbu a0, 9(sp)
386708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    lui a1, 244141
387708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    addi a1, a1, -1520
388708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    add sp, sp, a1
389708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    .cfi_def_cfa_offset 0
390708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    ret
391708a478dSRaphael Moreira Zinslyentry:
392708a478dSRaphael Moreira Zinsly  %a = alloca i8, i64 1000000007
393708a478dSRaphael Moreira Zinsly  %b = getelementptr inbounds i8, ptr %a, i64 101
394708a478dSRaphael Moreira Zinsly  store volatile i8 3, ptr %a
395708a478dSRaphael Moreira Zinsly  %c = load volatile i8, ptr %a
396708a478dSRaphael Moreira Zinsly  ret i8 %c
397708a478dSRaphael Moreira Zinsly}
398708a478dSRaphael Moreira Zinsly
399708a478dSRaphael Moreira Zinsly; alloca + align < probe_size
400708a478dSRaphael Moreira Zinslydefine i32 @f8(i64 %i) local_unnamed_addr #0 {
401708a478dSRaphael Moreira Zinsly; RV64I-LABEL: f8:
402708a478dSRaphael Moreira Zinsly; RV64I:       # %bb.0:
403708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    addi sp, sp, -832
404708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    .cfi_def_cfa_offset 832
405708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    sd ra, 824(sp) # 8-byte Folded Spill
406708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    sd s0, 816(sp) # 8-byte Folded Spill
407708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    .cfi_offset ra, -8
408708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    .cfi_offset s0, -16
409708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    addi s0, sp, 832
410708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    .cfi_def_cfa s0, 0
411708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    andi sp, sp, -64
412708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    slli a0, a0, 2
413708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    mv a1, sp
414708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    add a0, a1, a0
415708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    li a1, 1
416708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    sw a1, 0(a0)
417708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    lw a0, 0(sp)
418708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    addi sp, s0, -832
419708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    .cfi_def_cfa sp, 832
420708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    ld ra, 824(sp) # 8-byte Folded Reload
421708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    ld s0, 816(sp) # 8-byte Folded Reload
422708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    .cfi_restore ra
423708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    .cfi_restore s0
424708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    addi sp, sp, 832
425708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    .cfi_def_cfa_offset 0
426708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    ret
427708a478dSRaphael Moreira Zinsly;
428708a478dSRaphael Moreira Zinsly; RV32I-LABEL: f8:
429708a478dSRaphael Moreira Zinsly; RV32I:       # %bb.0:
430708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    addi sp, sp, -832
431708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    .cfi_def_cfa_offset 832
432708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    sw ra, 828(sp) # 4-byte Folded Spill
433708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    sw s0, 824(sp) # 4-byte Folded Spill
434708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    .cfi_offset ra, -4
435708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    .cfi_offset s0, -8
436708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    addi s0, sp, 832
437708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    .cfi_def_cfa s0, 0
438708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    andi sp, sp, -64
439708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    slli a0, a0, 2
440708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    mv a1, sp
441708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    add a0, a1, a0
442708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    li a1, 1
443708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    sw a1, 0(a0)
444708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    lw a0, 0(sp)
445708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    addi sp, s0, -832
446708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    .cfi_def_cfa sp, 832
447708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    lw ra, 828(sp) # 4-byte Folded Reload
448708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    lw s0, 824(sp) # 4-byte Folded Reload
449708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    .cfi_restore ra
450708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    .cfi_restore s0
451708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    addi sp, sp, 832
452708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    .cfi_def_cfa_offset 0
453708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    ret
454708a478dSRaphael Moreira Zinsly  %a = alloca i32, i32 200, align 64
455708a478dSRaphael Moreira Zinsly  %b = getelementptr inbounds i32, ptr %a, i64 %i
456708a478dSRaphael Moreira Zinsly  store volatile i32 1, ptr %b
457708a478dSRaphael Moreira Zinsly  %c = load volatile i32, ptr %a
458708a478dSRaphael Moreira Zinsly  ret i32 %c
459708a478dSRaphael Moreira Zinsly}
460708a478dSRaphael Moreira Zinsly
461708a478dSRaphael Moreira Zinsly; alloca > probe_size, align > probe_size
462708a478dSRaphael Moreira Zinslydefine i32 @f9(i64 %i) local_unnamed_addr #0 {
463708a478dSRaphael Moreira Zinsly; RV64I-LABEL: f9:
464708a478dSRaphael Moreira Zinsly; RV64I:       # %bb.0:
465708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    addi sp, sp, -2032
466708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    .cfi_def_cfa_offset 2032
467708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    sd ra, 2024(sp) # 8-byte Folded Spill
468708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    sd s0, 2016(sp) # 8-byte Folded Spill
469708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    .cfi_offset ra, -8
470708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    .cfi_offset s0, -16
471708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    addi s0, sp, 2032
472708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    .cfi_def_cfa s0, 0
473708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    lui a1, 1
474708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    sub sp, sp, a1
475708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    sd zero, 0(sp)
476708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    sub sp, sp, a1
477708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    sd zero, 0(sp)
478708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    addi sp, sp, -16
479708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    andi sp, sp, -2048
480708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    slli a0, a0, 2
481708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    addi a1, sp, 2047
482708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    addi a1, a1, 1
483708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    add a0, a1, a0
484708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    li a1, 1
485708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    sw a1, 0(a0)
486708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    lui a0, 1
487708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    add a0, sp, a0
488708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    lw a0, -2048(a0)
489708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    addi sp, s0, -2032
490708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    .cfi_def_cfa sp, 2032
491708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    ld ra, 2024(sp) # 8-byte Folded Reload
492708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    ld s0, 2016(sp) # 8-byte Folded Reload
493708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    .cfi_restore ra
494708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    .cfi_restore s0
495708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    addi sp, sp, 2032
496708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    .cfi_def_cfa_offset 0
497708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    ret
498708a478dSRaphael Moreira Zinsly;
499708a478dSRaphael Moreira Zinsly; RV32I-LABEL: f9:
500708a478dSRaphael Moreira Zinsly; RV32I:       # %bb.0:
501708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    addi sp, sp, -2032
502708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    .cfi_def_cfa_offset 2032
503708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    sw ra, 2028(sp) # 4-byte Folded Spill
504708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    sw s0, 2024(sp) # 4-byte Folded Spill
505708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    .cfi_offset ra, -4
506708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    .cfi_offset s0, -8
507708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    addi s0, sp, 2032
508708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    .cfi_def_cfa s0, 0
509708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    lui a1, 1
510708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    sub sp, sp, a1
511708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    sw zero, 0(sp)
512708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    sub sp, sp, a1
513708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    sw zero, 0(sp)
514708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    addi sp, sp, -16
515708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    andi sp, sp, -2048
516708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    slli a0, a0, 2
517708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    addi a1, sp, 2047
518708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    addi a1, a1, 1
519708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    add a0, a1, a0
520708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    li a1, 1
521708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    sw a1, 0(a0)
522708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    lui a0, 1
523708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    add a0, sp, a0
524708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    lw a0, -2048(a0)
525708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    addi sp, s0, -2032
526708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    .cfi_def_cfa sp, 2032
527708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    lw ra, 2028(sp) # 4-byte Folded Reload
528708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    lw s0, 2024(sp) # 4-byte Folded Reload
529708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    .cfi_restore ra
530708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    .cfi_restore s0
531708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    addi sp, sp, 2032
532708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    .cfi_def_cfa_offset 0
533708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    ret
534708a478dSRaphael Moreira Zinsly  %a = alloca i32, i32 2000, align 2048
535708a478dSRaphael Moreira Zinsly  %b = getelementptr inbounds i32, ptr %a, i64 %i
536708a478dSRaphael Moreira Zinsly  store volatile i32 1, ptr %b
537708a478dSRaphael Moreira Zinsly  %c = load volatile i32, ptr %a
538708a478dSRaphael Moreira Zinsly  ret i32 %c
539708a478dSRaphael Moreira Zinsly}
540708a478dSRaphael Moreira Zinsly
5416f53886aSRaphael Moreira Zinsly; alloca < probe_size, align < probe_size, alloca + align > probe_size
5426f53886aSRaphael Moreira Zinslydefine i32 @f10(i64 %i) local_unnamed_addr #0 {
5436f53886aSRaphael Moreira Zinsly; RV64I-LABEL: f10:
5446f53886aSRaphael Moreira Zinsly; RV64I:       # %bb.0:
5456f53886aSRaphael Moreira Zinsly; RV64I-NEXT:    addi sp, sp, -2032
5466f53886aSRaphael Moreira Zinsly; RV64I-NEXT:    .cfi_def_cfa_offset 2032
5476f53886aSRaphael Moreira Zinsly; RV64I-NEXT:    sd ra, 2024(sp) # 8-byte Folded Spill
5486f53886aSRaphael Moreira Zinsly; RV64I-NEXT:    sd s0, 2016(sp) # 8-byte Folded Spill
5496f53886aSRaphael Moreira Zinsly; RV64I-NEXT:    .cfi_offset ra, -8
5506f53886aSRaphael Moreira Zinsly; RV64I-NEXT:    .cfi_offset s0, -16
5516f53886aSRaphael Moreira Zinsly; RV64I-NEXT:    addi s0, sp, 2032
5526f53886aSRaphael Moreira Zinsly; RV64I-NEXT:    .cfi_def_cfa s0, 0
5536f53886aSRaphael Moreira Zinsly; RV64I-NEXT:    addi sp, sp, -2048
5546f53886aSRaphael Moreira Zinsly; RV64I-NEXT:    addi sp, sp, -1040
5556f53886aSRaphael Moreira Zinsly; RV64I-NEXT:    andi sp, sp, -1024
5566f53886aSRaphael Moreira Zinsly; RV64I-NEXT:    sd zero, 0(sp)
5576f53886aSRaphael Moreira Zinsly; RV64I-NEXT:    slli a0, a0, 2
5586f53886aSRaphael Moreira Zinsly; RV64I-NEXT:    addi a1, sp, 1024
5596f53886aSRaphael Moreira Zinsly; RV64I-NEXT:    add a0, a1, a0
5606f53886aSRaphael Moreira Zinsly; RV64I-NEXT:    li a1, 1
5616f53886aSRaphael Moreira Zinsly; RV64I-NEXT:    sw a1, 0(a0)
5626f53886aSRaphael Moreira Zinsly; RV64I-NEXT:    lw a0, 1024(sp)
5636f53886aSRaphael Moreira Zinsly; RV64I-NEXT:    addi sp, s0, -2032
5646f53886aSRaphael Moreira Zinsly; RV64I-NEXT:    .cfi_def_cfa sp, 2032
5656f53886aSRaphael Moreira Zinsly; RV64I-NEXT:    ld ra, 2024(sp) # 8-byte Folded Reload
5666f53886aSRaphael Moreira Zinsly; RV64I-NEXT:    ld s0, 2016(sp) # 8-byte Folded Reload
5676f53886aSRaphael Moreira Zinsly; RV64I-NEXT:    .cfi_restore ra
5686f53886aSRaphael Moreira Zinsly; RV64I-NEXT:    .cfi_restore s0
5696f53886aSRaphael Moreira Zinsly; RV64I-NEXT:    addi sp, sp, 2032
5706f53886aSRaphael Moreira Zinsly; RV64I-NEXT:    .cfi_def_cfa_offset 0
5716f53886aSRaphael Moreira Zinsly; RV64I-NEXT:    ret
5726f53886aSRaphael Moreira Zinsly;
5736f53886aSRaphael Moreira Zinsly; RV32I-LABEL: f10:
5746f53886aSRaphael Moreira Zinsly; RV32I:       # %bb.0:
5756f53886aSRaphael Moreira Zinsly; RV32I-NEXT:    addi sp, sp, -2032
5766f53886aSRaphael Moreira Zinsly; RV32I-NEXT:    .cfi_def_cfa_offset 2032
5776f53886aSRaphael Moreira Zinsly; RV32I-NEXT:    sw ra, 2028(sp) # 4-byte Folded Spill
5786f53886aSRaphael Moreira Zinsly; RV32I-NEXT:    sw s0, 2024(sp) # 4-byte Folded Spill
5796f53886aSRaphael Moreira Zinsly; RV32I-NEXT:    .cfi_offset ra, -4
5806f53886aSRaphael Moreira Zinsly; RV32I-NEXT:    .cfi_offset s0, -8
5816f53886aSRaphael Moreira Zinsly; RV32I-NEXT:    addi s0, sp, 2032
5826f53886aSRaphael Moreira Zinsly; RV32I-NEXT:    .cfi_def_cfa s0, 0
5836f53886aSRaphael Moreira Zinsly; RV32I-NEXT:    addi sp, sp, -2048
5846f53886aSRaphael Moreira Zinsly; RV32I-NEXT:    addi sp, sp, -1040
5856f53886aSRaphael Moreira Zinsly; RV32I-NEXT:    andi sp, sp, -1024
5866f53886aSRaphael Moreira Zinsly; RV32I-NEXT:    sw zero, 0(sp)
5876f53886aSRaphael Moreira Zinsly; RV32I-NEXT:    slli a0, a0, 2
5886f53886aSRaphael Moreira Zinsly; RV32I-NEXT:    addi a1, sp, 1024
5896f53886aSRaphael Moreira Zinsly; RV32I-NEXT:    add a0, a1, a0
5906f53886aSRaphael Moreira Zinsly; RV32I-NEXT:    li a1, 1
5916f53886aSRaphael Moreira Zinsly; RV32I-NEXT:    sw a1, 0(a0)
5926f53886aSRaphael Moreira Zinsly; RV32I-NEXT:    lw a0, 1024(sp)
5936f53886aSRaphael Moreira Zinsly; RV32I-NEXT:    addi sp, s0, -2032
5946f53886aSRaphael Moreira Zinsly; RV32I-NEXT:    .cfi_def_cfa sp, 2032
5956f53886aSRaphael Moreira Zinsly; RV32I-NEXT:    lw ra, 2028(sp) # 4-byte Folded Reload
5966f53886aSRaphael Moreira Zinsly; RV32I-NEXT:    lw s0, 2024(sp) # 4-byte Folded Reload
5976f53886aSRaphael Moreira Zinsly; RV32I-NEXT:    .cfi_restore ra
5986f53886aSRaphael Moreira Zinsly; RV32I-NEXT:    .cfi_restore s0
5996f53886aSRaphael Moreira Zinsly; RV32I-NEXT:    addi sp, sp, 2032
6006f53886aSRaphael Moreira Zinsly; RV32I-NEXT:    .cfi_def_cfa_offset 0
6016f53886aSRaphael Moreira Zinsly; RV32I-NEXT:    ret
6026f53886aSRaphael Moreira Zinsly  %a = alloca i32, i32 1000, align 1024
6036f53886aSRaphael Moreira Zinsly  %b = getelementptr inbounds i32, ptr %a, i64 %i
6046f53886aSRaphael Moreira Zinsly  store volatile i32 1, ptr %b
6056f53886aSRaphael Moreira Zinsly  %c = load volatile i32, ptr %a
6066f53886aSRaphael Moreira Zinsly  ret i32 %c
6076f53886aSRaphael Moreira Zinsly}
6086f53886aSRaphael Moreira Zinsly
609*01d7f434SRaphael Moreira Zinslydefine void @f11(i32 %vla_size, i64 %i) #0 {
610*01d7f434SRaphael Moreira Zinsly; RV64I-LABEL: f11:
611*01d7f434SRaphael Moreira Zinsly; RV64I:       # %bb.0:
612*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT:    addi sp, sp, -2032
613*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT:    .cfi_def_cfa_offset 2032
614*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT:    sd zero, 0(sp)
615*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT:    sd ra, 2024(sp) # 8-byte Folded Spill
616*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT:    sd s0, 2016(sp) # 8-byte Folded Spill
617*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT:    sd s1, 2008(sp) # 8-byte Folded Spill
618*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT:    .cfi_offset ra, -8
619*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT:    .cfi_offset s0, -16
620*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT:    .cfi_offset s1, -24
621*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT:    addi s0, sp, 2032
622*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT:    .cfi_def_cfa s0, 0
623*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT:    lui a2, 15
624*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT:    sub t1, sp, a2
625*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT:    lui t2, 1
626*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT:  .LBB11_1: # =>This Inner Loop Header: Depth=1
627*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT:    sub sp, sp, t2
628*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT:    sd zero, 0(sp)
629*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT:    bne sp, t1, .LBB11_1
630*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT:  # %bb.2:
631*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT:    addi sp, sp, -2048
632*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT:    addi sp, sp, -16
633*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT:    sd zero, 0(sp)
634*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT:    srli a2, sp, 15
635*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT:    slli sp, a2, 15
636*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT:    mv s1, sp
637*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT:    slli a1, a1, 2
638*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT:    lui a2, 8
639*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT:    add a2, s1, a2
640*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT:    add a1, a2, a1
641*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT:    li a2, 1
642*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT:    slli a0, a0, 32
643*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT:    srli a0, a0, 32
644*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT:    sw a2, 0(a1)
645*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT:    addi a0, a0, 15
646*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT:    andi a0, a0, -16
647*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT:    sub a0, sp, a0
648*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT:    andi a0, a0, -2048
649*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT:    lui a1, 1
650*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT:  .LBB11_3: # =>This Inner Loop Header: Depth=1
651*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT:    sub sp, sp, a1
652*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT:    sd zero, 0(sp)
653*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT:    blt a0, sp, .LBB11_3
654*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT:  # %bb.4:
655*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT:    mv sp, a0
656*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT:    lbu zero, 0(a0)
657*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT:    addi sp, s0, -2032
658*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT:    .cfi_def_cfa sp, 2032
659*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT:    ld ra, 2024(sp) # 8-byte Folded Reload
660*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT:    ld s0, 2016(sp) # 8-byte Folded Reload
661*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT:    ld s1, 2008(sp) # 8-byte Folded Reload
662*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT:    .cfi_restore ra
663*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT:    .cfi_restore s0
664*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT:    .cfi_restore s1
665*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT:    addi sp, sp, 2032
666*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT:    .cfi_def_cfa_offset 0
667*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT:    ret
668*01d7f434SRaphael Moreira Zinsly;
669*01d7f434SRaphael Moreira Zinsly; RV32I-LABEL: f11:
670*01d7f434SRaphael Moreira Zinsly; RV32I:       # %bb.0:
671*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT:    addi sp, sp, -2032
672*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT:    .cfi_def_cfa_offset 2032
673*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT:    sw zero, 0(sp)
674*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT:    sw ra, 2028(sp) # 4-byte Folded Spill
675*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT:    sw s0, 2024(sp) # 4-byte Folded Spill
676*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT:    sw s1, 2020(sp) # 4-byte Folded Spill
677*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT:    .cfi_offset ra, -4
678*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT:    .cfi_offset s0, -8
679*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT:    .cfi_offset s1, -12
680*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT:    addi s0, sp, 2032
681*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT:    .cfi_def_cfa s0, 0
682*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT:    lui a2, 15
683*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT:    sub t1, sp, a2
684*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT:    lui t2, 1
685*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT:  .LBB11_1: # =>This Inner Loop Header: Depth=1
686*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT:    sub sp, sp, t2
687*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT:    sw zero, 0(sp)
688*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT:    bne sp, t1, .LBB11_1
689*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT:  # %bb.2:
690*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT:    addi sp, sp, -2048
691*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT:    addi sp, sp, -16
692*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT:    sw zero, 0(sp)
693*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT:    srli a2, sp, 15
694*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT:    slli sp, a2, 15
695*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT:    mv s1, sp
696*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT:    slli a1, a1, 2
697*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT:    lui a2, 8
698*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT:    add a2, s1, a2
699*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT:    add a1, a2, a1
700*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT:    li a2, 1
701*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT:    addi a0, a0, 15
702*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT:    andi a0, a0, -16
703*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT:    sw a2, 0(a1)
704*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT:    sub a0, sp, a0
705*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT:    andi a0, a0, -2048
706*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT:    lui a1, 1
707*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT:  .LBB11_3: # =>This Inner Loop Header: Depth=1
708*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT:    sub sp, sp, a1
709*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT:    sw zero, 0(sp)
710*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT:    blt a0, sp, .LBB11_3
711*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT:  # %bb.4:
712*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT:    mv sp, a0
713*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT:    lbu zero, 0(a0)
714*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT:    addi sp, s0, -2032
715*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT:    .cfi_def_cfa sp, 2032
716*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT:    lw ra, 2028(sp) # 4-byte Folded Reload
717*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT:    lw s0, 2024(sp) # 4-byte Folded Reload
718*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT:    lw s1, 2020(sp) # 4-byte Folded Reload
719*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT:    .cfi_restore ra
720*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT:    .cfi_restore s0
721*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT:    .cfi_restore s1
722*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT:    addi sp, sp, 2032
723*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT:    .cfi_def_cfa_offset 0
724*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT:    ret
725*01d7f434SRaphael Moreira Zinsly  %a = alloca i32, i32 4096, align 32768
726*01d7f434SRaphael Moreira Zinsly  %b = getelementptr inbounds i32, ptr %a, i64 %i
727*01d7f434SRaphael Moreira Zinsly  store volatile i32 1, ptr %b
728*01d7f434SRaphael Moreira Zinsly  %1 = zext i32 %vla_size to i64
729*01d7f434SRaphael Moreira Zinsly  %vla = alloca i8, i64 %1, align 2048
730*01d7f434SRaphael Moreira Zinsly  %2 = load volatile i8, ptr %vla, align 2048
731*01d7f434SRaphael Moreira Zinsly  ret void
732*01d7f434SRaphael Moreira Zinsly}
733*01d7f434SRaphael Moreira Zinsly
734708a478dSRaphael Moreira Zinslyattributes #0 = { "probe-stack"="inline-asm" }
735