1; RUN: llc < %s -march=cellspu > %t1.s
2; RUN: grep ceq                                %t1.s | count 20
3; RUN: grep cgti                               %t1.s | count 12
4; RUN: grep cgt                                %t1.s | count 16
5; RUN: grep clgt                               %t1.s | count 12
6; RUN: grep gb                                 %t1.s | count 12
7; RUN: grep fsm                                %t1.s | count 10
8; RUN: grep xori                               %t1.s | count 5
9; RUN: grep selb                               %t1.s | count 18
10
11target datalayout = "E-p:32:32:128-f64:64:128-f32:32:128-i64:32:128-i32:32:128-i16:16:128-i8:8:128-i1:8:128-a0:0:128-v128:128:128-s0:128:128"
12target triple = "spu"
13
14; $3 = %arg1, $4 = %arg2, $5 = %val1, $6 = %val2
15; $3 = %arg1, $4 = %val1, $5 = %val2
16;
17; i64 integer comparisons:
18define i64 @icmp_eq_select_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
19entry:
20       %A = icmp eq i64 %arg1, %arg2
21       %B = select i1 %A, i64 %val1, i64 %val2
22       ret i64 %B
23}
24
25define i1 @icmp_eq_setcc_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
26entry:
27       %A = icmp eq i64 %arg1, %arg2
28       ret i1 %A
29}
30
31define i64 @icmp_ne_select_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
32entry:
33       %A = icmp ne i64 %arg1, %arg2
34       %B = select i1 %A, i64 %val1, i64 %val2
35       ret i64 %B
36}
37
38define i1 @icmp_ne_setcc_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
39entry:
40       %A = icmp ne i64 %arg1, %arg2
41       ret i1 %A
42}
43
44define i64 @icmp_ugt_select_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
45entry:
46       %A = icmp ugt i64 %arg1, %arg2
47       %B = select i1 %A, i64 %val1, i64 %val2
48       ret i64 %B
49}
50
51define i1 @icmp_ugt_setcc_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
52entry:
53       %A = icmp ugt i64 %arg1, %arg2
54       ret i1 %A
55}
56
57define i64 @icmp_uge_select_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
58entry:
59       %A = icmp uge i64 %arg1, %arg2
60       %B = select i1 %A, i64 %val1, i64 %val2
61       ret i64 %B
62}
63
64define i1 @icmp_uge_setcc_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
65entry:
66       %A = icmp uge i64 %arg1, %arg2
67       ret i1 %A
68}
69
70define i64 @icmp_ult_select_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
71entry:
72       %A = icmp ult i64 %arg1, %arg2
73       %B = select i1 %A, i64 %val1, i64 %val2
74       ret i64 %B
75}
76
77define i1 @icmp_ult_setcc_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
78entry:
79       %A = icmp ult i64 %arg1, %arg2
80       ret i1 %A
81}
82
83define i64 @icmp_ule_select_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
84entry:
85       %A = icmp ule i64 %arg1, %arg2
86       %B = select i1 %A, i64 %val1, i64 %val2
87       ret i64 %B
88}
89
90define i1 @icmp_ule_setcc_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
91entry:
92       %A = icmp ule i64 %arg1, %arg2
93       ret i1 %A
94}
95
96define i64 @icmp_sgt_select_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
97entry:
98       %A = icmp sgt i64 %arg1, %arg2
99       %B = select i1 %A, i64 %val1, i64 %val2
100       ret i64 %B
101}
102
103define i1 @icmp_sgt_setcc_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
104entry:
105       %A = icmp sgt i64 %arg1, %arg2
106       ret i1 %A
107}
108
109define i64 @icmp_sge_select_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
110entry:
111       %A = icmp sge i64 %arg1, %arg2
112       %B = select i1 %A, i64 %val1, i64 %val2
113       ret i64 %B
114}
115
116define i1 @icmp_sge_setcc_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
117entry:
118       %A = icmp sge i64 %arg1, %arg2
119       ret i1 %A
120}
121
122define i64 @icmp_slt_select_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
123entry:
124       %A = icmp slt i64 %arg1, %arg2
125       %B = select i1 %A, i64 %val1, i64 %val2
126       ret i64 %B
127}
128
129define i1 @icmp_slt_setcc_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
130entry:
131       %A = icmp slt i64 %arg1, %arg2
132       ret i1 %A
133}
134
135define i64 @icmp_sle_select_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
136entry:
137       %A = icmp sle i64 %arg1, %arg2
138       %B = select i1 %A, i64 %val1, i64 %val2
139       ret i64 %B
140}
141
142define i1 @icmp_sle_setcc_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
143entry:
144       %A = icmp sle i64 %arg1, %arg2
145       ret i1 %A
146}
147