Fixed some bugs in register stack pass.
[llvm/zpu.git] / test / CodeGen / SystemZ / 07-BrCond.ll
blob859971713aa35c846951d5e759f068e995c58fa1
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
8 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"
9 target triple = "s390x-unknown-linux-gnu"
11 define void @foo(i64 %a, i64 %b) nounwind {
12 entry:
13         %cmp = icmp ult i64 %a, %b              ; <i1> [#uses=1]
14         br i1 %cmp, label %if.then, label %if.end
16 if.then:                ; preds = %entry
17         tail call void @bar() nounwind
18         ret void
20 if.end:         ; preds = %entry
21         ret void
24 declare void @bar()
26 define void @foo1(i64 %a, i64 %b) nounwind {
27 entry:
28         %cmp = icmp ugt i64 %a, %b              ; <i1> [#uses=1]
29         br i1 %cmp, label %if.then, label %if.end
31 if.then:                ; preds = %entry
32         tail call void @bar() nounwind
33         ret void
35 if.end:         ; preds = %entry
36         ret void
39 define void @foo2(i64 %a, i64 %b) nounwind {
40 entry:
41         %cmp = icmp ugt i64 %a, %b              ; <i1> [#uses=1]
42         br i1 %cmp, label %if.end, label %if.then
44 if.then:                ; preds = %entry
45         tail call void @bar() nounwind
46         ret void
48 if.end:         ; preds = %entry
49         ret void
52 define void @foo3(i64 %a, i64 %b) nounwind {
53 entry:
54         %cmp = icmp ult i64 %a, %b              ; <i1> [#uses=1]
55         br i1 %cmp, label %if.end, label %if.then
57 if.then:                ; preds = %entry
58         tail call void @bar() nounwind
59         ret void
61 if.end:         ; preds = %entry
62         ret void
65 define void @foo4(i64 %a, i64 %b) nounwind {
66 entry:
67         %cmp = icmp eq i64 %a, %b               ; <i1> [#uses=1]
68         br i1 %cmp, label %if.then, label %if.end
70 if.then:                ; preds = %entry
71         tail call void @bar() nounwind
72         ret void
74 if.end:         ; preds = %entry
75         ret void
78 define void @foo5(i64 %a, i64 %b) nounwind {
79 entry:
80         %cmp = icmp eq i64 %a, %b               ; <i1> [#uses=1]
81         br i1 %cmp, label %if.end, label %if.then
83 if.then:                ; preds = %entry
84         tail call void @bar() nounwind
85         ret void
87 if.end:         ; preds = %entry
88         ret void
91 define void @foo6(i64 %a, i64 %b) nounwind {
92 entry:
93         %cmp = icmp slt i64 %a, %b              ; <i1> [#uses=1]
94         br i1 %cmp, label %if.then, label %if.end
96 if.then:                ; preds = %entry
97         tail call void @bar() nounwind
98         ret void
100 if.end:         ; preds = %entry
101         ret void
104 define void @foo7(i64 %a, i64 %b) nounwind {
105 entry:
106         %cmp = icmp sgt i64 %a, %b              ; <i1> [#uses=1]
107         br i1 %cmp, label %if.then, label %if.end
109 if.then:                ; preds = %entry
110         tail call void @bar() nounwind
111         ret void
113 if.end:         ; preds = %entry
114         ret void
117 define void @foo8(i64 %a, i64 %b) nounwind {
118 entry:
119         %cmp = icmp sgt i64 %a, %b              ; <i1> [#uses=1]
120         br i1 %cmp, label %if.end, label %if.then
122 if.then:                ; preds = %entry
123         tail call void @bar() nounwind
124         ret void
126 if.end:         ; preds = %entry
127         ret void
130 define void @foo9(i64 %a, i64 %b) nounwind {
131 entry:
132         %cmp = icmp slt i64 %a, %b              ; <i1> [#uses=1]
133         br i1 %cmp, label %if.end, label %if.then
135 if.then:                ; preds = %entry
136         tail call void @bar() nounwind
137         ret void
139 if.end:         ; preds = %entry
140         ret void