1; RUN: llc -march=mipsel -mcpu=mips32r6 -relocation-model=static < %s | FileCheck %s
2
3; Function Attrs: nounwind
4define void @l()  {
5entry:
6  %call = tail call i32 @k()
7  %call1 = tail call i32 @j()
8  %cmp = icmp eq i32 %call, %call1
9; CHECK: bnec
10  br i1 %cmp, label %if.then, label %if.end
11
12if.then:                                          ; preds = %entry:
13; CHECK: nop
14; CHECK: jal
15  tail call void @f(i32 signext -2)
16  br label %if.end
17
18if.end:                                           ; preds = %if.then, %entry
19  ret void
20}
21
22declare i32 @k()
23
24declare i32 @j()
25
26declare void @f(i32 signext)
27
28; Function Attrs: define void @l2()  {
29define void @l2()  {
30entry:
31  %call = tail call i32 @k()
32  %call1 = tail call i32 @i()
33  %cmp = icmp eq i32 %call, %call1
34; CHECK beqc
35  br i1 %cmp, label %if.end, label %if.then
36
37if.then:                                          ; preds = %entry:
38; CHECK: nop
39; CHECK: jal
40  tail call void @f(i32 signext -1)
41  br label %if.end
42
43if.end:                                           ; preds = %entry, %if.then
44  ret void
45}
46
47declare i32 @i()
48
49; Function Attrs: nounwind
50define void @l3()  {
51entry:
52  %call = tail call i32 @k()
53  %cmp = icmp slt i32 %call, 0
54; CHECK : bgez
55  br i1 %cmp, label %if.then, label %if.end
56
57if.then:                                          ; preds = %entry:
58; CHECK: nop
59; CHECK: jal
60  tail call void @f(i32 signext 0)
61  br label %if.end
62
63if.end:                                           ; preds = %if.then, %entry
64  ret void
65}
66
67; Function Attrs: nounwind
68define void @l4()  {
69entry:
70  %call = tail call i32 @k()
71  %cmp = icmp slt i32 %call, 1
72; CHECK: bgtzc
73  br i1 %cmp, label %if.then, label %if.end
74
75if.then:                                          ; preds = %entry:
76; CHECK: nop
77; CHECK: jal
78  tail call void @f(i32 signext 1)
79  br label %if.end
80
81if.end:                                           ; preds = %if.then, %entry
82  ret void
83}
84
85; Function Attrs: nounwind
86define void @l5()  {
87entry:
88  %call = tail call i32 @k()
89  %cmp = icmp sgt i32 %call, 0
90; CHECK: blezc
91  br i1 %cmp, label %if.then, label %if.end
92
93if.then:                                          ; preds = %entry:
94; CHECK: nop
95; CHECK: jal
96  tail call void @f(i32 signext 2)
97  br label %if.end
98
99if.end:                                           ; preds = %if.then, %entry
100  ret void
101}
102
103; Function Attrs: nounwind
104define void @l6()  {
105entry:
106  %call = tail call i32 @k()
107  %cmp = icmp sgt i32 %call, -1
108; CHECK: bltzc
109  br i1 %cmp, label %if.then, label %if.end
110
111if.then:                                          ; preds = %entry:
112; CHECK: nop
113; CHECK: jal
114  tail call void @f(i32 signext 3)
115  br label %if.end
116
117if.end:                                           ; preds = %if.then, %entry
118  ret void
119}
120
121; Function Attrs: nounwind
122define void @l7()  {
123entry:
124  %call = tail call i32 @k()
125  %cmp = icmp eq i32 %call, 0
126; CHECK: bnezc
127  br i1 %cmp, label %if.then, label %if.end
128
129if.then:                                          ; preds = %entry:
130; CHECK: nop
131; CHECK: jal
132  tail call void @f(i32 signext 4)
133  br label %if.end
134
135if.end:                                           ; preds = %if.then, %entry
136  ret void
137}
138
139; Function Attrs: nounwind
140define void @l8()  {
141entry:
142  %call = tail call i32 @k()
143  %cmp = icmp eq i32 %call, 0
144; CHECK: beqzc
145  br i1 %cmp, label %if.end, label %if.then
146
147if.then:                                          ; preds = %entry:
148; CHECK: nop
149; CHECK: jal
150  tail call void @f(i32 signext 5)
151  br label %if.end
152
153if.end:                                           ; preds = %entry, %if.then
154  ret void
155}
156