
The LIT test cases were migrated with the script provided by Nikita Popov. No manual changes were made. Committed without review since no functional changes, after consultation with uweigand.
266 lines
6.5 KiB
LLVM
266 lines
6.5 KiB
LLVM
; RUN: llc -mtriple=s390x-linux-gnu < %s | FileCheck %s
|
|
|
|
@Addr = global i64 0, align 8
|
|
@A = global ptr null, align 8
|
|
@Idx = global i64 0, align 8
|
|
|
|
define i64 @fun_BD12_Q() {
|
|
; CHECK-LABEL: fun_BD12_Q:
|
|
; CHECK: #APP
|
|
; CHECK: lay %r2, 800(%r1)
|
|
entry:
|
|
%0 = load ptr, ptr @A
|
|
%arrayidx = getelementptr inbounds i64, ptr %0, i64 100
|
|
%1 = tail call i64 asm "lay $0, $1", "=r,^ZQ"(ptr nonnull %arrayidx)
|
|
store i64 %1, ptr @Addr
|
|
ret i64 %1
|
|
}
|
|
|
|
define i64 @fun_BD12_R() {
|
|
; CHECK-LABEL: fun_BD12_R:
|
|
; CHECK: #APP
|
|
; CHECK: lay %r2, 800(%r1)
|
|
entry:
|
|
%0 = load ptr, ptr @A
|
|
%arrayidx = getelementptr inbounds i64, ptr %0, i64 100
|
|
%1 = tail call i64 asm "lay $0, $1", "=r,^ZR"(ptr nonnull %arrayidx)
|
|
store i64 %1, ptr @Addr
|
|
ret i64 %1
|
|
}
|
|
|
|
define i64 @fun_BD12_S() {
|
|
; CHECK-LABEL: fun_BD12_S:
|
|
; CHECK: #APP
|
|
; CHECK: lay %r2, 800(%r1)
|
|
entry:
|
|
%0 = load ptr, ptr @A
|
|
%arrayidx = getelementptr inbounds i64, ptr %0, i64 100
|
|
%1 = tail call i64 asm "lay $0, $1", "=r,^ZS"(ptr nonnull %arrayidx)
|
|
store i64 %1, ptr @Addr
|
|
ret i64 %1
|
|
}
|
|
|
|
define i64 @fun_BD12_T() {
|
|
; CHECK-LABEL: fun_BD12_T:
|
|
; CHECK: #APP
|
|
; CHECK: lay %r2, 800(%r1)
|
|
entry:
|
|
%0 = load ptr, ptr @A
|
|
%arrayidx = getelementptr inbounds i64, ptr %0, i64 100
|
|
%1 = tail call i64 asm "lay $0, $1", "=r,^ZT"(ptr nonnull %arrayidx)
|
|
store i64 %1, ptr @Addr
|
|
ret i64 %1
|
|
}
|
|
|
|
define i64 @fun_BD12_p() {
|
|
; CHECK-LABEL: fun_BD12_p:
|
|
; CHECK: #APP
|
|
; CHECK: lay %r2, 800(%r1)
|
|
entry:
|
|
%0 = load ptr, ptr @A
|
|
%arrayidx = getelementptr inbounds i64, ptr %0, i64 100
|
|
%1 = tail call i64 asm "lay $0, $1", "=r,p"(ptr nonnull %arrayidx)
|
|
store i64 %1, ptr @Addr
|
|
ret i64 %1
|
|
}
|
|
|
|
define i64 @fun_BDX12_Q() {
|
|
; CHECK-LABEL: fun_BDX12_Q:
|
|
; CHECK: #APP
|
|
; CHECK: lay %r2, 800(%r2)
|
|
entry:
|
|
%0 = load ptr, ptr @A
|
|
%1 = load i64, ptr @Idx
|
|
%add = add nsw i64 %1, 100
|
|
%arrayidx = getelementptr inbounds i64, ptr %0, i64 %add
|
|
%2 = tail call i64 asm "lay $0, $1", "=r,^ZQ"(ptr %arrayidx)
|
|
store i64 %2, ptr @Addr
|
|
ret i64 %2
|
|
}
|
|
|
|
define i64 @fun_BDX12_R() {
|
|
; CHECK-LABEL: fun_BDX12_R:
|
|
; CHECK: #APP
|
|
; CHECK: lay %r2, 800(%r1,%r2)
|
|
entry:
|
|
%0 = load ptr, ptr @A
|
|
%1 = load i64, ptr @Idx
|
|
%add = add nsw i64 %1, 100
|
|
%arrayidx = getelementptr inbounds i64, ptr %0, i64 %add
|
|
%2 = tail call i64 asm "lay $0, $1", "=r,^ZR"(ptr %arrayidx)
|
|
store i64 %2, ptr @Addr
|
|
ret i64 %2
|
|
}
|
|
|
|
define i64 @fun_BDX12_S() {
|
|
; CHECK-LABEL: fun_BDX12_S:
|
|
; CHECK: #APP
|
|
; CHECK: lay %r2, 800(%r2)
|
|
entry:
|
|
%0 = load ptr, ptr @A
|
|
%1 = load i64, ptr @Idx
|
|
%add = add nsw i64 %1, 100
|
|
%arrayidx = getelementptr inbounds i64, ptr %0, i64 %add
|
|
%2 = tail call i64 asm "lay $0, $1", "=r,^ZS"(ptr %arrayidx)
|
|
store i64 %2, ptr @Addr
|
|
ret i64 %2
|
|
}
|
|
|
|
define i64 @fun_BDX12_T() {
|
|
; CHECK-LABEL: fun_BDX12_T:
|
|
; CHECK: #APP
|
|
; CHECK: lay %r2, 800(%r1,%r2)
|
|
entry:
|
|
%0 = load ptr, ptr @A
|
|
%1 = load i64, ptr @Idx
|
|
%add = add nsw i64 %1, 100
|
|
%arrayidx = getelementptr inbounds i64, ptr %0, i64 %add
|
|
%2 = tail call i64 asm "lay $0, $1", "=r,^ZT"(ptr %arrayidx)
|
|
store i64 %2, ptr @Addr
|
|
ret i64 %2
|
|
}
|
|
|
|
define i64 @fun_BDX12_p() {
|
|
; CHECK-LABEL: fun_BDX12_p:
|
|
; CHECK: #APP
|
|
; CHECK: lay %r2, 800(%r1,%r2)
|
|
entry:
|
|
%0 = load ptr, ptr @A
|
|
%1 = load i64, ptr @Idx
|
|
%add = add nsw i64 %1, 100
|
|
%arrayidx = getelementptr inbounds i64, ptr %0, i64 %add
|
|
%2 = tail call i64 asm "lay $0, $1", "=r,p"(ptr %arrayidx)
|
|
store i64 %2, ptr @Addr
|
|
ret i64 %2
|
|
}
|
|
|
|
define i64 @fun_BD20_Q() {
|
|
; CHECK-LABEL: fun_BD20_Q:
|
|
; CHECK: #APP
|
|
; CHECK: lay %r2, 0(%r2)
|
|
entry:
|
|
%0 = load ptr, ptr @A
|
|
%arrayidx = getelementptr inbounds i64, ptr %0, i64 1000
|
|
%1 = tail call i64 asm "lay $0, $1", "=r,^ZQ"(ptr nonnull %arrayidx)
|
|
store i64 %1, ptr @Addr
|
|
ret i64 %1
|
|
}
|
|
|
|
define i64 @fun_BD20_R() {
|
|
; CHECK-LABEL: fun_BD20_R:
|
|
; CHECK: #APP
|
|
; CHECK: lay %r2, 0(%r2)
|
|
entry:
|
|
%0 = load ptr, ptr @A
|
|
%arrayidx = getelementptr inbounds i64, ptr %0, i64 1000
|
|
%1 = tail call i64 asm "lay $0, $1", "=r,^ZR"(ptr nonnull %arrayidx)
|
|
store i64 %1, ptr @Addr
|
|
ret i64 %1
|
|
}
|
|
|
|
define i64 @fun_BD20_S() {
|
|
; CHECK-LABEL: fun_BD20_S:
|
|
; CHECK: #APP
|
|
; CHECK: lay %r2, 8000(%r1)
|
|
entry:
|
|
%0 = load ptr, ptr @A
|
|
%arrayidx = getelementptr inbounds i64, ptr %0, i64 1000
|
|
%1 = tail call i64 asm "lay $0, $1", "=r,^ZS"(ptr nonnull %arrayidx)
|
|
store i64 %1, ptr @Addr
|
|
ret i64 %1
|
|
}
|
|
|
|
define i64 @fun_BD20_T() {
|
|
; CHECK-LABEL: fun_BD20_T:
|
|
; CHECK: #APP
|
|
; CHECK: lay %r2, 8000(%r1)
|
|
entry:
|
|
%0 = load ptr, ptr @A
|
|
%arrayidx = getelementptr inbounds i64, ptr %0, i64 1000
|
|
%1 = tail call i64 asm "lay $0, $1", "=r,^ZT"(ptr nonnull %arrayidx)
|
|
store i64 %1, ptr @Addr
|
|
ret i64 %1
|
|
}
|
|
|
|
define i64 @fun_BD20_p() {
|
|
; CHECK-LABEL: fun_BD20_p:
|
|
; CHECK: #APP
|
|
; CHECK: lay %r2, 8000(%r1)
|
|
entry:
|
|
%0 = load ptr, ptr @A
|
|
%arrayidx = getelementptr inbounds i64, ptr %0, i64 1000
|
|
%1 = tail call i64 asm "lay $0, $1", "=r,p"(ptr nonnull %arrayidx)
|
|
store i64 %1, ptr @Addr
|
|
ret i64 %1
|
|
}
|
|
|
|
define i64 @fun_BDX20_Q() {
|
|
; CHECK-LABEL: fun_BDX20_Q:
|
|
; CHECK: #APP
|
|
; CHECK: lay %r2, 0(%r1)
|
|
entry:
|
|
%0 = load ptr, ptr @A
|
|
%1 = load i64, ptr @Idx
|
|
%add = add nsw i64 %1, 1000
|
|
%arrayidx = getelementptr inbounds i64, ptr %0, i64 %add
|
|
%2 = tail call i64 asm "lay $0, $1", "=r,^ZQ"(ptr %arrayidx)
|
|
store i64 %2, ptr @Addr
|
|
ret i64 %2
|
|
}
|
|
|
|
define i64 @fun_BDX20_R() {
|
|
; CHECK-LABEL: fun_BDX20_R:
|
|
; CHECK: #APP
|
|
; CHECK: lay %r2, 0(%r1)
|
|
entry:
|
|
%0 = load ptr, ptr @A
|
|
%1 = load i64, ptr @Idx
|
|
%add = add nsw i64 %1, 1000
|
|
%arrayidx = getelementptr inbounds i64, ptr %0, i64 %add
|
|
%2 = tail call i64 asm "lay $0, $1", "=r,^ZR"(ptr %arrayidx)
|
|
store i64 %2, ptr @Addr
|
|
ret i64 %2
|
|
}
|
|
|
|
define i64 @fun_BDX20_S() {
|
|
; CHECK-LABEL: fun_BDX20_S:
|
|
; CHECK: #APP
|
|
; CHECK: lay %r2, 8000(%r2)
|
|
entry:
|
|
%0 = load ptr, ptr @A
|
|
%1 = load i64, ptr @Idx
|
|
%add = add nsw i64 %1, 1000
|
|
%arrayidx = getelementptr inbounds i64, ptr %0, i64 %add
|
|
%2 = tail call i64 asm "lay $0, $1", "=r,^ZS"(ptr %arrayidx)
|
|
store i64 %2, ptr @Addr
|
|
ret i64 %2
|
|
}
|
|
|
|
define i64 @fun_BDX20_T() {
|
|
; CHECK-LABEL: fun_BDX20_T:
|
|
; CHECK: #APP
|
|
; CHECK: lay %r2, 8000(%r1,%r2)
|
|
entry:
|
|
%0 = load ptr, ptr @A
|
|
%1 = load i64, ptr @Idx
|
|
%add = add nsw i64 %1, 1000
|
|
%arrayidx = getelementptr inbounds i64, ptr %0, i64 %add
|
|
%2 = tail call i64 asm "lay $0, $1", "=r,^ZT"(ptr %arrayidx)
|
|
store i64 %2, ptr @Addr
|
|
ret i64 %2
|
|
}
|
|
|
|
define i64 @fun_BDX20_p() {
|
|
; CHECK-LABEL: fun_BDX20_p:
|
|
; CHECK: #APP
|
|
; CHECK: lay %r2, 8000(%r1,%r2)
|
|
entry:
|
|
%0 = load ptr, ptr @A
|
|
%1 = load i64, ptr @Idx
|
|
%add = add nsw i64 %1, 1000
|
|
%arrayidx = getelementptr inbounds i64, ptr %0, i64 %add
|
|
%2 = tail call i64 asm "lay $0, $1", "=r,p"(ptr %arrayidx)
|
|
store i64 %2, ptr @Addr
|
|
ret i64 %2
|
|
}
|