xref: /llvm-project/llvm/test/CodeGen/RISCV/stack-clash-prologue-nounwind.ll (revision c835b48a4d72227b174bcd86f071238a1583803a)
1708a478dSRaphael Moreira Zinsly; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2*c835b48aSCraig Topper; RUN: llc -mtriple=riscv64 -mattr=+m -O2 < %s -verify-machineinstrs \
3708a478dSRaphael Moreira Zinsly; RUN:   | FileCheck %s -check-prefix=RV64I
4*c835b48aSCraig Topper; RUN: llc -mtriple=riscv32 -mattr=+m -O2 < %s -verify-machineinstrs \
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 nounwind {
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:    li a0, 3
15708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    sb a0, 0(sp)
16708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    lbu a0, 0(sp)
17708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    addi sp, sp, 64
18708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    ret
19708a478dSRaphael Moreira Zinsly;
20708a478dSRaphael Moreira Zinsly; RV32I-LABEL: f0:
21708a478dSRaphael Moreira Zinsly; RV32I:       # %bb.0: # %entry
22708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    addi sp, sp, -64
23708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    li a0, 3
24708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    sb a0, 0(sp)
25708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    lbu a0, 0(sp)
26708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    addi sp, sp, 64
27708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    ret
28708a478dSRaphael Moreira Zinslyentry:
29708a478dSRaphael Moreira Zinsly  %a = alloca i8, i64 64
30708a478dSRaphael Moreira Zinsly  %b = getelementptr inbounds i8, ptr %a, i64 63
31708a478dSRaphael Moreira Zinsly  store volatile i8 3, ptr %a
32708a478dSRaphael Moreira Zinsly  %c = load volatile i8, ptr %a
33708a478dSRaphael Moreira Zinsly  ret i8 %c
34708a478dSRaphael Moreira Zinsly}
35708a478dSRaphael Moreira Zinsly
36708a478dSRaphael Moreira Zinslydefine i8 @f1() #0 nounwind {
37708a478dSRaphael Moreira Zinsly; RV64I-LABEL: f1:
38708a478dSRaphael Moreira Zinsly; RV64I:       # %bb.0: # %entry
39708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    lui a0, 1
40708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    sub sp, sp, a0
41708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    sd zero, 0(sp)
42708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    addi sp, sp, -16
43708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    li a0, 3
44708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    sb a0, 16(sp)
45708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    lbu a0, 16(sp)
46708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    lui a1, 1
47708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    addiw a1, a1, 16
48708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    add sp, sp, a1
49708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    ret
50708a478dSRaphael Moreira Zinsly;
51708a478dSRaphael Moreira Zinsly; RV32I-LABEL: f1:
52708a478dSRaphael Moreira Zinsly; RV32I:       # %bb.0: # %entry
53708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    lui a0, 1
54708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    sub sp, sp, a0
55708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    sw zero, 0(sp)
56708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    addi sp, sp, -16
57708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    li a0, 3
58708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    sb a0, 16(sp)
59708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    lbu a0, 16(sp)
60708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    lui a1, 1
61708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    addi a1, a1, 16
62708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    add sp, sp, a1
63708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    ret
64708a478dSRaphael Moreira Zinslyentry:
65708a478dSRaphael Moreira Zinsly  %a = alloca i8, i64 4096
66708a478dSRaphael Moreira Zinsly  %b = getelementptr inbounds i8, ptr %a, i64 63
67708a478dSRaphael Moreira Zinsly  store volatile i8 3, ptr %a
68708a478dSRaphael Moreira Zinsly  %c = load volatile i8, ptr %a
69708a478dSRaphael Moreira Zinsly  ret i8 %c
70708a478dSRaphael Moreira Zinsly}
71708a478dSRaphael Moreira Zinsly
72708a478dSRaphael Moreira Zinslydefine i8 @f2() #0 nounwind {
73708a478dSRaphael Moreira Zinsly; RV64I-LABEL: f2:
74708a478dSRaphael Moreira Zinsly; RV64I:       # %bb.0: # %entry
75708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    lui a0, 16
76708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    sub t1, sp, a0
77708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    lui t2, 1
78708a478dSRaphael Moreira Zinsly; RV64I-NEXT:  .LBB2_1: # %entry
79708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    # =>This Inner Loop Header: Depth=1
80708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    sub sp, sp, t2
81708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    sd zero, 0(sp)
82708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    bne sp, t1, .LBB2_1
83708a478dSRaphael Moreira Zinsly; RV64I-NEXT:  # %bb.2: # %entry
84708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    addi sp, sp, -16
85708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    li a0, 3
86708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    sb a0, 16(sp)
87708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    lbu a0, 16(sp)
88708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    lui a1, 16
89708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    addiw a1, a1, 16
90708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    add sp, sp, a1
91708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    ret
92708a478dSRaphael Moreira Zinsly;
93708a478dSRaphael Moreira Zinsly; RV32I-LABEL: f2:
94708a478dSRaphael Moreira Zinsly; RV32I:       # %bb.0: # %entry
95708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    lui a0, 16
96708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    sub t1, sp, a0
97708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    lui t2, 1
98708a478dSRaphael Moreira Zinsly; RV32I-NEXT:  .LBB2_1: # %entry
99708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    # =>This Inner Loop Header: Depth=1
100708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    sub sp, sp, t2
101708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    sw zero, 0(sp)
102708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    bne sp, t1, .LBB2_1
103708a478dSRaphael Moreira Zinsly; RV32I-NEXT:  # %bb.2: # %entry
104708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    addi sp, sp, -16
105708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    li a0, 3
106708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    sb a0, 16(sp)
107708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    lbu a0, 16(sp)
108708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    lui a1, 16
109708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    addi a1, a1, 16
110708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    add sp, sp, a1
111708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    ret
112708a478dSRaphael Moreira Zinslyentry:
113708a478dSRaphael Moreira Zinsly  %a = alloca i8, i64 65536
114708a478dSRaphael Moreira Zinsly  %b = getelementptr inbounds i8, ptr %a, i64 63
115708a478dSRaphael Moreira Zinsly  store volatile i8 3, ptr %a
116708a478dSRaphael Moreira Zinsly  %c = load volatile i8, ptr %a
117708a478dSRaphael Moreira Zinsly  ret i8 %c
118708a478dSRaphael Moreira Zinsly}
119708a478dSRaphael Moreira Zinsly
120708a478dSRaphael Moreira Zinslydefine i8 @f3() #0 "stack-probe-size"="32768" nounwind {
121708a478dSRaphael Moreira Zinsly; RV64I-LABEL: f3:
122708a478dSRaphael Moreira Zinsly; RV64I:       # %bb.0: # %entry
123708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    lui a0, 8
124708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    sub sp, sp, a0
125708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    sd zero, 0(sp)
126708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    lui a0, 8
127708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    sub sp, sp, a0
128708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    sd zero, 0(sp)
129708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    addi sp, sp, -16
130708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    li a0, 3
131708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    sb a0, 16(sp)
132708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    lbu a0, 16(sp)
133708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    lui a1, 16
134708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    addiw a1, a1, 16
135708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    add sp, sp, a1
136708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    ret
137708a478dSRaphael Moreira Zinsly;
138708a478dSRaphael Moreira Zinsly; RV32I-LABEL: f3:
139708a478dSRaphael Moreira Zinsly; RV32I:       # %bb.0: # %entry
140708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    lui a0, 8
141708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    sub sp, sp, a0
142708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    sw zero, 0(sp)
143708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    lui a0, 8
144708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    sub sp, sp, a0
145708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    sw zero, 0(sp)
146708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    addi sp, sp, -16
147708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    li a0, 3
148708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    sb a0, 16(sp)
149708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    lbu a0, 16(sp)
150708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    lui a1, 16
151708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    addi a1, a1, 16
152708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    add sp, sp, a1
153708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    ret
154708a478dSRaphael Moreira Zinslyentry:
155708a478dSRaphael Moreira Zinsly  %a = alloca i8, i64 65536
156708a478dSRaphael Moreira Zinsly  %b = getelementptr inbounds i8, ptr %a, i64 63
157708a478dSRaphael Moreira Zinsly  store volatile i8 3, ptr %a
158708a478dSRaphael Moreira Zinsly  %c = load volatile i8, ptr %a
159708a478dSRaphael Moreira Zinsly  ret i8 %c
160708a478dSRaphael Moreira Zinsly}
161708a478dSRaphael Moreira Zinsly
162708a478dSRaphael Moreira Zinsly; Same as f2, but without protection.
163708a478dSRaphael Moreira Zinslydefine i8 @f4() nounwind {
164708a478dSRaphael Moreira Zinsly; RV64I-LABEL: f4:
165708a478dSRaphael Moreira Zinsly; RV64I:       # %bb.0: # %entry
166708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    lui a0, 16
167708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    addiw a0, a0, 16
168708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    sub sp, sp, a0
169708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    li a0, 3
170708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    sb a0, 16(sp)
171708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    lbu a0, 16(sp)
172708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    lui a1, 16
173708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    addiw a1, a1, 16
174708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    add sp, sp, a1
175708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    ret
176708a478dSRaphael Moreira Zinsly;
177708a478dSRaphael Moreira Zinsly; RV32I-LABEL: f4:
178708a478dSRaphael Moreira Zinsly; RV32I:       # %bb.0: # %entry
179708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    lui a0, 16
180708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    addi a0, a0, 16
181708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    sub sp, sp, a0
182708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    li a0, 3
183708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    sb a0, 16(sp)
184708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    lbu a0, 16(sp)
185708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    lui a1, 16
186708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    addi a1, a1, 16
187708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    add sp, sp, a1
188708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    ret
189708a478dSRaphael Moreira Zinslyentry:
190708a478dSRaphael Moreira Zinsly  %a = alloca i8, i64 65536
191708a478dSRaphael Moreira Zinsly  %b = getelementptr inbounds i8, ptr %a, i64 63
192708a478dSRaphael Moreira Zinsly  store volatile i8 3, ptr %a
193708a478dSRaphael Moreira Zinsly  %c = load volatile i8, ptr %a
194708a478dSRaphael Moreira Zinsly  ret i8 %c
195708a478dSRaphael Moreira Zinsly}
196708a478dSRaphael Moreira Zinsly
197708a478dSRaphael Moreira Zinslydefine i8 @f5() #0 "stack-probe-size"="65536" nounwind {
198708a478dSRaphael Moreira Zinsly; RV64I-LABEL: f5:
199708a478dSRaphael Moreira Zinsly; RV64I:       # %bb.0: # %entry
200708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    lui a0, 256
201708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    sub t1, sp, a0
202708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    lui t2, 16
203708a478dSRaphael Moreira Zinsly; RV64I-NEXT:  .LBB5_1: # %entry
204708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    # =>This Inner Loop Header: Depth=1
205708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    sub sp, sp, t2
206708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    sd zero, 0(sp)
207708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    bne sp, t1, .LBB5_1
208708a478dSRaphael Moreira Zinsly; RV64I-NEXT:  # %bb.2: # %entry
209708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    addi sp, sp, -16
210708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    li a0, 3
211708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    sb a0, 16(sp)
212708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    lbu a0, 16(sp)
213708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    lui a1, 256
214708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    addiw a1, a1, 16
215708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    add sp, sp, a1
216708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    ret
217708a478dSRaphael Moreira Zinsly;
218708a478dSRaphael Moreira Zinsly; RV32I-LABEL: f5:
219708a478dSRaphael Moreira Zinsly; RV32I:       # %bb.0: # %entry
220708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    lui a0, 256
221708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    sub t1, sp, a0
222708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    lui t2, 16
223708a478dSRaphael Moreira Zinsly; RV32I-NEXT:  .LBB5_1: # %entry
224708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    # =>This Inner Loop Header: Depth=1
225708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    sub sp, sp, t2
226708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    sw zero, 0(sp)
227708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    bne sp, t1, .LBB5_1
228708a478dSRaphael Moreira Zinsly; RV32I-NEXT:  # %bb.2: # %entry
229708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    addi sp, sp, -16
230708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    li a0, 3
231708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    sb a0, 16(sp)
232708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    lbu a0, 16(sp)
233708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    lui a1, 256
234708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    addi a1, a1, 16
235708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    add sp, sp, a1
236708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    ret
237708a478dSRaphael Moreira Zinslyentry:
238708a478dSRaphael Moreira Zinsly  %a = alloca i8, i64 1048576
239708a478dSRaphael Moreira Zinsly  %b = getelementptr inbounds i8, ptr %a, i64 63
240708a478dSRaphael Moreira Zinsly  store volatile i8 3, ptr %a
241708a478dSRaphael Moreira Zinsly  %c = load volatile i8, ptr %a
242708a478dSRaphael Moreira Zinsly  ret i8 %c
243708a478dSRaphael Moreira Zinsly}
244708a478dSRaphael Moreira Zinsly
245708a478dSRaphael Moreira Zinslydefine i8 @f6() #0 nounwind {
246708a478dSRaphael Moreira Zinsly; RV64I-LABEL: f6:
247708a478dSRaphael Moreira Zinsly; RV64I:       # %bb.0: # %entry
248708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    lui a0, 262144
249708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    sub t1, sp, a0
250708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    lui t2, 1
251708a478dSRaphael Moreira Zinsly; RV64I-NEXT:  .LBB6_1: # %entry
252708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    # =>This Inner Loop Header: Depth=1
253708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    sub sp, sp, t2
254708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    sd zero, 0(sp)
255708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    bne sp, t1, .LBB6_1
256708a478dSRaphael Moreira Zinsly; RV64I-NEXT:  # %bb.2: # %entry
257708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    addi sp, sp, -16
258708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    li a0, 3
259708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    sb a0, 16(sp)
260708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    lbu a0, 16(sp)
261708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    lui a1, 262144
262708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    addiw a1, a1, 16
263708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    add sp, sp, a1
264708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    ret
265708a478dSRaphael Moreira Zinsly;
266708a478dSRaphael Moreira Zinsly; RV32I-LABEL: f6:
267708a478dSRaphael Moreira Zinsly; RV32I:       # %bb.0: # %entry
268708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    lui a0, 262144
269708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    sub t1, sp, a0
270708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    lui t2, 1
271708a478dSRaphael Moreira Zinsly; RV32I-NEXT:  .LBB6_1: # %entry
272708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    # =>This Inner Loop Header: Depth=1
273708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    sub sp, sp, t2
274708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    sw zero, 0(sp)
275708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    bne sp, t1, .LBB6_1
276708a478dSRaphael Moreira Zinsly; RV32I-NEXT:  # %bb.2: # %entry
277708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    addi sp, sp, -16
278708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    li a0, 3
279708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    sb a0, 16(sp)
280708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    lbu a0, 16(sp)
281708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    lui a1, 262144
282708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    addi a1, a1, 16
283708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    add sp, sp, a1
284708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    ret
285708a478dSRaphael Moreira Zinslyentry:
286708a478dSRaphael Moreira Zinsly  %a = alloca i8, i64 1073741824
287708a478dSRaphael Moreira Zinsly  %b = getelementptr inbounds i8, ptr %a, i64 63
288708a478dSRaphael Moreira Zinsly  store volatile i8 3, ptr %a
289708a478dSRaphael Moreira Zinsly  %c = load volatile i8, ptr %a
290708a478dSRaphael Moreira Zinsly  ret i8 %c
291708a478dSRaphael Moreira Zinsly}
292708a478dSRaphael Moreira Zinsly
293708a478dSRaphael Moreira Zinslydefine i8 @f7() #0 "stack-probe-size"="65536" nounwind {
294708a478dSRaphael Moreira Zinsly; RV64I-LABEL: f7:
295708a478dSRaphael Moreira Zinsly; RV64I:       # %bb.0: # %entry
296708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    lui a0, 244128
297708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    sub t1, sp, a0
298708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    lui t2, 16
299708a478dSRaphael Moreira Zinsly; RV64I-NEXT:  .LBB7_1: # %entry
300708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    # =>This Inner Loop Header: Depth=1
301708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    sub sp, sp, t2
302708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    sd zero, 0(sp)
303708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    bne sp, t1, .LBB7_1
304708a478dSRaphael Moreira Zinsly; RV64I-NEXT:  # %bb.2: # %entry
305708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    lui a0, 13
306708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    addiw a0, a0, -1520
307708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    sub sp, sp, a0
308708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    li a0, 3
309708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    sb a0, 9(sp)
310708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    lbu a0, 9(sp)
311708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    lui a1, 244141
312708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    addiw a1, a1, -1520
313708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    add sp, sp, a1
314708a478dSRaphael Moreira Zinsly; RV64I-NEXT:    ret
315708a478dSRaphael Moreira Zinsly;
316708a478dSRaphael Moreira Zinsly; RV32I-LABEL: f7:
317708a478dSRaphael Moreira Zinsly; RV32I:       # %bb.0: # %entry
318708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    lui a0, 244128
319708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    sub t1, sp, a0
320708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    lui t2, 16
321708a478dSRaphael Moreira Zinsly; RV32I-NEXT:  .LBB7_1: # %entry
322708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    # =>This Inner Loop Header: Depth=1
323708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    sub sp, sp, t2
324708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    sw zero, 0(sp)
325708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    bne sp, t1, .LBB7_1
326708a478dSRaphael Moreira Zinsly; RV32I-NEXT:  # %bb.2: # %entry
327708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    lui a0, 13
328708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    addi a0, a0, -1520
329708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    sub sp, sp, a0
330708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    li a0, 3
331708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    sb a0, 9(sp)
332708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    lbu a0, 9(sp)
333708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    lui a1, 244141
334708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    addi a1, a1, -1520
335708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    add sp, sp, a1
336708a478dSRaphael Moreira Zinsly; RV32I-NEXT:    ret
337708a478dSRaphael Moreira Zinslyentry:
338708a478dSRaphael Moreira Zinsly  %a = alloca i8, i64 1000000007
339708a478dSRaphael Moreira Zinsly  %b = getelementptr inbounds i8, ptr %a, i64 101
340708a478dSRaphael Moreira Zinsly  store volatile i8 3, ptr %a
341708a478dSRaphael Moreira Zinsly  %c = load volatile i8, ptr %a
342708a478dSRaphael Moreira Zinsly  ret i8 %c
343708a478dSRaphael Moreira Zinsly}
344708a478dSRaphael Moreira Zinsly
345708a478dSRaphael Moreira Zinslyattributes #0 = { "probe-stack"="inline-asm" }
346