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