[InstCombine] Signed saturation patterns
[llvm-complete.git] / test / CodeGen / SystemZ / asm-09.ll
blobb9d86cfbfebbcba6427660b0ccdc4741685fe9a0
1 ; Test matching operands with the GPR constraint "r".
3 ; RUN: llc < %s -mtriple=s390x-linux-gnu -no-integrated-as | FileCheck %s
5 define void @f1(i32 *%dst) {
6 ; CHECK-LABEL: f1:
7 ; CHECK: lhi %r0, 100
8 ; CHECK: blah %r0
9 ; CHECK: st %r0, 0(%r2)
10 ; CHECK: br %r14
11   %val = call i32 asm "blah $0", "=r,0" (i8 100)
12   store i32 %val, i32 *%dst
13   ret void
16 define void @f2(i32 *%dst) {
17 ; CHECK-LABEL: f2:
18 ; CHECK: lhi %r0, 101
19 ; CHECK: blah %r0
20 ; CHECK: st %r0, 0(%r2)
21 ; CHECK: br %r14
22   %val = call i32 asm "blah $0", "=r,0" (i16 101)
23   store i32 %val, i32 *%dst
24   ret void
27 define void @f3(i32 *%dst) {
28 ; CHECK-LABEL: f3:
29 ; CHECK: lhi %r0, 102
30 ; CHECK: blah %r0
31 ; CHECK: st %r0, 0(%r2)
32 ; CHECK: br %r14
33   %val = call i32 asm "blah $0", "=r,0" (i32 102)
34   store i32 %val, i32 *%dst
35   ret void
38 ; FIXME: this uses "lhi %r0, 103", but should use "lghi %r0, 103".
39 define void @f4(i32 *%dst) {
40 ; CHECK-LABEL: f4:
41 ; CHECK: blah %r0
42 ; CHECK: st %r0, 0(%r2)
43 ; CHECK: br %r14
44   %val = call i32 asm "blah $0", "=r,0" (i64 103)
45   store i32 %val, i32 *%dst
46   ret void
49 define i64 @f5() {
50 ; CHECK-LABEL: f5:
51 ; CHECK: lghi %r2, 104
52 ; CHECK: blah %r2
53 ; CHECK: br %r14
54   %val = call i64 asm "blah $0", "=r,0" (i8 104)
55   ret i64 %val
58 define i64 @f6() {
59 ; CHECK-LABEL: f6:
60 ; CHECK: lghi %r2, 105
61 ; CHECK: blah %r2
62 ; CHECK: br %r14
63   %val = call i64 asm "blah $0", "=r,0" (i16 105)
64   ret i64 %val
67 define i64 @f7() {
68 ; CHECK-LABEL: f7:
69 ; CHECK: lghi %r2, 106
70 ; CHECK: blah %r2
71 ; CHECK: br %r14
72   %val = call i64 asm "blah $0", "=r,0" (i32 106)
73   ret i64 %val
76 define i64 @f8() {
77 ; CHECK-LABEL: f8:
78 ; CHECK: lghi %r2, 107
79 ; CHECK: blah %r2
80 ; CHECK: br %r14
81   %val = call i64 asm "blah $0", "=r,0" (i64 107)
82   ret i64 %val