1 ; RUN: llvm-as -o - %s | llc -march=cellspu > %t1.s
2 ; RUN: grep ceq %t1.s | count 4
3 ; RUN: grep cgti %t1.s | count 4
4 ; RUN: grep gb %t1.s | count 4
5 ; RUN: grep fsm %t1.s | count 2
6 ; RUN: grep xori %t1.s | count 1
7 ; RUN: grep selb %t1.s | count 2
9 target 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"
12 ; $3 = %arg1, $4 = %arg2, $5 = %val1, $6 = %val2
13 ; $3 = %arg1, $4 = %val1, $5 = %val2
15 ; i64 integer comparisons:
16 define i64 @icmp_eq_select_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
18 %A = icmp eq i64 %arg1, %arg2
19 %B = select i1 %A, i64 %val1, i64 %val2
23 define i1 @icmp_eq_setcc_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
25 %A = icmp eq i64 %arg1, %arg2
29 define i64 @icmp_ne_select_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
31 %A = icmp ne i64 %arg1, %arg2
32 %B = select i1 %A, i64 %val1, i64 %val2
36 define i1 @icmp_ne_setcc_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
38 %A = icmp ne i64 %arg1, %arg2
42 ;; define i64 @icmp_ugt_select_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
44 ;; %A = icmp ugt i64 %arg1, %arg2
45 ;; %B = select i1 %A, i64 %val1, i64 %val2
49 ;; define i1 @icmp_ugt_setcc_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
51 ;; %A = icmp ugt i64 %arg1, %arg2
55 ;; define i64 @icmp_uge_select_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
57 ;; %A = icmp uge i64 %arg1, %arg2
58 ;; %B = select i1 %A, i64 %val1, i64 %val2
62 ;; define i1 @icmp_uge_setcc_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
64 ;; %A = icmp uge i64 %arg1, %arg2
68 ;; define i64 @icmp_ult_select_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
70 ;; %A = icmp ult i64 %arg1, %arg2
71 ;; %B = select i1 %A, i64 %val1, i64 %val2
75 ;; define i1 @icmp_ult_setcc_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
77 ;; %A = icmp ult i64 %arg1, %arg2
81 ;; define i64 @icmp_ule_select_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
83 ;; %A = icmp ule i64 %arg1, %arg2
84 ;; %B = select i1 %A, i64 %val1, i64 %val2
88 ;; define i1 @icmp_ule_setcc_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
90 ;; %A = icmp ule i64 %arg1, %arg2
94 ;; define i64 @icmp_sgt_select_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
96 ;; %A = icmp sgt i64 %arg1, %arg2
97 ;; %B = select i1 %A, i64 %val1, i64 %val2
101 ;; define i1 @icmp_sgt_setcc_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
103 ;; %A = icmp sgt i64 %arg1, %arg2
107 ;; define i64 @icmp_sge_select_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
109 ;; %A = icmp sge i64 %arg1, %arg2
110 ;; %B = select i1 %A, i64 %val1, i64 %val2
114 ;; define i1 @icmp_sge_setcc_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
116 ;; %A = icmp sge i64 %arg1, %arg2
120 ;; define i64 @icmp_slt_select_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
122 ;; %A = icmp slt i64 %arg1, %arg2
123 ;; %B = select i1 %A, i64 %val1, i64 %val2
127 ;; define i1 @icmp_slt_setcc_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
129 ;; %A = icmp slt i64 %arg1, %arg2
133 ;; define i64 @icmp_sle_select_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
135 ;; %A = icmp sle i64 %arg1, %arg2
136 ;; %B = select i1 %A, i64 %val1, i64 %val2
140 ;; define i1 @icmp_sle_setcc_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
142 ;; %A = icmp sle i64 %arg1, %arg2