1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-22 18:54:02 +01:00
llvm-mirror/test/CodeGen/SystemZ/asm-01.ll
Ulrich Weigand 4155c036c2 Use the integrated assembler as default on SystemZ
This was already done in clang, this commit now uses the integrated
assembler as default when using LLVM tools directly.

A number of test cases deliberately using an invalid instruction in
inline asm now have to use -no-integrated-as.

llvm-svn: 225820
2015-01-13 19:45:16 +00:00

62 lines
1.4 KiB
LLVM

; Test the "Q" asm constraint, which accepts addresses that have a base
; and a 12-bit displacement.
;
; 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 0(%r2)
; CHECK: br %r14
%addr = inttoptr i64 %base to i64 *
call void asm "blah $0", "=*Q" (i64 *%addr)
ret void
}
; Check the next lowest byte.
define void @f2(i64 %base) {
; CHECK-LABEL: f2:
; CHECK: aghi %r2, -1
; CHECK: blah 0(%r2)
; CHECK: br %r14
%add = add i64 %base, -1
%addr = inttoptr i64 %add to i64 *
call void asm "blah $0", "=*Q" (i64 *%addr)
ret void
}
; Check the highest range.
define void @f3(i64 %base) {
; CHECK-LABEL: f3:
; CHECK: blah 4095(%r2)
; CHECK: br %r14
%add = add i64 %base, 4095
%addr = inttoptr i64 %add to i64 *
call void asm "blah $0", "=*Q" (i64 *%addr)
ret void
}
; Check the next highest byte.
define void @f4(i64 %base) {
; CHECK-LABEL: f4:
; CHECK: aghi %r2, 4096
; CHECK: blah 0(%r2)
; CHECK: br %r14
%add = add i64 %base, 4096
%addr = inttoptr i64 %add to i64 *
call void asm "blah $0", "=*Q" (i64 *%addr)
ret void
}
; Check that indices aren't allowed
define void @f5(i64 %base, i64 %index) {
; CHECK-LABEL: f5:
; CHECK: agr %r2, %r3
; CHECK: blah 0(%r2)
; CHECK: br %r14
%add = add i64 %base, %index
%addr = inttoptr i64 %add to i64 *
call void asm "blah $0", "=*Q" (i64 *%addr)
ret void
}