Fixed some bugs in register stack pass.
[llvm/zpu.git] / test / CodeGen / SystemZ / 07-BrCond32.ll
blob8ece5ac09840d0a4bf1777f4d6e707aedc66722a
1 ; RUN: llc < %s | grep je  | count 1
2 ; RUN: llc < %s | grep jne | count 1
3 ; RUN: llc < %s | grep jhe | count 2
4 ; RUN: llc < %s | grep jle | count 2
5 ; RUN: llc < %s | grep jh  | count 4
6 ; RUN: llc < %s | grep jl  | count 4
9 target datalayout = "E-p:64:64:64-i1:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-f128:128:128"
10 target triple = "s390x-unknown-linux-gnu"
12 define void @foo(i32 %a, i32 %b) nounwind {
13 entry:
14         %cmp = icmp ult i32 %a, %b              ; <i1> [#uses=1]
15         br i1 %cmp, label %if.then, label %if.end
17 if.then:                ; preds = %entry
18         tail call void @bar() nounwind
19         ret void
21 if.end:         ; preds = %entry
22         ret void
25 declare void @bar()
27 define void @foo1(i32 %a, i32 %b) nounwind {
28 entry:
29         %cmp = icmp ugt i32 %a, %b              ; <i1> [#uses=1]
30         br i1 %cmp, label %if.then, label %if.end
32 if.then:                ; preds = %entry
33         tail call void @bar() nounwind
34         ret void
36 if.end:         ; preds = %entry
37         ret void
40 define void @foo2(i32 %a, i32 %b) nounwind {
41 entry:
42         %cmp = icmp ugt i32 %a, %b              ; <i1> [#uses=1]
43         br i1 %cmp, label %if.end, label %if.then
45 if.then:                ; preds = %entry
46         tail call void @bar() nounwind
47         ret void
49 if.end:         ; preds = %entry
50         ret void
53 define void @foo3(i32 %a, i32 %b) nounwind {
54 entry:
55         %cmp = icmp ult i32 %a, %b              ; <i1> [#uses=1]
56         br i1 %cmp, label %if.end, label %if.then
58 if.then:                ; preds = %entry
59         tail call void @bar() nounwind
60         ret void
62 if.end:         ; preds = %entry
63         ret void
66 define void @foo4(i32 %a, i32 %b) nounwind {
67 entry:
68         %cmp = icmp eq i32 %a, %b               ; <i1> [#uses=1]
69         br i1 %cmp, label %if.then, label %if.end
71 if.then:                ; preds = %entry
72         tail call void @bar() nounwind
73         ret void
75 if.end:         ; preds = %entry
76         ret void
79 define void @foo5(i32 %a, i32 %b) nounwind {
80 entry:
81         %cmp = icmp eq i32 %a, %b               ; <i1> [#uses=1]
82         br i1 %cmp, label %if.end, label %if.then
84 if.then:                ; preds = %entry
85         tail call void @bar() nounwind
86         ret void
88 if.end:         ; preds = %entry
89         ret void
92 define void @foo6(i32 %a, i32 %b) nounwind {
93 entry:
94         %cmp = icmp slt i32 %a, %b              ; <i1> [#uses=1]
95         br i1 %cmp, label %if.then, label %if.end
97 if.then:                ; preds = %entry
98         tail call void @bar() nounwind
99         ret void
101 if.end:         ; preds = %entry
102         ret void
105 define void @foo7(i32 %a, i32 %b) nounwind {
106 entry:
107         %cmp = icmp sgt i32 %a, %b              ; <i1> [#uses=1]
108         br i1 %cmp, label %if.then, label %if.end
110 if.then:                ; preds = %entry
111         tail call void @bar() nounwind
112         ret void
114 if.end:         ; preds = %entry
115         ret void
118 define void @foo8(i32 %a, i32 %b) nounwind {
119 entry:
120         %cmp = icmp sgt i32 %a, %b              ; <i1> [#uses=1]
121         br i1 %cmp, label %if.end, label %if.then
123 if.then:                ; preds = %entry
124         tail call void @bar() nounwind
125         ret void
127 if.end:         ; preds = %entry
128         ret void
131 define void @foo9(i32 %a, i32 %b) nounwind {
132 entry:
133         %cmp = icmp slt i32 %a, %b              ; <i1> [#uses=1]
134         br i1 %cmp, label %if.end, label %if.then
136 if.then:                ; preds = %entry
137         tail call void @bar() nounwind
138         ret void
140 if.end:         ; preds = %entry
141         ret void