266 lines · plain
1; RUN: llc -mtriple=s390x-linux-gnu < %s | FileCheck %s2 3@Addr = global i64 0, align 84@A = global ptr null, align 85@Idx = global i64 0, align 86 7define i64 @fun_BD12_Q() {8; CHECK-LABEL: fun_BD12_Q:9; CHECK: #APP10; CHECK: lay %r2, 800(%r1)11entry:12 %0 = load ptr, ptr @A13 %arrayidx = getelementptr inbounds i64, ptr %0, i64 10014 %1 = tail call i64 asm "lay $0, $1", "=r,^ZQ"(ptr nonnull %arrayidx)15 store i64 %1, ptr @Addr16 ret i64 %117}18 19define i64 @fun_BD12_R() {20; CHECK-LABEL: fun_BD12_R:21; CHECK: #APP22; CHECK: lay %r2, 800(%r1)23entry:24 %0 = load ptr, ptr @A25 %arrayidx = getelementptr inbounds i64, ptr %0, i64 10026 %1 = tail call i64 asm "lay $0, $1", "=r,^ZR"(ptr nonnull %arrayidx)27 store i64 %1, ptr @Addr28 ret i64 %129}30 31define i64 @fun_BD12_S() {32; CHECK-LABEL: fun_BD12_S:33; CHECK: #APP34; CHECK: lay %r2, 800(%r1)35entry:36 %0 = load ptr, ptr @A37 %arrayidx = getelementptr inbounds i64, ptr %0, i64 10038 %1 = tail call i64 asm "lay $0, $1", "=r,^ZS"(ptr nonnull %arrayidx)39 store i64 %1, ptr @Addr40 ret i64 %141}42 43define i64 @fun_BD12_T() {44; CHECK-LABEL: fun_BD12_T:45; CHECK: #APP46; CHECK: lay %r2, 800(%r1)47entry:48 %0 = load ptr, ptr @A49 %arrayidx = getelementptr inbounds i64, ptr %0, i64 10050 %1 = tail call i64 asm "lay $0, $1", "=r,^ZT"(ptr nonnull %arrayidx)51 store i64 %1, ptr @Addr52 ret i64 %153}54 55define i64 @fun_BD12_p() {56; CHECK-LABEL: fun_BD12_p:57; CHECK: #APP58; CHECK: lay %r2, 800(%r1)59entry:60 %0 = load ptr, ptr @A61 %arrayidx = getelementptr inbounds i64, ptr %0, i64 10062 %1 = tail call i64 asm "lay $0, $1", "=r,p"(ptr nonnull %arrayidx)63 store i64 %1, ptr @Addr64 ret i64 %165}66 67define i64 @fun_BDX12_Q() {68; CHECK-LABEL: fun_BDX12_Q:69; CHECK: #APP70; CHECK: lay %r2, 800(%r2)71entry:72 %0 = load ptr, ptr @A73 %1 = load i64, ptr @Idx74 %add = add nsw i64 %1, 10075 %arrayidx = getelementptr inbounds i64, ptr %0, i64 %add76 %2 = tail call i64 asm "lay $0, $1", "=r,^ZQ"(ptr %arrayidx)77 store i64 %2, ptr @Addr78 ret i64 %279}80 81define i64 @fun_BDX12_R() {82; CHECK-LABEL: fun_BDX12_R:83; CHECK: #APP84; CHECK: lay %r2, 800(%r1,%r2)85entry:86 %0 = load ptr, ptr @A87 %1 = load i64, ptr @Idx88 %add = add nsw i64 %1, 10089 %arrayidx = getelementptr inbounds i64, ptr %0, i64 %add90 %2 = tail call i64 asm "lay $0, $1", "=r,^ZR"(ptr %arrayidx)91 store i64 %2, ptr @Addr92 ret i64 %293}94 95define i64 @fun_BDX12_S() {96; CHECK-LABEL: fun_BDX12_S:97; CHECK: #APP98; CHECK: lay %r2, 800(%r2)99entry:100 %0 = load ptr, ptr @A101 %1 = load i64, ptr @Idx102 %add = add nsw i64 %1, 100103 %arrayidx = getelementptr inbounds i64, ptr %0, i64 %add104 %2 = tail call i64 asm "lay $0, $1", "=r,^ZS"(ptr %arrayidx)105 store i64 %2, ptr @Addr106 ret i64 %2107}108 109define i64 @fun_BDX12_T() {110; CHECK-LABEL: fun_BDX12_T:111; CHECK: #APP112; CHECK: lay %r2, 800(%r1,%r2)113entry:114 %0 = load ptr, ptr @A115 %1 = load i64, ptr @Idx116 %add = add nsw i64 %1, 100117 %arrayidx = getelementptr inbounds i64, ptr %0, i64 %add118 %2 = tail call i64 asm "lay $0, $1", "=r,^ZT"(ptr %arrayidx)119 store i64 %2, ptr @Addr120 ret i64 %2121}122 123define i64 @fun_BDX12_p() {124; CHECK-LABEL: fun_BDX12_p:125; CHECK: #APP126; CHECK: lay %r2, 800(%r1,%r2)127entry:128 %0 = load ptr, ptr @A129 %1 = load i64, ptr @Idx130 %add = add nsw i64 %1, 100131 %arrayidx = getelementptr inbounds i64, ptr %0, i64 %add132 %2 = tail call i64 asm "lay $0, $1", "=r,p"(ptr %arrayidx)133 store i64 %2, ptr @Addr134 ret i64 %2135}136 137define i64 @fun_BD20_Q() {138; CHECK-LABEL: fun_BD20_Q:139; CHECK: #APP140; CHECK: lay %r2, 0(%r2)141entry:142 %0 = load ptr, ptr @A143 %arrayidx = getelementptr inbounds i64, ptr %0, i64 1000144 %1 = tail call i64 asm "lay $0, $1", "=r,^ZQ"(ptr nonnull %arrayidx)145 store i64 %1, ptr @Addr146 ret i64 %1147}148 149define i64 @fun_BD20_R() {150; CHECK-LABEL: fun_BD20_R:151; CHECK: #APP152; CHECK: lay %r2, 0(%r2)153entry:154 %0 = load ptr, ptr @A155 %arrayidx = getelementptr inbounds i64, ptr %0, i64 1000156 %1 = tail call i64 asm "lay $0, $1", "=r,^ZR"(ptr nonnull %arrayidx)157 store i64 %1, ptr @Addr158 ret i64 %1159}160 161define i64 @fun_BD20_S() {162; CHECK-LABEL: fun_BD20_S:163; CHECK: #APP164; CHECK: lay %r2, 8000(%r1)165entry:166 %0 = load ptr, ptr @A167 %arrayidx = getelementptr inbounds i64, ptr %0, i64 1000168 %1 = tail call i64 asm "lay $0, $1", "=r,^ZS"(ptr nonnull %arrayidx)169 store i64 %1, ptr @Addr170 ret i64 %1171}172 173define i64 @fun_BD20_T() {174; CHECK-LABEL: fun_BD20_T:175; CHECK: #APP176; CHECK: lay %r2, 8000(%r1)177entry:178 %0 = load ptr, ptr @A179 %arrayidx = getelementptr inbounds i64, ptr %0, i64 1000180 %1 = tail call i64 asm "lay $0, $1", "=r,^ZT"(ptr nonnull %arrayidx)181 store i64 %1, ptr @Addr182 ret i64 %1183}184 185define i64 @fun_BD20_p() {186; CHECK-LABEL: fun_BD20_p:187; CHECK: #APP188; CHECK: lay %r2, 8000(%r1)189entry:190 %0 = load ptr, ptr @A191 %arrayidx = getelementptr inbounds i64, ptr %0, i64 1000192 %1 = tail call i64 asm "lay $0, $1", "=r,p"(ptr nonnull %arrayidx)193 store i64 %1, ptr @Addr194 ret i64 %1195}196 197define i64 @fun_BDX20_Q() {198; CHECK-LABEL: fun_BDX20_Q:199; CHECK: #APP200; CHECK: lay %r2, 0(%r1)201entry:202 %0 = load ptr, ptr @A203 %1 = load i64, ptr @Idx204 %add = add nsw i64 %1, 1000205 %arrayidx = getelementptr inbounds i64, ptr %0, i64 %add206 %2 = tail call i64 asm "lay $0, $1", "=r,^ZQ"(ptr %arrayidx)207 store i64 %2, ptr @Addr208 ret i64 %2209}210 211define i64 @fun_BDX20_R() {212; CHECK-LABEL: fun_BDX20_R:213; CHECK: #APP214; CHECK: lay %r2, 0(%r1)215entry:216 %0 = load ptr, ptr @A217 %1 = load i64, ptr @Idx218 %add = add nsw i64 %1, 1000219 %arrayidx = getelementptr inbounds i64, ptr %0, i64 %add220 %2 = tail call i64 asm "lay $0, $1", "=r,^ZR"(ptr %arrayidx)221 store i64 %2, ptr @Addr222 ret i64 %2223}224 225define i64 @fun_BDX20_S() {226; CHECK-LABEL: fun_BDX20_S:227; CHECK: #APP228; CHECK: lay %r2, 8000(%r2)229entry:230 %0 = load ptr, ptr @A231 %1 = load i64, ptr @Idx232 %add = add nsw i64 %1, 1000233 %arrayidx = getelementptr inbounds i64, ptr %0, i64 %add234 %2 = tail call i64 asm "lay $0, $1", "=r,^ZS"(ptr %arrayidx)235 store i64 %2, ptr @Addr236 ret i64 %2237}238 239define i64 @fun_BDX20_T() {240; CHECK-LABEL: fun_BDX20_T:241; CHECK: #APP242; CHECK: lay %r2, 8000(%r1,%r2)243entry:244 %0 = load ptr, ptr @A245 %1 = load i64, ptr @Idx246 %add = add nsw i64 %1, 1000247 %arrayidx = getelementptr inbounds i64, ptr %0, i64 %add248 %2 = tail call i64 asm "lay $0, $1", "=r,^ZT"(ptr %arrayidx)249 store i64 %2, ptr @Addr250 ret i64 %2251}252 253define i64 @fun_BDX20_p() {254; CHECK-LABEL: fun_BDX20_p:255; CHECK: #APP256; CHECK: lay %r2, 8000(%r1,%r2)257entry:258 %0 = load ptr, ptr @A259 %1 = load i64, ptr @Idx260 %add = add nsw i64 %1, 1000261 %arrayidx = getelementptr inbounds i64, ptr %0, i64 %add262 %2 = tail call i64 asm "lay $0, $1", "=r,p"(ptr %arrayidx)263 store i64 %2, ptr @Addr264 ret i64 %2265}266