1
1
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2
- ; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z14 -O3 | FileCheck %s
2
+ ; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z14 -O3 -verify-machineinstrs | FileCheck %s
3
3
;
4
4
; Test stack clash protection probing for static allocas.
5
5
@@ -48,14 +48,14 @@ define i32 @fun1() #0 {
48
48
define i32 @fun2 () #0 {
49
49
; CHECK-LABEL: fun2:
50
50
; CHECK: # %bb.0:
51
- ; CHECK-NEXT: lgr %r1 , %r15
52
- ; CHECK-NEXT: .cfi_def_cfa_register %r1
53
- ; CHECK-NEXT: agfi %r1 , -69632
51
+ ; CHECK-NEXT: lgr %r0 , %r15
52
+ ; CHECK-NEXT: .cfi_def_cfa_register %r0
53
+ ; CHECK-NEXT: agfi %r0 , -69632
54
54
; CHECK-NEXT: .cfi_def_cfa_offset 69792
55
55
; CHECK-NEXT: .LBB2_1: # =>This Inner Loop Header: Depth=1
56
56
; CHECK-NEXT: aghi %r15, -4096
57
57
; CHECK-NEXT: cg %r0, 4088(%r15)
58
- ; CHECK-NEXT: clgrjh %r15, %r1 , .LBB2_1
58
+ ; CHECK-NEXT: clgrjh %r15, %r0 , .LBB2_1
59
59
; CHECK-NEXT: # %bb.2:
60
60
; CHECK-NEXT: .cfi_def_cfa_register %r15
61
61
; CHECK-NEXT: aghi %r15, -2544
@@ -81,15 +81,15 @@ define i32 @fun2() #0 {
81
81
define void @fun3 () #0 {
82
82
; CHECK-LABEL: fun3:
83
83
; CHECK: # %bb.0: # %entry
84
- ; CHECK-NEXT: lgr %r1 , %r15
85
- ; CHECK-NEXT: .cfi_def_cfa_register %r1
86
- ; CHECK-NEXT: aghi %r1 , -28672
84
+ ; CHECK-NEXT: lgr %r0 , %r15
85
+ ; CHECK-NEXT: .cfi_def_cfa_register %r0
86
+ ; CHECK-NEXT: aghi %r0 , -28672
87
87
; CHECK-NEXT: .cfi_def_cfa_offset 28832
88
88
; CHECK-NEXT: .LBB3_1: # %entry
89
89
; CHECK-NEXT: # =>This Inner Loop Header: Depth=1
90
90
; CHECK-NEXT: aghi %r15, -4096
91
91
; CHECK-NEXT: cg %r0, 4088(%r15)
92
- ; CHECK-NEXT: clgrjh %r15, %r1 , .LBB3_1
92
+ ; CHECK-NEXT: clgrjh %r15, %r0 , .LBB3_1
93
93
; CHECK-NEXT: # %bb.2: # %entry
94
94
; CHECK-NEXT: .cfi_def_cfa_register %r15
95
95
; CHECK-NEXT: mvhi 180(%r15), 0
@@ -110,15 +110,15 @@ entry:
110
110
define void @fun4 () #0 "stack-probe-size" ="8192" {
111
111
; CHECK-LABEL: fun4:
112
112
; CHECK: # %bb.0: # %entry
113
- ; CHECK-NEXT: lgr %r1 , %r15
114
- ; CHECK-NEXT: .cfi_def_cfa_register %r1
115
- ; CHECK-NEXT: aghi %r1 , -24576
113
+ ; CHECK-NEXT: lgr %r0 , %r15
114
+ ; CHECK-NEXT: .cfi_def_cfa_register %r0
115
+ ; CHECK-NEXT: aghi %r0 , -24576
116
116
; CHECK-NEXT: .cfi_def_cfa_offset 24736
117
117
; CHECK-NEXT: .LBB4_1: # %entry
118
118
; CHECK-NEXT: # =>This Inner Loop Header: Depth=1
119
119
; CHECK-NEXT: aghi %r15, -8192
120
120
; CHECK-NEXT: cg %r0, 8184(%r15)
121
- ; CHECK-NEXT: clgrjh %r15, %r1 , .LBB4_1
121
+ ; CHECK-NEXT: clgrjh %r15, %r0 , .LBB4_1
122
122
; CHECK-NEXT: # %bb.2: # %entry
123
123
; CHECK-NEXT: .cfi_def_cfa_register %r15
124
124
; CHECK-NEXT: aghi %r15, -7608
@@ -166,15 +166,15 @@ entry:
166
166
define void @fun6 () #0 "stack-probe-size" ="5" {
167
167
; CHECK-LABEL: fun6:
168
168
; CHECK: # %bb.0: # %entry
169
- ; CHECK-NEXT: lgr %r1 , %r15
170
- ; CHECK-NEXT: .cfi_def_cfa_register %r1
171
- ; CHECK-NEXT: aghi %r1 , -4184
169
+ ; CHECK-NEXT: lgr %r0 , %r15
170
+ ; CHECK-NEXT: .cfi_def_cfa_register %r0
171
+ ; CHECK-NEXT: aghi %r0 , -4184
172
172
; CHECK-NEXT: .cfi_def_cfa_offset 4344
173
173
; CHECK-NEXT: .LBB6_1: # %entry
174
174
; CHECK-NEXT: # =>This Inner Loop Header: Depth=1
175
175
; CHECK-NEXT: aghi %r15, -8
176
176
; CHECK-NEXT: cg %r0, 0(%r15)
177
- ; CHECK-NEXT: clgrjh %r15, %r1 , .LBB6_1
177
+ ; CHECK-NEXT: clgrjh %r15, %r0 , .LBB6_1
178
178
; CHECK-NEXT: # %bb.2: # %entry
179
179
; CHECK-NEXT: .cfi_def_cfa_register %r15
180
180
; CHECK-NEXT: mvhi 180(%r15), 0
@@ -237,6 +237,37 @@ define i32 @fun8() #0 {
237
237
ret i32 %c
238
238
}
239
239
240
+ define void @fun9 () #0 "backchain" {
241
+ ; CHECK-LABEL: fun9:
242
+ ; CHECK: # %bb.0: # %entry
243
+ ; CHECK-NEXT: lgr %r1, %r15
244
+ ; CHECK-NEXT: lgr %r0, %r15
245
+ ; CHECK-NEXT: .cfi_def_cfa_register %r0
246
+ ; CHECK-NEXT: aghi %r0, -28672
247
+ ; CHECK-NEXT: .cfi_def_cfa_offset 28832
248
+ ; CHECK-NEXT: .LBB9_1: # %entry
249
+ ; CHECK-NEXT: # =>This Inner Loop Header: Depth=1
250
+ ; CHECK-NEXT: aghi %r15, -4096
251
+ ; CHECK-NEXT: cg %r0, 4088(%r15)
252
+ ; CHECK-NEXT: clgrjh %r15, %r0, .LBB9_1
253
+ ; CHECK-NEXT: # %bb.2: # %entry
254
+ ; CHECK-NEXT: .cfi_def_cfa_register %r15
255
+ ; CHECK-NEXT: stg %r1, 0(%r15)
256
+ ; CHECK-NEXT: mvhi 180(%r15), 0
257
+ ; CHECK-NEXT: l %r0, 180(%r15)
258
+ ; CHECK-NEXT: aghi %r15, 28672
259
+ ; CHECK-NEXT: br %r14
260
+ entry:
261
+ %stack = alloca [7122 x i32 ], align 4
262
+ %i = alloca i32 , align 4
263
+ %0 = bitcast [7122 x i32 ]* %stack to i8*
264
+ %i.0.i.0..sroa_cast = bitcast i32* %i to i8*
265
+ store volatile i32 0 , i32* %i , align 4
266
+ %i.0.i.0.6 = load volatile i32 , i32* %i , align 4
267
+ ret void
268
+ }
269
+
270
+
240
271
declare i32 @foo ()
241
272
attributes #0 = { "probe-stack" ="inline-asm" }
242
273
0 commit comments