146f83caeSJonas Paulsson; RUN: llc -mtriple=s390x-linux-gnu < %s | FileCheck %s
246f83caeSJonas Paulsson
346f83caeSJonas Paulsson@Addr = global i64 0, align 8
446f83caeSJonas Paulsson@A = global i64* null, align 8
546f83caeSJonas Paulsson@Idx = global i64 0, align 8
646f83caeSJonas Paulsson
7*4aa5dc15SJonas Paulssondefine i64 @fun_BD12_Q() {
8*4aa5dc15SJonas Paulsson; CHECK-LABEL: fun_BD12_Q:
9*4aa5dc15SJonas Paulsson; CHECK: #APP
10*4aa5dc15SJonas Paulsson; CHECK: lay	%r2, 800(%r1)
11*4aa5dc15SJonas Paulssonentry:
12*4aa5dc15SJonas Paulsson  %0 = load i64*, i64** @A
13*4aa5dc15SJonas Paulsson  %arrayidx = getelementptr inbounds i64, i64* %0, i64 100
14*4aa5dc15SJonas Paulsson  %1 = tail call i64 asm "lay $0, $1", "=r,^ZQ"(i64* nonnull %arrayidx)
15*4aa5dc15SJonas Paulsson  store i64 %1, i64* @Addr
16*4aa5dc15SJonas Paulsson  ret i64 %1
17*4aa5dc15SJonas Paulsson}
18*4aa5dc15SJonas Paulsson
19*4aa5dc15SJonas Paulssondefine i64 @fun_BD12_R() {
20*4aa5dc15SJonas Paulsson; CHECK-LABEL: fun_BD12_R:
21*4aa5dc15SJonas Paulsson; CHECK: #APP
22*4aa5dc15SJonas Paulsson; CHECK: lay	%r2, 800(%r1)
23*4aa5dc15SJonas Paulssonentry:
24*4aa5dc15SJonas Paulsson  %0 = load i64*, i64** @A
25*4aa5dc15SJonas Paulsson  %arrayidx = getelementptr inbounds i64, i64* %0, i64 100
26*4aa5dc15SJonas Paulsson  %1 = tail call i64 asm "lay $0, $1", "=r,^ZR"(i64* nonnull %arrayidx)
27*4aa5dc15SJonas Paulsson  store i64 %1, i64* @Addr
28*4aa5dc15SJonas Paulsson  ret i64 %1
29*4aa5dc15SJonas Paulsson}
30*4aa5dc15SJonas Paulsson
31*4aa5dc15SJonas Paulssondefine i64 @fun_BD12_S() {
32*4aa5dc15SJonas Paulsson; CHECK-LABEL: fun_BD12_S:
33*4aa5dc15SJonas Paulsson; CHECK: #APP
34*4aa5dc15SJonas Paulsson; CHECK: lay	%r2, 800(%r1)
35*4aa5dc15SJonas Paulssonentry:
36*4aa5dc15SJonas Paulsson  %0 = load i64*, i64** @A
37*4aa5dc15SJonas Paulsson  %arrayidx = getelementptr inbounds i64, i64* %0, i64 100
38*4aa5dc15SJonas Paulsson  %1 = tail call i64 asm "lay $0, $1", "=r,^ZS"(i64* nonnull %arrayidx)
39*4aa5dc15SJonas Paulsson  store i64 %1, i64* @Addr
40*4aa5dc15SJonas Paulsson  ret i64 %1
41*4aa5dc15SJonas Paulsson}
42*4aa5dc15SJonas Paulsson
43*4aa5dc15SJonas Paulssondefine i64 @fun_BD12_T() {
44*4aa5dc15SJonas Paulsson; CHECK-LABEL: fun_BD12_T:
45*4aa5dc15SJonas Paulsson; CHECK: #APP
46*4aa5dc15SJonas Paulsson; CHECK: lay	%r2, 800(%r1)
47*4aa5dc15SJonas Paulssonentry:
48*4aa5dc15SJonas Paulsson  %0 = load i64*, i64** @A
49*4aa5dc15SJonas Paulsson  %arrayidx = getelementptr inbounds i64, i64* %0, i64 100
50*4aa5dc15SJonas Paulsson  %1 = tail call i64 asm "lay $0, $1", "=r,^ZT"(i64* nonnull %arrayidx)
51*4aa5dc15SJonas Paulsson  store i64 %1, i64* @Addr
52*4aa5dc15SJonas Paulsson  ret i64 %1
53*4aa5dc15SJonas Paulsson}
54*4aa5dc15SJonas Paulsson
5546f83caeSJonas Paulssondefine i64 @fun_BD12_p() {
5646f83caeSJonas Paulsson; CHECK-LABEL: fun_BD12_p:
5746f83caeSJonas Paulsson; CHECK: #APP
5846f83caeSJonas Paulsson; CHECK: lay	%r2, 800(%r1)
5946f83caeSJonas Paulssonentry:
6046f83caeSJonas Paulsson  %0 = load i64*, i64** @A
6146f83caeSJonas Paulsson  %arrayidx = getelementptr inbounds i64, i64* %0, i64 100
6246f83caeSJonas Paulsson  %1 = tail call i64 asm "lay $0, $1", "=r,p"(i64* nonnull %arrayidx)
6346f83caeSJonas Paulsson  store i64 %1, i64* @Addr
6446f83caeSJonas Paulsson  ret i64 %1
6546f83caeSJonas Paulsson}
6646f83caeSJonas Paulsson
67*4aa5dc15SJonas Paulssondefine i64 @fun_BDX12_Q() {
68*4aa5dc15SJonas Paulsson; CHECK-LABEL: fun_BDX12_Q:
69*4aa5dc15SJonas Paulsson; CHECK: #APP
70*4aa5dc15SJonas Paulsson; CHECK: lay	%r2, 800(%r2)
71*4aa5dc15SJonas Paulssonentry:
72*4aa5dc15SJonas Paulsson  %0 = load i64*, i64** @A
73*4aa5dc15SJonas Paulsson  %1 = load i64, i64* @Idx
74*4aa5dc15SJonas Paulsson  %add = add nsw i64 %1, 100
75*4aa5dc15SJonas Paulsson  %arrayidx = getelementptr inbounds i64, i64* %0, i64 %add
76*4aa5dc15SJonas Paulsson  %2 = tail call i64 asm "lay $0, $1", "=r,^ZQ"(i64* %arrayidx)
77*4aa5dc15SJonas Paulsson  store i64 %2, i64* @Addr
78*4aa5dc15SJonas Paulsson  ret i64 %2
79*4aa5dc15SJonas Paulsson}
80*4aa5dc15SJonas Paulsson
81*4aa5dc15SJonas Paulssondefine i64 @fun_BDX12_R() {
82*4aa5dc15SJonas Paulsson; CHECK-LABEL: fun_BDX12_R:
83*4aa5dc15SJonas Paulsson; CHECK: #APP
84*4aa5dc15SJonas Paulsson; CHECK: lay	%r2, 800(%r1,%r2)
85*4aa5dc15SJonas Paulssonentry:
86*4aa5dc15SJonas Paulsson  %0 = load i64*, i64** @A
87*4aa5dc15SJonas Paulsson  %1 = load i64, i64* @Idx
88*4aa5dc15SJonas Paulsson  %add = add nsw i64 %1, 100
89*4aa5dc15SJonas Paulsson  %arrayidx = getelementptr inbounds i64, i64* %0, i64 %add
90*4aa5dc15SJonas Paulsson  %2 = tail call i64 asm "lay $0, $1", "=r,^ZR"(i64* %arrayidx)
91*4aa5dc15SJonas Paulsson  store i64 %2, i64* @Addr
92*4aa5dc15SJonas Paulsson  ret i64 %2
93*4aa5dc15SJonas Paulsson}
94*4aa5dc15SJonas Paulsson
95*4aa5dc15SJonas Paulssondefine i64 @fun_BDX12_S() {
96*4aa5dc15SJonas Paulsson; CHECK-LABEL: fun_BDX12_S:
97*4aa5dc15SJonas Paulsson; CHECK: #APP
98*4aa5dc15SJonas Paulsson; CHECK: lay	%r2, 800(%r2)
99*4aa5dc15SJonas Paulssonentry:
100*4aa5dc15SJonas Paulsson  %0 = load i64*, i64** @A
101*4aa5dc15SJonas Paulsson  %1 = load i64, i64* @Idx
102*4aa5dc15SJonas Paulsson  %add = add nsw i64 %1, 100
103*4aa5dc15SJonas Paulsson  %arrayidx = getelementptr inbounds i64, i64* %0, i64 %add
104*4aa5dc15SJonas Paulsson  %2 = tail call i64 asm "lay $0, $1", "=r,^ZS"(i64* %arrayidx)
105*4aa5dc15SJonas Paulsson  store i64 %2, i64* @Addr
106*4aa5dc15SJonas Paulsson  ret i64 %2
107*4aa5dc15SJonas Paulsson}
108*4aa5dc15SJonas Paulsson
109*4aa5dc15SJonas Paulssondefine i64 @fun_BDX12_T() {
110*4aa5dc15SJonas Paulsson; CHECK-LABEL: fun_BDX12_T:
111*4aa5dc15SJonas Paulsson; CHECK: #APP
112*4aa5dc15SJonas Paulsson; CHECK: lay	%r2, 800(%r1,%r2)
113*4aa5dc15SJonas Paulssonentry:
114*4aa5dc15SJonas Paulsson  %0 = load i64*, i64** @A
115*4aa5dc15SJonas Paulsson  %1 = load i64, i64* @Idx
116*4aa5dc15SJonas Paulsson  %add = add nsw i64 %1, 100
117*4aa5dc15SJonas Paulsson  %arrayidx = getelementptr inbounds i64, i64* %0, i64 %add
118*4aa5dc15SJonas Paulsson  %2 = tail call i64 asm "lay $0, $1", "=r,^ZT"(i64* %arrayidx)
119*4aa5dc15SJonas Paulsson  store i64 %2, i64* @Addr
120*4aa5dc15SJonas Paulsson  ret i64 %2
121*4aa5dc15SJonas Paulsson}
122*4aa5dc15SJonas Paulsson
12346f83caeSJonas Paulssondefine i64 @fun_BDX12_p() {
12446f83caeSJonas Paulsson; CHECK-LABEL: fun_BDX12_p:
12546f83caeSJonas Paulsson; CHECK: #APP
12646f83caeSJonas Paulsson; CHECK: lay	%r2, 800(%r1,%r2)
12746f83caeSJonas Paulssonentry:
12846f83caeSJonas Paulsson  %0 = load i64*, i64** @A
12946f83caeSJonas Paulsson  %1 = load i64, i64* @Idx
13046f83caeSJonas Paulsson  %add = add nsw i64 %1, 100
13146f83caeSJonas Paulsson  %arrayidx = getelementptr inbounds i64, i64* %0, i64 %add
13246f83caeSJonas Paulsson  %2 = tail call i64 asm "lay $0, $1", "=r,p"(i64* %arrayidx)
13346f83caeSJonas Paulsson  store i64 %2, i64* @Addr
13446f83caeSJonas Paulsson  ret i64 %2
13546f83caeSJonas Paulsson}
13646f83caeSJonas Paulsson
137*4aa5dc15SJonas Paulssondefine i64 @fun_BD20_Q() {
138*4aa5dc15SJonas Paulsson; CHECK-LABEL: fun_BD20_Q:
139*4aa5dc15SJonas Paulsson; CHECK: #APP
140*4aa5dc15SJonas Paulsson; CHECK: lay	%r2, 0(%r2)
141*4aa5dc15SJonas Paulssonentry:
142*4aa5dc15SJonas Paulsson  %0 = load i64*, i64** @A
143*4aa5dc15SJonas Paulsson  %arrayidx = getelementptr inbounds i64, i64* %0, i64 1000
144*4aa5dc15SJonas Paulsson  %1 = tail call i64 asm "lay $0, $1", "=r,^ZQ"(i64* nonnull %arrayidx)
145*4aa5dc15SJonas Paulsson  store i64 %1, i64* @Addr
146*4aa5dc15SJonas Paulsson  ret i64 %1
147*4aa5dc15SJonas Paulsson}
148*4aa5dc15SJonas Paulsson
149*4aa5dc15SJonas Paulssondefine i64 @fun_BD20_R() {
150*4aa5dc15SJonas Paulsson; CHECK-LABEL: fun_BD20_R:
151*4aa5dc15SJonas Paulsson; CHECK: #APP
152*4aa5dc15SJonas Paulsson; CHECK: lay	%r2, 0(%r2)
153*4aa5dc15SJonas Paulssonentry:
154*4aa5dc15SJonas Paulsson  %0 = load i64*, i64** @A
155*4aa5dc15SJonas Paulsson  %arrayidx = getelementptr inbounds i64, i64* %0, i64 1000
156*4aa5dc15SJonas Paulsson  %1 = tail call i64 asm "lay $0, $1", "=r,^ZR"(i64* nonnull %arrayidx)
157*4aa5dc15SJonas Paulsson  store i64 %1, i64* @Addr
158*4aa5dc15SJonas Paulsson  ret i64 %1
159*4aa5dc15SJonas Paulsson}
160*4aa5dc15SJonas Paulsson
161*4aa5dc15SJonas Paulssondefine i64 @fun_BD20_S() {
162*4aa5dc15SJonas Paulsson; CHECK-LABEL: fun_BD20_S:
163*4aa5dc15SJonas Paulsson; CHECK: #APP
164*4aa5dc15SJonas Paulsson; CHECK: lay	%r2, 8000(%r1)
165*4aa5dc15SJonas Paulssonentry:
166*4aa5dc15SJonas Paulsson  %0 = load i64*, i64** @A
167*4aa5dc15SJonas Paulsson  %arrayidx = getelementptr inbounds i64, i64* %0, i64 1000
168*4aa5dc15SJonas Paulsson  %1 = tail call i64 asm "lay $0, $1", "=r,^ZS"(i64* nonnull %arrayidx)
169*4aa5dc15SJonas Paulsson  store i64 %1, i64* @Addr
170*4aa5dc15SJonas Paulsson  ret i64 %1
171*4aa5dc15SJonas Paulsson}
172*4aa5dc15SJonas Paulsson
173*4aa5dc15SJonas Paulssondefine i64 @fun_BD20_T() {
174*4aa5dc15SJonas Paulsson; CHECK-LABEL: fun_BD20_T:
175*4aa5dc15SJonas Paulsson; CHECK: #APP
176*4aa5dc15SJonas Paulsson; CHECK: lay	%r2, 8000(%r1)
177*4aa5dc15SJonas Paulssonentry:
178*4aa5dc15SJonas Paulsson  %0 = load i64*, i64** @A
179*4aa5dc15SJonas Paulsson  %arrayidx = getelementptr inbounds i64, i64* %0, i64 1000
180*4aa5dc15SJonas Paulsson  %1 = tail call i64 asm "lay $0, $1", "=r,^ZT"(i64* nonnull %arrayidx)
181*4aa5dc15SJonas Paulsson  store i64 %1, i64* @Addr
182*4aa5dc15SJonas Paulsson  ret i64 %1
183*4aa5dc15SJonas Paulsson}
184*4aa5dc15SJonas Paulsson
18546f83caeSJonas Paulssondefine i64 @fun_BD20_p() {
18646f83caeSJonas Paulsson; CHECK-LABEL: fun_BD20_p:
18746f83caeSJonas Paulsson; CHECK: #APP
18846f83caeSJonas Paulsson; CHECK: lay	%r2, 8000(%r1)
18946f83caeSJonas Paulssonentry:
19046f83caeSJonas Paulsson  %0 = load i64*, i64** @A
19146f83caeSJonas Paulsson  %arrayidx = getelementptr inbounds i64, i64* %0, i64 1000
19246f83caeSJonas Paulsson  %1 = tail call i64 asm "lay $0, $1", "=r,p"(i64* nonnull %arrayidx)
19346f83caeSJonas Paulsson  store i64 %1, i64* @Addr
19446f83caeSJonas Paulsson  ret i64 %1
19546f83caeSJonas Paulsson}
19646f83caeSJonas Paulsson
197*4aa5dc15SJonas Paulssondefine i64 @fun_BDX20_Q() {
198*4aa5dc15SJonas Paulsson; CHECK-LABEL: fun_BDX20_Q:
199*4aa5dc15SJonas Paulsson; CHECK: #APP
200*4aa5dc15SJonas Paulsson; CHECK: lay	%r2, 0(%r1)
201*4aa5dc15SJonas Paulssonentry:
202*4aa5dc15SJonas Paulsson  %0 = load i64*, i64** @A
203*4aa5dc15SJonas Paulsson  %1 = load i64, i64* @Idx
204*4aa5dc15SJonas Paulsson  %add = add nsw i64 %1, 1000
205*4aa5dc15SJonas Paulsson  %arrayidx = getelementptr inbounds i64, i64* %0, i64 %add
206*4aa5dc15SJonas Paulsson  %2 = tail call i64 asm "lay $0, $1", "=r,^ZQ"(i64* %arrayidx)
207*4aa5dc15SJonas Paulsson  store i64 %2, i64* @Addr
208*4aa5dc15SJonas Paulsson  ret i64 %2
209*4aa5dc15SJonas Paulsson}
210*4aa5dc15SJonas Paulsson
211*4aa5dc15SJonas Paulssondefine i64 @fun_BDX20_R() {
212*4aa5dc15SJonas Paulsson; CHECK-LABEL: fun_BDX20_R:
213*4aa5dc15SJonas Paulsson; CHECK: #APP
214*4aa5dc15SJonas Paulsson; CHECK: lay	%r2, 0(%r1)
215*4aa5dc15SJonas Paulssonentry:
216*4aa5dc15SJonas Paulsson  %0 = load i64*, i64** @A
217*4aa5dc15SJonas Paulsson  %1 = load i64, i64* @Idx
218*4aa5dc15SJonas Paulsson  %add = add nsw i64 %1, 1000
219*4aa5dc15SJonas Paulsson  %arrayidx = getelementptr inbounds i64, i64* %0, i64 %add
220*4aa5dc15SJonas Paulsson  %2 = tail call i64 asm "lay $0, $1", "=r,^ZR"(i64* %arrayidx)
221*4aa5dc15SJonas Paulsson  store i64 %2, i64* @Addr
222*4aa5dc15SJonas Paulsson  ret i64 %2
223*4aa5dc15SJonas Paulsson}
224*4aa5dc15SJonas Paulsson
225*4aa5dc15SJonas Paulssondefine i64 @fun_BDX20_S() {
226*4aa5dc15SJonas Paulsson; CHECK-LABEL: fun_BDX20_S:
227*4aa5dc15SJonas Paulsson; CHECK: #APP
228*4aa5dc15SJonas Paulsson; CHECK: lay	%r2, 8000(%r2)
229*4aa5dc15SJonas Paulssonentry:
230*4aa5dc15SJonas Paulsson  %0 = load i64*, i64** @A
231*4aa5dc15SJonas Paulsson  %1 = load i64, i64* @Idx
232*4aa5dc15SJonas Paulsson  %add = add nsw i64 %1, 1000
233*4aa5dc15SJonas Paulsson  %arrayidx = getelementptr inbounds i64, i64* %0, i64 %add
234*4aa5dc15SJonas Paulsson  %2 = tail call i64 asm "lay $0, $1", "=r,^ZS"(i64* %arrayidx)
235*4aa5dc15SJonas Paulsson  store i64 %2, i64* @Addr
236*4aa5dc15SJonas Paulsson  ret i64 %2
237*4aa5dc15SJonas Paulsson}
238*4aa5dc15SJonas Paulsson
239*4aa5dc15SJonas Paulssondefine i64 @fun_BDX20_T() {
240*4aa5dc15SJonas Paulsson; CHECK-LABEL: fun_BDX20_T:
241*4aa5dc15SJonas Paulsson; CHECK: #APP
242*4aa5dc15SJonas Paulsson; CHECK: lay	%r2, 8000(%r1,%r2)
243*4aa5dc15SJonas Paulssonentry:
244*4aa5dc15SJonas Paulsson  %0 = load i64*, i64** @A
245*4aa5dc15SJonas Paulsson  %1 = load i64, i64* @Idx
246*4aa5dc15SJonas Paulsson  %add = add nsw i64 %1, 1000
247*4aa5dc15SJonas Paulsson  %arrayidx = getelementptr inbounds i64, i64* %0, i64 %add
248*4aa5dc15SJonas Paulsson  %2 = tail call i64 asm "lay $0, $1", "=r,^ZT"(i64* %arrayidx)
249*4aa5dc15SJonas Paulsson  store i64 %2, i64* @Addr
250*4aa5dc15SJonas Paulsson  ret i64 %2
251*4aa5dc15SJonas Paulsson}
252*4aa5dc15SJonas Paulsson
25346f83caeSJonas Paulssondefine i64 @fun_BDX20_p() {
25446f83caeSJonas Paulsson; CHECK-LABEL: fun_BDX20_p:
25546f83caeSJonas Paulsson; CHECK: #APP
25646f83caeSJonas Paulsson; CHECK: lay	%r2, 8000(%r1,%r2)
25746f83caeSJonas Paulssonentry:
25846f83caeSJonas Paulsson  %0 = load i64*, i64** @A
25946f83caeSJonas Paulsson  %1 = load i64, i64* @Idx
26046f83caeSJonas Paulsson  %add = add nsw i64 %1, 1000
26146f83caeSJonas Paulsson  %arrayidx = getelementptr inbounds i64, i64* %0, i64 %add
26246f83caeSJonas Paulsson  %2 = tail call i64 asm "lay $0, $1", "=r,p"(i64* %arrayidx)
26346f83caeSJonas Paulsson  store i64 %2, i64* @Addr
26446f83caeSJonas Paulsson  ret i64 %2
26546f83caeSJonas Paulsson}
266