1 // RUN: %clang_cc1 -no-opaque-pointers -triple s390x-linux-gnu -O2 -emit-llvm \
2 // RUN:   -o - %s 2>&1 | FileCheck %s
3 // REQUIRES: systemz-registered-target
4 
5 long *A;
6 long Idx;
7 unsigned long Addr;
8 
9 unsigned long fun_BD12_p() {
10 // CHECK-LABEL: define{{.*}} i64 @fun_BD12_p()
11 // CHECK: call i64 asm "lay $0, $1", "=r,p"(i64* nonnull %arrayidx)
12   asm("lay %0, %1" : "=r" (Addr) : "p" (&A[100]));
13   return Addr;
14 }
15 
16 unsigned long fun_BDX12_p() {
17 // CHECK-LABEL: define{{.*}} i64 @fun_BDX12_p()
18 // CHECK: call i64 asm "lay $0, $1", "=r,p"(i64* %arrayidx)
19   asm("lay %0, %1" : "=r" (Addr) : "p" (&A[Idx + 100]));
20   return Addr;
21 }
22 
23 unsigned long fun_BD20_p() {
24 // CHECK-LABEL: define{{.*}} i64 @fun_BD20_p()
25 // CHECK: call i64 asm "lay $0, $1", "=r,p"(i64* nonnull %arrayidx)
26   asm("lay %0, %1" : "=r" (Addr) : "p" (&A[1000]));
27   return Addr;
28 }
29 
30 unsigned long fun_BDX20_p() {
31 // CHECK-LABEL: define{{.*}} i64 @fun_BDX20_p()
32 // CHECK: call i64 asm "lay $0, $1", "=r,p"(i64* %arrayidx)
33   asm("lay %0, %1" : "=r" (Addr) : "p" (&A[Idx + 1000]));
34   return Addr;
35 }
36