diff options
Diffstat (limited to 'llvm/test/CodeGen')
| -rw-r--r-- | llvm/test/CodeGen/SystemZ/asm-03.ll | 40 | ||||
| -rw-r--r-- | llvm/test/CodeGen/SystemZ/asm-04.ll | 2 | ||||
| -rw-r--r-- | llvm/test/CodeGen/SystemZ/asm-05.ll | 2 |
3 files changed, 39 insertions, 5 deletions
diff --git a/llvm/test/CodeGen/SystemZ/asm-03.ll b/llvm/test/CodeGen/SystemZ/asm-03.ll index 2e60ad61ef4..d4fd564ce19 100644 --- a/llvm/test/CodeGen/SystemZ/asm-03.ll +++ b/llvm/test/CodeGen/SystemZ/asm-03.ll @@ -3,14 +3,48 @@ ; ; RUN: llc < %s -mtriple=s390x-linux-gnu -no-integrated-as | FileCheck %s +; Check the lowest range. define void @f1(i64 %base) { ; CHECK-LABEL: f1: +; CHECK: blah -524288(%r2) +; CHECK: br %r14 + %add = add i64 %base, -524288 + %addr = inttoptr i64 %add to i64 * + call void asm "blah $0", "=*S" (i64 *%addr) + ret void +} + +; Check the next lowest byte. +define void @f2(i64 %base) { +; CHECK-LABEL: f2: +; CHECK: agfi %r2, -524289 ; CHECK: blah 0(%r2) ; CHECK: br %r14 - %addr = inttoptr i64 %base to i64 * + %add = add i64 %base, -524289 + %addr = inttoptr i64 %add to i64 * call void asm "blah $0", "=*S" (i64 *%addr) ret void } -; FIXME: at the moment the precise constraint is not passed down to -; target code, so we must conservatively treat "S" as "Q". +; Check the highest range. +define void @f3(i64 %base) { +; CHECK-LABEL: f3: +; CHECK: blah 524287(%r2) +; CHECK: br %r14 + %add = add i64 %base, 524287 + %addr = inttoptr i64 %add to i64 * + call void asm "blah $0", "=*S" (i64 *%addr) + ret void +} + +; Check the next highest byte. +define void @f4(i64 %base) { +; CHECK-LABEL: f4: +; CHECK: agfi %r2, 524288 +; CHECK: blah 0(%r2) +; CHECK: br %r14 + %add = add i64 %base, 524288 + %addr = inttoptr i64 %add to i64 * + call void asm "blah $0", "=*S" (i64 *%addr) + ret void +} diff --git a/llvm/test/CodeGen/SystemZ/asm-04.ll b/llvm/test/CodeGen/SystemZ/asm-04.ll index b212253dbd9..a41a0a630d9 100644 --- a/llvm/test/CodeGen/SystemZ/asm-04.ll +++ b/llvm/test/CodeGen/SystemZ/asm-04.ll @@ -13,4 +13,4 @@ define void @f1(i64 %base) { } ; FIXME: at the moment the precise constraint is not passed down to -; target code, so we must conservatively treat "T" as "Q". +; target code, so we must conservatively treat "T" as "S". diff --git a/llvm/test/CodeGen/SystemZ/asm-05.ll b/llvm/test/CodeGen/SystemZ/asm-05.ll index db99b10853e..780b61ac3a3 100644 --- a/llvm/test/CodeGen/SystemZ/asm-05.ll +++ b/llvm/test/CodeGen/SystemZ/asm-05.ll @@ -12,4 +12,4 @@ define void @f1(i64 %base) { } ; FIXME: at the moment the precise constraint is not passed down to -; target code, so we must conservatively treat "m" as "Q". +; target code, so we must conservatively treat "m" as "S". |

