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