1 ; RUN: llc < %s -mtriple=ve-unknown-unknown | FileCheck %s
3 define i32 @selectcceq(i32, i32, i32, i32) {
4 ; CHECK-LABEL: selectcceq:
6 ; CHECK-NEXT: cmpu.w %s0, %s0, %s1
7 ; CHECK-NEXT: cmov.w.eq %s3, %s2, %s0
8 ; CHECK-NEXT: or %s0, 0, %s3
9 ; CHECK-NEXT: b.l.t (, %s10)
10 %5 = icmp eq i32 %0, %1
11 %6 = select i1 %5, i32 %2, i32 %3
15 define i32 @selectccne(i32, i32, i32, i32) {
16 ; CHECK-LABEL: selectccne:
18 ; CHECK-NEXT: cmpu.w %s0, %s0, %s1
19 ; CHECK-NEXT: cmov.w.ne %s3, %s2, %s0
20 ; CHECK-NEXT: or %s0, 0, %s3
21 ; CHECK-NEXT: b.l.t (, %s10)
22 %5 = icmp ne i32 %0, %1
23 %6 = select i1 %5, i32 %2, i32 %3
27 define i32 @selectccsgt(i32, i32, i32, i32) {
28 ; CHECK-LABEL: selectccsgt:
30 ; CHECK-NEXT: cmps.w.zx %s0, %s0, %s1
31 ; CHECK-NEXT: cmov.w.gt %s3, %s2, %s0
32 ; CHECK-NEXT: or %s0, 0, %s3
33 ; CHECK-NEXT: b.l.t (, %s10)
34 %5 = icmp sgt i32 %0, %1
35 %6 = select i1 %5, i32 %2, i32 %3
39 define i32 @selectccsge(i32, i32, i32, i32) {
40 ; CHECK-LABEL: selectccsge:
42 ; CHECK-NEXT: cmps.w.zx %s0, %s0, %s1
43 ; CHECK-NEXT: cmov.w.ge %s3, %s2, %s0
44 ; CHECK-NEXT: or %s0, 0, %s3
45 ; CHECK-NEXT: b.l.t (, %s10)
46 %5 = icmp sge i32 %0, %1
47 %6 = select i1 %5, i32 %2, i32 %3
51 define i32 @selectccslt(i32, i32, i32, i32) {
52 ; CHECK-LABEL: selectccslt:
54 ; CHECK-NEXT: cmps.w.zx %s0, %s0, %s1
55 ; CHECK-NEXT: cmov.w.lt %s3, %s2, %s0
56 ; CHECK-NEXT: or %s0, 0, %s3
57 ; CHECK-NEXT: b.l.t (, %s10)
58 %5 = icmp slt i32 %0, %1
59 %6 = select i1 %5, i32 %2, i32 %3
63 define i32 @selectccsle(i32, i32, i32, i32) {
64 ; CHECK-LABEL: selectccsle:
66 ; CHECK-NEXT: cmps.w.zx %s0, %s0, %s1
67 ; CHECK-NEXT: cmov.w.le %s3, %s2, %s0
68 ; CHECK-NEXT: or %s0, 0, %s3
69 ; CHECK-NEXT: b.l.t (, %s10)
70 %5 = icmp sle i32 %0, %1
71 %6 = select i1 %5, i32 %2, i32 %3
75 define i32 @selectccugt(i32, i32, i32, i32) {
76 ; CHECK-LABEL: selectccugt:
78 ; CHECK-NEXT: cmpu.w %s0, %s0, %s1
79 ; CHECK-NEXT: cmov.w.gt %s3, %s2, %s0
80 ; CHECK-NEXT: or %s0, 0, %s3
81 ; CHECK-NEXT: b.l.t (, %s10)
82 %5 = icmp ugt i32 %0, %1
83 %6 = select i1 %5, i32 %2, i32 %3
87 define i32 @selectccuge(i32, i32, i32, i32) {
88 ; CHECK-LABEL: selectccuge:
90 ; CHECK-NEXT: cmpu.w %s0, %s0, %s1
91 ; CHECK-NEXT: cmov.w.ge %s3, %s2, %s0
92 ; CHECK-NEXT: or %s0, 0, %s3
93 ; CHECK-NEXT: b.l.t (, %s10)
94 %5 = icmp uge i32 %0, %1
95 %6 = select i1 %5, i32 %2, i32 %3
99 define i32 @selectccult(i32, i32, i32, i32) {
100 ; CHECK-LABEL: selectccult:
102 ; CHECK-NEXT: cmpu.w %s0, %s0, %s1
103 ; CHECK-NEXT: cmov.w.lt %s3, %s2, %s0
104 ; CHECK-NEXT: or %s0, 0, %s3
105 ; CHECK-NEXT: b.l.t (, %s10)
106 %5 = icmp ult i32 %0, %1
107 %6 = select i1 %5, i32 %2, i32 %3
111 define i32 @selectccule(i32, i32, i32, i32) {
112 ; CHECK-LABEL: selectccule:
114 ; CHECK-NEXT: cmpu.w %s0, %s0, %s1
115 ; CHECK-NEXT: cmov.w.le %s3, %s2, %s0
116 ; CHECK-NEXT: or %s0, 0, %s3
117 ; CHECK-NEXT: b.l.t (, %s10)
118 %5 = icmp ule i32 %0, %1
119 %6 = select i1 %5, i32 %2, i32 %3
123 define i32 @selectccugt2(i32, i32, i32, i32) {
124 ; CHECK-LABEL: selectccugt2:
126 ; CHECK-NEXT: cmpu.w %s0, %s0, %s1
127 ; CHECK-NEXT: cmov.w.gt %s3, %s2, %s0
128 ; CHECK-NEXT: or %s0, 0, %s3
129 ; CHECK-NEXT: b.l.t (, %s10)
130 %5 = icmp ugt i32 %0, %1
131 %6 = select i1 %5, i32 %2, i32 %3
135 define i32 @selectccuge2(i32, i32, i32, i32) {
136 ; CHECK-LABEL: selectccuge2:
138 ; CHECK-NEXT: cmpu.w %s0, %s0, %s1
139 ; CHECK-NEXT: cmov.w.ge %s3, %s2, %s0
140 ; CHECK-NEXT: or %s0, 0, %s3
141 ; CHECK-NEXT: b.l.t (, %s10)
142 %5 = icmp uge i32 %0, %1
143 %6 = select i1 %5, i32 %2, i32 %3
147 define i32 @selectccult2(i32, i32, i32, i32) {
148 ; CHECK-LABEL: selectccult2:
150 ; CHECK-NEXT: cmpu.w %s0, %s0, %s1
151 ; CHECK-NEXT: cmov.w.lt %s3, %s2, %s0
152 ; CHECK-NEXT: or %s0, 0, %s3
153 ; CHECK-NEXT: b.l.t (, %s10)
154 %5 = icmp ult i32 %0, %1
155 %6 = select i1 %5, i32 %2, i32 %3
159 define i32 @selectccule2(i32, i32, i32, i32) {
160 ; CHECK-LABEL: selectccule2:
162 ; CHECK-NEXT: cmpu.w %s0, %s0, %s1
163 ; CHECK-NEXT: cmov.w.le %s3, %s2, %s0
164 ; CHECK-NEXT: or %s0, 0, %s3
165 ; CHECK-NEXT: b.l.t (, %s10)
166 %5 = icmp ule i32 %0, %1
167 %6 = select i1 %5, i32 %2, i32 %3