- Remove Tilmann's custom truncate lowering: it completely hosed over
[oota-llvm.git] / test / CodeGen / CellSPU / icmp64.ll
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
8
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"
10 target triple = "spu"
11
12 ; $3 = %arg1, $4 = %arg2, $5 = %val1, $6 = %val2
13 ; $3 = %arg1, $4 = %val1, $5 = %val2
14 ;
15 ; i64 integer comparisons:
16 define i64 @icmp_eq_select_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
17 entry:
18        %A = icmp eq i64 %arg1, %arg2
19        %B = select i1 %A, i64 %val1, i64 %val2
20        ret i64 %B
21 }
22
23 define i1 @icmp_eq_setcc_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
24 entry:
25        %A = icmp eq i64 %arg1, %arg2
26        ret i1 %A
27 }
28
29 define i64 @icmp_ne_select_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
30 entry:
31        %A = icmp ne i64 %arg1, %arg2
32        %B = select i1 %A, i64 %val1, i64 %val2
33        ret i64 %B
34 }
35
36 define i1 @icmp_ne_setcc_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
37 entry:
38        %A = icmp ne i64 %arg1, %arg2
39        ret i1 %A
40 }
41
42 ;; define i64 @icmp_ugt_select_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
43 ;; entry:
44 ;;        %A = icmp ugt i64 %arg1, %arg2
45 ;;        %B = select i1 %A, i64 %val1, i64 %val2
46 ;;        ret i64 %B
47 ;; }
48 ;; 
49 ;; define i1 @icmp_ugt_setcc_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
50 ;; entry:
51 ;;        %A = icmp ugt i64 %arg1, %arg2
52 ;;        ret i1 %A
53 ;; }
54 ;; 
55 ;; define i64 @icmp_uge_select_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
56 ;; entry:
57 ;;        %A = icmp uge i64 %arg1, %arg2
58 ;;        %B = select i1 %A, i64 %val1, i64 %val2
59 ;;        ret i64 %B
60 ;; }
61 ;; 
62 ;; define i1 @icmp_uge_setcc_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
63 ;; entry:
64 ;;        %A = icmp uge i64 %arg1, %arg2
65 ;;        ret i1 %A
66 ;; }
67 ;; 
68 ;; define i64 @icmp_ult_select_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
69 ;; entry:
70 ;;        %A = icmp ult i64 %arg1, %arg2
71 ;;        %B = select i1 %A, i64 %val1, i64 %val2
72 ;;        ret i64 %B
73 ;; }
74 ;; 
75 ;; define i1 @icmp_ult_setcc_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
76 ;; entry:
77 ;;        %A = icmp ult i64 %arg1, %arg2
78 ;;        ret i1 %A
79 ;; }
80 ;; 
81 ;; define i64 @icmp_ule_select_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
82 ;; entry:
83 ;;        %A = icmp ule i64 %arg1, %arg2
84 ;;        %B = select i1 %A, i64 %val1, i64 %val2
85 ;;        ret i64 %B
86 ;; }
87 ;; 
88 ;; define i1 @icmp_ule_setcc_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
89 ;; entry:
90 ;;        %A = icmp ule i64 %arg1, %arg2
91 ;;        ret i1 %A
92 ;; }
93 ;; 
94 ;; define i64 @icmp_sgt_select_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
95 ;; entry:
96 ;;        %A = icmp sgt i64 %arg1, %arg2
97 ;;        %B = select i1 %A, i64 %val1, i64 %val2
98 ;;        ret i64 %B
99 ;; }
100 ;; 
101 ;; define i1 @icmp_sgt_setcc_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
102 ;; entry:
103 ;;        %A = icmp sgt i64 %arg1, %arg2
104 ;;        ret i1 %A
105 ;; }
106 ;; 
107 ;; define i64 @icmp_sge_select_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
108 ;; entry:
109 ;;        %A = icmp sge i64 %arg1, %arg2
110 ;;        %B = select i1 %A, i64 %val1, i64 %val2
111 ;;        ret i64 %B
112 ;; }
113 ;; 
114 ;; define i1 @icmp_sge_setcc_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
115 ;; entry:
116 ;;        %A = icmp sge i64 %arg1, %arg2
117 ;;        ret i1 %A
118 ;; }
119 ;; 
120 ;; define i64 @icmp_slt_select_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
121 ;; entry:
122 ;;        %A = icmp slt i64 %arg1, %arg2
123 ;;        %B = select i1 %A, i64 %val1, i64 %val2
124 ;;        ret i64 %B
125 ;; }
126 ;; 
127 ;; define i1 @icmp_slt_setcc_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
128 ;; entry:
129 ;;        %A = icmp slt i64 %arg1, %arg2
130 ;;        ret i1 %A
131 ;; }
132 ;; 
133 ;; define i64 @icmp_sle_select_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
134 ;; entry:
135 ;;        %A = icmp sle i64 %arg1, %arg2
136 ;;        %B = select i1 %A, i64 %val1, i64 %val2
137 ;;        ret i64 %B
138 ;; }
139 ;; 
140 ;; define i1 @icmp_sle_setcc_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
141 ;; entry:
142 ;;        %A = icmp sle i64 %arg1, %arg2
143 ;;        ret i1 %A
144 ;; }