1*46f83caeSJonas Paulsson; RUN: llc -mtriple=s390x-linux-gnu < %s | FileCheck %s
2*46f83caeSJonas Paulsson
3*46f83caeSJonas Paulsson@Addr = global i64 0, align 8
4*46f83caeSJonas Paulsson@A = global i64* null, align 8
5*46f83caeSJonas Paulsson@Idx = global i64 0, align 8
6*46f83caeSJonas Paulsson
7*46f83caeSJonas Paulssondefine i64 @fun_BD12_p() {
8*46f83caeSJonas Paulsson; CHECK-LABEL: fun_BD12_p:
9*46f83caeSJonas Paulsson; CHECK: #APP
10*46f83caeSJonas Paulsson; CHECK: lay	%r2, 800(%r1)
11*46f83caeSJonas Paulssonentry:
12*46f83caeSJonas Paulsson  %0 = load i64*, i64** @A
13*46f83caeSJonas Paulsson  %arrayidx = getelementptr inbounds i64, i64* %0, i64 100
14*46f83caeSJonas Paulsson  %1 = tail call i64 asm "lay $0, $1", "=r,p"(i64* nonnull %arrayidx)
15*46f83caeSJonas Paulsson  store i64 %1, i64* @Addr
16*46f83caeSJonas Paulsson  ret i64 %1
17*46f83caeSJonas Paulsson}
18*46f83caeSJonas Paulsson
19*46f83caeSJonas Paulssondefine i64 @fun_BDX12_p() {
20*46f83caeSJonas Paulsson; CHECK-LABEL: fun_BDX12_p:
21*46f83caeSJonas Paulsson; CHECK: #APP
22*46f83caeSJonas Paulsson; CHECK: lay	%r2, 800(%r1,%r2)
23*46f83caeSJonas Paulssonentry:
24*46f83caeSJonas Paulsson  %0 = load i64*, i64** @A
25*46f83caeSJonas Paulsson  %1 = load i64, i64* @Idx
26*46f83caeSJonas Paulsson  %add = add nsw i64 %1, 100
27*46f83caeSJonas Paulsson  %arrayidx = getelementptr inbounds i64, i64* %0, i64 %add
28*46f83caeSJonas Paulsson  %2 = tail call i64 asm "lay $0, $1", "=r,p"(i64* %arrayidx)
29*46f83caeSJonas Paulsson  store i64 %2, i64* @Addr
30*46f83caeSJonas Paulsson  ret i64 %2
31*46f83caeSJonas Paulsson}
32*46f83caeSJonas Paulsson
33*46f83caeSJonas Paulssondefine i64 @fun_BD20_p() {
34*46f83caeSJonas Paulsson; CHECK-LABEL: fun_BD20_p:
35*46f83caeSJonas Paulsson; CHECK: #APP
36*46f83caeSJonas Paulsson; CHECK: lay	%r2, 8000(%r1)
37*46f83caeSJonas Paulssonentry:
38*46f83caeSJonas Paulsson  %0 = load i64*, i64** @A
39*46f83caeSJonas Paulsson  %arrayidx = getelementptr inbounds i64, i64* %0, i64 1000
40*46f83caeSJonas Paulsson  %1 = tail call i64 asm "lay $0, $1", "=r,p"(i64* nonnull %arrayidx)
41*46f83caeSJonas Paulsson  store i64 %1, i64* @Addr
42*46f83caeSJonas Paulsson  ret i64 %1
43*46f83caeSJonas Paulsson}
44*46f83caeSJonas Paulsson
45*46f83caeSJonas Paulssondefine i64 @fun_BDX20_p() {
46*46f83caeSJonas Paulsson; CHECK-LABEL: fun_BDX20_p:
47*46f83caeSJonas Paulsson; CHECK: #APP
48*46f83caeSJonas Paulsson; CHECK: lay	%r2, 8000(%r1,%r2)
49*46f83caeSJonas Paulssonentry:
50*46f83caeSJonas Paulsson  %0 = load i64*, i64** @A
51*46f83caeSJonas Paulsson  %1 = load i64, i64* @Idx
52*46f83caeSJonas Paulsson  %add = add nsw i64 %1, 1000
53*46f83caeSJonas Paulsson  %arrayidx = getelementptr inbounds i64, i64* %0, i64 %add
54*46f83caeSJonas Paulsson  %2 = tail call i64 asm "lay $0, $1", "=r,p"(i64* %arrayidx)
55*46f83caeSJonas Paulsson  store i64 %2, i64* @Addr
56*46f83caeSJonas Paulsson  ret i64 %2
57*46f83caeSJonas Paulsson}
58