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