[SystemZ] Add CodeGen test cases
[oota-llvm.git] / test / CodeGen / SystemZ / branch-02.ll
1 ; Test all condition-code masks that are relevant for signed integer
2 ; comparisons.
3 ;
4 ; RUN: llc < %s -mtriple=s390x-linux-gnu | FileCheck %s
5
6 define void @f1(i32 *%src, i32 %target) {
7 ; CHECK: f1:
8 ; CHECK: .cfi_startproc
9 ; CHECK: .L[[LABEL:.*]]:
10 ; CHECK: c %r3, 0(%r2)
11 ; CHECK-NEXT: j{{g?}}e .L[[LABEL]]
12   br label %loop
13 loop:
14   %val = load volatile i32 *%src
15   %cond = icmp eq i32 %target, %val
16   br i1 %cond, label %loop, label %exit
17 exit:
18   ret void
19 }
20
21 define void @f2(i32 *%src, i32 %target) {
22 ; CHECK: f2:
23 ; CHECK: .cfi_startproc
24 ; CHECK: .L[[LABEL:.*]]:
25 ; CHECK: c %r3, 0(%r2)
26 ; CHECK-NEXT: j{{g?}}lh .L[[LABEL]]
27   br label %loop
28 loop:
29   %val = load volatile i32 *%src
30   %cond = icmp ne i32 %target, %val
31   br i1 %cond, label %loop, label %exit
32 exit:
33   ret void
34 }
35
36 define void @f3(i32 *%src, i32 %target) {
37 ; CHECK: f3:
38 ; CHECK: .cfi_startproc
39 ; CHECK: .L[[LABEL:.*]]:
40 ; CHECK: c %r3, 0(%r2)
41 ; CHECK-NEXT: j{{g?}}le .L[[LABEL]]
42   br label %loop
43 loop:
44   %val = load volatile i32 *%src
45   %cond = icmp sle i32 %target, %val
46   br i1 %cond, label %loop, label %exit
47 exit:
48   ret void
49 }
50
51 define void @f4(i32 *%src, i32 %target) {
52 ; CHECK: f4:
53 ; CHECK: .cfi_startproc
54 ; CHECK: .L[[LABEL:.*]]:
55 ; CHECK: c %r3, 0(%r2)
56 ; CHECK-NEXT: j{{g?}}l .L[[LABEL]]
57   br label %loop
58 loop:
59   %val = load volatile i32 *%src
60   %cond = icmp slt i32 %target, %val
61   br i1 %cond, label %loop, label %exit
62 exit:
63   ret void
64 }
65
66 define void @f5(i32 *%src, i32 %target) {
67 ; CHECK: f5:
68 ; CHECK: .cfi_startproc
69 ; CHECK: .L[[LABEL:.*]]:
70 ; CHECK: c %r3, 0(%r2)
71 ; CHECK-NEXT: j{{g?}}h .L[[LABEL]]
72   br label %loop
73 loop:
74   %val = load volatile i32 *%src
75   %cond = icmp sgt i32 %target, %val
76   br i1 %cond, label %loop, label %exit
77 exit:
78   ret void
79 }
80
81 define void @f6(i32 *%src, i32 %target) {
82 ; CHECK: f6:
83 ; CHECK: .cfi_startproc
84 ; CHECK: .L[[LABEL:.*]]:
85 ; CHECK: c %r3, 0(%r2)
86 ; CHECK-NEXT: j{{g?}}he .L[[LABEL]]
87   br label %loop
88 loop:
89   %val = load volatile i32 *%src
90   %cond = icmp sge i32 %target, %val
91   br i1 %cond, label %loop, label %exit
92 exit:
93   ret void
94 }