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: or %s1, 12, (0)1
7 ; CHECK-NEXT: cmps.w.sx %s0, %s0, %s1
8 ; CHECK-NEXT: cmov.w.eq %s3, %s2, %s0
9 ; CHECK-NEXT: or %s0, 0, %s3
10 ; CHECK-NEXT: b.l.t (, %s10)
11 %5 = icmp eq i32 %0, 12
12 %6 = select i1 %5, i32 %2, i32 %3
16 define i32 @selectccne(i32, i32, i32, i32) {
17 ; CHECK-LABEL: selectccne:
19 ; CHECK-NEXT: or %s1, 12, (0)1
20 ; CHECK-NEXT: cmps.w.sx %s0, %s0, %s1
21 ; CHECK-NEXT: cmov.w.ne %s3, %s2, %s0
22 ; CHECK-NEXT: or %s0, 0, %s3
23 ; CHECK-NEXT: b.l.t (, %s10)
24 %5 = icmp ne i32 %0, 12
25 %6 = select i1 %5, i32 %2, i32 %3
29 define i32 @selectccsgt(i32, i32, i32, i32) {
30 ; CHECK-LABEL: selectccsgt:
32 ; CHECK-NEXT: or %s1, 12, (0)1
33 ; CHECK-NEXT: cmps.w.sx %s0, %s0, %s1
34 ; CHECK-NEXT: cmov.w.gt %s3, %s2, %s0
35 ; CHECK-NEXT: or %s0, 0, %s3
36 ; CHECK-NEXT: b.l.t (, %s10)
37 %5 = icmp sgt i32 %0, 12
38 %6 = select i1 %5, i32 %2, i32 %3
42 define i32 @selectccsge(i32, i32, i32, i32) {
43 ; CHECK-LABEL: selectccsge:
45 ; CHECK-NEXT: or %s1, 11, (0)1
46 ; CHECK-NEXT: cmps.w.sx %s0, %s0, %s1
47 ; CHECK-NEXT: cmov.w.gt %s3, %s2, %s0
48 ; CHECK-NEXT: or %s0, 0, %s3
49 ; CHECK-NEXT: b.l.t (, %s10)
50 %5 = icmp sge i32 %0, 12
51 %6 = select i1 %5, i32 %2, i32 %3
55 define i32 @selectccslt(i32, i32, i32, i32) {
56 ; CHECK-LABEL: selectccslt:
58 ; CHECK-NEXT: or %s1, 12, (0)1
59 ; CHECK-NEXT: cmps.w.sx %s0, %s0, %s1
60 ; CHECK-NEXT: cmov.w.lt %s3, %s2, %s0
61 ; CHECK-NEXT: or %s0, 0, %s3
62 ; CHECK-NEXT: b.l.t (, %s10)
63 %5 = icmp slt i32 %0, 12
64 %6 = select i1 %5, i32 %2, i32 %3
68 define i32 @selectccsle(i32, i32, i32, i32) {
69 ; CHECK-LABEL: selectccsle:
71 ; CHECK-NEXT: or %s1, 13, (0)1
72 ; CHECK-NEXT: cmps.w.sx %s0, %s0, %s1
73 ; CHECK-NEXT: cmov.w.lt %s3, %s2, %s0
74 ; CHECK-NEXT: or %s0, 0, %s3
75 ; CHECK-NEXT: b.l.t (, %s10)
76 %5 = icmp sle i32 %0, 12
77 %6 = select i1 %5, i32 %2, i32 %3
81 define i32 @selectccugt(i32, i32, i32, i32) {
82 ; CHECK-LABEL: selectccugt:
84 ; CHECK-NEXT: or %s1, 12, (0)1
85 ; CHECK-NEXT: cmpu.w %s0, %s0, %s1
86 ; CHECK-NEXT: cmov.w.gt %s3, %s2, %s0
87 ; CHECK-NEXT: or %s0, 0, %s3
88 ; CHECK-NEXT: b.l.t (, %s10)
89 %5 = icmp ugt i32 %0, 12
90 %6 = select i1 %5, i32 %2, i32 %3
94 define i32 @selectccuge(i32, i32, i32, i32) {
95 ; CHECK-LABEL: selectccuge:
97 ; CHECK-NEXT: or %s1, 11, (0)1
98 ; CHECK-NEXT: cmpu.w %s0, %s0, %s1
99 ; CHECK-NEXT: cmov.w.gt %s3, %s2, %s0
100 ; CHECK-NEXT: or %s0, 0, %s3
101 ; CHECK-NEXT: b.l.t (, %s10)
102 %5 = icmp uge i32 %0, 12
103 %6 = select i1 %5, i32 %2, i32 %3
107 define i32 @selectccult(i32, i32, i32, i32) {
108 ; CHECK-LABEL: selectccult:
110 ; CHECK-NEXT: or %s1, 12, (0)1
111 ; CHECK-NEXT: cmpu.w %s0, %s0, %s1
112 ; CHECK-NEXT: cmov.w.lt %s3, %s2, %s0
113 ; CHECK-NEXT: or %s0, 0, %s3
114 ; CHECK-NEXT: b.l.t (, %s10)
115 %5 = icmp ult i32 %0, 12
116 %6 = select i1 %5, i32 %2, i32 %3
120 define i32 @selectccule(i32, i32, i32, i32) {
121 ; CHECK-LABEL: selectccule:
123 ; CHECK-NEXT: or %s1, 13, (0)1
124 ; CHECK-NEXT: cmpu.w %s0, %s0, %s1
125 ; CHECK-NEXT: cmov.w.lt %s3, %s2, %s0
126 ; CHECK-NEXT: or %s0, 0, %s3
127 ; CHECK-NEXT: b.l.t (, %s10)
128 %5 = icmp ule i32 %0, 12
129 %6 = select i1 %5, i32 %2, i32 %3
133 define i32 @selectccugt2(i32, i32, i32, i32) {
134 ; CHECK-LABEL: selectccugt2:
136 ; CHECK-NEXT: or %s1, 12, (0)1
137 ; CHECK-NEXT: cmpu.w %s0, %s0, %s1
138 ; CHECK-NEXT: cmov.w.gt %s3, %s2, %s0
139 ; CHECK-NEXT: or %s0, 0, %s3
140 ; CHECK-NEXT: b.l.t (, %s10)
141 %5 = icmp ugt i32 %0, 12
142 %6 = select i1 %5, i32 %2, i32 %3
146 define i32 @selectccuge2(i32, i32, i32, i32) {
147 ; CHECK-LABEL: selectccuge2:
149 ; CHECK-NEXT: or %s1, 11, (0)1
150 ; CHECK-NEXT: cmpu.w %s0, %s0, %s1
151 ; CHECK-NEXT: cmov.w.gt %s3, %s2, %s0
152 ; CHECK-NEXT: or %s0, 0, %s3
153 ; CHECK-NEXT: b.l.t (, %s10)
154 %5 = icmp uge i32 %0, 12
155 %6 = select i1 %5, i32 %2, i32 %3
159 define i32 @selectccult2(i32, i32, i32, i32) {
160 ; CHECK-LABEL: selectccult2:
162 ; CHECK-NEXT: or %s1, 12, (0)1
163 ; CHECK-NEXT: cmpu.w %s0, %s0, %s1
164 ; CHECK-NEXT: cmov.w.lt %s3, %s2, %s0
165 ; CHECK-NEXT: or %s0, 0, %s3
166 ; CHECK-NEXT: b.l.t (, %s10)
167 %5 = icmp ult i32 %0, 12
168 %6 = select i1 %5, i32 %2, i32 %3
172 define i32 @selectccule2(i32, i32, i32, i32) {
173 ; CHECK-LABEL: selectccule2:
175 ; CHECK-NEXT: or %s1, 13, (0)1
176 ; CHECK-NEXT: cmpu.w %s0, %s0, %s1
177 ; CHECK-NEXT: cmov.w.lt %s3, %s2, %s0
178 ; CHECK-NEXT: or %s0, 0, %s3
179 ; CHECK-NEXT: b.l.t (, %s10)
180 %5 = icmp ule i32 %0, 12
181 %6 = select i1 %5, i32 %2, i32 %3