blob: d2b4fc096eec422f3e9c3a8d63e7e54c1bf3dea8 [file] [log] [blame]
Scott Michelf0569be2008-12-27 04:51:36 +00001; 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
9target 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"
10target triple = "spu"
11
12; $3 = %arg1, $4 = %arg2, $5 = %val1, $6 = %val2
13; $3 = %arg1, $4 = %val1, $5 = %val2
14;
15; i64 integer comparisons:
16define i64 @icmp_eq_select_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
17entry:
18 %A = icmp eq i64 %arg1, %arg2
19 %B = select i1 %A, i64 %val1, i64 %val2
20 ret i64 %B
21}
22
23define i1 @icmp_eq_setcc_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
24entry:
25 %A = icmp eq i64 %arg1, %arg2
26 ret i1 %A
27}
28
29define i64 @icmp_ne_select_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
30entry:
31 %A = icmp ne i64 %arg1, %arg2
32 %B = select i1 %A, i64 %val1, i64 %val2
33 ret i64 %B
34}
35
36define i1 @icmp_ne_setcc_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
37entry:
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;; }