1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -mcpu=pwr5 < %s | FileCheck %s --check-prefix=PWR5
3 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -mcpu=pwr6 < %s | FileCheck %s --check-prefix=PWR6
4 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -mcpu=pwr7 < %s | FileCheck %s --check-prefix=PWR7
5 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -mcpu=pwr8 < %s | FileCheck %s --check-prefix=PWR8
6 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -mcpu=pwr9 < %s | FileCheck %s --check-prefix=PWR9
9 define <16 x i8> @ugt_1_v16i8(<16 x i8> %0) {
10 ; PWR5-LABEL: ugt_1_v16i8:
12 ; PWR5-NEXT: vspltisb 3, -1
13 ; PWR5-NEXT: vaddubm 3, 2, 3
14 ; PWR5-NEXT: vand 2, 2, 3
15 ; PWR5-NEXT: vxor 3, 3, 3
16 ; PWR5-NEXT: vcmpequb 2, 2, 3
17 ; PWR5-NEXT: vnot 2, 2
20 ; PWR6-LABEL: ugt_1_v16i8:
22 ; PWR6-NEXT: vspltisb 3, -1
23 ; PWR6-NEXT: vaddubm 3, 2, 3
24 ; PWR6-NEXT: vand 2, 2, 3
25 ; PWR6-NEXT: vxor 3, 3, 3
26 ; PWR6-NEXT: vcmpequb 2, 2, 3
27 ; PWR6-NEXT: vnot 2, 2
30 ; PWR7-LABEL: ugt_1_v16i8:
32 ; PWR7-NEXT: vspltisb 3, -1
33 ; PWR7-NEXT: vaddubm 3, 2, 3
34 ; PWR7-NEXT: xxland 34, 34, 35
35 ; PWR7-NEXT: xxlxor 35, 35, 35
36 ; PWR7-NEXT: vcmpequb 2, 2, 3
37 ; PWR7-NEXT: xxlnor 34, 34, 34
40 ; PWR8-LABEL: ugt_1_v16i8:
42 ; PWR8-NEXT: vspltisb 3, 1
43 ; PWR8-NEXT: vpopcntb 2, 2
44 ; PWR8-NEXT: vcmpgtub 2, 2, 3
47 ; PWR9-LABEL: ugt_1_v16i8:
49 ; PWR9-NEXT: xxspltib 35, 1
50 ; PWR9-NEXT: vpopcntb 2, 2
51 ; PWR9-NEXT: vcmpgtub 2, 2, 3
53 %2 = tail call <16 x i8> @llvm.ctpop.v16i8(<16 x i8> %0)
54 %3 = icmp ugt <16 x i8> %2, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
55 %4 = sext <16 x i1> %3 to <16 x i8>
59 define <16 x i8> @ult_2_v16i8(<16 x i8> %0) {
60 ; PWR5-LABEL: ult_2_v16i8:
62 ; PWR5-NEXT: vspltisb 3, -1
63 ; PWR5-NEXT: vaddubm 3, 2, 3
64 ; PWR5-NEXT: vand 2, 2, 3
65 ; PWR5-NEXT: vxor 3, 3, 3
66 ; PWR5-NEXT: vcmpequb 2, 2, 3
69 ; PWR6-LABEL: ult_2_v16i8:
71 ; PWR6-NEXT: vspltisb 3, -1
72 ; PWR6-NEXT: vaddubm 3, 2, 3
73 ; PWR6-NEXT: vand 2, 2, 3
74 ; PWR6-NEXT: vxor 3, 3, 3
75 ; PWR6-NEXT: vcmpequb 2, 2, 3
78 ; PWR7-LABEL: ult_2_v16i8:
80 ; PWR7-NEXT: vspltisb 3, -1
81 ; PWR7-NEXT: vaddubm 3, 2, 3
82 ; PWR7-NEXT: xxland 34, 34, 35
83 ; PWR7-NEXT: xxlxor 35, 35, 35
84 ; PWR7-NEXT: vcmpequb 2, 2, 3
87 ; PWR8-LABEL: ult_2_v16i8:
89 ; PWR8-NEXT: vspltisb 3, 2
90 ; PWR8-NEXT: vpopcntb 2, 2
91 ; PWR8-NEXT: vcmpgtub 2, 3, 2
94 ; PWR9-LABEL: ult_2_v16i8:
96 ; PWR9-NEXT: xxspltib 35, 2
97 ; PWR9-NEXT: vpopcntb 2, 2
98 ; PWR9-NEXT: vcmpgtub 2, 3, 2
100 %2 = tail call <16 x i8> @llvm.ctpop.v16i8(<16 x i8> %0)
101 %3 = icmp ult <16 x i8> %2, <i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2>
102 %4 = sext <16 x i1> %3 to <16 x i8>
106 define <16 x i8> @ugt_2_v16i8(<16 x i8> %0) {
107 ; PWR5-LABEL: ugt_2_v16i8:
109 ; PWR5-NEXT: addis 3, 2, .LCPI2_0@toc@ha
110 ; PWR5-NEXT: vspltisb 3, 1
111 ; PWR5-NEXT: addi 3, 3, .LCPI2_0@toc@l
112 ; PWR5-NEXT: vsrb 3, 2, 3
113 ; PWR5-NEXT: lvx 4, 0, 3
114 ; PWR5-NEXT: addis 3, 2, .LCPI2_1@toc@ha
115 ; PWR5-NEXT: addi 3, 3, .LCPI2_1@toc@l
116 ; PWR5-NEXT: vspltisb 5, 2
117 ; PWR5-NEXT: vand 3, 3, 4
118 ; PWR5-NEXT: lvx 4, 0, 3
119 ; PWR5-NEXT: vsububm 2, 2, 3
120 ; PWR5-NEXT: vand 3, 2, 4
121 ; PWR5-NEXT: vsrb 2, 2, 5
122 ; PWR5-NEXT: vand 2, 2, 4
123 ; PWR5-NEXT: vspltisb 4, 4
124 ; PWR5-NEXT: vaddubm 2, 3, 2
125 ; PWR5-NEXT: vsrb 3, 2, 4
126 ; PWR5-NEXT: vspltisb 4, 15
127 ; PWR5-NEXT: vaddubm 2, 2, 3
128 ; PWR5-NEXT: vand 2, 2, 4
129 ; PWR5-NEXT: vcmpgtub 2, 2, 5
132 ; PWR6-LABEL: ugt_2_v16i8:
134 ; PWR6-NEXT: addis 3, 2, .LCPI2_0@toc@ha
135 ; PWR6-NEXT: vspltisb 3, 1
136 ; PWR6-NEXT: addi 3, 3, .LCPI2_0@toc@l
137 ; PWR6-NEXT: vsrb 3, 2, 3
138 ; PWR6-NEXT: lvx 4, 0, 3
139 ; PWR6-NEXT: addis 3, 2, .LCPI2_1@toc@ha
140 ; PWR6-NEXT: addi 3, 3, .LCPI2_1@toc@l
141 ; PWR6-NEXT: vspltisb 5, 2
142 ; PWR6-NEXT: vand 3, 3, 4
143 ; PWR6-NEXT: lvx 4, 0, 3
144 ; PWR6-NEXT: vsububm 2, 2, 3
145 ; PWR6-NEXT: vand 3, 2, 4
146 ; PWR6-NEXT: vsrb 2, 2, 5
147 ; PWR6-NEXT: vand 2, 2, 4
148 ; PWR6-NEXT: vspltisb 4, 4
149 ; PWR6-NEXT: vaddubm 2, 3, 2
150 ; PWR6-NEXT: vsrb 3, 2, 4
151 ; PWR6-NEXT: vspltisb 4, 15
152 ; PWR6-NEXT: vaddubm 2, 2, 3
153 ; PWR6-NEXT: vand 2, 2, 4
154 ; PWR6-NEXT: vcmpgtub 2, 2, 5
157 ; PWR7-LABEL: ugt_2_v16i8:
159 ; PWR7-NEXT: vspltisb 3, 1
160 ; PWR7-NEXT: addis 3, 2, .LCPI2_0@toc@ha
161 ; PWR7-NEXT: addi 3, 3, .LCPI2_0@toc@l
162 ; PWR7-NEXT: vspltisb 4, 2
163 ; PWR7-NEXT: lxvw4x 0, 0, 3
164 ; PWR7-NEXT: addis 3, 2, .LCPI2_1@toc@ha
165 ; PWR7-NEXT: vspltisb 5, 4
166 ; PWR7-NEXT: vsrb 3, 2, 3
167 ; PWR7-NEXT: addi 3, 3, .LCPI2_1@toc@l
168 ; PWR7-NEXT: xxland 35, 35, 0
169 ; PWR7-NEXT: lxvw4x 0, 0, 3
170 ; PWR7-NEXT: vsububm 2, 2, 3
171 ; PWR7-NEXT: vsrb 3, 2, 4
172 ; PWR7-NEXT: xxland 34, 34, 0
173 ; PWR7-NEXT: xxland 35, 35, 0
174 ; PWR7-NEXT: vaddubm 2, 2, 3
175 ; PWR7-NEXT: vsrb 3, 2, 5
176 ; PWR7-NEXT: vspltisb 5, 15
177 ; PWR7-NEXT: vaddubm 2, 2, 3
178 ; PWR7-NEXT: xxland 34, 34, 37
179 ; PWR7-NEXT: vcmpgtub 2, 2, 4
182 ; PWR8-LABEL: ugt_2_v16i8:
184 ; PWR8-NEXT: vspltisb 3, 2
185 ; PWR8-NEXT: vpopcntb 2, 2
186 ; PWR8-NEXT: vcmpgtub 2, 2, 3
189 ; PWR9-LABEL: ugt_2_v16i8:
191 ; PWR9-NEXT: xxspltib 35, 2
192 ; PWR9-NEXT: vpopcntb 2, 2
193 ; PWR9-NEXT: vcmpgtub 2, 2, 3
195 %2 = tail call <16 x i8> @llvm.ctpop.v16i8(<16 x i8> %0)
196 %3 = icmp ugt <16 x i8> %2, <i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2>
197 %4 = sext <16 x i1> %3 to <16 x i8>
201 define <16 x i8> @ult_3_v16i8(<16 x i8> %0) {
202 ; PWR5-LABEL: ult_3_v16i8:
204 ; PWR5-NEXT: addis 3, 2, .LCPI3_0@toc@ha
205 ; PWR5-NEXT: vspltisb 3, 1
206 ; PWR5-NEXT: addi 3, 3, .LCPI3_0@toc@l
207 ; PWR5-NEXT: vsrb 3, 2, 3
208 ; PWR5-NEXT: lvx 4, 0, 3
209 ; PWR5-NEXT: addis 3, 2, .LCPI3_1@toc@ha
210 ; PWR5-NEXT: addi 3, 3, .LCPI3_1@toc@l
211 ; PWR5-NEXT: vspltisb 5, 2
212 ; PWR5-NEXT: vand 3, 3, 4
213 ; PWR5-NEXT: lvx 4, 0, 3
214 ; PWR5-NEXT: vsububm 2, 2, 3
215 ; PWR5-NEXT: vand 3, 2, 4
216 ; PWR5-NEXT: vsrb 2, 2, 5
217 ; PWR5-NEXT: vand 2, 2, 4
218 ; PWR5-NEXT: vspltisb 4, 4
219 ; PWR5-NEXT: vaddubm 2, 3, 2
220 ; PWR5-NEXT: vsrb 3, 2, 4
221 ; PWR5-NEXT: vspltisb 4, 15
222 ; PWR5-NEXT: vaddubm 2, 2, 3
223 ; PWR5-NEXT: vspltisb 3, 3
224 ; PWR5-NEXT: vand 2, 2, 4
225 ; PWR5-NEXT: vcmpgtub 2, 3, 2
228 ; PWR6-LABEL: ult_3_v16i8:
230 ; PWR6-NEXT: addis 3, 2, .LCPI3_0@toc@ha
231 ; PWR6-NEXT: vspltisb 3, 1
232 ; PWR6-NEXT: addi 3, 3, .LCPI3_0@toc@l
233 ; PWR6-NEXT: vsrb 3, 2, 3
234 ; PWR6-NEXT: lvx 4, 0, 3
235 ; PWR6-NEXT: addis 3, 2, .LCPI3_1@toc@ha
236 ; PWR6-NEXT: addi 3, 3, .LCPI3_1@toc@l
237 ; PWR6-NEXT: vspltisb 5, 2
238 ; PWR6-NEXT: vand 3, 3, 4
239 ; PWR6-NEXT: lvx 4, 0, 3
240 ; PWR6-NEXT: vsububm 2, 2, 3
241 ; PWR6-NEXT: vand 3, 2, 4
242 ; PWR6-NEXT: vsrb 2, 2, 5
243 ; PWR6-NEXT: vand 2, 2, 4
244 ; PWR6-NEXT: vspltisb 4, 4
245 ; PWR6-NEXT: vaddubm 2, 3, 2
246 ; PWR6-NEXT: vsrb 3, 2, 4
247 ; PWR6-NEXT: vspltisb 4, 15
248 ; PWR6-NEXT: vaddubm 2, 2, 3
249 ; PWR6-NEXT: vspltisb 3, 3
250 ; PWR6-NEXT: vand 2, 2, 4
251 ; PWR6-NEXT: vcmpgtub 2, 3, 2
254 ; PWR7-LABEL: ult_3_v16i8:
256 ; PWR7-NEXT: vspltisb 3, 1
257 ; PWR7-NEXT: addis 3, 2, .LCPI3_0@toc@ha
258 ; PWR7-NEXT: addi 3, 3, .LCPI3_0@toc@l
259 ; PWR7-NEXT: vspltisb 4, 2
260 ; PWR7-NEXT: lxvw4x 0, 0, 3
261 ; PWR7-NEXT: addis 3, 2, .LCPI3_1@toc@ha
262 ; PWR7-NEXT: vsrb 3, 2, 3
263 ; PWR7-NEXT: addi 3, 3, .LCPI3_1@toc@l
264 ; PWR7-NEXT: xxland 35, 35, 0
265 ; PWR7-NEXT: lxvw4x 0, 0, 3
266 ; PWR7-NEXT: vsububm 2, 2, 3
267 ; PWR7-NEXT: vsrb 3, 2, 4
268 ; PWR7-NEXT: xxland 34, 34, 0
269 ; PWR7-NEXT: vspltisb 4, 4
270 ; PWR7-NEXT: xxland 35, 35, 0
271 ; PWR7-NEXT: vaddubm 2, 2, 3
272 ; PWR7-NEXT: vsrb 3, 2, 4
273 ; PWR7-NEXT: vspltisb 4, 15
274 ; PWR7-NEXT: vaddubm 2, 2, 3
275 ; PWR7-NEXT: vspltisb 3, 3
276 ; PWR7-NEXT: xxland 34, 34, 36
277 ; PWR7-NEXT: vcmpgtub 2, 3, 2
280 ; PWR8-LABEL: ult_3_v16i8:
282 ; PWR8-NEXT: vspltisb 3, 3
283 ; PWR8-NEXT: vpopcntb 2, 2
284 ; PWR8-NEXT: vcmpgtub 2, 3, 2
287 ; PWR9-LABEL: ult_3_v16i8:
289 ; PWR9-NEXT: xxspltib 35, 3
290 ; PWR9-NEXT: vpopcntb 2, 2
291 ; PWR9-NEXT: vcmpgtub 2, 3, 2
293 %2 = tail call <16 x i8> @llvm.ctpop.v16i8(<16 x i8> %0)
294 %3 = icmp ult <16 x i8> %2, <i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3>
295 %4 = sext <16 x i1> %3 to <16 x i8>
299 define <16 x i8> @ugt_3_v16i8(<16 x i8> %0) {
300 ; PWR5-LABEL: ugt_3_v16i8:
302 ; PWR5-NEXT: addis 3, 2, .LCPI4_0@toc@ha
303 ; PWR5-NEXT: vspltisb 3, 1
304 ; PWR5-NEXT: addi 3, 3, .LCPI4_0@toc@l
305 ; PWR5-NEXT: vsrb 3, 2, 3
306 ; PWR5-NEXT: lvx 4, 0, 3
307 ; PWR5-NEXT: addis 3, 2, .LCPI4_1@toc@ha
308 ; PWR5-NEXT: addi 3, 3, .LCPI4_1@toc@l
309 ; PWR5-NEXT: vspltisb 5, 2
310 ; PWR5-NEXT: vand 3, 3, 4
311 ; PWR5-NEXT: lvx 4, 0, 3
312 ; PWR5-NEXT: vsububm 2, 2, 3
313 ; PWR5-NEXT: vand 3, 2, 4
314 ; PWR5-NEXT: vsrb 2, 2, 5
315 ; PWR5-NEXT: vand 2, 2, 4
316 ; PWR5-NEXT: vspltisb 4, 4
317 ; PWR5-NEXT: vaddubm 2, 3, 2
318 ; PWR5-NEXT: vsrb 3, 2, 4
319 ; PWR5-NEXT: vspltisb 4, 15
320 ; PWR5-NEXT: vaddubm 2, 2, 3
321 ; PWR5-NEXT: vspltisb 3, 3
322 ; PWR5-NEXT: vand 2, 2, 4
323 ; PWR5-NEXT: vcmpgtub 2, 2, 3
326 ; PWR6-LABEL: ugt_3_v16i8:
328 ; PWR6-NEXT: addis 3, 2, .LCPI4_0@toc@ha
329 ; PWR6-NEXT: vspltisb 3, 1
330 ; PWR6-NEXT: addi 3, 3, .LCPI4_0@toc@l
331 ; PWR6-NEXT: vsrb 3, 2, 3
332 ; PWR6-NEXT: lvx 4, 0, 3
333 ; PWR6-NEXT: addis 3, 2, .LCPI4_1@toc@ha
334 ; PWR6-NEXT: addi 3, 3, .LCPI4_1@toc@l
335 ; PWR6-NEXT: vspltisb 5, 2
336 ; PWR6-NEXT: vand 3, 3, 4
337 ; PWR6-NEXT: lvx 4, 0, 3
338 ; PWR6-NEXT: vsububm 2, 2, 3
339 ; PWR6-NEXT: vand 3, 2, 4
340 ; PWR6-NEXT: vsrb 2, 2, 5
341 ; PWR6-NEXT: vand 2, 2, 4
342 ; PWR6-NEXT: vspltisb 4, 4
343 ; PWR6-NEXT: vaddubm 2, 3, 2
344 ; PWR6-NEXT: vsrb 3, 2, 4
345 ; PWR6-NEXT: vspltisb 4, 15
346 ; PWR6-NEXT: vaddubm 2, 2, 3
347 ; PWR6-NEXT: vspltisb 3, 3
348 ; PWR6-NEXT: vand 2, 2, 4
349 ; PWR6-NEXT: vcmpgtub 2, 2, 3
352 ; PWR7-LABEL: ugt_3_v16i8:
354 ; PWR7-NEXT: vspltisb 3, 1
355 ; PWR7-NEXT: addis 3, 2, .LCPI4_0@toc@ha
356 ; PWR7-NEXT: addi 3, 3, .LCPI4_0@toc@l
357 ; PWR7-NEXT: vspltisb 4, 2
358 ; PWR7-NEXT: lxvw4x 0, 0, 3
359 ; PWR7-NEXT: addis 3, 2, .LCPI4_1@toc@ha
360 ; PWR7-NEXT: vsrb 3, 2, 3
361 ; PWR7-NEXT: addi 3, 3, .LCPI4_1@toc@l
362 ; PWR7-NEXT: xxland 35, 35, 0
363 ; PWR7-NEXT: lxvw4x 0, 0, 3
364 ; PWR7-NEXT: vsububm 2, 2, 3
365 ; PWR7-NEXT: vsrb 3, 2, 4
366 ; PWR7-NEXT: xxland 34, 34, 0
367 ; PWR7-NEXT: vspltisb 4, 4
368 ; PWR7-NEXT: xxland 35, 35, 0
369 ; PWR7-NEXT: vaddubm 2, 2, 3
370 ; PWR7-NEXT: vsrb 3, 2, 4
371 ; PWR7-NEXT: vspltisb 4, 15
372 ; PWR7-NEXT: vaddubm 2, 2, 3
373 ; PWR7-NEXT: vspltisb 3, 3
374 ; PWR7-NEXT: xxland 34, 34, 36
375 ; PWR7-NEXT: vcmpgtub 2, 2, 3
378 ; PWR8-LABEL: ugt_3_v16i8:
380 ; PWR8-NEXT: vspltisb 3, 3
381 ; PWR8-NEXT: vpopcntb 2, 2
382 ; PWR8-NEXT: vcmpgtub 2, 2, 3
385 ; PWR9-LABEL: ugt_3_v16i8:
387 ; PWR9-NEXT: xxspltib 35, 3
388 ; PWR9-NEXT: vpopcntb 2, 2
389 ; PWR9-NEXT: vcmpgtub 2, 2, 3
391 %2 = tail call <16 x i8> @llvm.ctpop.v16i8(<16 x i8> %0)
392 %3 = icmp ugt <16 x i8> %2, <i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3>
393 %4 = sext <16 x i1> %3 to <16 x i8>
397 define <16 x i8> @ult_4_v16i8(<16 x i8> %0) {
398 ; PWR5-LABEL: ult_4_v16i8:
400 ; PWR5-NEXT: addis 3, 2, .LCPI5_0@toc@ha
401 ; PWR5-NEXT: vspltisb 3, 1
402 ; PWR5-NEXT: addi 3, 3, .LCPI5_0@toc@l
403 ; PWR5-NEXT: vsrb 3, 2, 3
404 ; PWR5-NEXT: lvx 4, 0, 3
405 ; PWR5-NEXT: addis 3, 2, .LCPI5_1@toc@ha
406 ; PWR5-NEXT: addi 3, 3, .LCPI5_1@toc@l
407 ; PWR5-NEXT: vspltisb 5, 2
408 ; PWR5-NEXT: vand 3, 3, 4
409 ; PWR5-NEXT: lvx 4, 0, 3
410 ; PWR5-NEXT: vsububm 2, 2, 3
411 ; PWR5-NEXT: vand 3, 2, 4
412 ; PWR5-NEXT: vsrb 2, 2, 5
413 ; PWR5-NEXT: vspltisb 5, 15
414 ; PWR5-NEXT: vand 2, 2, 4
415 ; PWR5-NEXT: vspltisb 4, 4
416 ; PWR5-NEXT: vaddubm 2, 3, 2
417 ; PWR5-NEXT: vsrb 3, 2, 4
418 ; PWR5-NEXT: vaddubm 2, 2, 3
419 ; PWR5-NEXT: vand 2, 2, 5
420 ; PWR5-NEXT: vcmpgtub 2, 4, 2
423 ; PWR6-LABEL: ult_4_v16i8:
425 ; PWR6-NEXT: addis 3, 2, .LCPI5_0@toc@ha
426 ; PWR6-NEXT: vspltisb 3, 1
427 ; PWR6-NEXT: addi 3, 3, .LCPI5_0@toc@l
428 ; PWR6-NEXT: vsrb 3, 2, 3
429 ; PWR6-NEXT: lvx 4, 0, 3
430 ; PWR6-NEXT: addis 3, 2, .LCPI5_1@toc@ha
431 ; PWR6-NEXT: addi 3, 3, .LCPI5_1@toc@l
432 ; PWR6-NEXT: vspltisb 5, 2
433 ; PWR6-NEXT: vand 3, 3, 4
434 ; PWR6-NEXT: lvx 4, 0, 3
435 ; PWR6-NEXT: vsububm 2, 2, 3
436 ; PWR6-NEXT: vand 3, 2, 4
437 ; PWR6-NEXT: vsrb 2, 2, 5
438 ; PWR6-NEXT: vspltisb 5, 15
439 ; PWR6-NEXT: vand 2, 2, 4
440 ; PWR6-NEXT: vspltisb 4, 4
441 ; PWR6-NEXT: vaddubm 2, 3, 2
442 ; PWR6-NEXT: vsrb 3, 2, 4
443 ; PWR6-NEXT: vaddubm 2, 2, 3
444 ; PWR6-NEXT: vand 2, 2, 5
445 ; PWR6-NEXT: vcmpgtub 2, 4, 2
448 ; PWR7-LABEL: ult_4_v16i8:
450 ; PWR7-NEXT: vspltisb 3, 1
451 ; PWR7-NEXT: addis 3, 2, .LCPI5_0@toc@ha
452 ; PWR7-NEXT: addi 3, 3, .LCPI5_0@toc@l
453 ; PWR7-NEXT: vspltisb 4, 2
454 ; PWR7-NEXT: lxvw4x 0, 0, 3
455 ; PWR7-NEXT: addis 3, 2, .LCPI5_1@toc@ha
456 ; PWR7-NEXT: vspltisb 5, 15
457 ; PWR7-NEXT: vsrb 3, 2, 3
458 ; PWR7-NEXT: addi 3, 3, .LCPI5_1@toc@l
459 ; PWR7-NEXT: xxland 35, 35, 0
460 ; PWR7-NEXT: lxvw4x 0, 0, 3
461 ; PWR7-NEXT: vsububm 2, 2, 3
462 ; PWR7-NEXT: vsrb 3, 2, 4
463 ; PWR7-NEXT: xxland 34, 34, 0
464 ; PWR7-NEXT: vspltisb 4, 4
465 ; PWR7-NEXT: xxland 35, 35, 0
466 ; PWR7-NEXT: vaddubm 2, 2, 3
467 ; PWR7-NEXT: vsrb 3, 2, 4
468 ; PWR7-NEXT: vaddubm 2, 2, 3
469 ; PWR7-NEXT: xxland 34, 34, 37
470 ; PWR7-NEXT: vcmpgtub 2, 4, 2
473 ; PWR8-LABEL: ult_4_v16i8:
475 ; PWR8-NEXT: vspltisb 3, 4
476 ; PWR8-NEXT: vpopcntb 2, 2
477 ; PWR8-NEXT: vcmpgtub 2, 3, 2
480 ; PWR9-LABEL: ult_4_v16i8:
482 ; PWR9-NEXT: xxspltib 35, 4
483 ; PWR9-NEXT: vpopcntb 2, 2
484 ; PWR9-NEXT: vcmpgtub 2, 3, 2
486 %2 = tail call <16 x i8> @llvm.ctpop.v16i8(<16 x i8> %0)
487 %3 = icmp ult <16 x i8> %2, <i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4>
488 %4 = sext <16 x i1> %3 to <16 x i8>
492 define <16 x i8> @ugt_4_v16i8(<16 x i8> %0) {
493 ; PWR5-LABEL: ugt_4_v16i8:
495 ; PWR5-NEXT: addis 3, 2, .LCPI6_0@toc@ha
496 ; PWR5-NEXT: vspltisb 3, 1
497 ; PWR5-NEXT: addi 3, 3, .LCPI6_0@toc@l
498 ; PWR5-NEXT: vsrb 3, 2, 3
499 ; PWR5-NEXT: lvx 4, 0, 3
500 ; PWR5-NEXT: addis 3, 2, .LCPI6_1@toc@ha
501 ; PWR5-NEXT: addi 3, 3, .LCPI6_1@toc@l
502 ; PWR5-NEXT: vspltisb 5, 2
503 ; PWR5-NEXT: vand 3, 3, 4
504 ; PWR5-NEXT: lvx 4, 0, 3
505 ; PWR5-NEXT: vsububm 2, 2, 3
506 ; PWR5-NEXT: vand 3, 2, 4
507 ; PWR5-NEXT: vsrb 2, 2, 5
508 ; PWR5-NEXT: vspltisb 5, 15
509 ; PWR5-NEXT: vand 2, 2, 4
510 ; PWR5-NEXT: vspltisb 4, 4
511 ; PWR5-NEXT: vaddubm 2, 3, 2
512 ; PWR5-NEXT: vsrb 3, 2, 4
513 ; PWR5-NEXT: vaddubm 2, 2, 3
514 ; PWR5-NEXT: vand 2, 2, 5
515 ; PWR5-NEXT: vcmpgtub 2, 2, 4
518 ; PWR6-LABEL: ugt_4_v16i8:
520 ; PWR6-NEXT: addis 3, 2, .LCPI6_0@toc@ha
521 ; PWR6-NEXT: vspltisb 3, 1
522 ; PWR6-NEXT: addi 3, 3, .LCPI6_0@toc@l
523 ; PWR6-NEXT: vsrb 3, 2, 3
524 ; PWR6-NEXT: lvx 4, 0, 3
525 ; PWR6-NEXT: addis 3, 2, .LCPI6_1@toc@ha
526 ; PWR6-NEXT: addi 3, 3, .LCPI6_1@toc@l
527 ; PWR6-NEXT: vspltisb 5, 2
528 ; PWR6-NEXT: vand 3, 3, 4
529 ; PWR6-NEXT: lvx 4, 0, 3
530 ; PWR6-NEXT: vsububm 2, 2, 3
531 ; PWR6-NEXT: vand 3, 2, 4
532 ; PWR6-NEXT: vsrb 2, 2, 5
533 ; PWR6-NEXT: vspltisb 5, 15
534 ; PWR6-NEXT: vand 2, 2, 4
535 ; PWR6-NEXT: vspltisb 4, 4
536 ; PWR6-NEXT: vaddubm 2, 3, 2
537 ; PWR6-NEXT: vsrb 3, 2, 4
538 ; PWR6-NEXT: vaddubm 2, 2, 3
539 ; PWR6-NEXT: vand 2, 2, 5
540 ; PWR6-NEXT: vcmpgtub 2, 2, 4
543 ; PWR7-LABEL: ugt_4_v16i8:
545 ; PWR7-NEXT: vspltisb 3, 1
546 ; PWR7-NEXT: addis 3, 2, .LCPI6_0@toc@ha
547 ; PWR7-NEXT: addi 3, 3, .LCPI6_0@toc@l
548 ; PWR7-NEXT: vspltisb 4, 2
549 ; PWR7-NEXT: lxvw4x 0, 0, 3
550 ; PWR7-NEXT: addis 3, 2, .LCPI6_1@toc@ha
551 ; PWR7-NEXT: vspltisb 5, 15
552 ; PWR7-NEXT: vsrb 3, 2, 3
553 ; PWR7-NEXT: addi 3, 3, .LCPI6_1@toc@l
554 ; PWR7-NEXT: xxland 35, 35, 0
555 ; PWR7-NEXT: lxvw4x 0, 0, 3
556 ; PWR7-NEXT: vsububm 2, 2, 3
557 ; PWR7-NEXT: vsrb 3, 2, 4
558 ; PWR7-NEXT: xxland 34, 34, 0
559 ; PWR7-NEXT: vspltisb 4, 4
560 ; PWR7-NEXT: xxland 35, 35, 0
561 ; PWR7-NEXT: vaddubm 2, 2, 3
562 ; PWR7-NEXT: vsrb 3, 2, 4
563 ; PWR7-NEXT: vaddubm 2, 2, 3
564 ; PWR7-NEXT: xxland 34, 34, 37
565 ; PWR7-NEXT: vcmpgtub 2, 2, 4
568 ; PWR8-LABEL: ugt_4_v16i8:
570 ; PWR8-NEXT: vspltisb 3, 4
571 ; PWR8-NEXT: vpopcntb 2, 2
572 ; PWR8-NEXT: vcmpgtub 2, 2, 3
575 ; PWR9-LABEL: ugt_4_v16i8:
577 ; PWR9-NEXT: xxspltib 35, 4
578 ; PWR9-NEXT: vpopcntb 2, 2
579 ; PWR9-NEXT: vcmpgtub 2, 2, 3
581 %2 = tail call <16 x i8> @llvm.ctpop.v16i8(<16 x i8> %0)
582 %3 = icmp ugt <16 x i8> %2, <i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4>
583 %4 = sext <16 x i1> %3 to <16 x i8>
587 define <16 x i8> @ult_5_v16i8(<16 x i8> %0) {
588 ; PWR5-LABEL: ult_5_v16i8:
590 ; PWR5-NEXT: addis 3, 2, .LCPI7_0@toc@ha
591 ; PWR5-NEXT: vspltisb 3, 1
592 ; PWR5-NEXT: addi 3, 3, .LCPI7_0@toc@l
593 ; PWR5-NEXT: vsrb 3, 2, 3
594 ; PWR5-NEXT: lvx 4, 0, 3
595 ; PWR5-NEXT: addis 3, 2, .LCPI7_1@toc@ha
596 ; PWR5-NEXT: addi 3, 3, .LCPI7_1@toc@l
597 ; PWR5-NEXT: vspltisb 5, 2
598 ; PWR5-NEXT: vand 3, 3, 4
599 ; PWR5-NEXT: lvx 4, 0, 3
600 ; PWR5-NEXT: vsububm 2, 2, 3
601 ; PWR5-NEXT: vand 3, 2, 4
602 ; PWR5-NEXT: vsrb 2, 2, 5
603 ; PWR5-NEXT: vand 2, 2, 4
604 ; PWR5-NEXT: vspltisb 4, 4
605 ; PWR5-NEXT: vaddubm 2, 3, 2
606 ; PWR5-NEXT: vsrb 3, 2, 4
607 ; PWR5-NEXT: vspltisb 4, 15
608 ; PWR5-NEXT: vaddubm 2, 2, 3
609 ; PWR5-NEXT: vspltisb 3, 5
610 ; PWR5-NEXT: vand 2, 2, 4
611 ; PWR5-NEXT: vcmpgtub 2, 3, 2
614 ; PWR6-LABEL: ult_5_v16i8:
616 ; PWR6-NEXT: addis 3, 2, .LCPI7_0@toc@ha
617 ; PWR6-NEXT: vspltisb 3, 1
618 ; PWR6-NEXT: addi 3, 3, .LCPI7_0@toc@l
619 ; PWR6-NEXT: vsrb 3, 2, 3
620 ; PWR6-NEXT: lvx 4, 0, 3
621 ; PWR6-NEXT: addis 3, 2, .LCPI7_1@toc@ha
622 ; PWR6-NEXT: addi 3, 3, .LCPI7_1@toc@l
623 ; PWR6-NEXT: vspltisb 5, 2
624 ; PWR6-NEXT: vand 3, 3, 4
625 ; PWR6-NEXT: lvx 4, 0, 3
626 ; PWR6-NEXT: vsububm 2, 2, 3
627 ; PWR6-NEXT: vand 3, 2, 4
628 ; PWR6-NEXT: vsrb 2, 2, 5
629 ; PWR6-NEXT: vand 2, 2, 4
630 ; PWR6-NEXT: vspltisb 4, 4
631 ; PWR6-NEXT: vaddubm 2, 3, 2
632 ; PWR6-NEXT: vsrb 3, 2, 4
633 ; PWR6-NEXT: vspltisb 4, 15
634 ; PWR6-NEXT: vaddubm 2, 2, 3
635 ; PWR6-NEXT: vspltisb 3, 5
636 ; PWR6-NEXT: vand 2, 2, 4
637 ; PWR6-NEXT: vcmpgtub 2, 3, 2
640 ; PWR7-LABEL: ult_5_v16i8:
642 ; PWR7-NEXT: vspltisb 3, 1
643 ; PWR7-NEXT: addis 3, 2, .LCPI7_0@toc@ha
644 ; PWR7-NEXT: addi 3, 3, .LCPI7_0@toc@l
645 ; PWR7-NEXT: vspltisb 4, 2
646 ; PWR7-NEXT: lxvw4x 0, 0, 3
647 ; PWR7-NEXT: addis 3, 2, .LCPI7_1@toc@ha
648 ; PWR7-NEXT: vsrb 3, 2, 3
649 ; PWR7-NEXT: addi 3, 3, .LCPI7_1@toc@l
650 ; PWR7-NEXT: xxland 35, 35, 0
651 ; PWR7-NEXT: lxvw4x 0, 0, 3
652 ; PWR7-NEXT: vsububm 2, 2, 3
653 ; PWR7-NEXT: vsrb 3, 2, 4
654 ; PWR7-NEXT: xxland 34, 34, 0
655 ; PWR7-NEXT: vspltisb 4, 4
656 ; PWR7-NEXT: xxland 35, 35, 0
657 ; PWR7-NEXT: vaddubm 2, 2, 3
658 ; PWR7-NEXT: vsrb 3, 2, 4
659 ; PWR7-NEXT: vspltisb 4, 15
660 ; PWR7-NEXT: vaddubm 2, 2, 3
661 ; PWR7-NEXT: vspltisb 3, 5
662 ; PWR7-NEXT: xxland 34, 34, 36
663 ; PWR7-NEXT: vcmpgtub 2, 3, 2
666 ; PWR8-LABEL: ult_5_v16i8:
668 ; PWR8-NEXT: vspltisb 3, 5
669 ; PWR8-NEXT: vpopcntb 2, 2
670 ; PWR8-NEXT: vcmpgtub 2, 3, 2
673 ; PWR9-LABEL: ult_5_v16i8:
675 ; PWR9-NEXT: xxspltib 35, 5
676 ; PWR9-NEXT: vpopcntb 2, 2
677 ; PWR9-NEXT: vcmpgtub 2, 3, 2
679 %2 = tail call <16 x i8> @llvm.ctpop.v16i8(<16 x i8> %0)
680 %3 = icmp ult <16 x i8> %2, <i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5>
681 %4 = sext <16 x i1> %3 to <16 x i8>
685 define <16 x i8> @ugt_5_v16i8(<16 x i8> %0) {
686 ; PWR5-LABEL: ugt_5_v16i8:
688 ; PWR5-NEXT: addis 3, 2, .LCPI8_0@toc@ha
689 ; PWR5-NEXT: vspltisb 3, 1
690 ; PWR5-NEXT: addi 3, 3, .LCPI8_0@toc@l
691 ; PWR5-NEXT: vsrb 3, 2, 3
692 ; PWR5-NEXT: lvx 4, 0, 3
693 ; PWR5-NEXT: addis 3, 2, .LCPI8_1@toc@ha
694 ; PWR5-NEXT: addi 3, 3, .LCPI8_1@toc@l
695 ; PWR5-NEXT: vspltisb 5, 2
696 ; PWR5-NEXT: vand 3, 3, 4
697 ; PWR5-NEXT: lvx 4, 0, 3
698 ; PWR5-NEXT: vsububm 2, 2, 3
699 ; PWR5-NEXT: vand 3, 2, 4
700 ; PWR5-NEXT: vsrb 2, 2, 5
701 ; PWR5-NEXT: vand 2, 2, 4
702 ; PWR5-NEXT: vspltisb 4, 4
703 ; PWR5-NEXT: vaddubm 2, 3, 2
704 ; PWR5-NEXT: vsrb 3, 2, 4
705 ; PWR5-NEXT: vspltisb 4, 15
706 ; PWR5-NEXT: vaddubm 2, 2, 3
707 ; PWR5-NEXT: vspltisb 3, 5
708 ; PWR5-NEXT: vand 2, 2, 4
709 ; PWR5-NEXT: vcmpgtub 2, 2, 3
712 ; PWR6-LABEL: ugt_5_v16i8:
714 ; PWR6-NEXT: addis 3, 2, .LCPI8_0@toc@ha
715 ; PWR6-NEXT: vspltisb 3, 1
716 ; PWR6-NEXT: addi 3, 3, .LCPI8_0@toc@l
717 ; PWR6-NEXT: vsrb 3, 2, 3
718 ; PWR6-NEXT: lvx 4, 0, 3
719 ; PWR6-NEXT: addis 3, 2, .LCPI8_1@toc@ha
720 ; PWR6-NEXT: addi 3, 3, .LCPI8_1@toc@l
721 ; PWR6-NEXT: vspltisb 5, 2
722 ; PWR6-NEXT: vand 3, 3, 4
723 ; PWR6-NEXT: lvx 4, 0, 3
724 ; PWR6-NEXT: vsububm 2, 2, 3
725 ; PWR6-NEXT: vand 3, 2, 4
726 ; PWR6-NEXT: vsrb 2, 2, 5
727 ; PWR6-NEXT: vand 2, 2, 4
728 ; PWR6-NEXT: vspltisb 4, 4
729 ; PWR6-NEXT: vaddubm 2, 3, 2
730 ; PWR6-NEXT: vsrb 3, 2, 4
731 ; PWR6-NEXT: vspltisb 4, 15
732 ; PWR6-NEXT: vaddubm 2, 2, 3
733 ; PWR6-NEXT: vspltisb 3, 5
734 ; PWR6-NEXT: vand 2, 2, 4
735 ; PWR6-NEXT: vcmpgtub 2, 2, 3
738 ; PWR7-LABEL: ugt_5_v16i8:
740 ; PWR7-NEXT: vspltisb 3, 1
741 ; PWR7-NEXT: addis 3, 2, .LCPI8_0@toc@ha
742 ; PWR7-NEXT: addi 3, 3, .LCPI8_0@toc@l
743 ; PWR7-NEXT: vspltisb 4, 2
744 ; PWR7-NEXT: lxvw4x 0, 0, 3
745 ; PWR7-NEXT: addis 3, 2, .LCPI8_1@toc@ha
746 ; PWR7-NEXT: vsrb 3, 2, 3
747 ; PWR7-NEXT: addi 3, 3, .LCPI8_1@toc@l
748 ; PWR7-NEXT: xxland 35, 35, 0
749 ; PWR7-NEXT: lxvw4x 0, 0, 3
750 ; PWR7-NEXT: vsububm 2, 2, 3
751 ; PWR7-NEXT: vsrb 3, 2, 4
752 ; PWR7-NEXT: xxland 34, 34, 0
753 ; PWR7-NEXT: vspltisb 4, 4
754 ; PWR7-NEXT: xxland 35, 35, 0
755 ; PWR7-NEXT: vaddubm 2, 2, 3
756 ; PWR7-NEXT: vsrb 3, 2, 4
757 ; PWR7-NEXT: vspltisb 4, 15
758 ; PWR7-NEXT: vaddubm 2, 2, 3
759 ; PWR7-NEXT: vspltisb 3, 5
760 ; PWR7-NEXT: xxland 34, 34, 36
761 ; PWR7-NEXT: vcmpgtub 2, 2, 3
764 ; PWR8-LABEL: ugt_5_v16i8:
766 ; PWR8-NEXT: vspltisb 3, 5
767 ; PWR8-NEXT: vpopcntb 2, 2
768 ; PWR8-NEXT: vcmpgtub 2, 2, 3
771 ; PWR9-LABEL: ugt_5_v16i8:
773 ; PWR9-NEXT: xxspltib 35, 5
774 ; PWR9-NEXT: vpopcntb 2, 2
775 ; PWR9-NEXT: vcmpgtub 2, 2, 3
777 %2 = tail call <16 x i8> @llvm.ctpop.v16i8(<16 x i8> %0)
778 %3 = icmp ugt <16 x i8> %2, <i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5>
779 %4 = sext <16 x i1> %3 to <16 x i8>
783 define <16 x i8> @ult_6_v16i8(<16 x i8> %0) {
784 ; PWR5-LABEL: ult_6_v16i8:
786 ; PWR5-NEXT: addis 3, 2, .LCPI9_0@toc@ha
787 ; PWR5-NEXT: vspltisb 3, 1
788 ; PWR5-NEXT: addi 3, 3, .LCPI9_0@toc@l
789 ; PWR5-NEXT: vsrb 3, 2, 3
790 ; PWR5-NEXT: lvx 4, 0, 3
791 ; PWR5-NEXT: addis 3, 2, .LCPI9_1@toc@ha
792 ; PWR5-NEXT: addi 3, 3, .LCPI9_1@toc@l
793 ; PWR5-NEXT: vspltisb 5, 2
794 ; PWR5-NEXT: vand 3, 3, 4
795 ; PWR5-NEXT: lvx 4, 0, 3
796 ; PWR5-NEXT: vsububm 2, 2, 3
797 ; PWR5-NEXT: vand 3, 2, 4
798 ; PWR5-NEXT: vsrb 2, 2, 5
799 ; PWR5-NEXT: vand 2, 2, 4
800 ; PWR5-NEXT: vspltisb 4, 4
801 ; PWR5-NEXT: vaddubm 2, 3, 2
802 ; PWR5-NEXT: vsrb 3, 2, 4
803 ; PWR5-NEXT: vspltisb 4, 15
804 ; PWR5-NEXT: vaddubm 2, 2, 3
805 ; PWR5-NEXT: vspltisb 3, 6
806 ; PWR5-NEXT: vand 2, 2, 4
807 ; PWR5-NEXT: vcmpgtub 2, 3, 2
810 ; PWR6-LABEL: ult_6_v16i8:
812 ; PWR6-NEXT: addis 3, 2, .LCPI9_0@toc@ha
813 ; PWR6-NEXT: vspltisb 3, 1
814 ; PWR6-NEXT: addi 3, 3, .LCPI9_0@toc@l
815 ; PWR6-NEXT: vsrb 3, 2, 3
816 ; PWR6-NEXT: lvx 4, 0, 3
817 ; PWR6-NEXT: addis 3, 2, .LCPI9_1@toc@ha
818 ; PWR6-NEXT: addi 3, 3, .LCPI9_1@toc@l
819 ; PWR6-NEXT: vspltisb 5, 2
820 ; PWR6-NEXT: vand 3, 3, 4
821 ; PWR6-NEXT: lvx 4, 0, 3
822 ; PWR6-NEXT: vsububm 2, 2, 3
823 ; PWR6-NEXT: vand 3, 2, 4
824 ; PWR6-NEXT: vsrb 2, 2, 5
825 ; PWR6-NEXT: vand 2, 2, 4
826 ; PWR6-NEXT: vspltisb 4, 4
827 ; PWR6-NEXT: vaddubm 2, 3, 2
828 ; PWR6-NEXT: vsrb 3, 2, 4
829 ; PWR6-NEXT: vspltisb 4, 15
830 ; PWR6-NEXT: vaddubm 2, 2, 3
831 ; PWR6-NEXT: vspltisb 3, 6
832 ; PWR6-NEXT: vand 2, 2, 4
833 ; PWR6-NEXT: vcmpgtub 2, 3, 2
836 ; PWR7-LABEL: ult_6_v16i8:
838 ; PWR7-NEXT: vspltisb 3, 1
839 ; PWR7-NEXT: addis 3, 2, .LCPI9_0@toc@ha
840 ; PWR7-NEXT: addi 3, 3, .LCPI9_0@toc@l
841 ; PWR7-NEXT: vspltisb 4, 2
842 ; PWR7-NEXT: lxvw4x 0, 0, 3
843 ; PWR7-NEXT: addis 3, 2, .LCPI9_1@toc@ha
844 ; PWR7-NEXT: vsrb 3, 2, 3
845 ; PWR7-NEXT: addi 3, 3, .LCPI9_1@toc@l
846 ; PWR7-NEXT: xxland 35, 35, 0
847 ; PWR7-NEXT: lxvw4x 0, 0, 3
848 ; PWR7-NEXT: vsububm 2, 2, 3
849 ; PWR7-NEXT: vsrb 3, 2, 4
850 ; PWR7-NEXT: xxland 34, 34, 0
851 ; PWR7-NEXT: vspltisb 4, 4
852 ; PWR7-NEXT: xxland 35, 35, 0
853 ; PWR7-NEXT: vaddubm 2, 2, 3
854 ; PWR7-NEXT: vsrb 3, 2, 4
855 ; PWR7-NEXT: vspltisb 4, 15
856 ; PWR7-NEXT: vaddubm 2, 2, 3
857 ; PWR7-NEXT: vspltisb 3, 6
858 ; PWR7-NEXT: xxland 34, 34, 36
859 ; PWR7-NEXT: vcmpgtub 2, 3, 2
862 ; PWR8-LABEL: ult_6_v16i8:
864 ; PWR8-NEXT: vspltisb 3, 6
865 ; PWR8-NEXT: vpopcntb 2, 2
866 ; PWR8-NEXT: vcmpgtub 2, 3, 2
869 ; PWR9-LABEL: ult_6_v16i8:
871 ; PWR9-NEXT: xxspltib 35, 6
872 ; PWR9-NEXT: vpopcntb 2, 2
873 ; PWR9-NEXT: vcmpgtub 2, 3, 2
875 %2 = tail call <16 x i8> @llvm.ctpop.v16i8(<16 x i8> %0)
876 %3 = icmp ult <16 x i8> %2, <i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6>
877 %4 = sext <16 x i1> %3 to <16 x i8>
881 define <16 x i8> @ugt_6_v16i8(<16 x i8> %0) {
882 ; PWR5-LABEL: ugt_6_v16i8:
884 ; PWR5-NEXT: addis 3, 2, .LCPI10_0@toc@ha
885 ; PWR5-NEXT: vspltisb 3, 1
886 ; PWR5-NEXT: addi 3, 3, .LCPI10_0@toc@l
887 ; PWR5-NEXT: vsrb 3, 2, 3
888 ; PWR5-NEXT: lvx 4, 0, 3
889 ; PWR5-NEXT: addis 3, 2, .LCPI10_1@toc@ha
890 ; PWR5-NEXT: addi 3, 3, .LCPI10_1@toc@l
891 ; PWR5-NEXT: vspltisb 5, 2
892 ; PWR5-NEXT: vand 3, 3, 4
893 ; PWR5-NEXT: lvx 4, 0, 3
894 ; PWR5-NEXT: vsububm 2, 2, 3
895 ; PWR5-NEXT: vand 3, 2, 4
896 ; PWR5-NEXT: vsrb 2, 2, 5
897 ; PWR5-NEXT: vand 2, 2, 4
898 ; PWR5-NEXT: vspltisb 4, 4
899 ; PWR5-NEXT: vaddubm 2, 3, 2
900 ; PWR5-NEXT: vsrb 3, 2, 4
901 ; PWR5-NEXT: vspltisb 4, 15
902 ; PWR5-NEXT: vaddubm 2, 2, 3
903 ; PWR5-NEXT: vspltisb 3, 6
904 ; PWR5-NEXT: vand 2, 2, 4
905 ; PWR5-NEXT: vcmpgtub 2, 2, 3
908 ; PWR6-LABEL: ugt_6_v16i8:
910 ; PWR6-NEXT: addis 3, 2, .LCPI10_0@toc@ha
911 ; PWR6-NEXT: vspltisb 3, 1
912 ; PWR6-NEXT: addi 3, 3, .LCPI10_0@toc@l
913 ; PWR6-NEXT: vsrb 3, 2, 3
914 ; PWR6-NEXT: lvx 4, 0, 3
915 ; PWR6-NEXT: addis 3, 2, .LCPI10_1@toc@ha
916 ; PWR6-NEXT: addi 3, 3, .LCPI10_1@toc@l
917 ; PWR6-NEXT: vspltisb 5, 2
918 ; PWR6-NEXT: vand 3, 3, 4
919 ; PWR6-NEXT: lvx 4, 0, 3
920 ; PWR6-NEXT: vsububm 2, 2, 3
921 ; PWR6-NEXT: vand 3, 2, 4
922 ; PWR6-NEXT: vsrb 2, 2, 5
923 ; PWR6-NEXT: vand 2, 2, 4
924 ; PWR6-NEXT: vspltisb 4, 4
925 ; PWR6-NEXT: vaddubm 2, 3, 2
926 ; PWR6-NEXT: vsrb 3, 2, 4
927 ; PWR6-NEXT: vspltisb 4, 15
928 ; PWR6-NEXT: vaddubm 2, 2, 3
929 ; PWR6-NEXT: vspltisb 3, 6
930 ; PWR6-NEXT: vand 2, 2, 4
931 ; PWR6-NEXT: vcmpgtub 2, 2, 3
934 ; PWR7-LABEL: ugt_6_v16i8:
936 ; PWR7-NEXT: vspltisb 3, 1
937 ; PWR7-NEXT: addis 3, 2, .LCPI10_0@toc@ha
938 ; PWR7-NEXT: addi 3, 3, .LCPI10_0@toc@l
939 ; PWR7-NEXT: vspltisb 4, 2
940 ; PWR7-NEXT: lxvw4x 0, 0, 3
941 ; PWR7-NEXT: addis 3, 2, .LCPI10_1@toc@ha
942 ; PWR7-NEXT: vsrb 3, 2, 3
943 ; PWR7-NEXT: addi 3, 3, .LCPI10_1@toc@l
944 ; PWR7-NEXT: xxland 35, 35, 0
945 ; PWR7-NEXT: lxvw4x 0, 0, 3
946 ; PWR7-NEXT: vsububm 2, 2, 3
947 ; PWR7-NEXT: vsrb 3, 2, 4
948 ; PWR7-NEXT: xxland 34, 34, 0
949 ; PWR7-NEXT: vspltisb 4, 4
950 ; PWR7-NEXT: xxland 35, 35, 0
951 ; PWR7-NEXT: vaddubm 2, 2, 3
952 ; PWR7-NEXT: vsrb 3, 2, 4
953 ; PWR7-NEXT: vspltisb 4, 15
954 ; PWR7-NEXT: vaddubm 2, 2, 3
955 ; PWR7-NEXT: vspltisb 3, 6
956 ; PWR7-NEXT: xxland 34, 34, 36
957 ; PWR7-NEXT: vcmpgtub 2, 2, 3
960 ; PWR8-LABEL: ugt_6_v16i8:
962 ; PWR8-NEXT: vspltisb 3, 6
963 ; PWR8-NEXT: vpopcntb 2, 2
964 ; PWR8-NEXT: vcmpgtub 2, 2, 3
967 ; PWR9-LABEL: ugt_6_v16i8:
969 ; PWR9-NEXT: xxspltib 35, 6
970 ; PWR9-NEXT: vpopcntb 2, 2
971 ; PWR9-NEXT: vcmpgtub 2, 2, 3
973 %2 = tail call <16 x i8> @llvm.ctpop.v16i8(<16 x i8> %0)
974 %3 = icmp ugt <16 x i8> %2, <i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6>
975 %4 = sext <16 x i1> %3 to <16 x i8>
979 define <16 x i8> @ult_7_v16i8(<16 x i8> %0) {
980 ; PWR5-LABEL: ult_7_v16i8:
982 ; PWR5-NEXT: addis 3, 2, .LCPI11_0@toc@ha
983 ; PWR5-NEXT: vspltisb 3, 1
984 ; PWR5-NEXT: addi 3, 3, .LCPI11_0@toc@l
985 ; PWR5-NEXT: vsrb 3, 2, 3
986 ; PWR5-NEXT: lvx 4, 0, 3
987 ; PWR5-NEXT: addis 3, 2, .LCPI11_1@toc@ha
988 ; PWR5-NEXT: addi 3, 3, .LCPI11_1@toc@l
989 ; PWR5-NEXT: vspltisb 5, 2
990 ; PWR5-NEXT: vand 3, 3, 4
991 ; PWR5-NEXT: lvx 4, 0, 3
992 ; PWR5-NEXT: vsububm 2, 2, 3
993 ; PWR5-NEXT: vand 3, 2, 4
994 ; PWR5-NEXT: vsrb 2, 2, 5
995 ; PWR5-NEXT: vand 2, 2, 4
996 ; PWR5-NEXT: vspltisb 4, 4
997 ; PWR5-NEXT: vaddubm 2, 3, 2
998 ; PWR5-NEXT: vsrb 3, 2, 4
999 ; PWR5-NEXT: vspltisb 4, 15
1000 ; PWR5-NEXT: vaddubm 2, 2, 3
1001 ; PWR5-NEXT: vspltisb 3, 7
1002 ; PWR5-NEXT: vand 2, 2, 4
1003 ; PWR5-NEXT: vcmpgtub 2, 3, 2
1006 ; PWR6-LABEL: ult_7_v16i8:
1008 ; PWR6-NEXT: addis 3, 2, .LCPI11_0@toc@ha
1009 ; PWR6-NEXT: vspltisb 3, 1
1010 ; PWR6-NEXT: addi 3, 3, .LCPI11_0@toc@l
1011 ; PWR6-NEXT: vsrb 3, 2, 3
1012 ; PWR6-NEXT: lvx 4, 0, 3
1013 ; PWR6-NEXT: addis 3, 2, .LCPI11_1@toc@ha
1014 ; PWR6-NEXT: addi 3, 3, .LCPI11_1@toc@l
1015 ; PWR6-NEXT: vspltisb 5, 2
1016 ; PWR6-NEXT: vand 3, 3, 4
1017 ; PWR6-NEXT: lvx 4, 0, 3
1018 ; PWR6-NEXT: vsububm 2, 2, 3
1019 ; PWR6-NEXT: vand 3, 2, 4
1020 ; PWR6-NEXT: vsrb 2, 2, 5
1021 ; PWR6-NEXT: vand 2, 2, 4
1022 ; PWR6-NEXT: vspltisb 4, 4
1023 ; PWR6-NEXT: vaddubm 2, 3, 2
1024 ; PWR6-NEXT: vsrb 3, 2, 4
1025 ; PWR6-NEXT: vspltisb 4, 15
1026 ; PWR6-NEXT: vaddubm 2, 2, 3
1027 ; PWR6-NEXT: vspltisb 3, 7
1028 ; PWR6-NEXT: vand 2, 2, 4
1029 ; PWR6-NEXT: vcmpgtub 2, 3, 2
1032 ; PWR7-LABEL: ult_7_v16i8:
1034 ; PWR7-NEXT: vspltisb 3, 1
1035 ; PWR7-NEXT: addis 3, 2, .LCPI11_0@toc@ha
1036 ; PWR7-NEXT: addi 3, 3, .LCPI11_0@toc@l
1037 ; PWR7-NEXT: vspltisb 4, 2
1038 ; PWR7-NEXT: lxvw4x 0, 0, 3
1039 ; PWR7-NEXT: addis 3, 2, .LCPI11_1@toc@ha
1040 ; PWR7-NEXT: vsrb 3, 2, 3
1041 ; PWR7-NEXT: addi 3, 3, .LCPI11_1@toc@l
1042 ; PWR7-NEXT: xxland 35, 35, 0
1043 ; PWR7-NEXT: lxvw4x 0, 0, 3
1044 ; PWR7-NEXT: vsububm 2, 2, 3
1045 ; PWR7-NEXT: vsrb 3, 2, 4
1046 ; PWR7-NEXT: xxland 34, 34, 0
1047 ; PWR7-NEXT: vspltisb 4, 4
1048 ; PWR7-NEXT: xxland 35, 35, 0
1049 ; PWR7-NEXT: vaddubm 2, 2, 3
1050 ; PWR7-NEXT: vsrb 3, 2, 4
1051 ; PWR7-NEXT: vspltisb 4, 15
1052 ; PWR7-NEXT: vaddubm 2, 2, 3
1053 ; PWR7-NEXT: vspltisb 3, 7
1054 ; PWR7-NEXT: xxland 34, 34, 36
1055 ; PWR7-NEXT: vcmpgtub 2, 3, 2
1058 ; PWR8-LABEL: ult_7_v16i8:
1060 ; PWR8-NEXT: vspltisb 3, 7
1061 ; PWR8-NEXT: vpopcntb 2, 2
1062 ; PWR8-NEXT: vcmpgtub 2, 3, 2
1065 ; PWR9-LABEL: ult_7_v16i8:
1067 ; PWR9-NEXT: xxspltib 35, 7
1068 ; PWR9-NEXT: vpopcntb 2, 2
1069 ; PWR9-NEXT: vcmpgtub 2, 3, 2
1071 %2 = tail call <16 x i8> @llvm.ctpop.v16i8(<16 x i8> %0)
1072 %3 = icmp ult <16 x i8> %2, <i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7>
1073 %4 = sext <16 x i1> %3 to <16 x i8>
1077 define <8 x i16> @ugt_1_v8i16(<8 x i16> %0) {
1078 ; PWR5-LABEL: ugt_1_v8i16:
1080 ; PWR5-NEXT: vspltisb 3, -1
1081 ; PWR5-NEXT: vadduhm 3, 2, 3
1082 ; PWR5-NEXT: vand 2, 2, 3
1083 ; PWR5-NEXT: vxor 3, 3, 3
1084 ; PWR5-NEXT: vcmpequh 2, 2, 3
1085 ; PWR5-NEXT: vnot 2, 2
1088 ; PWR6-LABEL: ugt_1_v8i16:
1090 ; PWR6-NEXT: vspltisb 3, -1
1091 ; PWR6-NEXT: vadduhm 3, 2, 3
1092 ; PWR6-NEXT: vand 2, 2, 3
1093 ; PWR6-NEXT: vxor 3, 3, 3
1094 ; PWR6-NEXT: vcmpequh 2, 2, 3
1095 ; PWR6-NEXT: vnot 2, 2
1098 ; PWR7-LABEL: ugt_1_v8i16:
1100 ; PWR7-NEXT: vspltisb 3, -1
1101 ; PWR7-NEXT: vadduhm 3, 2, 3
1102 ; PWR7-NEXT: xxland 34, 34, 35
1103 ; PWR7-NEXT: xxlxor 35, 35, 35
1104 ; PWR7-NEXT: vcmpequh 2, 2, 3
1105 ; PWR7-NEXT: xxlnor 34, 34, 34
1108 ; PWR8-LABEL: ugt_1_v8i16:
1110 ; PWR8-NEXT: vspltish 3, 1
1111 ; PWR8-NEXT: vpopcnth 2, 2
1112 ; PWR8-NEXT: vcmpgtuh 2, 2, 3
1115 ; PWR9-LABEL: ugt_1_v8i16:
1117 ; PWR9-NEXT: vspltish 3, 1
1118 ; PWR9-NEXT: vpopcnth 2, 2
1119 ; PWR9-NEXT: vcmpgtuh 2, 2, 3
1121 %2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0)
1122 %3 = icmp ugt <8 x i16> %2, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>
1123 %4 = sext <8 x i1> %3 to <8 x i16>
1127 define <8 x i16> @ult_2_v8i16(<8 x i16> %0) {
1128 ; PWR5-LABEL: ult_2_v8i16:
1130 ; PWR5-NEXT: vspltisb 3, -1
1131 ; PWR5-NEXT: vadduhm 3, 2, 3
1132 ; PWR5-NEXT: vand 2, 2, 3
1133 ; PWR5-NEXT: vxor 3, 3, 3
1134 ; PWR5-NEXT: vcmpequh 2, 2, 3
1137 ; PWR6-LABEL: ult_2_v8i16:
1139 ; PWR6-NEXT: vspltisb 3, -1
1140 ; PWR6-NEXT: vadduhm 3, 2, 3
1141 ; PWR6-NEXT: vand 2, 2, 3
1142 ; PWR6-NEXT: vxor 3, 3, 3
1143 ; PWR6-NEXT: vcmpequh 2, 2, 3
1146 ; PWR7-LABEL: ult_2_v8i16:
1148 ; PWR7-NEXT: vspltisb 3, -1
1149 ; PWR7-NEXT: vadduhm 3, 2, 3
1150 ; PWR7-NEXT: xxland 34, 34, 35
1151 ; PWR7-NEXT: xxlxor 35, 35, 35
1152 ; PWR7-NEXT: vcmpequh 2, 2, 3
1155 ; PWR8-LABEL: ult_2_v8i16:
1157 ; PWR8-NEXT: vspltish 3, 2
1158 ; PWR8-NEXT: vpopcnth 2, 2
1159 ; PWR8-NEXT: vcmpgtuh 2, 3, 2
1162 ; PWR9-LABEL: ult_2_v8i16:
1164 ; PWR9-NEXT: vspltish 3, 2
1165 ; PWR9-NEXT: vpopcnth 2, 2
1166 ; PWR9-NEXT: vcmpgtuh 2, 3, 2
1168 %2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0)
1169 %3 = icmp ult <8 x i16> %2, <i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2>
1170 %4 = sext <8 x i1> %3 to <8 x i16>
1174 define <8 x i16> @ugt_2_v8i16(<8 x i16> %0) {
1175 ; PWR5-LABEL: ugt_2_v8i16:
1177 ; PWR5-NEXT: addis 3, 2, .LCPI14_0@toc@ha
1178 ; PWR5-NEXT: vspltish 3, 1
1179 ; PWR5-NEXT: addi 3, 3, .LCPI14_0@toc@l
1180 ; PWR5-NEXT: vsrh 3, 2, 3
1181 ; PWR5-NEXT: lvx 4, 0, 3
1182 ; PWR5-NEXT: addis 3, 2, .LCPI14_1@toc@ha
1183 ; PWR5-NEXT: addi 3, 3, .LCPI14_1@toc@l
1184 ; PWR5-NEXT: vspltish 5, 2
1185 ; PWR5-NEXT: vand 3, 3, 4
1186 ; PWR5-NEXT: lvx 4, 0, 3
1187 ; PWR5-NEXT: vsubuhm 2, 2, 3
1188 ; PWR5-NEXT: vand 3, 2, 4
1189 ; PWR5-NEXT: vsrh 2, 2, 5
1190 ; PWR5-NEXT: vand 2, 2, 4
1191 ; PWR5-NEXT: vadduhm 2, 3, 2
1192 ; PWR5-NEXT: vspltish 3, 4
1193 ; PWR5-NEXT: vsrh 3, 2, 3
1194 ; PWR5-NEXT: vadduhm 2, 2, 3
1195 ; PWR5-NEXT: vspltisb 3, 15
1196 ; PWR5-NEXT: vxor 4, 4, 4
1197 ; PWR5-NEXT: vand 2, 2, 3
1198 ; PWR5-NEXT: vspltisb 3, 1
1199 ; PWR5-NEXT: vmladduhm 2, 2, 3, 4
1200 ; PWR5-NEXT: vspltish 3, 8
1201 ; PWR5-NEXT: vsrh 2, 2, 3
1202 ; PWR5-NEXT: vcmpgtuh 2, 2, 5
1205 ; PWR6-LABEL: ugt_2_v8i16:
1207 ; PWR6-NEXT: addis 3, 2, .LCPI14_0@toc@ha
1208 ; PWR6-NEXT: vspltish 3, 1
1209 ; PWR6-NEXT: addi 3, 3, .LCPI14_0@toc@l
1210 ; PWR6-NEXT: vsrh 3, 2, 3
1211 ; PWR6-NEXT: lvx 4, 0, 3
1212 ; PWR6-NEXT: addis 3, 2, .LCPI14_1@toc@ha
1213 ; PWR6-NEXT: addi 3, 3, .LCPI14_1@toc@l
1214 ; PWR6-NEXT: vspltish 5, 2
1215 ; PWR6-NEXT: vand 3, 3, 4
1216 ; PWR6-NEXT: lvx 4, 0, 3
1217 ; PWR6-NEXT: vsubuhm 2, 2, 3
1218 ; PWR6-NEXT: vand 3, 2, 4
1219 ; PWR6-NEXT: vsrh 2, 2, 5
1220 ; PWR6-NEXT: vand 2, 2, 4
1221 ; PWR6-NEXT: vadduhm 2, 3, 2
1222 ; PWR6-NEXT: vspltish 3, 4
1223 ; PWR6-NEXT: vsrh 3, 2, 3
1224 ; PWR6-NEXT: vadduhm 2, 2, 3
1225 ; PWR6-NEXT: vspltisb 3, 15
1226 ; PWR6-NEXT: vxor 4, 4, 4
1227 ; PWR6-NEXT: vand 2, 2, 3
1228 ; PWR6-NEXT: vspltisb 3, 1
1229 ; PWR6-NEXT: vmladduhm 2, 2, 3, 4
1230 ; PWR6-NEXT: vspltish 3, 8
1231 ; PWR6-NEXT: vsrh 2, 2, 3
1232 ; PWR6-NEXT: vcmpgtuh 2, 2, 5
1235 ; PWR7-LABEL: ugt_2_v8i16:
1237 ; PWR7-NEXT: vspltish 3, 1
1238 ; PWR7-NEXT: addis 3, 2, .LCPI14_0@toc@ha
1239 ; PWR7-NEXT: addi 3, 3, .LCPI14_0@toc@l
1240 ; PWR7-NEXT: vspltish 4, 2
1241 ; PWR7-NEXT: lxvw4x 0, 0, 3
1242 ; PWR7-NEXT: addis 3, 2, .LCPI14_1@toc@ha
1243 ; PWR7-NEXT: vspltish 5, 4
1244 ; PWR7-NEXT: vsrh 3, 2, 3
1245 ; PWR7-NEXT: addi 3, 3, .LCPI14_1@toc@l
1246 ; PWR7-NEXT: vspltisb 0, 15
1247 ; PWR7-NEXT: xxland 35, 35, 0
1248 ; PWR7-NEXT: lxvw4x 0, 0, 3
1249 ; PWR7-NEXT: vsubuhm 2, 2, 3
1250 ; PWR7-NEXT: vsrh 3, 2, 4
1251 ; PWR7-NEXT: xxland 34, 34, 0
1252 ; PWR7-NEXT: xxland 35, 35, 0
1253 ; PWR7-NEXT: vadduhm 2, 2, 3
1254 ; PWR7-NEXT: vsrh 3, 2, 5
1255 ; PWR7-NEXT: vxor 5, 5, 5
1256 ; PWR7-NEXT: vadduhm 2, 2, 3
1257 ; PWR7-NEXT: vspltisb 3, 1
1258 ; PWR7-NEXT: xxland 34, 34, 32
1259 ; PWR7-NEXT: vmladduhm 2, 2, 3, 5
1260 ; PWR7-NEXT: vspltish 3, 8
1261 ; PWR7-NEXT: vsrh 2, 2, 3
1262 ; PWR7-NEXT: vcmpgtuh 2, 2, 4
1265 ; PWR8-LABEL: ugt_2_v8i16:
1267 ; PWR8-NEXT: vspltish 3, 2
1268 ; PWR8-NEXT: vpopcnth 2, 2
1269 ; PWR8-NEXT: vcmpgtuh 2, 2, 3
1272 ; PWR9-LABEL: ugt_2_v8i16:
1274 ; PWR9-NEXT: vspltish 3, 2
1275 ; PWR9-NEXT: vpopcnth 2, 2
1276 ; PWR9-NEXT: vcmpgtuh 2, 2, 3
1278 %2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0)
1279 %3 = icmp ugt <8 x i16> %2, <i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2>
1280 %4 = sext <8 x i1> %3 to <8 x i16>
1284 define <8 x i16> @ult_3_v8i16(<8 x i16> %0) {
1285 ; PWR5-LABEL: ult_3_v8i16:
1287 ; PWR5-NEXT: addis 3, 2, .LCPI15_0@toc@ha
1288 ; PWR5-NEXT: vspltish 4, 1
1289 ; PWR5-NEXT: vxor 3, 3, 3
1290 ; PWR5-NEXT: addi 3, 3, .LCPI15_0@toc@l
1291 ; PWR5-NEXT: lvx 5, 0, 3
1292 ; PWR5-NEXT: addis 3, 2, .LCPI15_1@toc@ha
1293 ; PWR5-NEXT: addi 3, 3, .LCPI15_1@toc@l
1294 ; PWR5-NEXT: vsrh 4, 2, 4
1295 ; PWR5-NEXT: vand 4, 4, 5
1296 ; PWR5-NEXT: vspltish 5, 2
1297 ; PWR5-NEXT: vsubuhm 2, 2, 4
1298 ; PWR5-NEXT: vsrh 4, 2, 5
1299 ; PWR5-NEXT: lvx 5, 0, 3
1300 ; PWR5-NEXT: vand 2, 2, 5
1301 ; PWR5-NEXT: vand 4, 4, 5
1302 ; PWR5-NEXT: vspltish 5, 4
1303 ; PWR5-NEXT: vadduhm 2, 2, 4
1304 ; PWR5-NEXT: vsrh 4, 2, 5
1305 ; PWR5-NEXT: vspltisb 5, 15
1306 ; PWR5-NEXT: vadduhm 2, 2, 4
1307 ; PWR5-NEXT: vspltisb 4, 1
1308 ; PWR5-NEXT: vand 2, 2, 5
1309 ; PWR5-NEXT: vmladduhm 2, 2, 4, 3
1310 ; PWR5-NEXT: vspltish 3, 8
1311 ; PWR5-NEXT: vsrh 2, 2, 3
1312 ; PWR5-NEXT: vspltish 3, 3
1313 ; PWR5-NEXT: vcmpgtuh 2, 3, 2
1316 ; PWR6-LABEL: ult_3_v8i16:
1318 ; PWR6-NEXT: addis 3, 2, .LCPI15_0@toc@ha
1319 ; PWR6-NEXT: vspltish 4, 1
1320 ; PWR6-NEXT: vxor 3, 3, 3
1321 ; PWR6-NEXT: addi 3, 3, .LCPI15_0@toc@l
1322 ; PWR6-NEXT: lvx 5, 0, 3
1323 ; PWR6-NEXT: addis 3, 2, .LCPI15_1@toc@ha
1324 ; PWR6-NEXT: addi 3, 3, .LCPI15_1@toc@l
1325 ; PWR6-NEXT: vsrh 4, 2, 4
1326 ; PWR6-NEXT: vand 4, 4, 5
1327 ; PWR6-NEXT: vspltish 5, 2
1328 ; PWR6-NEXT: vsubuhm 2, 2, 4
1329 ; PWR6-NEXT: vsrh 4, 2, 5
1330 ; PWR6-NEXT: lvx 5, 0, 3
1331 ; PWR6-NEXT: vand 2, 2, 5
1332 ; PWR6-NEXT: vand 4, 4, 5
1333 ; PWR6-NEXT: vspltish 5, 4
1334 ; PWR6-NEXT: vadduhm 2, 2, 4
1335 ; PWR6-NEXT: vsrh 4, 2, 5
1336 ; PWR6-NEXT: vspltisb 5, 15
1337 ; PWR6-NEXT: vadduhm 2, 2, 4
1338 ; PWR6-NEXT: vspltisb 4, 1
1339 ; PWR6-NEXT: vand 2, 2, 5
1340 ; PWR6-NEXT: vmladduhm 2, 2, 4, 3
1341 ; PWR6-NEXT: vspltish 3, 8
1342 ; PWR6-NEXT: vsrh 2, 2, 3
1343 ; PWR6-NEXT: vspltish 3, 3
1344 ; PWR6-NEXT: vcmpgtuh 2, 3, 2
1347 ; PWR7-LABEL: ult_3_v8i16:
1349 ; PWR7-NEXT: vspltish 3, 1
1350 ; PWR7-NEXT: addis 3, 2, .LCPI15_0@toc@ha
1351 ; PWR7-NEXT: addi 3, 3, .LCPI15_0@toc@l
1352 ; PWR7-NEXT: vspltish 4, 2
1353 ; PWR7-NEXT: lxvw4x 0, 0, 3
1354 ; PWR7-NEXT: addis 3, 2, .LCPI15_1@toc@ha
1355 ; PWR7-NEXT: vspltisb 5, 15
1356 ; PWR7-NEXT: vsrh 3, 2, 3
1357 ; PWR7-NEXT: addi 3, 3, .LCPI15_1@toc@l
1358 ; PWR7-NEXT: xxland 35, 35, 0
1359 ; PWR7-NEXT: lxvw4x 0, 0, 3
1360 ; PWR7-NEXT: vsubuhm 2, 2, 3
1361 ; PWR7-NEXT: vsrh 3, 2, 4
1362 ; PWR7-NEXT: xxland 34, 34, 0
1363 ; PWR7-NEXT: vspltish 4, 4
1364 ; PWR7-NEXT: xxland 35, 35, 0
1365 ; PWR7-NEXT: vadduhm 2, 2, 3
1366 ; PWR7-NEXT: vsrh 3, 2, 4
1367 ; PWR7-NEXT: vxor 4, 4, 4
1368 ; PWR7-NEXT: vadduhm 2, 2, 3
1369 ; PWR7-NEXT: vspltisb 3, 1
1370 ; PWR7-NEXT: xxland 34, 34, 37
1371 ; PWR7-NEXT: vmladduhm 2, 2, 3, 4
1372 ; PWR7-NEXT: vspltish 3, 8
1373 ; PWR7-NEXT: vsrh 2, 2, 3
1374 ; PWR7-NEXT: vspltish 3, 3
1375 ; PWR7-NEXT: vcmpgtuh 2, 3, 2
1378 ; PWR8-LABEL: ult_3_v8i16:
1380 ; PWR8-NEXT: vspltish 3, 3
1381 ; PWR8-NEXT: vpopcnth 2, 2
1382 ; PWR8-NEXT: vcmpgtuh 2, 3, 2
1385 ; PWR9-LABEL: ult_3_v8i16:
1387 ; PWR9-NEXT: vspltish 3, 3
1388 ; PWR9-NEXT: vpopcnth 2, 2
1389 ; PWR9-NEXT: vcmpgtuh 2, 3, 2
1391 %2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0)
1392 %3 = icmp ult <8 x i16> %2, <i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3>
1393 %4 = sext <8 x i1> %3 to <8 x i16>
1397 define <8 x i16> @ugt_3_v8i16(<8 x i16> %0) {
1398 ; PWR5-LABEL: ugt_3_v8i16:
1400 ; PWR5-NEXT: addis 3, 2, .LCPI16_0@toc@ha
1401 ; PWR5-NEXT: vspltish 4, 1
1402 ; PWR5-NEXT: vxor 3, 3, 3
1403 ; PWR5-NEXT: addi 3, 3, .LCPI16_0@toc@l
1404 ; PWR5-NEXT: lvx 5, 0, 3
1405 ; PWR5-NEXT: addis 3, 2, .LCPI16_1@toc@ha
1406 ; PWR5-NEXT: addi 3, 3, .LCPI16_1@toc@l
1407 ; PWR5-NEXT: vsrh 4, 2, 4
1408 ; PWR5-NEXT: vand 4, 4, 5
1409 ; PWR5-NEXT: vspltish 5, 2
1410 ; PWR5-NEXT: vsubuhm 2, 2, 4
1411 ; PWR5-NEXT: vsrh 4, 2, 5
1412 ; PWR5-NEXT: lvx 5, 0, 3
1413 ; PWR5-NEXT: vand 2, 2, 5
1414 ; PWR5-NEXT: vand 4, 4, 5
1415 ; PWR5-NEXT: vspltish 5, 4
1416 ; PWR5-NEXT: vadduhm 2, 2, 4
1417 ; PWR5-NEXT: vsrh 4, 2, 5
1418 ; PWR5-NEXT: vspltisb 5, 15
1419 ; PWR5-NEXT: vadduhm 2, 2, 4
1420 ; PWR5-NEXT: vspltisb 4, 1
1421 ; PWR5-NEXT: vand 2, 2, 5
1422 ; PWR5-NEXT: vmladduhm 2, 2, 4, 3
1423 ; PWR5-NEXT: vspltish 3, 8
1424 ; PWR5-NEXT: vsrh 2, 2, 3
1425 ; PWR5-NEXT: vspltish 3, 3
1426 ; PWR5-NEXT: vcmpgtuh 2, 2, 3
1429 ; PWR6-LABEL: ugt_3_v8i16:
1431 ; PWR6-NEXT: addis 3, 2, .LCPI16_0@toc@ha
1432 ; PWR6-NEXT: vspltish 4, 1
1433 ; PWR6-NEXT: vxor 3, 3, 3
1434 ; PWR6-NEXT: addi 3, 3, .LCPI16_0@toc@l
1435 ; PWR6-NEXT: lvx 5, 0, 3
1436 ; PWR6-NEXT: addis 3, 2, .LCPI16_1@toc@ha
1437 ; PWR6-NEXT: addi 3, 3, .LCPI16_1@toc@l
1438 ; PWR6-NEXT: vsrh 4, 2, 4
1439 ; PWR6-NEXT: vand 4, 4, 5
1440 ; PWR6-NEXT: vspltish 5, 2
1441 ; PWR6-NEXT: vsubuhm 2, 2, 4
1442 ; PWR6-NEXT: vsrh 4, 2, 5
1443 ; PWR6-NEXT: lvx 5, 0, 3
1444 ; PWR6-NEXT: vand 2, 2, 5
1445 ; PWR6-NEXT: vand 4, 4, 5
1446 ; PWR6-NEXT: vspltish 5, 4
1447 ; PWR6-NEXT: vadduhm 2, 2, 4
1448 ; PWR6-NEXT: vsrh 4, 2, 5
1449 ; PWR6-NEXT: vspltisb 5, 15
1450 ; PWR6-NEXT: vadduhm 2, 2, 4
1451 ; PWR6-NEXT: vspltisb 4, 1
1452 ; PWR6-NEXT: vand 2, 2, 5
1453 ; PWR6-NEXT: vmladduhm 2, 2, 4, 3
1454 ; PWR6-NEXT: vspltish 3, 8
1455 ; PWR6-NEXT: vsrh 2, 2, 3
1456 ; PWR6-NEXT: vspltish 3, 3
1457 ; PWR6-NEXT: vcmpgtuh 2, 2, 3
1460 ; PWR7-LABEL: ugt_3_v8i16:
1462 ; PWR7-NEXT: vspltish 3, 1
1463 ; PWR7-NEXT: addis 3, 2, .LCPI16_0@toc@ha
1464 ; PWR7-NEXT: addi 3, 3, .LCPI16_0@toc@l
1465 ; PWR7-NEXT: vspltish 4, 2
1466 ; PWR7-NEXT: lxvw4x 0, 0, 3
1467 ; PWR7-NEXT: addis 3, 2, .LCPI16_1@toc@ha
1468 ; PWR7-NEXT: vspltisb 5, 15
1469 ; PWR7-NEXT: vsrh 3, 2, 3
1470 ; PWR7-NEXT: addi 3, 3, .LCPI16_1@toc@l
1471 ; PWR7-NEXT: xxland 35, 35, 0
1472 ; PWR7-NEXT: lxvw4x 0, 0, 3
1473 ; PWR7-NEXT: vsubuhm 2, 2, 3
1474 ; PWR7-NEXT: vsrh 3, 2, 4
1475 ; PWR7-NEXT: xxland 34, 34, 0
1476 ; PWR7-NEXT: vspltish 4, 4
1477 ; PWR7-NEXT: xxland 35, 35, 0
1478 ; PWR7-NEXT: vadduhm 2, 2, 3
1479 ; PWR7-NEXT: vsrh 3, 2, 4
1480 ; PWR7-NEXT: vxor 4, 4, 4
1481 ; PWR7-NEXT: vadduhm 2, 2, 3
1482 ; PWR7-NEXT: vspltisb 3, 1
1483 ; PWR7-NEXT: xxland 34, 34, 37
1484 ; PWR7-NEXT: vmladduhm 2, 2, 3, 4
1485 ; PWR7-NEXT: vspltish 3, 8
1486 ; PWR7-NEXT: vsrh 2, 2, 3
1487 ; PWR7-NEXT: vspltish 3, 3
1488 ; PWR7-NEXT: vcmpgtuh 2, 2, 3
1491 ; PWR8-LABEL: ugt_3_v8i16:
1493 ; PWR8-NEXT: vspltish 3, 3
1494 ; PWR8-NEXT: vpopcnth 2, 2
1495 ; PWR8-NEXT: vcmpgtuh 2, 2, 3
1498 ; PWR9-LABEL: ugt_3_v8i16:
1500 ; PWR9-NEXT: vspltish 3, 3
1501 ; PWR9-NEXT: vpopcnth 2, 2
1502 ; PWR9-NEXT: vcmpgtuh 2, 2, 3
1504 %2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0)
1505 %3 = icmp ugt <8 x i16> %2, <i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3>
1506 %4 = sext <8 x i1> %3 to <8 x i16>
1510 define <8 x i16> @ult_4_v8i16(<8 x i16> %0) {
1511 ; PWR5-LABEL: ult_4_v8i16:
1513 ; PWR5-NEXT: addis 3, 2, .LCPI17_0@toc@ha
1514 ; PWR5-NEXT: vspltish 4, 1
1515 ; PWR5-NEXT: vxor 3, 3, 3
1516 ; PWR5-NEXT: addi 3, 3, .LCPI17_0@toc@l
1517 ; PWR5-NEXT: lvx 5, 0, 3
1518 ; PWR5-NEXT: addis 3, 2, .LCPI17_1@toc@ha
1519 ; PWR5-NEXT: addi 3, 3, .LCPI17_1@toc@l
1520 ; PWR5-NEXT: vsrh 4, 2, 4
1521 ; PWR5-NEXT: vand 4, 4, 5
1522 ; PWR5-NEXT: vspltish 5, 2
1523 ; PWR5-NEXT: vsubuhm 2, 2, 4
1524 ; PWR5-NEXT: vsrh 4, 2, 5
1525 ; PWR5-NEXT: lvx 5, 0, 3
1526 ; PWR5-NEXT: vand 2, 2, 5
1527 ; PWR5-NEXT: vand 4, 4, 5
1528 ; PWR5-NEXT: vspltish 5, 4
1529 ; PWR5-NEXT: vadduhm 2, 2, 4
1530 ; PWR5-NEXT: vsrh 4, 2, 5
1531 ; PWR5-NEXT: vadduhm 2, 2, 4
1532 ; PWR5-NEXT: vspltisb 4, 15
1533 ; PWR5-NEXT: vand 2, 2, 4
1534 ; PWR5-NEXT: vspltisb 4, 1
1535 ; PWR5-NEXT: vmladduhm 2, 2, 4, 3
1536 ; PWR5-NEXT: vspltish 3, 8
1537 ; PWR5-NEXT: vsrh 2, 2, 3
1538 ; PWR5-NEXT: vcmpgtuh 2, 5, 2
1541 ; PWR6-LABEL: ult_4_v8i16:
1543 ; PWR6-NEXT: addis 3, 2, .LCPI17_0@toc@ha
1544 ; PWR6-NEXT: vspltish 4, 1
1545 ; PWR6-NEXT: vxor 3, 3, 3
1546 ; PWR6-NEXT: addi 3, 3, .LCPI17_0@toc@l
1547 ; PWR6-NEXT: lvx 5, 0, 3
1548 ; PWR6-NEXT: addis 3, 2, .LCPI17_1@toc@ha
1549 ; PWR6-NEXT: addi 3, 3, .LCPI17_1@toc@l
1550 ; PWR6-NEXT: vsrh 4, 2, 4
1551 ; PWR6-NEXT: vand 4, 4, 5
1552 ; PWR6-NEXT: vspltish 5, 2
1553 ; PWR6-NEXT: vsubuhm 2, 2, 4
1554 ; PWR6-NEXT: vsrh 4, 2, 5
1555 ; PWR6-NEXT: lvx 5, 0, 3
1556 ; PWR6-NEXT: vand 2, 2, 5
1557 ; PWR6-NEXT: vand 4, 4, 5
1558 ; PWR6-NEXT: vspltish 5, 4
1559 ; PWR6-NEXT: vadduhm 2, 2, 4
1560 ; PWR6-NEXT: vsrh 4, 2, 5
1561 ; PWR6-NEXT: vadduhm 2, 2, 4
1562 ; PWR6-NEXT: vspltisb 4, 15
1563 ; PWR6-NEXT: vand 2, 2, 4
1564 ; PWR6-NEXT: vspltisb 4, 1
1565 ; PWR6-NEXT: vmladduhm 2, 2, 4, 3
1566 ; PWR6-NEXT: vspltish 3, 8
1567 ; PWR6-NEXT: vsrh 2, 2, 3
1568 ; PWR6-NEXT: vcmpgtuh 2, 5, 2
1571 ; PWR7-LABEL: ult_4_v8i16:
1573 ; PWR7-NEXT: vspltish 3, 1
1574 ; PWR7-NEXT: addis 3, 2, .LCPI17_0@toc@ha
1575 ; PWR7-NEXT: vxor 5, 5, 5
1576 ; PWR7-NEXT: addi 3, 3, .LCPI17_0@toc@l
1577 ; PWR7-NEXT: vspltish 4, 2
1578 ; PWR7-NEXT: lxvw4x 0, 0, 3
1579 ; PWR7-NEXT: addis 3, 2, .LCPI17_1@toc@ha
1580 ; PWR7-NEXT: vspltisb 0, 15
1581 ; PWR7-NEXT: vsrh 3, 2, 3
1582 ; PWR7-NEXT: addi 3, 3, .LCPI17_1@toc@l
1583 ; PWR7-NEXT: xxland 35, 35, 0
1584 ; PWR7-NEXT: lxvw4x 0, 0, 3
1585 ; PWR7-NEXT: vsubuhm 2, 2, 3
1586 ; PWR7-NEXT: vsrh 3, 2, 4
1587 ; PWR7-NEXT: xxland 34, 34, 0
1588 ; PWR7-NEXT: vspltish 4, 4
1589 ; PWR7-NEXT: xxland 35, 35, 0
1590 ; PWR7-NEXT: vadduhm 2, 2, 3
1591 ; PWR7-NEXT: vsrh 3, 2, 4
1592 ; PWR7-NEXT: vadduhm 2, 2, 3
1593 ; PWR7-NEXT: vspltisb 3, 1
1594 ; PWR7-NEXT: xxland 34, 34, 32
1595 ; PWR7-NEXT: vmladduhm 2, 2, 3, 5
1596 ; PWR7-NEXT: vspltish 3, 8
1597 ; PWR7-NEXT: vsrh 2, 2, 3
1598 ; PWR7-NEXT: vcmpgtuh 2, 4, 2
1601 ; PWR8-LABEL: ult_4_v8i16:
1603 ; PWR8-NEXT: vspltish 3, 4
1604 ; PWR8-NEXT: vpopcnth 2, 2
1605 ; PWR8-NEXT: vcmpgtuh 2, 3, 2
1608 ; PWR9-LABEL: ult_4_v8i16:
1610 ; PWR9-NEXT: vspltish 3, 4
1611 ; PWR9-NEXT: vpopcnth 2, 2
1612 ; PWR9-NEXT: vcmpgtuh 2, 3, 2
1614 %2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0)
1615 %3 = icmp ult <8 x i16> %2, <i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4>
1616 %4 = sext <8 x i1> %3 to <8 x i16>
1620 define <8 x i16> @ugt_4_v8i16(<8 x i16> %0) {
1621 ; PWR5-LABEL: ugt_4_v8i16:
1623 ; PWR5-NEXT: addis 3, 2, .LCPI18_0@toc@ha
1624 ; PWR5-NEXT: vspltish 4, 1
1625 ; PWR5-NEXT: vxor 3, 3, 3
1626 ; PWR5-NEXT: addi 3, 3, .LCPI18_0@toc@l
1627 ; PWR5-NEXT: lvx 5, 0, 3
1628 ; PWR5-NEXT: addis 3, 2, .LCPI18_1@toc@ha
1629 ; PWR5-NEXT: addi 3, 3, .LCPI18_1@toc@l
1630 ; PWR5-NEXT: vsrh 4, 2, 4
1631 ; PWR5-NEXT: vand 4, 4, 5
1632 ; PWR5-NEXT: vspltish 5, 2
1633 ; PWR5-NEXT: vsubuhm 2, 2, 4
1634 ; PWR5-NEXT: vsrh 4, 2, 5
1635 ; PWR5-NEXT: lvx 5, 0, 3
1636 ; PWR5-NEXT: vand 2, 2, 5
1637 ; PWR5-NEXT: vand 4, 4, 5
1638 ; PWR5-NEXT: vspltish 5, 4
1639 ; PWR5-NEXT: vadduhm 2, 2, 4
1640 ; PWR5-NEXT: vsrh 4, 2, 5
1641 ; PWR5-NEXT: vadduhm 2, 2, 4
1642 ; PWR5-NEXT: vspltisb 4, 15
1643 ; PWR5-NEXT: vand 2, 2, 4
1644 ; PWR5-NEXT: vspltisb 4, 1
1645 ; PWR5-NEXT: vmladduhm 2, 2, 4, 3
1646 ; PWR5-NEXT: vspltish 3, 8
1647 ; PWR5-NEXT: vsrh 2, 2, 3
1648 ; PWR5-NEXT: vcmpgtuh 2, 2, 5
1651 ; PWR6-LABEL: ugt_4_v8i16:
1653 ; PWR6-NEXT: addis 3, 2, .LCPI18_0@toc@ha
1654 ; PWR6-NEXT: vspltish 4, 1
1655 ; PWR6-NEXT: vxor 3, 3, 3
1656 ; PWR6-NEXT: addi 3, 3, .LCPI18_0@toc@l
1657 ; PWR6-NEXT: lvx 5, 0, 3
1658 ; PWR6-NEXT: addis 3, 2, .LCPI18_1@toc@ha
1659 ; PWR6-NEXT: addi 3, 3, .LCPI18_1@toc@l
1660 ; PWR6-NEXT: vsrh 4, 2, 4
1661 ; PWR6-NEXT: vand 4, 4, 5
1662 ; PWR6-NEXT: vspltish 5, 2
1663 ; PWR6-NEXT: vsubuhm 2, 2, 4
1664 ; PWR6-NEXT: vsrh 4, 2, 5
1665 ; PWR6-NEXT: lvx 5, 0, 3
1666 ; PWR6-NEXT: vand 2, 2, 5
1667 ; PWR6-NEXT: vand 4, 4, 5
1668 ; PWR6-NEXT: vspltish 5, 4
1669 ; PWR6-NEXT: vadduhm 2, 2, 4
1670 ; PWR6-NEXT: vsrh 4, 2, 5
1671 ; PWR6-NEXT: vadduhm 2, 2, 4
1672 ; PWR6-NEXT: vspltisb 4, 15
1673 ; PWR6-NEXT: vand 2, 2, 4
1674 ; PWR6-NEXT: vspltisb 4, 1
1675 ; PWR6-NEXT: vmladduhm 2, 2, 4, 3
1676 ; PWR6-NEXT: vspltish 3, 8
1677 ; PWR6-NEXT: vsrh 2, 2, 3
1678 ; PWR6-NEXT: vcmpgtuh 2, 2, 5
1681 ; PWR7-LABEL: ugt_4_v8i16:
1683 ; PWR7-NEXT: vspltish 3, 1
1684 ; PWR7-NEXT: addis 3, 2, .LCPI18_0@toc@ha
1685 ; PWR7-NEXT: vxor 5, 5, 5
1686 ; PWR7-NEXT: addi 3, 3, .LCPI18_0@toc@l
1687 ; PWR7-NEXT: vspltish 4, 2
1688 ; PWR7-NEXT: lxvw4x 0, 0, 3
1689 ; PWR7-NEXT: addis 3, 2, .LCPI18_1@toc@ha
1690 ; PWR7-NEXT: vspltisb 0, 15
1691 ; PWR7-NEXT: vsrh 3, 2, 3
1692 ; PWR7-NEXT: addi 3, 3, .LCPI18_1@toc@l
1693 ; PWR7-NEXT: xxland 35, 35, 0
1694 ; PWR7-NEXT: lxvw4x 0, 0, 3
1695 ; PWR7-NEXT: vsubuhm 2, 2, 3
1696 ; PWR7-NEXT: vsrh 3, 2, 4
1697 ; PWR7-NEXT: xxland 34, 34, 0
1698 ; PWR7-NEXT: vspltish 4, 4
1699 ; PWR7-NEXT: xxland 35, 35, 0
1700 ; PWR7-NEXT: vadduhm 2, 2, 3
1701 ; PWR7-NEXT: vsrh 3, 2, 4
1702 ; PWR7-NEXT: vadduhm 2, 2, 3
1703 ; PWR7-NEXT: vspltisb 3, 1
1704 ; PWR7-NEXT: xxland 34, 34, 32
1705 ; PWR7-NEXT: vmladduhm 2, 2, 3, 5
1706 ; PWR7-NEXT: vspltish 3, 8
1707 ; PWR7-NEXT: vsrh 2, 2, 3
1708 ; PWR7-NEXT: vcmpgtuh 2, 2, 4
1711 ; PWR8-LABEL: ugt_4_v8i16:
1713 ; PWR8-NEXT: vspltish 3, 4
1714 ; PWR8-NEXT: vpopcnth 2, 2
1715 ; PWR8-NEXT: vcmpgtuh 2, 2, 3
1718 ; PWR9-LABEL: ugt_4_v8i16:
1720 ; PWR9-NEXT: vspltish 3, 4
1721 ; PWR9-NEXT: vpopcnth 2, 2
1722 ; PWR9-NEXT: vcmpgtuh 2, 2, 3
1724 %2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0)
1725 %3 = icmp ugt <8 x i16> %2, <i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4>
1726 %4 = sext <8 x i1> %3 to <8 x i16>
1730 define <8 x i16> @ult_5_v8i16(<8 x i16> %0) {
1731 ; PWR5-LABEL: ult_5_v8i16:
1733 ; PWR5-NEXT: addis 3, 2, .LCPI19_0@toc@ha
1734 ; PWR5-NEXT: vspltish 4, 1
1735 ; PWR5-NEXT: vxor 3, 3, 3
1736 ; PWR5-NEXT: addi 3, 3, .LCPI19_0@toc@l
1737 ; PWR5-NEXT: lvx 5, 0, 3
1738 ; PWR5-NEXT: addis 3, 2, .LCPI19_1@toc@ha
1739 ; PWR5-NEXT: addi 3, 3, .LCPI19_1@toc@l
1740 ; PWR5-NEXT: vsrh 4, 2, 4
1741 ; PWR5-NEXT: vand 4, 4, 5
1742 ; PWR5-NEXT: vspltish 5, 2
1743 ; PWR5-NEXT: vsubuhm 2, 2, 4
1744 ; PWR5-NEXT: vsrh 4, 2, 5
1745 ; PWR5-NEXT: lvx 5, 0, 3
1746 ; PWR5-NEXT: vand 2, 2, 5
1747 ; PWR5-NEXT: vand 4, 4, 5
1748 ; PWR5-NEXT: vspltish 5, 4
1749 ; PWR5-NEXT: vadduhm 2, 2, 4
1750 ; PWR5-NEXT: vsrh 4, 2, 5
1751 ; PWR5-NEXT: vspltisb 5, 15
1752 ; PWR5-NEXT: vadduhm 2, 2, 4
1753 ; PWR5-NEXT: vspltisb 4, 1
1754 ; PWR5-NEXT: vand 2, 2, 5
1755 ; PWR5-NEXT: vmladduhm 2, 2, 4, 3
1756 ; PWR5-NEXT: vspltish 3, 8
1757 ; PWR5-NEXT: vsrh 2, 2, 3
1758 ; PWR5-NEXT: vspltish 3, 5
1759 ; PWR5-NEXT: vcmpgtuh 2, 3, 2
1762 ; PWR6-LABEL: ult_5_v8i16:
1764 ; PWR6-NEXT: addis 3, 2, .LCPI19_0@toc@ha
1765 ; PWR6-NEXT: vspltish 4, 1
1766 ; PWR6-NEXT: vxor 3, 3, 3
1767 ; PWR6-NEXT: addi 3, 3, .LCPI19_0@toc@l
1768 ; PWR6-NEXT: lvx 5, 0, 3
1769 ; PWR6-NEXT: addis 3, 2, .LCPI19_1@toc@ha
1770 ; PWR6-NEXT: addi 3, 3, .LCPI19_1@toc@l
1771 ; PWR6-NEXT: vsrh 4, 2, 4
1772 ; PWR6-NEXT: vand 4, 4, 5
1773 ; PWR6-NEXT: vspltish 5, 2
1774 ; PWR6-NEXT: vsubuhm 2, 2, 4
1775 ; PWR6-NEXT: vsrh 4, 2, 5
1776 ; PWR6-NEXT: lvx 5, 0, 3
1777 ; PWR6-NEXT: vand 2, 2, 5
1778 ; PWR6-NEXT: vand 4, 4, 5
1779 ; PWR6-NEXT: vspltish 5, 4
1780 ; PWR6-NEXT: vadduhm 2, 2, 4
1781 ; PWR6-NEXT: vsrh 4, 2, 5
1782 ; PWR6-NEXT: vspltisb 5, 15
1783 ; PWR6-NEXT: vadduhm 2, 2, 4
1784 ; PWR6-NEXT: vspltisb 4, 1
1785 ; PWR6-NEXT: vand 2, 2, 5
1786 ; PWR6-NEXT: vmladduhm 2, 2, 4, 3
1787 ; PWR6-NEXT: vspltish 3, 8
1788 ; PWR6-NEXT: vsrh 2, 2, 3
1789 ; PWR6-NEXT: vspltish 3, 5
1790 ; PWR6-NEXT: vcmpgtuh 2, 3, 2
1793 ; PWR7-LABEL: ult_5_v8i16:
1795 ; PWR7-NEXT: vspltish 3, 1
1796 ; PWR7-NEXT: addis 3, 2, .LCPI19_0@toc@ha
1797 ; PWR7-NEXT: addi 3, 3, .LCPI19_0@toc@l
1798 ; PWR7-NEXT: vspltish 4, 2
1799 ; PWR7-NEXT: lxvw4x 0, 0, 3
1800 ; PWR7-NEXT: addis 3, 2, .LCPI19_1@toc@ha
1801 ; PWR7-NEXT: vspltisb 5, 15
1802 ; PWR7-NEXT: vsrh 3, 2, 3
1803 ; PWR7-NEXT: addi 3, 3, .LCPI19_1@toc@l
1804 ; PWR7-NEXT: xxland 35, 35, 0
1805 ; PWR7-NEXT: lxvw4x 0, 0, 3
1806 ; PWR7-NEXT: vsubuhm 2, 2, 3
1807 ; PWR7-NEXT: vsrh 3, 2, 4
1808 ; PWR7-NEXT: xxland 34, 34, 0
1809 ; PWR7-NEXT: vspltish 4, 4
1810 ; PWR7-NEXT: xxland 35, 35, 0
1811 ; PWR7-NEXT: vadduhm 2, 2, 3
1812 ; PWR7-NEXT: vsrh 3, 2, 4
1813 ; PWR7-NEXT: vxor 4, 4, 4
1814 ; PWR7-NEXT: vadduhm 2, 2, 3
1815 ; PWR7-NEXT: vspltisb 3, 1
1816 ; PWR7-NEXT: xxland 34, 34, 37
1817 ; PWR7-NEXT: vmladduhm 2, 2, 3, 4
1818 ; PWR7-NEXT: vspltish 3, 8
1819 ; PWR7-NEXT: vsrh 2, 2, 3
1820 ; PWR7-NEXT: vspltish 3, 5
1821 ; PWR7-NEXT: vcmpgtuh 2, 3, 2
1824 ; PWR8-LABEL: ult_5_v8i16:
1826 ; PWR8-NEXT: vspltish 3, 5
1827 ; PWR8-NEXT: vpopcnth 2, 2
1828 ; PWR8-NEXT: vcmpgtuh 2, 3, 2
1831 ; PWR9-LABEL: ult_5_v8i16:
1833 ; PWR9-NEXT: vspltish 3, 5
1834 ; PWR9-NEXT: vpopcnth 2, 2
1835 ; PWR9-NEXT: vcmpgtuh 2, 3, 2
1837 %2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0)
1838 %3 = icmp ult <8 x i16> %2, <i16 5, i16 5, i16 5, i16 5, i16 5, i16 5, i16 5, i16 5>
1839 %4 = sext <8 x i1> %3 to <8 x i16>
1843 define <8 x i16> @ugt_5_v8i16(<8 x i16> %0) {
1844 ; PWR5-LABEL: ugt_5_v8i16:
1846 ; PWR5-NEXT: addis 3, 2, .LCPI20_0@toc@ha
1847 ; PWR5-NEXT: vspltish 4, 1
1848 ; PWR5-NEXT: vxor 3, 3, 3
1849 ; PWR5-NEXT: addi 3, 3, .LCPI20_0@toc@l
1850 ; PWR5-NEXT: lvx 5, 0, 3
1851 ; PWR5-NEXT: addis 3, 2, .LCPI20_1@toc@ha
1852 ; PWR5-NEXT: addi 3, 3, .LCPI20_1@toc@l
1853 ; PWR5-NEXT: vsrh 4, 2, 4
1854 ; PWR5-NEXT: vand 4, 4, 5
1855 ; PWR5-NEXT: vspltish 5, 2
1856 ; PWR5-NEXT: vsubuhm 2, 2, 4
1857 ; PWR5-NEXT: vsrh 4, 2, 5
1858 ; PWR5-NEXT: lvx 5, 0, 3
1859 ; PWR5-NEXT: vand 2, 2, 5
1860 ; PWR5-NEXT: vand 4, 4, 5
1861 ; PWR5-NEXT: vspltish 5, 4
1862 ; PWR5-NEXT: vadduhm 2, 2, 4
1863 ; PWR5-NEXT: vsrh 4, 2, 5
1864 ; PWR5-NEXT: vspltisb 5, 15
1865 ; PWR5-NEXT: vadduhm 2, 2, 4
1866 ; PWR5-NEXT: vspltisb 4, 1
1867 ; PWR5-NEXT: vand 2, 2, 5
1868 ; PWR5-NEXT: vmladduhm 2, 2, 4, 3
1869 ; PWR5-NEXT: vspltish 3, 8
1870 ; PWR5-NEXT: vsrh 2, 2, 3
1871 ; PWR5-NEXT: vspltish 3, 5
1872 ; PWR5-NEXT: vcmpgtuh 2, 2, 3
1875 ; PWR6-LABEL: ugt_5_v8i16:
1877 ; PWR6-NEXT: addis 3, 2, .LCPI20_0@toc@ha
1878 ; PWR6-NEXT: vspltish 4, 1
1879 ; PWR6-NEXT: vxor 3, 3, 3
1880 ; PWR6-NEXT: addi 3, 3, .LCPI20_0@toc@l
1881 ; PWR6-NEXT: lvx 5, 0, 3
1882 ; PWR6-NEXT: addis 3, 2, .LCPI20_1@toc@ha
1883 ; PWR6-NEXT: addi 3, 3, .LCPI20_1@toc@l
1884 ; PWR6-NEXT: vsrh 4, 2, 4
1885 ; PWR6-NEXT: vand 4, 4, 5
1886 ; PWR6-NEXT: vspltish 5, 2
1887 ; PWR6-NEXT: vsubuhm 2, 2, 4
1888 ; PWR6-NEXT: vsrh 4, 2, 5
1889 ; PWR6-NEXT: lvx 5, 0, 3
1890 ; PWR6-NEXT: vand 2, 2, 5
1891 ; PWR6-NEXT: vand 4, 4, 5
1892 ; PWR6-NEXT: vspltish 5, 4
1893 ; PWR6-NEXT: vadduhm 2, 2, 4
1894 ; PWR6-NEXT: vsrh 4, 2, 5
1895 ; PWR6-NEXT: vspltisb 5, 15
1896 ; PWR6-NEXT: vadduhm 2, 2, 4
1897 ; PWR6-NEXT: vspltisb 4, 1
1898 ; PWR6-NEXT: vand 2, 2, 5
1899 ; PWR6-NEXT: vmladduhm 2, 2, 4, 3
1900 ; PWR6-NEXT: vspltish 3, 8
1901 ; PWR6-NEXT: vsrh 2, 2, 3
1902 ; PWR6-NEXT: vspltish 3, 5
1903 ; PWR6-NEXT: vcmpgtuh 2, 2, 3
1906 ; PWR7-LABEL: ugt_5_v8i16:
1908 ; PWR7-NEXT: vspltish 3, 1
1909 ; PWR7-NEXT: addis 3, 2, .LCPI20_0@toc@ha
1910 ; PWR7-NEXT: addi 3, 3, .LCPI20_0@toc@l
1911 ; PWR7-NEXT: vspltish 4, 2
1912 ; PWR7-NEXT: lxvw4x 0, 0, 3
1913 ; PWR7-NEXT: addis 3, 2, .LCPI20_1@toc@ha
1914 ; PWR7-NEXT: vspltisb 5, 15
1915 ; PWR7-NEXT: vsrh 3, 2, 3
1916 ; PWR7-NEXT: addi 3, 3, .LCPI20_1@toc@l
1917 ; PWR7-NEXT: xxland 35, 35, 0
1918 ; PWR7-NEXT: lxvw4x 0, 0, 3
1919 ; PWR7-NEXT: vsubuhm 2, 2, 3
1920 ; PWR7-NEXT: vsrh 3, 2, 4
1921 ; PWR7-NEXT: xxland 34, 34, 0
1922 ; PWR7-NEXT: vspltish 4, 4
1923 ; PWR7-NEXT: xxland 35, 35, 0
1924 ; PWR7-NEXT: vadduhm 2, 2, 3
1925 ; PWR7-NEXT: vsrh 3, 2, 4
1926 ; PWR7-NEXT: vxor 4, 4, 4
1927 ; PWR7-NEXT: vadduhm 2, 2, 3
1928 ; PWR7-NEXT: vspltisb 3, 1
1929 ; PWR7-NEXT: xxland 34, 34, 37
1930 ; PWR7-NEXT: vmladduhm 2, 2, 3, 4
1931 ; PWR7-NEXT: vspltish 3, 8
1932 ; PWR7-NEXT: vsrh 2, 2, 3
1933 ; PWR7-NEXT: vspltish 3, 5
1934 ; PWR7-NEXT: vcmpgtuh 2, 2, 3
1937 ; PWR8-LABEL: ugt_5_v8i16:
1939 ; PWR8-NEXT: vspltish 3, 5
1940 ; PWR8-NEXT: vpopcnth 2, 2
1941 ; PWR8-NEXT: vcmpgtuh 2, 2, 3
1944 ; PWR9-LABEL: ugt_5_v8i16:
1946 ; PWR9-NEXT: vspltish 3, 5
1947 ; PWR9-NEXT: vpopcnth 2, 2
1948 ; PWR9-NEXT: vcmpgtuh 2, 2, 3
1950 %2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0)
1951 %3 = icmp ugt <8 x i16> %2, <i16 5, i16 5, i16 5, i16 5, i16 5, i16 5, i16 5, i16 5>
1952 %4 = sext <8 x i1> %3 to <8 x i16>
1956 define <8 x i16> @ult_6_v8i16(<8 x i16> %0) {
1957 ; PWR5-LABEL: ult_6_v8i16:
1959 ; PWR5-NEXT: addis 3, 2, .LCPI21_0@toc@ha
1960 ; PWR5-NEXT: vspltish 4, 1
1961 ; PWR5-NEXT: vxor 3, 3, 3
1962 ; PWR5-NEXT: addi 3, 3, .LCPI21_0@toc@l
1963 ; PWR5-NEXT: lvx 5, 0, 3
1964 ; PWR5-NEXT: addis 3, 2, .LCPI21_1@toc@ha
1965 ; PWR5-NEXT: addi 3, 3, .LCPI21_1@toc@l
1966 ; PWR5-NEXT: vsrh 4, 2, 4
1967 ; PWR5-NEXT: vand 4, 4, 5
1968 ; PWR5-NEXT: vspltish 5, 2
1969 ; PWR5-NEXT: vsubuhm 2, 2, 4
1970 ; PWR5-NEXT: vsrh 4, 2, 5
1971 ; PWR5-NEXT: lvx 5, 0, 3
1972 ; PWR5-NEXT: vand 2, 2, 5
1973 ; PWR5-NEXT: vand 4, 4, 5
1974 ; PWR5-NEXT: vspltish 5, 4
1975 ; PWR5-NEXT: vadduhm 2, 2, 4
1976 ; PWR5-NEXT: vsrh 4, 2, 5
1977 ; PWR5-NEXT: vspltisb 5, 15
1978 ; PWR5-NEXT: vadduhm 2, 2, 4
1979 ; PWR5-NEXT: vspltisb 4, 1
1980 ; PWR5-NEXT: vand 2, 2, 5
1981 ; PWR5-NEXT: vmladduhm 2, 2, 4, 3
1982 ; PWR5-NEXT: vspltish 3, 8
1983 ; PWR5-NEXT: vsrh 2, 2, 3
1984 ; PWR5-NEXT: vspltish 3, 6
1985 ; PWR5-NEXT: vcmpgtuh 2, 3, 2
1988 ; PWR6-LABEL: ult_6_v8i16:
1990 ; PWR6-NEXT: addis 3, 2, .LCPI21_0@toc@ha
1991 ; PWR6-NEXT: vspltish 4, 1
1992 ; PWR6-NEXT: vxor 3, 3, 3
1993 ; PWR6-NEXT: addi 3, 3, .LCPI21_0@toc@l
1994 ; PWR6-NEXT: lvx 5, 0, 3
1995 ; PWR6-NEXT: addis 3, 2, .LCPI21_1@toc@ha
1996 ; PWR6-NEXT: addi 3, 3, .LCPI21_1@toc@l
1997 ; PWR6-NEXT: vsrh 4, 2, 4
1998 ; PWR6-NEXT: vand 4, 4, 5
1999 ; PWR6-NEXT: vspltish 5, 2
2000 ; PWR6-NEXT: vsubuhm 2, 2, 4
2001 ; PWR6-NEXT: vsrh 4, 2, 5
2002 ; PWR6-NEXT: lvx 5, 0, 3
2003 ; PWR6-NEXT: vand 2, 2, 5
2004 ; PWR6-NEXT: vand 4, 4, 5
2005 ; PWR6-NEXT: vspltish 5, 4
2006 ; PWR6-NEXT: vadduhm 2, 2, 4
2007 ; PWR6-NEXT: vsrh 4, 2, 5
2008 ; PWR6-NEXT: vspltisb 5, 15
2009 ; PWR6-NEXT: vadduhm 2, 2, 4
2010 ; PWR6-NEXT: vspltisb 4, 1
2011 ; PWR6-NEXT: vand 2, 2, 5
2012 ; PWR6-NEXT: vmladduhm 2, 2, 4, 3
2013 ; PWR6-NEXT: vspltish 3, 8
2014 ; PWR6-NEXT: vsrh 2, 2, 3
2015 ; PWR6-NEXT: vspltish 3, 6
2016 ; PWR6-NEXT: vcmpgtuh 2, 3, 2
2019 ; PWR7-LABEL: ult_6_v8i16:
2021 ; PWR7-NEXT: vspltish 3, 1
2022 ; PWR7-NEXT: addis 3, 2, .LCPI21_0@toc@ha
2023 ; PWR7-NEXT: addi 3, 3, .LCPI21_0@toc@l
2024 ; PWR7-NEXT: vspltish 4, 2
2025 ; PWR7-NEXT: lxvw4x 0, 0, 3
2026 ; PWR7-NEXT: addis 3, 2, .LCPI21_1@toc@ha
2027 ; PWR7-NEXT: vspltisb 5, 15
2028 ; PWR7-NEXT: vsrh 3, 2, 3
2029 ; PWR7-NEXT: addi 3, 3, .LCPI21_1@toc@l
2030 ; PWR7-NEXT: xxland 35, 35, 0
2031 ; PWR7-NEXT: lxvw4x 0, 0, 3
2032 ; PWR7-NEXT: vsubuhm 2, 2, 3
2033 ; PWR7-NEXT: vsrh 3, 2, 4
2034 ; PWR7-NEXT: xxland 34, 34, 0
2035 ; PWR7-NEXT: vspltish 4, 4
2036 ; PWR7-NEXT: xxland 35, 35, 0
2037 ; PWR7-NEXT: vadduhm 2, 2, 3
2038 ; PWR7-NEXT: vsrh 3, 2, 4
2039 ; PWR7-NEXT: vxor 4, 4, 4
2040 ; PWR7-NEXT: vadduhm 2, 2, 3
2041 ; PWR7-NEXT: vspltisb 3, 1
2042 ; PWR7-NEXT: xxland 34, 34, 37
2043 ; PWR7-NEXT: vmladduhm 2, 2, 3, 4
2044 ; PWR7-NEXT: vspltish 3, 8
2045 ; PWR7-NEXT: vsrh 2, 2, 3
2046 ; PWR7-NEXT: vspltish 3, 6
2047 ; PWR7-NEXT: vcmpgtuh 2, 3, 2
2050 ; PWR8-LABEL: ult_6_v8i16:
2052 ; PWR8-NEXT: vspltish 3, 6
2053 ; PWR8-NEXT: vpopcnth 2, 2
2054 ; PWR8-NEXT: vcmpgtuh 2, 3, 2
2057 ; PWR9-LABEL: ult_6_v8i16:
2059 ; PWR9-NEXT: vspltish 3, 6
2060 ; PWR9-NEXT: vpopcnth 2, 2
2061 ; PWR9-NEXT: vcmpgtuh 2, 3, 2
2063 %2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0)
2064 %3 = icmp ult <8 x i16> %2, <i16 6, i16 6, i16 6, i16 6, i16 6, i16 6, i16 6, i16 6>
2065 %4 = sext <8 x i1> %3 to <8 x i16>
2069 define <8 x i16> @ugt_6_v8i16(<8 x i16> %0) {
2070 ; PWR5-LABEL: ugt_6_v8i16:
2072 ; PWR5-NEXT: addis 3, 2, .LCPI22_0@toc@ha
2073 ; PWR5-NEXT: vspltish 4, 1
2074 ; PWR5-NEXT: vxor 3, 3, 3
2075 ; PWR5-NEXT: addi 3, 3, .LCPI22_0@toc@l
2076 ; PWR5-NEXT: lvx 5, 0, 3
2077 ; PWR5-NEXT: addis 3, 2, .LCPI22_1@toc@ha
2078 ; PWR5-NEXT: addi 3, 3, .LCPI22_1@toc@l
2079 ; PWR5-NEXT: vsrh 4, 2, 4
2080 ; PWR5-NEXT: vand 4, 4, 5
2081 ; PWR5-NEXT: vspltish 5, 2
2082 ; PWR5-NEXT: vsubuhm 2, 2, 4
2083 ; PWR5-NEXT: vsrh 4, 2, 5
2084 ; PWR5-NEXT: lvx 5, 0, 3
2085 ; PWR5-NEXT: vand 2, 2, 5
2086 ; PWR5-NEXT: vand 4, 4, 5
2087 ; PWR5-NEXT: vspltish 5, 4
2088 ; PWR5-NEXT: vadduhm 2, 2, 4
2089 ; PWR5-NEXT: vsrh 4, 2, 5
2090 ; PWR5-NEXT: vspltisb 5, 15
2091 ; PWR5-NEXT: vadduhm 2, 2, 4
2092 ; PWR5-NEXT: vspltisb 4, 1
2093 ; PWR5-NEXT: vand 2, 2, 5
2094 ; PWR5-NEXT: vmladduhm 2, 2, 4, 3
2095 ; PWR5-NEXT: vspltish 3, 8
2096 ; PWR5-NEXT: vsrh 2, 2, 3
2097 ; PWR5-NEXT: vspltish 3, 6
2098 ; PWR5-NEXT: vcmpgtuh 2, 2, 3
2101 ; PWR6-LABEL: ugt_6_v8i16:
2103 ; PWR6-NEXT: addis 3, 2, .LCPI22_0@toc@ha
2104 ; PWR6-NEXT: vspltish 4, 1
2105 ; PWR6-NEXT: vxor 3, 3, 3
2106 ; PWR6-NEXT: addi 3, 3, .LCPI22_0@toc@l
2107 ; PWR6-NEXT: lvx 5, 0, 3
2108 ; PWR6-NEXT: addis 3, 2, .LCPI22_1@toc@ha
2109 ; PWR6-NEXT: addi 3, 3, .LCPI22_1@toc@l
2110 ; PWR6-NEXT: vsrh 4, 2, 4
2111 ; PWR6-NEXT: vand 4, 4, 5
2112 ; PWR6-NEXT: vspltish 5, 2
2113 ; PWR6-NEXT: vsubuhm 2, 2, 4
2114 ; PWR6-NEXT: vsrh 4, 2, 5
2115 ; PWR6-NEXT: lvx 5, 0, 3
2116 ; PWR6-NEXT: vand 2, 2, 5
2117 ; PWR6-NEXT: vand 4, 4, 5
2118 ; PWR6-NEXT: vspltish 5, 4
2119 ; PWR6-NEXT: vadduhm 2, 2, 4
2120 ; PWR6-NEXT: vsrh 4, 2, 5
2121 ; PWR6-NEXT: vspltisb 5, 15
2122 ; PWR6-NEXT: vadduhm 2, 2, 4
2123 ; PWR6-NEXT: vspltisb 4, 1
2124 ; PWR6-NEXT: vand 2, 2, 5
2125 ; PWR6-NEXT: vmladduhm 2, 2, 4, 3
2126 ; PWR6-NEXT: vspltish 3, 8
2127 ; PWR6-NEXT: vsrh 2, 2, 3
2128 ; PWR6-NEXT: vspltish 3, 6
2129 ; PWR6-NEXT: vcmpgtuh 2, 2, 3
2132 ; PWR7-LABEL: ugt_6_v8i16:
2134 ; PWR7-NEXT: vspltish 3, 1
2135 ; PWR7-NEXT: addis 3, 2, .LCPI22_0@toc@ha
2136 ; PWR7-NEXT: addi 3, 3, .LCPI22_0@toc@l
2137 ; PWR7-NEXT: vspltish 4, 2
2138 ; PWR7-NEXT: lxvw4x 0, 0, 3
2139 ; PWR7-NEXT: addis 3, 2, .LCPI22_1@toc@ha
2140 ; PWR7-NEXT: vspltisb 5, 15
2141 ; PWR7-NEXT: vsrh 3, 2, 3
2142 ; PWR7-NEXT: addi 3, 3, .LCPI22_1@toc@l
2143 ; PWR7-NEXT: xxland 35, 35, 0
2144 ; PWR7-NEXT: lxvw4x 0, 0, 3
2145 ; PWR7-NEXT: vsubuhm 2, 2, 3
2146 ; PWR7-NEXT: vsrh 3, 2, 4
2147 ; PWR7-NEXT: xxland 34, 34, 0
2148 ; PWR7-NEXT: vspltish 4, 4
2149 ; PWR7-NEXT: xxland 35, 35, 0
2150 ; PWR7-NEXT: vadduhm 2, 2, 3
2151 ; PWR7-NEXT: vsrh 3, 2, 4
2152 ; PWR7-NEXT: vxor 4, 4, 4
2153 ; PWR7-NEXT: vadduhm 2, 2, 3
2154 ; PWR7-NEXT: vspltisb 3, 1
2155 ; PWR7-NEXT: xxland 34, 34, 37
2156 ; PWR7-NEXT: vmladduhm 2, 2, 3, 4
2157 ; PWR7-NEXT: vspltish 3, 8
2158 ; PWR7-NEXT: vsrh 2, 2, 3
2159 ; PWR7-NEXT: vspltish 3, 6
2160 ; PWR7-NEXT: vcmpgtuh 2, 2, 3
2163 ; PWR8-LABEL: ugt_6_v8i16:
2165 ; PWR8-NEXT: vspltish 3, 6
2166 ; PWR8-NEXT: vpopcnth 2, 2
2167 ; PWR8-NEXT: vcmpgtuh 2, 2, 3
2170 ; PWR9-LABEL: ugt_6_v8i16:
2172 ; PWR9-NEXT: vspltish 3, 6
2173 ; PWR9-NEXT: vpopcnth 2, 2
2174 ; PWR9-NEXT: vcmpgtuh 2, 2, 3
2176 %2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0)
2177 %3 = icmp ugt <8 x i16> %2, <i16 6, i16 6, i16 6, i16 6, i16 6, i16 6, i16 6, i16 6>
2178 %4 = sext <8 x i1> %3 to <8 x i16>
2182 define <8 x i16> @ult_7_v8i16(<8 x i16> %0) {
2183 ; PWR5-LABEL: ult_7_v8i16:
2185 ; PWR5-NEXT: addis 3, 2, .LCPI23_0@toc@ha
2186 ; PWR5-NEXT: vspltish 4, 1
2187 ; PWR5-NEXT: vxor 3, 3, 3
2188 ; PWR5-NEXT: addi 3, 3, .LCPI23_0@toc@l
2189 ; PWR5-NEXT: lvx 5, 0, 3
2190 ; PWR5-NEXT: addis 3, 2, .LCPI23_1@toc@ha
2191 ; PWR5-NEXT: addi 3, 3, .LCPI23_1@toc@l
2192 ; PWR5-NEXT: vsrh 4, 2, 4
2193 ; PWR5-NEXT: vand 4, 4, 5
2194 ; PWR5-NEXT: vspltish 5, 2
2195 ; PWR5-NEXT: vsubuhm 2, 2, 4
2196 ; PWR5-NEXT: vsrh 4, 2, 5
2197 ; PWR5-NEXT: lvx 5, 0, 3
2198 ; PWR5-NEXT: vand 2, 2, 5
2199 ; PWR5-NEXT: vand 4, 4, 5
2200 ; PWR5-NEXT: vspltish 5, 4
2201 ; PWR5-NEXT: vadduhm 2, 2, 4
2202 ; PWR5-NEXT: vsrh 4, 2, 5
2203 ; PWR5-NEXT: vspltisb 5, 15
2204 ; PWR5-NEXT: vadduhm 2, 2, 4
2205 ; PWR5-NEXT: vspltisb 4, 1
2206 ; PWR5-NEXT: vand 2, 2, 5
2207 ; PWR5-NEXT: vmladduhm 2, 2, 4, 3
2208 ; PWR5-NEXT: vspltish 3, 8
2209 ; PWR5-NEXT: vsrh 2, 2, 3
2210 ; PWR5-NEXT: vspltish 3, 7
2211 ; PWR5-NEXT: vcmpgtuh 2, 3, 2
2214 ; PWR6-LABEL: ult_7_v8i16:
2216 ; PWR6-NEXT: addis 3, 2, .LCPI23_0@toc@ha
2217 ; PWR6-NEXT: vspltish 4, 1
2218 ; PWR6-NEXT: vxor 3, 3, 3
2219 ; PWR6-NEXT: addi 3, 3, .LCPI23_0@toc@l
2220 ; PWR6-NEXT: lvx 5, 0, 3
2221 ; PWR6-NEXT: addis 3, 2, .LCPI23_1@toc@ha
2222 ; PWR6-NEXT: addi 3, 3, .LCPI23_1@toc@l
2223 ; PWR6-NEXT: vsrh 4, 2, 4
2224 ; PWR6-NEXT: vand 4, 4, 5
2225 ; PWR6-NEXT: vspltish 5, 2
2226 ; PWR6-NEXT: vsubuhm 2, 2, 4
2227 ; PWR6-NEXT: vsrh 4, 2, 5
2228 ; PWR6-NEXT: lvx 5, 0, 3
2229 ; PWR6-NEXT: vand 2, 2, 5
2230 ; PWR6-NEXT: vand 4, 4, 5
2231 ; PWR6-NEXT: vspltish 5, 4
2232 ; PWR6-NEXT: vadduhm 2, 2, 4
2233 ; PWR6-NEXT: vsrh 4, 2, 5
2234 ; PWR6-NEXT: vspltisb 5, 15
2235 ; PWR6-NEXT: vadduhm 2, 2, 4
2236 ; PWR6-NEXT: vspltisb 4, 1
2237 ; PWR6-NEXT: vand 2, 2, 5
2238 ; PWR6-NEXT: vmladduhm 2, 2, 4, 3
2239 ; PWR6-NEXT: vspltish 3, 8
2240 ; PWR6-NEXT: vsrh 2, 2, 3
2241 ; PWR6-NEXT: vspltish 3, 7
2242 ; PWR6-NEXT: vcmpgtuh 2, 3, 2
2245 ; PWR7-LABEL: ult_7_v8i16:
2247 ; PWR7-NEXT: vspltish 3, 1
2248 ; PWR7-NEXT: addis 3, 2, .LCPI23_0@toc@ha
2249 ; PWR7-NEXT: addi 3, 3, .LCPI23_0@toc@l
2250 ; PWR7-NEXT: vspltish 4, 2
2251 ; PWR7-NEXT: lxvw4x 0, 0, 3
2252 ; PWR7-NEXT: addis 3, 2, .LCPI23_1@toc@ha
2253 ; PWR7-NEXT: vspltisb 5, 15
2254 ; PWR7-NEXT: vsrh 3, 2, 3
2255 ; PWR7-NEXT: addi 3, 3, .LCPI23_1@toc@l
2256 ; PWR7-NEXT: xxland 35, 35, 0
2257 ; PWR7-NEXT: lxvw4x 0, 0, 3
2258 ; PWR7-NEXT: vsubuhm 2, 2, 3
2259 ; PWR7-NEXT: vsrh 3, 2, 4
2260 ; PWR7-NEXT: xxland 34, 34, 0
2261 ; PWR7-NEXT: vspltish 4, 4
2262 ; PWR7-NEXT: xxland 35, 35, 0
2263 ; PWR7-NEXT: vadduhm 2, 2, 3
2264 ; PWR7-NEXT: vsrh 3, 2, 4
2265 ; PWR7-NEXT: vxor 4, 4, 4
2266 ; PWR7-NEXT: vadduhm 2, 2, 3
2267 ; PWR7-NEXT: vspltisb 3, 1
2268 ; PWR7-NEXT: xxland 34, 34, 37
2269 ; PWR7-NEXT: vmladduhm 2, 2, 3, 4
2270 ; PWR7-NEXT: vspltish 3, 8
2271 ; PWR7-NEXT: vsrh 2, 2, 3
2272 ; PWR7-NEXT: vspltish 3, 7
2273 ; PWR7-NEXT: vcmpgtuh 2, 3, 2
2276 ; PWR8-LABEL: ult_7_v8i16:
2278 ; PWR8-NEXT: vspltish 3, 7
2279 ; PWR8-NEXT: vpopcnth 2, 2
2280 ; PWR8-NEXT: vcmpgtuh 2, 3, 2
2283 ; PWR9-LABEL: ult_7_v8i16:
2285 ; PWR9-NEXT: vspltish 3, 7
2286 ; PWR9-NEXT: vpopcnth 2, 2
2287 ; PWR9-NEXT: vcmpgtuh 2, 3, 2
2289 %2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0)
2290 %3 = icmp ult <8 x i16> %2, <i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7>
2291 %4 = sext <8 x i1> %3 to <8 x i16>
2295 define <8 x i16> @ugt_7_v8i16(<8 x i16> %0) {
2296 ; PWR5-LABEL: ugt_7_v8i16:
2298 ; PWR5-NEXT: addis 3, 2, .LCPI24_0@toc@ha
2299 ; PWR5-NEXT: vspltish 4, 1
2300 ; PWR5-NEXT: vxor 3, 3, 3
2301 ; PWR5-NEXT: addi 3, 3, .LCPI24_0@toc@l
2302 ; PWR5-NEXT: lvx 5, 0, 3
2303 ; PWR5-NEXT: addis 3, 2, .LCPI24_1@toc@ha
2304 ; PWR5-NEXT: addi 3, 3, .LCPI24_1@toc@l
2305 ; PWR5-NEXT: vsrh 4, 2, 4
2306 ; PWR5-NEXT: vand 4, 4, 5
2307 ; PWR5-NEXT: vspltish 5, 2
2308 ; PWR5-NEXT: vsubuhm 2, 2, 4
2309 ; PWR5-NEXT: vsrh 4, 2, 5
2310 ; PWR5-NEXT: lvx 5, 0, 3
2311 ; PWR5-NEXT: vand 2, 2, 5
2312 ; PWR5-NEXT: vand 4, 4, 5
2313 ; PWR5-NEXT: vspltish 5, 4
2314 ; PWR5-NEXT: vadduhm 2, 2, 4
2315 ; PWR5-NEXT: vsrh 4, 2, 5
2316 ; PWR5-NEXT: vspltisb 5, 15
2317 ; PWR5-NEXT: vadduhm 2, 2, 4
2318 ; PWR5-NEXT: vspltisb 4, 1
2319 ; PWR5-NEXT: vand 2, 2, 5
2320 ; PWR5-NEXT: vmladduhm 2, 2, 4, 3
2321 ; PWR5-NEXT: vspltish 3, 8
2322 ; PWR5-NEXT: vsrh 2, 2, 3
2323 ; PWR5-NEXT: vspltish 3, 7
2324 ; PWR5-NEXT: vcmpgtuh 2, 2, 3
2327 ; PWR6-LABEL: ugt_7_v8i16:
2329 ; PWR6-NEXT: addis 3, 2, .LCPI24_0@toc@ha
2330 ; PWR6-NEXT: vspltish 4, 1
2331 ; PWR6-NEXT: vxor 3, 3, 3
2332 ; PWR6-NEXT: addi 3, 3, .LCPI24_0@toc@l
2333 ; PWR6-NEXT: lvx 5, 0, 3
2334 ; PWR6-NEXT: addis 3, 2, .LCPI24_1@toc@ha
2335 ; PWR6-NEXT: addi 3, 3, .LCPI24_1@toc@l
2336 ; PWR6-NEXT: vsrh 4, 2, 4
2337 ; PWR6-NEXT: vand 4, 4, 5
2338 ; PWR6-NEXT: vspltish 5, 2
2339 ; PWR6-NEXT: vsubuhm 2, 2, 4
2340 ; PWR6-NEXT: vsrh 4, 2, 5
2341 ; PWR6-NEXT: lvx 5, 0, 3
2342 ; PWR6-NEXT: vand 2, 2, 5
2343 ; PWR6-NEXT: vand 4, 4, 5
2344 ; PWR6-NEXT: vspltish 5, 4
2345 ; PWR6-NEXT: vadduhm 2, 2, 4
2346 ; PWR6-NEXT: vsrh 4, 2, 5
2347 ; PWR6-NEXT: vspltisb 5, 15
2348 ; PWR6-NEXT: vadduhm 2, 2, 4
2349 ; PWR6-NEXT: vspltisb 4, 1
2350 ; PWR6-NEXT: vand 2, 2, 5
2351 ; PWR6-NEXT: vmladduhm 2, 2, 4, 3
2352 ; PWR6-NEXT: vspltish 3, 8
2353 ; PWR6-NEXT: vsrh 2, 2, 3
2354 ; PWR6-NEXT: vspltish 3, 7
2355 ; PWR6-NEXT: vcmpgtuh 2, 2, 3
2358 ; PWR7-LABEL: ugt_7_v8i16:
2360 ; PWR7-NEXT: vspltish 3, 1
2361 ; PWR7-NEXT: addis 3, 2, .LCPI24_0@toc@ha
2362 ; PWR7-NEXT: addi 3, 3, .LCPI24_0@toc@l
2363 ; PWR7-NEXT: vspltish 4, 2
2364 ; PWR7-NEXT: lxvw4x 0, 0, 3
2365 ; PWR7-NEXT: addis 3, 2, .LCPI24_1@toc@ha
2366 ; PWR7-NEXT: vspltisb 5, 15
2367 ; PWR7-NEXT: vsrh 3, 2, 3
2368 ; PWR7-NEXT: addi 3, 3, .LCPI24_1@toc@l
2369 ; PWR7-NEXT: xxland 35, 35, 0
2370 ; PWR7-NEXT: lxvw4x 0, 0, 3
2371 ; PWR7-NEXT: vsubuhm 2, 2, 3
2372 ; PWR7-NEXT: vsrh 3, 2, 4
2373 ; PWR7-NEXT: xxland 34, 34, 0
2374 ; PWR7-NEXT: vspltish 4, 4
2375 ; PWR7-NEXT: xxland 35, 35, 0
2376 ; PWR7-NEXT: vadduhm 2, 2, 3
2377 ; PWR7-NEXT: vsrh 3, 2, 4
2378 ; PWR7-NEXT: vxor 4, 4, 4
2379 ; PWR7-NEXT: vadduhm 2, 2, 3
2380 ; PWR7-NEXT: vspltisb 3, 1
2381 ; PWR7-NEXT: xxland 34, 34, 37
2382 ; PWR7-NEXT: vmladduhm 2, 2, 3, 4
2383 ; PWR7-NEXT: vspltish 3, 8
2384 ; PWR7-NEXT: vsrh 2, 2, 3
2385 ; PWR7-NEXT: vspltish 3, 7
2386 ; PWR7-NEXT: vcmpgtuh 2, 2, 3
2389 ; PWR8-LABEL: ugt_7_v8i16:
2391 ; PWR8-NEXT: vspltish 3, 7
2392 ; PWR8-NEXT: vpopcnth 2, 2
2393 ; PWR8-NEXT: vcmpgtuh 2, 2, 3
2396 ; PWR9-LABEL: ugt_7_v8i16:
2398 ; PWR9-NEXT: vspltish 3, 7
2399 ; PWR9-NEXT: vpopcnth 2, 2
2400 ; PWR9-NEXT: vcmpgtuh 2, 2, 3
2402 %2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0)
2403 %3 = icmp ugt <8 x i16> %2, <i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7>
2404 %4 = sext <8 x i1> %3 to <8 x i16>
2408 define <8 x i16> @ult_8_v8i16(<8 x i16> %0) {
2409 ; PWR5-LABEL: ult_8_v8i16:
2411 ; PWR5-NEXT: addis 3, 2, .LCPI25_0@toc@ha
2412 ; PWR5-NEXT: vspltish 4, 1
2413 ; PWR5-NEXT: vxor 3, 3, 3
2414 ; PWR5-NEXT: addi 3, 3, .LCPI25_0@toc@l
2415 ; PWR5-NEXT: lvx 5, 0, 3
2416 ; PWR5-NEXT: addis 3, 2, .LCPI25_1@toc@ha
2417 ; PWR5-NEXT: addi 3, 3, .LCPI25_1@toc@l
2418 ; PWR5-NEXT: vsrh 4, 2, 4
2419 ; PWR5-NEXT: vand 4, 4, 5
2420 ; PWR5-NEXT: vspltish 5, 2
2421 ; PWR5-NEXT: vsubuhm 2, 2, 4
2422 ; PWR5-NEXT: vsrh 4, 2, 5
2423 ; PWR5-NEXT: lvx 5, 0, 3
2424 ; PWR5-NEXT: vand 2, 2, 5
2425 ; PWR5-NEXT: vand 4, 4, 5
2426 ; PWR5-NEXT: vspltish 5, 4
2427 ; PWR5-NEXT: vadduhm 2, 2, 4
2428 ; PWR5-NEXT: vsrh 4, 2, 5
2429 ; PWR5-NEXT: vspltisb 5, 15
2430 ; PWR5-NEXT: vadduhm 2, 2, 4
2431 ; PWR5-NEXT: vspltisb 4, 1
2432 ; PWR5-NEXT: vand 2, 2, 5
2433 ; PWR5-NEXT: vmladduhm 2, 2, 4, 3
2434 ; PWR5-NEXT: vspltish 3, 8
2435 ; PWR5-NEXT: vsrh 2, 2, 3
2436 ; PWR5-NEXT: vcmpgtuh 2, 3, 2
2439 ; PWR6-LABEL: ult_8_v8i16:
2441 ; PWR6-NEXT: addis 3, 2, .LCPI25_0@toc@ha
2442 ; PWR6-NEXT: vspltish 4, 1
2443 ; PWR6-NEXT: vxor 3, 3, 3
2444 ; PWR6-NEXT: addi 3, 3, .LCPI25_0@toc@l
2445 ; PWR6-NEXT: lvx 5, 0, 3
2446 ; PWR6-NEXT: addis 3, 2, .LCPI25_1@toc@ha
2447 ; PWR6-NEXT: addi 3, 3, .LCPI25_1@toc@l
2448 ; PWR6-NEXT: vsrh 4, 2, 4
2449 ; PWR6-NEXT: vand 4, 4, 5
2450 ; PWR6-NEXT: vspltish 5, 2
2451 ; PWR6-NEXT: vsubuhm 2, 2, 4
2452 ; PWR6-NEXT: vsrh 4, 2, 5
2453 ; PWR6-NEXT: lvx 5, 0, 3
2454 ; PWR6-NEXT: vand 2, 2, 5
2455 ; PWR6-NEXT: vand 4, 4, 5
2456 ; PWR6-NEXT: vspltish 5, 4
2457 ; PWR6-NEXT: vadduhm 2, 2, 4
2458 ; PWR6-NEXT: vsrh 4, 2, 5
2459 ; PWR6-NEXT: vspltisb 5, 15
2460 ; PWR6-NEXT: vadduhm 2, 2, 4
2461 ; PWR6-NEXT: vspltisb 4, 1
2462 ; PWR6-NEXT: vand 2, 2, 5
2463 ; PWR6-NEXT: vmladduhm 2, 2, 4, 3
2464 ; PWR6-NEXT: vspltish 3, 8
2465 ; PWR6-NEXT: vsrh 2, 2, 3
2466 ; PWR6-NEXT: vcmpgtuh 2, 3, 2
2469 ; PWR7-LABEL: ult_8_v8i16:
2471 ; PWR7-NEXT: vspltish 3, 1
2472 ; PWR7-NEXT: addis 3, 2, .LCPI25_0@toc@ha
2473 ; PWR7-NEXT: addi 3, 3, .LCPI25_0@toc@l
2474 ; PWR7-NEXT: vspltish 4, 2
2475 ; PWR7-NEXT: lxvw4x 0, 0, 3
2476 ; PWR7-NEXT: addis 3, 2, .LCPI25_1@toc@ha
2477 ; PWR7-NEXT: vspltisb 5, 15
2478 ; PWR7-NEXT: vsrh 3, 2, 3
2479 ; PWR7-NEXT: addi 3, 3, .LCPI25_1@toc@l
2480 ; PWR7-NEXT: xxland 35, 35, 0
2481 ; PWR7-NEXT: lxvw4x 0, 0, 3
2482 ; PWR7-NEXT: vsubuhm 2, 2, 3
2483 ; PWR7-NEXT: vsrh 3, 2, 4
2484 ; PWR7-NEXT: xxland 34, 34, 0
2485 ; PWR7-NEXT: vspltish 4, 4
2486 ; PWR7-NEXT: xxland 35, 35, 0
2487 ; PWR7-NEXT: vadduhm 2, 2, 3
2488 ; PWR7-NEXT: vsrh 3, 2, 4
2489 ; PWR7-NEXT: vxor 4, 4, 4
2490 ; PWR7-NEXT: vadduhm 2, 2, 3
2491 ; PWR7-NEXT: vspltisb 3, 1
2492 ; PWR7-NEXT: xxland 34, 34, 37
2493 ; PWR7-NEXT: vmladduhm 2, 2, 3, 4
2494 ; PWR7-NEXT: vspltish 3, 8
2495 ; PWR7-NEXT: vsrh 2, 2, 3
2496 ; PWR7-NEXT: vcmpgtuh 2, 3, 2
2499 ; PWR8-LABEL: ult_8_v8i16:
2501 ; PWR8-NEXT: vspltish 3, 8
2502 ; PWR8-NEXT: vpopcnth 2, 2
2503 ; PWR8-NEXT: vcmpgtuh 2, 3, 2
2506 ; PWR9-LABEL: ult_8_v8i16:
2508 ; PWR9-NEXT: vspltish 3, 8
2509 ; PWR9-NEXT: vpopcnth 2, 2
2510 ; PWR9-NEXT: vcmpgtuh 2, 3, 2
2512 %2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0)
2513 %3 = icmp ult <8 x i16> %2, <i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8>
2514 %4 = sext <8 x i1> %3 to <8 x i16>
2518 define <8 x i16> @ugt_8_v8i16(<8 x i16> %0) {
2519 ; PWR5-LABEL: ugt_8_v8i16:
2521 ; PWR5-NEXT: addis 3, 2, .LCPI26_0@toc@ha
2522 ; PWR5-NEXT: vspltish 4, 1
2523 ; PWR5-NEXT: vxor 3, 3, 3
2524 ; PWR5-NEXT: addi 3, 3, .LCPI26_0@toc@l
2525 ; PWR5-NEXT: lvx 5, 0, 3
2526 ; PWR5-NEXT: addis 3, 2, .LCPI26_1@toc@ha
2527 ; PWR5-NEXT: addi 3, 3, .LCPI26_1@toc@l
2528 ; PWR5-NEXT: vsrh 4, 2, 4
2529 ; PWR5-NEXT: vand 4, 4, 5
2530 ; PWR5-NEXT: vspltish 5, 2
2531 ; PWR5-NEXT: vsubuhm 2, 2, 4
2532 ; PWR5-NEXT: vsrh 4, 2, 5
2533 ; PWR5-NEXT: lvx 5, 0, 3
2534 ; PWR5-NEXT: vand 2, 2, 5
2535 ; PWR5-NEXT: vand 4, 4, 5
2536 ; PWR5-NEXT: vspltish 5, 4
2537 ; PWR5-NEXT: vadduhm 2, 2, 4
2538 ; PWR5-NEXT: vsrh 4, 2, 5
2539 ; PWR5-NEXT: vspltisb 5, 15
2540 ; PWR5-NEXT: vadduhm 2, 2, 4
2541 ; PWR5-NEXT: vspltisb 4, 1
2542 ; PWR5-NEXT: vand 2, 2, 5
2543 ; PWR5-NEXT: vmladduhm 2, 2, 4, 3
2544 ; PWR5-NEXT: vspltish 3, 8
2545 ; PWR5-NEXT: vsrh 2, 2, 3
2546 ; PWR5-NEXT: vcmpgtuh 2, 2, 3
2549 ; PWR6-LABEL: ugt_8_v8i16:
2551 ; PWR6-NEXT: addis 3, 2, .LCPI26_0@toc@ha
2552 ; PWR6-NEXT: vspltish 4, 1
2553 ; PWR6-NEXT: vxor 3, 3, 3
2554 ; PWR6-NEXT: addi 3, 3, .LCPI26_0@toc@l
2555 ; PWR6-NEXT: lvx 5, 0, 3
2556 ; PWR6-NEXT: addis 3, 2, .LCPI26_1@toc@ha
2557 ; PWR6-NEXT: addi 3, 3, .LCPI26_1@toc@l
2558 ; PWR6-NEXT: vsrh 4, 2, 4
2559 ; PWR6-NEXT: vand 4, 4, 5
2560 ; PWR6-NEXT: vspltish 5, 2
2561 ; PWR6-NEXT: vsubuhm 2, 2, 4
2562 ; PWR6-NEXT: vsrh 4, 2, 5
2563 ; PWR6-NEXT: lvx 5, 0, 3
2564 ; PWR6-NEXT: vand 2, 2, 5
2565 ; PWR6-NEXT: vand 4, 4, 5
2566 ; PWR6-NEXT: vspltish 5, 4
2567 ; PWR6-NEXT: vadduhm 2, 2, 4
2568 ; PWR6-NEXT: vsrh 4, 2, 5
2569 ; PWR6-NEXT: vspltisb 5, 15
2570 ; PWR6-NEXT: vadduhm 2, 2, 4
2571 ; PWR6-NEXT: vspltisb 4, 1
2572 ; PWR6-NEXT: vand 2, 2, 5
2573 ; PWR6-NEXT: vmladduhm 2, 2, 4, 3
2574 ; PWR6-NEXT: vspltish 3, 8
2575 ; PWR6-NEXT: vsrh 2, 2, 3
2576 ; PWR6-NEXT: vcmpgtuh 2, 2, 3
2579 ; PWR7-LABEL: ugt_8_v8i16:
2581 ; PWR7-NEXT: vspltish 3, 1
2582 ; PWR7-NEXT: addis 3, 2, .LCPI26_0@toc@ha
2583 ; PWR7-NEXT: addi 3, 3, .LCPI26_0@toc@l
2584 ; PWR7-NEXT: vspltish 4, 2
2585 ; PWR7-NEXT: lxvw4x 0, 0, 3
2586 ; PWR7-NEXT: addis 3, 2, .LCPI26_1@toc@ha
2587 ; PWR7-NEXT: vspltisb 5, 15
2588 ; PWR7-NEXT: vsrh 3, 2, 3
2589 ; PWR7-NEXT: addi 3, 3, .LCPI26_1@toc@l
2590 ; PWR7-NEXT: xxland 35, 35, 0
2591 ; PWR7-NEXT: lxvw4x 0, 0, 3
2592 ; PWR7-NEXT: vsubuhm 2, 2, 3
2593 ; PWR7-NEXT: vsrh 3, 2, 4
2594 ; PWR7-NEXT: xxland 34, 34, 0
2595 ; PWR7-NEXT: vspltish 4, 4
2596 ; PWR7-NEXT: xxland 35, 35, 0
2597 ; PWR7-NEXT: vadduhm 2, 2, 3
2598 ; PWR7-NEXT: vsrh 3, 2, 4
2599 ; PWR7-NEXT: vxor 4, 4, 4
2600 ; PWR7-NEXT: vadduhm 2, 2, 3
2601 ; PWR7-NEXT: vspltisb 3, 1
2602 ; PWR7-NEXT: xxland 34, 34, 37
2603 ; PWR7-NEXT: vmladduhm 2, 2, 3, 4
2604 ; PWR7-NEXT: vspltish 3, 8
2605 ; PWR7-NEXT: vsrh 2, 2, 3
2606 ; PWR7-NEXT: vcmpgtuh 2, 2, 3
2609 ; PWR8-LABEL: ugt_8_v8i16:
2611 ; PWR8-NEXT: vspltish 3, 8
2612 ; PWR8-NEXT: vpopcnth 2, 2
2613 ; PWR8-NEXT: vcmpgtuh 2, 2, 3
2616 ; PWR9-LABEL: ugt_8_v8i16:
2618 ; PWR9-NEXT: vspltish 3, 8
2619 ; PWR9-NEXT: vpopcnth 2, 2
2620 ; PWR9-NEXT: vcmpgtuh 2, 2, 3
2622 %2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0)
2623 %3 = icmp ugt <8 x i16> %2, <i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8>
2624 %4 = sext <8 x i1> %3 to <8 x i16>
2628 define <8 x i16> @ult_9_v8i16(<8 x i16> %0) {
2629 ; PWR5-LABEL: ult_9_v8i16:
2631 ; PWR5-NEXT: addis 3, 2, .LCPI27_0@toc@ha
2632 ; PWR5-NEXT: vspltish 4, 1
2633 ; PWR5-NEXT: vxor 3, 3, 3
2634 ; PWR5-NEXT: addi 3, 3, .LCPI27_0@toc@l
2635 ; PWR5-NEXT: lvx 5, 0, 3
2636 ; PWR5-NEXT: addis 3, 2, .LCPI27_1@toc@ha
2637 ; PWR5-NEXT: addi 3, 3, .LCPI27_1@toc@l
2638 ; PWR5-NEXT: vsrh 4, 2, 4
2639 ; PWR5-NEXT: vand 4, 4, 5
2640 ; PWR5-NEXT: vspltish 5, 2
2641 ; PWR5-NEXT: vsubuhm 2, 2, 4
2642 ; PWR5-NEXT: vsrh 4, 2, 5
2643 ; PWR5-NEXT: lvx 5, 0, 3
2644 ; PWR5-NEXT: vand 2, 2, 5
2645 ; PWR5-NEXT: vand 4, 4, 5
2646 ; PWR5-NEXT: vspltish 5, 4
2647 ; PWR5-NEXT: vadduhm 2, 2, 4
2648 ; PWR5-NEXT: vsrh 4, 2, 5
2649 ; PWR5-NEXT: vspltisb 5, 15
2650 ; PWR5-NEXT: vadduhm 2, 2, 4
2651 ; PWR5-NEXT: vspltisb 4, 1
2652 ; PWR5-NEXT: vand 2, 2, 5
2653 ; PWR5-NEXT: vmladduhm 2, 2, 4, 3
2654 ; PWR5-NEXT: vspltish 3, 8
2655 ; PWR5-NEXT: vsrh 2, 2, 3
2656 ; PWR5-NEXT: vspltish 3, 9
2657 ; PWR5-NEXT: vcmpgtuh 2, 3, 2
2660 ; PWR6-LABEL: ult_9_v8i16:
2662 ; PWR6-NEXT: addis 3, 2, .LCPI27_0@toc@ha
2663 ; PWR6-NEXT: vspltish 4, 1
2664 ; PWR6-NEXT: vxor 3, 3, 3
2665 ; PWR6-NEXT: addi 3, 3, .LCPI27_0@toc@l
2666 ; PWR6-NEXT: lvx 5, 0, 3
2667 ; PWR6-NEXT: addis 3, 2, .LCPI27_1@toc@ha
2668 ; PWR6-NEXT: addi 3, 3, .LCPI27_1@toc@l
2669 ; PWR6-NEXT: vsrh 4, 2, 4
2670 ; PWR6-NEXT: vand 4, 4, 5
2671 ; PWR6-NEXT: vspltish 5, 2
2672 ; PWR6-NEXT: vsubuhm 2, 2, 4
2673 ; PWR6-NEXT: vsrh 4, 2, 5
2674 ; PWR6-NEXT: lvx 5, 0, 3
2675 ; PWR6-NEXT: vand 2, 2, 5
2676 ; PWR6-NEXT: vand 4, 4, 5
2677 ; PWR6-NEXT: vspltish 5, 4
2678 ; PWR6-NEXT: vadduhm 2, 2, 4
2679 ; PWR6-NEXT: vsrh 4, 2, 5
2680 ; PWR6-NEXT: vspltisb 5, 15
2681 ; PWR6-NEXT: vadduhm 2, 2, 4
2682 ; PWR6-NEXT: vspltisb 4, 1
2683 ; PWR6-NEXT: vand 2, 2, 5
2684 ; PWR6-NEXT: vmladduhm 2, 2, 4, 3
2685 ; PWR6-NEXT: vspltish 3, 8
2686 ; PWR6-NEXT: vsrh 2, 2, 3
2687 ; PWR6-NEXT: vspltish 3, 9
2688 ; PWR6-NEXT: vcmpgtuh 2, 3, 2
2691 ; PWR7-LABEL: ult_9_v8i16:
2693 ; PWR7-NEXT: vspltish 3, 1
2694 ; PWR7-NEXT: addis 3, 2, .LCPI27_0@toc@ha
2695 ; PWR7-NEXT: addi 3, 3, .LCPI27_0@toc@l
2696 ; PWR7-NEXT: vspltish 4, 2
2697 ; PWR7-NEXT: lxvw4x 0, 0, 3
2698 ; PWR7-NEXT: addis 3, 2, .LCPI27_1@toc@ha
2699 ; PWR7-NEXT: vspltisb 5, 15
2700 ; PWR7-NEXT: vsrh 3, 2, 3
2701 ; PWR7-NEXT: addi 3, 3, .LCPI27_1@toc@l
2702 ; PWR7-NEXT: xxland 35, 35, 0
2703 ; PWR7-NEXT: lxvw4x 0, 0, 3
2704 ; PWR7-NEXT: vsubuhm 2, 2, 3
2705 ; PWR7-NEXT: vsrh 3, 2, 4
2706 ; PWR7-NEXT: xxland 34, 34, 0
2707 ; PWR7-NEXT: vspltish 4, 4
2708 ; PWR7-NEXT: xxland 35, 35, 0
2709 ; PWR7-NEXT: vadduhm 2, 2, 3
2710 ; PWR7-NEXT: vsrh 3, 2, 4
2711 ; PWR7-NEXT: vxor 4, 4, 4
2712 ; PWR7-NEXT: vadduhm 2, 2, 3
2713 ; PWR7-NEXT: vspltisb 3, 1
2714 ; PWR7-NEXT: xxland 34, 34, 37
2715 ; PWR7-NEXT: vmladduhm 2, 2, 3, 4
2716 ; PWR7-NEXT: vspltish 3, 8
2717 ; PWR7-NEXT: vsrh 2, 2, 3
2718 ; PWR7-NEXT: vspltish 3, 9
2719 ; PWR7-NEXT: vcmpgtuh 2, 3, 2
2722 ; PWR8-LABEL: ult_9_v8i16:
2724 ; PWR8-NEXT: vspltish 3, 9
2725 ; PWR8-NEXT: vpopcnth 2, 2
2726 ; PWR8-NEXT: vcmpgtuh 2, 3, 2
2729 ; PWR9-LABEL: ult_9_v8i16:
2731 ; PWR9-NEXT: vspltish 3, 9
2732 ; PWR9-NEXT: vpopcnth 2, 2
2733 ; PWR9-NEXT: vcmpgtuh 2, 3, 2
2735 %2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0)
2736 %3 = icmp ult <8 x i16> %2, <i16 9, i16 9, i16 9, i16 9, i16 9, i16 9, i16 9, i16 9>
2737 %4 = sext <8 x i1> %3 to <8 x i16>
2741 define <8 x i16> @ugt_9_v8i16(<8 x i16> %0) {
2742 ; PWR5-LABEL: ugt_9_v8i16:
2744 ; PWR5-NEXT: addis 3, 2, .LCPI28_0@toc@ha
2745 ; PWR5-NEXT: vspltish 4, 1
2746 ; PWR5-NEXT: vxor 3, 3, 3
2747 ; PWR5-NEXT: addi 3, 3, .LCPI28_0@toc@l
2748 ; PWR5-NEXT: lvx 5, 0, 3
2749 ; PWR5-NEXT: addis 3, 2, .LCPI28_1@toc@ha
2750 ; PWR5-NEXT: addi 3, 3, .LCPI28_1@toc@l
2751 ; PWR5-NEXT: vsrh 4, 2, 4
2752 ; PWR5-NEXT: vand 4, 4, 5
2753 ; PWR5-NEXT: vspltish 5, 2
2754 ; PWR5-NEXT: vsubuhm 2, 2, 4
2755 ; PWR5-NEXT: vsrh 4, 2, 5
2756 ; PWR5-NEXT: lvx 5, 0, 3
2757 ; PWR5-NEXT: vand 2, 2, 5
2758 ; PWR5-NEXT: vand 4, 4, 5
2759 ; PWR5-NEXT: vspltish 5, 4
2760 ; PWR5-NEXT: vadduhm 2, 2, 4
2761 ; PWR5-NEXT: vsrh 4, 2, 5
2762 ; PWR5-NEXT: vspltisb 5, 15
2763 ; PWR5-NEXT: vadduhm 2, 2, 4
2764 ; PWR5-NEXT: vspltisb 4, 1
2765 ; PWR5-NEXT: vand 2, 2, 5
2766 ; PWR5-NEXT: vmladduhm 2, 2, 4, 3
2767 ; PWR5-NEXT: vspltish 3, 8
2768 ; PWR5-NEXT: vsrh 2, 2, 3
2769 ; PWR5-NEXT: vspltish 3, 9
2770 ; PWR5-NEXT: vcmpgtuh 2, 2, 3
2773 ; PWR6-LABEL: ugt_9_v8i16:
2775 ; PWR6-NEXT: addis 3, 2, .LCPI28_0@toc@ha
2776 ; PWR6-NEXT: vspltish 4, 1
2777 ; PWR6-NEXT: vxor 3, 3, 3
2778 ; PWR6-NEXT: addi 3, 3, .LCPI28_0@toc@l
2779 ; PWR6-NEXT: lvx 5, 0, 3
2780 ; PWR6-NEXT: addis 3, 2, .LCPI28_1@toc@ha
2781 ; PWR6-NEXT: addi 3, 3, .LCPI28_1@toc@l
2782 ; PWR6-NEXT: vsrh 4, 2, 4
2783 ; PWR6-NEXT: vand 4, 4, 5
2784 ; PWR6-NEXT: vspltish 5, 2
2785 ; PWR6-NEXT: vsubuhm 2, 2, 4
2786 ; PWR6-NEXT: vsrh 4, 2, 5
2787 ; PWR6-NEXT: lvx 5, 0, 3
2788 ; PWR6-NEXT: vand 2, 2, 5
2789 ; PWR6-NEXT: vand 4, 4, 5
2790 ; PWR6-NEXT: vspltish 5, 4
2791 ; PWR6-NEXT: vadduhm 2, 2, 4
2792 ; PWR6-NEXT: vsrh 4, 2, 5
2793 ; PWR6-NEXT: vspltisb 5, 15
2794 ; PWR6-NEXT: vadduhm 2, 2, 4
2795 ; PWR6-NEXT: vspltisb 4, 1
2796 ; PWR6-NEXT: vand 2, 2, 5
2797 ; PWR6-NEXT: vmladduhm 2, 2, 4, 3
2798 ; PWR6-NEXT: vspltish 3, 8
2799 ; PWR6-NEXT: vsrh 2, 2, 3
2800 ; PWR6-NEXT: vspltish 3, 9
2801 ; PWR6-NEXT: vcmpgtuh 2, 2, 3
2804 ; PWR7-LABEL: ugt_9_v8i16:
2806 ; PWR7-NEXT: vspltish 3, 1
2807 ; PWR7-NEXT: addis 3, 2, .LCPI28_0@toc@ha
2808 ; PWR7-NEXT: addi 3, 3, .LCPI28_0@toc@l
2809 ; PWR7-NEXT: vspltish 4, 2
2810 ; PWR7-NEXT: lxvw4x 0, 0, 3
2811 ; PWR7-NEXT: addis 3, 2, .LCPI28_1@toc@ha
2812 ; PWR7-NEXT: vspltisb 5, 15
2813 ; PWR7-NEXT: vsrh 3, 2, 3
2814 ; PWR7-NEXT: addi 3, 3, .LCPI28_1@toc@l
2815 ; PWR7-NEXT: xxland 35, 35, 0
2816 ; PWR7-NEXT: lxvw4x 0, 0, 3
2817 ; PWR7-NEXT: vsubuhm 2, 2, 3
2818 ; PWR7-NEXT: vsrh 3, 2, 4
2819 ; PWR7-NEXT: xxland 34, 34, 0
2820 ; PWR7-NEXT: vspltish 4, 4
2821 ; PWR7-NEXT: xxland 35, 35, 0
2822 ; PWR7-NEXT: vadduhm 2, 2, 3
2823 ; PWR7-NEXT: vsrh 3, 2, 4
2824 ; PWR7-NEXT: vxor 4, 4, 4
2825 ; PWR7-NEXT: vadduhm 2, 2, 3
2826 ; PWR7-NEXT: vspltisb 3, 1
2827 ; PWR7-NEXT: xxland 34, 34, 37
2828 ; PWR7-NEXT: vmladduhm 2, 2, 3, 4
2829 ; PWR7-NEXT: vspltish 3, 8
2830 ; PWR7-NEXT: vsrh 2, 2, 3
2831 ; PWR7-NEXT: vspltish 3, 9
2832 ; PWR7-NEXT: vcmpgtuh 2, 2, 3
2835 ; PWR8-LABEL: ugt_9_v8i16:
2837 ; PWR8-NEXT: vspltish 3, 9
2838 ; PWR8-NEXT: vpopcnth 2, 2
2839 ; PWR8-NEXT: vcmpgtuh 2, 2, 3
2842 ; PWR9-LABEL: ugt_9_v8i16:
2844 ; PWR9-NEXT: vspltish 3, 9
2845 ; PWR9-NEXT: vpopcnth 2, 2
2846 ; PWR9-NEXT: vcmpgtuh 2, 2, 3
2848 %2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0)
2849 %3 = icmp ugt <8 x i16> %2, <i16 9, i16 9, i16 9, i16 9, i16 9, i16 9, i16 9, i16 9>
2850 %4 = sext <8 x i1> %3 to <8 x i16>
2854 define <8 x i16> @ult_10_v8i16(<8 x i16> %0) {
2855 ; PWR5-LABEL: ult_10_v8i16:
2857 ; PWR5-NEXT: addis 3, 2, .LCPI29_0@toc@ha
2858 ; PWR5-NEXT: vspltish 4, 1
2859 ; PWR5-NEXT: vxor 3, 3, 3
2860 ; PWR5-NEXT: addi 3, 3, .LCPI29_0@toc@l
2861 ; PWR5-NEXT: lvx 5, 0, 3
2862 ; PWR5-NEXT: addis 3, 2, .LCPI29_1@toc@ha
2863 ; PWR5-NEXT: addi 3, 3, .LCPI29_1@toc@l
2864 ; PWR5-NEXT: vsrh 4, 2, 4
2865 ; PWR5-NEXT: vand 4, 4, 5
2866 ; PWR5-NEXT: vspltish 5, 2
2867 ; PWR5-NEXT: vsubuhm 2, 2, 4
2868 ; PWR5-NEXT: vsrh 4, 2, 5
2869 ; PWR5-NEXT: lvx 5, 0, 3
2870 ; PWR5-NEXT: vand 2, 2, 5
2871 ; PWR5-NEXT: vand 4, 4, 5
2872 ; PWR5-NEXT: vspltish 5, 4
2873 ; PWR5-NEXT: vadduhm 2, 2, 4
2874 ; PWR5-NEXT: vsrh 4, 2, 5
2875 ; PWR5-NEXT: vspltisb 5, 15
2876 ; PWR5-NEXT: vadduhm 2, 2, 4
2877 ; PWR5-NEXT: vspltisb 4, 1
2878 ; PWR5-NEXT: vand 2, 2, 5
2879 ; PWR5-NEXT: vmladduhm 2, 2, 4, 3
2880 ; PWR5-NEXT: vspltish 3, 8
2881 ; PWR5-NEXT: vsrh 2, 2, 3
2882 ; PWR5-NEXT: vspltish 3, 10
2883 ; PWR5-NEXT: vcmpgtuh 2, 3, 2
2886 ; PWR6-LABEL: ult_10_v8i16:
2888 ; PWR6-NEXT: addis 3, 2, .LCPI29_0@toc@ha
2889 ; PWR6-NEXT: vspltish 4, 1
2890 ; PWR6-NEXT: vxor 3, 3, 3
2891 ; PWR6-NEXT: addi 3, 3, .LCPI29_0@toc@l
2892 ; PWR6-NEXT: lvx 5, 0, 3
2893 ; PWR6-NEXT: addis 3, 2, .LCPI29_1@toc@ha
2894 ; PWR6-NEXT: addi 3, 3, .LCPI29_1@toc@l
2895 ; PWR6-NEXT: vsrh 4, 2, 4
2896 ; PWR6-NEXT: vand 4, 4, 5
2897 ; PWR6-NEXT: vspltish 5, 2
2898 ; PWR6-NEXT: vsubuhm 2, 2, 4
2899 ; PWR6-NEXT: vsrh 4, 2, 5
2900 ; PWR6-NEXT: lvx 5, 0, 3
2901 ; PWR6-NEXT: vand 2, 2, 5
2902 ; PWR6-NEXT: vand 4, 4, 5
2903 ; PWR6-NEXT: vspltish 5, 4
2904 ; PWR6-NEXT: vadduhm 2, 2, 4
2905 ; PWR6-NEXT: vsrh 4, 2, 5
2906 ; PWR6-NEXT: vspltisb 5, 15
2907 ; PWR6-NEXT: vadduhm 2, 2, 4
2908 ; PWR6-NEXT: vspltisb 4, 1
2909 ; PWR6-NEXT: vand 2, 2, 5
2910 ; PWR6-NEXT: vmladduhm 2, 2, 4, 3
2911 ; PWR6-NEXT: vspltish 3, 8
2912 ; PWR6-NEXT: vsrh 2, 2, 3
2913 ; PWR6-NEXT: vspltish 3, 10
2914 ; PWR6-NEXT: vcmpgtuh 2, 3, 2
2917 ; PWR7-LABEL: ult_10_v8i16:
2919 ; PWR7-NEXT: vspltish 3, 1
2920 ; PWR7-NEXT: addis 3, 2, .LCPI29_0@toc@ha
2921 ; PWR7-NEXT: addi 3, 3, .LCPI29_0@toc@l
2922 ; PWR7-NEXT: vspltish 4, 2
2923 ; PWR7-NEXT: lxvw4x 0, 0, 3
2924 ; PWR7-NEXT: addis 3, 2, .LCPI29_1@toc@ha
2925 ; PWR7-NEXT: vspltisb 5, 15
2926 ; PWR7-NEXT: vsrh 3, 2, 3
2927 ; PWR7-NEXT: addi 3, 3, .LCPI29_1@toc@l
2928 ; PWR7-NEXT: xxland 35, 35, 0
2929 ; PWR7-NEXT: lxvw4x 0, 0, 3
2930 ; PWR7-NEXT: vsubuhm 2, 2, 3
2931 ; PWR7-NEXT: vsrh 3, 2, 4
2932 ; PWR7-NEXT: xxland 34, 34, 0
2933 ; PWR7-NEXT: vspltish 4, 4
2934 ; PWR7-NEXT: xxland 35, 35, 0
2935 ; PWR7-NEXT: vadduhm 2, 2, 3
2936 ; PWR7-NEXT: vsrh 3, 2, 4
2937 ; PWR7-NEXT: vxor 4, 4, 4
2938 ; PWR7-NEXT: vadduhm 2, 2, 3
2939 ; PWR7-NEXT: vspltisb 3, 1
2940 ; PWR7-NEXT: xxland 34, 34, 37
2941 ; PWR7-NEXT: vmladduhm 2, 2, 3, 4
2942 ; PWR7-NEXT: vspltish 3, 8
2943 ; PWR7-NEXT: vsrh 2, 2, 3
2944 ; PWR7-NEXT: vspltish 3, 10
2945 ; PWR7-NEXT: vcmpgtuh 2, 3, 2
2948 ; PWR8-LABEL: ult_10_v8i16:
2950 ; PWR8-NEXT: vspltish 3, 10
2951 ; PWR8-NEXT: vpopcnth 2, 2
2952 ; PWR8-NEXT: vcmpgtuh 2, 3, 2
2955 ; PWR9-LABEL: ult_10_v8i16:
2957 ; PWR9-NEXT: vspltish 3, 10
2958 ; PWR9-NEXT: vpopcnth 2, 2
2959 ; PWR9-NEXT: vcmpgtuh 2, 3, 2
2961 %2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0)
2962 %3 = icmp ult <8 x i16> %2, <i16 10, i16 10, i16 10, i16 10, i16 10, i16 10, i16 10, i16 10>
2963 %4 = sext <8 x i1> %3 to <8 x i16>
2967 define <8 x i16> @ugt_10_v8i16(<8 x i16> %0) {
2968 ; PWR5-LABEL: ugt_10_v8i16:
2970 ; PWR5-NEXT: addis 3, 2, .LCPI30_0@toc@ha
2971 ; PWR5-NEXT: vspltish 4, 1
2972 ; PWR5-NEXT: vxor 3, 3, 3
2973 ; PWR5-NEXT: addi 3, 3, .LCPI30_0@toc@l
2974 ; PWR5-NEXT: lvx 5, 0, 3
2975 ; PWR5-NEXT: addis 3, 2, .LCPI30_1@toc@ha
2976 ; PWR5-NEXT: addi 3, 3, .LCPI30_1@toc@l
2977 ; PWR5-NEXT: vsrh 4, 2, 4
2978 ; PWR5-NEXT: vand 4, 4, 5
2979 ; PWR5-NEXT: vspltish 5, 2
2980 ; PWR5-NEXT: vsubuhm 2, 2, 4
2981 ; PWR5-NEXT: vsrh 4, 2, 5
2982 ; PWR5-NEXT: lvx 5, 0, 3
2983 ; PWR5-NEXT: vand 2, 2, 5
2984 ; PWR5-NEXT: vand 4, 4, 5
2985 ; PWR5-NEXT: vspltish 5, 4
2986 ; PWR5-NEXT: vadduhm 2, 2, 4
2987 ; PWR5-NEXT: vsrh 4, 2, 5
2988 ; PWR5-NEXT: vspltisb 5, 15
2989 ; PWR5-NEXT: vadduhm 2, 2, 4
2990 ; PWR5-NEXT: vspltisb 4, 1
2991 ; PWR5-NEXT: vand 2, 2, 5
2992 ; PWR5-NEXT: vmladduhm 2, 2, 4, 3
2993 ; PWR5-NEXT: vspltish 3, 8
2994 ; PWR5-NEXT: vsrh 2, 2, 3
2995 ; PWR5-NEXT: vspltish 3, 10
2996 ; PWR5-NEXT: vcmpgtuh 2, 2, 3
2999 ; PWR6-LABEL: ugt_10_v8i16:
3001 ; PWR6-NEXT: addis 3, 2, .LCPI30_0@toc@ha
3002 ; PWR6-NEXT: vspltish 4, 1
3003 ; PWR6-NEXT: vxor 3, 3, 3
3004 ; PWR6-NEXT: addi 3, 3, .LCPI30_0@toc@l
3005 ; PWR6-NEXT: lvx 5, 0, 3
3006 ; PWR6-NEXT: addis 3, 2, .LCPI30_1@toc@ha
3007 ; PWR6-NEXT: addi 3, 3, .LCPI30_1@toc@l
3008 ; PWR6-NEXT: vsrh 4, 2, 4
3009 ; PWR6-NEXT: vand 4, 4, 5
3010 ; PWR6-NEXT: vspltish 5, 2
3011 ; PWR6-NEXT: vsubuhm 2, 2, 4
3012 ; PWR6-NEXT: vsrh 4, 2, 5
3013 ; PWR6-NEXT: lvx 5, 0, 3
3014 ; PWR6-NEXT: vand 2, 2, 5
3015 ; PWR6-NEXT: vand 4, 4, 5
3016 ; PWR6-NEXT: vspltish 5, 4
3017 ; PWR6-NEXT: vadduhm 2, 2, 4
3018 ; PWR6-NEXT: vsrh 4, 2, 5
3019 ; PWR6-NEXT: vspltisb 5, 15
3020 ; PWR6-NEXT: vadduhm 2, 2, 4
3021 ; PWR6-NEXT: vspltisb 4, 1
3022 ; PWR6-NEXT: vand 2, 2, 5
3023 ; PWR6-NEXT: vmladduhm 2, 2, 4, 3
3024 ; PWR6-NEXT: vspltish 3, 8
3025 ; PWR6-NEXT: vsrh 2, 2, 3
3026 ; PWR6-NEXT: vspltish 3, 10
3027 ; PWR6-NEXT: vcmpgtuh 2, 2, 3
3030 ; PWR7-LABEL: ugt_10_v8i16:
3032 ; PWR7-NEXT: vspltish 3, 1
3033 ; PWR7-NEXT: addis 3, 2, .LCPI30_0@toc@ha
3034 ; PWR7-NEXT: addi 3, 3, .LCPI30_0@toc@l
3035 ; PWR7-NEXT: vspltish 4, 2
3036 ; PWR7-NEXT: lxvw4x 0, 0, 3
3037 ; PWR7-NEXT: addis 3, 2, .LCPI30_1@toc@ha
3038 ; PWR7-NEXT: vspltisb 5, 15
3039 ; PWR7-NEXT: vsrh 3, 2, 3
3040 ; PWR7-NEXT: addi 3, 3, .LCPI30_1@toc@l
3041 ; PWR7-NEXT: xxland 35, 35, 0
3042 ; PWR7-NEXT: lxvw4x 0, 0, 3
3043 ; PWR7-NEXT: vsubuhm 2, 2, 3
3044 ; PWR7-NEXT: vsrh 3, 2, 4
3045 ; PWR7-NEXT: xxland 34, 34, 0
3046 ; PWR7-NEXT: vspltish 4, 4
3047 ; PWR7-NEXT: xxland 35, 35, 0
3048 ; PWR7-NEXT: vadduhm 2, 2, 3
3049 ; PWR7-NEXT: vsrh 3, 2, 4
3050 ; PWR7-NEXT: vxor 4, 4, 4
3051 ; PWR7-NEXT: vadduhm 2, 2, 3
3052 ; PWR7-NEXT: vspltisb 3, 1
3053 ; PWR7-NEXT: xxland 34, 34, 37
3054 ; PWR7-NEXT: vmladduhm 2, 2, 3, 4
3055 ; PWR7-NEXT: vspltish 3, 8
3056 ; PWR7-NEXT: vsrh 2, 2, 3
3057 ; PWR7-NEXT: vspltish 3, 10
3058 ; PWR7-NEXT: vcmpgtuh 2, 2, 3
3061 ; PWR8-LABEL: ugt_10_v8i16:
3063 ; PWR8-NEXT: vspltish 3, 10
3064 ; PWR8-NEXT: vpopcnth 2, 2
3065 ; PWR8-NEXT: vcmpgtuh 2, 2, 3
3068 ; PWR9-LABEL: ugt_10_v8i16:
3070 ; PWR9-NEXT: vspltish 3, 10
3071 ; PWR9-NEXT: vpopcnth 2, 2
3072 ; PWR9-NEXT: vcmpgtuh 2, 2, 3
3074 %2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0)
3075 %3 = icmp ugt <8 x i16> %2, <i16 10, i16 10, i16 10, i16 10, i16 10, i16 10, i16 10, i16 10>
3076 %4 = sext <8 x i1> %3 to <8 x i16>
3080 define <8 x i16> @ult_11_v8i16(<8 x i16> %0) {
3081 ; PWR5-LABEL: ult_11_v8i16:
3083 ; PWR5-NEXT: addis 3, 2, .LCPI31_0@toc@ha
3084 ; PWR5-NEXT: vspltish 4, 1
3085 ; PWR5-NEXT: vxor 3, 3, 3
3086 ; PWR5-NEXT: addi 3, 3, .LCPI31_0@toc@l
3087 ; PWR5-NEXT: lvx 5, 0, 3
3088 ; PWR5-NEXT: addis 3, 2, .LCPI31_1@toc@ha
3089 ; PWR5-NEXT: addi 3, 3, .LCPI31_1@toc@l
3090 ; PWR5-NEXT: vsrh 4, 2, 4
3091 ; PWR5-NEXT: vand 4, 4, 5
3092 ; PWR5-NEXT: vspltish 5, 2
3093 ; PWR5-NEXT: vsubuhm 2, 2, 4
3094 ; PWR5-NEXT: vsrh 4, 2, 5
3095 ; PWR5-NEXT: lvx 5, 0, 3
3096 ; PWR5-NEXT: vand 2, 2, 5
3097 ; PWR5-NEXT: vand 4, 4, 5
3098 ; PWR5-NEXT: vspltish 5, 4
3099 ; PWR5-NEXT: vadduhm 2, 2, 4
3100 ; PWR5-NEXT: vsrh 4, 2, 5
3101 ; PWR5-NEXT: vspltisb 5, 15
3102 ; PWR5-NEXT: vadduhm 2, 2, 4
3103 ; PWR5-NEXT: vspltisb 4, 1
3104 ; PWR5-NEXT: vand 2, 2, 5
3105 ; PWR5-NEXT: vmladduhm 2, 2, 4, 3
3106 ; PWR5-NEXT: vspltish 3, 8
3107 ; PWR5-NEXT: vsrh 2, 2, 3
3108 ; PWR5-NEXT: vspltish 3, 11
3109 ; PWR5-NEXT: vcmpgtuh 2, 3, 2
3112 ; PWR6-LABEL: ult_11_v8i16:
3114 ; PWR6-NEXT: addis 3, 2, .LCPI31_0@toc@ha
3115 ; PWR6-NEXT: vspltish 4, 1
3116 ; PWR6-NEXT: vxor 3, 3, 3
3117 ; PWR6-NEXT: addi 3, 3, .LCPI31_0@toc@l
3118 ; PWR6-NEXT: lvx 5, 0, 3
3119 ; PWR6-NEXT: addis 3, 2, .LCPI31_1@toc@ha
3120 ; PWR6-NEXT: addi 3, 3, .LCPI31_1@toc@l
3121 ; PWR6-NEXT: vsrh 4, 2, 4
3122 ; PWR6-NEXT: vand 4, 4, 5
3123 ; PWR6-NEXT: vspltish 5, 2
3124 ; PWR6-NEXT: vsubuhm 2, 2, 4
3125 ; PWR6-NEXT: vsrh 4, 2, 5
3126 ; PWR6-NEXT: lvx 5, 0, 3
3127 ; PWR6-NEXT: vand 2, 2, 5
3128 ; PWR6-NEXT: vand 4, 4, 5
3129 ; PWR6-NEXT: vspltish 5, 4
3130 ; PWR6-NEXT: vadduhm 2, 2, 4
3131 ; PWR6-NEXT: vsrh 4, 2, 5
3132 ; PWR6-NEXT: vspltisb 5, 15
3133 ; PWR6-NEXT: vadduhm 2, 2, 4
3134 ; PWR6-NEXT: vspltisb 4, 1
3135 ; PWR6-NEXT: vand 2, 2, 5
3136 ; PWR6-NEXT: vmladduhm 2, 2, 4, 3
3137 ; PWR6-NEXT: vspltish 3, 8
3138 ; PWR6-NEXT: vsrh 2, 2, 3
3139 ; PWR6-NEXT: vspltish 3, 11
3140 ; PWR6-NEXT: vcmpgtuh 2, 3, 2
3143 ; PWR7-LABEL: ult_11_v8i16:
3145 ; PWR7-NEXT: vspltish 3, 1
3146 ; PWR7-NEXT: addis 3, 2, .LCPI31_0@toc@ha
3147 ; PWR7-NEXT: addi 3, 3, .LCPI31_0@toc@l
3148 ; PWR7-NEXT: vspltish 4, 2
3149 ; PWR7-NEXT: lxvw4x 0, 0, 3
3150 ; PWR7-NEXT: addis 3, 2, .LCPI31_1@toc@ha
3151 ; PWR7-NEXT: vspltisb 5, 15
3152 ; PWR7-NEXT: vsrh 3, 2, 3
3153 ; PWR7-NEXT: addi 3, 3, .LCPI31_1@toc@l
3154 ; PWR7-NEXT: xxland 35, 35, 0
3155 ; PWR7-NEXT: lxvw4x 0, 0, 3
3156 ; PWR7-NEXT: vsubuhm 2, 2, 3
3157 ; PWR7-NEXT: vsrh 3, 2, 4
3158 ; PWR7-NEXT: xxland 34, 34, 0
3159 ; PWR7-NEXT: vspltish 4, 4
3160 ; PWR7-NEXT: xxland 35, 35, 0
3161 ; PWR7-NEXT: vadduhm 2, 2, 3
3162 ; PWR7-NEXT: vsrh 3, 2, 4
3163 ; PWR7-NEXT: vxor 4, 4, 4
3164 ; PWR7-NEXT: vadduhm 2, 2, 3
3165 ; PWR7-NEXT: vspltisb 3, 1
3166 ; PWR7-NEXT: xxland 34, 34, 37
3167 ; PWR7-NEXT: vmladduhm 2, 2, 3, 4
3168 ; PWR7-NEXT: vspltish 3, 8
3169 ; PWR7-NEXT: vsrh 2, 2, 3
3170 ; PWR7-NEXT: vspltish 3, 11
3171 ; PWR7-NEXT: vcmpgtuh 2, 3, 2
3174 ; PWR8-LABEL: ult_11_v8i16:
3176 ; PWR8-NEXT: vspltish 3, 11
3177 ; PWR8-NEXT: vpopcnth 2, 2
3178 ; PWR8-NEXT: vcmpgtuh 2, 3, 2
3181 ; PWR9-LABEL: ult_11_v8i16:
3183 ; PWR9-NEXT: vspltish 3, 11
3184 ; PWR9-NEXT: vpopcnth 2, 2
3185 ; PWR9-NEXT: vcmpgtuh 2, 3, 2
3187 %2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0)
3188 %3 = icmp ult <8 x i16> %2, <i16 11, i16 11, i16 11, i16 11, i16 11, i16 11, i16 11, i16 11>
3189 %4 = sext <8 x i1> %3 to <8 x i16>
3193 define <8 x i16> @ugt_11_v8i16(<8 x i16> %0) {
3194 ; PWR5-LABEL: ugt_11_v8i16:
3196 ; PWR5-NEXT: addis 3, 2, .LCPI32_0@toc@ha
3197 ; PWR5-NEXT: vspltish 4, 1
3198 ; PWR5-NEXT: vxor 3, 3, 3
3199 ; PWR5-NEXT: addi 3, 3, .LCPI32_0@toc@l
3200 ; PWR5-NEXT: lvx 5, 0, 3
3201 ; PWR5-NEXT: addis 3, 2, .LCPI32_1@toc@ha
3202 ; PWR5-NEXT: addi 3, 3, .LCPI32_1@toc@l
3203 ; PWR5-NEXT: vsrh 4, 2, 4
3204 ; PWR5-NEXT: vand 4, 4, 5
3205 ; PWR5-NEXT: vspltish 5, 2
3206 ; PWR5-NEXT: vsubuhm 2, 2, 4
3207 ; PWR5-NEXT: vsrh 4, 2, 5
3208 ; PWR5-NEXT: lvx 5, 0, 3
3209 ; PWR5-NEXT: vand 2, 2, 5
3210 ; PWR5-NEXT: vand 4, 4, 5
3211 ; PWR5-NEXT: vspltish 5, 4
3212 ; PWR5-NEXT: vadduhm 2, 2, 4
3213 ; PWR5-NEXT: vsrh 4, 2, 5
3214 ; PWR5-NEXT: vspltisb 5, 15
3215 ; PWR5-NEXT: vadduhm 2, 2, 4
3216 ; PWR5-NEXT: vspltisb 4, 1
3217 ; PWR5-NEXT: vand 2, 2, 5
3218 ; PWR5-NEXT: vmladduhm 2, 2, 4, 3
3219 ; PWR5-NEXT: vspltish 3, 8
3220 ; PWR5-NEXT: vsrh 2, 2, 3
3221 ; PWR5-NEXT: vspltish 3, 11
3222 ; PWR5-NEXT: vcmpgtuh 2, 2, 3
3225 ; PWR6-LABEL: ugt_11_v8i16:
3227 ; PWR6-NEXT: addis 3, 2, .LCPI32_0@toc@ha
3228 ; PWR6-NEXT: vspltish 4, 1
3229 ; PWR6-NEXT: vxor 3, 3, 3
3230 ; PWR6-NEXT: addi 3, 3, .LCPI32_0@toc@l
3231 ; PWR6-NEXT: lvx 5, 0, 3
3232 ; PWR6-NEXT: addis 3, 2, .LCPI32_1@toc@ha
3233 ; PWR6-NEXT: addi 3, 3, .LCPI32_1@toc@l
3234 ; PWR6-NEXT: vsrh 4, 2, 4
3235 ; PWR6-NEXT: vand 4, 4, 5
3236 ; PWR6-NEXT: vspltish 5, 2
3237 ; PWR6-NEXT: vsubuhm 2, 2, 4
3238 ; PWR6-NEXT: vsrh 4, 2, 5
3239 ; PWR6-NEXT: lvx 5, 0, 3
3240 ; PWR6-NEXT: vand 2, 2, 5
3241 ; PWR6-NEXT: vand 4, 4, 5
3242 ; PWR6-NEXT: vspltish 5, 4
3243 ; PWR6-NEXT: vadduhm 2, 2, 4
3244 ; PWR6-NEXT: vsrh 4, 2, 5
3245 ; PWR6-NEXT: vspltisb 5, 15
3246 ; PWR6-NEXT: vadduhm 2, 2, 4
3247 ; PWR6-NEXT: vspltisb 4, 1
3248 ; PWR6-NEXT: vand 2, 2, 5
3249 ; PWR6-NEXT: vmladduhm 2, 2, 4, 3
3250 ; PWR6-NEXT: vspltish 3, 8
3251 ; PWR6-NEXT: vsrh 2, 2, 3
3252 ; PWR6-NEXT: vspltish 3, 11
3253 ; PWR6-NEXT: vcmpgtuh 2, 2, 3
3256 ; PWR7-LABEL: ugt_11_v8i16:
3258 ; PWR7-NEXT: vspltish 3, 1
3259 ; PWR7-NEXT: addis 3, 2, .LCPI32_0@toc@ha
3260 ; PWR7-NEXT: addi 3, 3, .LCPI32_0@toc@l
3261 ; PWR7-NEXT: vspltish 4, 2
3262 ; PWR7-NEXT: lxvw4x 0, 0, 3
3263 ; PWR7-NEXT: addis 3, 2, .LCPI32_1@toc@ha
3264 ; PWR7-NEXT: vspltisb 5, 15
3265 ; PWR7-NEXT: vsrh 3, 2, 3
3266 ; PWR7-NEXT: addi 3, 3, .LCPI32_1@toc@l
3267 ; PWR7-NEXT: xxland 35, 35, 0
3268 ; PWR7-NEXT: lxvw4x 0, 0, 3
3269 ; PWR7-NEXT: vsubuhm 2, 2, 3
3270 ; PWR7-NEXT: vsrh 3, 2, 4
3271 ; PWR7-NEXT: xxland 34, 34, 0
3272 ; PWR7-NEXT: vspltish 4, 4
3273 ; PWR7-NEXT: xxland 35, 35, 0
3274 ; PWR7-NEXT: vadduhm 2, 2, 3
3275 ; PWR7-NEXT: vsrh 3, 2, 4
3276 ; PWR7-NEXT: vxor 4, 4, 4
3277 ; PWR7-NEXT: vadduhm 2, 2, 3
3278 ; PWR7-NEXT: vspltisb 3, 1
3279 ; PWR7-NEXT: xxland 34, 34, 37
3280 ; PWR7-NEXT: vmladduhm 2, 2, 3, 4
3281 ; PWR7-NEXT: vspltish 3, 8
3282 ; PWR7-NEXT: vsrh 2, 2, 3
3283 ; PWR7-NEXT: vspltish 3, 11
3284 ; PWR7-NEXT: vcmpgtuh 2, 2, 3
3287 ; PWR8-LABEL: ugt_11_v8i16:
3289 ; PWR8-NEXT: vspltish 3, 11
3290 ; PWR8-NEXT: vpopcnth 2, 2
3291 ; PWR8-NEXT: vcmpgtuh 2, 2, 3
3294 ; PWR9-LABEL: ugt_11_v8i16:
3296 ; PWR9-NEXT: vspltish 3, 11
3297 ; PWR9-NEXT: vpopcnth 2, 2
3298 ; PWR9-NEXT: vcmpgtuh 2, 2, 3
3300 %2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0)
3301 %3 = icmp ugt <8 x i16> %2, <i16 11, i16 11, i16 11, i16 11, i16 11, i16 11, i16 11, i16 11>
3302 %4 = sext <8 x i1> %3 to <8 x i16>
3306 define <8 x i16> @ult_12_v8i16(<8 x i16> %0) {
3307 ; PWR5-LABEL: ult_12_v8i16:
3309 ; PWR5-NEXT: addis 3, 2, .LCPI33_0@toc@ha
3310 ; PWR5-NEXT: vspltish 4, 1
3311 ; PWR5-NEXT: vxor 3, 3, 3
3312 ; PWR5-NEXT: addi 3, 3, .LCPI33_0@toc@l
3313 ; PWR5-NEXT: lvx 5, 0, 3
3314 ; PWR5-NEXT: addis 3, 2, .LCPI33_1@toc@ha
3315 ; PWR5-NEXT: addi 3, 3, .LCPI33_1@toc@l
3316 ; PWR5-NEXT: vsrh 4, 2, 4
3317 ; PWR5-NEXT: vand 4, 4, 5
3318 ; PWR5-NEXT: vspltish 5, 2
3319 ; PWR5-NEXT: vsubuhm 2, 2, 4
3320 ; PWR5-NEXT: vsrh 4, 2, 5
3321 ; PWR5-NEXT: lvx 5, 0, 3
3322 ; PWR5-NEXT: vand 2, 2, 5
3323 ; PWR5-NEXT: vand 4, 4, 5
3324 ; PWR5-NEXT: vspltish 5, 4
3325 ; PWR5-NEXT: vadduhm 2, 2, 4
3326 ; PWR5-NEXT: vsrh 4, 2, 5
3327 ; PWR5-NEXT: vspltisb 5, 15
3328 ; PWR5-NEXT: vadduhm 2, 2, 4
3329 ; PWR5-NEXT: vspltisb 4, 1
3330 ; PWR5-NEXT: vand 2, 2, 5
3331 ; PWR5-NEXT: vmladduhm 2, 2, 4, 3
3332 ; PWR5-NEXT: vspltish 3, 8
3333 ; PWR5-NEXT: vsrh 2, 2, 3
3334 ; PWR5-NEXT: vspltish 3, 12
3335 ; PWR5-NEXT: vcmpgtuh 2, 3, 2
3338 ; PWR6-LABEL: ult_12_v8i16:
3340 ; PWR6-NEXT: addis 3, 2, .LCPI33_0@toc@ha
3341 ; PWR6-NEXT: vspltish 4, 1
3342 ; PWR6-NEXT: vxor 3, 3, 3
3343 ; PWR6-NEXT: addi 3, 3, .LCPI33_0@toc@l
3344 ; PWR6-NEXT: lvx 5, 0, 3
3345 ; PWR6-NEXT: addis 3, 2, .LCPI33_1@toc@ha
3346 ; PWR6-NEXT: addi 3, 3, .LCPI33_1@toc@l
3347 ; PWR6-NEXT: vsrh 4, 2, 4
3348 ; PWR6-NEXT: vand 4, 4, 5
3349 ; PWR6-NEXT: vspltish 5, 2
3350 ; PWR6-NEXT: vsubuhm 2, 2, 4
3351 ; PWR6-NEXT: vsrh 4, 2, 5
3352 ; PWR6-NEXT: lvx 5, 0, 3
3353 ; PWR6-NEXT: vand 2, 2, 5
3354 ; PWR6-NEXT: vand 4, 4, 5
3355 ; PWR6-NEXT: vspltish 5, 4
3356 ; PWR6-NEXT: vadduhm 2, 2, 4
3357 ; PWR6-NEXT: vsrh 4, 2, 5
3358 ; PWR6-NEXT: vspltisb 5, 15
3359 ; PWR6-NEXT: vadduhm 2, 2, 4
3360 ; PWR6-NEXT: vspltisb 4, 1
3361 ; PWR6-NEXT: vand 2, 2, 5
3362 ; PWR6-NEXT: vmladduhm 2, 2, 4, 3
3363 ; PWR6-NEXT: vspltish 3, 8
3364 ; PWR6-NEXT: vsrh 2, 2, 3
3365 ; PWR6-NEXT: vspltish 3, 12
3366 ; PWR6-NEXT: vcmpgtuh 2, 3, 2
3369 ; PWR7-LABEL: ult_12_v8i16:
3371 ; PWR7-NEXT: vspltish 3, 1
3372 ; PWR7-NEXT: addis 3, 2, .LCPI33_0@toc@ha
3373 ; PWR7-NEXT: addi 3, 3, .LCPI33_0@toc@l
3374 ; PWR7-NEXT: vspltish 4, 2
3375 ; PWR7-NEXT: lxvw4x 0, 0, 3
3376 ; PWR7-NEXT: addis 3, 2, .LCPI33_1@toc@ha
3377 ; PWR7-NEXT: vspltisb 5, 15
3378 ; PWR7-NEXT: vsrh 3, 2, 3
3379 ; PWR7-NEXT: addi 3, 3, .LCPI33_1@toc@l
3380 ; PWR7-NEXT: xxland 35, 35, 0
3381 ; PWR7-NEXT: lxvw4x 0, 0, 3
3382 ; PWR7-NEXT: vsubuhm 2, 2, 3
3383 ; PWR7-NEXT: vsrh 3, 2, 4
3384 ; PWR7-NEXT: xxland 34, 34, 0
3385 ; PWR7-NEXT: vspltish 4, 4
3386 ; PWR7-NEXT: xxland 35, 35, 0
3387 ; PWR7-NEXT: vadduhm 2, 2, 3
3388 ; PWR7-NEXT: vsrh 3, 2, 4
3389 ; PWR7-NEXT: vxor 4, 4, 4
3390 ; PWR7-NEXT: vadduhm 2, 2, 3
3391 ; PWR7-NEXT: vspltisb 3, 1
3392 ; PWR7-NEXT: xxland 34, 34, 37
3393 ; PWR7-NEXT: vmladduhm 2, 2, 3, 4
3394 ; PWR7-NEXT: vspltish 3, 8
3395 ; PWR7-NEXT: vsrh 2, 2, 3
3396 ; PWR7-NEXT: vspltish 3, 12
3397 ; PWR7-NEXT: vcmpgtuh 2, 3, 2
3400 ; PWR8-LABEL: ult_12_v8i16:
3402 ; PWR8-NEXT: vspltish 3, 12
3403 ; PWR8-NEXT: vpopcnth 2, 2
3404 ; PWR8-NEXT: vcmpgtuh 2, 3, 2
3407 ; PWR9-LABEL: ult_12_v8i16:
3409 ; PWR9-NEXT: vspltish 3, 12
3410 ; PWR9-NEXT: vpopcnth 2, 2
3411 ; PWR9-NEXT: vcmpgtuh 2, 3, 2
3413 %2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0)
3414 %3 = icmp ult <8 x i16> %2, <i16 12, i16 12, i16 12, i16 12, i16 12, i16 12, i16 12, i16 12>
3415 %4 = sext <8 x i1> %3 to <8 x i16>
3419 define <8 x i16> @ugt_12_v8i16(<8 x i16> %0) {
3420 ; PWR5-LABEL: ugt_12_v8i16:
3422 ; PWR5-NEXT: addis 3, 2, .LCPI34_0@toc@ha
3423 ; PWR5-NEXT: vspltish 4, 1
3424 ; PWR5-NEXT: vxor 3, 3, 3
3425 ; PWR5-NEXT: addi 3, 3, .LCPI34_0@toc@l
3426 ; PWR5-NEXT: lvx 5, 0, 3
3427 ; PWR5-NEXT: addis 3, 2, .LCPI34_1@toc@ha
3428 ; PWR5-NEXT: addi 3, 3, .LCPI34_1@toc@l
3429 ; PWR5-NEXT: vsrh 4, 2, 4
3430 ; PWR5-NEXT: vand 4, 4, 5
3431 ; PWR5-NEXT: vspltish 5, 2
3432 ; PWR5-NEXT: vsubuhm 2, 2, 4
3433 ; PWR5-NEXT: vsrh 4, 2, 5
3434 ; PWR5-NEXT: lvx 5, 0, 3
3435 ; PWR5-NEXT: vand 2, 2, 5
3436 ; PWR5-NEXT: vand 4, 4, 5
3437 ; PWR5-NEXT: vspltish 5, 4
3438 ; PWR5-NEXT: vadduhm 2, 2, 4
3439 ; PWR5-NEXT: vsrh 4, 2, 5
3440 ; PWR5-NEXT: vspltisb 5, 15
3441 ; PWR5-NEXT: vadduhm 2, 2, 4
3442 ; PWR5-NEXT: vspltisb 4, 1
3443 ; PWR5-NEXT: vand 2, 2, 5
3444 ; PWR5-NEXT: vmladduhm 2, 2, 4, 3
3445 ; PWR5-NEXT: vspltish 3, 8
3446 ; PWR5-NEXT: vsrh 2, 2, 3
3447 ; PWR5-NEXT: vspltish 3, 12
3448 ; PWR5-NEXT: vcmpgtuh 2, 2, 3
3451 ; PWR6-LABEL: ugt_12_v8i16:
3453 ; PWR6-NEXT: addis 3, 2, .LCPI34_0@toc@ha
3454 ; PWR6-NEXT: vspltish 4, 1
3455 ; PWR6-NEXT: vxor 3, 3, 3
3456 ; PWR6-NEXT: addi 3, 3, .LCPI34_0@toc@l
3457 ; PWR6-NEXT: lvx 5, 0, 3
3458 ; PWR6-NEXT: addis 3, 2, .LCPI34_1@toc@ha
3459 ; PWR6-NEXT: addi 3, 3, .LCPI34_1@toc@l
3460 ; PWR6-NEXT: vsrh 4, 2, 4
3461 ; PWR6-NEXT: vand 4, 4, 5
3462 ; PWR6-NEXT: vspltish 5, 2
3463 ; PWR6-NEXT: vsubuhm 2, 2, 4
3464 ; PWR6-NEXT: vsrh 4, 2, 5
3465 ; PWR6-NEXT: lvx 5, 0, 3
3466 ; PWR6-NEXT: vand 2, 2, 5
3467 ; PWR6-NEXT: vand 4, 4, 5
3468 ; PWR6-NEXT: vspltish 5, 4
3469 ; PWR6-NEXT: vadduhm 2, 2, 4
3470 ; PWR6-NEXT: vsrh 4, 2, 5
3471 ; PWR6-NEXT: vspltisb 5, 15
3472 ; PWR6-NEXT: vadduhm 2, 2, 4
3473 ; PWR6-NEXT: vspltisb 4, 1
3474 ; PWR6-NEXT: vand 2, 2, 5
3475 ; PWR6-NEXT: vmladduhm 2, 2, 4, 3
3476 ; PWR6-NEXT: vspltish 3, 8
3477 ; PWR6-NEXT: vsrh 2, 2, 3
3478 ; PWR6-NEXT: vspltish 3, 12
3479 ; PWR6-NEXT: vcmpgtuh 2, 2, 3
3482 ; PWR7-LABEL: ugt_12_v8i16:
3484 ; PWR7-NEXT: vspltish 3, 1
3485 ; PWR7-NEXT: addis 3, 2, .LCPI34_0@toc@ha
3486 ; PWR7-NEXT: addi 3, 3, .LCPI34_0@toc@l
3487 ; PWR7-NEXT: vspltish 4, 2
3488 ; PWR7-NEXT: lxvw4x 0, 0, 3
3489 ; PWR7-NEXT: addis 3, 2, .LCPI34_1@toc@ha
3490 ; PWR7-NEXT: vspltisb 5, 15
3491 ; PWR7-NEXT: vsrh 3, 2, 3
3492 ; PWR7-NEXT: addi 3, 3, .LCPI34_1@toc@l
3493 ; PWR7-NEXT: xxland 35, 35, 0
3494 ; PWR7-NEXT: lxvw4x 0, 0, 3
3495 ; PWR7-NEXT: vsubuhm 2, 2, 3
3496 ; PWR7-NEXT: vsrh 3, 2, 4
3497 ; PWR7-NEXT: xxland 34, 34, 0
3498 ; PWR7-NEXT: vspltish 4, 4
3499 ; PWR7-NEXT: xxland 35, 35, 0
3500 ; PWR7-NEXT: vadduhm 2, 2, 3
3501 ; PWR7-NEXT: vsrh 3, 2, 4
3502 ; PWR7-NEXT: vxor 4, 4, 4
3503 ; PWR7-NEXT: vadduhm 2, 2, 3
3504 ; PWR7-NEXT: vspltisb 3, 1
3505 ; PWR7-NEXT: xxland 34, 34, 37
3506 ; PWR7-NEXT: vmladduhm 2, 2, 3, 4
3507 ; PWR7-NEXT: vspltish 3, 8
3508 ; PWR7-NEXT: vsrh 2, 2, 3
3509 ; PWR7-NEXT: vspltish 3, 12
3510 ; PWR7-NEXT: vcmpgtuh 2, 2, 3
3513 ; PWR8-LABEL: ugt_12_v8i16:
3515 ; PWR8-NEXT: vspltish 3, 12
3516 ; PWR8-NEXT: vpopcnth 2, 2
3517 ; PWR8-NEXT: vcmpgtuh 2, 2, 3
3520 ; PWR9-LABEL: ugt_12_v8i16:
3522 ; PWR9-NEXT: vspltish 3, 12
3523 ; PWR9-NEXT: vpopcnth 2, 2
3524 ; PWR9-NEXT: vcmpgtuh 2, 2, 3
3526 %2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0)
3527 %3 = icmp ugt <8 x i16> %2, <i16 12, i16 12, i16 12, i16 12, i16 12, i16 12, i16 12, i16 12>
3528 %4 = sext <8 x i1> %3 to <8 x i16>
3532 define <8 x i16> @ult_13_v8i16(<8 x i16> %0) {
3533 ; PWR5-LABEL: ult_13_v8i16:
3535 ; PWR5-NEXT: addis 3, 2, .LCPI35_0@toc@ha
3536 ; PWR5-NEXT: vspltish 4, 1
3537 ; PWR5-NEXT: vxor 3, 3, 3
3538 ; PWR5-NEXT: addi 3, 3, .LCPI35_0@toc@l
3539 ; PWR5-NEXT: lvx 5, 0, 3
3540 ; PWR5-NEXT: addis 3, 2, .LCPI35_1@toc@ha
3541 ; PWR5-NEXT: addi 3, 3, .LCPI35_1@toc@l
3542 ; PWR5-NEXT: vsrh 4, 2, 4
3543 ; PWR5-NEXT: vand 4, 4, 5
3544 ; PWR5-NEXT: vspltish 5, 2
3545 ; PWR5-NEXT: vsubuhm 2, 2, 4
3546 ; PWR5-NEXT: vsrh 4, 2, 5
3547 ; PWR5-NEXT: lvx 5, 0, 3
3548 ; PWR5-NEXT: vand 2, 2, 5
3549 ; PWR5-NEXT: vand 4, 4, 5
3550 ; PWR5-NEXT: vspltish 5, 4
3551 ; PWR5-NEXT: vadduhm 2, 2, 4
3552 ; PWR5-NEXT: vsrh 4, 2, 5
3553 ; PWR5-NEXT: vspltisb 5, 15
3554 ; PWR5-NEXT: vadduhm 2, 2, 4
3555 ; PWR5-NEXT: vspltisb 4, 1
3556 ; PWR5-NEXT: vand 2, 2, 5
3557 ; PWR5-NEXT: vmladduhm 2, 2, 4, 3
3558 ; PWR5-NEXT: vspltish 3, 8
3559 ; PWR5-NEXT: vsrh 2, 2, 3
3560 ; PWR5-NEXT: vspltish 3, 13
3561 ; PWR5-NEXT: vcmpgtuh 2, 3, 2
3564 ; PWR6-LABEL: ult_13_v8i16:
3566 ; PWR6-NEXT: addis 3, 2, .LCPI35_0@toc@ha
3567 ; PWR6-NEXT: vspltish 4, 1
3568 ; PWR6-NEXT: vxor 3, 3, 3
3569 ; PWR6-NEXT: addi 3, 3, .LCPI35_0@toc@l
3570 ; PWR6-NEXT: lvx 5, 0, 3
3571 ; PWR6-NEXT: addis 3, 2, .LCPI35_1@toc@ha
3572 ; PWR6-NEXT: addi 3, 3, .LCPI35_1@toc@l
3573 ; PWR6-NEXT: vsrh 4, 2, 4
3574 ; PWR6-NEXT: vand 4, 4, 5
3575 ; PWR6-NEXT: vspltish 5, 2
3576 ; PWR6-NEXT: vsubuhm 2, 2, 4
3577 ; PWR6-NEXT: vsrh 4, 2, 5
3578 ; PWR6-NEXT: lvx 5, 0, 3
3579 ; PWR6-NEXT: vand 2, 2, 5
3580 ; PWR6-NEXT: vand 4, 4, 5
3581 ; PWR6-NEXT: vspltish 5, 4
3582 ; PWR6-NEXT: vadduhm 2, 2, 4
3583 ; PWR6-NEXT: vsrh 4, 2, 5
3584 ; PWR6-NEXT: vspltisb 5, 15
3585 ; PWR6-NEXT: vadduhm 2, 2, 4
3586 ; PWR6-NEXT: vspltisb 4, 1
3587 ; PWR6-NEXT: vand 2, 2, 5
3588 ; PWR6-NEXT: vmladduhm 2, 2, 4, 3
3589 ; PWR6-NEXT: vspltish 3, 8
3590 ; PWR6-NEXT: vsrh 2, 2, 3
3591 ; PWR6-NEXT: vspltish 3, 13
3592 ; PWR6-NEXT: vcmpgtuh 2, 3, 2
3595 ; PWR7-LABEL: ult_13_v8i16:
3597 ; PWR7-NEXT: vspltish 3, 1
3598 ; PWR7-NEXT: addis 3, 2, .LCPI35_0@toc@ha
3599 ; PWR7-NEXT: addi 3, 3, .LCPI35_0@toc@l
3600 ; PWR7-NEXT: vspltish 4, 2
3601 ; PWR7-NEXT: lxvw4x 0, 0, 3
3602 ; PWR7-NEXT: addis 3, 2, .LCPI35_1@toc@ha
3603 ; PWR7-NEXT: vspltisb 5, 15
3604 ; PWR7-NEXT: vsrh 3, 2, 3
3605 ; PWR7-NEXT: addi 3, 3, .LCPI35_1@toc@l
3606 ; PWR7-NEXT: xxland 35, 35, 0
3607 ; PWR7-NEXT: lxvw4x 0, 0, 3
3608 ; PWR7-NEXT: vsubuhm 2, 2, 3
3609 ; PWR7-NEXT: vsrh 3, 2, 4
3610 ; PWR7-NEXT: xxland 34, 34, 0
3611 ; PWR7-NEXT: vspltish 4, 4
3612 ; PWR7-NEXT: xxland 35, 35, 0
3613 ; PWR7-NEXT: vadduhm 2, 2, 3
3614 ; PWR7-NEXT: vsrh 3, 2, 4
3615 ; PWR7-NEXT: vxor 4, 4, 4
3616 ; PWR7-NEXT: vadduhm 2, 2, 3
3617 ; PWR7-NEXT: vspltisb 3, 1
3618 ; PWR7-NEXT: xxland 34, 34, 37
3619 ; PWR7-NEXT: vmladduhm 2, 2, 3, 4
3620 ; PWR7-NEXT: vspltish 3, 8
3621 ; PWR7-NEXT: vsrh 2, 2, 3
3622 ; PWR7-NEXT: vspltish 3, 13
3623 ; PWR7-NEXT: vcmpgtuh 2, 3, 2
3626 ; PWR8-LABEL: ult_13_v8i16:
3628 ; PWR8-NEXT: vspltish 3, 13
3629 ; PWR8-NEXT: vpopcnth 2, 2
3630 ; PWR8-NEXT: vcmpgtuh 2, 3, 2
3633 ; PWR9-LABEL: ult_13_v8i16:
3635 ; PWR9-NEXT: vspltish 3, 13
3636 ; PWR9-NEXT: vpopcnth 2, 2
3637 ; PWR9-NEXT: vcmpgtuh 2, 3, 2
3639 %2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0)
3640 %3 = icmp ult <8 x i16> %2, <i16 13, i16 13, i16 13, i16 13, i16 13, i16 13, i16 13, i16 13>
3641 %4 = sext <8 x i1> %3 to <8 x i16>
3645 define <8 x i16> @ugt_13_v8i16(<8 x i16> %0) {
3646 ; PWR5-LABEL: ugt_13_v8i16:
3648 ; PWR5-NEXT: addis 3, 2, .LCPI36_0@toc@ha
3649 ; PWR5-NEXT: vspltish 4, 1
3650 ; PWR5-NEXT: vxor 3, 3, 3
3651 ; PWR5-NEXT: addi 3, 3, .LCPI36_0@toc@l
3652 ; PWR5-NEXT: lvx 5, 0, 3
3653 ; PWR5-NEXT: addis 3, 2, .LCPI36_1@toc@ha
3654 ; PWR5-NEXT: addi 3, 3, .LCPI36_1@toc@l
3655 ; PWR5-NEXT: vsrh 4, 2, 4
3656 ; PWR5-NEXT: vand 4, 4, 5
3657 ; PWR5-NEXT: vspltish 5, 2
3658 ; PWR5-NEXT: vsubuhm 2, 2, 4
3659 ; PWR5-NEXT: vsrh 4, 2, 5
3660 ; PWR5-NEXT: lvx 5, 0, 3
3661 ; PWR5-NEXT: vand 2, 2, 5
3662 ; PWR5-NEXT: vand 4, 4, 5
3663 ; PWR5-NEXT: vspltish 5, 4
3664 ; PWR5-NEXT: vadduhm 2, 2, 4
3665 ; PWR5-NEXT: vsrh 4, 2, 5
3666 ; PWR5-NEXT: vspltisb 5, 15
3667 ; PWR5-NEXT: vadduhm 2, 2, 4
3668 ; PWR5-NEXT: vspltisb 4, 1
3669 ; PWR5-NEXT: vand 2, 2, 5
3670 ; PWR5-NEXT: vmladduhm 2, 2, 4, 3
3671 ; PWR5-NEXT: vspltish 3, 8
3672 ; PWR5-NEXT: vsrh 2, 2, 3
3673 ; PWR5-NEXT: vspltish 3, 13
3674 ; PWR5-NEXT: vcmpgtuh 2, 2, 3
3677 ; PWR6-LABEL: ugt_13_v8i16:
3679 ; PWR6-NEXT: addis 3, 2, .LCPI36_0@toc@ha
3680 ; PWR6-NEXT: vspltish 4, 1
3681 ; PWR6-NEXT: vxor 3, 3, 3
3682 ; PWR6-NEXT: addi 3, 3, .LCPI36_0@toc@l
3683 ; PWR6-NEXT: lvx 5, 0, 3
3684 ; PWR6-NEXT: addis 3, 2, .LCPI36_1@toc@ha
3685 ; PWR6-NEXT: addi 3, 3, .LCPI36_1@toc@l
3686 ; PWR6-NEXT: vsrh 4, 2, 4
3687 ; PWR6-NEXT: vand 4, 4, 5
3688 ; PWR6-NEXT: vspltish 5, 2
3689 ; PWR6-NEXT: vsubuhm 2, 2, 4
3690 ; PWR6-NEXT: vsrh 4, 2, 5
3691 ; PWR6-NEXT: lvx 5, 0, 3
3692 ; PWR6-NEXT: vand 2, 2, 5
3693 ; PWR6-NEXT: vand 4, 4, 5
3694 ; PWR6-NEXT: vspltish 5, 4
3695 ; PWR6-NEXT: vadduhm 2, 2, 4
3696 ; PWR6-NEXT: vsrh 4, 2, 5
3697 ; PWR6-NEXT: vspltisb 5, 15
3698 ; PWR6-NEXT: vadduhm 2, 2, 4
3699 ; PWR6-NEXT: vspltisb 4, 1
3700 ; PWR6-NEXT: vand 2, 2, 5
3701 ; PWR6-NEXT: vmladduhm 2, 2, 4, 3
3702 ; PWR6-NEXT: vspltish 3, 8
3703 ; PWR6-NEXT: vsrh 2, 2, 3
3704 ; PWR6-NEXT: vspltish 3, 13
3705 ; PWR6-NEXT: vcmpgtuh 2, 2, 3
3708 ; PWR7-LABEL: ugt_13_v8i16:
3710 ; PWR7-NEXT: vspltish 3, 1
3711 ; PWR7-NEXT: addis 3, 2, .LCPI36_0@toc@ha
3712 ; PWR7-NEXT: addi 3, 3, .LCPI36_0@toc@l
3713 ; PWR7-NEXT: vspltish 4, 2
3714 ; PWR7-NEXT: lxvw4x 0, 0, 3
3715 ; PWR7-NEXT: addis 3, 2, .LCPI36_1@toc@ha
3716 ; PWR7-NEXT: vspltisb 5, 15
3717 ; PWR7-NEXT: vsrh 3, 2, 3
3718 ; PWR7-NEXT: addi 3, 3, .LCPI36_1@toc@l
3719 ; PWR7-NEXT: xxland 35, 35, 0
3720 ; PWR7-NEXT: lxvw4x 0, 0, 3
3721 ; PWR7-NEXT: vsubuhm 2, 2, 3
3722 ; PWR7-NEXT: vsrh 3, 2, 4
3723 ; PWR7-NEXT: xxland 34, 34, 0
3724 ; PWR7-NEXT: vspltish 4, 4
3725 ; PWR7-NEXT: xxland 35, 35, 0
3726 ; PWR7-NEXT: vadduhm 2, 2, 3
3727 ; PWR7-NEXT: vsrh 3, 2, 4
3728 ; PWR7-NEXT: vxor 4, 4, 4
3729 ; PWR7-NEXT: vadduhm 2, 2, 3
3730 ; PWR7-NEXT: vspltisb 3, 1
3731 ; PWR7-NEXT: xxland 34, 34, 37
3732 ; PWR7-NEXT: vmladduhm 2, 2, 3, 4
3733 ; PWR7-NEXT: vspltish 3, 8
3734 ; PWR7-NEXT: vsrh 2, 2, 3
3735 ; PWR7-NEXT: vspltish 3, 13
3736 ; PWR7-NEXT: vcmpgtuh 2, 2, 3
3739 ; PWR8-LABEL: ugt_13_v8i16:
3741 ; PWR8-NEXT: vspltish 3, 13
3742 ; PWR8-NEXT: vpopcnth 2, 2
3743 ; PWR8-NEXT: vcmpgtuh 2, 2, 3
3746 ; PWR9-LABEL: ugt_13_v8i16:
3748 ; PWR9-NEXT: vspltish 3, 13
3749 ; PWR9-NEXT: vpopcnth 2, 2
3750 ; PWR9-NEXT: vcmpgtuh 2, 2, 3
3752 %2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0)
3753 %3 = icmp ugt <8 x i16> %2, <i16 13, i16 13, i16 13, i16 13, i16 13, i16 13, i16 13, i16 13>
3754 %4 = sext <8 x i1> %3 to <8 x i16>
3758 define <8 x i16> @ult_14_v8i16(<8 x i16> %0) {
3759 ; PWR5-LABEL: ult_14_v8i16:
3761 ; PWR5-NEXT: addis 3, 2, .LCPI37_0@toc@ha
3762 ; PWR5-NEXT: vspltish 4, 1
3763 ; PWR5-NEXT: vxor 3, 3, 3
3764 ; PWR5-NEXT: addi 3, 3, .LCPI37_0@toc@l
3765 ; PWR5-NEXT: lvx 5, 0, 3
3766 ; PWR5-NEXT: addis 3, 2, .LCPI37_1@toc@ha
3767 ; PWR5-NEXT: addi 3, 3, .LCPI37_1@toc@l
3768 ; PWR5-NEXT: vsrh 4, 2, 4
3769 ; PWR5-NEXT: vand 4, 4, 5
3770 ; PWR5-NEXT: vspltish 5, 2
3771 ; PWR5-NEXT: vsubuhm 2, 2, 4
3772 ; PWR5-NEXT: vsrh 4, 2, 5
3773 ; PWR5-NEXT: lvx 5, 0, 3
3774 ; PWR5-NEXT: vand 2, 2, 5
3775 ; PWR5-NEXT: vand 4, 4, 5
3776 ; PWR5-NEXT: vspltish 5, 4
3777 ; PWR5-NEXT: vadduhm 2, 2, 4
3778 ; PWR5-NEXT: vsrh 4, 2, 5
3779 ; PWR5-NEXT: vspltisb 5, 15
3780 ; PWR5-NEXT: vadduhm 2, 2, 4
3781 ; PWR5-NEXT: vspltisb 4, 1
3782 ; PWR5-NEXT: vand 2, 2, 5
3783 ; PWR5-NEXT: vmladduhm 2, 2, 4, 3
3784 ; PWR5-NEXT: vspltish 3, 8
3785 ; PWR5-NEXT: vsrh 2, 2, 3
3786 ; PWR5-NEXT: vspltish 3, 14
3787 ; PWR5-NEXT: vcmpgtuh 2, 3, 2
3790 ; PWR6-LABEL: ult_14_v8i16:
3792 ; PWR6-NEXT: addis 3, 2, .LCPI37_0@toc@ha
3793 ; PWR6-NEXT: vspltish 4, 1
3794 ; PWR6-NEXT: vxor 3, 3, 3
3795 ; PWR6-NEXT: addi 3, 3, .LCPI37_0@toc@l
3796 ; PWR6-NEXT: lvx 5, 0, 3
3797 ; PWR6-NEXT: addis 3, 2, .LCPI37_1@toc@ha
3798 ; PWR6-NEXT: addi 3, 3, .LCPI37_1@toc@l
3799 ; PWR6-NEXT: vsrh 4, 2, 4
3800 ; PWR6-NEXT: vand 4, 4, 5
3801 ; PWR6-NEXT: vspltish 5, 2
3802 ; PWR6-NEXT: vsubuhm 2, 2, 4
3803 ; PWR6-NEXT: vsrh 4, 2, 5
3804 ; PWR6-NEXT: lvx 5, 0, 3
3805 ; PWR6-NEXT: vand 2, 2, 5
3806 ; PWR6-NEXT: vand 4, 4, 5
3807 ; PWR6-NEXT: vspltish 5, 4
3808 ; PWR6-NEXT: vadduhm 2, 2, 4
3809 ; PWR6-NEXT: vsrh 4, 2, 5
3810 ; PWR6-NEXT: vspltisb 5, 15
3811 ; PWR6-NEXT: vadduhm 2, 2, 4
3812 ; PWR6-NEXT: vspltisb 4, 1
3813 ; PWR6-NEXT: vand 2, 2, 5
3814 ; PWR6-NEXT: vmladduhm 2, 2, 4, 3
3815 ; PWR6-NEXT: vspltish 3, 8
3816 ; PWR6-NEXT: vsrh 2, 2, 3
3817 ; PWR6-NEXT: vspltish 3, 14
3818 ; PWR6-NEXT: vcmpgtuh 2, 3, 2
3821 ; PWR7-LABEL: ult_14_v8i16:
3823 ; PWR7-NEXT: vspltish 3, 1
3824 ; PWR7-NEXT: addis 3, 2, .LCPI37_0@toc@ha
3825 ; PWR7-NEXT: addi 3, 3, .LCPI37_0@toc@l
3826 ; PWR7-NEXT: vspltish 4, 2
3827 ; PWR7-NEXT: lxvw4x 0, 0, 3
3828 ; PWR7-NEXT: addis 3, 2, .LCPI37_1@toc@ha
3829 ; PWR7-NEXT: vspltisb 5, 15
3830 ; PWR7-NEXT: vsrh 3, 2, 3
3831 ; PWR7-NEXT: addi 3, 3, .LCPI37_1@toc@l
3832 ; PWR7-NEXT: xxland 35, 35, 0
3833 ; PWR7-NEXT: lxvw4x 0, 0, 3
3834 ; PWR7-NEXT: vsubuhm 2, 2, 3
3835 ; PWR7-NEXT: vsrh 3, 2, 4
3836 ; PWR7-NEXT: xxland 34, 34, 0
3837 ; PWR7-NEXT: vspltish 4, 4
3838 ; PWR7-NEXT: xxland 35, 35, 0
3839 ; PWR7-NEXT: vadduhm 2, 2, 3
3840 ; PWR7-NEXT: vsrh 3, 2, 4
3841 ; PWR7-NEXT: vxor 4, 4, 4
3842 ; PWR7-NEXT: vadduhm 2, 2, 3
3843 ; PWR7-NEXT: vspltisb 3, 1
3844 ; PWR7-NEXT: xxland 34, 34, 37
3845 ; PWR7-NEXT: vmladduhm 2, 2, 3, 4
3846 ; PWR7-NEXT: vspltish 3, 8
3847 ; PWR7-NEXT: vsrh 2, 2, 3
3848 ; PWR7-NEXT: vspltish 3, 14
3849 ; PWR7-NEXT: vcmpgtuh 2, 3, 2
3852 ; PWR8-LABEL: ult_14_v8i16:
3854 ; PWR8-NEXT: vspltish 3, 14
3855 ; PWR8-NEXT: vpopcnth 2, 2
3856 ; PWR8-NEXT: vcmpgtuh 2, 3, 2
3859 ; PWR9-LABEL: ult_14_v8i16:
3861 ; PWR9-NEXT: vspltish 3, 14
3862 ; PWR9-NEXT: vpopcnth 2, 2
3863 ; PWR9-NEXT: vcmpgtuh 2, 3, 2
3865 %2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0)
3866 %3 = icmp ult <8 x i16> %2, <i16 14, i16 14, i16 14, i16 14, i16 14, i16 14, i16 14, i16 14>
3867 %4 = sext <8 x i1> %3 to <8 x i16>
3871 define <8 x i16> @ugt_14_v8i16(<8 x i16> %0) {
3872 ; PWR5-LABEL: ugt_14_v8i16:
3874 ; PWR5-NEXT: addis 3, 2, .LCPI38_0@toc@ha
3875 ; PWR5-NEXT: vspltish 4, 1
3876 ; PWR5-NEXT: vxor 3, 3, 3
3877 ; PWR5-NEXT: addi 3, 3, .LCPI38_0@toc@l
3878 ; PWR5-NEXT: lvx 5, 0, 3
3879 ; PWR5-NEXT: addis 3, 2, .LCPI38_1@toc@ha
3880 ; PWR5-NEXT: addi 3, 3, .LCPI38_1@toc@l
3881 ; PWR5-NEXT: vsrh 4, 2, 4
3882 ; PWR5-NEXT: vand 4, 4, 5
3883 ; PWR5-NEXT: vspltish 5, 2
3884 ; PWR5-NEXT: vsubuhm 2, 2, 4
3885 ; PWR5-NEXT: vsrh 4, 2, 5
3886 ; PWR5-NEXT: lvx 5, 0, 3
3887 ; PWR5-NEXT: vand 2, 2, 5
3888 ; PWR5-NEXT: vand 4, 4, 5
3889 ; PWR5-NEXT: vspltish 5, 4
3890 ; PWR5-NEXT: vadduhm 2, 2, 4
3891 ; PWR5-NEXT: vsrh 4, 2, 5
3892 ; PWR5-NEXT: vspltisb 5, 15
3893 ; PWR5-NEXT: vadduhm 2, 2, 4
3894 ; PWR5-NEXT: vspltisb 4, 1
3895 ; PWR5-NEXT: vand 2, 2, 5
3896 ; PWR5-NEXT: vmladduhm 2, 2, 4, 3
3897 ; PWR5-NEXT: vspltish 3, 8
3898 ; PWR5-NEXT: vsrh 2, 2, 3
3899 ; PWR5-NEXT: vspltish 3, 14
3900 ; PWR5-NEXT: vcmpgtuh 2, 2, 3
3903 ; PWR6-LABEL: ugt_14_v8i16:
3905 ; PWR6-NEXT: addis 3, 2, .LCPI38_0@toc@ha
3906 ; PWR6-NEXT: vspltish 4, 1
3907 ; PWR6-NEXT: vxor 3, 3, 3
3908 ; PWR6-NEXT: addi 3, 3, .LCPI38_0@toc@l
3909 ; PWR6-NEXT: lvx 5, 0, 3
3910 ; PWR6-NEXT: addis 3, 2, .LCPI38_1@toc@ha
3911 ; PWR6-NEXT: addi 3, 3, .LCPI38_1@toc@l
3912 ; PWR6-NEXT: vsrh 4, 2, 4
3913 ; PWR6-NEXT: vand 4, 4, 5
3914 ; PWR6-NEXT: vspltish 5, 2
3915 ; PWR6-NEXT: vsubuhm 2, 2, 4
3916 ; PWR6-NEXT: vsrh 4, 2, 5
3917 ; PWR6-NEXT: lvx 5, 0, 3
3918 ; PWR6-NEXT: vand 2, 2, 5
3919 ; PWR6-NEXT: vand 4, 4, 5
3920 ; PWR6-NEXT: vspltish 5, 4
3921 ; PWR6-NEXT: vadduhm 2, 2, 4
3922 ; PWR6-NEXT: vsrh 4, 2, 5
3923 ; PWR6-NEXT: vspltisb 5, 15
3924 ; PWR6-NEXT: vadduhm 2, 2, 4
3925 ; PWR6-NEXT: vspltisb 4, 1
3926 ; PWR6-NEXT: vand 2, 2, 5
3927 ; PWR6-NEXT: vmladduhm 2, 2, 4, 3
3928 ; PWR6-NEXT: vspltish 3, 8
3929 ; PWR6-NEXT: vsrh 2, 2, 3
3930 ; PWR6-NEXT: vspltish 3, 14
3931 ; PWR6-NEXT: vcmpgtuh 2, 2, 3
3934 ; PWR7-LABEL: ugt_14_v8i16:
3936 ; PWR7-NEXT: vspltish 3, 1
3937 ; PWR7-NEXT: addis 3, 2, .LCPI38_0@toc@ha
3938 ; PWR7-NEXT: addi 3, 3, .LCPI38_0@toc@l
3939 ; PWR7-NEXT: vspltish 4, 2
3940 ; PWR7-NEXT: lxvw4x 0, 0, 3
3941 ; PWR7-NEXT: addis 3, 2, .LCPI38_1@toc@ha
3942 ; PWR7-NEXT: vspltisb 5, 15
3943 ; PWR7-NEXT: vsrh 3, 2, 3
3944 ; PWR7-NEXT: addi 3, 3, .LCPI38_1@toc@l
3945 ; PWR7-NEXT: xxland 35, 35, 0
3946 ; PWR7-NEXT: lxvw4x 0, 0, 3
3947 ; PWR7-NEXT: vsubuhm 2, 2, 3
3948 ; PWR7-NEXT: vsrh 3, 2, 4
3949 ; PWR7-NEXT: xxland 34, 34, 0
3950 ; PWR7-NEXT: vspltish 4, 4
3951 ; PWR7-NEXT: xxland 35, 35, 0
3952 ; PWR7-NEXT: vadduhm 2, 2, 3
3953 ; PWR7-NEXT: vsrh 3, 2, 4
3954 ; PWR7-NEXT: vxor 4, 4, 4
3955 ; PWR7-NEXT: vadduhm 2, 2, 3
3956 ; PWR7-NEXT: vspltisb 3, 1
3957 ; PWR7-NEXT: xxland 34, 34, 37
3958 ; PWR7-NEXT: vmladduhm 2, 2, 3, 4
3959 ; PWR7-NEXT: vspltish 3, 8
3960 ; PWR7-NEXT: vsrh 2, 2, 3
3961 ; PWR7-NEXT: vspltish 3, 14
3962 ; PWR7-NEXT: vcmpgtuh 2, 2, 3
3965 ; PWR8-LABEL: ugt_14_v8i16:
3967 ; PWR8-NEXT: vspltish 3, 14
3968 ; PWR8-NEXT: vpopcnth 2, 2
3969 ; PWR8-NEXT: vcmpgtuh 2, 2, 3
3972 ; PWR9-LABEL: ugt_14_v8i16:
3974 ; PWR9-NEXT: vspltish 3, 14
3975 ; PWR9-NEXT: vpopcnth 2, 2
3976 ; PWR9-NEXT: vcmpgtuh 2, 2, 3
3978 %2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0)
3979 %3 = icmp ugt <8 x i16> %2, <i16 14, i16 14, i16 14, i16 14, i16 14, i16 14, i16 14, i16 14>
3980 %4 = sext <8 x i1> %3 to <8 x i16>
3984 define <8 x i16> @ult_15_v8i16(<8 x i16> %0) {
3985 ; PWR5-LABEL: ult_15_v8i16:
3987 ; PWR5-NEXT: addis 3, 2, .LCPI39_0@toc@ha
3988 ; PWR5-NEXT: vspltish 4, 1
3989 ; PWR5-NEXT: vxor 3, 3, 3
3990 ; PWR5-NEXT: addi 3, 3, .LCPI39_0@toc@l
3991 ; PWR5-NEXT: lvx 5, 0, 3
3992 ; PWR5-NEXT: addis 3, 2, .LCPI39_1@toc@ha
3993 ; PWR5-NEXT: addi 3, 3, .LCPI39_1@toc@l
3994 ; PWR5-NEXT: vsrh 4, 2, 4
3995 ; PWR5-NEXT: vand 4, 4, 5
3996 ; PWR5-NEXT: vspltish 5, 2
3997 ; PWR5-NEXT: vsubuhm 2, 2, 4
3998 ; PWR5-NEXT: vsrh 4, 2, 5
3999 ; PWR5-NEXT: lvx 5, 0, 3
4000 ; PWR5-NEXT: vand 2, 2, 5
4001 ; PWR5-NEXT: vand 4, 4, 5
4002 ; PWR5-NEXT: vspltish 5, 4
4003 ; PWR5-NEXT: vadduhm 2, 2, 4
4004 ; PWR5-NEXT: vsrh 4, 2, 5
4005 ; PWR5-NEXT: vspltisb 5, 15
4006 ; PWR5-NEXT: vadduhm 2, 2, 4
4007 ; PWR5-NEXT: vspltisb 4, 1
4008 ; PWR5-NEXT: vand 2, 2, 5
4009 ; PWR5-NEXT: vmladduhm 2, 2, 4, 3
4010 ; PWR5-NEXT: vspltish 3, 8
4011 ; PWR5-NEXT: vsrh 2, 2, 3
4012 ; PWR5-NEXT: vspltish 3, 15
4013 ; PWR5-NEXT: vcmpgtuh 2, 3, 2
4016 ; PWR6-LABEL: ult_15_v8i16:
4018 ; PWR6-NEXT: addis 3, 2, .LCPI39_0@toc@ha
4019 ; PWR6-NEXT: vspltish 4, 1
4020 ; PWR6-NEXT: vxor 3, 3, 3
4021 ; PWR6-NEXT: addi 3, 3, .LCPI39_0@toc@l
4022 ; PWR6-NEXT: lvx 5, 0, 3
4023 ; PWR6-NEXT: addis 3, 2, .LCPI39_1@toc@ha
4024 ; PWR6-NEXT: addi 3, 3, .LCPI39_1@toc@l
4025 ; PWR6-NEXT: vsrh 4, 2, 4
4026 ; PWR6-NEXT: vand 4, 4, 5
4027 ; PWR6-NEXT: vspltish 5, 2
4028 ; PWR6-NEXT: vsubuhm 2, 2, 4
4029 ; PWR6-NEXT: vsrh 4, 2, 5
4030 ; PWR6-NEXT: lvx 5, 0, 3
4031 ; PWR6-NEXT: vand 2, 2, 5
4032 ; PWR6-NEXT: vand 4, 4, 5
4033 ; PWR6-NEXT: vspltish 5, 4
4034 ; PWR6-NEXT: vadduhm 2, 2, 4
4035 ; PWR6-NEXT: vsrh 4, 2, 5
4036 ; PWR6-NEXT: vspltisb 5, 15
4037 ; PWR6-NEXT: vadduhm 2, 2, 4
4038 ; PWR6-NEXT: vspltisb 4, 1
4039 ; PWR6-NEXT: vand 2, 2, 5
4040 ; PWR6-NEXT: vmladduhm 2, 2, 4, 3
4041 ; PWR6-NEXT: vspltish 3, 8
4042 ; PWR6-NEXT: vsrh 2, 2, 3
4043 ; PWR6-NEXT: vspltish 3, 15
4044 ; PWR6-NEXT: vcmpgtuh 2, 3, 2
4047 ; PWR7-LABEL: ult_15_v8i16:
4049 ; PWR7-NEXT: vspltish 3, 1
4050 ; PWR7-NEXT: addis 3, 2, .LCPI39_0@toc@ha
4051 ; PWR7-NEXT: addi 3, 3, .LCPI39_0@toc@l
4052 ; PWR7-NEXT: vspltish 4, 2
4053 ; PWR7-NEXT: lxvw4x 0, 0, 3
4054 ; PWR7-NEXT: addis 3, 2, .LCPI39_1@toc@ha
4055 ; PWR7-NEXT: vspltisb 5, 15
4056 ; PWR7-NEXT: vsrh 3, 2, 3
4057 ; PWR7-NEXT: addi 3, 3, .LCPI39_1@toc@l
4058 ; PWR7-NEXT: xxland 35, 35, 0
4059 ; PWR7-NEXT: lxvw4x 0, 0, 3
4060 ; PWR7-NEXT: vsubuhm 2, 2, 3
4061 ; PWR7-NEXT: vsrh 3, 2, 4
4062 ; PWR7-NEXT: xxland 34, 34, 0
4063 ; PWR7-NEXT: vspltish 4, 4
4064 ; PWR7-NEXT: xxland 35, 35, 0
4065 ; PWR7-NEXT: vadduhm 2, 2, 3
4066 ; PWR7-NEXT: vsrh 3, 2, 4
4067 ; PWR7-NEXT: vxor 4, 4, 4
4068 ; PWR7-NEXT: vadduhm 2, 2, 3
4069 ; PWR7-NEXT: vspltisb 3, 1
4070 ; PWR7-NEXT: xxland 34, 34, 37
4071 ; PWR7-NEXT: vmladduhm 2, 2, 3, 4
4072 ; PWR7-NEXT: vspltish 3, 8
4073 ; PWR7-NEXT: vsrh 2, 2, 3
4074 ; PWR7-NEXT: vspltish 3, 15
4075 ; PWR7-NEXT: vcmpgtuh 2, 3, 2
4078 ; PWR8-LABEL: ult_15_v8i16:
4080 ; PWR8-NEXT: vspltish 3, 15
4081 ; PWR8-NEXT: vpopcnth 2, 2
4082 ; PWR8-NEXT: vcmpgtuh 2, 3, 2
4085 ; PWR9-LABEL: ult_15_v8i16:
4087 ; PWR9-NEXT: vspltish 3, 15
4088 ; PWR9-NEXT: vpopcnth 2, 2
4089 ; PWR9-NEXT: vcmpgtuh 2, 3, 2
4091 %2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0)
4092 %3 = icmp ult <8 x i16> %2, <i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15>
4093 %4 = sext <8 x i1> %3 to <8 x i16>
4097 define <4 x i32> @ugt_1_v4i32(<4 x i32> %0) {
4098 ; PWR5-LABEL: ugt_1_v4i32:
4100 ; PWR5-NEXT: vspltisb 3, -1
4101 ; PWR5-NEXT: vadduwm 3, 2, 3
4102 ; PWR5-NEXT: vand 2, 2, 3
4103 ; PWR5-NEXT: vxor 3, 3, 3
4104 ; PWR5-NEXT: vcmpequw 2, 2, 3
4105 ; PWR5-NEXT: vnot 2, 2
4108 ; PWR6-LABEL: ugt_1_v4i32:
4110 ; PWR6-NEXT: vspltisb 3, -1
4111 ; PWR6-NEXT: vadduwm 3, 2, 3
4112 ; PWR6-NEXT: vand 2, 2, 3
4113 ; PWR6-NEXT: vxor 3, 3, 3
4114 ; PWR6-NEXT: vcmpequw 2, 2, 3
4115 ; PWR6-NEXT: vnot 2, 2
4118 ; PWR7-LABEL: ugt_1_v4i32:
4120 ; PWR7-NEXT: vspltisb 3, -1
4121 ; PWR7-NEXT: vadduwm 3, 2, 3
4122 ; PWR7-NEXT: xxland 34, 34, 35
4123 ; PWR7-NEXT: xxlxor 35, 35, 35
4124 ; PWR7-NEXT: vcmpequw 2, 2, 3
4125 ; PWR7-NEXT: xxlnor 34, 34, 34
4128 ; PWR8-LABEL: ugt_1_v4i32:
4130 ; PWR8-NEXT: vspltisw 3, 1
4131 ; PWR8-NEXT: vpopcntw 2, 2
4132 ; PWR8-NEXT: vcmpgtuw 2, 2, 3
4135 ; PWR9-LABEL: ugt_1_v4i32:
4137 ; PWR9-NEXT: vpopcntw 2, 2
4138 ; PWR9-NEXT: vspltisw 3, 1
4139 ; PWR9-NEXT: vcmpgtuw 2, 2, 3
4141 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
4142 %3 = icmp ugt <4 x i32> %2, <i32 1, i32 1, i32 1, i32 1>
4143 %4 = sext <4 x i1> %3 to <4 x i32>
4147 define <4 x i32> @ult_2_v4i32(<4 x i32> %0) {
4148 ; PWR5-LABEL: ult_2_v4i32:
4150 ; PWR5-NEXT: vspltisb 3, -1
4151 ; PWR5-NEXT: vadduwm 3, 2, 3
4152 ; PWR5-NEXT: vand 2, 2, 3
4153 ; PWR5-NEXT: vxor 3, 3, 3
4154 ; PWR5-NEXT: vcmpequw 2, 2, 3
4157 ; PWR6-LABEL: ult_2_v4i32:
4159 ; PWR6-NEXT: vspltisb 3, -1
4160 ; PWR6-NEXT: vadduwm 3, 2, 3
4161 ; PWR6-NEXT: vand 2, 2, 3
4162 ; PWR6-NEXT: vxor 3, 3, 3
4163 ; PWR6-NEXT: vcmpequw 2, 2, 3
4166 ; PWR7-LABEL: ult_2_v4i32:
4168 ; PWR7-NEXT: vspltisb 3, -1
4169 ; PWR7-NEXT: vadduwm 3, 2, 3
4170 ; PWR7-NEXT: xxland 34, 34, 35
4171 ; PWR7-NEXT: xxlxor 35, 35, 35
4172 ; PWR7-NEXT: vcmpequw 2, 2, 3
4175 ; PWR8-LABEL: ult_2_v4i32:
4177 ; PWR8-NEXT: vspltisw 3, 2
4178 ; PWR8-NEXT: vpopcntw 2, 2
4179 ; PWR8-NEXT: vcmpgtuw 2, 3, 2
4182 ; PWR9-LABEL: ult_2_v4i32:
4184 ; PWR9-NEXT: vpopcntw 2, 2
4185 ; PWR9-NEXT: vspltisw 3, 2
4186 ; PWR9-NEXT: vcmpgtuw 2, 3, 2
4188 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
4189 %3 = icmp ult <4 x i32> %2, <i32 2, i32 2, i32 2, i32 2>
4190 %4 = sext <4 x i1> %3 to <4 x i32>
4194 define <4 x i32> @ugt_2_v4i32(<4 x i32> %0) {
4195 ; PWR5-LABEL: ugt_2_v4i32:
4197 ; PWR5-NEXT: addis 3, 2, .LCPI42_0@toc@ha
4198 ; PWR5-NEXT: vspltisw 4, 1
4199 ; PWR5-NEXT: vxor 3, 3, 3
4200 ; PWR5-NEXT: addi 3, 3, .LCPI42_0@toc@l
4201 ; PWR5-NEXT: lvx 5, 0, 3
4202 ; PWR5-NEXT: addis 3, 2, .LCPI42_1@toc@ha
4203 ; PWR5-NEXT: addi 3, 3, .LCPI42_1@toc@l
4204 ; PWR5-NEXT: vspltisw 0, 2
4205 ; PWR5-NEXT: vsrw 4, 2, 4
4206 ; PWR5-NEXT: vand 4, 4, 5
4207 ; PWR5-NEXT: lvx 5, 0, 3
4208 ; PWR5-NEXT: vsubuwm 2, 2, 4
4209 ; PWR5-NEXT: vand 4, 2, 5
4210 ; PWR5-NEXT: vsrw 2, 2, 0
4211 ; PWR5-NEXT: vand 2, 2, 5
4212 ; PWR5-NEXT: vspltisw 5, 4
4213 ; PWR5-NEXT: vadduwm 2, 4, 2
4214 ; PWR5-NEXT: vsrw 4, 2, 5
4215 ; PWR5-NEXT: vspltisb 5, 15
4216 ; PWR5-NEXT: vadduwm 2, 2, 4
4217 ; PWR5-NEXT: vspltisb 4, 1
4218 ; PWR5-NEXT: vand 2, 2, 5
4219 ; PWR5-NEXT: vspltisw 5, -16
4220 ; PWR5-NEXT: vrlw 1, 4, 5
4221 ; PWR5-NEXT: vmulouh 4, 2, 4
4222 ; PWR5-NEXT: vmsumuhm 2, 2, 1, 3
4223 ; PWR5-NEXT: vspltisw 3, 12
4224 ; PWR5-NEXT: vadduwm 3, 3, 3
4225 ; PWR5-NEXT: vslw 2, 2, 5
4226 ; PWR5-NEXT: vadduwm 2, 4, 2
4227 ; PWR5-NEXT: vsrw 2, 2, 3
4228 ; PWR5-NEXT: vcmpgtuw 2, 2, 0
4231 ; PWR6-LABEL: ugt_2_v4i32:
4233 ; PWR6-NEXT: addis 3, 2, .LCPI42_0@toc@ha
4234 ; PWR6-NEXT: vspltisw 4, 1
4235 ; PWR6-NEXT: vxor 3, 3, 3
4236 ; PWR6-NEXT: addi 3, 3, .LCPI42_0@toc@l
4237 ; PWR6-NEXT: lvx 5, 0, 3
4238 ; PWR6-NEXT: addis 3, 2, .LCPI42_1@toc@ha
4239 ; PWR6-NEXT: addi 3, 3, .LCPI42_1@toc@l
4240 ; PWR6-NEXT: vspltisw 0, 2
4241 ; PWR6-NEXT: vsrw 4, 2, 4
4242 ; PWR6-NEXT: vand 4, 4, 5
4243 ; PWR6-NEXT: lvx 5, 0, 3
4244 ; PWR6-NEXT: vsubuwm 2, 2, 4
4245 ; PWR6-NEXT: vand 4, 2, 5
4246 ; PWR6-NEXT: vsrw 2, 2, 0
4247 ; PWR6-NEXT: vand 2, 2, 5
4248 ; PWR6-NEXT: vspltisw 5, 4
4249 ; PWR6-NEXT: vadduwm 2, 4, 2
4250 ; PWR6-NEXT: vsrw 4, 2, 5
4251 ; PWR6-NEXT: vspltisb 5, 15
4252 ; PWR6-NEXT: vadduwm 2, 2, 4
4253 ; PWR6-NEXT: vspltisb 4, 1
4254 ; PWR6-NEXT: vand 2, 2, 5
4255 ; PWR6-NEXT: vspltisw 5, -16
4256 ; PWR6-NEXT: vrlw 1, 4, 5
4257 ; PWR6-NEXT: vmulouh 4, 2, 4
4258 ; PWR6-NEXT: vmsumuhm 2, 2, 1, 3
4259 ; PWR6-NEXT: vspltisw 3, 12
4260 ; PWR6-NEXT: vadduwm 3, 3, 3
4261 ; PWR6-NEXT: vslw 2, 2, 5
4262 ; PWR6-NEXT: vadduwm 2, 4, 2
4263 ; PWR6-NEXT: vsrw 2, 2, 3
4264 ; PWR6-NEXT: vcmpgtuw 2, 2, 0
4267 ; PWR7-LABEL: ugt_2_v4i32:
4269 ; PWR7-NEXT: vspltisw 3, 1
4270 ; PWR7-NEXT: addis 3, 2, .LCPI42_0@toc@ha
4271 ; PWR7-NEXT: addi 3, 3, .LCPI42_0@toc@l
4272 ; PWR7-NEXT: vspltisw 4, 2
4273 ; PWR7-NEXT: lxvw4x 0, 0, 3
4274 ; PWR7-NEXT: addis 3, 2, .LCPI42_1@toc@ha
4275 ; PWR7-NEXT: vspltisw 5, 4
4276 ; PWR7-NEXT: vsrw 3, 2, 3
4277 ; PWR7-NEXT: addi 3, 3, .LCPI42_1@toc@l
4278 ; PWR7-NEXT: vspltisw 0, -16
4279 ; PWR7-NEXT: vspltisb 1, 15
4280 ; PWR7-NEXT: xxland 35, 35, 0
4281 ; PWR7-NEXT: lxvw4x 0, 0, 3
4282 ; PWR7-NEXT: vsubuwm 2, 2, 3
4283 ; PWR7-NEXT: vsrw 3, 2, 4
4284 ; PWR7-NEXT: xxland 34, 34, 0
4285 ; PWR7-NEXT: xxland 35, 35, 0
4286 ; PWR7-NEXT: vadduwm 2, 2, 3
4287 ; PWR7-NEXT: vsrw 3, 2, 5
4288 ; PWR7-NEXT: vspltisb 5, 1
4289 ; PWR7-NEXT: vrlw 6, 5, 0
4290 ; PWR7-NEXT: vadduwm 2, 2, 3
4291 ; PWR7-NEXT: xxlxor 35, 35, 35
4292 ; PWR7-NEXT: xxland 34, 34, 33
4293 ; PWR7-NEXT: vmsumuhm 3, 2, 6, 3
4294 ; PWR7-NEXT: vmulouh 2, 2, 5
4295 ; PWR7-NEXT: vspltisw 5, 12
4296 ; PWR7-NEXT: vslw 3, 3, 0
4297 ; PWR7-NEXT: vadduwm 2, 2, 3
4298 ; PWR7-NEXT: vadduwm 3, 5, 5
4299 ; PWR7-NEXT: vsrw 2, 2, 3
4300 ; PWR7-NEXT: vcmpgtuw 2, 2, 4
4303 ; PWR8-LABEL: ugt_2_v4i32:
4305 ; PWR8-NEXT: vspltisw 3, 2
4306 ; PWR8-NEXT: vpopcntw 2, 2
4307 ; PWR8-NEXT: vcmpgtuw 2, 2, 3
4310 ; PWR9-LABEL: ugt_2_v4i32:
4312 ; PWR9-NEXT: vpopcntw 2, 2
4313 ; PWR9-NEXT: vspltisw 3, 2
4314 ; PWR9-NEXT: vcmpgtuw 2, 2, 3
4316 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
4317 %3 = icmp ugt <4 x i32> %2, <i32 2, i32 2, i32 2, i32 2>
4318 %4 = sext <4 x i1> %3 to <4 x i32>
4322 define <4 x i32> @ult_3_v4i32(<4 x i32> %0) {
4323 ; PWR5-LABEL: ult_3_v4i32:
4325 ; PWR5-NEXT: addis 3, 2, .LCPI43_0@toc@ha
4326 ; PWR5-NEXT: vspltisw 4, 1
4327 ; PWR5-NEXT: vxor 3, 3, 3
4328 ; PWR5-NEXT: addi 3, 3, .LCPI43_0@toc@l
4329 ; PWR5-NEXT: lvx 5, 0, 3
4330 ; PWR5-NEXT: addis 3, 2, .LCPI43_1@toc@ha
4331 ; PWR5-NEXT: addi 3, 3, .LCPI43_1@toc@l
4332 ; PWR5-NEXT: vspltisw 0, 2
4333 ; PWR5-NEXT: vsrw 4, 2, 4
4334 ; PWR5-NEXT: vand 4, 4, 5
4335 ; PWR5-NEXT: lvx 5, 0, 3
4336 ; PWR5-NEXT: vsubuwm 2, 2, 4
4337 ; PWR5-NEXT: vand 4, 2, 5
4338 ; PWR5-NEXT: vsrw 2, 2, 0
4339 ; PWR5-NEXT: vand 2, 2, 5
4340 ; PWR5-NEXT: vspltisw 5, 4
4341 ; PWR5-NEXT: vadduwm 2, 4, 2
4342 ; PWR5-NEXT: vsrw 4, 2, 5
4343 ; PWR5-NEXT: vspltisb 5, 15
4344 ; PWR5-NEXT: vadduwm 2, 2, 4
4345 ; PWR5-NEXT: vspltisb 4, 1
4346 ; PWR5-NEXT: vand 2, 2, 5
4347 ; PWR5-NEXT: vspltisw 5, -16
4348 ; PWR5-NEXT: vrlw 0, 4, 5
4349 ; PWR5-NEXT: vmulouh 4, 2, 4
4350 ; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
4351 ; PWR5-NEXT: vspltisw 3, 12
4352 ; PWR5-NEXT: vadduwm 3, 3, 3
4353 ; PWR5-NEXT: vslw 2, 2, 5
4354 ; PWR5-NEXT: vadduwm 2, 4, 2
4355 ; PWR5-NEXT: vsrw 2, 2, 3
4356 ; PWR5-NEXT: vspltisw 3, 3
4357 ; PWR5-NEXT: vcmpgtuw 2, 3, 2
4360 ; PWR6-LABEL: ult_3_v4i32:
4362 ; PWR6-NEXT: addis 3, 2, .LCPI43_0@toc@ha
4363 ; PWR6-NEXT: vspltisw 4, 1
4364 ; PWR6-NEXT: vxor 3, 3, 3
4365 ; PWR6-NEXT: addi 3, 3, .LCPI43_0@toc@l
4366 ; PWR6-NEXT: lvx 5, 0, 3
4367 ; PWR6-NEXT: addis 3, 2, .LCPI43_1@toc@ha
4368 ; PWR6-NEXT: addi 3, 3, .LCPI43_1@toc@l
4369 ; PWR6-NEXT: vspltisw 0, 2
4370 ; PWR6-NEXT: vsrw 4, 2, 4
4371 ; PWR6-NEXT: vand 4, 4, 5
4372 ; PWR6-NEXT: lvx 5, 0, 3
4373 ; PWR6-NEXT: vsubuwm 2, 2, 4
4374 ; PWR6-NEXT: vand 4, 2, 5
4375 ; PWR6-NEXT: vsrw 2, 2, 0
4376 ; PWR6-NEXT: vand 2, 2, 5
4377 ; PWR6-NEXT: vspltisw 5, 4
4378 ; PWR6-NEXT: vadduwm 2, 4, 2
4379 ; PWR6-NEXT: vsrw 4, 2, 5
4380 ; PWR6-NEXT: vspltisb 5, 15
4381 ; PWR6-NEXT: vadduwm 2, 2, 4
4382 ; PWR6-NEXT: vspltisb 4, 1
4383 ; PWR6-NEXT: vand 2, 2, 5
4384 ; PWR6-NEXT: vspltisw 5, -16
4385 ; PWR6-NEXT: vrlw 0, 4, 5
4386 ; PWR6-NEXT: vmulouh 4, 2, 4
4387 ; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
4388 ; PWR6-NEXT: vspltisw 3, 12
4389 ; PWR6-NEXT: vadduwm 3, 3, 3
4390 ; PWR6-NEXT: vslw 2, 2, 5
4391 ; PWR6-NEXT: vadduwm 2, 4, 2
4392 ; PWR6-NEXT: vsrw 2, 2, 3
4393 ; PWR6-NEXT: vspltisw 3, 3
4394 ; PWR6-NEXT: vcmpgtuw 2, 3, 2
4397 ; PWR7-LABEL: ult_3_v4i32:
4399 ; PWR7-NEXT: vspltisw 3, 1
4400 ; PWR7-NEXT: addis 3, 2, .LCPI43_0@toc@ha
4401 ; PWR7-NEXT: addi 3, 3, .LCPI43_0@toc@l
4402 ; PWR7-NEXT: vspltisw 4, 2
4403 ; PWR7-NEXT: lxvw4x 0, 0, 3
4404 ; PWR7-NEXT: addis 3, 2, .LCPI43_1@toc@ha
4405 ; PWR7-NEXT: vspltisw 5, -16
4406 ; PWR7-NEXT: vsrw 3, 2, 3
4407 ; PWR7-NEXT: addi 3, 3, .LCPI43_1@toc@l
4408 ; PWR7-NEXT: vspltisb 0, 15
4409 ; PWR7-NEXT: xxland 35, 35, 0
4410 ; PWR7-NEXT: lxvw4x 0, 0, 3
4411 ; PWR7-NEXT: vsubuwm 2, 2, 3
4412 ; PWR7-NEXT: vsrw 3, 2, 4
4413 ; PWR7-NEXT: xxland 34, 34, 0
4414 ; PWR7-NEXT: vspltisw 4, 4
4415 ; PWR7-NEXT: xxland 35, 35, 0
4416 ; PWR7-NEXT: vadduwm 2, 2, 3
4417 ; PWR7-NEXT: vsrw 3, 2, 4
4418 ; PWR7-NEXT: vspltisb 4, 1
4419 ; PWR7-NEXT: vrlw 1, 4, 5
4420 ; PWR7-NEXT: vadduwm 2, 2, 3
4421 ; PWR7-NEXT: xxlxor 35, 35, 35
4422 ; PWR7-NEXT: xxland 34, 34, 32
4423 ; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
4424 ; PWR7-NEXT: vmulouh 2, 2, 4
4425 ; PWR7-NEXT: vspltisw 4, 12
4426 ; PWR7-NEXT: vslw 3, 3, 5
4427 ; PWR7-NEXT: vadduwm 2, 2, 3
4428 ; PWR7-NEXT: vadduwm 3, 4, 4
4429 ; PWR7-NEXT: vsrw 2, 2, 3
4430 ; PWR7-NEXT: vspltisw 3, 3
4431 ; PWR7-NEXT: vcmpgtuw 2, 3, 2
4434 ; PWR8-LABEL: ult_3_v4i32:
4436 ; PWR8-NEXT: vspltisw 3, 3
4437 ; PWR8-NEXT: vpopcntw 2, 2
4438 ; PWR8-NEXT: vcmpgtuw 2, 3, 2
4441 ; PWR9-LABEL: ult_3_v4i32:
4443 ; PWR9-NEXT: vpopcntw 2, 2
4444 ; PWR9-NEXT: vspltisw 3, 3
4445 ; PWR9-NEXT: vcmpgtuw 2, 3, 2
4447 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
4448 %3 = icmp ult <4 x i32> %2, <i32 3, i32 3, i32 3, i32 3>
4449 %4 = sext <4 x i1> %3 to <4 x i32>
4453 define <4 x i32> @ugt_3_v4i32(<4 x i32> %0) {
4454 ; PWR5-LABEL: ugt_3_v4i32:
4456 ; PWR5-NEXT: addis 3, 2, .LCPI44_0@toc@ha
4457 ; PWR5-NEXT: vspltisw 4, 1
4458 ; PWR5-NEXT: vxor 3, 3, 3
4459 ; PWR5-NEXT: addi 3, 3, .LCPI44_0@toc@l
4460 ; PWR5-NEXT: lvx 5, 0, 3
4461 ; PWR5-NEXT: addis 3, 2, .LCPI44_1@toc@ha
4462 ; PWR5-NEXT: addi 3, 3, .LCPI44_1@toc@l
4463 ; PWR5-NEXT: vspltisw 0, 2
4464 ; PWR5-NEXT: vsrw 4, 2, 4
4465 ; PWR5-NEXT: vand 4, 4, 5
4466 ; PWR5-NEXT: lvx 5, 0, 3
4467 ; PWR5-NEXT: vsubuwm 2, 2, 4
4468 ; PWR5-NEXT: vand 4, 2, 5
4469 ; PWR5-NEXT: vsrw 2, 2, 0
4470 ; PWR5-NEXT: vand 2, 2, 5
4471 ; PWR5-NEXT: vspltisw 5, 4
4472 ; PWR5-NEXT: vadduwm 2, 4, 2
4473 ; PWR5-NEXT: vsrw 4, 2, 5
4474 ; PWR5-NEXT: vspltisb 5, 15
4475 ; PWR5-NEXT: vadduwm 2, 2, 4
4476 ; PWR5-NEXT: vspltisb 4, 1
4477 ; PWR5-NEXT: vand 2, 2, 5
4478 ; PWR5-NEXT: vspltisw 5, -16
4479 ; PWR5-NEXT: vrlw 0, 4, 5
4480 ; PWR5-NEXT: vmulouh 4, 2, 4
4481 ; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
4482 ; PWR5-NEXT: vspltisw 3, 12
4483 ; PWR5-NEXT: vadduwm 3, 3, 3
4484 ; PWR5-NEXT: vslw 2, 2, 5
4485 ; PWR5-NEXT: vadduwm 2, 4, 2
4486 ; PWR5-NEXT: vsrw 2, 2, 3
4487 ; PWR5-NEXT: vspltisw 3, 3
4488 ; PWR5-NEXT: vcmpgtuw 2, 2, 3
4491 ; PWR6-LABEL: ugt_3_v4i32:
4493 ; PWR6-NEXT: addis 3, 2, .LCPI44_0@toc@ha
4494 ; PWR6-NEXT: vspltisw 4, 1
4495 ; PWR6-NEXT: vxor 3, 3, 3
4496 ; PWR6-NEXT: addi 3, 3, .LCPI44_0@toc@l
4497 ; PWR6-NEXT: lvx 5, 0, 3
4498 ; PWR6-NEXT: addis 3, 2, .LCPI44_1@toc@ha
4499 ; PWR6-NEXT: addi 3, 3, .LCPI44_1@toc@l
4500 ; PWR6-NEXT: vspltisw 0, 2
4501 ; PWR6-NEXT: vsrw 4, 2, 4
4502 ; PWR6-NEXT: vand 4, 4, 5
4503 ; PWR6-NEXT: lvx 5, 0, 3
4504 ; PWR6-NEXT: vsubuwm 2, 2, 4
4505 ; PWR6-NEXT: vand 4, 2, 5
4506 ; PWR6-NEXT: vsrw 2, 2, 0
4507 ; PWR6-NEXT: vand 2, 2, 5
4508 ; PWR6-NEXT: vspltisw 5, 4
4509 ; PWR6-NEXT: vadduwm 2, 4, 2
4510 ; PWR6-NEXT: vsrw 4, 2, 5
4511 ; PWR6-NEXT: vspltisb 5, 15
4512 ; PWR6-NEXT: vadduwm 2, 2, 4
4513 ; PWR6-NEXT: vspltisb 4, 1
4514 ; PWR6-NEXT: vand 2, 2, 5
4515 ; PWR6-NEXT: vspltisw 5, -16
4516 ; PWR6-NEXT: vrlw 0, 4, 5
4517 ; PWR6-NEXT: vmulouh 4, 2, 4
4518 ; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
4519 ; PWR6-NEXT: vspltisw 3, 12
4520 ; PWR6-NEXT: vadduwm 3, 3, 3
4521 ; PWR6-NEXT: vslw 2, 2, 5
4522 ; PWR6-NEXT: vadduwm 2, 4, 2
4523 ; PWR6-NEXT: vsrw 2, 2, 3
4524 ; PWR6-NEXT: vspltisw 3, 3
4525 ; PWR6-NEXT: vcmpgtuw 2, 2, 3
4528 ; PWR7-LABEL: ugt_3_v4i32:
4530 ; PWR7-NEXT: vspltisw 3, 1
4531 ; PWR7-NEXT: addis 3, 2, .LCPI44_0@toc@ha
4532 ; PWR7-NEXT: addi 3, 3, .LCPI44_0@toc@l
4533 ; PWR7-NEXT: vspltisw 4, 2
4534 ; PWR7-NEXT: lxvw4x 0, 0, 3
4535 ; PWR7-NEXT: addis 3, 2, .LCPI44_1@toc@ha
4536 ; PWR7-NEXT: vspltisw 5, -16
4537 ; PWR7-NEXT: vsrw 3, 2, 3
4538 ; PWR7-NEXT: addi 3, 3, .LCPI44_1@toc@l
4539 ; PWR7-NEXT: vspltisb 0, 15
4540 ; PWR7-NEXT: xxland 35, 35, 0
4541 ; PWR7-NEXT: lxvw4x 0, 0, 3
4542 ; PWR7-NEXT: vsubuwm 2, 2, 3
4543 ; PWR7-NEXT: vsrw 3, 2, 4
4544 ; PWR7-NEXT: xxland 34, 34, 0
4545 ; PWR7-NEXT: vspltisw 4, 4
4546 ; PWR7-NEXT: xxland 35, 35, 0
4547 ; PWR7-NEXT: vadduwm 2, 2, 3
4548 ; PWR7-NEXT: vsrw 3, 2, 4
4549 ; PWR7-NEXT: vspltisb 4, 1
4550 ; PWR7-NEXT: vrlw 1, 4, 5
4551 ; PWR7-NEXT: vadduwm 2, 2, 3
4552 ; PWR7-NEXT: xxlxor 35, 35, 35
4553 ; PWR7-NEXT: xxland 34, 34, 32
4554 ; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
4555 ; PWR7-NEXT: vmulouh 2, 2, 4
4556 ; PWR7-NEXT: vspltisw 4, 12
4557 ; PWR7-NEXT: vslw 3, 3, 5
4558 ; PWR7-NEXT: vadduwm 2, 2, 3
4559 ; PWR7-NEXT: vadduwm 3, 4, 4
4560 ; PWR7-NEXT: vsrw 2, 2, 3
4561 ; PWR7-NEXT: vspltisw 3, 3
4562 ; PWR7-NEXT: vcmpgtuw 2, 2, 3
4565 ; PWR8-LABEL: ugt_3_v4i32:
4567 ; PWR8-NEXT: vspltisw 3, 3
4568 ; PWR8-NEXT: vpopcntw 2, 2
4569 ; PWR8-NEXT: vcmpgtuw 2, 2, 3
4572 ; PWR9-LABEL: ugt_3_v4i32:
4574 ; PWR9-NEXT: vpopcntw 2, 2
4575 ; PWR9-NEXT: vspltisw 3, 3
4576 ; PWR9-NEXT: vcmpgtuw 2, 2, 3
4578 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
4579 %3 = icmp ugt <4 x i32> %2, <i32 3, i32 3, i32 3, i32 3>
4580 %4 = sext <4 x i1> %3 to <4 x i32>
4584 define <4 x i32> @ult_4_v4i32(<4 x i32> %0) {
4585 ; PWR5-LABEL: ult_4_v4i32:
4587 ; PWR5-NEXT: addis 3, 2, .LCPI45_0@toc@ha
4588 ; PWR5-NEXT: vspltisw 4, 1
4589 ; PWR5-NEXT: vxor 3, 3, 3
4590 ; PWR5-NEXT: addi 3, 3, .LCPI45_0@toc@l
4591 ; PWR5-NEXT: lvx 5, 0, 3
4592 ; PWR5-NEXT: addis 3, 2, .LCPI45_1@toc@ha
4593 ; PWR5-NEXT: addi 3, 3, .LCPI45_1@toc@l
4594 ; PWR5-NEXT: vspltisw 0, 2
4595 ; PWR5-NEXT: vsrw 4, 2, 4
4596 ; PWR5-NEXT: vand 4, 4, 5
4597 ; PWR5-NEXT: lvx 5, 0, 3
4598 ; PWR5-NEXT: vsubuwm 2, 2, 4
4599 ; PWR5-NEXT: vand 4, 2, 5
4600 ; PWR5-NEXT: vsrw 2, 2, 0
4601 ; PWR5-NEXT: vspltisb 0, 15
4602 ; PWR5-NEXT: vand 2, 2, 5
4603 ; PWR5-NEXT: vspltisw 5, 4
4604 ; PWR5-NEXT: vadduwm 2, 4, 2
4605 ; PWR5-NEXT: vsrw 4, 2, 5
4606 ; PWR5-NEXT: vadduwm 2, 2, 4
4607 ; PWR5-NEXT: vspltisb 4, 1
4608 ; PWR5-NEXT: vand 2, 2, 0
4609 ; PWR5-NEXT: vspltisw 0, -16
4610 ; PWR5-NEXT: vrlw 1, 4, 0
4611 ; PWR5-NEXT: vmulouh 4, 2, 4
4612 ; PWR5-NEXT: vmsumuhm 2, 2, 1, 3
4613 ; PWR5-NEXT: vspltisw 3, 12
4614 ; PWR5-NEXT: vadduwm 3, 3, 3
4615 ; PWR5-NEXT: vslw 2, 2, 0
4616 ; PWR5-NEXT: vadduwm 2, 4, 2
4617 ; PWR5-NEXT: vsrw 2, 2, 3
4618 ; PWR5-NEXT: vcmpgtuw 2, 5, 2
4621 ; PWR6-LABEL: ult_4_v4i32:
4623 ; PWR6-NEXT: addis 3, 2, .LCPI45_0@toc@ha
4624 ; PWR6-NEXT: vspltisw 4, 1
4625 ; PWR6-NEXT: vxor 3, 3, 3
4626 ; PWR6-NEXT: addi 3, 3, .LCPI45_0@toc@l
4627 ; PWR6-NEXT: lvx 5, 0, 3
4628 ; PWR6-NEXT: addis 3, 2, .LCPI45_1@toc@ha
4629 ; PWR6-NEXT: addi 3, 3, .LCPI45_1@toc@l
4630 ; PWR6-NEXT: vspltisw 0, 2
4631 ; PWR6-NEXT: vsrw 4, 2, 4
4632 ; PWR6-NEXT: vand 4, 4, 5
4633 ; PWR6-NEXT: lvx 5, 0, 3
4634 ; PWR6-NEXT: vsubuwm 2, 2, 4
4635 ; PWR6-NEXT: vand 4, 2, 5
4636 ; PWR6-NEXT: vsrw 2, 2, 0
4637 ; PWR6-NEXT: vspltisb 0, 15
4638 ; PWR6-NEXT: vand 2, 2, 5
4639 ; PWR6-NEXT: vspltisw 5, 4
4640 ; PWR6-NEXT: vadduwm 2, 4, 2
4641 ; PWR6-NEXT: vsrw 4, 2, 5
4642 ; PWR6-NEXT: vadduwm 2, 2, 4
4643 ; PWR6-NEXT: vspltisb 4, 1
4644 ; PWR6-NEXT: vand 2, 2, 0
4645 ; PWR6-NEXT: vspltisw 0, -16
4646 ; PWR6-NEXT: vrlw 1, 4, 0
4647 ; PWR6-NEXT: vmulouh 4, 2, 4
4648 ; PWR6-NEXT: vmsumuhm 2, 2, 1, 3
4649 ; PWR6-NEXT: vspltisw 3, 12
4650 ; PWR6-NEXT: vadduwm 3, 3, 3
4651 ; PWR6-NEXT: vslw 2, 2, 0
4652 ; PWR6-NEXT: vadduwm 2, 4, 2
4653 ; PWR6-NEXT: vsrw 2, 2, 3
4654 ; PWR6-NEXT: vcmpgtuw 2, 5, 2
4657 ; PWR7-LABEL: ult_4_v4i32:
4659 ; PWR7-NEXT: vspltisw 3, 1
4660 ; PWR7-NEXT: addis 3, 2, .LCPI45_0@toc@ha
4661 ; PWR7-NEXT: addi 3, 3, .LCPI45_0@toc@l
4662 ; PWR7-NEXT: vspltisw 4, 2
4663 ; PWR7-NEXT: lxvw4x 0, 0, 3
4664 ; PWR7-NEXT: addis 3, 2, .LCPI45_1@toc@ha
4665 ; PWR7-NEXT: vspltisb 5, 1
4666 ; PWR7-NEXT: vsrw 3, 2, 3
4667 ; PWR7-NEXT: addi 3, 3, .LCPI45_1@toc@l
4668 ; PWR7-NEXT: vspltisw 0, -16
4669 ; PWR7-NEXT: vspltisb 1, 15
4670 ; PWR7-NEXT: vrlw 6, 5, 0
4671 ; PWR7-NEXT: xxland 35, 35, 0
4672 ; PWR7-NEXT: lxvw4x 0, 0, 3
4673 ; PWR7-NEXT: vsubuwm 2, 2, 3
4674 ; PWR7-NEXT: vsrw 3, 2, 4
4675 ; PWR7-NEXT: xxland 34, 34, 0
4676 ; PWR7-NEXT: vspltisw 4, 4
4677 ; PWR7-NEXT: xxland 35, 35, 0
4678 ; PWR7-NEXT: vadduwm 2, 2, 3
4679 ; PWR7-NEXT: vsrw 3, 2, 4
4680 ; PWR7-NEXT: vadduwm 2, 2, 3
4681 ; PWR7-NEXT: xxlxor 35, 35, 35
4682 ; PWR7-NEXT: xxland 34, 34, 33
4683 ; PWR7-NEXT: vmsumuhm 3, 2, 6, 3
4684 ; PWR7-NEXT: vmulouh 2, 2, 5
4685 ; PWR7-NEXT: vspltisw 5, 12
4686 ; PWR7-NEXT: vslw 3, 3, 0
4687 ; PWR7-NEXT: vadduwm 2, 2, 3
4688 ; PWR7-NEXT: vadduwm 3, 5, 5
4689 ; PWR7-NEXT: vsrw 2, 2, 3
4690 ; PWR7-NEXT: vcmpgtuw 2, 4, 2
4693 ; PWR8-LABEL: ult_4_v4i32:
4695 ; PWR8-NEXT: vspltisw 3, 4
4696 ; PWR8-NEXT: vpopcntw 2, 2
4697 ; PWR8-NEXT: vcmpgtuw 2, 3, 2
4700 ; PWR9-LABEL: ult_4_v4i32:
4702 ; PWR9-NEXT: vpopcntw 2, 2
4703 ; PWR9-NEXT: vspltisw 3, 4
4704 ; PWR9-NEXT: vcmpgtuw 2, 3, 2
4706 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
4707 %3 = icmp ult <4 x i32> %2, <i32 4, i32 4, i32 4, i32 4>
4708 %4 = sext <4 x i1> %3 to <4 x i32>
4712 define <4 x i32> @ugt_4_v4i32(<4 x i32> %0) {
4713 ; PWR5-LABEL: ugt_4_v4i32:
4715 ; PWR5-NEXT: addis 3, 2, .LCPI46_0@toc@ha
4716 ; PWR5-NEXT: vspltisw 4, 1
4717 ; PWR5-NEXT: vxor 3, 3, 3
4718 ; PWR5-NEXT: addi 3, 3, .LCPI46_0@toc@l
4719 ; PWR5-NEXT: lvx 5, 0, 3
4720 ; PWR5-NEXT: addis 3, 2, .LCPI46_1@toc@ha
4721 ; PWR5-NEXT: addi 3, 3, .LCPI46_1@toc@l
4722 ; PWR5-NEXT: vspltisw 0, 2
4723 ; PWR5-NEXT: vsrw 4, 2, 4
4724 ; PWR5-NEXT: vand 4, 4, 5
4725 ; PWR5-NEXT: lvx 5, 0, 3
4726 ; PWR5-NEXT: vsubuwm 2, 2, 4
4727 ; PWR5-NEXT: vand 4, 2, 5
4728 ; PWR5-NEXT: vsrw 2, 2, 0
4729 ; PWR5-NEXT: vspltisb 0, 15
4730 ; PWR5-NEXT: vand 2, 2, 5
4731 ; PWR5-NEXT: vspltisw 5, 4
4732 ; PWR5-NEXT: vadduwm 2, 4, 2
4733 ; PWR5-NEXT: vsrw 4, 2, 5
4734 ; PWR5-NEXT: vadduwm 2, 2, 4
4735 ; PWR5-NEXT: vspltisb 4, 1
4736 ; PWR5-NEXT: vand 2, 2, 0
4737 ; PWR5-NEXT: vspltisw 0, -16
4738 ; PWR5-NEXT: vrlw 1, 4, 0
4739 ; PWR5-NEXT: vmulouh 4, 2, 4
4740 ; PWR5-NEXT: vmsumuhm 2, 2, 1, 3
4741 ; PWR5-NEXT: vspltisw 3, 12
4742 ; PWR5-NEXT: vadduwm 3, 3, 3
4743 ; PWR5-NEXT: vslw 2, 2, 0
4744 ; PWR5-NEXT: vadduwm 2, 4, 2
4745 ; PWR5-NEXT: vsrw 2, 2, 3
4746 ; PWR5-NEXT: vcmpgtuw 2, 2, 5
4749 ; PWR6-LABEL: ugt_4_v4i32:
4751 ; PWR6-NEXT: addis 3, 2, .LCPI46_0@toc@ha
4752 ; PWR6-NEXT: vspltisw 4, 1
4753 ; PWR6-NEXT: vxor 3, 3, 3
4754 ; PWR6-NEXT: addi 3, 3, .LCPI46_0@toc@l
4755 ; PWR6-NEXT: lvx 5, 0, 3
4756 ; PWR6-NEXT: addis 3, 2, .LCPI46_1@toc@ha
4757 ; PWR6-NEXT: addi 3, 3, .LCPI46_1@toc@l
4758 ; PWR6-NEXT: vspltisw 0, 2
4759 ; PWR6-NEXT: vsrw 4, 2, 4
4760 ; PWR6-NEXT: vand 4, 4, 5
4761 ; PWR6-NEXT: lvx 5, 0, 3
4762 ; PWR6-NEXT: vsubuwm 2, 2, 4
4763 ; PWR6-NEXT: vand 4, 2, 5
4764 ; PWR6-NEXT: vsrw 2, 2, 0
4765 ; PWR6-NEXT: vspltisb 0, 15
4766 ; PWR6-NEXT: vand 2, 2, 5
4767 ; PWR6-NEXT: vspltisw 5, 4
4768 ; PWR6-NEXT: vadduwm 2, 4, 2
4769 ; PWR6-NEXT: vsrw 4, 2, 5
4770 ; PWR6-NEXT: vadduwm 2, 2, 4
4771 ; PWR6-NEXT: vspltisb 4, 1
4772 ; PWR6-NEXT: vand 2, 2, 0
4773 ; PWR6-NEXT: vspltisw 0, -16
4774 ; PWR6-NEXT: vrlw 1, 4, 0
4775 ; PWR6-NEXT: vmulouh 4, 2, 4
4776 ; PWR6-NEXT: vmsumuhm 2, 2, 1, 3
4777 ; PWR6-NEXT: vspltisw 3, 12
4778 ; PWR6-NEXT: vadduwm 3, 3, 3
4779 ; PWR6-NEXT: vslw 2, 2, 0
4780 ; PWR6-NEXT: vadduwm 2, 4, 2
4781 ; PWR6-NEXT: vsrw 2, 2, 3
4782 ; PWR6-NEXT: vcmpgtuw 2, 2, 5
4785 ; PWR7-LABEL: ugt_4_v4i32:
4787 ; PWR7-NEXT: vspltisw 3, 1
4788 ; PWR7-NEXT: addis 3, 2, .LCPI46_0@toc@ha
4789 ; PWR7-NEXT: addi 3, 3, .LCPI46_0@toc@l
4790 ; PWR7-NEXT: vspltisw 4, 2
4791 ; PWR7-NEXT: lxvw4x 0, 0, 3
4792 ; PWR7-NEXT: addis 3, 2, .LCPI46_1@toc@ha
4793 ; PWR7-NEXT: vspltisb 5, 1
4794 ; PWR7-NEXT: vsrw 3, 2, 3
4795 ; PWR7-NEXT: addi 3, 3, .LCPI46_1@toc@l
4796 ; PWR7-NEXT: vspltisw 0, -16
4797 ; PWR7-NEXT: vspltisb 1, 15
4798 ; PWR7-NEXT: vrlw 6, 5, 0
4799 ; PWR7-NEXT: xxland 35, 35, 0
4800 ; PWR7-NEXT: lxvw4x 0, 0, 3
4801 ; PWR7-NEXT: vsubuwm 2, 2, 3
4802 ; PWR7-NEXT: vsrw 3, 2, 4
4803 ; PWR7-NEXT: xxland 34, 34, 0
4804 ; PWR7-NEXT: vspltisw 4, 4
4805 ; PWR7-NEXT: xxland 35, 35, 0
4806 ; PWR7-NEXT: vadduwm 2, 2, 3
4807 ; PWR7-NEXT: vsrw 3, 2, 4
4808 ; PWR7-NEXT: vadduwm 2, 2, 3
4809 ; PWR7-NEXT: xxlxor 35, 35, 35
4810 ; PWR7-NEXT: xxland 34, 34, 33
4811 ; PWR7-NEXT: vmsumuhm 3, 2, 6, 3
4812 ; PWR7-NEXT: vmulouh 2, 2, 5
4813 ; PWR7-NEXT: vspltisw 5, 12
4814 ; PWR7-NEXT: vslw 3, 3, 0
4815 ; PWR7-NEXT: vadduwm 2, 2, 3
4816 ; PWR7-NEXT: vadduwm 3, 5, 5
4817 ; PWR7-NEXT: vsrw 2, 2, 3
4818 ; PWR7-NEXT: vcmpgtuw 2, 2, 4
4821 ; PWR8-LABEL: ugt_4_v4i32:
4823 ; PWR8-NEXT: vspltisw 3, 4
4824 ; PWR8-NEXT: vpopcntw 2, 2
4825 ; PWR8-NEXT: vcmpgtuw 2, 2, 3
4828 ; PWR9-LABEL: ugt_4_v4i32:
4830 ; PWR9-NEXT: vpopcntw 2, 2
4831 ; PWR9-NEXT: vspltisw 3, 4
4832 ; PWR9-NEXT: vcmpgtuw 2, 2, 3
4834 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
4835 %3 = icmp ugt <4 x i32> %2, <i32 4, i32 4, i32 4, i32 4>
4836 %4 = sext <4 x i1> %3 to <4 x i32>
4840 define <4 x i32> @ult_5_v4i32(<4 x i32> %0) {
4841 ; PWR5-LABEL: ult_5_v4i32:
4843 ; PWR5-NEXT: addis 3, 2, .LCPI47_0@toc@ha
4844 ; PWR5-NEXT: vspltisw 4, 1
4845 ; PWR5-NEXT: vxor 3, 3, 3
4846 ; PWR5-NEXT: addi 3, 3, .LCPI47_0@toc@l
4847 ; PWR5-NEXT: lvx 5, 0, 3
4848 ; PWR5-NEXT: addis 3, 2, .LCPI47_1@toc@ha
4849 ; PWR5-NEXT: addi 3, 3, .LCPI47_1@toc@l
4850 ; PWR5-NEXT: vspltisw 0, 2
4851 ; PWR5-NEXT: vsrw 4, 2, 4
4852 ; PWR5-NEXT: vand 4, 4, 5
4853 ; PWR5-NEXT: lvx 5, 0, 3
4854 ; PWR5-NEXT: vsubuwm 2, 2, 4
4855 ; PWR5-NEXT: vand 4, 2, 5
4856 ; PWR5-NEXT: vsrw 2, 2, 0
4857 ; PWR5-NEXT: vand 2, 2, 5
4858 ; PWR5-NEXT: vspltisw 5, 4
4859 ; PWR5-NEXT: vadduwm 2, 4, 2
4860 ; PWR5-NEXT: vsrw 4, 2, 5
4861 ; PWR5-NEXT: vspltisb 5, 15
4862 ; PWR5-NEXT: vadduwm 2, 2, 4
4863 ; PWR5-NEXT: vspltisb 4, 1
4864 ; PWR5-NEXT: vand 2, 2, 5
4865 ; PWR5-NEXT: vspltisw 5, -16
4866 ; PWR5-NEXT: vrlw 0, 4, 5
4867 ; PWR5-NEXT: vmulouh 4, 2, 4
4868 ; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
4869 ; PWR5-NEXT: vspltisw 3, 12
4870 ; PWR5-NEXT: vadduwm 3, 3, 3
4871 ; PWR5-NEXT: vslw 2, 2, 5
4872 ; PWR5-NEXT: vadduwm 2, 4, 2
4873 ; PWR5-NEXT: vsrw 2, 2, 3
4874 ; PWR5-NEXT: vspltisw 3, 5
4875 ; PWR5-NEXT: vcmpgtuw 2, 3, 2
4878 ; PWR6-LABEL: ult_5_v4i32:
4880 ; PWR6-NEXT: addis 3, 2, .LCPI47_0@toc@ha
4881 ; PWR6-NEXT: vspltisw 4, 1
4882 ; PWR6-NEXT: vxor 3, 3, 3
4883 ; PWR6-NEXT: addi 3, 3, .LCPI47_0@toc@l
4884 ; PWR6-NEXT: lvx 5, 0, 3
4885 ; PWR6-NEXT: addis 3, 2, .LCPI47_1@toc@ha
4886 ; PWR6-NEXT: addi 3, 3, .LCPI47_1@toc@l
4887 ; PWR6-NEXT: vspltisw 0, 2
4888 ; PWR6-NEXT: vsrw 4, 2, 4
4889 ; PWR6-NEXT: vand 4, 4, 5
4890 ; PWR6-NEXT: lvx 5, 0, 3
4891 ; PWR6-NEXT: vsubuwm 2, 2, 4
4892 ; PWR6-NEXT: vand 4, 2, 5
4893 ; PWR6-NEXT: vsrw 2, 2, 0
4894 ; PWR6-NEXT: vand 2, 2, 5
4895 ; PWR6-NEXT: vspltisw 5, 4
4896 ; PWR6-NEXT: vadduwm 2, 4, 2
4897 ; PWR6-NEXT: vsrw 4, 2, 5
4898 ; PWR6-NEXT: vspltisb 5, 15
4899 ; PWR6-NEXT: vadduwm 2, 2, 4
4900 ; PWR6-NEXT: vspltisb 4, 1
4901 ; PWR6-NEXT: vand 2, 2, 5
4902 ; PWR6-NEXT: vspltisw 5, -16
4903 ; PWR6-NEXT: vrlw 0, 4, 5
4904 ; PWR6-NEXT: vmulouh 4, 2, 4
4905 ; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
4906 ; PWR6-NEXT: vspltisw 3, 12
4907 ; PWR6-NEXT: vadduwm 3, 3, 3
4908 ; PWR6-NEXT: vslw 2, 2, 5
4909 ; PWR6-NEXT: vadduwm 2, 4, 2
4910 ; PWR6-NEXT: vsrw 2, 2, 3
4911 ; PWR6-NEXT: vspltisw 3, 5
4912 ; PWR6-NEXT: vcmpgtuw 2, 3, 2
4915 ; PWR7-LABEL: ult_5_v4i32:
4917 ; PWR7-NEXT: vspltisw 3, 1
4918 ; PWR7-NEXT: addis 3, 2, .LCPI47_0@toc@ha
4919 ; PWR7-NEXT: addi 3, 3, .LCPI47_0@toc@l
4920 ; PWR7-NEXT: vspltisw 4, 2
4921 ; PWR7-NEXT: lxvw4x 0, 0, 3
4922 ; PWR7-NEXT: addis 3, 2, .LCPI47_1@toc@ha
4923 ; PWR7-NEXT: vspltisw 5, -16
4924 ; PWR7-NEXT: vsrw 3, 2, 3
4925 ; PWR7-NEXT: addi 3, 3, .LCPI47_1@toc@l
4926 ; PWR7-NEXT: vspltisb 0, 15
4927 ; PWR7-NEXT: xxland 35, 35, 0
4928 ; PWR7-NEXT: lxvw4x 0, 0, 3
4929 ; PWR7-NEXT: vsubuwm 2, 2, 3
4930 ; PWR7-NEXT: vsrw 3, 2, 4
4931 ; PWR7-NEXT: xxland 34, 34, 0
4932 ; PWR7-NEXT: vspltisw 4, 4
4933 ; PWR7-NEXT: xxland 35, 35, 0
4934 ; PWR7-NEXT: vadduwm 2, 2, 3
4935 ; PWR7-NEXT: vsrw 3, 2, 4
4936 ; PWR7-NEXT: vspltisb 4, 1
4937 ; PWR7-NEXT: vrlw 1, 4, 5
4938 ; PWR7-NEXT: vadduwm 2, 2, 3
4939 ; PWR7-NEXT: xxlxor 35, 35, 35
4940 ; PWR7-NEXT: xxland 34, 34, 32
4941 ; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
4942 ; PWR7-NEXT: vmulouh 2, 2, 4
4943 ; PWR7-NEXT: vspltisw 4, 12
4944 ; PWR7-NEXT: vslw 3, 3, 5
4945 ; PWR7-NEXT: vadduwm 2, 2, 3
4946 ; PWR7-NEXT: vadduwm 3, 4, 4
4947 ; PWR7-NEXT: vsrw 2, 2, 3
4948 ; PWR7-NEXT: vspltisw 3, 5
4949 ; PWR7-NEXT: vcmpgtuw 2, 3, 2
4952 ; PWR8-LABEL: ult_5_v4i32:
4954 ; PWR8-NEXT: vspltisw 3, 5
4955 ; PWR8-NEXT: vpopcntw 2, 2
4956 ; PWR8-NEXT: vcmpgtuw 2, 3, 2
4959 ; PWR9-LABEL: ult_5_v4i32:
4961 ; PWR9-NEXT: vpopcntw 2, 2
4962 ; PWR9-NEXT: vspltisw 3, 5
4963 ; PWR9-NEXT: vcmpgtuw 2, 3, 2
4965 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
4966 %3 = icmp ult <4 x i32> %2, <i32 5, i32 5, i32 5, i32 5>
4967 %4 = sext <4 x i1> %3 to <4 x i32>
4971 define <4 x i32> @ugt_5_v4i32(<4 x i32> %0) {
4972 ; PWR5-LABEL: ugt_5_v4i32:
4974 ; PWR5-NEXT: addis 3, 2, .LCPI48_0@toc@ha
4975 ; PWR5-NEXT: vspltisw 4, 1
4976 ; PWR5-NEXT: vxor 3, 3, 3
4977 ; PWR5-NEXT: addi 3, 3, .LCPI48_0@toc@l
4978 ; PWR5-NEXT: lvx 5, 0, 3
4979 ; PWR5-NEXT: addis 3, 2, .LCPI48_1@toc@ha
4980 ; PWR5-NEXT: addi 3, 3, .LCPI48_1@toc@l
4981 ; PWR5-NEXT: vspltisw 0, 2
4982 ; PWR5-NEXT: vsrw 4, 2, 4
4983 ; PWR5-NEXT: vand 4, 4, 5
4984 ; PWR5-NEXT: lvx 5, 0, 3
4985 ; PWR5-NEXT: vsubuwm 2, 2, 4
4986 ; PWR5-NEXT: vand 4, 2, 5
4987 ; PWR5-NEXT: vsrw 2, 2, 0
4988 ; PWR5-NEXT: vand 2, 2, 5
4989 ; PWR5-NEXT: vspltisw 5, 4
4990 ; PWR5-NEXT: vadduwm 2, 4, 2
4991 ; PWR5-NEXT: vsrw 4, 2, 5
4992 ; PWR5-NEXT: vspltisb 5, 15
4993 ; PWR5-NEXT: vadduwm 2, 2, 4
4994 ; PWR5-NEXT: vspltisb 4, 1
4995 ; PWR5-NEXT: vand 2, 2, 5
4996 ; PWR5-NEXT: vspltisw 5, -16
4997 ; PWR5-NEXT: vrlw 0, 4, 5
4998 ; PWR5-NEXT: vmulouh 4, 2, 4
4999 ; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
5000 ; PWR5-NEXT: vspltisw 3, 12
5001 ; PWR5-NEXT: vadduwm 3, 3, 3
5002 ; PWR5-NEXT: vslw 2, 2, 5
5003 ; PWR5-NEXT: vadduwm 2, 4, 2
5004 ; PWR5-NEXT: vsrw 2, 2, 3
5005 ; PWR5-NEXT: vspltisw 3, 5
5006 ; PWR5-NEXT: vcmpgtuw 2, 2, 3
5009 ; PWR6-LABEL: ugt_5_v4i32:
5011 ; PWR6-NEXT: addis 3, 2, .LCPI48_0@toc@ha
5012 ; PWR6-NEXT: vspltisw 4, 1
5013 ; PWR6-NEXT: vxor 3, 3, 3
5014 ; PWR6-NEXT: addi 3, 3, .LCPI48_0@toc@l
5015 ; PWR6-NEXT: lvx 5, 0, 3
5016 ; PWR6-NEXT: addis 3, 2, .LCPI48_1@toc@ha
5017 ; PWR6-NEXT: addi 3, 3, .LCPI48_1@toc@l
5018 ; PWR6-NEXT: vspltisw 0, 2
5019 ; PWR6-NEXT: vsrw 4, 2, 4
5020 ; PWR6-NEXT: vand 4, 4, 5
5021 ; PWR6-NEXT: lvx 5, 0, 3
5022 ; PWR6-NEXT: vsubuwm 2, 2, 4
5023 ; PWR6-NEXT: vand 4, 2, 5
5024 ; PWR6-NEXT: vsrw 2, 2, 0
5025 ; PWR6-NEXT: vand 2, 2, 5
5026 ; PWR6-NEXT: vspltisw 5, 4
5027 ; PWR6-NEXT: vadduwm 2, 4, 2
5028 ; PWR6-NEXT: vsrw 4, 2, 5
5029 ; PWR6-NEXT: vspltisb 5, 15
5030 ; PWR6-NEXT: vadduwm 2, 2, 4
5031 ; PWR6-NEXT: vspltisb 4, 1
5032 ; PWR6-NEXT: vand 2, 2, 5
5033 ; PWR6-NEXT: vspltisw 5, -16
5034 ; PWR6-NEXT: vrlw 0, 4, 5
5035 ; PWR6-NEXT: vmulouh 4, 2, 4
5036 ; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
5037 ; PWR6-NEXT: vspltisw 3, 12
5038 ; PWR6-NEXT: vadduwm 3, 3, 3
5039 ; PWR6-NEXT: vslw 2, 2, 5
5040 ; PWR6-NEXT: vadduwm 2, 4, 2
5041 ; PWR6-NEXT: vsrw 2, 2, 3
5042 ; PWR6-NEXT: vspltisw 3, 5
5043 ; PWR6-NEXT: vcmpgtuw 2, 2, 3
5046 ; PWR7-LABEL: ugt_5_v4i32:
5048 ; PWR7-NEXT: vspltisw 3, 1
5049 ; PWR7-NEXT: addis 3, 2, .LCPI48_0@toc@ha
5050 ; PWR7-NEXT: addi 3, 3, .LCPI48_0@toc@l
5051 ; PWR7-NEXT: vspltisw 4, 2
5052 ; PWR7-NEXT: lxvw4x 0, 0, 3
5053 ; PWR7-NEXT: addis 3, 2, .LCPI48_1@toc@ha
5054 ; PWR7-NEXT: vspltisw 5, -16
5055 ; PWR7-NEXT: vsrw 3, 2, 3
5056 ; PWR7-NEXT: addi 3, 3, .LCPI48_1@toc@l
5057 ; PWR7-NEXT: vspltisb 0, 15
5058 ; PWR7-NEXT: xxland 35, 35, 0
5059 ; PWR7-NEXT: lxvw4x 0, 0, 3
5060 ; PWR7-NEXT: vsubuwm 2, 2, 3
5061 ; PWR7-NEXT: vsrw 3, 2, 4
5062 ; PWR7-NEXT: xxland 34, 34, 0
5063 ; PWR7-NEXT: vspltisw 4, 4
5064 ; PWR7-NEXT: xxland 35, 35, 0
5065 ; PWR7-NEXT: vadduwm 2, 2, 3
5066 ; PWR7-NEXT: vsrw 3, 2, 4
5067 ; PWR7-NEXT: vspltisb 4, 1
5068 ; PWR7-NEXT: vrlw 1, 4, 5
5069 ; PWR7-NEXT: vadduwm 2, 2, 3
5070 ; PWR7-NEXT: xxlxor 35, 35, 35
5071 ; PWR7-NEXT: xxland 34, 34, 32
5072 ; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
5073 ; PWR7-NEXT: vmulouh 2, 2, 4
5074 ; PWR7-NEXT: vspltisw 4, 12
5075 ; PWR7-NEXT: vslw 3, 3, 5
5076 ; PWR7-NEXT: vadduwm 2, 2, 3
5077 ; PWR7-NEXT: vadduwm 3, 4, 4
5078 ; PWR7-NEXT: vsrw 2, 2, 3
5079 ; PWR7-NEXT: vspltisw 3, 5
5080 ; PWR7-NEXT: vcmpgtuw 2, 2, 3
5083 ; PWR8-LABEL: ugt_5_v4i32:
5085 ; PWR8-NEXT: vspltisw 3, 5
5086 ; PWR8-NEXT: vpopcntw 2, 2
5087 ; PWR8-NEXT: vcmpgtuw 2, 2, 3
5090 ; PWR9-LABEL: ugt_5_v4i32:
5092 ; PWR9-NEXT: vpopcntw 2, 2
5093 ; PWR9-NEXT: vspltisw 3, 5
5094 ; PWR9-NEXT: vcmpgtuw 2, 2, 3
5096 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
5097 %3 = icmp ugt <4 x i32> %2, <i32 5, i32 5, i32 5, i32 5>
5098 %4 = sext <4 x i1> %3 to <4 x i32>
5102 define <4 x i32> @ult_6_v4i32(<4 x i32> %0) {
5103 ; PWR5-LABEL: ult_6_v4i32:
5105 ; PWR5-NEXT: addis 3, 2, .LCPI49_0@toc@ha
5106 ; PWR5-NEXT: vspltisw 4, 1
5107 ; PWR5-NEXT: vxor 3, 3, 3
5108 ; PWR5-NEXT: addi 3, 3, .LCPI49_0@toc@l
5109 ; PWR5-NEXT: lvx 5, 0, 3
5110 ; PWR5-NEXT: addis 3, 2, .LCPI49_1@toc@ha
5111 ; PWR5-NEXT: addi 3, 3, .LCPI49_1@toc@l
5112 ; PWR5-NEXT: vspltisw 0, 2
5113 ; PWR5-NEXT: vsrw 4, 2, 4
5114 ; PWR5-NEXT: vand 4, 4, 5
5115 ; PWR5-NEXT: lvx 5, 0, 3
5116 ; PWR5-NEXT: vsubuwm 2, 2, 4
5117 ; PWR5-NEXT: vand 4, 2, 5
5118 ; PWR5-NEXT: vsrw 2, 2, 0
5119 ; PWR5-NEXT: vand 2, 2, 5
5120 ; PWR5-NEXT: vspltisw 5, 4
5121 ; PWR5-NEXT: vadduwm 2, 4, 2
5122 ; PWR5-NEXT: vsrw 4, 2, 5
5123 ; PWR5-NEXT: vspltisb 5, 15
5124 ; PWR5-NEXT: vadduwm 2, 2, 4
5125 ; PWR5-NEXT: vspltisb 4, 1
5126 ; PWR5-NEXT: vand 2, 2, 5
5127 ; PWR5-NEXT: vspltisw 5, -16
5128 ; PWR5-NEXT: vrlw 0, 4, 5
5129 ; PWR5-NEXT: vmulouh 4, 2, 4
5130 ; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
5131 ; PWR5-NEXT: vspltisw 3, 12
5132 ; PWR5-NEXT: vadduwm 3, 3, 3
5133 ; PWR5-NEXT: vslw 2, 2, 5
5134 ; PWR5-NEXT: vadduwm 2, 4, 2
5135 ; PWR5-NEXT: vsrw 2, 2, 3
5136 ; PWR5-NEXT: vspltisw 3, 6
5137 ; PWR5-NEXT: vcmpgtuw 2, 3, 2
5140 ; PWR6-LABEL: ult_6_v4i32:
5142 ; PWR6-NEXT: addis 3, 2, .LCPI49_0@toc@ha
5143 ; PWR6-NEXT: vspltisw 4, 1
5144 ; PWR6-NEXT: vxor 3, 3, 3
5145 ; PWR6-NEXT: addi 3, 3, .LCPI49_0@toc@l
5146 ; PWR6-NEXT: lvx 5, 0, 3
5147 ; PWR6-NEXT: addis 3, 2, .LCPI49_1@toc@ha
5148 ; PWR6-NEXT: addi 3, 3, .LCPI49_1@toc@l
5149 ; PWR6-NEXT: vspltisw 0, 2
5150 ; PWR6-NEXT: vsrw 4, 2, 4
5151 ; PWR6-NEXT: vand 4, 4, 5
5152 ; PWR6-NEXT: lvx 5, 0, 3
5153 ; PWR6-NEXT: vsubuwm 2, 2, 4
5154 ; PWR6-NEXT: vand 4, 2, 5
5155 ; PWR6-NEXT: vsrw 2, 2, 0
5156 ; PWR6-NEXT: vand 2, 2, 5
5157 ; PWR6-NEXT: vspltisw 5, 4
5158 ; PWR6-NEXT: vadduwm 2, 4, 2
5159 ; PWR6-NEXT: vsrw 4, 2, 5
5160 ; PWR6-NEXT: vspltisb 5, 15
5161 ; PWR6-NEXT: vadduwm 2, 2, 4
5162 ; PWR6-NEXT: vspltisb 4, 1
5163 ; PWR6-NEXT: vand 2, 2, 5
5164 ; PWR6-NEXT: vspltisw 5, -16
5165 ; PWR6-NEXT: vrlw 0, 4, 5
5166 ; PWR6-NEXT: vmulouh 4, 2, 4
5167 ; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
5168 ; PWR6-NEXT: vspltisw 3, 12
5169 ; PWR6-NEXT: vadduwm 3, 3, 3
5170 ; PWR6-NEXT: vslw 2, 2, 5
5171 ; PWR6-NEXT: vadduwm 2, 4, 2
5172 ; PWR6-NEXT: vsrw 2, 2, 3
5173 ; PWR6-NEXT: vspltisw 3, 6
5174 ; PWR6-NEXT: vcmpgtuw 2, 3, 2
5177 ; PWR7-LABEL: ult_6_v4i32:
5179 ; PWR7-NEXT: vspltisw 3, 1
5180 ; PWR7-NEXT: addis 3, 2, .LCPI49_0@toc@ha
5181 ; PWR7-NEXT: addi 3, 3, .LCPI49_0@toc@l
5182 ; PWR7-NEXT: vspltisw 4, 2
5183 ; PWR7-NEXT: lxvw4x 0, 0, 3
5184 ; PWR7-NEXT: addis 3, 2, .LCPI49_1@toc@ha
5185 ; PWR7-NEXT: vspltisw 5, -16
5186 ; PWR7-NEXT: vsrw 3, 2, 3
5187 ; PWR7-NEXT: addi 3, 3, .LCPI49_1@toc@l
5188 ; PWR7-NEXT: vspltisb 0, 15
5189 ; PWR7-NEXT: xxland 35, 35, 0
5190 ; PWR7-NEXT: lxvw4x 0, 0, 3
5191 ; PWR7-NEXT: vsubuwm 2, 2, 3
5192 ; PWR7-NEXT: vsrw 3, 2, 4
5193 ; PWR7-NEXT: xxland 34, 34, 0
5194 ; PWR7-NEXT: vspltisw 4, 4
5195 ; PWR7-NEXT: xxland 35, 35, 0
5196 ; PWR7-NEXT: vadduwm 2, 2, 3
5197 ; PWR7-NEXT: vsrw 3, 2, 4
5198 ; PWR7-NEXT: vspltisb 4, 1
5199 ; PWR7-NEXT: vrlw 1, 4, 5
5200 ; PWR7-NEXT: vadduwm 2, 2, 3
5201 ; PWR7-NEXT: xxlxor 35, 35, 35
5202 ; PWR7-NEXT: xxland 34, 34, 32
5203 ; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
5204 ; PWR7-NEXT: vmulouh 2, 2, 4
5205 ; PWR7-NEXT: vspltisw 4, 12
5206 ; PWR7-NEXT: vslw 3, 3, 5
5207 ; PWR7-NEXT: vadduwm 2, 2, 3
5208 ; PWR7-NEXT: vadduwm 3, 4, 4
5209 ; PWR7-NEXT: vsrw 2, 2, 3
5210 ; PWR7-NEXT: vspltisw 3, 6
5211 ; PWR7-NEXT: vcmpgtuw 2, 3, 2
5214 ; PWR8-LABEL: ult_6_v4i32:
5216 ; PWR8-NEXT: vspltisw 3, 6
5217 ; PWR8-NEXT: vpopcntw 2, 2
5218 ; PWR8-NEXT: vcmpgtuw 2, 3, 2
5221 ; PWR9-LABEL: ult_6_v4i32:
5223 ; PWR9-NEXT: vpopcntw 2, 2
5224 ; PWR9-NEXT: vspltisw 3, 6
5225 ; PWR9-NEXT: vcmpgtuw 2, 3, 2
5227 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
5228 %3 = icmp ult <4 x i32> %2, <i32 6, i32 6, i32 6, i32 6>
5229 %4 = sext <4 x i1> %3 to <4 x i32>
5233 define <4 x i32> @ugt_6_v4i32(<4 x i32> %0) {
5234 ; PWR5-LABEL: ugt_6_v4i32:
5236 ; PWR5-NEXT: addis 3, 2, .LCPI50_0@toc@ha
5237 ; PWR5-NEXT: vspltisw 4, 1
5238 ; PWR5-NEXT: vxor 3, 3, 3
5239 ; PWR5-NEXT: addi 3, 3, .LCPI50_0@toc@l
5240 ; PWR5-NEXT: lvx 5, 0, 3
5241 ; PWR5-NEXT: addis 3, 2, .LCPI50_1@toc@ha
5242 ; PWR5-NEXT: addi 3, 3, .LCPI50_1@toc@l
5243 ; PWR5-NEXT: vspltisw 0, 2
5244 ; PWR5-NEXT: vsrw 4, 2, 4
5245 ; PWR5-NEXT: vand 4, 4, 5
5246 ; PWR5-NEXT: lvx 5, 0, 3
5247 ; PWR5-NEXT: vsubuwm 2, 2, 4
5248 ; PWR5-NEXT: vand 4, 2, 5
5249 ; PWR5-NEXT: vsrw 2, 2, 0
5250 ; PWR5-NEXT: vand 2, 2, 5
5251 ; PWR5-NEXT: vspltisw 5, 4
5252 ; PWR5-NEXT: vadduwm 2, 4, 2
5253 ; PWR5-NEXT: vsrw 4, 2, 5
5254 ; PWR5-NEXT: vspltisb 5, 15
5255 ; PWR5-NEXT: vadduwm 2, 2, 4
5256 ; PWR5-NEXT: vspltisb 4, 1
5257 ; PWR5-NEXT: vand 2, 2, 5
5258 ; PWR5-NEXT: vspltisw 5, -16
5259 ; PWR5-NEXT: vrlw 0, 4, 5
5260 ; PWR5-NEXT: vmulouh 4, 2, 4
5261 ; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
5262 ; PWR5-NEXT: vspltisw 3, 12
5263 ; PWR5-NEXT: vadduwm 3, 3, 3
5264 ; PWR5-NEXT: vslw 2, 2, 5
5265 ; PWR5-NEXT: vadduwm 2, 4, 2
5266 ; PWR5-NEXT: vsrw 2, 2, 3
5267 ; PWR5-NEXT: vspltisw 3, 6
5268 ; PWR5-NEXT: vcmpgtuw 2, 2, 3
5271 ; PWR6-LABEL: ugt_6_v4i32:
5273 ; PWR6-NEXT: addis 3, 2, .LCPI50_0@toc@ha
5274 ; PWR6-NEXT: vspltisw 4, 1
5275 ; PWR6-NEXT: vxor 3, 3, 3
5276 ; PWR6-NEXT: addi 3, 3, .LCPI50_0@toc@l
5277 ; PWR6-NEXT: lvx 5, 0, 3
5278 ; PWR6-NEXT: addis 3, 2, .LCPI50_1@toc@ha
5279 ; PWR6-NEXT: addi 3, 3, .LCPI50_1@toc@l
5280 ; PWR6-NEXT: vspltisw 0, 2
5281 ; PWR6-NEXT: vsrw 4, 2, 4
5282 ; PWR6-NEXT: vand 4, 4, 5
5283 ; PWR6-NEXT: lvx 5, 0, 3
5284 ; PWR6-NEXT: vsubuwm 2, 2, 4
5285 ; PWR6-NEXT: vand 4, 2, 5
5286 ; PWR6-NEXT: vsrw 2, 2, 0
5287 ; PWR6-NEXT: vand 2, 2, 5
5288 ; PWR6-NEXT: vspltisw 5, 4
5289 ; PWR6-NEXT: vadduwm 2, 4, 2
5290 ; PWR6-NEXT: vsrw 4, 2, 5
5291 ; PWR6-NEXT: vspltisb 5, 15
5292 ; PWR6-NEXT: vadduwm 2, 2, 4
5293 ; PWR6-NEXT: vspltisb 4, 1
5294 ; PWR6-NEXT: vand 2, 2, 5
5295 ; PWR6-NEXT: vspltisw 5, -16
5296 ; PWR6-NEXT: vrlw 0, 4, 5
5297 ; PWR6-NEXT: vmulouh 4, 2, 4
5298 ; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
5299 ; PWR6-NEXT: vspltisw 3, 12
5300 ; PWR6-NEXT: vadduwm 3, 3, 3
5301 ; PWR6-NEXT: vslw 2, 2, 5
5302 ; PWR6-NEXT: vadduwm 2, 4, 2
5303 ; PWR6-NEXT: vsrw 2, 2, 3
5304 ; PWR6-NEXT: vspltisw 3, 6
5305 ; PWR6-NEXT: vcmpgtuw 2, 2, 3
5308 ; PWR7-LABEL: ugt_6_v4i32:
5310 ; PWR7-NEXT: vspltisw 3, 1
5311 ; PWR7-NEXT: addis 3, 2, .LCPI50_0@toc@ha
5312 ; PWR7-NEXT: addi 3, 3, .LCPI50_0@toc@l
5313 ; PWR7-NEXT: vspltisw 4, 2
5314 ; PWR7-NEXT: lxvw4x 0, 0, 3
5315 ; PWR7-NEXT: addis 3, 2, .LCPI50_1@toc@ha
5316 ; PWR7-NEXT: vspltisw 5, -16
5317 ; PWR7-NEXT: vsrw 3, 2, 3
5318 ; PWR7-NEXT: addi 3, 3, .LCPI50_1@toc@l
5319 ; PWR7-NEXT: vspltisb 0, 15
5320 ; PWR7-NEXT: xxland 35, 35, 0
5321 ; PWR7-NEXT: lxvw4x 0, 0, 3
5322 ; PWR7-NEXT: vsubuwm 2, 2, 3
5323 ; PWR7-NEXT: vsrw 3, 2, 4
5324 ; PWR7-NEXT: xxland 34, 34, 0
5325 ; PWR7-NEXT: vspltisw 4, 4
5326 ; PWR7-NEXT: xxland 35, 35, 0
5327 ; PWR7-NEXT: vadduwm 2, 2, 3
5328 ; PWR7-NEXT: vsrw 3, 2, 4
5329 ; PWR7-NEXT: vspltisb 4, 1
5330 ; PWR7-NEXT: vrlw 1, 4, 5
5331 ; PWR7-NEXT: vadduwm 2, 2, 3
5332 ; PWR7-NEXT: xxlxor 35, 35, 35
5333 ; PWR7-NEXT: xxland 34, 34, 32
5334 ; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
5335 ; PWR7-NEXT: vmulouh 2, 2, 4
5336 ; PWR7-NEXT: vspltisw 4, 12
5337 ; PWR7-NEXT: vslw 3, 3, 5
5338 ; PWR7-NEXT: vadduwm 2, 2, 3
5339 ; PWR7-NEXT: vadduwm 3, 4, 4
5340 ; PWR7-NEXT: vsrw 2, 2, 3
5341 ; PWR7-NEXT: vspltisw 3, 6
5342 ; PWR7-NEXT: vcmpgtuw 2, 2, 3
5345 ; PWR8-LABEL: ugt_6_v4i32:
5347 ; PWR8-NEXT: vspltisw 3, 6
5348 ; PWR8-NEXT: vpopcntw 2, 2
5349 ; PWR8-NEXT: vcmpgtuw 2, 2, 3
5352 ; PWR9-LABEL: ugt_6_v4i32:
5354 ; PWR9-NEXT: vpopcntw 2, 2
5355 ; PWR9-NEXT: vspltisw 3, 6
5356 ; PWR9-NEXT: vcmpgtuw 2, 2, 3
5358 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
5359 %3 = icmp ugt <4 x i32> %2, <i32 6, i32 6, i32 6, i32 6>
5360 %4 = sext <4 x i1> %3 to <4 x i32>
5364 define <4 x i32> @ult_7_v4i32(<4 x i32> %0) {
5365 ; PWR5-LABEL: ult_7_v4i32:
5367 ; PWR5-NEXT: addis 3, 2, .LCPI51_0@toc@ha
5368 ; PWR5-NEXT: vspltisw 4, 1
5369 ; PWR5-NEXT: vxor 3, 3, 3
5370 ; PWR5-NEXT: addi 3, 3, .LCPI51_0@toc@l
5371 ; PWR5-NEXT: lvx 5, 0, 3
5372 ; PWR5-NEXT: addis 3, 2, .LCPI51_1@toc@ha
5373 ; PWR5-NEXT: addi 3, 3, .LCPI51_1@toc@l
5374 ; PWR5-NEXT: vspltisw 0, 2
5375 ; PWR5-NEXT: vsrw 4, 2, 4
5376 ; PWR5-NEXT: vand 4, 4, 5
5377 ; PWR5-NEXT: lvx 5, 0, 3
5378 ; PWR5-NEXT: vsubuwm 2, 2, 4
5379 ; PWR5-NEXT: vand 4, 2, 5
5380 ; PWR5-NEXT: vsrw 2, 2, 0
5381 ; PWR5-NEXT: vand 2, 2, 5
5382 ; PWR5-NEXT: vspltisw 5, 4
5383 ; PWR5-NEXT: vadduwm 2, 4, 2
5384 ; PWR5-NEXT: vsrw 4, 2, 5
5385 ; PWR5-NEXT: vspltisb 5, 15
5386 ; PWR5-NEXT: vadduwm 2, 2, 4
5387 ; PWR5-NEXT: vspltisb 4, 1
5388 ; PWR5-NEXT: vand 2, 2, 5
5389 ; PWR5-NEXT: vspltisw 5, -16
5390 ; PWR5-NEXT: vrlw 0, 4, 5
5391 ; PWR5-NEXT: vmulouh 4, 2, 4
5392 ; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
5393 ; PWR5-NEXT: vspltisw 3, 12
5394 ; PWR5-NEXT: vadduwm 3, 3, 3
5395 ; PWR5-NEXT: vslw 2, 2, 5
5396 ; PWR5-NEXT: vadduwm 2, 4, 2
5397 ; PWR5-NEXT: vsrw 2, 2, 3
5398 ; PWR5-NEXT: vspltisw 3, 7
5399 ; PWR5-NEXT: vcmpgtuw 2, 3, 2
5402 ; PWR6-LABEL: ult_7_v4i32:
5404 ; PWR6-NEXT: addis 3, 2, .LCPI51_0@toc@ha
5405 ; PWR6-NEXT: vspltisw 4, 1
5406 ; PWR6-NEXT: vxor 3, 3, 3
5407 ; PWR6-NEXT: addi 3, 3, .LCPI51_0@toc@l
5408 ; PWR6-NEXT: lvx 5, 0, 3
5409 ; PWR6-NEXT: addis 3, 2, .LCPI51_1@toc@ha
5410 ; PWR6-NEXT: addi 3, 3, .LCPI51_1@toc@l
5411 ; PWR6-NEXT: vspltisw 0, 2
5412 ; PWR6-NEXT: vsrw 4, 2, 4
5413 ; PWR6-NEXT: vand 4, 4, 5
5414 ; PWR6-NEXT: lvx 5, 0, 3
5415 ; PWR6-NEXT: vsubuwm 2, 2, 4
5416 ; PWR6-NEXT: vand 4, 2, 5
5417 ; PWR6-NEXT: vsrw 2, 2, 0
5418 ; PWR6-NEXT: vand 2, 2, 5
5419 ; PWR6-NEXT: vspltisw 5, 4
5420 ; PWR6-NEXT: vadduwm 2, 4, 2
5421 ; PWR6-NEXT: vsrw 4, 2, 5
5422 ; PWR6-NEXT: vspltisb 5, 15
5423 ; PWR6-NEXT: vadduwm 2, 2, 4
5424 ; PWR6-NEXT: vspltisb 4, 1
5425 ; PWR6-NEXT: vand 2, 2, 5
5426 ; PWR6-NEXT: vspltisw 5, -16
5427 ; PWR6-NEXT: vrlw 0, 4, 5
5428 ; PWR6-NEXT: vmulouh 4, 2, 4
5429 ; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
5430 ; PWR6-NEXT: vspltisw 3, 12
5431 ; PWR6-NEXT: vadduwm 3, 3, 3
5432 ; PWR6-NEXT: vslw 2, 2, 5
5433 ; PWR6-NEXT: vadduwm 2, 4, 2
5434 ; PWR6-NEXT: vsrw 2, 2, 3
5435 ; PWR6-NEXT: vspltisw 3, 7
5436 ; PWR6-NEXT: vcmpgtuw 2, 3, 2
5439 ; PWR7-LABEL: ult_7_v4i32:
5441 ; PWR7-NEXT: vspltisw 3, 1
5442 ; PWR7-NEXT: addis 3, 2, .LCPI51_0@toc@ha
5443 ; PWR7-NEXT: addi 3, 3, .LCPI51_0@toc@l
5444 ; PWR7-NEXT: vspltisw 4, 2
5445 ; PWR7-NEXT: lxvw4x 0, 0, 3
5446 ; PWR7-NEXT: addis 3, 2, .LCPI51_1@toc@ha
5447 ; PWR7-NEXT: vspltisw 5, -16
5448 ; PWR7-NEXT: vsrw 3, 2, 3
5449 ; PWR7-NEXT: addi 3, 3, .LCPI51_1@toc@l
5450 ; PWR7-NEXT: vspltisb 0, 15
5451 ; PWR7-NEXT: xxland 35, 35, 0
5452 ; PWR7-NEXT: lxvw4x 0, 0, 3
5453 ; PWR7-NEXT: vsubuwm 2, 2, 3
5454 ; PWR7-NEXT: vsrw 3, 2, 4
5455 ; PWR7-NEXT: xxland 34, 34, 0
5456 ; PWR7-NEXT: vspltisw 4, 4
5457 ; PWR7-NEXT: xxland 35, 35, 0
5458 ; PWR7-NEXT: vadduwm 2, 2, 3
5459 ; PWR7-NEXT: vsrw 3, 2, 4
5460 ; PWR7-NEXT: vspltisb 4, 1
5461 ; PWR7-NEXT: vrlw 1, 4, 5
5462 ; PWR7-NEXT: vadduwm 2, 2, 3
5463 ; PWR7-NEXT: xxlxor 35, 35, 35
5464 ; PWR7-NEXT: xxland 34, 34, 32
5465 ; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
5466 ; PWR7-NEXT: vmulouh 2, 2, 4
5467 ; PWR7-NEXT: vspltisw 4, 12
5468 ; PWR7-NEXT: vslw 3, 3, 5
5469 ; PWR7-NEXT: vadduwm 2, 2, 3
5470 ; PWR7-NEXT: vadduwm 3, 4, 4
5471 ; PWR7-NEXT: vsrw 2, 2, 3
5472 ; PWR7-NEXT: vspltisw 3, 7
5473 ; PWR7-NEXT: vcmpgtuw 2, 3, 2
5476 ; PWR8-LABEL: ult_7_v4i32:
5478 ; PWR8-NEXT: vspltisw 3, 7
5479 ; PWR8-NEXT: vpopcntw 2, 2
5480 ; PWR8-NEXT: vcmpgtuw 2, 3, 2
5483 ; PWR9-LABEL: ult_7_v4i32:
5485 ; PWR9-NEXT: vpopcntw 2, 2
5486 ; PWR9-NEXT: vspltisw 3, 7
5487 ; PWR9-NEXT: vcmpgtuw 2, 3, 2
5489 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
5490 %3 = icmp ult <4 x i32> %2, <i32 7, i32 7, i32 7, i32 7>
5491 %4 = sext <4 x i1> %3 to <4 x i32>
5495 define <4 x i32> @ugt_7_v4i32(<4 x i32> %0) {
5496 ; PWR5-LABEL: ugt_7_v4i32:
5498 ; PWR5-NEXT: addis 3, 2, .LCPI52_0@toc@ha
5499 ; PWR5-NEXT: vspltisw 4, 1
5500 ; PWR5-NEXT: vxor 3, 3, 3
5501 ; PWR5-NEXT: addi 3, 3, .LCPI52_0@toc@l
5502 ; PWR5-NEXT: lvx 5, 0, 3
5503 ; PWR5-NEXT: addis 3, 2, .LCPI52_1@toc@ha
5504 ; PWR5-NEXT: addi 3, 3, .LCPI52_1@toc@l
5505 ; PWR5-NEXT: vspltisw 0, 2
5506 ; PWR5-NEXT: vsrw 4, 2, 4
5507 ; PWR5-NEXT: vand 4, 4, 5
5508 ; PWR5-NEXT: lvx 5, 0, 3
5509 ; PWR5-NEXT: vsubuwm 2, 2, 4
5510 ; PWR5-NEXT: vand 4, 2, 5
5511 ; PWR5-NEXT: vsrw 2, 2, 0
5512 ; PWR5-NEXT: vand 2, 2, 5
5513 ; PWR5-NEXT: vspltisw 5, 4
5514 ; PWR5-NEXT: vadduwm 2, 4, 2
5515 ; PWR5-NEXT: vsrw 4, 2, 5
5516 ; PWR5-NEXT: vspltisb 5, 15
5517 ; PWR5-NEXT: vadduwm 2, 2, 4
5518 ; PWR5-NEXT: vspltisb 4, 1
5519 ; PWR5-NEXT: vand 2, 2, 5
5520 ; PWR5-NEXT: vspltisw 5, -16
5521 ; PWR5-NEXT: vrlw 0, 4, 5
5522 ; PWR5-NEXT: vmulouh 4, 2, 4
5523 ; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
5524 ; PWR5-NEXT: vspltisw 3, 12
5525 ; PWR5-NEXT: vadduwm 3, 3, 3
5526 ; PWR5-NEXT: vslw 2, 2, 5
5527 ; PWR5-NEXT: vadduwm 2, 4, 2
5528 ; PWR5-NEXT: vsrw 2, 2, 3
5529 ; PWR5-NEXT: vspltisw 3, 7
5530 ; PWR5-NEXT: vcmpgtuw 2, 2, 3
5533 ; PWR6-LABEL: ugt_7_v4i32:
5535 ; PWR6-NEXT: addis 3, 2, .LCPI52_0@toc@ha
5536 ; PWR6-NEXT: vspltisw 4, 1
5537 ; PWR6-NEXT: vxor 3, 3, 3
5538 ; PWR6-NEXT: addi 3, 3, .LCPI52_0@toc@l
5539 ; PWR6-NEXT: lvx 5, 0, 3
5540 ; PWR6-NEXT: addis 3, 2, .LCPI52_1@toc@ha
5541 ; PWR6-NEXT: addi 3, 3, .LCPI52_1@toc@l
5542 ; PWR6-NEXT: vspltisw 0, 2
5543 ; PWR6-NEXT: vsrw 4, 2, 4
5544 ; PWR6-NEXT: vand 4, 4, 5
5545 ; PWR6-NEXT: lvx 5, 0, 3
5546 ; PWR6-NEXT: vsubuwm 2, 2, 4
5547 ; PWR6-NEXT: vand 4, 2, 5
5548 ; PWR6-NEXT: vsrw 2, 2, 0
5549 ; PWR6-NEXT: vand 2, 2, 5
5550 ; PWR6-NEXT: vspltisw 5, 4
5551 ; PWR6-NEXT: vadduwm 2, 4, 2
5552 ; PWR6-NEXT: vsrw 4, 2, 5
5553 ; PWR6-NEXT: vspltisb 5, 15
5554 ; PWR6-NEXT: vadduwm 2, 2, 4
5555 ; PWR6-NEXT: vspltisb 4, 1
5556 ; PWR6-NEXT: vand 2, 2, 5
5557 ; PWR6-NEXT: vspltisw 5, -16
5558 ; PWR6-NEXT: vrlw 0, 4, 5
5559 ; PWR6-NEXT: vmulouh 4, 2, 4
5560 ; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
5561 ; PWR6-NEXT: vspltisw 3, 12
5562 ; PWR6-NEXT: vadduwm 3, 3, 3
5563 ; PWR6-NEXT: vslw 2, 2, 5
5564 ; PWR6-NEXT: vadduwm 2, 4, 2
5565 ; PWR6-NEXT: vsrw 2, 2, 3
5566 ; PWR6-NEXT: vspltisw 3, 7
5567 ; PWR6-NEXT: vcmpgtuw 2, 2, 3
5570 ; PWR7-LABEL: ugt_7_v4i32:
5572 ; PWR7-NEXT: vspltisw 3, 1
5573 ; PWR7-NEXT: addis 3, 2, .LCPI52_0@toc@ha
5574 ; PWR7-NEXT: addi 3, 3, .LCPI52_0@toc@l
5575 ; PWR7-NEXT: vspltisw 4, 2
5576 ; PWR7-NEXT: lxvw4x 0, 0, 3
5577 ; PWR7-NEXT: addis 3, 2, .LCPI52_1@toc@ha
5578 ; PWR7-NEXT: vspltisw 5, -16
5579 ; PWR7-NEXT: vsrw 3, 2, 3
5580 ; PWR7-NEXT: addi 3, 3, .LCPI52_1@toc@l
5581 ; PWR7-NEXT: vspltisb 0, 15
5582 ; PWR7-NEXT: xxland 35, 35, 0
5583 ; PWR7-NEXT: lxvw4x 0, 0, 3
5584 ; PWR7-NEXT: vsubuwm 2, 2, 3
5585 ; PWR7-NEXT: vsrw 3, 2, 4
5586 ; PWR7-NEXT: xxland 34, 34, 0
5587 ; PWR7-NEXT: vspltisw 4, 4
5588 ; PWR7-NEXT: xxland 35, 35, 0
5589 ; PWR7-NEXT: vadduwm 2, 2, 3
5590 ; PWR7-NEXT: vsrw 3, 2, 4
5591 ; PWR7-NEXT: vspltisb 4, 1
5592 ; PWR7-NEXT: vrlw 1, 4, 5
5593 ; PWR7-NEXT: vadduwm 2, 2, 3
5594 ; PWR7-NEXT: xxlxor 35, 35, 35
5595 ; PWR7-NEXT: xxland 34, 34, 32
5596 ; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
5597 ; PWR7-NEXT: vmulouh 2, 2, 4
5598 ; PWR7-NEXT: vspltisw 4, 12
5599 ; PWR7-NEXT: vslw 3, 3, 5
5600 ; PWR7-NEXT: vadduwm 2, 2, 3
5601 ; PWR7-NEXT: vadduwm 3, 4, 4
5602 ; PWR7-NEXT: vsrw 2, 2, 3
5603 ; PWR7-NEXT: vspltisw 3, 7
5604 ; PWR7-NEXT: vcmpgtuw 2, 2, 3
5607 ; PWR8-LABEL: ugt_7_v4i32:
5609 ; PWR8-NEXT: vspltisw 3, 7
5610 ; PWR8-NEXT: vpopcntw 2, 2
5611 ; PWR8-NEXT: vcmpgtuw 2, 2, 3
5614 ; PWR9-LABEL: ugt_7_v4i32:
5616 ; PWR9-NEXT: vpopcntw 2, 2
5617 ; PWR9-NEXT: vspltisw 3, 7
5618 ; PWR9-NEXT: vcmpgtuw 2, 2, 3
5620 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
5621 %3 = icmp ugt <4 x i32> %2, <i32 7, i32 7, i32 7, i32 7>
5622 %4 = sext <4 x i1> %3 to <4 x i32>
5626 define <4 x i32> @ult_8_v4i32(<4 x i32> %0) {
5627 ; PWR5-LABEL: ult_8_v4i32:
5629 ; PWR5-NEXT: addis 3, 2, .LCPI53_0@toc@ha
5630 ; PWR5-NEXT: vspltisw 4, 1
5631 ; PWR5-NEXT: vxor 3, 3, 3
5632 ; PWR5-NEXT: addi 3, 3, .LCPI53_0@toc@l
5633 ; PWR5-NEXT: lvx 5, 0, 3
5634 ; PWR5-NEXT: addis 3, 2, .LCPI53_1@toc@ha
5635 ; PWR5-NEXT: addi 3, 3, .LCPI53_1@toc@l
5636 ; PWR5-NEXT: vspltisw 0, 2
5637 ; PWR5-NEXT: vsrw 4, 2, 4
5638 ; PWR5-NEXT: vand 4, 4, 5
5639 ; PWR5-NEXT: lvx 5, 0, 3
5640 ; PWR5-NEXT: vsubuwm 2, 2, 4
5641 ; PWR5-NEXT: vand 4, 2, 5
5642 ; PWR5-NEXT: vsrw 2, 2, 0
5643 ; PWR5-NEXT: vand 2, 2, 5
5644 ; PWR5-NEXT: vspltisw 5, 4
5645 ; PWR5-NEXT: vadduwm 2, 4, 2
5646 ; PWR5-NEXT: vsrw 4, 2, 5
5647 ; PWR5-NEXT: vspltisb 5, 15
5648 ; PWR5-NEXT: vadduwm 2, 2, 4
5649 ; PWR5-NEXT: vspltisb 4, 1
5650 ; PWR5-NEXT: vand 2, 2, 5
5651 ; PWR5-NEXT: vspltisw 5, -16
5652 ; PWR5-NEXT: vrlw 0, 4, 5
5653 ; PWR5-NEXT: vmulouh 4, 2, 4
5654 ; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
5655 ; PWR5-NEXT: vspltisw 3, 12
5656 ; PWR5-NEXT: vadduwm 3, 3, 3
5657 ; PWR5-NEXT: vslw 2, 2, 5
5658 ; PWR5-NEXT: vadduwm 2, 4, 2
5659 ; PWR5-NEXT: vsrw 2, 2, 3
5660 ; PWR5-NEXT: vspltisw 3, 8
5661 ; PWR5-NEXT: vcmpgtuw 2, 3, 2
5664 ; PWR6-LABEL: ult_8_v4i32:
5666 ; PWR6-NEXT: addis 3, 2, .LCPI53_0@toc@ha
5667 ; PWR6-NEXT: vspltisw 4, 1
5668 ; PWR6-NEXT: vxor 3, 3, 3
5669 ; PWR6-NEXT: addi 3, 3, .LCPI53_0@toc@l
5670 ; PWR6-NEXT: lvx 5, 0, 3
5671 ; PWR6-NEXT: addis 3, 2, .LCPI53_1@toc@ha
5672 ; PWR6-NEXT: addi 3, 3, .LCPI53_1@toc@l
5673 ; PWR6-NEXT: vspltisw 0, 2
5674 ; PWR6-NEXT: vsrw 4, 2, 4
5675 ; PWR6-NEXT: vand 4, 4, 5
5676 ; PWR6-NEXT: lvx 5, 0, 3
5677 ; PWR6-NEXT: vsubuwm 2, 2, 4
5678 ; PWR6-NEXT: vand 4, 2, 5
5679 ; PWR6-NEXT: vsrw 2, 2, 0
5680 ; PWR6-NEXT: vand 2, 2, 5
5681 ; PWR6-NEXT: vspltisw 5, 4
5682 ; PWR6-NEXT: vadduwm 2, 4, 2
5683 ; PWR6-NEXT: vsrw 4, 2, 5
5684 ; PWR6-NEXT: vspltisb 5, 15
5685 ; PWR6-NEXT: vadduwm 2, 2, 4
5686 ; PWR6-NEXT: vspltisb 4, 1
5687 ; PWR6-NEXT: vand 2, 2, 5
5688 ; PWR6-NEXT: vspltisw 5, -16
5689 ; PWR6-NEXT: vrlw 0, 4, 5
5690 ; PWR6-NEXT: vmulouh 4, 2, 4
5691 ; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
5692 ; PWR6-NEXT: vspltisw 3, 12
5693 ; PWR6-NEXT: vadduwm 3, 3, 3
5694 ; PWR6-NEXT: vslw 2, 2, 5
5695 ; PWR6-NEXT: vadduwm 2, 4, 2
5696 ; PWR6-NEXT: vsrw 2, 2, 3
5697 ; PWR6-NEXT: vspltisw 3, 8
5698 ; PWR6-NEXT: vcmpgtuw 2, 3, 2
5701 ; PWR7-LABEL: ult_8_v4i32:
5703 ; PWR7-NEXT: vspltisw 3, 1
5704 ; PWR7-NEXT: addis 3, 2, .LCPI53_0@toc@ha
5705 ; PWR7-NEXT: addi 3, 3, .LCPI53_0@toc@l
5706 ; PWR7-NEXT: vspltisw 4, 2
5707 ; PWR7-NEXT: lxvw4x 0, 0, 3
5708 ; PWR7-NEXT: addis 3, 2, .LCPI53_1@toc@ha
5709 ; PWR7-NEXT: vspltisw 5, -16
5710 ; PWR7-NEXT: vsrw 3, 2, 3
5711 ; PWR7-NEXT: addi 3, 3, .LCPI53_1@toc@l
5712 ; PWR7-NEXT: vspltisb 0, 15
5713 ; PWR7-NEXT: xxland 35, 35, 0
5714 ; PWR7-NEXT: lxvw4x 0, 0, 3
5715 ; PWR7-NEXT: vsubuwm 2, 2, 3
5716 ; PWR7-NEXT: vsrw 3, 2, 4
5717 ; PWR7-NEXT: xxland 34, 34, 0
5718 ; PWR7-NEXT: vspltisw 4, 4
5719 ; PWR7-NEXT: xxland 35, 35, 0
5720 ; PWR7-NEXT: vadduwm 2, 2, 3
5721 ; PWR7-NEXT: vsrw 3, 2, 4
5722 ; PWR7-NEXT: vspltisb 4, 1
5723 ; PWR7-NEXT: vrlw 1, 4, 5
5724 ; PWR7-NEXT: vadduwm 2, 2, 3
5725 ; PWR7-NEXT: xxlxor 35, 35, 35
5726 ; PWR7-NEXT: xxland 34, 34, 32
5727 ; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
5728 ; PWR7-NEXT: vmulouh 2, 2, 4
5729 ; PWR7-NEXT: vspltisw 4, 12
5730 ; PWR7-NEXT: vslw 3, 3, 5
5731 ; PWR7-NEXT: vadduwm 2, 2, 3
5732 ; PWR7-NEXT: vadduwm 3, 4, 4
5733 ; PWR7-NEXT: vsrw 2, 2, 3
5734 ; PWR7-NEXT: vspltisw 3, 8
5735 ; PWR7-NEXT: vcmpgtuw 2, 3, 2
5738 ; PWR8-LABEL: ult_8_v4i32:
5740 ; PWR8-NEXT: vspltisw 3, 8
5741 ; PWR8-NEXT: vpopcntw 2, 2
5742 ; PWR8-NEXT: vcmpgtuw 2, 3, 2
5745 ; PWR9-LABEL: ult_8_v4i32:
5747 ; PWR9-NEXT: vpopcntw 2, 2
5748 ; PWR9-NEXT: vspltisw 3, 8
5749 ; PWR9-NEXT: vcmpgtuw 2, 3, 2
5751 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
5752 %3 = icmp ult <4 x i32> %2, <i32 8, i32 8, i32 8, i32 8>
5753 %4 = sext <4 x i1> %3 to <4 x i32>
5757 define <4 x i32> @ugt_8_v4i32(<4 x i32> %0) {
5758 ; PWR5-LABEL: ugt_8_v4i32:
5760 ; PWR5-NEXT: addis 3, 2, .LCPI54_0@toc@ha
5761 ; PWR5-NEXT: vspltisw 4, 1
5762 ; PWR5-NEXT: vxor 3, 3, 3
5763 ; PWR5-NEXT: addi 3, 3, .LCPI54_0@toc@l
5764 ; PWR5-NEXT: lvx 5, 0, 3
5765 ; PWR5-NEXT: addis 3, 2, .LCPI54_1@toc@ha
5766 ; PWR5-NEXT: addi 3, 3, .LCPI54_1@toc@l
5767 ; PWR5-NEXT: vspltisw 0, 2
5768 ; PWR5-NEXT: vsrw 4, 2, 4
5769 ; PWR5-NEXT: vand 4, 4, 5
5770 ; PWR5-NEXT: lvx 5, 0, 3
5771 ; PWR5-NEXT: vsubuwm 2, 2, 4
5772 ; PWR5-NEXT: vand 4, 2, 5
5773 ; PWR5-NEXT: vsrw 2, 2, 0
5774 ; PWR5-NEXT: vand 2, 2, 5
5775 ; PWR5-NEXT: vspltisw 5, 4
5776 ; PWR5-NEXT: vadduwm 2, 4, 2
5777 ; PWR5-NEXT: vsrw 4, 2, 5
5778 ; PWR5-NEXT: vspltisb 5, 15
5779 ; PWR5-NEXT: vadduwm 2, 2, 4
5780 ; PWR5-NEXT: vspltisb 4, 1
5781 ; PWR5-NEXT: vand 2, 2, 5
5782 ; PWR5-NEXT: vspltisw 5, -16
5783 ; PWR5-NEXT: vrlw 0, 4, 5
5784 ; PWR5-NEXT: vmulouh 4, 2, 4
5785 ; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
5786 ; PWR5-NEXT: vspltisw 3, 12
5787 ; PWR5-NEXT: vadduwm 3, 3, 3
5788 ; PWR5-NEXT: vslw 2, 2, 5
5789 ; PWR5-NEXT: vadduwm 2, 4, 2
5790 ; PWR5-NEXT: vsrw 2, 2, 3
5791 ; PWR5-NEXT: vspltisw 3, 8
5792 ; PWR5-NEXT: vcmpgtuw 2, 2, 3
5795 ; PWR6-LABEL: ugt_8_v4i32:
5797 ; PWR6-NEXT: addis 3, 2, .LCPI54_0@toc@ha
5798 ; PWR6-NEXT: vspltisw 4, 1
5799 ; PWR6-NEXT: vxor 3, 3, 3
5800 ; PWR6-NEXT: addi 3, 3, .LCPI54_0@toc@l
5801 ; PWR6-NEXT: lvx 5, 0, 3
5802 ; PWR6-NEXT: addis 3, 2, .LCPI54_1@toc@ha
5803 ; PWR6-NEXT: addi 3, 3, .LCPI54_1@toc@l
5804 ; PWR6-NEXT: vspltisw 0, 2
5805 ; PWR6-NEXT: vsrw 4, 2, 4
5806 ; PWR6-NEXT: vand 4, 4, 5
5807 ; PWR6-NEXT: lvx 5, 0, 3
5808 ; PWR6-NEXT: vsubuwm 2, 2, 4
5809 ; PWR6-NEXT: vand 4, 2, 5
5810 ; PWR6-NEXT: vsrw 2, 2, 0
5811 ; PWR6-NEXT: vand 2, 2, 5
5812 ; PWR6-NEXT: vspltisw 5, 4
5813 ; PWR6-NEXT: vadduwm 2, 4, 2
5814 ; PWR6-NEXT: vsrw 4, 2, 5
5815 ; PWR6-NEXT: vspltisb 5, 15
5816 ; PWR6-NEXT: vadduwm 2, 2, 4
5817 ; PWR6-NEXT: vspltisb 4, 1
5818 ; PWR6-NEXT: vand 2, 2, 5
5819 ; PWR6-NEXT: vspltisw 5, -16
5820 ; PWR6-NEXT: vrlw 0, 4, 5
5821 ; PWR6-NEXT: vmulouh 4, 2, 4
5822 ; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
5823 ; PWR6-NEXT: vspltisw 3, 12
5824 ; PWR6-NEXT: vadduwm 3, 3, 3
5825 ; PWR6-NEXT: vslw 2, 2, 5
5826 ; PWR6-NEXT: vadduwm 2, 4, 2
5827 ; PWR6-NEXT: vsrw 2, 2, 3
5828 ; PWR6-NEXT: vspltisw 3, 8
5829 ; PWR6-NEXT: vcmpgtuw 2, 2, 3
5832 ; PWR7-LABEL: ugt_8_v4i32:
5834 ; PWR7-NEXT: vspltisw 3, 1
5835 ; PWR7-NEXT: addis 3, 2, .LCPI54_0@toc@ha
5836 ; PWR7-NEXT: addi 3, 3, .LCPI54_0@toc@l
5837 ; PWR7-NEXT: vspltisw 4, 2
5838 ; PWR7-NEXT: lxvw4x 0, 0, 3
5839 ; PWR7-NEXT: addis 3, 2, .LCPI54_1@toc@ha
5840 ; PWR7-NEXT: vspltisw 5, -16
5841 ; PWR7-NEXT: vsrw 3, 2, 3
5842 ; PWR7-NEXT: addi 3, 3, .LCPI54_1@toc@l
5843 ; PWR7-NEXT: vspltisb 0, 15
5844 ; PWR7-NEXT: xxland 35, 35, 0
5845 ; PWR7-NEXT: lxvw4x 0, 0, 3
5846 ; PWR7-NEXT: vsubuwm 2, 2, 3
5847 ; PWR7-NEXT: vsrw 3, 2, 4
5848 ; PWR7-NEXT: xxland 34, 34, 0
5849 ; PWR7-NEXT: vspltisw 4, 4
5850 ; PWR7-NEXT: xxland 35, 35, 0
5851 ; PWR7-NEXT: vadduwm 2, 2, 3
5852 ; PWR7-NEXT: vsrw 3, 2, 4
5853 ; PWR7-NEXT: vspltisb 4, 1
5854 ; PWR7-NEXT: vrlw 1, 4, 5
5855 ; PWR7-NEXT: vadduwm 2, 2, 3
5856 ; PWR7-NEXT: xxlxor 35, 35, 35
5857 ; PWR7-NEXT: xxland 34, 34, 32
5858 ; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
5859 ; PWR7-NEXT: vmulouh 2, 2, 4
5860 ; PWR7-NEXT: vspltisw 4, 12
5861 ; PWR7-NEXT: vslw 3, 3, 5
5862 ; PWR7-NEXT: vadduwm 2, 2, 3
5863 ; PWR7-NEXT: vadduwm 3, 4, 4
5864 ; PWR7-NEXT: vsrw 2, 2, 3
5865 ; PWR7-NEXT: vspltisw 3, 8
5866 ; PWR7-NEXT: vcmpgtuw 2, 2, 3
5869 ; PWR8-LABEL: ugt_8_v4i32:
5871 ; PWR8-NEXT: vspltisw 3, 8
5872 ; PWR8-NEXT: vpopcntw 2, 2
5873 ; PWR8-NEXT: vcmpgtuw 2, 2, 3
5876 ; PWR9-LABEL: ugt_8_v4i32:
5878 ; PWR9-NEXT: vpopcntw 2, 2
5879 ; PWR9-NEXT: vspltisw 3, 8
5880 ; PWR9-NEXT: vcmpgtuw 2, 2, 3
5882 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
5883 %3 = icmp ugt <4 x i32> %2, <i32 8, i32 8, i32 8, i32 8>
5884 %4 = sext <4 x i1> %3 to <4 x i32>
5888 define <4 x i32> @ult_9_v4i32(<4 x i32> %0) {
5889 ; PWR5-LABEL: ult_9_v4i32:
5891 ; PWR5-NEXT: addis 3, 2, .LCPI55_0@toc@ha
5892 ; PWR5-NEXT: vspltisw 4, 1
5893 ; PWR5-NEXT: vxor 3, 3, 3
5894 ; PWR5-NEXT: addi 3, 3, .LCPI55_0@toc@l
5895 ; PWR5-NEXT: lvx 5, 0, 3
5896 ; PWR5-NEXT: addis 3, 2, .LCPI55_1@toc@ha
5897 ; PWR5-NEXT: addi 3, 3, .LCPI55_1@toc@l
5898 ; PWR5-NEXT: vspltisw 0, 2
5899 ; PWR5-NEXT: vsrw 4, 2, 4
5900 ; PWR5-NEXT: vand 4, 4, 5
5901 ; PWR5-NEXT: lvx 5, 0, 3
5902 ; PWR5-NEXT: vsubuwm 2, 2, 4
5903 ; PWR5-NEXT: vand 4, 2, 5
5904 ; PWR5-NEXT: vsrw 2, 2, 0
5905 ; PWR5-NEXT: vand 2, 2, 5
5906 ; PWR5-NEXT: vspltisw 5, 4
5907 ; PWR5-NEXT: vadduwm 2, 4, 2
5908 ; PWR5-NEXT: vsrw 4, 2, 5
5909 ; PWR5-NEXT: vspltisb 5, 15
5910 ; PWR5-NEXT: vadduwm 2, 2, 4
5911 ; PWR5-NEXT: vspltisb 4, 1
5912 ; PWR5-NEXT: vand 2, 2, 5
5913 ; PWR5-NEXT: vspltisw 5, -16
5914 ; PWR5-NEXT: vrlw 0, 4, 5
5915 ; PWR5-NEXT: vmulouh 4, 2, 4
5916 ; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
5917 ; PWR5-NEXT: vspltisw 3, 12
5918 ; PWR5-NEXT: vadduwm 3, 3, 3
5919 ; PWR5-NEXT: vslw 2, 2, 5
5920 ; PWR5-NEXT: vadduwm 2, 4, 2
5921 ; PWR5-NEXT: vsrw 2, 2, 3
5922 ; PWR5-NEXT: vspltisw 3, 9
5923 ; PWR5-NEXT: vcmpgtuw 2, 3, 2
5926 ; PWR6-LABEL: ult_9_v4i32:
5928 ; PWR6-NEXT: addis 3, 2, .LCPI55_0@toc@ha
5929 ; PWR6-NEXT: vspltisw 4, 1
5930 ; PWR6-NEXT: vxor 3, 3, 3
5931 ; PWR6-NEXT: addi 3, 3, .LCPI55_0@toc@l
5932 ; PWR6-NEXT: lvx 5, 0, 3
5933 ; PWR6-NEXT: addis 3, 2, .LCPI55_1@toc@ha
5934 ; PWR6-NEXT: addi 3, 3, .LCPI55_1@toc@l
5935 ; PWR6-NEXT: vspltisw 0, 2
5936 ; PWR6-NEXT: vsrw 4, 2, 4
5937 ; PWR6-NEXT: vand 4, 4, 5
5938 ; PWR6-NEXT: lvx 5, 0, 3
5939 ; PWR6-NEXT: vsubuwm 2, 2, 4
5940 ; PWR6-NEXT: vand 4, 2, 5
5941 ; PWR6-NEXT: vsrw 2, 2, 0
5942 ; PWR6-NEXT: vand 2, 2, 5
5943 ; PWR6-NEXT: vspltisw 5, 4
5944 ; PWR6-NEXT: vadduwm 2, 4, 2
5945 ; PWR6-NEXT: vsrw 4, 2, 5
5946 ; PWR6-NEXT: vspltisb 5, 15
5947 ; PWR6-NEXT: vadduwm 2, 2, 4
5948 ; PWR6-NEXT: vspltisb 4, 1
5949 ; PWR6-NEXT: vand 2, 2, 5
5950 ; PWR6-NEXT: vspltisw 5, -16
5951 ; PWR6-NEXT: vrlw 0, 4, 5
5952 ; PWR6-NEXT: vmulouh 4, 2, 4
5953 ; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
5954 ; PWR6-NEXT: vspltisw 3, 12
5955 ; PWR6-NEXT: vadduwm 3, 3, 3
5956 ; PWR6-NEXT: vslw 2, 2, 5
5957 ; PWR6-NEXT: vadduwm 2, 4, 2
5958 ; PWR6-NEXT: vsrw 2, 2, 3
5959 ; PWR6-NEXT: vspltisw 3, 9
5960 ; PWR6-NEXT: vcmpgtuw 2, 3, 2
5963 ; PWR7-LABEL: ult_9_v4i32:
5965 ; PWR7-NEXT: vspltisw 3, 1
5966 ; PWR7-NEXT: addis 3, 2, .LCPI55_0@toc@ha
5967 ; PWR7-NEXT: addi 3, 3, .LCPI55_0@toc@l
5968 ; PWR7-NEXT: vspltisw 4, 2
5969 ; PWR7-NEXT: lxvw4x 0, 0, 3
5970 ; PWR7-NEXT: addis 3, 2, .LCPI55_1@toc@ha
5971 ; PWR7-NEXT: vspltisw 5, -16
5972 ; PWR7-NEXT: vsrw 3, 2, 3
5973 ; PWR7-NEXT: addi 3, 3, .LCPI55_1@toc@l
5974 ; PWR7-NEXT: vspltisb 0, 15
5975 ; PWR7-NEXT: xxland 35, 35, 0
5976 ; PWR7-NEXT: lxvw4x 0, 0, 3
5977 ; PWR7-NEXT: vsubuwm 2, 2, 3
5978 ; PWR7-NEXT: vsrw 3, 2, 4
5979 ; PWR7-NEXT: xxland 34, 34, 0
5980 ; PWR7-NEXT: vspltisw 4, 4
5981 ; PWR7-NEXT: xxland 35, 35, 0
5982 ; PWR7-NEXT: vadduwm 2, 2, 3
5983 ; PWR7-NEXT: vsrw 3, 2, 4
5984 ; PWR7-NEXT: vspltisb 4, 1
5985 ; PWR7-NEXT: vrlw 1, 4, 5
5986 ; PWR7-NEXT: vadduwm 2, 2, 3
5987 ; PWR7-NEXT: xxlxor 35, 35, 35
5988 ; PWR7-NEXT: xxland 34, 34, 32
5989 ; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
5990 ; PWR7-NEXT: vmulouh 2, 2, 4
5991 ; PWR7-NEXT: vspltisw 4, 12
5992 ; PWR7-NEXT: vslw 3, 3, 5
5993 ; PWR7-NEXT: vadduwm 2, 2, 3
5994 ; PWR7-NEXT: vadduwm 3, 4, 4
5995 ; PWR7-NEXT: vsrw 2, 2, 3
5996 ; PWR7-NEXT: vspltisw 3, 9
5997 ; PWR7-NEXT: vcmpgtuw 2, 3, 2
6000 ; PWR8-LABEL: ult_9_v4i32:
6002 ; PWR8-NEXT: vspltisw 3, 9
6003 ; PWR8-NEXT: vpopcntw 2, 2
6004 ; PWR8-NEXT: vcmpgtuw 2, 3, 2
6007 ; PWR9-LABEL: ult_9_v4i32:
6009 ; PWR9-NEXT: vpopcntw 2, 2
6010 ; PWR9-NEXT: vspltisw 3, 9
6011 ; PWR9-NEXT: vcmpgtuw 2, 3, 2
6013 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
6014 %3 = icmp ult <4 x i32> %2, <i32 9, i32 9, i32 9, i32 9>
6015 %4 = sext <4 x i1> %3 to <4 x i32>
6019 define <4 x i32> @ugt_9_v4i32(<4 x i32> %0) {
6020 ; PWR5-LABEL: ugt_9_v4i32:
6022 ; PWR5-NEXT: addis 3, 2, .LCPI56_0@toc@ha
6023 ; PWR5-NEXT: vspltisw 4, 1
6024 ; PWR5-NEXT: vxor 3, 3, 3
6025 ; PWR5-NEXT: addi 3, 3, .LCPI56_0@toc@l
6026 ; PWR5-NEXT: lvx 5, 0, 3
6027 ; PWR5-NEXT: addis 3, 2, .LCPI56_1@toc@ha
6028 ; PWR5-NEXT: addi 3, 3, .LCPI56_1@toc@l
6029 ; PWR5-NEXT: vspltisw 0, 2
6030 ; PWR5-NEXT: vsrw 4, 2, 4
6031 ; PWR5-NEXT: vand 4, 4, 5
6032 ; PWR5-NEXT: lvx 5, 0, 3
6033 ; PWR5-NEXT: vsubuwm 2, 2, 4
6034 ; PWR5-NEXT: vand 4, 2, 5
6035 ; PWR5-NEXT: vsrw 2, 2, 0
6036 ; PWR5-NEXT: vand 2, 2, 5
6037 ; PWR5-NEXT: vspltisw 5, 4
6038 ; PWR5-NEXT: vadduwm 2, 4, 2
6039 ; PWR5-NEXT: vsrw 4, 2, 5
6040 ; PWR5-NEXT: vspltisb 5, 15
6041 ; PWR5-NEXT: vadduwm 2, 2, 4
6042 ; PWR5-NEXT: vspltisb 4, 1
6043 ; PWR5-NEXT: vand 2, 2, 5
6044 ; PWR5-NEXT: vspltisw 5, -16
6045 ; PWR5-NEXT: vrlw 0, 4, 5
6046 ; PWR5-NEXT: vmulouh 4, 2, 4
6047 ; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
6048 ; PWR5-NEXT: vspltisw 3, 12
6049 ; PWR5-NEXT: vadduwm 3, 3, 3
6050 ; PWR5-NEXT: vslw 2, 2, 5
6051 ; PWR5-NEXT: vadduwm 2, 4, 2
6052 ; PWR5-NEXT: vsrw 2, 2, 3
6053 ; PWR5-NEXT: vspltisw 3, 9
6054 ; PWR5-NEXT: vcmpgtuw 2, 2, 3
6057 ; PWR6-LABEL: ugt_9_v4i32:
6059 ; PWR6-NEXT: addis 3, 2, .LCPI56_0@toc@ha
6060 ; PWR6-NEXT: vspltisw 4, 1
6061 ; PWR6-NEXT: vxor 3, 3, 3
6062 ; PWR6-NEXT: addi 3, 3, .LCPI56_0@toc@l
6063 ; PWR6-NEXT: lvx 5, 0, 3
6064 ; PWR6-NEXT: addis 3, 2, .LCPI56_1@toc@ha
6065 ; PWR6-NEXT: addi 3, 3, .LCPI56_1@toc@l
6066 ; PWR6-NEXT: vspltisw 0, 2
6067 ; PWR6-NEXT: vsrw 4, 2, 4
6068 ; PWR6-NEXT: vand 4, 4, 5
6069 ; PWR6-NEXT: lvx 5, 0, 3
6070 ; PWR6-NEXT: vsubuwm 2, 2, 4
6071 ; PWR6-NEXT: vand 4, 2, 5
6072 ; PWR6-NEXT: vsrw 2, 2, 0
6073 ; PWR6-NEXT: vand 2, 2, 5
6074 ; PWR6-NEXT: vspltisw 5, 4
6075 ; PWR6-NEXT: vadduwm 2, 4, 2
6076 ; PWR6-NEXT: vsrw 4, 2, 5
6077 ; PWR6-NEXT: vspltisb 5, 15
6078 ; PWR6-NEXT: vadduwm 2, 2, 4
6079 ; PWR6-NEXT: vspltisb 4, 1
6080 ; PWR6-NEXT: vand 2, 2, 5
6081 ; PWR6-NEXT: vspltisw 5, -16
6082 ; PWR6-NEXT: vrlw 0, 4, 5
6083 ; PWR6-NEXT: vmulouh 4, 2, 4
6084 ; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
6085 ; PWR6-NEXT: vspltisw 3, 12
6086 ; PWR6-NEXT: vadduwm 3, 3, 3
6087 ; PWR6-NEXT: vslw 2, 2, 5
6088 ; PWR6-NEXT: vadduwm 2, 4, 2
6089 ; PWR6-NEXT: vsrw 2, 2, 3
6090 ; PWR6-NEXT: vspltisw 3, 9
6091 ; PWR6-NEXT: vcmpgtuw 2, 2, 3
6094 ; PWR7-LABEL: ugt_9_v4i32:
6096 ; PWR7-NEXT: vspltisw 3, 1
6097 ; PWR7-NEXT: addis 3, 2, .LCPI56_0@toc@ha
6098 ; PWR7-NEXT: addi 3, 3, .LCPI56_0@toc@l
6099 ; PWR7-NEXT: vspltisw 4, 2
6100 ; PWR7-NEXT: lxvw4x 0, 0, 3
6101 ; PWR7-NEXT: addis 3, 2, .LCPI56_1@toc@ha
6102 ; PWR7-NEXT: vspltisw 5, -16
6103 ; PWR7-NEXT: vsrw 3, 2, 3
6104 ; PWR7-NEXT: addi 3, 3, .LCPI56_1@toc@l
6105 ; PWR7-NEXT: vspltisb 0, 15
6106 ; PWR7-NEXT: xxland 35, 35, 0
6107 ; PWR7-NEXT: lxvw4x 0, 0, 3
6108 ; PWR7-NEXT: vsubuwm 2, 2, 3
6109 ; PWR7-NEXT: vsrw 3, 2, 4
6110 ; PWR7-NEXT: xxland 34, 34, 0
6111 ; PWR7-NEXT: vspltisw 4, 4
6112 ; PWR7-NEXT: xxland 35, 35, 0
6113 ; PWR7-NEXT: vadduwm 2, 2, 3
6114 ; PWR7-NEXT: vsrw 3, 2, 4
6115 ; PWR7-NEXT: vspltisb 4, 1
6116 ; PWR7-NEXT: vrlw 1, 4, 5
6117 ; PWR7-NEXT: vadduwm 2, 2, 3
6118 ; PWR7-NEXT: xxlxor 35, 35, 35
6119 ; PWR7-NEXT: xxland 34, 34, 32
6120 ; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
6121 ; PWR7-NEXT: vmulouh 2, 2, 4
6122 ; PWR7-NEXT: vspltisw 4, 12
6123 ; PWR7-NEXT: vslw 3, 3, 5
6124 ; PWR7-NEXT: vadduwm 2, 2, 3
6125 ; PWR7-NEXT: vadduwm 3, 4, 4
6126 ; PWR7-NEXT: vsrw 2, 2, 3
6127 ; PWR7-NEXT: vspltisw 3, 9
6128 ; PWR7-NEXT: vcmpgtuw 2, 2, 3
6131 ; PWR8-LABEL: ugt_9_v4i32:
6133 ; PWR8-NEXT: vspltisw 3, 9
6134 ; PWR8-NEXT: vpopcntw 2, 2
6135 ; PWR8-NEXT: vcmpgtuw 2, 2, 3
6138 ; PWR9-LABEL: ugt_9_v4i32:
6140 ; PWR9-NEXT: vpopcntw 2, 2
6141 ; PWR9-NEXT: vspltisw 3, 9
6142 ; PWR9-NEXT: vcmpgtuw 2, 2, 3
6144 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
6145 %3 = icmp ugt <4 x i32> %2, <i32 9, i32 9, i32 9, i32 9>
6146 %4 = sext <4 x i1> %3 to <4 x i32>
6150 define <4 x i32> @ult_10_v4i32(<4 x i32> %0) {
6151 ; PWR5-LABEL: ult_10_v4i32:
6153 ; PWR5-NEXT: addis 3, 2, .LCPI57_0@toc@ha
6154 ; PWR5-NEXT: vspltisw 4, 1
6155 ; PWR5-NEXT: vxor 3, 3, 3
6156 ; PWR5-NEXT: addi 3, 3, .LCPI57_0@toc@l
6157 ; PWR5-NEXT: lvx 5, 0, 3
6158 ; PWR5-NEXT: addis 3, 2, .LCPI57_1@toc@ha
6159 ; PWR5-NEXT: addi 3, 3, .LCPI57_1@toc@l
6160 ; PWR5-NEXT: vspltisw 0, 2
6161 ; PWR5-NEXT: vsrw 4, 2, 4
6162 ; PWR5-NEXT: vand 4, 4, 5
6163 ; PWR5-NEXT: lvx 5, 0, 3
6164 ; PWR5-NEXT: vsubuwm 2, 2, 4
6165 ; PWR5-NEXT: vand 4, 2, 5
6166 ; PWR5-NEXT: vsrw 2, 2, 0
6167 ; PWR5-NEXT: vand 2, 2, 5
6168 ; PWR5-NEXT: vspltisw 5, 4
6169 ; PWR5-NEXT: vadduwm 2, 4, 2
6170 ; PWR5-NEXT: vsrw 4, 2, 5
6171 ; PWR5-NEXT: vspltisb 5, 15
6172 ; PWR5-NEXT: vadduwm 2, 2, 4
6173 ; PWR5-NEXT: vspltisb 4, 1
6174 ; PWR5-NEXT: vand 2, 2, 5
6175 ; PWR5-NEXT: vspltisw 5, -16
6176 ; PWR5-NEXT: vrlw 0, 4, 5
6177 ; PWR5-NEXT: vmulouh 4, 2, 4
6178 ; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
6179 ; PWR5-NEXT: vspltisw 3, 12
6180 ; PWR5-NEXT: vadduwm 3, 3, 3
6181 ; PWR5-NEXT: vslw 2, 2, 5
6182 ; PWR5-NEXT: vadduwm 2, 4, 2
6183 ; PWR5-NEXT: vsrw 2, 2, 3
6184 ; PWR5-NEXT: vspltisw 3, 10
6185 ; PWR5-NEXT: vcmpgtuw 2, 3, 2
6188 ; PWR6-LABEL: ult_10_v4i32:
6190 ; PWR6-NEXT: addis 3, 2, .LCPI57_0@toc@ha
6191 ; PWR6-NEXT: vspltisw 4, 1
6192 ; PWR6-NEXT: vxor 3, 3, 3
6193 ; PWR6-NEXT: addi 3, 3, .LCPI57_0@toc@l
6194 ; PWR6-NEXT: lvx 5, 0, 3
6195 ; PWR6-NEXT: addis 3, 2, .LCPI57_1@toc@ha
6196 ; PWR6-NEXT: addi 3, 3, .LCPI57_1@toc@l
6197 ; PWR6-NEXT: vspltisw 0, 2
6198 ; PWR6-NEXT: vsrw 4, 2, 4
6199 ; PWR6-NEXT: vand 4, 4, 5
6200 ; PWR6-NEXT: lvx 5, 0, 3
6201 ; PWR6-NEXT: vsubuwm 2, 2, 4
6202 ; PWR6-NEXT: vand 4, 2, 5
6203 ; PWR6-NEXT: vsrw 2, 2, 0
6204 ; PWR6-NEXT: vand 2, 2, 5
6205 ; PWR6-NEXT: vspltisw 5, 4
6206 ; PWR6-NEXT: vadduwm 2, 4, 2
6207 ; PWR6-NEXT: vsrw 4, 2, 5
6208 ; PWR6-NEXT: vspltisb 5, 15
6209 ; PWR6-NEXT: vadduwm 2, 2, 4
6210 ; PWR6-NEXT: vspltisb 4, 1
6211 ; PWR6-NEXT: vand 2, 2, 5
6212 ; PWR6-NEXT: vspltisw 5, -16
6213 ; PWR6-NEXT: vrlw 0, 4, 5
6214 ; PWR6-NEXT: vmulouh 4, 2, 4
6215 ; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
6216 ; PWR6-NEXT: vspltisw 3, 12
6217 ; PWR6-NEXT: vadduwm 3, 3, 3
6218 ; PWR6-NEXT: vslw 2, 2, 5
6219 ; PWR6-NEXT: vadduwm 2, 4, 2
6220 ; PWR6-NEXT: vsrw 2, 2, 3
6221 ; PWR6-NEXT: vspltisw 3, 10
6222 ; PWR6-NEXT: vcmpgtuw 2, 3, 2
6225 ; PWR7-LABEL: ult_10_v4i32:
6227 ; PWR7-NEXT: vspltisw 3, 1
6228 ; PWR7-NEXT: addis 3, 2, .LCPI57_0@toc@ha
6229 ; PWR7-NEXT: addi 3, 3, .LCPI57_0@toc@l
6230 ; PWR7-NEXT: vspltisw 4, 2
6231 ; PWR7-NEXT: lxvw4x 0, 0, 3
6232 ; PWR7-NEXT: addis 3, 2, .LCPI57_1@toc@ha
6233 ; PWR7-NEXT: vspltisw 5, -16
6234 ; PWR7-NEXT: vsrw 3, 2, 3
6235 ; PWR7-NEXT: addi 3, 3, .LCPI57_1@toc@l
6236 ; PWR7-NEXT: vspltisb 0, 15
6237 ; PWR7-NEXT: xxland 35, 35, 0
6238 ; PWR7-NEXT: lxvw4x 0, 0, 3
6239 ; PWR7-NEXT: vsubuwm 2, 2, 3
6240 ; PWR7-NEXT: vsrw 3, 2, 4
6241 ; PWR7-NEXT: xxland 34, 34, 0
6242 ; PWR7-NEXT: vspltisw 4, 4
6243 ; PWR7-NEXT: xxland 35, 35, 0
6244 ; PWR7-NEXT: vadduwm 2, 2, 3
6245 ; PWR7-NEXT: vsrw 3, 2, 4
6246 ; PWR7-NEXT: vspltisb 4, 1
6247 ; PWR7-NEXT: vrlw 1, 4, 5
6248 ; PWR7-NEXT: vadduwm 2, 2, 3
6249 ; PWR7-NEXT: xxlxor 35, 35, 35
6250 ; PWR7-NEXT: xxland 34, 34, 32
6251 ; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
6252 ; PWR7-NEXT: vmulouh 2, 2, 4
6253 ; PWR7-NEXT: vspltisw 4, 12
6254 ; PWR7-NEXT: vslw 3, 3, 5
6255 ; PWR7-NEXT: vadduwm 2, 2, 3
6256 ; PWR7-NEXT: vadduwm 3, 4, 4
6257 ; PWR7-NEXT: vsrw 2, 2, 3
6258 ; PWR7-NEXT: vspltisw 3, 10
6259 ; PWR7-NEXT: vcmpgtuw 2, 3, 2
6262 ; PWR8-LABEL: ult_10_v4i32:
6264 ; PWR8-NEXT: vspltisw 3, 10
6265 ; PWR8-NEXT: vpopcntw 2, 2
6266 ; PWR8-NEXT: vcmpgtuw 2, 3, 2
6269 ; PWR9-LABEL: ult_10_v4i32:
6271 ; PWR9-NEXT: vpopcntw 2, 2
6272 ; PWR9-NEXT: vspltisw 3, 10
6273 ; PWR9-NEXT: vcmpgtuw 2, 3, 2
6275 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
6276 %3 = icmp ult <4 x i32> %2, <i32 10, i32 10, i32 10, i32 10>
6277 %4 = sext <4 x i1> %3 to <4 x i32>
6281 define <4 x i32> @ugt_10_v4i32(<4 x i32> %0) {
6282 ; PWR5-LABEL: ugt_10_v4i32:
6284 ; PWR5-NEXT: addis 3, 2, .LCPI58_0@toc@ha
6285 ; PWR5-NEXT: vspltisw 4, 1
6286 ; PWR5-NEXT: vxor 3, 3, 3
6287 ; PWR5-NEXT: addi 3, 3, .LCPI58_0@toc@l
6288 ; PWR5-NEXT: lvx 5, 0, 3
6289 ; PWR5-NEXT: addis 3, 2, .LCPI58_1@toc@ha
6290 ; PWR5-NEXT: addi 3, 3, .LCPI58_1@toc@l
6291 ; PWR5-NEXT: vspltisw 0, 2
6292 ; PWR5-NEXT: vsrw 4, 2, 4
6293 ; PWR5-NEXT: vand 4, 4, 5
6294 ; PWR5-NEXT: lvx 5, 0, 3
6295 ; PWR5-NEXT: vsubuwm 2, 2, 4
6296 ; PWR5-NEXT: vand 4, 2, 5
6297 ; PWR5-NEXT: vsrw 2, 2, 0
6298 ; PWR5-NEXT: vand 2, 2, 5
6299 ; PWR5-NEXT: vspltisw 5, 4
6300 ; PWR5-NEXT: vadduwm 2, 4, 2
6301 ; PWR5-NEXT: vsrw 4, 2, 5
6302 ; PWR5-NEXT: vspltisb 5, 15
6303 ; PWR5-NEXT: vadduwm 2, 2, 4
6304 ; PWR5-NEXT: vspltisb 4, 1
6305 ; PWR5-NEXT: vand 2, 2, 5
6306 ; PWR5-NEXT: vspltisw 5, -16
6307 ; PWR5-NEXT: vrlw 0, 4, 5
6308 ; PWR5-NEXT: vmulouh 4, 2, 4
6309 ; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
6310 ; PWR5-NEXT: vspltisw 3, 12
6311 ; PWR5-NEXT: vadduwm 3, 3, 3
6312 ; PWR5-NEXT: vslw 2, 2, 5
6313 ; PWR5-NEXT: vadduwm 2, 4, 2
6314 ; PWR5-NEXT: vsrw 2, 2, 3
6315 ; PWR5-NEXT: vspltisw 3, 10
6316 ; PWR5-NEXT: vcmpgtuw 2, 2, 3
6319 ; PWR6-LABEL: ugt_10_v4i32:
6321 ; PWR6-NEXT: addis 3, 2, .LCPI58_0@toc@ha
6322 ; PWR6-NEXT: vspltisw 4, 1
6323 ; PWR6-NEXT: vxor 3, 3, 3
6324 ; PWR6-NEXT: addi 3, 3, .LCPI58_0@toc@l
6325 ; PWR6-NEXT: lvx 5, 0, 3
6326 ; PWR6-NEXT: addis 3, 2, .LCPI58_1@toc@ha
6327 ; PWR6-NEXT: addi 3, 3, .LCPI58_1@toc@l
6328 ; PWR6-NEXT: vspltisw 0, 2
6329 ; PWR6-NEXT: vsrw 4, 2, 4
6330 ; PWR6-NEXT: vand 4, 4, 5
6331 ; PWR6-NEXT: lvx 5, 0, 3
6332 ; PWR6-NEXT: vsubuwm 2, 2, 4
6333 ; PWR6-NEXT: vand 4, 2, 5
6334 ; PWR6-NEXT: vsrw 2, 2, 0
6335 ; PWR6-NEXT: vand 2, 2, 5
6336 ; PWR6-NEXT: vspltisw 5, 4
6337 ; PWR6-NEXT: vadduwm 2, 4, 2
6338 ; PWR6-NEXT: vsrw 4, 2, 5
6339 ; PWR6-NEXT: vspltisb 5, 15
6340 ; PWR6-NEXT: vadduwm 2, 2, 4
6341 ; PWR6-NEXT: vspltisb 4, 1
6342 ; PWR6-NEXT: vand 2, 2, 5
6343 ; PWR6-NEXT: vspltisw 5, -16
6344 ; PWR6-NEXT: vrlw 0, 4, 5
6345 ; PWR6-NEXT: vmulouh 4, 2, 4
6346 ; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
6347 ; PWR6-NEXT: vspltisw 3, 12
6348 ; PWR6-NEXT: vadduwm 3, 3, 3
6349 ; PWR6-NEXT: vslw 2, 2, 5
6350 ; PWR6-NEXT: vadduwm 2, 4, 2
6351 ; PWR6-NEXT: vsrw 2, 2, 3
6352 ; PWR6-NEXT: vspltisw 3, 10
6353 ; PWR6-NEXT: vcmpgtuw 2, 2, 3
6356 ; PWR7-LABEL: ugt_10_v4i32:
6358 ; PWR7-NEXT: vspltisw 3, 1
6359 ; PWR7-NEXT: addis 3, 2, .LCPI58_0@toc@ha
6360 ; PWR7-NEXT: addi 3, 3, .LCPI58_0@toc@l
6361 ; PWR7-NEXT: vspltisw 4, 2
6362 ; PWR7-NEXT: lxvw4x 0, 0, 3
6363 ; PWR7-NEXT: addis 3, 2, .LCPI58_1@toc@ha
6364 ; PWR7-NEXT: vspltisw 5, -16
6365 ; PWR7-NEXT: vsrw 3, 2, 3
6366 ; PWR7-NEXT: addi 3, 3, .LCPI58_1@toc@l
6367 ; PWR7-NEXT: vspltisb 0, 15
6368 ; PWR7-NEXT: xxland 35, 35, 0
6369 ; PWR7-NEXT: lxvw4x 0, 0, 3
6370 ; PWR7-NEXT: vsubuwm 2, 2, 3
6371 ; PWR7-NEXT: vsrw 3, 2, 4
6372 ; PWR7-NEXT: xxland 34, 34, 0
6373 ; PWR7-NEXT: vspltisw 4, 4
6374 ; PWR7-NEXT: xxland 35, 35, 0
6375 ; PWR7-NEXT: vadduwm 2, 2, 3
6376 ; PWR7-NEXT: vsrw 3, 2, 4
6377 ; PWR7-NEXT: vspltisb 4, 1
6378 ; PWR7-NEXT: vrlw 1, 4, 5
6379 ; PWR7-NEXT: vadduwm 2, 2, 3
6380 ; PWR7-NEXT: xxlxor 35, 35, 35
6381 ; PWR7-NEXT: xxland 34, 34, 32
6382 ; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
6383 ; PWR7-NEXT: vmulouh 2, 2, 4
6384 ; PWR7-NEXT: vspltisw 4, 12
6385 ; PWR7-NEXT: vslw 3, 3, 5
6386 ; PWR7-NEXT: vadduwm 2, 2, 3
6387 ; PWR7-NEXT: vadduwm 3, 4, 4
6388 ; PWR7-NEXT: vsrw 2, 2, 3
6389 ; PWR7-NEXT: vspltisw 3, 10
6390 ; PWR7-NEXT: vcmpgtuw 2, 2, 3
6393 ; PWR8-LABEL: ugt_10_v4i32:
6395 ; PWR8-NEXT: vspltisw 3, 10
6396 ; PWR8-NEXT: vpopcntw 2, 2
6397 ; PWR8-NEXT: vcmpgtuw 2, 2, 3
6400 ; PWR9-LABEL: ugt_10_v4i32:
6402 ; PWR9-NEXT: vpopcntw 2, 2
6403 ; PWR9-NEXT: vspltisw 3, 10
6404 ; PWR9-NEXT: vcmpgtuw 2, 2, 3
6406 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
6407 %3 = icmp ugt <4 x i32> %2, <i32 10, i32 10, i32 10, i32 10>
6408 %4 = sext <4 x i1> %3 to <4 x i32>
6412 define <4 x i32> @ult_11_v4i32(<4 x i32> %0) {
6413 ; PWR5-LABEL: ult_11_v4i32:
6415 ; PWR5-NEXT: addis 3, 2, .LCPI59_0@toc@ha
6416 ; PWR5-NEXT: vspltisw 4, 1
6417 ; PWR5-NEXT: vxor 3, 3, 3
6418 ; PWR5-NEXT: addi 3, 3, .LCPI59_0@toc@l
6419 ; PWR5-NEXT: lvx 5, 0, 3
6420 ; PWR5-NEXT: addis 3, 2, .LCPI59_1@toc@ha
6421 ; PWR5-NEXT: addi 3, 3, .LCPI59_1@toc@l
6422 ; PWR5-NEXT: vspltisw 0, 2
6423 ; PWR5-NEXT: vsrw 4, 2, 4
6424 ; PWR5-NEXT: vand 4, 4, 5
6425 ; PWR5-NEXT: lvx 5, 0, 3
6426 ; PWR5-NEXT: vsubuwm 2, 2, 4
6427 ; PWR5-NEXT: vand 4, 2, 5
6428 ; PWR5-NEXT: vsrw 2, 2, 0
6429 ; PWR5-NEXT: vand 2, 2, 5
6430 ; PWR5-NEXT: vspltisw 5, 4
6431 ; PWR5-NEXT: vadduwm 2, 4, 2
6432 ; PWR5-NEXT: vsrw 4, 2, 5
6433 ; PWR5-NEXT: vspltisb 5, 15
6434 ; PWR5-NEXT: vadduwm 2, 2, 4
6435 ; PWR5-NEXT: vspltisb 4, 1
6436 ; PWR5-NEXT: vand 2, 2, 5
6437 ; PWR5-NEXT: vspltisw 5, -16
6438 ; PWR5-NEXT: vrlw 0, 4, 5
6439 ; PWR5-NEXT: vmulouh 4, 2, 4
6440 ; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
6441 ; PWR5-NEXT: vspltisw 3, 12
6442 ; PWR5-NEXT: vadduwm 3, 3, 3
6443 ; PWR5-NEXT: vslw 2, 2, 5
6444 ; PWR5-NEXT: vadduwm 2, 4, 2
6445 ; PWR5-NEXT: vsrw 2, 2, 3
6446 ; PWR5-NEXT: vspltisw 3, 11
6447 ; PWR5-NEXT: vcmpgtuw 2, 3, 2
6450 ; PWR6-LABEL: ult_11_v4i32:
6452 ; PWR6-NEXT: addis 3, 2, .LCPI59_0@toc@ha
6453 ; PWR6-NEXT: vspltisw 4, 1
6454 ; PWR6-NEXT: vxor 3, 3, 3
6455 ; PWR6-NEXT: addi 3, 3, .LCPI59_0@toc@l
6456 ; PWR6-NEXT: lvx 5, 0, 3
6457 ; PWR6-NEXT: addis 3, 2, .LCPI59_1@toc@ha
6458 ; PWR6-NEXT: addi 3, 3, .LCPI59_1@toc@l
6459 ; PWR6-NEXT: vspltisw 0, 2
6460 ; PWR6-NEXT: vsrw 4, 2, 4
6461 ; PWR6-NEXT: vand 4, 4, 5
6462 ; PWR6-NEXT: lvx 5, 0, 3
6463 ; PWR6-NEXT: vsubuwm 2, 2, 4
6464 ; PWR6-NEXT: vand 4, 2, 5
6465 ; PWR6-NEXT: vsrw 2, 2, 0
6466 ; PWR6-NEXT: vand 2, 2, 5
6467 ; PWR6-NEXT: vspltisw 5, 4
6468 ; PWR6-NEXT: vadduwm 2, 4, 2
6469 ; PWR6-NEXT: vsrw 4, 2, 5
6470 ; PWR6-NEXT: vspltisb 5, 15
6471 ; PWR6-NEXT: vadduwm 2, 2, 4
6472 ; PWR6-NEXT: vspltisb 4, 1
6473 ; PWR6-NEXT: vand 2, 2, 5
6474 ; PWR6-NEXT: vspltisw 5, -16
6475 ; PWR6-NEXT: vrlw 0, 4, 5
6476 ; PWR6-NEXT: vmulouh 4, 2, 4
6477 ; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
6478 ; PWR6-NEXT: vspltisw 3, 12
6479 ; PWR6-NEXT: vadduwm 3, 3, 3
6480 ; PWR6-NEXT: vslw 2, 2, 5
6481 ; PWR6-NEXT: vadduwm 2, 4, 2
6482 ; PWR6-NEXT: vsrw 2, 2, 3
6483 ; PWR6-NEXT: vspltisw 3, 11
6484 ; PWR6-NEXT: vcmpgtuw 2, 3, 2
6487 ; PWR7-LABEL: ult_11_v4i32:
6489 ; PWR7-NEXT: vspltisw 3, 1
6490 ; PWR7-NEXT: addis 3, 2, .LCPI59_0@toc@ha
6491 ; PWR7-NEXT: addi 3, 3, .LCPI59_0@toc@l
6492 ; PWR7-NEXT: vspltisw 4, 2
6493 ; PWR7-NEXT: lxvw4x 0, 0, 3
6494 ; PWR7-NEXT: addis 3, 2, .LCPI59_1@toc@ha
6495 ; PWR7-NEXT: vspltisw 5, -16
6496 ; PWR7-NEXT: vsrw 3, 2, 3
6497 ; PWR7-NEXT: addi 3, 3, .LCPI59_1@toc@l
6498 ; PWR7-NEXT: vspltisb 0, 15
6499 ; PWR7-NEXT: xxland 35, 35, 0
6500 ; PWR7-NEXT: lxvw4x 0, 0, 3
6501 ; PWR7-NEXT: vsubuwm 2, 2, 3
6502 ; PWR7-NEXT: vsrw 3, 2, 4
6503 ; PWR7-NEXT: xxland 34, 34, 0
6504 ; PWR7-NEXT: vspltisw 4, 4
6505 ; PWR7-NEXT: xxland 35, 35, 0
6506 ; PWR7-NEXT: vadduwm 2, 2, 3
6507 ; PWR7-NEXT: vsrw 3, 2, 4
6508 ; PWR7-NEXT: vspltisb 4, 1
6509 ; PWR7-NEXT: vrlw 1, 4, 5
6510 ; PWR7-NEXT: vadduwm 2, 2, 3
6511 ; PWR7-NEXT: xxlxor 35, 35, 35
6512 ; PWR7-NEXT: xxland 34, 34, 32
6513 ; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
6514 ; PWR7-NEXT: vmulouh 2, 2, 4
6515 ; PWR7-NEXT: vspltisw 4, 12
6516 ; PWR7-NEXT: vslw 3, 3, 5
6517 ; PWR7-NEXT: vadduwm 2, 2, 3
6518 ; PWR7-NEXT: vadduwm 3, 4, 4
6519 ; PWR7-NEXT: vsrw 2, 2, 3
6520 ; PWR7-NEXT: vspltisw 3, 11
6521 ; PWR7-NEXT: vcmpgtuw 2, 3, 2
6524 ; PWR8-LABEL: ult_11_v4i32:
6526 ; PWR8-NEXT: vspltisw 3, 11
6527 ; PWR8-NEXT: vpopcntw 2, 2
6528 ; PWR8-NEXT: vcmpgtuw 2, 3, 2
6531 ; PWR9-LABEL: ult_11_v4i32:
6533 ; PWR9-NEXT: vpopcntw 2, 2
6534 ; PWR9-NEXT: vspltisw 3, 11
6535 ; PWR9-NEXT: vcmpgtuw 2, 3, 2
6537 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
6538 %3 = icmp ult <4 x i32> %2, <i32 11, i32 11, i32 11, i32 11>
6539 %4 = sext <4 x i1> %3 to <4 x i32>
6543 define <4 x i32> @ugt_11_v4i32(<4 x i32> %0) {
6544 ; PWR5-LABEL: ugt_11_v4i32:
6546 ; PWR5-NEXT: addis 3, 2, .LCPI60_0@toc@ha
6547 ; PWR5-NEXT: vspltisw 4, 1
6548 ; PWR5-NEXT: vxor 3, 3, 3
6549 ; PWR5-NEXT: addi 3, 3, .LCPI60_0@toc@l
6550 ; PWR5-NEXT: lvx 5, 0, 3
6551 ; PWR5-NEXT: addis 3, 2, .LCPI60_1@toc@ha
6552 ; PWR5-NEXT: addi 3, 3, .LCPI60_1@toc@l
6553 ; PWR5-NEXT: vspltisw 0, 2
6554 ; PWR5-NEXT: vsrw 4, 2, 4
6555 ; PWR5-NEXT: vand 4, 4, 5
6556 ; PWR5-NEXT: lvx 5, 0, 3
6557 ; PWR5-NEXT: vsubuwm 2, 2, 4
6558 ; PWR5-NEXT: vand 4, 2, 5
6559 ; PWR5-NEXT: vsrw 2, 2, 0
6560 ; PWR5-NEXT: vand 2, 2, 5
6561 ; PWR5-NEXT: vspltisw 5, 4
6562 ; PWR5-NEXT: vadduwm 2, 4, 2
6563 ; PWR5-NEXT: vsrw 4, 2, 5
6564 ; PWR5-NEXT: vspltisb 5, 15
6565 ; PWR5-NEXT: vadduwm 2, 2, 4
6566 ; PWR5-NEXT: vspltisb 4, 1
6567 ; PWR5-NEXT: vand 2, 2, 5
6568 ; PWR5-NEXT: vspltisw 5, -16
6569 ; PWR5-NEXT: vrlw 0, 4, 5
6570 ; PWR5-NEXT: vmulouh 4, 2, 4
6571 ; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
6572 ; PWR5-NEXT: vspltisw 3, 12
6573 ; PWR5-NEXT: vadduwm 3, 3, 3
6574 ; PWR5-NEXT: vslw 2, 2, 5
6575 ; PWR5-NEXT: vadduwm 2, 4, 2
6576 ; PWR5-NEXT: vsrw 2, 2, 3
6577 ; PWR5-NEXT: vspltisw 3, 11
6578 ; PWR5-NEXT: vcmpgtuw 2, 2, 3
6581 ; PWR6-LABEL: ugt_11_v4i32:
6583 ; PWR6-NEXT: addis 3, 2, .LCPI60_0@toc@ha
6584 ; PWR6-NEXT: vspltisw 4, 1
6585 ; PWR6-NEXT: vxor 3, 3, 3
6586 ; PWR6-NEXT: addi 3, 3, .LCPI60_0@toc@l
6587 ; PWR6-NEXT: lvx 5, 0, 3
6588 ; PWR6-NEXT: addis 3, 2, .LCPI60_1@toc@ha
6589 ; PWR6-NEXT: addi 3, 3, .LCPI60_1@toc@l
6590 ; PWR6-NEXT: vspltisw 0, 2
6591 ; PWR6-NEXT: vsrw 4, 2, 4
6592 ; PWR6-NEXT: vand 4, 4, 5
6593 ; PWR6-NEXT: lvx 5, 0, 3
6594 ; PWR6-NEXT: vsubuwm 2, 2, 4
6595 ; PWR6-NEXT: vand 4, 2, 5
6596 ; PWR6-NEXT: vsrw 2, 2, 0
6597 ; PWR6-NEXT: vand 2, 2, 5
6598 ; PWR6-NEXT: vspltisw 5, 4
6599 ; PWR6-NEXT: vadduwm 2, 4, 2
6600 ; PWR6-NEXT: vsrw 4, 2, 5
6601 ; PWR6-NEXT: vspltisb 5, 15
6602 ; PWR6-NEXT: vadduwm 2, 2, 4
6603 ; PWR6-NEXT: vspltisb 4, 1
6604 ; PWR6-NEXT: vand 2, 2, 5
6605 ; PWR6-NEXT: vspltisw 5, -16
6606 ; PWR6-NEXT: vrlw 0, 4, 5
6607 ; PWR6-NEXT: vmulouh 4, 2, 4
6608 ; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
6609 ; PWR6-NEXT: vspltisw 3, 12
6610 ; PWR6-NEXT: vadduwm 3, 3, 3
6611 ; PWR6-NEXT: vslw 2, 2, 5
6612 ; PWR6-NEXT: vadduwm 2, 4, 2
6613 ; PWR6-NEXT: vsrw 2, 2, 3
6614 ; PWR6-NEXT: vspltisw 3, 11
6615 ; PWR6-NEXT: vcmpgtuw 2, 2, 3
6618 ; PWR7-LABEL: ugt_11_v4i32:
6620 ; PWR7-NEXT: vspltisw 3, 1
6621 ; PWR7-NEXT: addis 3, 2, .LCPI60_0@toc@ha
6622 ; PWR7-NEXT: addi 3, 3, .LCPI60_0@toc@l
6623 ; PWR7-NEXT: vspltisw 4, 2
6624 ; PWR7-NEXT: lxvw4x 0, 0, 3
6625 ; PWR7-NEXT: addis 3, 2, .LCPI60_1@toc@ha
6626 ; PWR7-NEXT: vspltisw 5, -16
6627 ; PWR7-NEXT: vsrw 3, 2, 3
6628 ; PWR7-NEXT: addi 3, 3, .LCPI60_1@toc@l
6629 ; PWR7-NEXT: vspltisb 0, 15
6630 ; PWR7-NEXT: xxland 35, 35, 0
6631 ; PWR7-NEXT: lxvw4x 0, 0, 3
6632 ; PWR7-NEXT: vsubuwm 2, 2, 3
6633 ; PWR7-NEXT: vsrw 3, 2, 4
6634 ; PWR7-NEXT: xxland 34, 34, 0
6635 ; PWR7-NEXT: vspltisw 4, 4
6636 ; PWR7-NEXT: xxland 35, 35, 0
6637 ; PWR7-NEXT: vadduwm 2, 2, 3
6638 ; PWR7-NEXT: vsrw 3, 2, 4
6639 ; PWR7-NEXT: vspltisb 4, 1
6640 ; PWR7-NEXT: vrlw 1, 4, 5
6641 ; PWR7-NEXT: vadduwm 2, 2, 3
6642 ; PWR7-NEXT: xxlxor 35, 35, 35
6643 ; PWR7-NEXT: xxland 34, 34, 32
6644 ; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
6645 ; PWR7-NEXT: vmulouh 2, 2, 4
6646 ; PWR7-NEXT: vspltisw 4, 12
6647 ; PWR7-NEXT: vslw 3, 3, 5
6648 ; PWR7-NEXT: vadduwm 2, 2, 3
6649 ; PWR7-NEXT: vadduwm 3, 4, 4
6650 ; PWR7-NEXT: vsrw 2, 2, 3
6651 ; PWR7-NEXT: vspltisw 3, 11
6652 ; PWR7-NEXT: vcmpgtuw 2, 2, 3
6655 ; PWR8-LABEL: ugt_11_v4i32:
6657 ; PWR8-NEXT: vspltisw 3, 11
6658 ; PWR8-NEXT: vpopcntw 2, 2
6659 ; PWR8-NEXT: vcmpgtuw 2, 2, 3
6662 ; PWR9-LABEL: ugt_11_v4i32:
6664 ; PWR9-NEXT: vpopcntw 2, 2
6665 ; PWR9-NEXT: vspltisw 3, 11
6666 ; PWR9-NEXT: vcmpgtuw 2, 2, 3
6668 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
6669 %3 = icmp ugt <4 x i32> %2, <i32 11, i32 11, i32 11, i32 11>
6670 %4 = sext <4 x i1> %3 to <4 x i32>
6674 define <4 x i32> @ult_12_v4i32(<4 x i32> %0) {
6675 ; PWR5-LABEL: ult_12_v4i32:
6677 ; PWR5-NEXT: addis 3, 2, .LCPI61_0@toc@ha
6678 ; PWR5-NEXT: vspltisw 4, 1
6679 ; PWR5-NEXT: vxor 3, 3, 3
6680 ; PWR5-NEXT: addi 3, 3, .LCPI61_0@toc@l
6681 ; PWR5-NEXT: lvx 5, 0, 3
6682 ; PWR5-NEXT: addis 3, 2, .LCPI61_1@toc@ha
6683 ; PWR5-NEXT: addi 3, 3, .LCPI61_1@toc@l
6684 ; PWR5-NEXT: vspltisw 0, 2
6685 ; PWR5-NEXT: vsrw 4, 2, 4
6686 ; PWR5-NEXT: vand 4, 4, 5
6687 ; PWR5-NEXT: lvx 5, 0, 3
6688 ; PWR5-NEXT: vsubuwm 2, 2, 4
6689 ; PWR5-NEXT: vand 4, 2, 5
6690 ; PWR5-NEXT: vsrw 2, 2, 0
6691 ; PWR5-NEXT: vand 2, 2, 5
6692 ; PWR5-NEXT: vspltisw 5, 4
6693 ; PWR5-NEXT: vadduwm 2, 4, 2
6694 ; PWR5-NEXT: vsrw 4, 2, 5
6695 ; PWR5-NEXT: vspltisb 5, 15
6696 ; PWR5-NEXT: vadduwm 2, 2, 4
6697 ; PWR5-NEXT: vspltisb 4, 1
6698 ; PWR5-NEXT: vand 2, 2, 5
6699 ; PWR5-NEXT: vspltisw 5, -16
6700 ; PWR5-NEXT: vrlw 0, 4, 5
6701 ; PWR5-NEXT: vmulouh 4, 2, 4
6702 ; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
6703 ; PWR5-NEXT: vspltisw 3, 12
6704 ; PWR5-NEXT: vslw 2, 2, 5
6705 ; PWR5-NEXT: vadduwm 5, 3, 3
6706 ; PWR5-NEXT: vadduwm 2, 4, 2
6707 ; PWR5-NEXT: vsrw 2, 2, 5
6708 ; PWR5-NEXT: vcmpgtuw 2, 3, 2
6711 ; PWR6-LABEL: ult_12_v4i32:
6713 ; PWR6-NEXT: addis 3, 2, .LCPI61_0@toc@ha
6714 ; PWR6-NEXT: vspltisw 4, 1
6715 ; PWR6-NEXT: vxor 3, 3, 3
6716 ; PWR6-NEXT: addi 3, 3, .LCPI61_0@toc@l
6717 ; PWR6-NEXT: lvx 5, 0, 3
6718 ; PWR6-NEXT: addis 3, 2, .LCPI61_1@toc@ha
6719 ; PWR6-NEXT: addi 3, 3, .LCPI61_1@toc@l
6720 ; PWR6-NEXT: vspltisw 0, 2
6721 ; PWR6-NEXT: vsrw 4, 2, 4
6722 ; PWR6-NEXT: vand 4, 4, 5
6723 ; PWR6-NEXT: lvx 5, 0, 3
6724 ; PWR6-NEXT: vsubuwm 2, 2, 4
6725 ; PWR6-NEXT: vand 4, 2, 5
6726 ; PWR6-NEXT: vsrw 2, 2, 0
6727 ; PWR6-NEXT: vand 2, 2, 5
6728 ; PWR6-NEXT: vspltisw 5, 4
6729 ; PWR6-NEXT: vadduwm 2, 4, 2
6730 ; PWR6-NEXT: vsrw 4, 2, 5
6731 ; PWR6-NEXT: vspltisb 5, 15
6732 ; PWR6-NEXT: vadduwm 2, 2, 4
6733 ; PWR6-NEXT: vspltisb 4, 1
6734 ; PWR6-NEXT: vand 2, 2, 5
6735 ; PWR6-NEXT: vspltisw 5, -16
6736 ; PWR6-NEXT: vrlw 0, 4, 5
6737 ; PWR6-NEXT: vmulouh 4, 2, 4
6738 ; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
6739 ; PWR6-NEXT: vspltisw 3, 12
6740 ; PWR6-NEXT: vslw 2, 2, 5
6741 ; PWR6-NEXT: vadduwm 5, 3, 3
6742 ; PWR6-NEXT: vadduwm 2, 4, 2
6743 ; PWR6-NEXT: vsrw 2, 2, 5
6744 ; PWR6-NEXT: vcmpgtuw 2, 3, 2
6747 ; PWR7-LABEL: ult_12_v4i32:
6749 ; PWR7-NEXT: vspltisw 3, 1
6750 ; PWR7-NEXT: addis 3, 2, .LCPI61_0@toc@ha
6751 ; PWR7-NEXT: addi 3, 3, .LCPI61_0@toc@l
6752 ; PWR7-NEXT: vspltisw 4, 2
6753 ; PWR7-NEXT: lxvw4x 0, 0, 3
6754 ; PWR7-NEXT: addis 3, 2, .LCPI61_1@toc@ha
6755 ; PWR7-NEXT: vspltisw 5, -16
6756 ; PWR7-NEXT: vsrw 3, 2, 3
6757 ; PWR7-NEXT: addi 3, 3, .LCPI61_1@toc@l
6758 ; PWR7-NEXT: vspltisb 0, 15
6759 ; PWR7-NEXT: xxland 35, 35, 0
6760 ; PWR7-NEXT: lxvw4x 0, 0, 3
6761 ; PWR7-NEXT: vsubuwm 2, 2, 3
6762 ; PWR7-NEXT: vsrw 3, 2, 4
6763 ; PWR7-NEXT: xxland 34, 34, 0
6764 ; PWR7-NEXT: vspltisw 4, 4
6765 ; PWR7-NEXT: xxland 35, 35, 0
6766 ; PWR7-NEXT: vadduwm 2, 2, 3
6767 ; PWR7-NEXT: vsrw 3, 2, 4
6768 ; PWR7-NEXT: vspltisb 4, 1
6769 ; PWR7-NEXT: vrlw 1, 4, 5
6770 ; PWR7-NEXT: vadduwm 2, 2, 3
6771 ; PWR7-NEXT: xxlxor 35, 35, 35
6772 ; PWR7-NEXT: xxland 34, 34, 32
6773 ; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
6774 ; PWR7-NEXT: vmulouh 2, 2, 4
6775 ; PWR7-NEXT: vspltisw 4, 12
6776 ; PWR7-NEXT: vslw 3, 3, 5
6777 ; PWR7-NEXT: vadduwm 2, 2, 3
6778 ; PWR7-NEXT: vadduwm 3, 4, 4
6779 ; PWR7-NEXT: vsrw 2, 2, 3
6780 ; PWR7-NEXT: vcmpgtuw 2, 4, 2
6783 ; PWR8-LABEL: ult_12_v4i32:
6785 ; PWR8-NEXT: vspltisw 3, 12
6786 ; PWR8-NEXT: vpopcntw 2, 2
6787 ; PWR8-NEXT: vcmpgtuw 2, 3, 2
6790 ; PWR9-LABEL: ult_12_v4i32:
6792 ; PWR9-NEXT: vpopcntw 2, 2
6793 ; PWR9-NEXT: vspltisw 3, 12
6794 ; PWR9-NEXT: vcmpgtuw 2, 3, 2
6796 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
6797 %3 = icmp ult <4 x i32> %2, <i32 12, i32 12, i32 12, i32 12>
6798 %4 = sext <4 x i1> %3 to <4 x i32>
6802 define <4 x i32> @ugt_12_v4i32(<4 x i32> %0) {
6803 ; PWR5-LABEL: ugt_12_v4i32:
6805 ; PWR5-NEXT: addis 3, 2, .LCPI62_0@toc@ha
6806 ; PWR5-NEXT: vspltisw 4, 1
6807 ; PWR5-NEXT: vxor 3, 3, 3
6808 ; PWR5-NEXT: addi 3, 3, .LCPI62_0@toc@l
6809 ; PWR5-NEXT: lvx 5, 0, 3
6810 ; PWR5-NEXT: addis 3, 2, .LCPI62_1@toc@ha
6811 ; PWR5-NEXT: addi 3, 3, .LCPI62_1@toc@l
6812 ; PWR5-NEXT: vspltisw 0, 2
6813 ; PWR5-NEXT: vsrw 4, 2, 4
6814 ; PWR5-NEXT: vand 4, 4, 5
6815 ; PWR5-NEXT: lvx 5, 0, 3
6816 ; PWR5-NEXT: vsubuwm 2, 2, 4
6817 ; PWR5-NEXT: vand 4, 2, 5
6818 ; PWR5-NEXT: vsrw 2, 2, 0
6819 ; PWR5-NEXT: vand 2, 2, 5
6820 ; PWR5-NEXT: vspltisw 5, 4
6821 ; PWR5-NEXT: vadduwm 2, 4, 2
6822 ; PWR5-NEXT: vsrw 4, 2, 5
6823 ; PWR5-NEXT: vspltisb 5, 15
6824 ; PWR5-NEXT: vadduwm 2, 2, 4
6825 ; PWR5-NEXT: vspltisb 4, 1
6826 ; PWR5-NEXT: vand 2, 2, 5
6827 ; PWR5-NEXT: vspltisw 5, -16
6828 ; PWR5-NEXT: vrlw 0, 4, 5
6829 ; PWR5-NEXT: vmulouh 4, 2, 4
6830 ; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
6831 ; PWR5-NEXT: vspltisw 3, 12
6832 ; PWR5-NEXT: vslw 2, 2, 5
6833 ; PWR5-NEXT: vadduwm 5, 3, 3
6834 ; PWR5-NEXT: vadduwm 2, 4, 2
6835 ; PWR5-NEXT: vsrw 2, 2, 5
6836 ; PWR5-NEXT: vcmpgtuw 2, 2, 3
6839 ; PWR6-LABEL: ugt_12_v4i32:
6841 ; PWR6-NEXT: addis 3, 2, .LCPI62_0@toc@ha
6842 ; PWR6-NEXT: vspltisw 4, 1
6843 ; PWR6-NEXT: vxor 3, 3, 3
6844 ; PWR6-NEXT: addi 3, 3, .LCPI62_0@toc@l
6845 ; PWR6-NEXT: lvx 5, 0, 3
6846 ; PWR6-NEXT: addis 3, 2, .LCPI62_1@toc@ha
6847 ; PWR6-NEXT: addi 3, 3, .LCPI62_1@toc@l
6848 ; PWR6-NEXT: vspltisw 0, 2
6849 ; PWR6-NEXT: vsrw 4, 2, 4
6850 ; PWR6-NEXT: vand 4, 4, 5
6851 ; PWR6-NEXT: lvx 5, 0, 3
6852 ; PWR6-NEXT: vsubuwm 2, 2, 4
6853 ; PWR6-NEXT: vand 4, 2, 5
6854 ; PWR6-NEXT: vsrw 2, 2, 0
6855 ; PWR6-NEXT: vand 2, 2, 5
6856 ; PWR6-NEXT: vspltisw 5, 4
6857 ; PWR6-NEXT: vadduwm 2, 4, 2
6858 ; PWR6-NEXT: vsrw 4, 2, 5
6859 ; PWR6-NEXT: vspltisb 5, 15
6860 ; PWR6-NEXT: vadduwm 2, 2, 4
6861 ; PWR6-NEXT: vspltisb 4, 1
6862 ; PWR6-NEXT: vand 2, 2, 5
6863 ; PWR6-NEXT: vspltisw 5, -16
6864 ; PWR6-NEXT: vrlw 0, 4, 5
6865 ; PWR6-NEXT: vmulouh 4, 2, 4
6866 ; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
6867 ; PWR6-NEXT: vspltisw 3, 12
6868 ; PWR6-NEXT: vslw 2, 2, 5
6869 ; PWR6-NEXT: vadduwm 5, 3, 3
6870 ; PWR6-NEXT: vadduwm 2, 4, 2
6871 ; PWR6-NEXT: vsrw 2, 2, 5
6872 ; PWR6-NEXT: vcmpgtuw 2, 2, 3
6875 ; PWR7-LABEL: ugt_12_v4i32:
6877 ; PWR7-NEXT: vspltisw 3, 1
6878 ; PWR7-NEXT: addis 3, 2, .LCPI62_0@toc@ha
6879 ; PWR7-NEXT: addi 3, 3, .LCPI62_0@toc@l
6880 ; PWR7-NEXT: vspltisw 4, 2
6881 ; PWR7-NEXT: lxvw4x 0, 0, 3
6882 ; PWR7-NEXT: addis 3, 2, .LCPI62_1@toc@ha
6883 ; PWR7-NEXT: vspltisw 5, -16
6884 ; PWR7-NEXT: vsrw 3, 2, 3
6885 ; PWR7-NEXT: addi 3, 3, .LCPI62_1@toc@l
6886 ; PWR7-NEXT: vspltisb 0, 15
6887 ; PWR7-NEXT: xxland 35, 35, 0
6888 ; PWR7-NEXT: lxvw4x 0, 0, 3
6889 ; PWR7-NEXT: vsubuwm 2, 2, 3
6890 ; PWR7-NEXT: vsrw 3, 2, 4
6891 ; PWR7-NEXT: xxland 34, 34, 0
6892 ; PWR7-NEXT: vspltisw 4, 4
6893 ; PWR7-NEXT: xxland 35, 35, 0
6894 ; PWR7-NEXT: vadduwm 2, 2, 3
6895 ; PWR7-NEXT: vsrw 3, 2, 4
6896 ; PWR7-NEXT: vspltisb 4, 1
6897 ; PWR7-NEXT: vrlw 1, 4, 5
6898 ; PWR7-NEXT: vadduwm 2, 2, 3
6899 ; PWR7-NEXT: xxlxor 35, 35, 35
6900 ; PWR7-NEXT: xxland 34, 34, 32
6901 ; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
6902 ; PWR7-NEXT: vmulouh 2, 2, 4
6903 ; PWR7-NEXT: vspltisw 4, 12
6904 ; PWR7-NEXT: vslw 3, 3, 5
6905 ; PWR7-NEXT: vadduwm 2, 2, 3
6906 ; PWR7-NEXT: vadduwm 3, 4, 4
6907 ; PWR7-NEXT: vsrw 2, 2, 3
6908 ; PWR7-NEXT: vcmpgtuw 2, 2, 4
6911 ; PWR8-LABEL: ugt_12_v4i32:
6913 ; PWR8-NEXT: vspltisw 3, 12
6914 ; PWR8-NEXT: vpopcntw 2, 2
6915 ; PWR8-NEXT: vcmpgtuw 2, 2, 3
6918 ; PWR9-LABEL: ugt_12_v4i32:
6920 ; PWR9-NEXT: vpopcntw 2, 2
6921 ; PWR9-NEXT: vspltisw 3, 12
6922 ; PWR9-NEXT: vcmpgtuw 2, 2, 3
6924 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
6925 %3 = icmp ugt <4 x i32> %2, <i32 12, i32 12, i32 12, i32 12>
6926 %4 = sext <4 x i1> %3 to <4 x i32>
6930 define <4 x i32> @ult_13_v4i32(<4 x i32> %0) {
6931 ; PWR5-LABEL: ult_13_v4i32:
6933 ; PWR5-NEXT: addis 3, 2, .LCPI63_0@toc@ha
6934 ; PWR5-NEXT: vspltisw 4, 1
6935 ; PWR5-NEXT: vxor 3, 3, 3
6936 ; PWR5-NEXT: addi 3, 3, .LCPI63_0@toc@l
6937 ; PWR5-NEXT: lvx 5, 0, 3
6938 ; PWR5-NEXT: addis 3, 2, .LCPI63_1@toc@ha
6939 ; PWR5-NEXT: addi 3, 3, .LCPI63_1@toc@l
6940 ; PWR5-NEXT: vspltisw 0, 2
6941 ; PWR5-NEXT: vsrw 4, 2, 4
6942 ; PWR5-NEXT: vand 4, 4, 5
6943 ; PWR5-NEXT: lvx 5, 0, 3
6944 ; PWR5-NEXT: vsubuwm 2, 2, 4
6945 ; PWR5-NEXT: vand 4, 2, 5
6946 ; PWR5-NEXT: vsrw 2, 2, 0
6947 ; PWR5-NEXT: vand 2, 2, 5
6948 ; PWR5-NEXT: vspltisw 5, 4
6949 ; PWR5-NEXT: vadduwm 2, 4, 2
6950 ; PWR5-NEXT: vsrw 4, 2, 5
6951 ; PWR5-NEXT: vspltisb 5, 15
6952 ; PWR5-NEXT: vadduwm 2, 2, 4
6953 ; PWR5-NEXT: vspltisb 4, 1
6954 ; PWR5-NEXT: vand 2, 2, 5
6955 ; PWR5-NEXT: vspltisw 5, -16
6956 ; PWR5-NEXT: vrlw 0, 4, 5
6957 ; PWR5-NEXT: vmulouh 4, 2, 4
6958 ; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
6959 ; PWR5-NEXT: vspltisw 3, 12
6960 ; PWR5-NEXT: vadduwm 3, 3, 3
6961 ; PWR5-NEXT: vslw 2, 2, 5
6962 ; PWR5-NEXT: vadduwm 2, 4, 2
6963 ; PWR5-NEXT: vsrw 2, 2, 3
6964 ; PWR5-NEXT: vspltisw 3, 13
6965 ; PWR5-NEXT: vcmpgtuw 2, 3, 2
6968 ; PWR6-LABEL: ult_13_v4i32:
6970 ; PWR6-NEXT: addis 3, 2, .LCPI63_0@toc@ha
6971 ; PWR6-NEXT: vspltisw 4, 1
6972 ; PWR6-NEXT: vxor 3, 3, 3
6973 ; PWR6-NEXT: addi 3, 3, .LCPI63_0@toc@l
6974 ; PWR6-NEXT: lvx 5, 0, 3
6975 ; PWR6-NEXT: addis 3, 2, .LCPI63_1@toc@ha
6976 ; PWR6-NEXT: addi 3, 3, .LCPI63_1@toc@l
6977 ; PWR6-NEXT: vspltisw 0, 2
6978 ; PWR6-NEXT: vsrw 4, 2, 4
6979 ; PWR6-NEXT: vand 4, 4, 5
6980 ; PWR6-NEXT: lvx 5, 0, 3
6981 ; PWR6-NEXT: vsubuwm 2, 2, 4
6982 ; PWR6-NEXT: vand 4, 2, 5
6983 ; PWR6-NEXT: vsrw 2, 2, 0
6984 ; PWR6-NEXT: vand 2, 2, 5
6985 ; PWR6-NEXT: vspltisw 5, 4
6986 ; PWR6-NEXT: vadduwm 2, 4, 2
6987 ; PWR6-NEXT: vsrw 4, 2, 5
6988 ; PWR6-NEXT: vspltisb 5, 15
6989 ; PWR6-NEXT: vadduwm 2, 2, 4
6990 ; PWR6-NEXT: vspltisb 4, 1
6991 ; PWR6-NEXT: vand 2, 2, 5
6992 ; PWR6-NEXT: vspltisw 5, -16
6993 ; PWR6-NEXT: vrlw 0, 4, 5
6994 ; PWR6-NEXT: vmulouh 4, 2, 4
6995 ; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
6996 ; PWR6-NEXT: vspltisw 3, 12
6997 ; PWR6-NEXT: vadduwm 3, 3, 3
6998 ; PWR6-NEXT: vslw 2, 2, 5
6999 ; PWR6-NEXT: vadduwm 2, 4, 2
7000 ; PWR6-NEXT: vsrw 2, 2, 3
7001 ; PWR6-NEXT: vspltisw 3, 13
7002 ; PWR6-NEXT: vcmpgtuw 2, 3, 2
7005 ; PWR7-LABEL: ult_13_v4i32:
7007 ; PWR7-NEXT: vspltisw 3, 1
7008 ; PWR7-NEXT: addis 3, 2, .LCPI63_0@toc@ha
7009 ; PWR7-NEXT: addi 3, 3, .LCPI63_0@toc@l
7010 ; PWR7-NEXT: vspltisw 4, 2
7011 ; PWR7-NEXT: lxvw4x 0, 0, 3
7012 ; PWR7-NEXT: addis 3, 2, .LCPI63_1@toc@ha
7013 ; PWR7-NEXT: vspltisw 5, -16
7014 ; PWR7-NEXT: vsrw 3, 2, 3
7015 ; PWR7-NEXT: addi 3, 3, .LCPI63_1@toc@l
7016 ; PWR7-NEXT: vspltisb 0, 15
7017 ; PWR7-NEXT: xxland 35, 35, 0
7018 ; PWR7-NEXT: lxvw4x 0, 0, 3
7019 ; PWR7-NEXT: vsubuwm 2, 2, 3
7020 ; PWR7-NEXT: vsrw 3, 2, 4
7021 ; PWR7-NEXT: xxland 34, 34, 0
7022 ; PWR7-NEXT: vspltisw 4, 4
7023 ; PWR7-NEXT: xxland 35, 35, 0
7024 ; PWR7-NEXT: vadduwm 2, 2, 3
7025 ; PWR7-NEXT: vsrw 3, 2, 4
7026 ; PWR7-NEXT: vspltisb 4, 1
7027 ; PWR7-NEXT: vrlw 1, 4, 5
7028 ; PWR7-NEXT: vadduwm 2, 2, 3
7029 ; PWR7-NEXT: xxlxor 35, 35, 35
7030 ; PWR7-NEXT: xxland 34, 34, 32
7031 ; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
7032 ; PWR7-NEXT: vmulouh 2, 2, 4
7033 ; PWR7-NEXT: vspltisw 4, 12
7034 ; PWR7-NEXT: vslw 3, 3, 5
7035 ; PWR7-NEXT: vadduwm 2, 2, 3
7036 ; PWR7-NEXT: vadduwm 3, 4, 4
7037 ; PWR7-NEXT: vsrw 2, 2, 3
7038 ; PWR7-NEXT: vspltisw 3, 13
7039 ; PWR7-NEXT: vcmpgtuw 2, 3, 2
7042 ; PWR8-LABEL: ult_13_v4i32:
7044 ; PWR8-NEXT: vspltisw 3, 13
7045 ; PWR8-NEXT: vpopcntw 2, 2
7046 ; PWR8-NEXT: vcmpgtuw 2, 3, 2
7049 ; PWR9-LABEL: ult_13_v4i32:
7051 ; PWR9-NEXT: vpopcntw 2, 2
7052 ; PWR9-NEXT: vspltisw 3, 13
7053 ; PWR9-NEXT: vcmpgtuw 2, 3, 2
7055 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
7056 %3 = icmp ult <4 x i32> %2, <i32 13, i32 13, i32 13, i32 13>
7057 %4 = sext <4 x i1> %3 to <4 x i32>
7061 define <4 x i32> @ugt_13_v4i32(<4 x i32> %0) {
7062 ; PWR5-LABEL: ugt_13_v4i32:
7064 ; PWR5-NEXT: addis 3, 2, .LCPI64_0@toc@ha
7065 ; PWR5-NEXT: vspltisw 4, 1
7066 ; PWR5-NEXT: vxor 3, 3, 3
7067 ; PWR5-NEXT: addi 3, 3, .LCPI64_0@toc@l
7068 ; PWR5-NEXT: lvx 5, 0, 3
7069 ; PWR5-NEXT: addis 3, 2, .LCPI64_1@toc@ha
7070 ; PWR5-NEXT: addi 3, 3, .LCPI64_1@toc@l
7071 ; PWR5-NEXT: vspltisw 0, 2
7072 ; PWR5-NEXT: vsrw 4, 2, 4
7073 ; PWR5-NEXT: vand 4, 4, 5
7074 ; PWR5-NEXT: lvx 5, 0, 3
7075 ; PWR5-NEXT: vsubuwm 2, 2, 4
7076 ; PWR5-NEXT: vand 4, 2, 5
7077 ; PWR5-NEXT: vsrw 2, 2, 0
7078 ; PWR5-NEXT: vand 2, 2, 5
7079 ; PWR5-NEXT: vspltisw 5, 4
7080 ; PWR5-NEXT: vadduwm 2, 4, 2
7081 ; PWR5-NEXT: vsrw 4, 2, 5
7082 ; PWR5-NEXT: vspltisb 5, 15
7083 ; PWR5-NEXT: vadduwm 2, 2, 4
7084 ; PWR5-NEXT: vspltisb 4, 1
7085 ; PWR5-NEXT: vand 2, 2, 5
7086 ; PWR5-NEXT: vspltisw 5, -16
7087 ; PWR5-NEXT: vrlw 0, 4, 5
7088 ; PWR5-NEXT: vmulouh 4, 2, 4
7089 ; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
7090 ; PWR5-NEXT: vspltisw 3, 12
7091 ; PWR5-NEXT: vadduwm 3, 3, 3
7092 ; PWR5-NEXT: vslw 2, 2, 5
7093 ; PWR5-NEXT: vadduwm 2, 4, 2
7094 ; PWR5-NEXT: vsrw 2, 2, 3
7095 ; PWR5-NEXT: vspltisw 3, 13
7096 ; PWR5-NEXT: vcmpgtuw 2, 2, 3
7099 ; PWR6-LABEL: ugt_13_v4i32:
7101 ; PWR6-NEXT: addis 3, 2, .LCPI64_0@toc@ha
7102 ; PWR6-NEXT: vspltisw 4, 1
7103 ; PWR6-NEXT: vxor 3, 3, 3
7104 ; PWR6-NEXT: addi 3, 3, .LCPI64_0@toc@l
7105 ; PWR6-NEXT: lvx 5, 0, 3
7106 ; PWR6-NEXT: addis 3, 2, .LCPI64_1@toc@ha
7107 ; PWR6-NEXT: addi 3, 3, .LCPI64_1@toc@l
7108 ; PWR6-NEXT: vspltisw 0, 2
7109 ; PWR6-NEXT: vsrw 4, 2, 4
7110 ; PWR6-NEXT: vand 4, 4, 5
7111 ; PWR6-NEXT: lvx 5, 0, 3
7112 ; PWR6-NEXT: vsubuwm 2, 2, 4
7113 ; PWR6-NEXT: vand 4, 2, 5
7114 ; PWR6-NEXT: vsrw 2, 2, 0
7115 ; PWR6-NEXT: vand 2, 2, 5
7116 ; PWR6-NEXT: vspltisw 5, 4
7117 ; PWR6-NEXT: vadduwm 2, 4, 2
7118 ; PWR6-NEXT: vsrw 4, 2, 5
7119 ; PWR6-NEXT: vspltisb 5, 15
7120 ; PWR6-NEXT: vadduwm 2, 2, 4
7121 ; PWR6-NEXT: vspltisb 4, 1
7122 ; PWR6-NEXT: vand 2, 2, 5
7123 ; PWR6-NEXT: vspltisw 5, -16
7124 ; PWR6-NEXT: vrlw 0, 4, 5
7125 ; PWR6-NEXT: vmulouh 4, 2, 4
7126 ; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
7127 ; PWR6-NEXT: vspltisw 3, 12
7128 ; PWR6-NEXT: vadduwm 3, 3, 3
7129 ; PWR6-NEXT: vslw 2, 2, 5
7130 ; PWR6-NEXT: vadduwm 2, 4, 2
7131 ; PWR6-NEXT: vsrw 2, 2, 3
7132 ; PWR6-NEXT: vspltisw 3, 13
7133 ; PWR6-NEXT: vcmpgtuw 2, 2, 3
7136 ; PWR7-LABEL: ugt_13_v4i32:
7138 ; PWR7-NEXT: vspltisw 3, 1
7139 ; PWR7-NEXT: addis 3, 2, .LCPI64_0@toc@ha
7140 ; PWR7-NEXT: addi 3, 3, .LCPI64_0@toc@l
7141 ; PWR7-NEXT: vspltisw 4, 2
7142 ; PWR7-NEXT: lxvw4x 0, 0, 3
7143 ; PWR7-NEXT: addis 3, 2, .LCPI64_1@toc@ha
7144 ; PWR7-NEXT: vspltisw 5, -16
7145 ; PWR7-NEXT: vsrw 3, 2, 3
7146 ; PWR7-NEXT: addi 3, 3, .LCPI64_1@toc@l
7147 ; PWR7-NEXT: vspltisb 0, 15
7148 ; PWR7-NEXT: xxland 35, 35, 0
7149 ; PWR7-NEXT: lxvw4x 0, 0, 3
7150 ; PWR7-NEXT: vsubuwm 2, 2, 3
7151 ; PWR7-NEXT: vsrw 3, 2, 4
7152 ; PWR7-NEXT: xxland 34, 34, 0
7153 ; PWR7-NEXT: vspltisw 4, 4
7154 ; PWR7-NEXT: xxland 35, 35, 0
7155 ; PWR7-NEXT: vadduwm 2, 2, 3
7156 ; PWR7-NEXT: vsrw 3, 2, 4
7157 ; PWR7-NEXT: vspltisb 4, 1
7158 ; PWR7-NEXT: vrlw 1, 4, 5
7159 ; PWR7-NEXT: vadduwm 2, 2, 3
7160 ; PWR7-NEXT: xxlxor 35, 35, 35
7161 ; PWR7-NEXT: xxland 34, 34, 32
7162 ; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
7163 ; PWR7-NEXT: vmulouh 2, 2, 4
7164 ; PWR7-NEXT: vspltisw 4, 12
7165 ; PWR7-NEXT: vslw 3, 3, 5
7166 ; PWR7-NEXT: vadduwm 2, 2, 3
7167 ; PWR7-NEXT: vadduwm 3, 4, 4
7168 ; PWR7-NEXT: vsrw 2, 2, 3
7169 ; PWR7-NEXT: vspltisw 3, 13
7170 ; PWR7-NEXT: vcmpgtuw 2, 2, 3
7173 ; PWR8-LABEL: ugt_13_v4i32:
7175 ; PWR8-NEXT: vspltisw 3, 13
7176 ; PWR8-NEXT: vpopcntw 2, 2
7177 ; PWR8-NEXT: vcmpgtuw 2, 2, 3
7180 ; PWR9-LABEL: ugt_13_v4i32:
7182 ; PWR9-NEXT: vpopcntw 2, 2
7183 ; PWR9-NEXT: vspltisw 3, 13
7184 ; PWR9-NEXT: vcmpgtuw 2, 2, 3
7186 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
7187 %3 = icmp ugt <4 x i32> %2, <i32 13, i32 13, i32 13, i32 13>
7188 %4 = sext <4 x i1> %3 to <4 x i32>
7192 define <4 x i32> @ult_14_v4i32(<4 x i32> %0) {
7193 ; PWR5-LABEL: ult_14_v4i32:
7195 ; PWR5-NEXT: addis 3, 2, .LCPI65_0@toc@ha
7196 ; PWR5-NEXT: vspltisw 4, 1
7197 ; PWR5-NEXT: vxor 3, 3, 3
7198 ; PWR5-NEXT: addi 3, 3, .LCPI65_0@toc@l
7199 ; PWR5-NEXT: lvx 5, 0, 3
7200 ; PWR5-NEXT: addis 3, 2, .LCPI65_1@toc@ha
7201 ; PWR5-NEXT: addi 3, 3, .LCPI65_1@toc@l
7202 ; PWR5-NEXT: vspltisw 0, 2
7203 ; PWR5-NEXT: vsrw 4, 2, 4
7204 ; PWR5-NEXT: vand 4, 4, 5
7205 ; PWR5-NEXT: lvx 5, 0, 3
7206 ; PWR5-NEXT: vsubuwm 2, 2, 4
7207 ; PWR5-NEXT: vand 4, 2, 5
7208 ; PWR5-NEXT: vsrw 2, 2, 0
7209 ; PWR5-NEXT: vand 2, 2, 5
7210 ; PWR5-NEXT: vspltisw 5, 4
7211 ; PWR5-NEXT: vadduwm 2, 4, 2
7212 ; PWR5-NEXT: vsrw 4, 2, 5
7213 ; PWR5-NEXT: vspltisb 5, 15
7214 ; PWR5-NEXT: vadduwm 2, 2, 4
7215 ; PWR5-NEXT: vspltisb 4, 1
7216 ; PWR5-NEXT: vand 2, 2, 5
7217 ; PWR5-NEXT: vspltisw 5, -16
7218 ; PWR5-NEXT: vrlw 0, 4, 5
7219 ; PWR5-NEXT: vmulouh 4, 2, 4
7220 ; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
7221 ; PWR5-NEXT: vspltisw 3, 12
7222 ; PWR5-NEXT: vadduwm 3, 3, 3
7223 ; PWR5-NEXT: vslw 2, 2, 5
7224 ; PWR5-NEXT: vadduwm 2, 4, 2
7225 ; PWR5-NEXT: vsrw 2, 2, 3
7226 ; PWR5-NEXT: vspltisw 3, 14
7227 ; PWR5-NEXT: vcmpgtuw 2, 3, 2
7230 ; PWR6-LABEL: ult_14_v4i32:
7232 ; PWR6-NEXT: addis 3, 2, .LCPI65_0@toc@ha
7233 ; PWR6-NEXT: vspltisw 4, 1
7234 ; PWR6-NEXT: vxor 3, 3, 3
7235 ; PWR6-NEXT: addi 3, 3, .LCPI65_0@toc@l
7236 ; PWR6-NEXT: lvx 5, 0, 3
7237 ; PWR6-NEXT: addis 3, 2, .LCPI65_1@toc@ha
7238 ; PWR6-NEXT: addi 3, 3, .LCPI65_1@toc@l
7239 ; PWR6-NEXT: vspltisw 0, 2
7240 ; PWR6-NEXT: vsrw 4, 2, 4
7241 ; PWR6-NEXT: vand 4, 4, 5
7242 ; PWR6-NEXT: lvx 5, 0, 3
7243 ; PWR6-NEXT: vsubuwm 2, 2, 4
7244 ; PWR6-NEXT: vand 4, 2, 5
7245 ; PWR6-NEXT: vsrw 2, 2, 0
7246 ; PWR6-NEXT: vand 2, 2, 5
7247 ; PWR6-NEXT: vspltisw 5, 4
7248 ; PWR6-NEXT: vadduwm 2, 4, 2
7249 ; PWR6-NEXT: vsrw 4, 2, 5
7250 ; PWR6-NEXT: vspltisb 5, 15
7251 ; PWR6-NEXT: vadduwm 2, 2, 4
7252 ; PWR6-NEXT: vspltisb 4, 1
7253 ; PWR6-NEXT: vand 2, 2, 5
7254 ; PWR6-NEXT: vspltisw 5, -16
7255 ; PWR6-NEXT: vrlw 0, 4, 5
7256 ; PWR6-NEXT: vmulouh 4, 2, 4
7257 ; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
7258 ; PWR6-NEXT: vspltisw 3, 12
7259 ; PWR6-NEXT: vadduwm 3, 3, 3
7260 ; PWR6-NEXT: vslw 2, 2, 5
7261 ; PWR6-NEXT: vadduwm 2, 4, 2
7262 ; PWR6-NEXT: vsrw 2, 2, 3
7263 ; PWR6-NEXT: vspltisw 3, 14
7264 ; PWR6-NEXT: vcmpgtuw 2, 3, 2
7267 ; PWR7-LABEL: ult_14_v4i32:
7269 ; PWR7-NEXT: vspltisw 3, 1
7270 ; PWR7-NEXT: addis 3, 2, .LCPI65_0@toc@ha
7271 ; PWR7-NEXT: addi 3, 3, .LCPI65_0@toc@l
7272 ; PWR7-NEXT: vspltisw 4, 2
7273 ; PWR7-NEXT: lxvw4x 0, 0, 3
7274 ; PWR7-NEXT: addis 3, 2, .LCPI65_1@toc@ha
7275 ; PWR7-NEXT: vspltisw 5, -16
7276 ; PWR7-NEXT: vsrw 3, 2, 3
7277 ; PWR7-NEXT: addi 3, 3, .LCPI65_1@toc@l
7278 ; PWR7-NEXT: vspltisb 0, 15
7279 ; PWR7-NEXT: xxland 35, 35, 0
7280 ; PWR7-NEXT: lxvw4x 0, 0, 3
7281 ; PWR7-NEXT: vsubuwm 2, 2, 3
7282 ; PWR7-NEXT: vsrw 3, 2, 4
7283 ; PWR7-NEXT: xxland 34, 34, 0
7284 ; PWR7-NEXT: vspltisw 4, 4
7285 ; PWR7-NEXT: xxland 35, 35, 0
7286 ; PWR7-NEXT: vadduwm 2, 2, 3
7287 ; PWR7-NEXT: vsrw 3, 2, 4
7288 ; PWR7-NEXT: vspltisb 4, 1
7289 ; PWR7-NEXT: vrlw 1, 4, 5
7290 ; PWR7-NEXT: vadduwm 2, 2, 3
7291 ; PWR7-NEXT: xxlxor 35, 35, 35
7292 ; PWR7-NEXT: xxland 34, 34, 32
7293 ; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
7294 ; PWR7-NEXT: vmulouh 2, 2, 4
7295 ; PWR7-NEXT: vspltisw 4, 12
7296 ; PWR7-NEXT: vslw 3, 3, 5
7297 ; PWR7-NEXT: vadduwm 2, 2, 3
7298 ; PWR7-NEXT: vadduwm 3, 4, 4
7299 ; PWR7-NEXT: vsrw 2, 2, 3
7300 ; PWR7-NEXT: vspltisw 3, 14
7301 ; PWR7-NEXT: vcmpgtuw 2, 3, 2
7304 ; PWR8-LABEL: ult_14_v4i32:
7306 ; PWR8-NEXT: vspltisw 3, 14
7307 ; PWR8-NEXT: vpopcntw 2, 2
7308 ; PWR8-NEXT: vcmpgtuw 2, 3, 2
7311 ; PWR9-LABEL: ult_14_v4i32:
7313 ; PWR9-NEXT: vpopcntw 2, 2
7314 ; PWR9-NEXT: vspltisw 3, 14
7315 ; PWR9-NEXT: vcmpgtuw 2, 3, 2
7317 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
7318 %3 = icmp ult <4 x i32> %2, <i32 14, i32 14, i32 14, i32 14>
7319 %4 = sext <4 x i1> %3 to <4 x i32>
7323 define <4 x i32> @ugt_14_v4i32(<4 x i32> %0) {
7324 ; PWR5-LABEL: ugt_14_v4i32:
7326 ; PWR5-NEXT: addis 3, 2, .LCPI66_0@toc@ha
7327 ; PWR5-NEXT: vspltisw 4, 1
7328 ; PWR5-NEXT: vxor 3, 3, 3
7329 ; PWR5-NEXT: addi 3, 3, .LCPI66_0@toc@l
7330 ; PWR5-NEXT: lvx 5, 0, 3
7331 ; PWR5-NEXT: addis 3, 2, .LCPI66_1@toc@ha
7332 ; PWR5-NEXT: addi 3, 3, .LCPI66_1@toc@l
7333 ; PWR5-NEXT: vspltisw 0, 2
7334 ; PWR5-NEXT: vsrw 4, 2, 4
7335 ; PWR5-NEXT: vand 4, 4, 5
7336 ; PWR5-NEXT: lvx 5, 0, 3
7337 ; PWR5-NEXT: vsubuwm 2, 2, 4
7338 ; PWR5-NEXT: vand 4, 2, 5
7339 ; PWR5-NEXT: vsrw 2, 2, 0
7340 ; PWR5-NEXT: vand 2, 2, 5
7341 ; PWR5-NEXT: vspltisw 5, 4
7342 ; PWR5-NEXT: vadduwm 2, 4, 2
7343 ; PWR5-NEXT: vsrw 4, 2, 5
7344 ; PWR5-NEXT: vspltisb 5, 15
7345 ; PWR5-NEXT: vadduwm 2, 2, 4
7346 ; PWR5-NEXT: vspltisb 4, 1
7347 ; PWR5-NEXT: vand 2, 2, 5
7348 ; PWR5-NEXT: vspltisw 5, -16
7349 ; PWR5-NEXT: vrlw 0, 4, 5
7350 ; PWR5-NEXT: vmulouh 4, 2, 4
7351 ; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
7352 ; PWR5-NEXT: vspltisw 3, 12
7353 ; PWR5-NEXT: vadduwm 3, 3, 3
7354 ; PWR5-NEXT: vslw 2, 2, 5
7355 ; PWR5-NEXT: vadduwm 2, 4, 2
7356 ; PWR5-NEXT: vsrw 2, 2, 3
7357 ; PWR5-NEXT: vspltisw 3, 14
7358 ; PWR5-NEXT: vcmpgtuw 2, 2, 3
7361 ; PWR6-LABEL: ugt_14_v4i32:
7363 ; PWR6-NEXT: addis 3, 2, .LCPI66_0@toc@ha
7364 ; PWR6-NEXT: vspltisw 4, 1
7365 ; PWR6-NEXT: vxor 3, 3, 3
7366 ; PWR6-NEXT: addi 3, 3, .LCPI66_0@toc@l
7367 ; PWR6-NEXT: lvx 5, 0, 3
7368 ; PWR6-NEXT: addis 3, 2, .LCPI66_1@toc@ha
7369 ; PWR6-NEXT: addi 3, 3, .LCPI66_1@toc@l
7370 ; PWR6-NEXT: vspltisw 0, 2
7371 ; PWR6-NEXT: vsrw 4, 2, 4
7372 ; PWR6-NEXT: vand 4, 4, 5
7373 ; PWR6-NEXT: lvx 5, 0, 3
7374 ; PWR6-NEXT: vsubuwm 2, 2, 4
7375 ; PWR6-NEXT: vand 4, 2, 5
7376 ; PWR6-NEXT: vsrw 2, 2, 0
7377 ; PWR6-NEXT: vand 2, 2, 5
7378 ; PWR6-NEXT: vspltisw 5, 4
7379 ; PWR6-NEXT: vadduwm 2, 4, 2
7380 ; PWR6-NEXT: vsrw 4, 2, 5
7381 ; PWR6-NEXT: vspltisb 5, 15
7382 ; PWR6-NEXT: vadduwm 2, 2, 4
7383 ; PWR6-NEXT: vspltisb 4, 1
7384 ; PWR6-NEXT: vand 2, 2, 5
7385 ; PWR6-NEXT: vspltisw 5, -16
7386 ; PWR6-NEXT: vrlw 0, 4, 5
7387 ; PWR6-NEXT: vmulouh 4, 2, 4
7388 ; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
7389 ; PWR6-NEXT: vspltisw 3, 12
7390 ; PWR6-NEXT: vadduwm 3, 3, 3
7391 ; PWR6-NEXT: vslw 2, 2, 5
7392 ; PWR6-NEXT: vadduwm 2, 4, 2
7393 ; PWR6-NEXT: vsrw 2, 2, 3
7394 ; PWR6-NEXT: vspltisw 3, 14
7395 ; PWR6-NEXT: vcmpgtuw 2, 2, 3
7398 ; PWR7-LABEL: ugt_14_v4i32:
7400 ; PWR7-NEXT: vspltisw 3, 1
7401 ; PWR7-NEXT: addis 3, 2, .LCPI66_0@toc@ha
7402 ; PWR7-NEXT: addi 3, 3, .LCPI66_0@toc@l
7403 ; PWR7-NEXT: vspltisw 4, 2
7404 ; PWR7-NEXT: lxvw4x 0, 0, 3
7405 ; PWR7-NEXT: addis 3, 2, .LCPI66_1@toc@ha
7406 ; PWR7-NEXT: vspltisw 5, -16
7407 ; PWR7-NEXT: vsrw 3, 2, 3
7408 ; PWR7-NEXT: addi 3, 3, .LCPI66_1@toc@l
7409 ; PWR7-NEXT: vspltisb 0, 15
7410 ; PWR7-NEXT: xxland 35, 35, 0
7411 ; PWR7-NEXT: lxvw4x 0, 0, 3
7412 ; PWR7-NEXT: vsubuwm 2, 2, 3
7413 ; PWR7-NEXT: vsrw 3, 2, 4
7414 ; PWR7-NEXT: xxland 34, 34, 0
7415 ; PWR7-NEXT: vspltisw 4, 4
7416 ; PWR7-NEXT: xxland 35, 35, 0
7417 ; PWR7-NEXT: vadduwm 2, 2, 3
7418 ; PWR7-NEXT: vsrw 3, 2, 4
7419 ; PWR7-NEXT: vspltisb 4, 1
7420 ; PWR7-NEXT: vrlw 1, 4, 5
7421 ; PWR7-NEXT: vadduwm 2, 2, 3
7422 ; PWR7-NEXT: xxlxor 35, 35, 35
7423 ; PWR7-NEXT: xxland 34, 34, 32
7424 ; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
7425 ; PWR7-NEXT: vmulouh 2, 2, 4
7426 ; PWR7-NEXT: vspltisw 4, 12
7427 ; PWR7-NEXT: vslw 3, 3, 5
7428 ; PWR7-NEXT: vadduwm 2, 2, 3
7429 ; PWR7-NEXT: vadduwm 3, 4, 4
7430 ; PWR7-NEXT: vsrw 2, 2, 3
7431 ; PWR7-NEXT: vspltisw 3, 14
7432 ; PWR7-NEXT: vcmpgtuw 2, 2, 3
7435 ; PWR8-LABEL: ugt_14_v4i32:
7437 ; PWR8-NEXT: vspltisw 3, 14
7438 ; PWR8-NEXT: vpopcntw 2, 2
7439 ; PWR8-NEXT: vcmpgtuw 2, 2, 3
7442 ; PWR9-LABEL: ugt_14_v4i32:
7444 ; PWR9-NEXT: vpopcntw 2, 2
7445 ; PWR9-NEXT: vspltisw 3, 14
7446 ; PWR9-NEXT: vcmpgtuw 2, 2, 3
7448 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
7449 %3 = icmp ugt <4 x i32> %2, <i32 14, i32 14, i32 14, i32 14>
7450 %4 = sext <4 x i1> %3 to <4 x i32>
7454 define <4 x i32> @ult_15_v4i32(<4 x i32> %0) {
7455 ; PWR5-LABEL: ult_15_v4i32:
7457 ; PWR5-NEXT: addis 3, 2, .LCPI67_0@toc@ha
7458 ; PWR5-NEXT: vspltisw 4, 1
7459 ; PWR5-NEXT: vxor 3, 3, 3
7460 ; PWR5-NEXT: addi 3, 3, .LCPI67_0@toc@l
7461 ; PWR5-NEXT: lvx 5, 0, 3
7462 ; PWR5-NEXT: addis 3, 2, .LCPI67_1@toc@ha
7463 ; PWR5-NEXT: addi 3, 3, .LCPI67_1@toc@l
7464 ; PWR5-NEXT: vspltisw 0, 2
7465 ; PWR5-NEXT: vsrw 4, 2, 4
7466 ; PWR5-NEXT: vand 4, 4, 5
7467 ; PWR5-NEXT: lvx 5, 0, 3
7468 ; PWR5-NEXT: vsubuwm 2, 2, 4
7469 ; PWR5-NEXT: vand 4, 2, 5
7470 ; PWR5-NEXT: vsrw 2, 2, 0
7471 ; PWR5-NEXT: vand 2, 2, 5
7472 ; PWR5-NEXT: vspltisw 5, 4
7473 ; PWR5-NEXT: vadduwm 2, 4, 2
7474 ; PWR5-NEXT: vsrw 4, 2, 5
7475 ; PWR5-NEXT: vspltisb 5, 15
7476 ; PWR5-NEXT: vadduwm 2, 2, 4
7477 ; PWR5-NEXT: vspltisb 4, 1
7478 ; PWR5-NEXT: vand 2, 2, 5
7479 ; PWR5-NEXT: vspltisw 5, -16
7480 ; PWR5-NEXT: vrlw 0, 4, 5
7481 ; PWR5-NEXT: vmulouh 4, 2, 4
7482 ; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
7483 ; PWR5-NEXT: vspltisw 3, 12
7484 ; PWR5-NEXT: vadduwm 3, 3, 3
7485 ; PWR5-NEXT: vslw 2, 2, 5
7486 ; PWR5-NEXT: vadduwm 2, 4, 2
7487 ; PWR5-NEXT: vsrw 2, 2, 3
7488 ; PWR5-NEXT: vspltisw 3, 15
7489 ; PWR5-NEXT: vcmpgtuw 2, 3, 2
7492 ; PWR6-LABEL: ult_15_v4i32:
7494 ; PWR6-NEXT: addis 3, 2, .LCPI67_0@toc@ha
7495 ; PWR6-NEXT: vspltisw 4, 1
7496 ; PWR6-NEXT: vxor 3, 3, 3
7497 ; PWR6-NEXT: addi 3, 3, .LCPI67_0@toc@l
7498 ; PWR6-NEXT: lvx 5, 0, 3
7499 ; PWR6-NEXT: addis 3, 2, .LCPI67_1@toc@ha
7500 ; PWR6-NEXT: addi 3, 3, .LCPI67_1@toc@l
7501 ; PWR6-NEXT: vspltisw 0, 2
7502 ; PWR6-NEXT: vsrw 4, 2, 4
7503 ; PWR6-NEXT: vand 4, 4, 5
7504 ; PWR6-NEXT: lvx 5, 0, 3
7505 ; PWR6-NEXT: vsubuwm 2, 2, 4
7506 ; PWR6-NEXT: vand 4, 2, 5
7507 ; PWR6-NEXT: vsrw 2, 2, 0
7508 ; PWR6-NEXT: vand 2, 2, 5
7509 ; PWR6-NEXT: vspltisw 5, 4
7510 ; PWR6-NEXT: vadduwm 2, 4, 2
7511 ; PWR6-NEXT: vsrw 4, 2, 5
7512 ; PWR6-NEXT: vspltisb 5, 15
7513 ; PWR6-NEXT: vadduwm 2, 2, 4
7514 ; PWR6-NEXT: vspltisb 4, 1
7515 ; PWR6-NEXT: vand 2, 2, 5
7516 ; PWR6-NEXT: vspltisw 5, -16
7517 ; PWR6-NEXT: vrlw 0, 4, 5
7518 ; PWR6-NEXT: vmulouh 4, 2, 4
7519 ; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
7520 ; PWR6-NEXT: vspltisw 3, 12
7521 ; PWR6-NEXT: vadduwm 3, 3, 3
7522 ; PWR6-NEXT: vslw 2, 2, 5
7523 ; PWR6-NEXT: vadduwm 2, 4, 2
7524 ; PWR6-NEXT: vsrw 2, 2, 3
7525 ; PWR6-NEXT: vspltisw 3, 15
7526 ; PWR6-NEXT: vcmpgtuw 2, 3, 2
7529 ; PWR7-LABEL: ult_15_v4i32:
7531 ; PWR7-NEXT: vspltisw 3, 1
7532 ; PWR7-NEXT: addis 3, 2, .LCPI67_0@toc@ha
7533 ; PWR7-NEXT: addi 3, 3, .LCPI67_0@toc@l
7534 ; PWR7-NEXT: vspltisw 4, 2
7535 ; PWR7-NEXT: lxvw4x 0, 0, 3
7536 ; PWR7-NEXT: addis 3, 2, .LCPI67_1@toc@ha
7537 ; PWR7-NEXT: vspltisw 5, -16
7538 ; PWR7-NEXT: vsrw 3, 2, 3
7539 ; PWR7-NEXT: addi 3, 3, .LCPI67_1@toc@l
7540 ; PWR7-NEXT: vspltisb 0, 15
7541 ; PWR7-NEXT: xxland 35, 35, 0
7542 ; PWR7-NEXT: lxvw4x 0, 0, 3
7543 ; PWR7-NEXT: vsubuwm 2, 2, 3
7544 ; PWR7-NEXT: vsrw 3, 2, 4
7545 ; PWR7-NEXT: xxland 34, 34, 0
7546 ; PWR7-NEXT: vspltisw 4, 4
7547 ; PWR7-NEXT: xxland 35, 35, 0
7548 ; PWR7-NEXT: vadduwm 2, 2, 3
7549 ; PWR7-NEXT: vsrw 3, 2, 4
7550 ; PWR7-NEXT: vspltisb 4, 1
7551 ; PWR7-NEXT: vrlw 1, 4, 5
7552 ; PWR7-NEXT: vadduwm 2, 2, 3
7553 ; PWR7-NEXT: xxlxor 35, 35, 35
7554 ; PWR7-NEXT: xxland 34, 34, 32
7555 ; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
7556 ; PWR7-NEXT: vmulouh 2, 2, 4
7557 ; PWR7-NEXT: vspltisw 4, 12
7558 ; PWR7-NEXT: vslw 3, 3, 5
7559 ; PWR7-NEXT: vadduwm 2, 2, 3
7560 ; PWR7-NEXT: vadduwm 3, 4, 4
7561 ; PWR7-NEXT: vsrw 2, 2, 3
7562 ; PWR7-NEXT: vspltisw 3, 15
7563 ; PWR7-NEXT: vcmpgtuw 2, 3, 2
7566 ; PWR8-LABEL: ult_15_v4i32:
7568 ; PWR8-NEXT: vspltisw 3, 15
7569 ; PWR8-NEXT: vpopcntw 2, 2
7570 ; PWR8-NEXT: vcmpgtuw 2, 3, 2
7573 ; PWR9-LABEL: ult_15_v4i32:
7575 ; PWR9-NEXT: vpopcntw 2, 2
7576 ; PWR9-NEXT: vspltisw 3, 15
7577 ; PWR9-NEXT: vcmpgtuw 2, 3, 2
7579 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
7580 %3 = icmp ult <4 x i32> %2, <i32 15, i32 15, i32 15, i32 15>
7581 %4 = sext <4 x i1> %3 to <4 x i32>
7585 define <4 x i32> @ugt_15_v4i32(<4 x i32> %0) {
7586 ; PWR5-LABEL: ugt_15_v4i32:
7588 ; PWR5-NEXT: addis 3, 2, .LCPI68_0@toc@ha
7589 ; PWR5-NEXT: vspltisw 4, 1
7590 ; PWR5-NEXT: vxor 3, 3, 3
7591 ; PWR5-NEXT: addi 3, 3, .LCPI68_0@toc@l
7592 ; PWR5-NEXT: lvx 5, 0, 3
7593 ; PWR5-NEXT: addis 3, 2, .LCPI68_1@toc@ha
7594 ; PWR5-NEXT: addi 3, 3, .LCPI68_1@toc@l
7595 ; PWR5-NEXT: vspltisw 0, 2
7596 ; PWR5-NEXT: vsrw 4, 2, 4
7597 ; PWR5-NEXT: vand 4, 4, 5
7598 ; PWR5-NEXT: lvx 5, 0, 3
7599 ; PWR5-NEXT: vsubuwm 2, 2, 4
7600 ; PWR5-NEXT: vand 4, 2, 5
7601 ; PWR5-NEXT: vsrw 2, 2, 0
7602 ; PWR5-NEXT: vand 2, 2, 5
7603 ; PWR5-NEXT: vspltisw 5, 4
7604 ; PWR5-NEXT: vadduwm 2, 4, 2
7605 ; PWR5-NEXT: vsrw 4, 2, 5
7606 ; PWR5-NEXT: vspltisb 5, 15
7607 ; PWR5-NEXT: vadduwm 2, 2, 4
7608 ; PWR5-NEXT: vspltisb 4, 1
7609 ; PWR5-NEXT: vand 2, 2, 5
7610 ; PWR5-NEXT: vspltisw 5, -16
7611 ; PWR5-NEXT: vrlw 0, 4, 5
7612 ; PWR5-NEXT: vmulouh 4, 2, 4
7613 ; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
7614 ; PWR5-NEXT: vspltisw 3, 12
7615 ; PWR5-NEXT: vadduwm 3, 3, 3
7616 ; PWR5-NEXT: vslw 2, 2, 5
7617 ; PWR5-NEXT: vadduwm 2, 4, 2
7618 ; PWR5-NEXT: vsrw 2, 2, 3
7619 ; PWR5-NEXT: vspltisw 3, 15
7620 ; PWR5-NEXT: vcmpgtuw 2, 2, 3
7623 ; PWR6-LABEL: ugt_15_v4i32:
7625 ; PWR6-NEXT: addis 3, 2, .LCPI68_0@toc@ha
7626 ; PWR6-NEXT: vspltisw 4, 1
7627 ; PWR6-NEXT: vxor 3, 3, 3
7628 ; PWR6-NEXT: addi 3, 3, .LCPI68_0@toc@l
7629 ; PWR6-NEXT: lvx 5, 0, 3
7630 ; PWR6-NEXT: addis 3, 2, .LCPI68_1@toc@ha
7631 ; PWR6-NEXT: addi 3, 3, .LCPI68_1@toc@l
7632 ; PWR6-NEXT: vspltisw 0, 2
7633 ; PWR6-NEXT: vsrw 4, 2, 4
7634 ; PWR6-NEXT: vand 4, 4, 5
7635 ; PWR6-NEXT: lvx 5, 0, 3
7636 ; PWR6-NEXT: vsubuwm 2, 2, 4
7637 ; PWR6-NEXT: vand 4, 2, 5
7638 ; PWR6-NEXT: vsrw 2, 2, 0
7639 ; PWR6-NEXT: vand 2, 2, 5
7640 ; PWR6-NEXT: vspltisw 5, 4
7641 ; PWR6-NEXT: vadduwm 2, 4, 2
7642 ; PWR6-NEXT: vsrw 4, 2, 5
7643 ; PWR6-NEXT: vspltisb 5, 15
7644 ; PWR6-NEXT: vadduwm 2, 2, 4
7645 ; PWR6-NEXT: vspltisb 4, 1
7646 ; PWR6-NEXT: vand 2, 2, 5
7647 ; PWR6-NEXT: vspltisw 5, -16
7648 ; PWR6-NEXT: vrlw 0, 4, 5
7649 ; PWR6-NEXT: vmulouh 4, 2, 4
7650 ; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
7651 ; PWR6-NEXT: vspltisw 3, 12
7652 ; PWR6-NEXT: vadduwm 3, 3, 3
7653 ; PWR6-NEXT: vslw 2, 2, 5
7654 ; PWR6-NEXT: vadduwm 2, 4, 2
7655 ; PWR6-NEXT: vsrw 2, 2, 3
7656 ; PWR6-NEXT: vspltisw 3, 15
7657 ; PWR6-NEXT: vcmpgtuw 2, 2, 3
7660 ; PWR7-LABEL: ugt_15_v4i32:
7662 ; PWR7-NEXT: vspltisw 3, 1
7663 ; PWR7-NEXT: addis 3, 2, .LCPI68_0@toc@ha
7664 ; PWR7-NEXT: addi 3, 3, .LCPI68_0@toc@l
7665 ; PWR7-NEXT: vspltisw 4, 2
7666 ; PWR7-NEXT: lxvw4x 0, 0, 3
7667 ; PWR7-NEXT: addis 3, 2, .LCPI68_1@toc@ha
7668 ; PWR7-NEXT: vspltisw 5, -16
7669 ; PWR7-NEXT: vsrw 3, 2, 3
7670 ; PWR7-NEXT: addi 3, 3, .LCPI68_1@toc@l
7671 ; PWR7-NEXT: vspltisb 0, 15
7672 ; PWR7-NEXT: xxland 35, 35, 0
7673 ; PWR7-NEXT: lxvw4x 0, 0, 3
7674 ; PWR7-NEXT: vsubuwm 2, 2, 3
7675 ; PWR7-NEXT: vsrw 3, 2, 4
7676 ; PWR7-NEXT: xxland 34, 34, 0
7677 ; PWR7-NEXT: vspltisw 4, 4
7678 ; PWR7-NEXT: xxland 35, 35, 0
7679 ; PWR7-NEXT: vadduwm 2, 2, 3
7680 ; PWR7-NEXT: vsrw 3, 2, 4
7681 ; PWR7-NEXT: vspltisb 4, 1
7682 ; PWR7-NEXT: vrlw 1, 4, 5
7683 ; PWR7-NEXT: vadduwm 2, 2, 3
7684 ; PWR7-NEXT: xxlxor 35, 35, 35
7685 ; PWR7-NEXT: xxland 34, 34, 32
7686 ; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
7687 ; PWR7-NEXT: vmulouh 2, 2, 4
7688 ; PWR7-NEXT: vspltisw 4, 12
7689 ; PWR7-NEXT: vslw 3, 3, 5
7690 ; PWR7-NEXT: vadduwm 2, 2, 3
7691 ; PWR7-NEXT: vadduwm 3, 4, 4
7692 ; PWR7-NEXT: vsrw 2, 2, 3
7693 ; PWR7-NEXT: vspltisw 3, 15
7694 ; PWR7-NEXT: vcmpgtuw 2, 2, 3
7697 ; PWR8-LABEL: ugt_15_v4i32:
7699 ; PWR8-NEXT: vspltisw 3, 15
7700 ; PWR8-NEXT: vpopcntw 2, 2
7701 ; PWR8-NEXT: vcmpgtuw 2, 2, 3
7704 ; PWR9-LABEL: ugt_15_v4i32:
7706 ; PWR9-NEXT: vpopcntw 2, 2
7707 ; PWR9-NEXT: vspltisw 3, 15
7708 ; PWR9-NEXT: vcmpgtuw 2, 2, 3
7710 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
7711 %3 = icmp ugt <4 x i32> %2, <i32 15, i32 15, i32 15, i32 15>
7712 %4 = sext <4 x i1> %3 to <4 x i32>
7716 define <4 x i32> @ult_16_v4i32(<4 x i32> %0) {
7717 ; PWR5-LABEL: ult_16_v4i32:
7719 ; PWR5-NEXT: addis 3, 2, .LCPI69_0@toc@ha
7720 ; PWR5-NEXT: vspltisw 4, 1
7721 ; PWR5-NEXT: vxor 3, 3, 3
7722 ; PWR5-NEXT: addi 3, 3, .LCPI69_0@toc@l
7723 ; PWR5-NEXT: lvx 5, 0, 3
7724 ; PWR5-NEXT: addis 3, 2, .LCPI69_1@toc@ha
7725 ; PWR5-NEXT: addi 3, 3, .LCPI69_1@toc@l
7726 ; PWR5-NEXT: vspltisw 0, 2
7727 ; PWR5-NEXT: vsrw 4, 2, 4
7728 ; PWR5-NEXT: vand 4, 4, 5
7729 ; PWR5-NEXT: lvx 5, 0, 3
7730 ; PWR5-NEXT: vsubuwm 2, 2, 4
7731 ; PWR5-NEXT: vand 4, 2, 5
7732 ; PWR5-NEXT: vsrw 2, 2, 0
7733 ; PWR5-NEXT: vand 2, 2, 5
7734 ; PWR5-NEXT: vspltisw 5, 4
7735 ; PWR5-NEXT: vadduwm 2, 4, 2
7736 ; PWR5-NEXT: vsrw 4, 2, 5
7737 ; PWR5-NEXT: vspltisb 5, 15
7738 ; PWR5-NEXT: vadduwm 2, 2, 4
7739 ; PWR5-NEXT: vspltisb 4, 1
7740 ; PWR5-NEXT: vand 2, 2, 5
7741 ; PWR5-NEXT: vspltisw 5, -16
7742 ; PWR5-NEXT: vrlw 0, 4, 5
7743 ; PWR5-NEXT: vmulouh 4, 2, 4
7744 ; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
7745 ; PWR5-NEXT: vspltisw 3, 12
7746 ; PWR5-NEXT: vadduwm 3, 3, 3
7747 ; PWR5-NEXT: vslw 2, 2, 5
7748 ; PWR5-NEXT: vadduwm 2, 4, 2
7749 ; PWR5-NEXT: vsrw 2, 2, 3
7750 ; PWR5-NEXT: vspltisw 3, 8
7751 ; PWR5-NEXT: vadduwm 3, 3, 3
7752 ; PWR5-NEXT: vcmpgtuw 2, 3, 2
7755 ; PWR6-LABEL: ult_16_v4i32:
7757 ; PWR6-NEXT: addis 3, 2, .LCPI69_0@toc@ha
7758 ; PWR6-NEXT: vspltisw 4, 1
7759 ; PWR6-NEXT: vxor 3, 3, 3
7760 ; PWR6-NEXT: addi 3, 3, .LCPI69_0@toc@l
7761 ; PWR6-NEXT: lvx 5, 0, 3
7762 ; PWR6-NEXT: addis 3, 2, .LCPI69_1@toc@ha
7763 ; PWR6-NEXT: addi 3, 3, .LCPI69_1@toc@l
7764 ; PWR6-NEXT: vspltisw 0, 2
7765 ; PWR6-NEXT: vsrw 4, 2, 4
7766 ; PWR6-NEXT: vand 4, 4, 5
7767 ; PWR6-NEXT: lvx 5, 0, 3
7768 ; PWR6-NEXT: vsubuwm 2, 2, 4
7769 ; PWR6-NEXT: vand 4, 2, 5
7770 ; PWR6-NEXT: vsrw 2, 2, 0
7771 ; PWR6-NEXT: vand 2, 2, 5
7772 ; PWR6-NEXT: vspltisw 5, 4
7773 ; PWR6-NEXT: vadduwm 2, 4, 2
7774 ; PWR6-NEXT: vsrw 4, 2, 5
7775 ; PWR6-NEXT: vspltisb 5, 15
7776 ; PWR6-NEXT: vadduwm 2, 2, 4
7777 ; PWR6-NEXT: vspltisb 4, 1
7778 ; PWR6-NEXT: vand 2, 2, 5
7779 ; PWR6-NEXT: vspltisw 5, -16
7780 ; PWR6-NEXT: vrlw 0, 4, 5
7781 ; PWR6-NEXT: vmulouh 4, 2, 4
7782 ; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
7783 ; PWR6-NEXT: vspltisw 3, 12
7784 ; PWR6-NEXT: vadduwm 3, 3, 3
7785 ; PWR6-NEXT: vslw 2, 2, 5
7786 ; PWR6-NEXT: vadduwm 2, 4, 2
7787 ; PWR6-NEXT: vsrw 2, 2, 3
7788 ; PWR6-NEXT: vspltisw 3, 8
7789 ; PWR6-NEXT: vadduwm 3, 3, 3
7790 ; PWR6-NEXT: vcmpgtuw 2, 3, 2
7793 ; PWR7-LABEL: ult_16_v4i32:
7795 ; PWR7-NEXT: vspltisw 3, 1
7796 ; PWR7-NEXT: addis 3, 2, .LCPI69_0@toc@ha
7797 ; PWR7-NEXT: addi 3, 3, .LCPI69_0@toc@l
7798 ; PWR7-NEXT: vspltisw 4, 2
7799 ; PWR7-NEXT: lxvw4x 0, 0, 3
7800 ; PWR7-NEXT: addis 3, 2, .LCPI69_1@toc@ha
7801 ; PWR7-NEXT: vspltisw 5, -16
7802 ; PWR7-NEXT: vsrw 3, 2, 3
7803 ; PWR7-NEXT: addi 3, 3, .LCPI69_1@toc@l
7804 ; PWR7-NEXT: vspltisb 0, 15
7805 ; PWR7-NEXT: xxland 35, 35, 0
7806 ; PWR7-NEXT: lxvw4x 0, 0, 3
7807 ; PWR7-NEXT: vsubuwm 2, 2, 3
7808 ; PWR7-NEXT: vsrw 3, 2, 4
7809 ; PWR7-NEXT: xxland 34, 34, 0
7810 ; PWR7-NEXT: vspltisw 4, 4
7811 ; PWR7-NEXT: xxland 35, 35, 0
7812 ; PWR7-NEXT: vadduwm 2, 2, 3
7813 ; PWR7-NEXT: vsrw 3, 2, 4
7814 ; PWR7-NEXT: vspltisb 4, 1
7815 ; PWR7-NEXT: vrlw 1, 4, 5
7816 ; PWR7-NEXT: vadduwm 2, 2, 3
7817 ; PWR7-NEXT: xxlxor 35, 35, 35
7818 ; PWR7-NEXT: xxland 34, 34, 32
7819 ; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
7820 ; PWR7-NEXT: vmulouh 2, 2, 4
7821 ; PWR7-NEXT: vspltisw 4, 12
7822 ; PWR7-NEXT: vslw 3, 3, 5
7823 ; PWR7-NEXT: vadduwm 2, 2, 3
7824 ; PWR7-NEXT: vadduwm 3, 4, 4
7825 ; PWR7-NEXT: vsrw 2, 2, 3
7826 ; PWR7-NEXT: vspltisw 3, 8
7827 ; PWR7-NEXT: vadduwm 3, 3, 3
7828 ; PWR7-NEXT: vcmpgtuw 2, 3, 2
7831 ; PWR8-LABEL: ult_16_v4i32:
7833 ; PWR8-NEXT: vspltisw 3, 8
7834 ; PWR8-NEXT: vpopcntw 2, 2
7835 ; PWR8-NEXT: vadduwm 3, 3, 3
7836 ; PWR8-NEXT: vcmpgtuw 2, 3, 2
7839 ; PWR9-LABEL: ult_16_v4i32:
7841 ; PWR9-NEXT: vspltisw 3, 8
7842 ; PWR9-NEXT: vpopcntw 2, 2
7843 ; PWR9-NEXT: vadduwm 3, 3, 3
7844 ; PWR9-NEXT: vcmpgtuw 2, 3, 2
7846 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
7847 %3 = icmp ult <4 x i32> %2, <i32 16, i32 16, i32 16, i32 16>
7848 %4 = sext <4 x i1> %3 to <4 x i32>
7852 define <4 x i32> @ugt_16_v4i32(<4 x i32> %0) {
7853 ; PWR5-LABEL: ugt_16_v4i32:
7855 ; PWR5-NEXT: addis 3, 2, .LCPI70_0@toc@ha
7856 ; PWR5-NEXT: vspltisw 4, 1
7857 ; PWR5-NEXT: vxor 3, 3, 3
7858 ; PWR5-NEXT: addi 3, 3, .LCPI70_0@toc@l
7859 ; PWR5-NEXT: lvx 5, 0, 3
7860 ; PWR5-NEXT: addis 3, 2, .LCPI70_1@toc@ha
7861 ; PWR5-NEXT: addi 3, 3, .LCPI70_1@toc@l
7862 ; PWR5-NEXT: vspltisw 0, 2
7863 ; PWR5-NEXT: vsrw 4, 2, 4
7864 ; PWR5-NEXT: vand 4, 4, 5
7865 ; PWR5-NEXT: lvx 5, 0, 3
7866 ; PWR5-NEXT: vsubuwm 2, 2, 4
7867 ; PWR5-NEXT: vand 4, 2, 5
7868 ; PWR5-NEXT: vsrw 2, 2, 0
7869 ; PWR5-NEXT: vand 2, 2, 5
7870 ; PWR5-NEXT: vspltisw 5, 4
7871 ; PWR5-NEXT: vadduwm 2, 4, 2
7872 ; PWR5-NEXT: vsrw 4, 2, 5
7873 ; PWR5-NEXT: vspltisb 5, 15
7874 ; PWR5-NEXT: vadduwm 2, 2, 4
7875 ; PWR5-NEXT: vspltisb 4, 1
7876 ; PWR5-NEXT: vand 2, 2, 5
7877 ; PWR5-NEXT: vspltisw 5, -16
7878 ; PWR5-NEXT: vrlw 0, 4, 5
7879 ; PWR5-NEXT: vmulouh 4, 2, 4
7880 ; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
7881 ; PWR5-NEXT: vspltisw 3, 12
7882 ; PWR5-NEXT: vadduwm 3, 3, 3
7883 ; PWR5-NEXT: vslw 2, 2, 5
7884 ; PWR5-NEXT: vadduwm 2, 4, 2
7885 ; PWR5-NEXT: vsrw 2, 2, 3
7886 ; PWR5-NEXT: vspltisw 3, 8
7887 ; PWR5-NEXT: vadduwm 3, 3, 3
7888 ; PWR5-NEXT: vcmpgtuw 2, 2, 3
7891 ; PWR6-LABEL: ugt_16_v4i32:
7893 ; PWR6-NEXT: addis 3, 2, .LCPI70_0@toc@ha
7894 ; PWR6-NEXT: vspltisw 4, 1
7895 ; PWR6-NEXT: vxor 3, 3, 3
7896 ; PWR6-NEXT: addi 3, 3, .LCPI70_0@toc@l
7897 ; PWR6-NEXT: lvx 5, 0, 3
7898 ; PWR6-NEXT: addis 3, 2, .LCPI70_1@toc@ha
7899 ; PWR6-NEXT: addi 3, 3, .LCPI70_1@toc@l
7900 ; PWR6-NEXT: vspltisw 0, 2
7901 ; PWR6-NEXT: vsrw 4, 2, 4
7902 ; PWR6-NEXT: vand 4, 4, 5
7903 ; PWR6-NEXT: lvx 5, 0, 3
7904 ; PWR6-NEXT: vsubuwm 2, 2, 4
7905 ; PWR6-NEXT: vand 4, 2, 5
7906 ; PWR6-NEXT: vsrw 2, 2, 0
7907 ; PWR6-NEXT: vand 2, 2, 5
7908 ; PWR6-NEXT: vspltisw 5, 4
7909 ; PWR6-NEXT: vadduwm 2, 4, 2
7910 ; PWR6-NEXT: vsrw 4, 2, 5
7911 ; PWR6-NEXT: vspltisb 5, 15
7912 ; PWR6-NEXT: vadduwm 2, 2, 4
7913 ; PWR6-NEXT: vspltisb 4, 1
7914 ; PWR6-NEXT: vand 2, 2, 5
7915 ; PWR6-NEXT: vspltisw 5, -16
7916 ; PWR6-NEXT: vrlw 0, 4, 5
7917 ; PWR6-NEXT: vmulouh 4, 2, 4
7918 ; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
7919 ; PWR6-NEXT: vspltisw 3, 12
7920 ; PWR6-NEXT: vadduwm 3, 3, 3
7921 ; PWR6-NEXT: vslw 2, 2, 5
7922 ; PWR6-NEXT: vadduwm 2, 4, 2
7923 ; PWR6-NEXT: vsrw 2, 2, 3
7924 ; PWR6-NEXT: vspltisw 3, 8
7925 ; PWR6-NEXT: vadduwm 3, 3, 3
7926 ; PWR6-NEXT: vcmpgtuw 2, 2, 3
7929 ; PWR7-LABEL: ugt_16_v4i32:
7931 ; PWR7-NEXT: vspltisw 3, 1
7932 ; PWR7-NEXT: addis 3, 2, .LCPI70_0@toc@ha
7933 ; PWR7-NEXT: addi 3, 3, .LCPI70_0@toc@l
7934 ; PWR7-NEXT: vspltisw 4, 2
7935 ; PWR7-NEXT: lxvw4x 0, 0, 3
7936 ; PWR7-NEXT: addis 3, 2, .LCPI70_1@toc@ha
7937 ; PWR7-NEXT: vspltisw 5, -16
7938 ; PWR7-NEXT: vsrw 3, 2, 3
7939 ; PWR7-NEXT: addi 3, 3, .LCPI70_1@toc@l
7940 ; PWR7-NEXT: vspltisb 0, 15
7941 ; PWR7-NEXT: xxland 35, 35, 0
7942 ; PWR7-NEXT: lxvw4x 0, 0, 3
7943 ; PWR7-NEXT: vsubuwm 2, 2, 3
7944 ; PWR7-NEXT: vsrw 3, 2, 4
7945 ; PWR7-NEXT: xxland 34, 34, 0
7946 ; PWR7-NEXT: vspltisw 4, 4
7947 ; PWR7-NEXT: xxland 35, 35, 0
7948 ; PWR7-NEXT: vadduwm 2, 2, 3
7949 ; PWR7-NEXT: vsrw 3, 2, 4
7950 ; PWR7-NEXT: vspltisb 4, 1
7951 ; PWR7-NEXT: vrlw 1, 4, 5
7952 ; PWR7-NEXT: vadduwm 2, 2, 3
7953 ; PWR7-NEXT: xxlxor 35, 35, 35
7954 ; PWR7-NEXT: xxland 34, 34, 32
7955 ; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
7956 ; PWR7-NEXT: vmulouh 2, 2, 4
7957 ; PWR7-NEXT: vspltisw 4, 12
7958 ; PWR7-NEXT: vslw 3, 3, 5
7959 ; PWR7-NEXT: vadduwm 2, 2, 3
7960 ; PWR7-NEXT: vadduwm 3, 4, 4
7961 ; PWR7-NEXT: vsrw 2, 2, 3
7962 ; PWR7-NEXT: vspltisw 3, 8
7963 ; PWR7-NEXT: vadduwm 3, 3, 3
7964 ; PWR7-NEXT: vcmpgtuw 2, 2, 3
7967 ; PWR8-LABEL: ugt_16_v4i32:
7969 ; PWR8-NEXT: vspltisw 3, 8
7970 ; PWR8-NEXT: vpopcntw 2, 2
7971 ; PWR8-NEXT: vadduwm 3, 3, 3
7972 ; PWR8-NEXT: vcmpgtuw 2, 2, 3
7975 ; PWR9-LABEL: ugt_16_v4i32:
7977 ; PWR9-NEXT: vspltisw 3, 8
7978 ; PWR9-NEXT: vpopcntw 2, 2
7979 ; PWR9-NEXT: vadduwm 3, 3, 3
7980 ; PWR9-NEXT: vcmpgtuw 2, 2, 3
7982 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
7983 %3 = icmp ugt <4 x i32> %2, <i32 16, i32 16, i32 16, i32 16>
7984 %4 = sext <4 x i1> %3 to <4 x i32>
7988 define <4 x i32> @ult_17_v4i32(<4 x i32> %0) {
7989 ; PWR5-LABEL: ult_17_v4i32:
7991 ; PWR5-NEXT: addis 3, 2, .LCPI71_0@toc@ha
7992 ; PWR5-NEXT: vspltisw 4, 1
7993 ; PWR5-NEXT: vxor 3, 3, 3
7994 ; PWR5-NEXT: addi 3, 3, .LCPI71_0@toc@l
7995 ; PWR5-NEXT: lvx 0, 0, 3
7996 ; PWR5-NEXT: addis 3, 2, .LCPI71_1@toc@ha
7997 ; PWR5-NEXT: addi 3, 3, .LCPI71_1@toc@l
7998 ; PWR5-NEXT: vspltisw 1, 2
7999 ; PWR5-NEXT: vsrw 5, 2, 4
8000 ; PWR5-NEXT: vand 5, 5, 0
8001 ; PWR5-NEXT: lvx 0, 0, 3
8002 ; PWR5-NEXT: vsubuwm 2, 2, 5
8003 ; PWR5-NEXT: vand 5, 2, 0
8004 ; PWR5-NEXT: vsrw 2, 2, 1
8005 ; PWR5-NEXT: vand 2, 2, 0
8006 ; PWR5-NEXT: vspltisw 0, 4
8007 ; PWR5-NEXT: vadduwm 2, 5, 2
8008 ; PWR5-NEXT: vsrw 5, 2, 0
8009 ; PWR5-NEXT: vspltisb 0, 15
8010 ; PWR5-NEXT: vadduwm 2, 2, 5
8011 ; PWR5-NEXT: vspltisb 5, 1
8012 ; PWR5-NEXT: vand 2, 2, 0
8013 ; PWR5-NEXT: vspltisw 0, -16
8014 ; PWR5-NEXT: vrlw 1, 5, 0
8015 ; PWR5-NEXT: vmulouh 5, 2, 5
8016 ; PWR5-NEXT: vmsumuhm 2, 2, 1, 3
8017 ; PWR5-NEXT: vspltisw 3, 12
8018 ; PWR5-NEXT: vadduwm 3, 3, 3
8019 ; PWR5-NEXT: vslw 2, 2, 0
8020 ; PWR5-NEXT: vadduwm 2, 5, 2
8021 ; PWR5-NEXT: vsrw 2, 2, 3
8022 ; PWR5-NEXT: vsubuwm 3, 4, 0
8023 ; PWR5-NEXT: vcmpgtuw 2, 3, 2
8026 ; PWR6-LABEL: ult_17_v4i32:
8028 ; PWR6-NEXT: addis 3, 2, .LCPI71_0@toc@ha
8029 ; PWR6-NEXT: vspltisw 4, 1
8030 ; PWR6-NEXT: vxor 3, 3, 3
8031 ; PWR6-NEXT: addi 3, 3, .LCPI71_0@toc@l
8032 ; PWR6-NEXT: lvx 0, 0, 3
8033 ; PWR6-NEXT: addis 3, 2, .LCPI71_1@toc@ha
8034 ; PWR6-NEXT: addi 3, 3, .LCPI71_1@toc@l
8035 ; PWR6-NEXT: vspltisw 1, 2
8036 ; PWR6-NEXT: vsrw 5, 2, 4
8037 ; PWR6-NEXT: vand 5, 5, 0
8038 ; PWR6-NEXT: lvx 0, 0, 3
8039 ; PWR6-NEXT: vsubuwm 2, 2, 5
8040 ; PWR6-NEXT: vand 5, 2, 0
8041 ; PWR6-NEXT: vsrw 2, 2, 1
8042 ; PWR6-NEXT: vand 2, 2, 0
8043 ; PWR6-NEXT: vspltisw 0, 4
8044 ; PWR6-NEXT: vadduwm 2, 5, 2
8045 ; PWR6-NEXT: vsrw 5, 2, 0
8046 ; PWR6-NEXT: vspltisb 0, 15
8047 ; PWR6-NEXT: vadduwm 2, 2, 5
8048 ; PWR6-NEXT: vspltisb 5, 1
8049 ; PWR6-NEXT: vand 2, 2, 0
8050 ; PWR6-NEXT: vspltisw 0, -16
8051 ; PWR6-NEXT: vrlw 1, 5, 0
8052 ; PWR6-NEXT: vmulouh 5, 2, 5
8053 ; PWR6-NEXT: vmsumuhm 2, 2, 1, 3
8054 ; PWR6-NEXT: vspltisw 3, 12
8055 ; PWR6-NEXT: vadduwm 3, 3, 3
8056 ; PWR6-NEXT: vslw 2, 2, 0
8057 ; PWR6-NEXT: vadduwm 2, 5, 2
8058 ; PWR6-NEXT: vsrw 2, 2, 3
8059 ; PWR6-NEXT: vsubuwm 3, 4, 0
8060 ; PWR6-NEXT: vcmpgtuw 2, 3, 2
8063 ; PWR7-LABEL: ult_17_v4i32:
8065 ; PWR7-NEXT: vspltisw 3, 1
8066 ; PWR7-NEXT: addis 3, 2, .LCPI71_0@toc@ha
8067 ; PWR7-NEXT: addi 3, 3, .LCPI71_0@toc@l
8068 ; PWR7-NEXT: vspltisw 5, 2
8069 ; PWR7-NEXT: lxvw4x 0, 0, 3
8070 ; PWR7-NEXT: addis 3, 2, .LCPI71_1@toc@ha
8071 ; PWR7-NEXT: vspltisw 0, -16
8072 ; PWR7-NEXT: vsrw 4, 2, 3
8073 ; PWR7-NEXT: addi 3, 3, .LCPI71_1@toc@l
8074 ; PWR7-NEXT: vspltisb 1, 15
8075 ; PWR7-NEXT: vsubuwm 3, 3, 0
8076 ; PWR7-NEXT: xxland 36, 36, 0
8077 ; PWR7-NEXT: lxvw4x 0, 0, 3
8078 ; PWR7-NEXT: vsubuwm 2, 2, 4
8079 ; PWR7-NEXT: vsrw 4, 2, 5
8080 ; PWR7-NEXT: xxland 34, 34, 0
8081 ; PWR7-NEXT: vspltisw 5, 4
8082 ; PWR7-NEXT: xxland 36, 36, 0
8083 ; PWR7-NEXT: vadduwm 2, 2, 4
8084 ; PWR7-NEXT: vsrw 4, 2, 5
8085 ; PWR7-NEXT: vspltisb 5, 1
8086 ; PWR7-NEXT: vrlw 6, 5, 0
8087 ; PWR7-NEXT: vadduwm 2, 2, 4
8088 ; PWR7-NEXT: xxlxor 36, 36, 36
8089 ; PWR7-NEXT: xxland 34, 34, 33
8090 ; PWR7-NEXT: vmsumuhm 4, 2, 6, 4
8091 ; PWR7-NEXT: vmulouh 2, 2, 5
8092 ; PWR7-NEXT: vspltisw 5, 12
8093 ; PWR7-NEXT: vslw 4, 4, 0
8094 ; PWR7-NEXT: vadduwm 2, 2, 4
8095 ; PWR7-NEXT: vadduwm 4, 5, 5
8096 ; PWR7-NEXT: vsrw 2, 2, 4
8097 ; PWR7-NEXT: vcmpgtuw 2, 3, 2
8100 ; PWR8-LABEL: ult_17_v4i32:
8102 ; PWR8-NEXT: vspltisw 3, -16
8103 ; PWR8-NEXT: vspltisw 4, 1
8104 ; PWR8-NEXT: vpopcntw 2, 2
8105 ; PWR8-NEXT: vsubuwm 3, 4, 3
8106 ; PWR8-NEXT: vcmpgtuw 2, 3, 2
8109 ; PWR9-LABEL: ult_17_v4i32:
8111 ; PWR9-NEXT: vspltisw 3, -16
8112 ; PWR9-NEXT: vspltisw 4, 1
8113 ; PWR9-NEXT: vpopcntw 2, 2
8114 ; PWR9-NEXT: vsubuwm 3, 4, 3
8115 ; PWR9-NEXT: vcmpgtuw 2, 3, 2
8117 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
8118 %3 = icmp ult <4 x i32> %2, <i32 17, i32 17, i32 17, i32 17>
8119 %4 = sext <4 x i1> %3 to <4 x i32>
8123 define <4 x i32> @ugt_17_v4i32(<4 x i32> %0) {
8124 ; PWR5-LABEL: ugt_17_v4i32:
8126 ; PWR5-NEXT: addis 3, 2, .LCPI72_0@toc@ha
8127 ; PWR5-NEXT: vspltisw 4, 1
8128 ; PWR5-NEXT: vxor 3, 3, 3
8129 ; PWR5-NEXT: addi 3, 3, .LCPI72_0@toc@l
8130 ; PWR5-NEXT: lvx 0, 0, 3
8131 ; PWR5-NEXT: addis 3, 2, .LCPI72_1@toc@ha
8132 ; PWR5-NEXT: addi 3, 3, .LCPI72_1@toc@l
8133 ; PWR5-NEXT: vspltisw 1, 2
8134 ; PWR5-NEXT: vsrw 5, 2, 4
8135 ; PWR5-NEXT: vand 5, 5, 0
8136 ; PWR5-NEXT: lvx 0, 0, 3
8137 ; PWR5-NEXT: vsubuwm 2, 2, 5
8138 ; PWR5-NEXT: vand 5, 2, 0
8139 ; PWR5-NEXT: vsrw 2, 2, 1
8140 ; PWR5-NEXT: vand 2, 2, 0
8141 ; PWR5-NEXT: vspltisw 0, 4
8142 ; PWR5-NEXT: vadduwm 2, 5, 2
8143 ; PWR5-NEXT: vsrw 5, 2, 0
8144 ; PWR5-NEXT: vspltisb 0, 15
8145 ; PWR5-NEXT: vadduwm 2, 2, 5
8146 ; PWR5-NEXT: vspltisb 5, 1
8147 ; PWR5-NEXT: vand 2, 2, 0
8148 ; PWR5-NEXT: vspltisw 0, -16
8149 ; PWR5-NEXT: vrlw 1, 5, 0
8150 ; PWR5-NEXT: vmulouh 5, 2, 5
8151 ; PWR5-NEXT: vmsumuhm 2, 2, 1, 3
8152 ; PWR5-NEXT: vspltisw 3, 12
8153 ; PWR5-NEXT: vadduwm 3, 3, 3
8154 ; PWR5-NEXT: vslw 2, 2, 0
8155 ; PWR5-NEXT: vadduwm 2, 5, 2
8156 ; PWR5-NEXT: vsrw 2, 2, 3
8157 ; PWR5-NEXT: vsubuwm 3, 4, 0
8158 ; PWR5-NEXT: vcmpgtuw 2, 2, 3
8161 ; PWR6-LABEL: ugt_17_v4i32:
8163 ; PWR6-NEXT: addis 3, 2, .LCPI72_0@toc@ha
8164 ; PWR6-NEXT: vspltisw 4, 1
8165 ; PWR6-NEXT: vxor 3, 3, 3
8166 ; PWR6-NEXT: addi 3, 3, .LCPI72_0@toc@l
8167 ; PWR6-NEXT: lvx 0, 0, 3
8168 ; PWR6-NEXT: addis 3, 2, .LCPI72_1@toc@ha
8169 ; PWR6-NEXT: addi 3, 3, .LCPI72_1@toc@l
8170 ; PWR6-NEXT: vspltisw 1, 2
8171 ; PWR6-NEXT: vsrw 5, 2, 4
8172 ; PWR6-NEXT: vand 5, 5, 0
8173 ; PWR6-NEXT: lvx 0, 0, 3
8174 ; PWR6-NEXT: vsubuwm 2, 2, 5
8175 ; PWR6-NEXT: vand 5, 2, 0
8176 ; PWR6-NEXT: vsrw 2, 2, 1
8177 ; PWR6-NEXT: vand 2, 2, 0
8178 ; PWR6-NEXT: vspltisw 0, 4
8179 ; PWR6-NEXT: vadduwm 2, 5, 2
8180 ; PWR6-NEXT: vsrw 5, 2, 0
8181 ; PWR6-NEXT: vspltisb 0, 15
8182 ; PWR6-NEXT: vadduwm 2, 2, 5
8183 ; PWR6-NEXT: vspltisb 5, 1
8184 ; PWR6-NEXT: vand 2, 2, 0
8185 ; PWR6-NEXT: vspltisw 0, -16
8186 ; PWR6-NEXT: vrlw 1, 5, 0
8187 ; PWR6-NEXT: vmulouh 5, 2, 5
8188 ; PWR6-NEXT: vmsumuhm 2, 2, 1, 3
8189 ; PWR6-NEXT: vspltisw 3, 12
8190 ; PWR6-NEXT: vadduwm 3, 3, 3
8191 ; PWR6-NEXT: vslw 2, 2, 0
8192 ; PWR6-NEXT: vadduwm 2, 5, 2
8193 ; PWR6-NEXT: vsrw 2, 2, 3
8194 ; PWR6-NEXT: vsubuwm 3, 4, 0
8195 ; PWR6-NEXT: vcmpgtuw 2, 2, 3
8198 ; PWR7-LABEL: ugt_17_v4i32:
8200 ; PWR7-NEXT: vspltisw 3, 1
8201 ; PWR7-NEXT: addis 3, 2, .LCPI72_0@toc@ha
8202 ; PWR7-NEXT: addi 3, 3, .LCPI72_0@toc@l
8203 ; PWR7-NEXT: vspltisw 5, 2
8204 ; PWR7-NEXT: lxvw4x 0, 0, 3
8205 ; PWR7-NEXT: addis 3, 2, .LCPI72_1@toc@ha
8206 ; PWR7-NEXT: vspltisw 0, -16
8207 ; PWR7-NEXT: vsrw 4, 2, 3
8208 ; PWR7-NEXT: addi 3, 3, .LCPI72_1@toc@l
8209 ; PWR7-NEXT: vspltisb 1, 15
8210 ; PWR7-NEXT: vsubuwm 3, 3, 0
8211 ; PWR7-NEXT: xxland 36, 36, 0
8212 ; PWR7-NEXT: lxvw4x 0, 0, 3
8213 ; PWR7-NEXT: vsubuwm 2, 2, 4
8214 ; PWR7-NEXT: vsrw 4, 2, 5
8215 ; PWR7-NEXT: xxland 34, 34, 0
8216 ; PWR7-NEXT: vspltisw 5, 4
8217 ; PWR7-NEXT: xxland 36, 36, 0
8218 ; PWR7-NEXT: vadduwm 2, 2, 4
8219 ; PWR7-NEXT: vsrw 4, 2, 5
8220 ; PWR7-NEXT: vspltisb 5, 1
8221 ; PWR7-NEXT: vrlw 6, 5, 0
8222 ; PWR7-NEXT: vadduwm 2, 2, 4
8223 ; PWR7-NEXT: xxlxor 36, 36, 36
8224 ; PWR7-NEXT: xxland 34, 34, 33
8225 ; PWR7-NEXT: vmsumuhm 4, 2, 6, 4
8226 ; PWR7-NEXT: vmulouh 2, 2, 5
8227 ; PWR7-NEXT: vspltisw 5, 12
8228 ; PWR7-NEXT: vslw 4, 4, 0
8229 ; PWR7-NEXT: vadduwm 2, 2, 4
8230 ; PWR7-NEXT: vadduwm 4, 5, 5
8231 ; PWR7-NEXT: vsrw 2, 2, 4
8232 ; PWR7-NEXT: vcmpgtuw 2, 2, 3
8235 ; PWR8-LABEL: ugt_17_v4i32:
8237 ; PWR8-NEXT: vspltisw 3, -16
8238 ; PWR8-NEXT: vspltisw 4, 1
8239 ; PWR8-NEXT: vpopcntw 2, 2
8240 ; PWR8-NEXT: vsubuwm 3, 4, 3
8241 ; PWR8-NEXT: vcmpgtuw 2, 2, 3
8244 ; PWR9-LABEL: ugt_17_v4i32:
8246 ; PWR9-NEXT: vspltisw 3, -16
8247 ; PWR9-NEXT: vspltisw 4, 1
8248 ; PWR9-NEXT: vpopcntw 2, 2
8249 ; PWR9-NEXT: vsubuwm 3, 4, 3
8250 ; PWR9-NEXT: vcmpgtuw 2, 2, 3
8252 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
8253 %3 = icmp ugt <4 x i32> %2, <i32 17, i32 17, i32 17, i32 17>
8254 %4 = sext <4 x i1> %3 to <4 x i32>
8258 define <4 x i32> @ult_18_v4i32(<4 x i32> %0) {
8259 ; PWR5-LABEL: ult_18_v4i32:
8261 ; PWR5-NEXT: addis 3, 2, .LCPI73_0@toc@ha
8262 ; PWR5-NEXT: vspltisw 4, 1
8263 ; PWR5-NEXT: vxor 3, 3, 3
8264 ; PWR5-NEXT: addi 3, 3, .LCPI73_0@toc@l
8265 ; PWR5-NEXT: lvx 5, 0, 3
8266 ; PWR5-NEXT: addis 3, 2, .LCPI73_1@toc@ha
8267 ; PWR5-NEXT: addi 3, 3, .LCPI73_1@toc@l
8268 ; PWR5-NEXT: vspltisw 0, 2
8269 ; PWR5-NEXT: vsrw 4, 2, 4
8270 ; PWR5-NEXT: vand 4, 4, 5
8271 ; PWR5-NEXT: lvx 5, 0, 3
8272 ; PWR5-NEXT: vsubuwm 2, 2, 4
8273 ; PWR5-NEXT: vand 4, 2, 5
8274 ; PWR5-NEXT: vsrw 2, 2, 0
8275 ; PWR5-NEXT: vand 2, 2, 5
8276 ; PWR5-NEXT: vspltisw 5, 4
8277 ; PWR5-NEXT: vadduwm 2, 4, 2
8278 ; PWR5-NEXT: vsrw 4, 2, 5
8279 ; PWR5-NEXT: vspltisb 5, 15
8280 ; PWR5-NEXT: vadduwm 2, 2, 4
8281 ; PWR5-NEXT: vspltisb 4, 1
8282 ; PWR5-NEXT: vand 2, 2, 5
8283 ; PWR5-NEXT: vspltisw 5, -16
8284 ; PWR5-NEXT: vrlw 0, 4, 5
8285 ; PWR5-NEXT: vmulouh 4, 2, 4
8286 ; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
8287 ; PWR5-NEXT: vspltisw 3, 12
8288 ; PWR5-NEXT: vadduwm 3, 3, 3
8289 ; PWR5-NEXT: vslw 2, 2, 5
8290 ; PWR5-NEXT: vadduwm 2, 4, 2
8291 ; PWR5-NEXT: vsrw 2, 2, 3
8292 ; PWR5-NEXT: vspltisw 3, 9
8293 ; PWR5-NEXT: vadduwm 3, 3, 3
8294 ; PWR5-NEXT: vcmpgtuw 2, 3, 2
8297 ; PWR6-LABEL: ult_18_v4i32:
8299 ; PWR6-NEXT: addis 3, 2, .LCPI73_0@toc@ha
8300 ; PWR6-NEXT: vspltisw 4, 1
8301 ; PWR6-NEXT: vxor 3, 3, 3
8302 ; PWR6-NEXT: addi 3, 3, .LCPI73_0@toc@l
8303 ; PWR6-NEXT: lvx 5, 0, 3
8304 ; PWR6-NEXT: addis 3, 2, .LCPI73_1@toc@ha
8305 ; PWR6-NEXT: addi 3, 3, .LCPI73_1@toc@l
8306 ; PWR6-NEXT: vspltisw 0, 2
8307 ; PWR6-NEXT: vsrw 4, 2, 4
8308 ; PWR6-NEXT: vand 4, 4, 5
8309 ; PWR6-NEXT: lvx 5, 0, 3
8310 ; PWR6-NEXT: vsubuwm 2, 2, 4
8311 ; PWR6-NEXT: vand 4, 2, 5
8312 ; PWR6-NEXT: vsrw 2, 2, 0
8313 ; PWR6-NEXT: vand 2, 2, 5
8314 ; PWR6-NEXT: vspltisw 5, 4
8315 ; PWR6-NEXT: vadduwm 2, 4, 2
8316 ; PWR6-NEXT: vsrw 4, 2, 5
8317 ; PWR6-NEXT: vspltisb 5, 15
8318 ; PWR6-NEXT: vadduwm 2, 2, 4
8319 ; PWR6-NEXT: vspltisb 4, 1
8320 ; PWR6-NEXT: vand 2, 2, 5
8321 ; PWR6-NEXT: vspltisw 5, -16
8322 ; PWR6-NEXT: vrlw 0, 4, 5
8323 ; PWR6-NEXT: vmulouh 4, 2, 4
8324 ; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
8325 ; PWR6-NEXT: vspltisw 3, 12
8326 ; PWR6-NEXT: vadduwm 3, 3, 3
8327 ; PWR6-NEXT: vslw 2, 2, 5
8328 ; PWR6-NEXT: vadduwm 2, 4, 2
8329 ; PWR6-NEXT: vsrw 2, 2, 3
8330 ; PWR6-NEXT: vspltisw 3, 9
8331 ; PWR6-NEXT: vadduwm 3, 3, 3
8332 ; PWR6-NEXT: vcmpgtuw 2, 3, 2
8335 ; PWR7-LABEL: ult_18_v4i32:
8337 ; PWR7-NEXT: vspltisw 3, 1
8338 ; PWR7-NEXT: addis 3, 2, .LCPI73_0@toc@ha
8339 ; PWR7-NEXT: addi 3, 3, .LCPI73_0@toc@l
8340 ; PWR7-NEXT: vspltisw 4, 2
8341 ; PWR7-NEXT: lxvw4x 0, 0, 3
8342 ; PWR7-NEXT: addis 3, 2, .LCPI73_1@toc@ha
8343 ; PWR7-NEXT: vspltisw 5, -16
8344 ; PWR7-NEXT: vsrw 3, 2, 3
8345 ; PWR7-NEXT: addi 3, 3, .LCPI73_1@toc@l
8346 ; PWR7-NEXT: vspltisb 0, 15
8347 ; PWR7-NEXT: xxland 35, 35, 0
8348 ; PWR7-NEXT: lxvw4x 0, 0, 3
8349 ; PWR7-NEXT: vsubuwm 2, 2, 3
8350 ; PWR7-NEXT: vsrw 3, 2, 4
8351 ; PWR7-NEXT: xxland 34, 34, 0
8352 ; PWR7-NEXT: vspltisw 4, 4
8353 ; PWR7-NEXT: xxland 35, 35, 0
8354 ; PWR7-NEXT: vadduwm 2, 2, 3
8355 ; PWR7-NEXT: vsrw 3, 2, 4
8356 ; PWR7-NEXT: vspltisb 4, 1
8357 ; PWR7-NEXT: vrlw 1, 4, 5
8358 ; PWR7-NEXT: vadduwm 2, 2, 3
8359 ; PWR7-NEXT: xxlxor 35, 35, 35
8360 ; PWR7-NEXT: xxland 34, 34, 32
8361 ; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
8362 ; PWR7-NEXT: vmulouh 2, 2, 4
8363 ; PWR7-NEXT: vspltisw 4, 12
8364 ; PWR7-NEXT: vslw 3, 3, 5
8365 ; PWR7-NEXT: vadduwm 2, 2, 3
8366 ; PWR7-NEXT: vadduwm 3, 4, 4
8367 ; PWR7-NEXT: vsrw 2, 2, 3
8368 ; PWR7-NEXT: vspltisw 3, 9
8369 ; PWR7-NEXT: vadduwm 3, 3, 3
8370 ; PWR7-NEXT: vcmpgtuw 2, 3, 2
8373 ; PWR8-LABEL: ult_18_v4i32:
8375 ; PWR8-NEXT: vspltisw 3, 9
8376 ; PWR8-NEXT: vpopcntw 2, 2
8377 ; PWR8-NEXT: vadduwm 3, 3, 3
8378 ; PWR8-NEXT: vcmpgtuw 2, 3, 2
8381 ; PWR9-LABEL: ult_18_v4i32:
8383 ; PWR9-NEXT: vspltisw 3, 9
8384 ; PWR9-NEXT: vpopcntw 2, 2
8385 ; PWR9-NEXT: vadduwm 3, 3, 3
8386 ; PWR9-NEXT: vcmpgtuw 2, 3, 2
8388 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
8389 %3 = icmp ult <4 x i32> %2, <i32 18, i32 18, i32 18, i32 18>
8390 %4 = sext <4 x i1> %3 to <4 x i32>
8394 define <4 x i32> @ugt_18_v4i32(<4 x i32> %0) {
8395 ; PWR5-LABEL: ugt_18_v4i32:
8397 ; PWR5-NEXT: addis 3, 2, .LCPI74_0@toc@ha
8398 ; PWR5-NEXT: vspltisw 4, 1
8399 ; PWR5-NEXT: vxor 3, 3, 3
8400 ; PWR5-NEXT: addi 3, 3, .LCPI74_0@toc@l
8401 ; PWR5-NEXT: lvx 5, 0, 3
8402 ; PWR5-NEXT: addis 3, 2, .LCPI74_1@toc@ha
8403 ; PWR5-NEXT: addi 3, 3, .LCPI74_1@toc@l
8404 ; PWR5-NEXT: vspltisw 0, 2
8405 ; PWR5-NEXT: vsrw 4, 2, 4
8406 ; PWR5-NEXT: vand 4, 4, 5
8407 ; PWR5-NEXT: lvx 5, 0, 3
8408 ; PWR5-NEXT: vsubuwm 2, 2, 4
8409 ; PWR5-NEXT: vand 4, 2, 5
8410 ; PWR5-NEXT: vsrw 2, 2, 0
8411 ; PWR5-NEXT: vand 2, 2, 5
8412 ; PWR5-NEXT: vspltisw 5, 4
8413 ; PWR5-NEXT: vadduwm 2, 4, 2
8414 ; PWR5-NEXT: vsrw 4, 2, 5
8415 ; PWR5-NEXT: vspltisb 5, 15
8416 ; PWR5-NEXT: vadduwm 2, 2, 4
8417 ; PWR5-NEXT: vspltisb 4, 1
8418 ; PWR5-NEXT: vand 2, 2, 5
8419 ; PWR5-NEXT: vspltisw 5, -16
8420 ; PWR5-NEXT: vrlw 0, 4, 5
8421 ; PWR5-NEXT: vmulouh 4, 2, 4
8422 ; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
8423 ; PWR5-NEXT: vspltisw 3, 12
8424 ; PWR5-NEXT: vadduwm 3, 3, 3
8425 ; PWR5-NEXT: vslw 2, 2, 5
8426 ; PWR5-NEXT: vadduwm 2, 4, 2
8427 ; PWR5-NEXT: vsrw 2, 2, 3
8428 ; PWR5-NEXT: vspltisw 3, 9
8429 ; PWR5-NEXT: vadduwm 3, 3, 3
8430 ; PWR5-NEXT: vcmpgtuw 2, 2, 3
8433 ; PWR6-LABEL: ugt_18_v4i32:
8435 ; PWR6-NEXT: addis 3, 2, .LCPI74_0@toc@ha
8436 ; PWR6-NEXT: vspltisw 4, 1
8437 ; PWR6-NEXT: vxor 3, 3, 3
8438 ; PWR6-NEXT: addi 3, 3, .LCPI74_0@toc@l
8439 ; PWR6-NEXT: lvx 5, 0, 3
8440 ; PWR6-NEXT: addis 3, 2, .LCPI74_1@toc@ha
8441 ; PWR6-NEXT: addi 3, 3, .LCPI74_1@toc@l
8442 ; PWR6-NEXT: vspltisw 0, 2
8443 ; PWR6-NEXT: vsrw 4, 2, 4
8444 ; PWR6-NEXT: vand 4, 4, 5
8445 ; PWR6-NEXT: lvx 5, 0, 3
8446 ; PWR6-NEXT: vsubuwm 2, 2, 4
8447 ; PWR6-NEXT: vand 4, 2, 5
8448 ; PWR6-NEXT: vsrw 2, 2, 0
8449 ; PWR6-NEXT: vand 2, 2, 5
8450 ; PWR6-NEXT: vspltisw 5, 4
8451 ; PWR6-NEXT: vadduwm 2, 4, 2
8452 ; PWR6-NEXT: vsrw 4, 2, 5
8453 ; PWR6-NEXT: vspltisb 5, 15
8454 ; PWR6-NEXT: vadduwm 2, 2, 4
8455 ; PWR6-NEXT: vspltisb 4, 1
8456 ; PWR6-NEXT: vand 2, 2, 5
8457 ; PWR6-NEXT: vspltisw 5, -16
8458 ; PWR6-NEXT: vrlw 0, 4, 5
8459 ; PWR6-NEXT: vmulouh 4, 2, 4
8460 ; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
8461 ; PWR6-NEXT: vspltisw 3, 12
8462 ; PWR6-NEXT: vadduwm 3, 3, 3
8463 ; PWR6-NEXT: vslw 2, 2, 5
8464 ; PWR6-NEXT: vadduwm 2, 4, 2
8465 ; PWR6-NEXT: vsrw 2, 2, 3
8466 ; PWR6-NEXT: vspltisw 3, 9
8467 ; PWR6-NEXT: vadduwm 3, 3, 3
8468 ; PWR6-NEXT: vcmpgtuw 2, 2, 3
8471 ; PWR7-LABEL: ugt_18_v4i32:
8473 ; PWR7-NEXT: vspltisw 3, 1
8474 ; PWR7-NEXT: addis 3, 2, .LCPI74_0@toc@ha
8475 ; PWR7-NEXT: addi 3, 3, .LCPI74_0@toc@l
8476 ; PWR7-NEXT: vspltisw 4, 2
8477 ; PWR7-NEXT: lxvw4x 0, 0, 3
8478 ; PWR7-NEXT: addis 3, 2, .LCPI74_1@toc@ha
8479 ; PWR7-NEXT: vspltisw 5, -16
8480 ; PWR7-NEXT: vsrw 3, 2, 3
8481 ; PWR7-NEXT: addi 3, 3, .LCPI74_1@toc@l
8482 ; PWR7-NEXT: vspltisb 0, 15
8483 ; PWR7-NEXT: xxland 35, 35, 0
8484 ; PWR7-NEXT: lxvw4x 0, 0, 3
8485 ; PWR7-NEXT: vsubuwm 2, 2, 3
8486 ; PWR7-NEXT: vsrw 3, 2, 4
8487 ; PWR7-NEXT: xxland 34, 34, 0
8488 ; PWR7-NEXT: vspltisw 4, 4
8489 ; PWR7-NEXT: xxland 35, 35, 0
8490 ; PWR7-NEXT: vadduwm 2, 2, 3
8491 ; PWR7-NEXT: vsrw 3, 2, 4
8492 ; PWR7-NEXT: vspltisb 4, 1
8493 ; PWR7-NEXT: vrlw 1, 4, 5
8494 ; PWR7-NEXT: vadduwm 2, 2, 3
8495 ; PWR7-NEXT: xxlxor 35, 35, 35
8496 ; PWR7-NEXT: xxland 34, 34, 32
8497 ; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
8498 ; PWR7-NEXT: vmulouh 2, 2, 4
8499 ; PWR7-NEXT: vspltisw 4, 12
8500 ; PWR7-NEXT: vslw 3, 3, 5
8501 ; PWR7-NEXT: vadduwm 2, 2, 3
8502 ; PWR7-NEXT: vadduwm 3, 4, 4
8503 ; PWR7-NEXT: vsrw 2, 2, 3
8504 ; PWR7-NEXT: vspltisw 3, 9
8505 ; PWR7-NEXT: vadduwm 3, 3, 3
8506 ; PWR7-NEXT: vcmpgtuw 2, 2, 3
8509 ; PWR8-LABEL: ugt_18_v4i32:
8511 ; PWR8-NEXT: vspltisw 3, 9
8512 ; PWR8-NEXT: vpopcntw 2, 2
8513 ; PWR8-NEXT: vadduwm 3, 3, 3
8514 ; PWR8-NEXT: vcmpgtuw 2, 2, 3
8517 ; PWR9-LABEL: ugt_18_v4i32:
8519 ; PWR9-NEXT: vspltisw 3, 9
8520 ; PWR9-NEXT: vpopcntw 2, 2
8521 ; PWR9-NEXT: vadduwm 3, 3, 3
8522 ; PWR9-NEXT: vcmpgtuw 2, 2, 3
8524 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
8525 %3 = icmp ugt <4 x i32> %2, <i32 18, i32 18, i32 18, i32 18>
8526 %4 = sext <4 x i1> %3 to <4 x i32>
8530 define <4 x i32> @ult_19_v4i32(<4 x i32> %0) {
8531 ; PWR5-LABEL: ult_19_v4i32:
8533 ; PWR5-NEXT: addis 3, 2, .LCPI75_0@toc@ha
8534 ; PWR5-NEXT: vspltisw 4, 1
8535 ; PWR5-NEXT: vxor 3, 3, 3
8536 ; PWR5-NEXT: addi 3, 3, .LCPI75_0@toc@l
8537 ; PWR5-NEXT: lvx 5, 0, 3
8538 ; PWR5-NEXT: addis 3, 2, .LCPI75_1@toc@ha
8539 ; PWR5-NEXT: addi 3, 3, .LCPI75_1@toc@l
8540 ; PWR5-NEXT: vspltisw 0, 2
8541 ; PWR5-NEXT: vsrw 4, 2, 4
8542 ; PWR5-NEXT: vand 4, 4, 5
8543 ; PWR5-NEXT: lvx 5, 0, 3
8544 ; PWR5-NEXT: vsubuwm 2, 2, 4
8545 ; PWR5-NEXT: vand 4, 2, 5
8546 ; PWR5-NEXT: vsrw 2, 2, 0
8547 ; PWR5-NEXT: vand 2, 2, 5
8548 ; PWR5-NEXT: vspltisw 5, 4
8549 ; PWR5-NEXT: vadduwm 2, 4, 2
8550 ; PWR5-NEXT: vsrw 4, 2, 5
8551 ; PWR5-NEXT: vspltisb 5, 15
8552 ; PWR5-NEXT: vadduwm 2, 2, 4
8553 ; PWR5-NEXT: vspltisb 4, 1
8554 ; PWR5-NEXT: vand 2, 2, 5
8555 ; PWR5-NEXT: vspltisw 5, -16
8556 ; PWR5-NEXT: vrlw 0, 4, 5
8557 ; PWR5-NEXT: vmulouh 4, 2, 4
8558 ; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
8559 ; PWR5-NEXT: vspltisw 3, 12
8560 ; PWR5-NEXT: vadduwm 3, 3, 3
8561 ; PWR5-NEXT: vslw 2, 2, 5
8562 ; PWR5-NEXT: vadduwm 2, 4, 2
8563 ; PWR5-NEXT: vsrw 2, 2, 3
8564 ; PWR5-NEXT: vspltisw 3, 3
8565 ; PWR5-NEXT: vsubuwm 3, 3, 5
8566 ; PWR5-NEXT: vcmpgtuw 2, 3, 2
8569 ; PWR6-LABEL: ult_19_v4i32:
8571 ; PWR6-NEXT: addis 3, 2, .LCPI75_0@toc@ha
8572 ; PWR6-NEXT: vspltisw 4, 1
8573 ; PWR6-NEXT: vxor 3, 3, 3
8574 ; PWR6-NEXT: addi 3, 3, .LCPI75_0@toc@l
8575 ; PWR6-NEXT: lvx 5, 0, 3
8576 ; PWR6-NEXT: addis 3, 2, .LCPI75_1@toc@ha
8577 ; PWR6-NEXT: addi 3, 3, .LCPI75_1@toc@l
8578 ; PWR6-NEXT: vspltisw 0, 2
8579 ; PWR6-NEXT: vsrw 4, 2, 4
8580 ; PWR6-NEXT: vand 4, 4, 5
8581 ; PWR6-NEXT: lvx 5, 0, 3
8582 ; PWR6-NEXT: vsubuwm 2, 2, 4
8583 ; PWR6-NEXT: vand 4, 2, 5
8584 ; PWR6-NEXT: vsrw 2, 2, 0
8585 ; PWR6-NEXT: vand 2, 2, 5
8586 ; PWR6-NEXT: vspltisw 5, 4
8587 ; PWR6-NEXT: vadduwm 2, 4, 2
8588 ; PWR6-NEXT: vsrw 4, 2, 5
8589 ; PWR6-NEXT: vspltisb 5, 15
8590 ; PWR6-NEXT: vadduwm 2, 2, 4
8591 ; PWR6-NEXT: vspltisb 4, 1
8592 ; PWR6-NEXT: vand 2, 2, 5
8593 ; PWR6-NEXT: vspltisw 5, -16
8594 ; PWR6-NEXT: vrlw 0, 4, 5
8595 ; PWR6-NEXT: vmulouh 4, 2, 4
8596 ; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
8597 ; PWR6-NEXT: vspltisw 3, 12
8598 ; PWR6-NEXT: vadduwm 3, 3, 3
8599 ; PWR6-NEXT: vslw 2, 2, 5
8600 ; PWR6-NEXT: vadduwm 2, 4, 2
8601 ; PWR6-NEXT: vsrw 2, 2, 3
8602 ; PWR6-NEXT: vspltisw 3, 3
8603 ; PWR6-NEXT: vsubuwm 3, 3, 5
8604 ; PWR6-NEXT: vcmpgtuw 2, 3, 2
8607 ; PWR7-LABEL: ult_19_v4i32:
8609 ; PWR7-NEXT: vspltisw 3, 1
8610 ; PWR7-NEXT: addis 3, 2, .LCPI75_0@toc@ha
8611 ; PWR7-NEXT: addi 3, 3, .LCPI75_0@toc@l
8612 ; PWR7-NEXT: vspltisw 4, 2
8613 ; PWR7-NEXT: lxvw4x 0, 0, 3
8614 ; PWR7-NEXT: addis 3, 2, .LCPI75_1@toc@ha
8615 ; PWR7-NEXT: vspltisw 5, -16
8616 ; PWR7-NEXT: vsrw 3, 2, 3
8617 ; PWR7-NEXT: addi 3, 3, .LCPI75_1@toc@l
8618 ; PWR7-NEXT: vspltisb 0, 15
8619 ; PWR7-NEXT: xxland 35, 35, 0
8620 ; PWR7-NEXT: lxvw4x 0, 0, 3
8621 ; PWR7-NEXT: vsubuwm 2, 2, 3
8622 ; PWR7-NEXT: vsrw 3, 2, 4
8623 ; PWR7-NEXT: xxland 34, 34, 0
8624 ; PWR7-NEXT: vspltisw 4, 4
8625 ; PWR7-NEXT: xxland 35, 35, 0
8626 ; PWR7-NEXT: vadduwm 2, 2, 3
8627 ; PWR7-NEXT: vsrw 3, 2, 4
8628 ; PWR7-NEXT: vspltisb 4, 1
8629 ; PWR7-NEXT: vrlw 1, 4, 5
8630 ; PWR7-NEXT: vadduwm 2, 2, 3
8631 ; PWR7-NEXT: xxlxor 35, 35, 35
8632 ; PWR7-NEXT: xxland 34, 34, 32
8633 ; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
8634 ; PWR7-NEXT: vmulouh 2, 2, 4
8635 ; PWR7-NEXT: vspltisw 4, 12
8636 ; PWR7-NEXT: vslw 3, 3, 5
8637 ; PWR7-NEXT: vadduwm 2, 2, 3
8638 ; PWR7-NEXT: vadduwm 3, 4, 4
8639 ; PWR7-NEXT: vsrw 2, 2, 3
8640 ; PWR7-NEXT: vspltisw 3, 3
8641 ; PWR7-NEXT: vsubuwm 3, 3, 5
8642 ; PWR7-NEXT: vcmpgtuw 2, 3, 2
8645 ; PWR8-LABEL: ult_19_v4i32:
8647 ; PWR8-NEXT: vspltisw 3, -16
8648 ; PWR8-NEXT: vspltisw 4, 3
8649 ; PWR8-NEXT: vpopcntw 2, 2
8650 ; PWR8-NEXT: vsubuwm 3, 4, 3
8651 ; PWR8-NEXT: vcmpgtuw 2, 3, 2
8654 ; PWR9-LABEL: ult_19_v4i32:
8656 ; PWR9-NEXT: vspltisw 3, -16
8657 ; PWR9-NEXT: vspltisw 4, 3
8658 ; PWR9-NEXT: vpopcntw 2, 2
8659 ; PWR9-NEXT: vsubuwm 3, 4, 3
8660 ; PWR9-NEXT: vcmpgtuw 2, 3, 2
8662 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
8663 %3 = icmp ult <4 x i32> %2, <i32 19, i32 19, i32 19, i32 19>
8664 %4 = sext <4 x i1> %3 to <4 x i32>
8668 define <4 x i32> @ugt_19_v4i32(<4 x i32> %0) {
8669 ; PWR5-LABEL: ugt_19_v4i32:
8671 ; PWR5-NEXT: addis 3, 2, .LCPI76_0@toc@ha
8672 ; PWR5-NEXT: vspltisw 4, 1
8673 ; PWR5-NEXT: vxor 3, 3, 3
8674 ; PWR5-NEXT: addi 3, 3, .LCPI76_0@toc@l
8675 ; PWR5-NEXT: lvx 5, 0, 3
8676 ; PWR5-NEXT: addis 3, 2, .LCPI76_1@toc@ha
8677 ; PWR5-NEXT: addi 3, 3, .LCPI76_1@toc@l
8678 ; PWR5-NEXT: vspltisw 0, 2
8679 ; PWR5-NEXT: vsrw 4, 2, 4
8680 ; PWR5-NEXT: vand 4, 4, 5
8681 ; PWR5-NEXT: lvx 5, 0, 3
8682 ; PWR5-NEXT: vsubuwm 2, 2, 4
8683 ; PWR5-NEXT: vand 4, 2, 5
8684 ; PWR5-NEXT: vsrw 2, 2, 0
8685 ; PWR5-NEXT: vand 2, 2, 5
8686 ; PWR5-NEXT: vspltisw 5, 4
8687 ; PWR5-NEXT: vadduwm 2, 4, 2
8688 ; PWR5-NEXT: vsrw 4, 2, 5
8689 ; PWR5-NEXT: vspltisb 5, 15
8690 ; PWR5-NEXT: vadduwm 2, 2, 4
8691 ; PWR5-NEXT: vspltisb 4, 1
8692 ; PWR5-NEXT: vand 2, 2, 5
8693 ; PWR5-NEXT: vspltisw 5, -16
8694 ; PWR5-NEXT: vrlw 0, 4, 5
8695 ; PWR5-NEXT: vmulouh 4, 2, 4
8696 ; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
8697 ; PWR5-NEXT: vspltisw 3, 12
8698 ; PWR5-NEXT: vadduwm 3, 3, 3
8699 ; PWR5-NEXT: vslw 2, 2, 5
8700 ; PWR5-NEXT: vadduwm 2, 4, 2
8701 ; PWR5-NEXT: vsrw 2, 2, 3
8702 ; PWR5-NEXT: vspltisw 3, 3
8703 ; PWR5-NEXT: vsubuwm 3, 3, 5
8704 ; PWR5-NEXT: vcmpgtuw 2, 2, 3
8707 ; PWR6-LABEL: ugt_19_v4i32:
8709 ; PWR6-NEXT: addis 3, 2, .LCPI76_0@toc@ha
8710 ; PWR6-NEXT: vspltisw 4, 1
8711 ; PWR6-NEXT: vxor 3, 3, 3
8712 ; PWR6-NEXT: addi 3, 3, .LCPI76_0@toc@l
8713 ; PWR6-NEXT: lvx 5, 0, 3
8714 ; PWR6-NEXT: addis 3, 2, .LCPI76_1@toc@ha
8715 ; PWR6-NEXT: addi 3, 3, .LCPI76_1@toc@l
8716 ; PWR6-NEXT: vspltisw 0, 2
8717 ; PWR6-NEXT: vsrw 4, 2, 4
8718 ; PWR6-NEXT: vand 4, 4, 5
8719 ; PWR6-NEXT: lvx 5, 0, 3
8720 ; PWR6-NEXT: vsubuwm 2, 2, 4
8721 ; PWR6-NEXT: vand 4, 2, 5
8722 ; PWR6-NEXT: vsrw 2, 2, 0
8723 ; PWR6-NEXT: vand 2, 2, 5
8724 ; PWR6-NEXT: vspltisw 5, 4
8725 ; PWR6-NEXT: vadduwm 2, 4, 2
8726 ; PWR6-NEXT: vsrw 4, 2, 5
8727 ; PWR6-NEXT: vspltisb 5, 15
8728 ; PWR6-NEXT: vadduwm 2, 2, 4
8729 ; PWR6-NEXT: vspltisb 4, 1
8730 ; PWR6-NEXT: vand 2, 2, 5
8731 ; PWR6-NEXT: vspltisw 5, -16
8732 ; PWR6-NEXT: vrlw 0, 4, 5
8733 ; PWR6-NEXT: vmulouh 4, 2, 4
8734 ; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
8735 ; PWR6-NEXT: vspltisw 3, 12
8736 ; PWR6-NEXT: vadduwm 3, 3, 3
8737 ; PWR6-NEXT: vslw 2, 2, 5
8738 ; PWR6-NEXT: vadduwm 2, 4, 2
8739 ; PWR6-NEXT: vsrw 2, 2, 3
8740 ; PWR6-NEXT: vspltisw 3, 3
8741 ; PWR6-NEXT: vsubuwm 3, 3, 5
8742 ; PWR6-NEXT: vcmpgtuw 2, 2, 3
8745 ; PWR7-LABEL: ugt_19_v4i32:
8747 ; PWR7-NEXT: vspltisw 3, 1
8748 ; PWR7-NEXT: addis 3, 2, .LCPI76_0@toc@ha
8749 ; PWR7-NEXT: addi 3, 3, .LCPI76_0@toc@l
8750 ; PWR7-NEXT: vspltisw 4, 2
8751 ; PWR7-NEXT: lxvw4x 0, 0, 3
8752 ; PWR7-NEXT: addis 3, 2, .LCPI76_1@toc@ha
8753 ; PWR7-NEXT: vspltisw 5, -16
8754 ; PWR7-NEXT: vsrw 3, 2, 3
8755 ; PWR7-NEXT: addi 3, 3, .LCPI76_1@toc@l
8756 ; PWR7-NEXT: vspltisb 0, 15
8757 ; PWR7-NEXT: xxland 35, 35, 0
8758 ; PWR7-NEXT: lxvw4x 0, 0, 3
8759 ; PWR7-NEXT: vsubuwm 2, 2, 3
8760 ; PWR7-NEXT: vsrw 3, 2, 4
8761 ; PWR7-NEXT: xxland 34, 34, 0
8762 ; PWR7-NEXT: vspltisw 4, 4
8763 ; PWR7-NEXT: xxland 35, 35, 0
8764 ; PWR7-NEXT: vadduwm 2, 2, 3
8765 ; PWR7-NEXT: vsrw 3, 2, 4
8766 ; PWR7-NEXT: vspltisb 4, 1
8767 ; PWR7-NEXT: vrlw 1, 4, 5
8768 ; PWR7-NEXT: vadduwm 2, 2, 3
8769 ; PWR7-NEXT: xxlxor 35, 35, 35
8770 ; PWR7-NEXT: xxland 34, 34, 32
8771 ; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
8772 ; PWR7-NEXT: vmulouh 2, 2, 4
8773 ; PWR7-NEXT: vspltisw 4, 12
8774 ; PWR7-NEXT: vslw 3, 3, 5
8775 ; PWR7-NEXT: vadduwm 2, 2, 3
8776 ; PWR7-NEXT: vadduwm 3, 4, 4
8777 ; PWR7-NEXT: vsrw 2, 2, 3
8778 ; PWR7-NEXT: vspltisw 3, 3
8779 ; PWR7-NEXT: vsubuwm 3, 3, 5
8780 ; PWR7-NEXT: vcmpgtuw 2, 2, 3
8783 ; PWR8-LABEL: ugt_19_v4i32:
8785 ; PWR8-NEXT: vspltisw 3, -16
8786 ; PWR8-NEXT: vspltisw 4, 3
8787 ; PWR8-NEXT: vpopcntw 2, 2
8788 ; PWR8-NEXT: vsubuwm 3, 4, 3
8789 ; PWR8-NEXT: vcmpgtuw 2, 2, 3
8792 ; PWR9-LABEL: ugt_19_v4i32:
8794 ; PWR9-NEXT: vspltisw 3, -16
8795 ; PWR9-NEXT: vspltisw 4, 3
8796 ; PWR9-NEXT: vpopcntw 2, 2
8797 ; PWR9-NEXT: vsubuwm 3, 4, 3
8798 ; PWR9-NEXT: vcmpgtuw 2, 2, 3
8800 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
8801 %3 = icmp ugt <4 x i32> %2, <i32 19, i32 19, i32 19, i32 19>
8802 %4 = sext <4 x i1> %3 to <4 x i32>
8806 define <4 x i32> @ult_20_v4i32(<4 x i32> %0) {
8807 ; PWR5-LABEL: ult_20_v4i32:
8809 ; PWR5-NEXT: addis 3, 2, .LCPI77_0@toc@ha
8810 ; PWR5-NEXT: vspltisw 4, 1
8811 ; PWR5-NEXT: vxor 3, 3, 3
8812 ; PWR5-NEXT: addi 3, 3, .LCPI77_0@toc@l
8813 ; PWR5-NEXT: lvx 5, 0, 3
8814 ; PWR5-NEXT: addis 3, 2, .LCPI77_1@toc@ha
8815 ; PWR5-NEXT: addi 3, 3, .LCPI77_1@toc@l
8816 ; PWR5-NEXT: vspltisw 0, 2
8817 ; PWR5-NEXT: vsrw 4, 2, 4
8818 ; PWR5-NEXT: vand 4, 4, 5
8819 ; PWR5-NEXT: lvx 5, 0, 3
8820 ; PWR5-NEXT: vsubuwm 2, 2, 4
8821 ; PWR5-NEXT: vand 4, 2, 5
8822 ; PWR5-NEXT: vsrw 2, 2, 0
8823 ; PWR5-NEXT: vand 2, 2, 5
8824 ; PWR5-NEXT: vspltisw 5, 4
8825 ; PWR5-NEXT: vadduwm 2, 4, 2
8826 ; PWR5-NEXT: vsrw 4, 2, 5
8827 ; PWR5-NEXT: vspltisb 5, 15
8828 ; PWR5-NEXT: vadduwm 2, 2, 4
8829 ; PWR5-NEXT: vspltisb 4, 1
8830 ; PWR5-NEXT: vand 2, 2, 5
8831 ; PWR5-NEXT: vspltisw 5, -16
8832 ; PWR5-NEXT: vrlw 0, 4, 5
8833 ; PWR5-NEXT: vmulouh 4, 2, 4
8834 ; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
8835 ; PWR5-NEXT: vspltisw 3, 12
8836 ; PWR5-NEXT: vadduwm 3, 3, 3
8837 ; PWR5-NEXT: vslw 2, 2, 5
8838 ; PWR5-NEXT: vadduwm 2, 4, 2
8839 ; PWR5-NEXT: vsrw 2, 2, 3
8840 ; PWR5-NEXT: vspltisw 3, 10
8841 ; PWR5-NEXT: vadduwm 3, 3, 3
8842 ; PWR5-NEXT: vcmpgtuw 2, 3, 2
8845 ; PWR6-LABEL: ult_20_v4i32:
8847 ; PWR6-NEXT: addis 3, 2, .LCPI77_0@toc@ha
8848 ; PWR6-NEXT: vspltisw 4, 1
8849 ; PWR6-NEXT: vxor 3, 3, 3
8850 ; PWR6-NEXT: addi 3, 3, .LCPI77_0@toc@l
8851 ; PWR6-NEXT: lvx 5, 0, 3
8852 ; PWR6-NEXT: addis 3, 2, .LCPI77_1@toc@ha
8853 ; PWR6-NEXT: addi 3, 3, .LCPI77_1@toc@l
8854 ; PWR6-NEXT: vspltisw 0, 2
8855 ; PWR6-NEXT: vsrw 4, 2, 4
8856 ; PWR6-NEXT: vand 4, 4, 5
8857 ; PWR6-NEXT: lvx 5, 0, 3
8858 ; PWR6-NEXT: vsubuwm 2, 2, 4
8859 ; PWR6-NEXT: vand 4, 2, 5
8860 ; PWR6-NEXT: vsrw 2, 2, 0
8861 ; PWR6-NEXT: vand 2, 2, 5
8862 ; PWR6-NEXT: vspltisw 5, 4
8863 ; PWR6-NEXT: vadduwm 2, 4, 2
8864 ; PWR6-NEXT: vsrw 4, 2, 5
8865 ; PWR6-NEXT: vspltisb 5, 15
8866 ; PWR6-NEXT: vadduwm 2, 2, 4
8867 ; PWR6-NEXT: vspltisb 4, 1
8868 ; PWR6-NEXT: vand 2, 2, 5
8869 ; PWR6-NEXT: vspltisw 5, -16
8870 ; PWR6-NEXT: vrlw 0, 4, 5
8871 ; PWR6-NEXT: vmulouh 4, 2, 4
8872 ; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
8873 ; PWR6-NEXT: vspltisw 3, 12
8874 ; PWR6-NEXT: vadduwm 3, 3, 3
8875 ; PWR6-NEXT: vslw 2, 2, 5
8876 ; PWR6-NEXT: vadduwm 2, 4, 2
8877 ; PWR6-NEXT: vsrw 2, 2, 3
8878 ; PWR6-NEXT: vspltisw 3, 10
8879 ; PWR6-NEXT: vadduwm 3, 3, 3
8880 ; PWR6-NEXT: vcmpgtuw 2, 3, 2
8883 ; PWR7-LABEL: ult_20_v4i32:
8885 ; PWR7-NEXT: vspltisw 3, 1
8886 ; PWR7-NEXT: addis 3, 2, .LCPI77_0@toc@ha
8887 ; PWR7-NEXT: addi 3, 3, .LCPI77_0@toc@l
8888 ; PWR7-NEXT: vspltisw 4, 2
8889 ; PWR7-NEXT: lxvw4x 0, 0, 3
8890 ; PWR7-NEXT: addis 3, 2, .LCPI77_1@toc@ha
8891 ; PWR7-NEXT: vspltisw 5, -16
8892 ; PWR7-NEXT: vsrw 3, 2, 3
8893 ; PWR7-NEXT: addi 3, 3, .LCPI77_1@toc@l
8894 ; PWR7-NEXT: vspltisb 0, 15
8895 ; PWR7-NEXT: xxland 35, 35, 0
8896 ; PWR7-NEXT: lxvw4x 0, 0, 3
8897 ; PWR7-NEXT: vsubuwm 2, 2, 3
8898 ; PWR7-NEXT: vsrw 3, 2, 4
8899 ; PWR7-NEXT: xxland 34, 34, 0
8900 ; PWR7-NEXT: vspltisw 4, 4
8901 ; PWR7-NEXT: xxland 35, 35, 0
8902 ; PWR7-NEXT: vadduwm 2, 2, 3
8903 ; PWR7-NEXT: vsrw 3, 2, 4
8904 ; PWR7-NEXT: vspltisb 4, 1
8905 ; PWR7-NEXT: vrlw 1, 4, 5
8906 ; PWR7-NEXT: vadduwm 2, 2, 3
8907 ; PWR7-NEXT: xxlxor 35, 35, 35
8908 ; PWR7-NEXT: xxland 34, 34, 32
8909 ; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
8910 ; PWR7-NEXT: vmulouh 2, 2, 4
8911 ; PWR7-NEXT: vspltisw 4, 12
8912 ; PWR7-NEXT: vslw 3, 3, 5
8913 ; PWR7-NEXT: vadduwm 2, 2, 3
8914 ; PWR7-NEXT: vadduwm 3, 4, 4
8915 ; PWR7-NEXT: vsrw 2, 2, 3
8916 ; PWR7-NEXT: vspltisw 3, 10
8917 ; PWR7-NEXT: vadduwm 3, 3, 3
8918 ; PWR7-NEXT: vcmpgtuw 2, 3, 2
8921 ; PWR8-LABEL: ult_20_v4i32:
8923 ; PWR8-NEXT: vspltisw 3, 10
8924 ; PWR8-NEXT: vpopcntw 2, 2
8925 ; PWR8-NEXT: vadduwm 3, 3, 3
8926 ; PWR8-NEXT: vcmpgtuw 2, 3, 2
8929 ; PWR9-LABEL: ult_20_v4i32:
8931 ; PWR9-NEXT: vspltisw 3, 10
8932 ; PWR9-NEXT: vpopcntw 2, 2
8933 ; PWR9-NEXT: vadduwm 3, 3, 3
8934 ; PWR9-NEXT: vcmpgtuw 2, 3, 2
8936 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
8937 %3 = icmp ult <4 x i32> %2, <i32 20, i32 20, i32 20, i32 20>
8938 %4 = sext <4 x i1> %3 to <4 x i32>
8942 define <4 x i32> @ugt_20_v4i32(<4 x i32> %0) {
8943 ; PWR5-LABEL: ugt_20_v4i32:
8945 ; PWR5-NEXT: addis 3, 2, .LCPI78_0@toc@ha
8946 ; PWR5-NEXT: vspltisw 4, 1
8947 ; PWR5-NEXT: vxor 3, 3, 3
8948 ; PWR5-NEXT: addi 3, 3, .LCPI78_0@toc@l
8949 ; PWR5-NEXT: lvx 5, 0, 3
8950 ; PWR5-NEXT: addis 3, 2, .LCPI78_1@toc@ha
8951 ; PWR5-NEXT: addi 3, 3, .LCPI78_1@toc@l
8952 ; PWR5-NEXT: vspltisw 0, 2
8953 ; PWR5-NEXT: vsrw 4, 2, 4
8954 ; PWR5-NEXT: vand 4, 4, 5
8955 ; PWR5-NEXT: lvx 5, 0, 3
8956 ; PWR5-NEXT: vsubuwm 2, 2, 4
8957 ; PWR5-NEXT: vand 4, 2, 5
8958 ; PWR5-NEXT: vsrw 2, 2, 0
8959 ; PWR5-NEXT: vand 2, 2, 5
8960 ; PWR5-NEXT: vspltisw 5, 4
8961 ; PWR5-NEXT: vadduwm 2, 4, 2
8962 ; PWR5-NEXT: vsrw 4, 2, 5
8963 ; PWR5-NEXT: vspltisb 5, 15
8964 ; PWR5-NEXT: vadduwm 2, 2, 4
8965 ; PWR5-NEXT: vspltisb 4, 1
8966 ; PWR5-NEXT: vand 2, 2, 5
8967 ; PWR5-NEXT: vspltisw 5, -16
8968 ; PWR5-NEXT: vrlw 0, 4, 5
8969 ; PWR5-NEXT: vmulouh 4, 2, 4
8970 ; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
8971 ; PWR5-NEXT: vspltisw 3, 12
8972 ; PWR5-NEXT: vadduwm 3, 3, 3
8973 ; PWR5-NEXT: vslw 2, 2, 5
8974 ; PWR5-NEXT: vadduwm 2, 4, 2
8975 ; PWR5-NEXT: vsrw 2, 2, 3
8976 ; PWR5-NEXT: vspltisw 3, 10
8977 ; PWR5-NEXT: vadduwm 3, 3, 3
8978 ; PWR5-NEXT: vcmpgtuw 2, 2, 3
8981 ; PWR6-LABEL: ugt_20_v4i32:
8983 ; PWR6-NEXT: addis 3, 2, .LCPI78_0@toc@ha
8984 ; PWR6-NEXT: vspltisw 4, 1
8985 ; PWR6-NEXT: vxor 3, 3, 3
8986 ; PWR6-NEXT: addi 3, 3, .LCPI78_0@toc@l
8987 ; PWR6-NEXT: lvx 5, 0, 3
8988 ; PWR6-NEXT: addis 3, 2, .LCPI78_1@toc@ha
8989 ; PWR6-NEXT: addi 3, 3, .LCPI78_1@toc@l
8990 ; PWR6-NEXT: vspltisw 0, 2
8991 ; PWR6-NEXT: vsrw 4, 2, 4
8992 ; PWR6-NEXT: vand 4, 4, 5
8993 ; PWR6-NEXT: lvx 5, 0, 3
8994 ; PWR6-NEXT: vsubuwm 2, 2, 4
8995 ; PWR6-NEXT: vand 4, 2, 5
8996 ; PWR6-NEXT: vsrw 2, 2, 0
8997 ; PWR6-NEXT: vand 2, 2, 5
8998 ; PWR6-NEXT: vspltisw 5, 4
8999 ; PWR6-NEXT: vadduwm 2, 4, 2
9000 ; PWR6-NEXT: vsrw 4, 2, 5
9001 ; PWR6-NEXT: vspltisb 5, 15
9002 ; PWR6-NEXT: vadduwm 2, 2, 4
9003 ; PWR6-NEXT: vspltisb 4, 1
9004 ; PWR6-NEXT: vand 2, 2, 5
9005 ; PWR6-NEXT: vspltisw 5, -16
9006 ; PWR6-NEXT: vrlw 0, 4, 5
9007 ; PWR6-NEXT: vmulouh 4, 2, 4
9008 ; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
9009 ; PWR6-NEXT: vspltisw 3, 12
9010 ; PWR6-NEXT: vadduwm 3, 3, 3
9011 ; PWR6-NEXT: vslw 2, 2, 5
9012 ; PWR6-NEXT: vadduwm 2, 4, 2
9013 ; PWR6-NEXT: vsrw 2, 2, 3
9014 ; PWR6-NEXT: vspltisw 3, 10
9015 ; PWR6-NEXT: vadduwm 3, 3, 3
9016 ; PWR6-NEXT: vcmpgtuw 2, 2, 3
9019 ; PWR7-LABEL: ugt_20_v4i32:
9021 ; PWR7-NEXT: vspltisw 3, 1
9022 ; PWR7-NEXT: addis 3, 2, .LCPI78_0@toc@ha
9023 ; PWR7-NEXT: addi 3, 3, .LCPI78_0@toc@l
9024 ; PWR7-NEXT: vspltisw 4, 2
9025 ; PWR7-NEXT: lxvw4x 0, 0, 3
9026 ; PWR7-NEXT: addis 3, 2, .LCPI78_1@toc@ha
9027 ; PWR7-NEXT: vspltisw 5, -16
9028 ; PWR7-NEXT: vsrw 3, 2, 3
9029 ; PWR7-NEXT: addi 3, 3, .LCPI78_1@toc@l
9030 ; PWR7-NEXT: vspltisb 0, 15
9031 ; PWR7-NEXT: xxland 35, 35, 0
9032 ; PWR7-NEXT: lxvw4x 0, 0, 3
9033 ; PWR7-NEXT: vsubuwm 2, 2, 3
9034 ; PWR7-NEXT: vsrw 3, 2, 4
9035 ; PWR7-NEXT: xxland 34, 34, 0
9036 ; PWR7-NEXT: vspltisw 4, 4
9037 ; PWR7-NEXT: xxland 35, 35, 0
9038 ; PWR7-NEXT: vadduwm 2, 2, 3
9039 ; PWR7-NEXT: vsrw 3, 2, 4
9040 ; PWR7-NEXT: vspltisb 4, 1
9041 ; PWR7-NEXT: vrlw 1, 4, 5
9042 ; PWR7-NEXT: vadduwm 2, 2, 3
9043 ; PWR7-NEXT: xxlxor 35, 35, 35
9044 ; PWR7-NEXT: xxland 34, 34, 32
9045 ; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
9046 ; PWR7-NEXT: vmulouh 2, 2, 4
9047 ; PWR7-NEXT: vspltisw 4, 12
9048 ; PWR7-NEXT: vslw 3, 3, 5
9049 ; PWR7-NEXT: vadduwm 2, 2, 3
9050 ; PWR7-NEXT: vadduwm 3, 4, 4
9051 ; PWR7-NEXT: vsrw 2, 2, 3
9052 ; PWR7-NEXT: vspltisw 3, 10
9053 ; PWR7-NEXT: vadduwm 3, 3, 3
9054 ; PWR7-NEXT: vcmpgtuw 2, 2, 3
9057 ; PWR8-LABEL: ugt_20_v4i32:
9059 ; PWR8-NEXT: vspltisw 3, 10
9060 ; PWR8-NEXT: vpopcntw 2, 2
9061 ; PWR8-NEXT: vadduwm 3, 3, 3
9062 ; PWR8-NEXT: vcmpgtuw 2, 2, 3
9065 ; PWR9-LABEL: ugt_20_v4i32:
9067 ; PWR9-NEXT: vspltisw 3, 10
9068 ; PWR9-NEXT: vpopcntw 2, 2
9069 ; PWR9-NEXT: vadduwm 3, 3, 3
9070 ; PWR9-NEXT: vcmpgtuw 2, 2, 3
9072 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
9073 %3 = icmp ugt <4 x i32> %2, <i32 20, i32 20, i32 20, i32 20>
9074 %4 = sext <4 x i1> %3 to <4 x i32>
9078 define <4 x i32> @ult_21_v4i32(<4 x i32> %0) {
9079 ; PWR5-LABEL: ult_21_v4i32:
9081 ; PWR5-NEXT: addis 3, 2, .LCPI79_0@toc@ha
9082 ; PWR5-NEXT: vspltisw 4, 1
9083 ; PWR5-NEXT: vxor 3, 3, 3
9084 ; PWR5-NEXT: addi 3, 3, .LCPI79_0@toc@l
9085 ; PWR5-NEXT: lvx 5, 0, 3
9086 ; PWR5-NEXT: addis 3, 2, .LCPI79_1@toc@ha
9087 ; PWR5-NEXT: addi 3, 3, .LCPI79_1@toc@l
9088 ; PWR5-NEXT: vspltisw 0, 2
9089 ; PWR5-NEXT: vsrw 4, 2, 4
9090 ; PWR5-NEXT: vand 4, 4, 5
9091 ; PWR5-NEXT: lvx 5, 0, 3
9092 ; PWR5-NEXT: vsubuwm 2, 2, 4
9093 ; PWR5-NEXT: vand 4, 2, 5
9094 ; PWR5-NEXT: vsrw 2, 2, 0
9095 ; PWR5-NEXT: vand 2, 2, 5
9096 ; PWR5-NEXT: vspltisw 5, 4
9097 ; PWR5-NEXT: vadduwm 2, 4, 2
9098 ; PWR5-NEXT: vsrw 4, 2, 5
9099 ; PWR5-NEXT: vspltisb 5, 15
9100 ; PWR5-NEXT: vadduwm 2, 2, 4
9101 ; PWR5-NEXT: vspltisb 4, 1
9102 ; PWR5-NEXT: vand 2, 2, 5
9103 ; PWR5-NEXT: vspltisw 5, -16
9104 ; PWR5-NEXT: vrlw 0, 4, 5
9105 ; PWR5-NEXT: vmulouh 4, 2, 4
9106 ; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
9107 ; PWR5-NEXT: vspltisw 3, 12
9108 ; PWR5-NEXT: vadduwm 3, 3, 3
9109 ; PWR5-NEXT: vslw 2, 2, 5
9110 ; PWR5-NEXT: vadduwm 2, 4, 2
9111 ; PWR5-NEXT: vsrw 2, 2, 3
9112 ; PWR5-NEXT: vspltisw 3, 5
9113 ; PWR5-NEXT: vsubuwm 3, 3, 5
9114 ; PWR5-NEXT: vcmpgtuw 2, 3, 2
9117 ; PWR6-LABEL: ult_21_v4i32:
9119 ; PWR6-NEXT: addis 3, 2, .LCPI79_0@toc@ha
9120 ; PWR6-NEXT: vspltisw 4, 1
9121 ; PWR6-NEXT: vxor 3, 3, 3
9122 ; PWR6-NEXT: addi 3, 3, .LCPI79_0@toc@l
9123 ; PWR6-NEXT: lvx 5, 0, 3
9124 ; PWR6-NEXT: addis 3, 2, .LCPI79_1@toc@ha
9125 ; PWR6-NEXT: addi 3, 3, .LCPI79_1@toc@l
9126 ; PWR6-NEXT: vspltisw 0, 2
9127 ; PWR6-NEXT: vsrw 4, 2, 4
9128 ; PWR6-NEXT: vand 4, 4, 5
9129 ; PWR6-NEXT: lvx 5, 0, 3
9130 ; PWR6-NEXT: vsubuwm 2, 2, 4
9131 ; PWR6-NEXT: vand 4, 2, 5
9132 ; PWR6-NEXT: vsrw 2, 2, 0
9133 ; PWR6-NEXT: vand 2, 2, 5
9134 ; PWR6-NEXT: vspltisw 5, 4
9135 ; PWR6-NEXT: vadduwm 2, 4, 2
9136 ; PWR6-NEXT: vsrw 4, 2, 5
9137 ; PWR6-NEXT: vspltisb 5, 15
9138 ; PWR6-NEXT: vadduwm 2, 2, 4
9139 ; PWR6-NEXT: vspltisb 4, 1
9140 ; PWR6-NEXT: vand 2, 2, 5
9141 ; PWR6-NEXT: vspltisw 5, -16
9142 ; PWR6-NEXT: vrlw 0, 4, 5
9143 ; PWR6-NEXT: vmulouh 4, 2, 4
9144 ; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
9145 ; PWR6-NEXT: vspltisw 3, 12
9146 ; PWR6-NEXT: vadduwm 3, 3, 3
9147 ; PWR6-NEXT: vslw 2, 2, 5
9148 ; PWR6-NEXT: vadduwm 2, 4, 2
9149 ; PWR6-NEXT: vsrw 2, 2, 3
9150 ; PWR6-NEXT: vspltisw 3, 5
9151 ; PWR6-NEXT: vsubuwm 3, 3, 5
9152 ; PWR6-NEXT: vcmpgtuw 2, 3, 2
9155 ; PWR7-LABEL: ult_21_v4i32:
9157 ; PWR7-NEXT: vspltisw 3, 1
9158 ; PWR7-NEXT: addis 3, 2, .LCPI79_0@toc@ha
9159 ; PWR7-NEXT: addi 3, 3, .LCPI79_0@toc@l
9160 ; PWR7-NEXT: vspltisw 4, 2
9161 ; PWR7-NEXT: lxvw4x 0, 0, 3
9162 ; PWR7-NEXT: addis 3, 2, .LCPI79_1@toc@ha
9163 ; PWR7-NEXT: vspltisw 5, -16
9164 ; PWR7-NEXT: vsrw 3, 2, 3
9165 ; PWR7-NEXT: addi 3, 3, .LCPI79_1@toc@l
9166 ; PWR7-NEXT: vspltisb 0, 15
9167 ; PWR7-NEXT: xxland 35, 35, 0
9168 ; PWR7-NEXT: lxvw4x 0, 0, 3
9169 ; PWR7-NEXT: vsubuwm 2, 2, 3
9170 ; PWR7-NEXT: vsrw 3, 2, 4
9171 ; PWR7-NEXT: xxland 34, 34, 0
9172 ; PWR7-NEXT: vspltisw 4, 4
9173 ; PWR7-NEXT: xxland 35, 35, 0
9174 ; PWR7-NEXT: vadduwm 2, 2, 3
9175 ; PWR7-NEXT: vsrw 3, 2, 4
9176 ; PWR7-NEXT: vspltisb 4, 1
9177 ; PWR7-NEXT: vrlw 1, 4, 5
9178 ; PWR7-NEXT: vadduwm 2, 2, 3
9179 ; PWR7-NEXT: xxlxor 35, 35, 35
9180 ; PWR7-NEXT: xxland 34, 34, 32
9181 ; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
9182 ; PWR7-NEXT: vmulouh 2, 2, 4
9183 ; PWR7-NEXT: vspltisw 4, 12
9184 ; PWR7-NEXT: vslw 3, 3, 5
9185 ; PWR7-NEXT: vadduwm 2, 2, 3
9186 ; PWR7-NEXT: vadduwm 3, 4, 4
9187 ; PWR7-NEXT: vsrw 2, 2, 3
9188 ; PWR7-NEXT: vspltisw 3, 5
9189 ; PWR7-NEXT: vsubuwm 3, 3, 5
9190 ; PWR7-NEXT: vcmpgtuw 2, 3, 2
9193 ; PWR8-LABEL: ult_21_v4i32:
9195 ; PWR8-NEXT: vspltisw 3, -16
9196 ; PWR8-NEXT: vspltisw 4, 5
9197 ; PWR8-NEXT: vpopcntw 2, 2
9198 ; PWR8-NEXT: vsubuwm 3, 4, 3
9199 ; PWR8-NEXT: vcmpgtuw 2, 3, 2
9202 ; PWR9-LABEL: ult_21_v4i32:
9204 ; PWR9-NEXT: vspltisw 3, -16
9205 ; PWR9-NEXT: vspltisw 4, 5
9206 ; PWR9-NEXT: vpopcntw 2, 2
9207 ; PWR9-NEXT: vsubuwm 3, 4, 3
9208 ; PWR9-NEXT: vcmpgtuw 2, 3, 2
9210 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
9211 %3 = icmp ult <4 x i32> %2, <i32 21, i32 21, i32 21, i32 21>
9212 %4 = sext <4 x i1> %3 to <4 x i32>
9216 define <4 x i32> @ugt_21_v4i32(<4 x i32> %0) {
9217 ; PWR5-LABEL: ugt_21_v4i32:
9219 ; PWR5-NEXT: addis 3, 2, .LCPI80_0@toc@ha
9220 ; PWR5-NEXT: vspltisw 4, 1
9221 ; PWR5-NEXT: vxor 3, 3, 3
9222 ; PWR5-NEXT: addi 3, 3, .LCPI80_0@toc@l
9223 ; PWR5-NEXT: lvx 5, 0, 3
9224 ; PWR5-NEXT: addis 3, 2, .LCPI80_1@toc@ha
9225 ; PWR5-NEXT: addi 3, 3, .LCPI80_1@toc@l
9226 ; PWR5-NEXT: vspltisw 0, 2
9227 ; PWR5-NEXT: vsrw 4, 2, 4
9228 ; PWR5-NEXT: vand 4, 4, 5
9229 ; PWR5-NEXT: lvx 5, 0, 3
9230 ; PWR5-NEXT: vsubuwm 2, 2, 4
9231 ; PWR5-NEXT: vand 4, 2, 5
9232 ; PWR5-NEXT: vsrw 2, 2, 0
9233 ; PWR5-NEXT: vand 2, 2, 5
9234 ; PWR5-NEXT: vspltisw 5, 4
9235 ; PWR5-NEXT: vadduwm 2, 4, 2
9236 ; PWR5-NEXT: vsrw 4, 2, 5
9237 ; PWR5-NEXT: vspltisb 5, 15
9238 ; PWR5-NEXT: vadduwm 2, 2, 4
9239 ; PWR5-NEXT: vspltisb 4, 1
9240 ; PWR5-NEXT: vand 2, 2, 5
9241 ; PWR5-NEXT: vspltisw 5, -16
9242 ; PWR5-NEXT: vrlw 0, 4, 5
9243 ; PWR5-NEXT: vmulouh 4, 2, 4
9244 ; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
9245 ; PWR5-NEXT: vspltisw 3, 12
9246 ; PWR5-NEXT: vadduwm 3, 3, 3
9247 ; PWR5-NEXT: vslw 2, 2, 5
9248 ; PWR5-NEXT: vadduwm 2, 4, 2
9249 ; PWR5-NEXT: vsrw 2, 2, 3
9250 ; PWR5-NEXT: vspltisw 3, 5
9251 ; PWR5-NEXT: vsubuwm 3, 3, 5
9252 ; PWR5-NEXT: vcmpgtuw 2, 2, 3
9255 ; PWR6-LABEL: ugt_21_v4i32:
9257 ; PWR6-NEXT: addis 3, 2, .LCPI80_0@toc@ha
9258 ; PWR6-NEXT: vspltisw 4, 1
9259 ; PWR6-NEXT: vxor 3, 3, 3
9260 ; PWR6-NEXT: addi 3, 3, .LCPI80_0@toc@l
9261 ; PWR6-NEXT: lvx 5, 0, 3
9262 ; PWR6-NEXT: addis 3, 2, .LCPI80_1@toc@ha
9263 ; PWR6-NEXT: addi 3, 3, .LCPI80_1@toc@l
9264 ; PWR6-NEXT: vspltisw 0, 2
9265 ; PWR6-NEXT: vsrw 4, 2, 4
9266 ; PWR6-NEXT: vand 4, 4, 5
9267 ; PWR6-NEXT: lvx 5, 0, 3
9268 ; PWR6-NEXT: vsubuwm 2, 2, 4
9269 ; PWR6-NEXT: vand 4, 2, 5
9270 ; PWR6-NEXT: vsrw 2, 2, 0
9271 ; PWR6-NEXT: vand 2, 2, 5
9272 ; PWR6-NEXT: vspltisw 5, 4
9273 ; PWR6-NEXT: vadduwm 2, 4, 2
9274 ; PWR6-NEXT: vsrw 4, 2, 5
9275 ; PWR6-NEXT: vspltisb 5, 15
9276 ; PWR6-NEXT: vadduwm 2, 2, 4
9277 ; PWR6-NEXT: vspltisb 4, 1
9278 ; PWR6-NEXT: vand 2, 2, 5
9279 ; PWR6-NEXT: vspltisw 5, -16
9280 ; PWR6-NEXT: vrlw 0, 4, 5
9281 ; PWR6-NEXT: vmulouh 4, 2, 4
9282 ; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
9283 ; PWR6-NEXT: vspltisw 3, 12
9284 ; PWR6-NEXT: vadduwm 3, 3, 3
9285 ; PWR6-NEXT: vslw 2, 2, 5
9286 ; PWR6-NEXT: vadduwm 2, 4, 2
9287 ; PWR6-NEXT: vsrw 2, 2, 3
9288 ; PWR6-NEXT: vspltisw 3, 5
9289 ; PWR6-NEXT: vsubuwm 3, 3, 5
9290 ; PWR6-NEXT: vcmpgtuw 2, 2, 3
9293 ; PWR7-LABEL: ugt_21_v4i32:
9295 ; PWR7-NEXT: vspltisw 3, 1
9296 ; PWR7-NEXT: addis 3, 2, .LCPI80_0@toc@ha
9297 ; PWR7-NEXT: addi 3, 3, .LCPI80_0@toc@l
9298 ; PWR7-NEXT: vspltisw 4, 2
9299 ; PWR7-NEXT: lxvw4x 0, 0, 3
9300 ; PWR7-NEXT: addis 3, 2, .LCPI80_1@toc@ha
9301 ; PWR7-NEXT: vspltisw 5, -16
9302 ; PWR7-NEXT: vsrw 3, 2, 3
9303 ; PWR7-NEXT: addi 3, 3, .LCPI80_1@toc@l
9304 ; PWR7-NEXT: vspltisb 0, 15
9305 ; PWR7-NEXT: xxland 35, 35, 0
9306 ; PWR7-NEXT: lxvw4x 0, 0, 3
9307 ; PWR7-NEXT: vsubuwm 2, 2, 3
9308 ; PWR7-NEXT: vsrw 3, 2, 4
9309 ; PWR7-NEXT: xxland 34, 34, 0
9310 ; PWR7-NEXT: vspltisw 4, 4
9311 ; PWR7-NEXT: xxland 35, 35, 0
9312 ; PWR7-NEXT: vadduwm 2, 2, 3
9313 ; PWR7-NEXT: vsrw 3, 2, 4
9314 ; PWR7-NEXT: vspltisb 4, 1
9315 ; PWR7-NEXT: vrlw 1, 4, 5
9316 ; PWR7-NEXT: vadduwm 2, 2, 3
9317 ; PWR7-NEXT: xxlxor 35, 35, 35
9318 ; PWR7-NEXT: xxland 34, 34, 32
9319 ; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
9320 ; PWR7-NEXT: vmulouh 2, 2, 4
9321 ; PWR7-NEXT: vspltisw 4, 12
9322 ; PWR7-NEXT: vslw 3, 3, 5
9323 ; PWR7-NEXT: vadduwm 2, 2, 3
9324 ; PWR7-NEXT: vadduwm 3, 4, 4
9325 ; PWR7-NEXT: vsrw 2, 2, 3
9326 ; PWR7-NEXT: vspltisw 3, 5
9327 ; PWR7-NEXT: vsubuwm 3, 3, 5
9328 ; PWR7-NEXT: vcmpgtuw 2, 2, 3
9331 ; PWR8-LABEL: ugt_21_v4i32:
9333 ; PWR8-NEXT: vspltisw 3, -16
9334 ; PWR8-NEXT: vspltisw 4, 5
9335 ; PWR8-NEXT: vpopcntw 2, 2
9336 ; PWR8-NEXT: vsubuwm 3, 4, 3
9337 ; PWR8-NEXT: vcmpgtuw 2, 2, 3
9340 ; PWR9-LABEL: ugt_21_v4i32:
9342 ; PWR9-NEXT: vspltisw 3, -16
9343 ; PWR9-NEXT: vspltisw 4, 5
9344 ; PWR9-NEXT: vpopcntw 2, 2
9345 ; PWR9-NEXT: vsubuwm 3, 4, 3
9346 ; PWR9-NEXT: vcmpgtuw 2, 2, 3
9348 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
9349 %3 = icmp ugt <4 x i32> %2, <i32 21, i32 21, i32 21, i32 21>
9350 %4 = sext <4 x i1> %3 to <4 x i32>
9354 define <4 x i32> @ult_22_v4i32(<4 x i32> %0) {
9355 ; PWR5-LABEL: ult_22_v4i32:
9357 ; PWR5-NEXT: addis 3, 2, .LCPI81_0@toc@ha
9358 ; PWR5-NEXT: vspltisw 4, 1
9359 ; PWR5-NEXT: vxor 3, 3, 3
9360 ; PWR5-NEXT: addi 3, 3, .LCPI81_0@toc@l
9361 ; PWR5-NEXT: lvx 5, 0, 3
9362 ; PWR5-NEXT: addis 3, 2, .LCPI81_1@toc@ha
9363 ; PWR5-NEXT: addi 3, 3, .LCPI81_1@toc@l
9364 ; PWR5-NEXT: vspltisw 0, 2
9365 ; PWR5-NEXT: vsrw 4, 2, 4
9366 ; PWR5-NEXT: vand 4, 4, 5
9367 ; PWR5-NEXT: lvx 5, 0, 3
9368 ; PWR5-NEXT: vsubuwm 2, 2, 4
9369 ; PWR5-NEXT: vand 4, 2, 5
9370 ; PWR5-NEXT: vsrw 2, 2, 0
9371 ; PWR5-NEXT: vand 2, 2, 5
9372 ; PWR5-NEXT: vspltisw 5, 4
9373 ; PWR5-NEXT: vadduwm 2, 4, 2
9374 ; PWR5-NEXT: vsrw 4, 2, 5
9375 ; PWR5-NEXT: vspltisb 5, 15
9376 ; PWR5-NEXT: vadduwm 2, 2, 4
9377 ; PWR5-NEXT: vspltisb 4, 1
9378 ; PWR5-NEXT: vand 2, 2, 5
9379 ; PWR5-NEXT: vspltisw 5, -16
9380 ; PWR5-NEXT: vrlw 0, 4, 5
9381 ; PWR5-NEXT: vmulouh 4, 2, 4
9382 ; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
9383 ; PWR5-NEXT: vspltisw 3, 12
9384 ; PWR5-NEXT: vadduwm 3, 3, 3
9385 ; PWR5-NEXT: vslw 2, 2, 5
9386 ; PWR5-NEXT: vadduwm 2, 4, 2
9387 ; PWR5-NEXT: vsrw 2, 2, 3
9388 ; PWR5-NEXT: vspltisw 3, 11
9389 ; PWR5-NEXT: vadduwm 3, 3, 3
9390 ; PWR5-NEXT: vcmpgtuw 2, 3, 2
9393 ; PWR6-LABEL: ult_22_v4i32:
9395 ; PWR6-NEXT: addis 3, 2, .LCPI81_0@toc@ha
9396 ; PWR6-NEXT: vspltisw 4, 1
9397 ; PWR6-NEXT: vxor 3, 3, 3
9398 ; PWR6-NEXT: addi 3, 3, .LCPI81_0@toc@l
9399 ; PWR6-NEXT: lvx 5, 0, 3
9400 ; PWR6-NEXT: addis 3, 2, .LCPI81_1@toc@ha
9401 ; PWR6-NEXT: addi 3, 3, .LCPI81_1@toc@l
9402 ; PWR6-NEXT: vspltisw 0, 2
9403 ; PWR6-NEXT: vsrw 4, 2, 4
9404 ; PWR6-NEXT: vand 4, 4, 5
9405 ; PWR6-NEXT: lvx 5, 0, 3
9406 ; PWR6-NEXT: vsubuwm 2, 2, 4
9407 ; PWR6-NEXT: vand 4, 2, 5
9408 ; PWR6-NEXT: vsrw 2, 2, 0
9409 ; PWR6-NEXT: vand 2, 2, 5
9410 ; PWR6-NEXT: vspltisw 5, 4
9411 ; PWR6-NEXT: vadduwm 2, 4, 2
9412 ; PWR6-NEXT: vsrw 4, 2, 5
9413 ; PWR6-NEXT: vspltisb 5, 15
9414 ; PWR6-NEXT: vadduwm 2, 2, 4
9415 ; PWR6-NEXT: vspltisb 4, 1
9416 ; PWR6-NEXT: vand 2, 2, 5
9417 ; PWR6-NEXT: vspltisw 5, -16
9418 ; PWR6-NEXT: vrlw 0, 4, 5
9419 ; PWR6-NEXT: vmulouh 4, 2, 4
9420 ; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
9421 ; PWR6-NEXT: vspltisw 3, 12
9422 ; PWR6-NEXT: vadduwm 3, 3, 3
9423 ; PWR6-NEXT: vslw 2, 2, 5
9424 ; PWR6-NEXT: vadduwm 2, 4, 2
9425 ; PWR6-NEXT: vsrw 2, 2, 3
9426 ; PWR6-NEXT: vspltisw 3, 11
9427 ; PWR6-NEXT: vadduwm 3, 3, 3
9428 ; PWR6-NEXT: vcmpgtuw 2, 3, 2
9431 ; PWR7-LABEL: ult_22_v4i32:
9433 ; PWR7-NEXT: vspltisw 3, 1
9434 ; PWR7-NEXT: addis 3, 2, .LCPI81_0@toc@ha
9435 ; PWR7-NEXT: addi 3, 3, .LCPI81_0@toc@l
9436 ; PWR7-NEXT: vspltisw 4, 2
9437 ; PWR7-NEXT: lxvw4x 0, 0, 3
9438 ; PWR7-NEXT: addis 3, 2, .LCPI81_1@toc@ha
9439 ; PWR7-NEXT: vspltisw 5, -16
9440 ; PWR7-NEXT: vsrw 3, 2, 3
9441 ; PWR7-NEXT: addi 3, 3, .LCPI81_1@toc@l
9442 ; PWR7-NEXT: vspltisb 0, 15
9443 ; PWR7-NEXT: xxland 35, 35, 0
9444 ; PWR7-NEXT: lxvw4x 0, 0, 3
9445 ; PWR7-NEXT: vsubuwm 2, 2, 3
9446 ; PWR7-NEXT: vsrw 3, 2, 4
9447 ; PWR7-NEXT: xxland 34, 34, 0
9448 ; PWR7-NEXT: vspltisw 4, 4
9449 ; PWR7-NEXT: xxland 35, 35, 0
9450 ; PWR7-NEXT: vadduwm 2, 2, 3
9451 ; PWR7-NEXT: vsrw 3, 2, 4
9452 ; PWR7-NEXT: vspltisb 4, 1
9453 ; PWR7-NEXT: vrlw 1, 4, 5
9454 ; PWR7-NEXT: vadduwm 2, 2, 3
9455 ; PWR7-NEXT: xxlxor 35, 35, 35
9456 ; PWR7-NEXT: xxland 34, 34, 32
9457 ; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
9458 ; PWR7-NEXT: vmulouh 2, 2, 4
9459 ; PWR7-NEXT: vspltisw 4, 12
9460 ; PWR7-NEXT: vslw 3, 3, 5
9461 ; PWR7-NEXT: vadduwm 2, 2, 3
9462 ; PWR7-NEXT: vadduwm 3, 4, 4
9463 ; PWR7-NEXT: vsrw 2, 2, 3
9464 ; PWR7-NEXT: vspltisw 3, 11
9465 ; PWR7-NEXT: vadduwm 3, 3, 3
9466 ; PWR7-NEXT: vcmpgtuw 2, 3, 2
9469 ; PWR8-LABEL: ult_22_v4i32:
9471 ; PWR8-NEXT: vspltisw 3, 11
9472 ; PWR8-NEXT: vpopcntw 2, 2
9473 ; PWR8-NEXT: vadduwm 3, 3, 3
9474 ; PWR8-NEXT: vcmpgtuw 2, 3, 2
9477 ; PWR9-LABEL: ult_22_v4i32:
9479 ; PWR9-NEXT: vspltisw 3, 11
9480 ; PWR9-NEXT: vpopcntw 2, 2
9481 ; PWR9-NEXT: vadduwm 3, 3, 3
9482 ; PWR9-NEXT: vcmpgtuw 2, 3, 2
9484 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
9485 %3 = icmp ult <4 x i32> %2, <i32 22, i32 22, i32 22, i32 22>
9486 %4 = sext <4 x i1> %3 to <4 x i32>
9490 define <4 x i32> @ugt_22_v4i32(<4 x i32> %0) {
9491 ; PWR5-LABEL: ugt_22_v4i32:
9493 ; PWR5-NEXT: addis 3, 2, .LCPI82_0@toc@ha
9494 ; PWR5-NEXT: vspltisw 4, 1
9495 ; PWR5-NEXT: vxor 3, 3, 3
9496 ; PWR5-NEXT: addi 3, 3, .LCPI82_0@toc@l
9497 ; PWR5-NEXT: lvx 5, 0, 3
9498 ; PWR5-NEXT: addis 3, 2, .LCPI82_1@toc@ha
9499 ; PWR5-NEXT: addi 3, 3, .LCPI82_1@toc@l
9500 ; PWR5-NEXT: vspltisw 0, 2
9501 ; PWR5-NEXT: vsrw 4, 2, 4
9502 ; PWR5-NEXT: vand 4, 4, 5
9503 ; PWR5-NEXT: lvx 5, 0, 3
9504 ; PWR5-NEXT: vsubuwm 2, 2, 4
9505 ; PWR5-NEXT: vand 4, 2, 5
9506 ; PWR5-NEXT: vsrw 2, 2, 0
9507 ; PWR5-NEXT: vand 2, 2, 5
9508 ; PWR5-NEXT: vspltisw 5, 4
9509 ; PWR5-NEXT: vadduwm 2, 4, 2
9510 ; PWR5-NEXT: vsrw 4, 2, 5
9511 ; PWR5-NEXT: vspltisb 5, 15
9512 ; PWR5-NEXT: vadduwm 2, 2, 4
9513 ; PWR5-NEXT: vspltisb 4, 1
9514 ; PWR5-NEXT: vand 2, 2, 5
9515 ; PWR5-NEXT: vspltisw 5, -16
9516 ; PWR5-NEXT: vrlw 0, 4, 5
9517 ; PWR5-NEXT: vmulouh 4, 2, 4
9518 ; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
9519 ; PWR5-NEXT: vspltisw 3, 12
9520 ; PWR5-NEXT: vadduwm 3, 3, 3
9521 ; PWR5-NEXT: vslw 2, 2, 5
9522 ; PWR5-NEXT: vadduwm 2, 4, 2
9523 ; PWR5-NEXT: vsrw 2, 2, 3
9524 ; PWR5-NEXT: vspltisw 3, 11
9525 ; PWR5-NEXT: vadduwm 3, 3, 3
9526 ; PWR5-NEXT: vcmpgtuw 2, 2, 3
9529 ; PWR6-LABEL: ugt_22_v4i32:
9531 ; PWR6-NEXT: addis 3, 2, .LCPI82_0@toc@ha
9532 ; PWR6-NEXT: vspltisw 4, 1
9533 ; PWR6-NEXT: vxor 3, 3, 3
9534 ; PWR6-NEXT: addi 3, 3, .LCPI82_0@toc@l
9535 ; PWR6-NEXT: lvx 5, 0, 3
9536 ; PWR6-NEXT: addis 3, 2, .LCPI82_1@toc@ha
9537 ; PWR6-NEXT: addi 3, 3, .LCPI82_1@toc@l
9538 ; PWR6-NEXT: vspltisw 0, 2
9539 ; PWR6-NEXT: vsrw 4, 2, 4
9540 ; PWR6-NEXT: vand 4, 4, 5
9541 ; PWR6-NEXT: lvx 5, 0, 3
9542 ; PWR6-NEXT: vsubuwm 2, 2, 4
9543 ; PWR6-NEXT: vand 4, 2, 5
9544 ; PWR6-NEXT: vsrw 2, 2, 0
9545 ; PWR6-NEXT: vand 2, 2, 5
9546 ; PWR6-NEXT: vspltisw 5, 4
9547 ; PWR6-NEXT: vadduwm 2, 4, 2
9548 ; PWR6-NEXT: vsrw 4, 2, 5
9549 ; PWR6-NEXT: vspltisb 5, 15
9550 ; PWR6-NEXT: vadduwm 2, 2, 4
9551 ; PWR6-NEXT: vspltisb 4, 1
9552 ; PWR6-NEXT: vand 2, 2, 5
9553 ; PWR6-NEXT: vspltisw 5, -16
9554 ; PWR6-NEXT: vrlw 0, 4, 5
9555 ; PWR6-NEXT: vmulouh 4, 2, 4
9556 ; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
9557 ; PWR6-NEXT: vspltisw 3, 12
9558 ; PWR6-NEXT: vadduwm 3, 3, 3
9559 ; PWR6-NEXT: vslw 2, 2, 5
9560 ; PWR6-NEXT: vadduwm 2, 4, 2
9561 ; PWR6-NEXT: vsrw 2, 2, 3
9562 ; PWR6-NEXT: vspltisw 3, 11
9563 ; PWR6-NEXT: vadduwm 3, 3, 3
9564 ; PWR6-NEXT: vcmpgtuw 2, 2, 3
9567 ; PWR7-LABEL: ugt_22_v4i32:
9569 ; PWR7-NEXT: vspltisw 3, 1
9570 ; PWR7-NEXT: addis 3, 2, .LCPI82_0@toc@ha
9571 ; PWR7-NEXT: addi 3, 3, .LCPI82_0@toc@l
9572 ; PWR7-NEXT: vspltisw 4, 2
9573 ; PWR7-NEXT: lxvw4x 0, 0, 3
9574 ; PWR7-NEXT: addis 3, 2, .LCPI82_1@toc@ha
9575 ; PWR7-NEXT: vspltisw 5, -16
9576 ; PWR7-NEXT: vsrw 3, 2, 3
9577 ; PWR7-NEXT: addi 3, 3, .LCPI82_1@toc@l
9578 ; PWR7-NEXT: vspltisb 0, 15
9579 ; PWR7-NEXT: xxland 35, 35, 0
9580 ; PWR7-NEXT: lxvw4x 0, 0, 3
9581 ; PWR7-NEXT: vsubuwm 2, 2, 3
9582 ; PWR7-NEXT: vsrw 3, 2, 4
9583 ; PWR7-NEXT: xxland 34, 34, 0
9584 ; PWR7-NEXT: vspltisw 4, 4
9585 ; PWR7-NEXT: xxland 35, 35, 0
9586 ; PWR7-NEXT: vadduwm 2, 2, 3
9587 ; PWR7-NEXT: vsrw 3, 2, 4
9588 ; PWR7-NEXT: vspltisb 4, 1
9589 ; PWR7-NEXT: vrlw 1, 4, 5
9590 ; PWR7-NEXT: vadduwm 2, 2, 3
9591 ; PWR7-NEXT: xxlxor 35, 35, 35
9592 ; PWR7-NEXT: xxland 34, 34, 32
9593 ; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
9594 ; PWR7-NEXT: vmulouh 2, 2, 4
9595 ; PWR7-NEXT: vspltisw 4, 12
9596 ; PWR7-NEXT: vslw 3, 3, 5
9597 ; PWR7-NEXT: vadduwm 2, 2, 3
9598 ; PWR7-NEXT: vadduwm 3, 4, 4
9599 ; PWR7-NEXT: vsrw 2, 2, 3
9600 ; PWR7-NEXT: vspltisw 3, 11
9601 ; PWR7-NEXT: vadduwm 3, 3, 3
9602 ; PWR7-NEXT: vcmpgtuw 2, 2, 3
9605 ; PWR8-LABEL: ugt_22_v4i32:
9607 ; PWR8-NEXT: vspltisw 3, 11
9608 ; PWR8-NEXT: vpopcntw 2, 2
9609 ; PWR8-NEXT: vadduwm 3, 3, 3
9610 ; PWR8-NEXT: vcmpgtuw 2, 2, 3
9613 ; PWR9-LABEL: ugt_22_v4i32:
9615 ; PWR9-NEXT: vspltisw 3, 11
9616 ; PWR9-NEXT: vpopcntw 2, 2
9617 ; PWR9-NEXT: vadduwm 3, 3, 3
9618 ; PWR9-NEXT: vcmpgtuw 2, 2, 3
9620 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
9621 %3 = icmp ugt <4 x i32> %2, <i32 22, i32 22, i32 22, i32 22>
9622 %4 = sext <4 x i1> %3 to <4 x i32>
9626 define <4 x i32> @ult_23_v4i32(<4 x i32> %0) {
9627 ; PWR5-LABEL: ult_23_v4i32:
9629 ; PWR5-NEXT: addis 3, 2, .LCPI83_0@toc@ha
9630 ; PWR5-NEXT: vspltisw 4, 1
9631 ; PWR5-NEXT: vxor 3, 3, 3
9632 ; PWR5-NEXT: addi 3, 3, .LCPI83_0@toc@l
9633 ; PWR5-NEXT: lvx 5, 0, 3
9634 ; PWR5-NEXT: addis 3, 2, .LCPI83_1@toc@ha
9635 ; PWR5-NEXT: addi 3, 3, .LCPI83_1@toc@l
9636 ; PWR5-NEXT: vspltisw 0, 2
9637 ; PWR5-NEXT: vsrw 4, 2, 4
9638 ; PWR5-NEXT: vand 4, 4, 5
9639 ; PWR5-NEXT: lvx 5, 0, 3
9640 ; PWR5-NEXT: vsubuwm 2, 2, 4
9641 ; PWR5-NEXT: vand 4, 2, 5
9642 ; PWR5-NEXT: vsrw 2, 2, 0
9643 ; PWR5-NEXT: vand 2, 2, 5
9644 ; PWR5-NEXT: vspltisw 5, 4
9645 ; PWR5-NEXT: vadduwm 2, 4, 2
9646 ; PWR5-NEXT: vsrw 4, 2, 5
9647 ; PWR5-NEXT: vspltisb 5, 15
9648 ; PWR5-NEXT: vadduwm 2, 2, 4
9649 ; PWR5-NEXT: vspltisb 4, 1
9650 ; PWR5-NEXT: vand 2, 2, 5
9651 ; PWR5-NEXT: vspltisw 5, -16
9652 ; PWR5-NEXT: vrlw 0, 4, 5
9653 ; PWR5-NEXT: vmulouh 4, 2, 4
9654 ; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
9655 ; PWR5-NEXT: vspltisw 3, 12
9656 ; PWR5-NEXT: vadduwm 3, 3, 3
9657 ; PWR5-NEXT: vslw 2, 2, 5
9658 ; PWR5-NEXT: vadduwm 2, 4, 2
9659 ; PWR5-NEXT: vsrw 2, 2, 3
9660 ; PWR5-NEXT: vspltisw 3, 7
9661 ; PWR5-NEXT: vsubuwm 3, 3, 5
9662 ; PWR5-NEXT: vcmpgtuw 2, 3, 2
9665 ; PWR6-LABEL: ult_23_v4i32:
9667 ; PWR6-NEXT: addis 3, 2, .LCPI83_0@toc@ha
9668 ; PWR6-NEXT: vspltisw 4, 1
9669 ; PWR6-NEXT: vxor 3, 3, 3
9670 ; PWR6-NEXT: addi 3, 3, .LCPI83_0@toc@l
9671 ; PWR6-NEXT: lvx 5, 0, 3
9672 ; PWR6-NEXT: addis 3, 2, .LCPI83_1@toc@ha
9673 ; PWR6-NEXT: addi 3, 3, .LCPI83_1@toc@l
9674 ; PWR6-NEXT: vspltisw 0, 2
9675 ; PWR6-NEXT: vsrw 4, 2, 4
9676 ; PWR6-NEXT: vand 4, 4, 5
9677 ; PWR6-NEXT: lvx 5, 0, 3
9678 ; PWR6-NEXT: vsubuwm 2, 2, 4
9679 ; PWR6-NEXT: vand 4, 2, 5
9680 ; PWR6-NEXT: vsrw 2, 2, 0
9681 ; PWR6-NEXT: vand 2, 2, 5
9682 ; PWR6-NEXT: vspltisw 5, 4
9683 ; PWR6-NEXT: vadduwm 2, 4, 2
9684 ; PWR6-NEXT: vsrw 4, 2, 5
9685 ; PWR6-NEXT: vspltisb 5, 15
9686 ; PWR6-NEXT: vadduwm 2, 2, 4
9687 ; PWR6-NEXT: vspltisb 4, 1
9688 ; PWR6-NEXT: vand 2, 2, 5
9689 ; PWR6-NEXT: vspltisw 5, -16
9690 ; PWR6-NEXT: vrlw 0, 4, 5
9691 ; PWR6-NEXT: vmulouh 4, 2, 4
9692 ; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
9693 ; PWR6-NEXT: vspltisw 3, 12
9694 ; PWR6-NEXT: vadduwm 3, 3, 3
9695 ; PWR6-NEXT: vslw 2, 2, 5
9696 ; PWR6-NEXT: vadduwm 2, 4, 2
9697 ; PWR6-NEXT: vsrw 2, 2, 3
9698 ; PWR6-NEXT: vspltisw 3, 7
9699 ; PWR6-NEXT: vsubuwm 3, 3, 5
9700 ; PWR6-NEXT: vcmpgtuw 2, 3, 2
9703 ; PWR7-LABEL: ult_23_v4i32:
9705 ; PWR7-NEXT: vspltisw 3, 1
9706 ; PWR7-NEXT: addis 3, 2, .LCPI83_0@toc@ha
9707 ; PWR7-NEXT: addi 3, 3, .LCPI83_0@toc@l
9708 ; PWR7-NEXT: vspltisw 4, 2
9709 ; PWR7-NEXT: lxvw4x 0, 0, 3
9710 ; PWR7-NEXT: addis 3, 2, .LCPI83_1@toc@ha
9711 ; PWR7-NEXT: vspltisw 5, -16
9712 ; PWR7-NEXT: vsrw 3, 2, 3
9713 ; PWR7-NEXT: addi 3, 3, .LCPI83_1@toc@l
9714 ; PWR7-NEXT: vspltisb 0, 15
9715 ; PWR7-NEXT: xxland 35, 35, 0
9716 ; PWR7-NEXT: lxvw4x 0, 0, 3
9717 ; PWR7-NEXT: vsubuwm 2, 2, 3
9718 ; PWR7-NEXT: vsrw 3, 2, 4
9719 ; PWR7-NEXT: xxland 34, 34, 0
9720 ; PWR7-NEXT: vspltisw 4, 4
9721 ; PWR7-NEXT: xxland 35, 35, 0
9722 ; PWR7-NEXT: vadduwm 2, 2, 3
9723 ; PWR7-NEXT: vsrw 3, 2, 4
9724 ; PWR7-NEXT: vspltisb 4, 1
9725 ; PWR7-NEXT: vrlw 1, 4, 5
9726 ; PWR7-NEXT: vadduwm 2, 2, 3
9727 ; PWR7-NEXT: xxlxor 35, 35, 35
9728 ; PWR7-NEXT: xxland 34, 34, 32
9729 ; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
9730 ; PWR7-NEXT: vmulouh 2, 2, 4
9731 ; PWR7-NEXT: vspltisw 4, 12
9732 ; PWR7-NEXT: vslw 3, 3, 5
9733 ; PWR7-NEXT: vadduwm 2, 2, 3
9734 ; PWR7-NEXT: vadduwm 3, 4, 4
9735 ; PWR7-NEXT: vsrw 2, 2, 3
9736 ; PWR7-NEXT: vspltisw 3, 7
9737 ; PWR7-NEXT: vsubuwm 3, 3, 5
9738 ; PWR7-NEXT: vcmpgtuw 2, 3, 2
9741 ; PWR8-LABEL: ult_23_v4i32:
9743 ; PWR8-NEXT: vspltisw 3, -16
9744 ; PWR8-NEXT: vspltisw 4, 7
9745 ; PWR8-NEXT: vpopcntw 2, 2
9746 ; PWR8-NEXT: vsubuwm 3, 4, 3
9747 ; PWR8-NEXT: vcmpgtuw 2, 3, 2
9750 ; PWR9-LABEL: ult_23_v4i32:
9752 ; PWR9-NEXT: vspltisw 3, -16
9753 ; PWR9-NEXT: vspltisw 4, 7
9754 ; PWR9-NEXT: vpopcntw 2, 2
9755 ; PWR9-NEXT: vsubuwm 3, 4, 3
9756 ; PWR9-NEXT: vcmpgtuw 2, 3, 2
9758 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
9759 %3 = icmp ult <4 x i32> %2, <i32 23, i32 23, i32 23, i32 23>
9760 %4 = sext <4 x i1> %3 to <4 x i32>
9764 define <4 x i32> @ugt_23_v4i32(<4 x i32> %0) {
9765 ; PWR5-LABEL: ugt_23_v4i32:
9767 ; PWR5-NEXT: addis 3, 2, .LCPI84_0@toc@ha
9768 ; PWR5-NEXT: vspltisw 4, 1
9769 ; PWR5-NEXT: vxor 3, 3, 3
9770 ; PWR5-NEXT: addi 3, 3, .LCPI84_0@toc@l
9771 ; PWR5-NEXT: lvx 5, 0, 3
9772 ; PWR5-NEXT: addis 3, 2, .LCPI84_1@toc@ha
9773 ; PWR5-NEXT: addi 3, 3, .LCPI84_1@toc@l
9774 ; PWR5-NEXT: vspltisw 0, 2
9775 ; PWR5-NEXT: vsrw 4, 2, 4
9776 ; PWR5-NEXT: vand 4, 4, 5
9777 ; PWR5-NEXT: lvx 5, 0, 3
9778 ; PWR5-NEXT: vsubuwm 2, 2, 4
9779 ; PWR5-NEXT: vand 4, 2, 5
9780 ; PWR5-NEXT: vsrw 2, 2, 0
9781 ; PWR5-NEXT: vand 2, 2, 5
9782 ; PWR5-NEXT: vspltisw 5, 4
9783 ; PWR5-NEXT: vadduwm 2, 4, 2
9784 ; PWR5-NEXT: vsrw 4, 2, 5
9785 ; PWR5-NEXT: vspltisb 5, 15
9786 ; PWR5-NEXT: vadduwm 2, 2, 4
9787 ; PWR5-NEXT: vspltisb 4, 1
9788 ; PWR5-NEXT: vand 2, 2, 5
9789 ; PWR5-NEXT: vspltisw 5, -16
9790 ; PWR5-NEXT: vrlw 0, 4, 5
9791 ; PWR5-NEXT: vmulouh 4, 2, 4
9792 ; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
9793 ; PWR5-NEXT: vspltisw 3, 12
9794 ; PWR5-NEXT: vadduwm 3, 3, 3
9795 ; PWR5-NEXT: vslw 2, 2, 5
9796 ; PWR5-NEXT: vadduwm 2, 4, 2
9797 ; PWR5-NEXT: vsrw 2, 2, 3
9798 ; PWR5-NEXT: vspltisw 3, 7
9799 ; PWR5-NEXT: vsubuwm 3, 3, 5
9800 ; PWR5-NEXT: vcmpgtuw 2, 2, 3
9803 ; PWR6-LABEL: ugt_23_v4i32:
9805 ; PWR6-NEXT: addis 3, 2, .LCPI84_0@toc@ha
9806 ; PWR6-NEXT: vspltisw 4, 1
9807 ; PWR6-NEXT: vxor 3, 3, 3
9808 ; PWR6-NEXT: addi 3, 3, .LCPI84_0@toc@l
9809 ; PWR6-NEXT: lvx 5, 0, 3
9810 ; PWR6-NEXT: addis 3, 2, .LCPI84_1@toc@ha
9811 ; PWR6-NEXT: addi 3, 3, .LCPI84_1@toc@l
9812 ; PWR6-NEXT: vspltisw 0, 2
9813 ; PWR6-NEXT: vsrw 4, 2, 4
9814 ; PWR6-NEXT: vand 4, 4, 5
9815 ; PWR6-NEXT: lvx 5, 0, 3
9816 ; PWR6-NEXT: vsubuwm 2, 2, 4
9817 ; PWR6-NEXT: vand 4, 2, 5
9818 ; PWR6-NEXT: vsrw 2, 2, 0
9819 ; PWR6-NEXT: vand 2, 2, 5
9820 ; PWR6-NEXT: vspltisw 5, 4
9821 ; PWR6-NEXT: vadduwm 2, 4, 2
9822 ; PWR6-NEXT: vsrw 4, 2, 5
9823 ; PWR6-NEXT: vspltisb 5, 15
9824 ; PWR6-NEXT: vadduwm 2, 2, 4
9825 ; PWR6-NEXT: vspltisb 4, 1
9826 ; PWR6-NEXT: vand 2, 2, 5
9827 ; PWR6-NEXT: vspltisw 5, -16
9828 ; PWR6-NEXT: vrlw 0, 4, 5
9829 ; PWR6-NEXT: vmulouh 4, 2, 4
9830 ; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
9831 ; PWR6-NEXT: vspltisw 3, 12
9832 ; PWR6-NEXT: vadduwm 3, 3, 3
9833 ; PWR6-NEXT: vslw 2, 2, 5
9834 ; PWR6-NEXT: vadduwm 2, 4, 2
9835 ; PWR6-NEXT: vsrw 2, 2, 3
9836 ; PWR6-NEXT: vspltisw 3, 7
9837 ; PWR6-NEXT: vsubuwm 3, 3, 5
9838 ; PWR6-NEXT: vcmpgtuw 2, 2, 3
9841 ; PWR7-LABEL: ugt_23_v4i32:
9843 ; PWR7-NEXT: vspltisw 3, 1
9844 ; PWR7-NEXT: addis 3, 2, .LCPI84_0@toc@ha
9845 ; PWR7-NEXT: addi 3, 3, .LCPI84_0@toc@l
9846 ; PWR7-NEXT: vspltisw 4, 2
9847 ; PWR7-NEXT: lxvw4x 0, 0, 3
9848 ; PWR7-NEXT: addis 3, 2, .LCPI84_1@toc@ha
9849 ; PWR7-NEXT: vspltisw 5, -16
9850 ; PWR7-NEXT: vsrw 3, 2, 3
9851 ; PWR7-NEXT: addi 3, 3, .LCPI84_1@toc@l
9852 ; PWR7-NEXT: vspltisb 0, 15
9853 ; PWR7-NEXT: xxland 35, 35, 0
9854 ; PWR7-NEXT: lxvw4x 0, 0, 3
9855 ; PWR7-NEXT: vsubuwm 2, 2, 3
9856 ; PWR7-NEXT: vsrw 3, 2, 4
9857 ; PWR7-NEXT: xxland 34, 34, 0
9858 ; PWR7-NEXT: vspltisw 4, 4
9859 ; PWR7-NEXT: xxland 35, 35, 0
9860 ; PWR7-NEXT: vadduwm 2, 2, 3
9861 ; PWR7-NEXT: vsrw 3, 2, 4
9862 ; PWR7-NEXT: vspltisb 4, 1
9863 ; PWR7-NEXT: vrlw 1, 4, 5
9864 ; PWR7-NEXT: vadduwm 2, 2, 3
9865 ; PWR7-NEXT: xxlxor 35, 35, 35
9866 ; PWR7-NEXT: xxland 34, 34, 32
9867 ; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
9868 ; PWR7-NEXT: vmulouh 2, 2, 4
9869 ; PWR7-NEXT: vspltisw 4, 12
9870 ; PWR7-NEXT: vslw 3, 3, 5
9871 ; PWR7-NEXT: vadduwm 2, 2, 3
9872 ; PWR7-NEXT: vadduwm 3, 4, 4
9873 ; PWR7-NEXT: vsrw 2, 2, 3
9874 ; PWR7-NEXT: vspltisw 3, 7
9875 ; PWR7-NEXT: vsubuwm 3, 3, 5
9876 ; PWR7-NEXT: vcmpgtuw 2, 2, 3
9879 ; PWR8-LABEL: ugt_23_v4i32:
9881 ; PWR8-NEXT: vspltisw 3, -16
9882 ; PWR8-NEXT: vspltisw 4, 7
9883 ; PWR8-NEXT: vpopcntw 2, 2
9884 ; PWR8-NEXT: vsubuwm 3, 4, 3
9885 ; PWR8-NEXT: vcmpgtuw 2, 2, 3
9888 ; PWR9-LABEL: ugt_23_v4i32:
9890 ; PWR9-NEXT: vspltisw 3, -16
9891 ; PWR9-NEXT: vspltisw 4, 7
9892 ; PWR9-NEXT: vpopcntw 2, 2
9893 ; PWR9-NEXT: vsubuwm 3, 4, 3
9894 ; PWR9-NEXT: vcmpgtuw 2, 2, 3
9896 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
9897 %3 = icmp ugt <4 x i32> %2, <i32 23, i32 23, i32 23, i32 23>
9898 %4 = sext <4 x i1> %3 to <4 x i32>
9902 define <4 x i32> @ult_24_v4i32(<4 x i32> %0) {
9903 ; PWR5-LABEL: ult_24_v4i32:
9905 ; PWR5-NEXT: addis 3, 2, .LCPI85_0@toc@ha
9906 ; PWR5-NEXT: vspltisw 4, 1
9907 ; PWR5-NEXT: vxor 3, 3, 3
9908 ; PWR5-NEXT: addi 3, 3, .LCPI85_0@toc@l
9909 ; PWR5-NEXT: lvx 5, 0, 3
9910 ; PWR5-NEXT: addis 3, 2, .LCPI85_1@toc@ha
9911 ; PWR5-NEXT: addi 3, 3, .LCPI85_1@toc@l
9912 ; PWR5-NEXT: vspltisw 0, 2
9913 ; PWR5-NEXT: vsrw 4, 2, 4
9914 ; PWR5-NEXT: vand 4, 4, 5
9915 ; PWR5-NEXT: lvx 5, 0, 3
9916 ; PWR5-NEXT: vsubuwm 2, 2, 4
9917 ; PWR5-NEXT: vand 4, 2, 5
9918 ; PWR5-NEXT: vsrw 2, 2, 0
9919 ; PWR5-NEXT: vand 2, 2, 5
9920 ; PWR5-NEXT: vspltisw 5, 4
9921 ; PWR5-NEXT: vadduwm 2, 4, 2
9922 ; PWR5-NEXT: vsrw 4, 2, 5
9923 ; PWR5-NEXT: vspltisb 5, 15
9924 ; PWR5-NEXT: vadduwm 2, 2, 4
9925 ; PWR5-NEXT: vspltisb 4, 1
9926 ; PWR5-NEXT: vand 2, 2, 5
9927 ; PWR5-NEXT: vspltisw 5, -16
9928 ; PWR5-NEXT: vrlw 0, 4, 5
9929 ; PWR5-NEXT: vmulouh 4, 2, 4
9930 ; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
9931 ; PWR5-NEXT: vspltisw 3, 12
9932 ; PWR5-NEXT: vadduwm 3, 3, 3
9933 ; PWR5-NEXT: vslw 2, 2, 5
9934 ; PWR5-NEXT: vadduwm 2, 4, 2
9935 ; PWR5-NEXT: vsrw 2, 2, 3
9936 ; PWR5-NEXT: vcmpgtuw 2, 3, 2
9939 ; PWR6-LABEL: ult_24_v4i32:
9941 ; PWR6-NEXT: addis 3, 2, .LCPI85_0@toc@ha
9942 ; PWR6-NEXT: vspltisw 4, 1
9943 ; PWR6-NEXT: vxor 3, 3, 3
9944 ; PWR6-NEXT: addi 3, 3, .LCPI85_0@toc@l
9945 ; PWR6-NEXT: lvx 5, 0, 3
9946 ; PWR6-NEXT: addis 3, 2, .LCPI85_1@toc@ha
9947 ; PWR6-NEXT: addi 3, 3, .LCPI85_1@toc@l
9948 ; PWR6-NEXT: vspltisw 0, 2
9949 ; PWR6-NEXT: vsrw 4, 2, 4
9950 ; PWR6-NEXT: vand 4, 4, 5
9951 ; PWR6-NEXT: lvx 5, 0, 3
9952 ; PWR6-NEXT: vsubuwm 2, 2, 4
9953 ; PWR6-NEXT: vand 4, 2, 5
9954 ; PWR6-NEXT: vsrw 2, 2, 0
9955 ; PWR6-NEXT: vand 2, 2, 5
9956 ; PWR6-NEXT: vspltisw 5, 4
9957 ; PWR6-NEXT: vadduwm 2, 4, 2
9958 ; PWR6-NEXT: vsrw 4, 2, 5
9959 ; PWR6-NEXT: vspltisb 5, 15
9960 ; PWR6-NEXT: vadduwm 2, 2, 4
9961 ; PWR6-NEXT: vspltisb 4, 1
9962 ; PWR6-NEXT: vand 2, 2, 5
9963 ; PWR6-NEXT: vspltisw 5, -16
9964 ; PWR6-NEXT: vrlw 0, 4, 5
9965 ; PWR6-NEXT: vmulouh 4, 2, 4
9966 ; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
9967 ; PWR6-NEXT: vspltisw 3, 12
9968 ; PWR6-NEXT: vadduwm 3, 3, 3
9969 ; PWR6-NEXT: vslw 2, 2, 5
9970 ; PWR6-NEXT: vadduwm 2, 4, 2
9971 ; PWR6-NEXT: vsrw 2, 2, 3
9972 ; PWR6-NEXT: vcmpgtuw 2, 3, 2
9975 ; PWR7-LABEL: ult_24_v4i32:
9977 ; PWR7-NEXT: vspltisw 3, 1
9978 ; PWR7-NEXT: addis 3, 2, .LCPI85_0@toc@ha
9979 ; PWR7-NEXT: addi 3, 3, .LCPI85_0@toc@l
9980 ; PWR7-NEXT: vspltisw 4, 2
9981 ; PWR7-NEXT: lxvw4x 0, 0, 3
9982 ; PWR7-NEXT: addis 3, 2, .LCPI85_1@toc@ha
9983 ; PWR7-NEXT: vspltisw 5, -16
9984 ; PWR7-NEXT: vsrw 3, 2, 3
9985 ; PWR7-NEXT: addi 3, 3, .LCPI85_1@toc@l
9986 ; PWR7-NEXT: vspltisb 0, 15
9987 ; PWR7-NEXT: xxland 35, 35, 0
9988 ; PWR7-NEXT: lxvw4x 0, 0, 3
9989 ; PWR7-NEXT: vsubuwm 2, 2, 3
9990 ; PWR7-NEXT: vsrw 3, 2, 4
9991 ; PWR7-NEXT: xxland 34, 34, 0
9992 ; PWR7-NEXT: vspltisw 4, 4
9993 ; PWR7-NEXT: xxland 35, 35, 0
9994 ; PWR7-NEXT: vadduwm 2, 2, 3
9995 ; PWR7-NEXT: vsrw 3, 2, 4
9996 ; PWR7-NEXT: vspltisb 4, 1
9997 ; PWR7-NEXT: vrlw 1, 4, 5
9998 ; PWR7-NEXT: vadduwm 2, 2, 3
9999 ; PWR7-NEXT: xxlxor 35, 35, 35
10000 ; PWR7-NEXT: xxland 34, 34, 32
10001 ; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
10002 ; PWR7-NEXT: vmulouh 2, 2, 4
10003 ; PWR7-NEXT: vspltisw 4, 12
10004 ; PWR7-NEXT: vslw 3, 3, 5
10005 ; PWR7-NEXT: vadduwm 2, 2, 3
10006 ; PWR7-NEXT: vadduwm 3, 4, 4
10007 ; PWR7-NEXT: vsrw 2, 2, 3
10008 ; PWR7-NEXT: vcmpgtuw 2, 3, 2
10011 ; PWR8-LABEL: ult_24_v4i32:
10013 ; PWR8-NEXT: vspltisw 3, 12
10014 ; PWR8-NEXT: vpopcntw 2, 2
10015 ; PWR8-NEXT: vadduwm 3, 3, 3
10016 ; PWR8-NEXT: vcmpgtuw 2, 3, 2
10019 ; PWR9-LABEL: ult_24_v4i32:
10021 ; PWR9-NEXT: vspltisw 3, 12
10022 ; PWR9-NEXT: vpopcntw 2, 2
10023 ; PWR9-NEXT: vadduwm 3, 3, 3
10024 ; PWR9-NEXT: vcmpgtuw 2, 3, 2
10026 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
10027 %3 = icmp ult <4 x i32> %2, <i32 24, i32 24, i32 24, i32 24>
10028 %4 = sext <4 x i1> %3 to <4 x i32>
10032 define <4 x i32> @ugt_24_v4i32(<4 x i32> %0) {
10033 ; PWR5-LABEL: ugt_24_v4i32:
10035 ; PWR5-NEXT: addis 3, 2, .LCPI86_0@toc@ha
10036 ; PWR5-NEXT: vspltisw 4, 1
10037 ; PWR5-NEXT: vxor 3, 3, 3
10038 ; PWR5-NEXT: addi 3, 3, .LCPI86_0@toc@l
10039 ; PWR5-NEXT: lvx 5, 0, 3
10040 ; PWR5-NEXT: addis 3, 2, .LCPI86_1@toc@ha
10041 ; PWR5-NEXT: addi 3, 3, .LCPI86_1@toc@l
10042 ; PWR5-NEXT: vspltisw 0, 2
10043 ; PWR5-NEXT: vsrw 4, 2, 4
10044 ; PWR5-NEXT: vand 4, 4, 5
10045 ; PWR5-NEXT: lvx 5, 0, 3
10046 ; PWR5-NEXT: vsubuwm 2, 2, 4
10047 ; PWR5-NEXT: vand 4, 2, 5
10048 ; PWR5-NEXT: vsrw 2, 2, 0
10049 ; PWR5-NEXT: vand 2, 2, 5
10050 ; PWR5-NEXT: vspltisw 5, 4
10051 ; PWR5-NEXT: vadduwm 2, 4, 2
10052 ; PWR5-NEXT: vsrw 4, 2, 5
10053 ; PWR5-NEXT: vspltisb 5, 15
10054 ; PWR5-NEXT: vadduwm 2, 2, 4
10055 ; PWR5-NEXT: vspltisb 4, 1
10056 ; PWR5-NEXT: vand 2, 2, 5
10057 ; PWR5-NEXT: vspltisw 5, -16
10058 ; PWR5-NEXT: vrlw 0, 4, 5
10059 ; PWR5-NEXT: vmulouh 4, 2, 4
10060 ; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
10061 ; PWR5-NEXT: vspltisw 3, 12
10062 ; PWR5-NEXT: vadduwm 3, 3, 3
10063 ; PWR5-NEXT: vslw 2, 2, 5
10064 ; PWR5-NEXT: vadduwm 2, 4, 2
10065 ; PWR5-NEXT: vsrw 2, 2, 3
10066 ; PWR5-NEXT: vcmpgtuw 2, 2, 3
10069 ; PWR6-LABEL: ugt_24_v4i32:
10071 ; PWR6-NEXT: addis 3, 2, .LCPI86_0@toc@ha
10072 ; PWR6-NEXT: vspltisw 4, 1
10073 ; PWR6-NEXT: vxor 3, 3, 3
10074 ; PWR6-NEXT: addi 3, 3, .LCPI86_0@toc@l
10075 ; PWR6-NEXT: lvx 5, 0, 3
10076 ; PWR6-NEXT: addis 3, 2, .LCPI86_1@toc@ha
10077 ; PWR6-NEXT: addi 3, 3, .LCPI86_1@toc@l
10078 ; PWR6-NEXT: vspltisw 0, 2
10079 ; PWR6-NEXT: vsrw 4, 2, 4
10080 ; PWR6-NEXT: vand 4, 4, 5
10081 ; PWR6-NEXT: lvx 5, 0, 3
10082 ; PWR6-NEXT: vsubuwm 2, 2, 4
10083 ; PWR6-NEXT: vand 4, 2, 5
10084 ; PWR6-NEXT: vsrw 2, 2, 0
10085 ; PWR6-NEXT: vand 2, 2, 5
10086 ; PWR6-NEXT: vspltisw 5, 4
10087 ; PWR6-NEXT: vadduwm 2, 4, 2
10088 ; PWR6-NEXT: vsrw 4, 2, 5
10089 ; PWR6-NEXT: vspltisb 5, 15
10090 ; PWR6-NEXT: vadduwm 2, 2, 4
10091 ; PWR6-NEXT: vspltisb 4, 1
10092 ; PWR6-NEXT: vand 2, 2, 5
10093 ; PWR6-NEXT: vspltisw 5, -16
10094 ; PWR6-NEXT: vrlw 0, 4, 5
10095 ; PWR6-NEXT: vmulouh 4, 2, 4
10096 ; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
10097 ; PWR6-NEXT: vspltisw 3, 12
10098 ; PWR6-NEXT: vadduwm 3, 3, 3
10099 ; PWR6-NEXT: vslw 2, 2, 5
10100 ; PWR6-NEXT: vadduwm 2, 4, 2
10101 ; PWR6-NEXT: vsrw 2, 2, 3
10102 ; PWR6-NEXT: vcmpgtuw 2, 2, 3
10105 ; PWR7-LABEL: ugt_24_v4i32:
10107 ; PWR7-NEXT: vspltisw 3, 1
10108 ; PWR7-NEXT: addis 3, 2, .LCPI86_0@toc@ha
10109 ; PWR7-NEXT: addi 3, 3, .LCPI86_0@toc@l
10110 ; PWR7-NEXT: vspltisw 4, 2
10111 ; PWR7-NEXT: lxvw4x 0, 0, 3
10112 ; PWR7-NEXT: addis 3, 2, .LCPI86_1@toc@ha
10113 ; PWR7-NEXT: vspltisw 5, -16
10114 ; PWR7-NEXT: vsrw 3, 2, 3
10115 ; PWR7-NEXT: addi 3, 3, .LCPI86_1@toc@l
10116 ; PWR7-NEXT: vspltisb 0, 15
10117 ; PWR7-NEXT: xxland 35, 35, 0
10118 ; PWR7-NEXT: lxvw4x 0, 0, 3
10119 ; PWR7-NEXT: vsubuwm 2, 2, 3
10120 ; PWR7-NEXT: vsrw 3, 2, 4
10121 ; PWR7-NEXT: xxland 34, 34, 0
10122 ; PWR7-NEXT: vspltisw 4, 4
10123 ; PWR7-NEXT: xxland 35, 35, 0
10124 ; PWR7-NEXT: vadduwm 2, 2, 3
10125 ; PWR7-NEXT: vsrw 3, 2, 4
10126 ; PWR7-NEXT: vspltisb 4, 1
10127 ; PWR7-NEXT: vrlw 1, 4, 5
10128 ; PWR7-NEXT: vadduwm 2, 2, 3
10129 ; PWR7-NEXT: xxlxor 35, 35, 35
10130 ; PWR7-NEXT: xxland 34, 34, 32
10131 ; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
10132 ; PWR7-NEXT: vmulouh 2, 2, 4
10133 ; PWR7-NEXT: vspltisw 4, 12
10134 ; PWR7-NEXT: vslw 3, 3, 5
10135 ; PWR7-NEXT: vadduwm 2, 2, 3
10136 ; PWR7-NEXT: vadduwm 3, 4, 4
10137 ; PWR7-NEXT: vsrw 2, 2, 3
10138 ; PWR7-NEXT: vcmpgtuw 2, 2, 3
10141 ; PWR8-LABEL: ugt_24_v4i32:
10143 ; PWR8-NEXT: vspltisw 3, 12
10144 ; PWR8-NEXT: vpopcntw 2, 2
10145 ; PWR8-NEXT: vadduwm 3, 3, 3
10146 ; PWR8-NEXT: vcmpgtuw 2, 2, 3
10149 ; PWR9-LABEL: ugt_24_v4i32:
10151 ; PWR9-NEXT: vspltisw 3, 12
10152 ; PWR9-NEXT: vpopcntw 2, 2
10153 ; PWR9-NEXT: vadduwm 3, 3, 3
10154 ; PWR9-NEXT: vcmpgtuw 2, 2, 3
10156 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
10157 %3 = icmp ugt <4 x i32> %2, <i32 24, i32 24, i32 24, i32 24>
10158 %4 = sext <4 x i1> %3 to <4 x i32>
10162 define <4 x i32> @ult_25_v4i32(<4 x i32> %0) {
10163 ; PWR5-LABEL: ult_25_v4i32:
10165 ; PWR5-NEXT: addis 3, 2, .LCPI87_0@toc@ha
10166 ; PWR5-NEXT: vspltisw 4, 1
10167 ; PWR5-NEXT: vxor 3, 3, 3
10168 ; PWR5-NEXT: addi 3, 3, .LCPI87_0@toc@l
10169 ; PWR5-NEXT: lvx 5, 0, 3
10170 ; PWR5-NEXT: addis 3, 2, .LCPI87_1@toc@ha
10171 ; PWR5-NEXT: addi 3, 3, .LCPI87_1@toc@l
10172 ; PWR5-NEXT: vspltisw 0, 2
10173 ; PWR5-NEXT: vsrw 4, 2, 4
10174 ; PWR5-NEXT: vand 4, 4, 5
10175 ; PWR5-NEXT: lvx 5, 0, 3
10176 ; PWR5-NEXT: vsubuwm 2, 2, 4
10177 ; PWR5-NEXT: vand 4, 2, 5
10178 ; PWR5-NEXT: vsrw 2, 2, 0
10179 ; PWR5-NEXT: vand 2, 2, 5
10180 ; PWR5-NEXT: vspltisw 5, 4
10181 ; PWR5-NEXT: vadduwm 2, 4, 2
10182 ; PWR5-NEXT: vsrw 4, 2, 5
10183 ; PWR5-NEXT: vspltisb 5, 15
10184 ; PWR5-NEXT: vadduwm 2, 2, 4
10185 ; PWR5-NEXT: vspltisb 4, 1
10186 ; PWR5-NEXT: vand 2, 2, 5
10187 ; PWR5-NEXT: vspltisw 5, -16
10188 ; PWR5-NEXT: vrlw 0, 4, 5
10189 ; PWR5-NEXT: vmulouh 4, 2, 4
10190 ; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
10191 ; PWR5-NEXT: vspltisw 3, 12
10192 ; PWR5-NEXT: vadduwm 3, 3, 3
10193 ; PWR5-NEXT: vslw 2, 2, 5
10194 ; PWR5-NEXT: vadduwm 2, 4, 2
10195 ; PWR5-NEXT: vsrw 2, 2, 3
10196 ; PWR5-NEXT: vspltisw 3, 9
10197 ; PWR5-NEXT: vsubuwm 3, 3, 5
10198 ; PWR5-NEXT: vcmpgtuw 2, 3, 2
10201 ; PWR6-LABEL: ult_25_v4i32:
10203 ; PWR6-NEXT: addis 3, 2, .LCPI87_0@toc@ha
10204 ; PWR6-NEXT: vspltisw 4, 1
10205 ; PWR6-NEXT: vxor 3, 3, 3
10206 ; PWR6-NEXT: addi 3, 3, .LCPI87_0@toc@l
10207 ; PWR6-NEXT: lvx 5, 0, 3
10208 ; PWR6-NEXT: addis 3, 2, .LCPI87_1@toc@ha
10209 ; PWR6-NEXT: addi 3, 3, .LCPI87_1@toc@l
10210 ; PWR6-NEXT: vspltisw 0, 2
10211 ; PWR6-NEXT: vsrw 4, 2, 4
10212 ; PWR6-NEXT: vand 4, 4, 5
10213 ; PWR6-NEXT: lvx 5, 0, 3
10214 ; PWR6-NEXT: vsubuwm 2, 2, 4
10215 ; PWR6-NEXT: vand 4, 2, 5
10216 ; PWR6-NEXT: vsrw 2, 2, 0
10217 ; PWR6-NEXT: vand 2, 2, 5
10218 ; PWR6-NEXT: vspltisw 5, 4
10219 ; PWR6-NEXT: vadduwm 2, 4, 2
10220 ; PWR6-NEXT: vsrw 4, 2, 5
10221 ; PWR6-NEXT: vspltisb 5, 15
10222 ; PWR6-NEXT: vadduwm 2, 2, 4
10223 ; PWR6-NEXT: vspltisb 4, 1
10224 ; PWR6-NEXT: vand 2, 2, 5
10225 ; PWR6-NEXT: vspltisw 5, -16
10226 ; PWR6-NEXT: vrlw 0, 4, 5
10227 ; PWR6-NEXT: vmulouh 4, 2, 4
10228 ; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
10229 ; PWR6-NEXT: vspltisw 3, 12
10230 ; PWR6-NEXT: vadduwm 3, 3, 3
10231 ; PWR6-NEXT: vslw 2, 2, 5
10232 ; PWR6-NEXT: vadduwm 2, 4, 2
10233 ; PWR6-NEXT: vsrw 2, 2, 3
10234 ; PWR6-NEXT: vspltisw 3, 9
10235 ; PWR6-NEXT: vsubuwm 3, 3, 5
10236 ; PWR6-NEXT: vcmpgtuw 2, 3, 2
10239 ; PWR7-LABEL: ult_25_v4i32:
10241 ; PWR7-NEXT: vspltisw 3, 1
10242 ; PWR7-NEXT: addis 3, 2, .LCPI87_0@toc@ha
10243 ; PWR7-NEXT: addi 3, 3, .LCPI87_0@toc@l
10244 ; PWR7-NEXT: vspltisw 4, 2
10245 ; PWR7-NEXT: lxvw4x 0, 0, 3
10246 ; PWR7-NEXT: addis 3, 2, .LCPI87_1@toc@ha
10247 ; PWR7-NEXT: vspltisw 5, -16
10248 ; PWR7-NEXT: vsrw 3, 2, 3
10249 ; PWR7-NEXT: addi 3, 3, .LCPI87_1@toc@l
10250 ; PWR7-NEXT: vspltisb 0, 15
10251 ; PWR7-NEXT: xxland 35, 35, 0
10252 ; PWR7-NEXT: lxvw4x 0, 0, 3
10253 ; PWR7-NEXT: vsubuwm 2, 2, 3
10254 ; PWR7-NEXT: vsrw 3, 2, 4
10255 ; PWR7-NEXT: xxland 34, 34, 0
10256 ; PWR7-NEXT: vspltisw 4, 4
10257 ; PWR7-NEXT: xxland 35, 35, 0
10258 ; PWR7-NEXT: vadduwm 2, 2, 3
10259 ; PWR7-NEXT: vsrw 3, 2, 4
10260 ; PWR7-NEXT: vspltisb 4, 1
10261 ; PWR7-NEXT: vrlw 1, 4, 5
10262 ; PWR7-NEXT: vadduwm 2, 2, 3
10263 ; PWR7-NEXT: xxlxor 35, 35, 35
10264 ; PWR7-NEXT: xxland 34, 34, 32
10265 ; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
10266 ; PWR7-NEXT: vmulouh 2, 2, 4
10267 ; PWR7-NEXT: vspltisw 4, 12
10268 ; PWR7-NEXT: vslw 3, 3, 5
10269 ; PWR7-NEXT: vadduwm 2, 2, 3
10270 ; PWR7-NEXT: vadduwm 3, 4, 4
10271 ; PWR7-NEXT: vsrw 2, 2, 3
10272 ; PWR7-NEXT: vspltisw 3, 9
10273 ; PWR7-NEXT: vsubuwm 3, 3, 5
10274 ; PWR7-NEXT: vcmpgtuw 2, 3, 2
10277 ; PWR8-LABEL: ult_25_v4i32:
10279 ; PWR8-NEXT: vspltisw 3, -16
10280 ; PWR8-NEXT: vspltisw 4, 9
10281 ; PWR8-NEXT: vpopcntw 2, 2
10282 ; PWR8-NEXT: vsubuwm 3, 4, 3
10283 ; PWR8-NEXT: vcmpgtuw 2, 3, 2
10286 ; PWR9-LABEL: ult_25_v4i32:
10288 ; PWR9-NEXT: vspltisw 3, -16
10289 ; PWR9-NEXT: vspltisw 4, 9
10290 ; PWR9-NEXT: vpopcntw 2, 2
10291 ; PWR9-NEXT: vsubuwm 3, 4, 3
10292 ; PWR9-NEXT: vcmpgtuw 2, 3, 2
10294 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
10295 %3 = icmp ult <4 x i32> %2, <i32 25, i32 25, i32 25, i32 25>
10296 %4 = sext <4 x i1> %3 to <4 x i32>
10300 define <4 x i32> @ugt_25_v4i32(<4 x i32> %0) {
10301 ; PWR5-LABEL: ugt_25_v4i32:
10303 ; PWR5-NEXT: addis 3, 2, .LCPI88_0@toc@ha
10304 ; PWR5-NEXT: vspltisw 4, 1
10305 ; PWR5-NEXT: vxor 3, 3, 3
10306 ; PWR5-NEXT: addi 3, 3, .LCPI88_0@toc@l
10307 ; PWR5-NEXT: lvx 5, 0, 3
10308 ; PWR5-NEXT: addis 3, 2, .LCPI88_1@toc@ha
10309 ; PWR5-NEXT: addi 3, 3, .LCPI88_1@toc@l
10310 ; PWR5-NEXT: vspltisw 0, 2
10311 ; PWR5-NEXT: vsrw 4, 2, 4
10312 ; PWR5-NEXT: vand 4, 4, 5
10313 ; PWR5-NEXT: lvx 5, 0, 3
10314 ; PWR5-NEXT: vsubuwm 2, 2, 4
10315 ; PWR5-NEXT: vand 4, 2, 5
10316 ; PWR5-NEXT: vsrw 2, 2, 0
10317 ; PWR5-NEXT: vand 2, 2, 5
10318 ; PWR5-NEXT: vspltisw 5, 4
10319 ; PWR5-NEXT: vadduwm 2, 4, 2
10320 ; PWR5-NEXT: vsrw 4, 2, 5
10321 ; PWR5-NEXT: vspltisb 5, 15
10322 ; PWR5-NEXT: vadduwm 2, 2, 4
10323 ; PWR5-NEXT: vspltisb 4, 1
10324 ; PWR5-NEXT: vand 2, 2, 5
10325 ; PWR5-NEXT: vspltisw 5, -16
10326 ; PWR5-NEXT: vrlw 0, 4, 5
10327 ; PWR5-NEXT: vmulouh 4, 2, 4
10328 ; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
10329 ; PWR5-NEXT: vspltisw 3, 12
10330 ; PWR5-NEXT: vadduwm 3, 3, 3
10331 ; PWR5-NEXT: vslw 2, 2, 5
10332 ; PWR5-NEXT: vadduwm 2, 4, 2
10333 ; PWR5-NEXT: vsrw 2, 2, 3
10334 ; PWR5-NEXT: vspltisw 3, 9
10335 ; PWR5-NEXT: vsubuwm 3, 3, 5
10336 ; PWR5-NEXT: vcmpgtuw 2, 2, 3
10339 ; PWR6-LABEL: ugt_25_v4i32:
10341 ; PWR6-NEXT: addis 3, 2, .LCPI88_0@toc@ha
10342 ; PWR6-NEXT: vspltisw 4, 1
10343 ; PWR6-NEXT: vxor 3, 3, 3
10344 ; PWR6-NEXT: addi 3, 3, .LCPI88_0@toc@l
10345 ; PWR6-NEXT: lvx 5, 0, 3
10346 ; PWR6-NEXT: addis 3, 2, .LCPI88_1@toc@ha
10347 ; PWR6-NEXT: addi 3, 3, .LCPI88_1@toc@l
10348 ; PWR6-NEXT: vspltisw 0, 2
10349 ; PWR6-NEXT: vsrw 4, 2, 4
10350 ; PWR6-NEXT: vand 4, 4, 5
10351 ; PWR6-NEXT: lvx 5, 0, 3
10352 ; PWR6-NEXT: vsubuwm 2, 2, 4
10353 ; PWR6-NEXT: vand 4, 2, 5
10354 ; PWR6-NEXT: vsrw 2, 2, 0
10355 ; PWR6-NEXT: vand 2, 2, 5
10356 ; PWR6-NEXT: vspltisw 5, 4
10357 ; PWR6-NEXT: vadduwm 2, 4, 2
10358 ; PWR6-NEXT: vsrw 4, 2, 5
10359 ; PWR6-NEXT: vspltisb 5, 15
10360 ; PWR6-NEXT: vadduwm 2, 2, 4
10361 ; PWR6-NEXT: vspltisb 4, 1
10362 ; PWR6-NEXT: vand 2, 2, 5
10363 ; PWR6-NEXT: vspltisw 5, -16
10364 ; PWR6-NEXT: vrlw 0, 4, 5
10365 ; PWR6-NEXT: vmulouh 4, 2, 4
10366 ; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
10367 ; PWR6-NEXT: vspltisw 3, 12
10368 ; PWR6-NEXT: vadduwm 3, 3, 3
10369 ; PWR6-NEXT: vslw 2, 2, 5
10370 ; PWR6-NEXT: vadduwm 2, 4, 2
10371 ; PWR6-NEXT: vsrw 2, 2, 3
10372 ; PWR6-NEXT: vspltisw 3, 9
10373 ; PWR6-NEXT: vsubuwm 3, 3, 5
10374 ; PWR6-NEXT: vcmpgtuw 2, 2, 3
10377 ; PWR7-LABEL: ugt_25_v4i32:
10379 ; PWR7-NEXT: vspltisw 3, 1
10380 ; PWR7-NEXT: addis 3, 2, .LCPI88_0@toc@ha
10381 ; PWR7-NEXT: addi 3, 3, .LCPI88_0@toc@l
10382 ; PWR7-NEXT: vspltisw 4, 2
10383 ; PWR7-NEXT: lxvw4x 0, 0, 3
10384 ; PWR7-NEXT: addis 3, 2, .LCPI88_1@toc@ha
10385 ; PWR7-NEXT: vspltisw 5, -16
10386 ; PWR7-NEXT: vsrw 3, 2, 3
10387 ; PWR7-NEXT: addi 3, 3, .LCPI88_1@toc@l
10388 ; PWR7-NEXT: vspltisb 0, 15
10389 ; PWR7-NEXT: xxland 35, 35, 0
10390 ; PWR7-NEXT: lxvw4x 0, 0, 3
10391 ; PWR7-NEXT: vsubuwm 2, 2, 3
10392 ; PWR7-NEXT: vsrw 3, 2, 4
10393 ; PWR7-NEXT: xxland 34, 34, 0
10394 ; PWR7-NEXT: vspltisw 4, 4
10395 ; PWR7-NEXT: xxland 35, 35, 0
10396 ; PWR7-NEXT: vadduwm 2, 2, 3
10397 ; PWR7-NEXT: vsrw 3, 2, 4
10398 ; PWR7-NEXT: vspltisb 4, 1
10399 ; PWR7-NEXT: vrlw 1, 4, 5
10400 ; PWR7-NEXT: vadduwm 2, 2, 3
10401 ; PWR7-NEXT: xxlxor 35, 35, 35
10402 ; PWR7-NEXT: xxland 34, 34, 32
10403 ; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
10404 ; PWR7-NEXT: vmulouh 2, 2, 4
10405 ; PWR7-NEXT: vspltisw 4, 12
10406 ; PWR7-NEXT: vslw 3, 3, 5
10407 ; PWR7-NEXT: vadduwm 2, 2, 3
10408 ; PWR7-NEXT: vadduwm 3, 4, 4
10409 ; PWR7-NEXT: vsrw 2, 2, 3
10410 ; PWR7-NEXT: vspltisw 3, 9
10411 ; PWR7-NEXT: vsubuwm 3, 3, 5
10412 ; PWR7-NEXT: vcmpgtuw 2, 2, 3
10415 ; PWR8-LABEL: ugt_25_v4i32:
10417 ; PWR8-NEXT: vspltisw 3, -16
10418 ; PWR8-NEXT: vspltisw 4, 9
10419 ; PWR8-NEXT: vpopcntw 2, 2
10420 ; PWR8-NEXT: vsubuwm 3, 4, 3
10421 ; PWR8-NEXT: vcmpgtuw 2, 2, 3
10424 ; PWR9-LABEL: ugt_25_v4i32:
10426 ; PWR9-NEXT: vspltisw 3, -16
10427 ; PWR9-NEXT: vspltisw 4, 9
10428 ; PWR9-NEXT: vpopcntw 2, 2
10429 ; PWR9-NEXT: vsubuwm 3, 4, 3
10430 ; PWR9-NEXT: vcmpgtuw 2, 2, 3
10432 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
10433 %3 = icmp ugt <4 x i32> %2, <i32 25, i32 25, i32 25, i32 25>
10434 %4 = sext <4 x i1> %3 to <4 x i32>
10438 define <4 x i32> @ult_26_v4i32(<4 x i32> %0) {
10439 ; PWR5-LABEL: ult_26_v4i32:
10441 ; PWR5-NEXT: addis 3, 2, .LCPI89_0@toc@ha
10442 ; PWR5-NEXT: vspltisw 4, 1
10443 ; PWR5-NEXT: vxor 3, 3, 3
10444 ; PWR5-NEXT: addi 3, 3, .LCPI89_0@toc@l
10445 ; PWR5-NEXT: lvx 5, 0, 3
10446 ; PWR5-NEXT: addis 3, 2, .LCPI89_1@toc@ha
10447 ; PWR5-NEXT: addi 3, 3, .LCPI89_1@toc@l
10448 ; PWR5-NEXT: vspltisw 0, 2
10449 ; PWR5-NEXT: vsrw 4, 2, 4
10450 ; PWR5-NEXT: vand 4, 4, 5
10451 ; PWR5-NEXT: lvx 5, 0, 3
10452 ; PWR5-NEXT: vsubuwm 2, 2, 4
10453 ; PWR5-NEXT: vand 4, 2, 5
10454 ; PWR5-NEXT: vsrw 2, 2, 0
10455 ; PWR5-NEXT: vand 2, 2, 5
10456 ; PWR5-NEXT: vspltisw 5, 4
10457 ; PWR5-NEXT: vadduwm 2, 4, 2
10458 ; PWR5-NEXT: vsrw 4, 2, 5
10459 ; PWR5-NEXT: vspltisb 5, 15
10460 ; PWR5-NEXT: vadduwm 2, 2, 4
10461 ; PWR5-NEXT: vspltisb 4, 1
10462 ; PWR5-NEXT: vand 2, 2, 5
10463 ; PWR5-NEXT: vspltisw 5, -16
10464 ; PWR5-NEXT: vrlw 0, 4, 5
10465 ; PWR5-NEXT: vmulouh 4, 2, 4
10466 ; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
10467 ; PWR5-NEXT: vspltisw 3, 12
10468 ; PWR5-NEXT: vadduwm 3, 3, 3
10469 ; PWR5-NEXT: vslw 2, 2, 5
10470 ; PWR5-NEXT: vadduwm 2, 4, 2
10471 ; PWR5-NEXT: vsrw 2, 2, 3
10472 ; PWR5-NEXT: vspltisw 3, 13
10473 ; PWR5-NEXT: vadduwm 3, 3, 3
10474 ; PWR5-NEXT: vcmpgtuw 2, 3, 2
10477 ; PWR6-LABEL: ult_26_v4i32:
10479 ; PWR6-NEXT: addis 3, 2, .LCPI89_0@toc@ha
10480 ; PWR6-NEXT: vspltisw 4, 1
10481 ; PWR6-NEXT: vxor 3, 3, 3
10482 ; PWR6-NEXT: addi 3, 3, .LCPI89_0@toc@l
10483 ; PWR6-NEXT: lvx 5, 0, 3
10484 ; PWR6-NEXT: addis 3, 2, .LCPI89_1@toc@ha
10485 ; PWR6-NEXT: addi 3, 3, .LCPI89_1@toc@l
10486 ; PWR6-NEXT: vspltisw 0, 2
10487 ; PWR6-NEXT: vsrw 4, 2, 4
10488 ; PWR6-NEXT: vand 4, 4, 5
10489 ; PWR6-NEXT: lvx 5, 0, 3
10490 ; PWR6-NEXT: vsubuwm 2, 2, 4
10491 ; PWR6-NEXT: vand 4, 2, 5
10492 ; PWR6-NEXT: vsrw 2, 2, 0
10493 ; PWR6-NEXT: vand 2, 2, 5
10494 ; PWR6-NEXT: vspltisw 5, 4
10495 ; PWR6-NEXT: vadduwm 2, 4, 2
10496 ; PWR6-NEXT: vsrw 4, 2, 5
10497 ; PWR6-NEXT: vspltisb 5, 15
10498 ; PWR6-NEXT: vadduwm 2, 2, 4
10499 ; PWR6-NEXT: vspltisb 4, 1
10500 ; PWR6-NEXT: vand 2, 2, 5
10501 ; PWR6-NEXT: vspltisw 5, -16
10502 ; PWR6-NEXT: vrlw 0, 4, 5
10503 ; PWR6-NEXT: vmulouh 4, 2, 4
10504 ; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
10505 ; PWR6-NEXT: vspltisw 3, 12
10506 ; PWR6-NEXT: vadduwm 3, 3, 3
10507 ; PWR6-NEXT: vslw 2, 2, 5
10508 ; PWR6-NEXT: vadduwm 2, 4, 2
10509 ; PWR6-NEXT: vsrw 2, 2, 3
10510 ; PWR6-NEXT: vspltisw 3, 13
10511 ; PWR6-NEXT: vadduwm 3, 3, 3
10512 ; PWR6-NEXT: vcmpgtuw 2, 3, 2
10515 ; PWR7-LABEL: ult_26_v4i32:
10517 ; PWR7-NEXT: vspltisw 3, 1
10518 ; PWR7-NEXT: addis 3, 2, .LCPI89_0@toc@ha
10519 ; PWR7-NEXT: addi 3, 3, .LCPI89_0@toc@l
10520 ; PWR7-NEXT: vspltisw 4, 2
10521 ; PWR7-NEXT: lxvw4x 0, 0, 3
10522 ; PWR7-NEXT: addis 3, 2, .LCPI89_1@toc@ha
10523 ; PWR7-NEXT: vspltisw 5, -16
10524 ; PWR7-NEXT: vsrw 3, 2, 3
10525 ; PWR7-NEXT: addi 3, 3, .LCPI89_1@toc@l
10526 ; PWR7-NEXT: vspltisb 0, 15
10527 ; PWR7-NEXT: xxland 35, 35, 0
10528 ; PWR7-NEXT: lxvw4x 0, 0, 3
10529 ; PWR7-NEXT: vsubuwm 2, 2, 3
10530 ; PWR7-NEXT: vsrw 3, 2, 4
10531 ; PWR7-NEXT: xxland 34, 34, 0
10532 ; PWR7-NEXT: vspltisw 4, 4
10533 ; PWR7-NEXT: xxland 35, 35, 0
10534 ; PWR7-NEXT: vadduwm 2, 2, 3
10535 ; PWR7-NEXT: vsrw 3, 2, 4
10536 ; PWR7-NEXT: vspltisb 4, 1
10537 ; PWR7-NEXT: vrlw 1, 4, 5
10538 ; PWR7-NEXT: vadduwm 2, 2, 3
10539 ; PWR7-NEXT: xxlxor 35, 35, 35
10540 ; PWR7-NEXT: xxland 34, 34, 32
10541 ; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
10542 ; PWR7-NEXT: vmulouh 2, 2, 4
10543 ; PWR7-NEXT: vspltisw 4, 12
10544 ; PWR7-NEXT: vslw 3, 3, 5
10545 ; PWR7-NEXT: vadduwm 2, 2, 3
10546 ; PWR7-NEXT: vadduwm 3, 4, 4
10547 ; PWR7-NEXT: vsrw 2, 2, 3
10548 ; PWR7-NEXT: vspltisw 3, 13
10549 ; PWR7-NEXT: vadduwm 3, 3, 3
10550 ; PWR7-NEXT: vcmpgtuw 2, 3, 2
10553 ; PWR8-LABEL: ult_26_v4i32:
10555 ; PWR8-NEXT: vspltisw 3, 13
10556 ; PWR8-NEXT: vpopcntw 2, 2
10557 ; PWR8-NEXT: vadduwm 3, 3, 3
10558 ; PWR8-NEXT: vcmpgtuw 2, 3, 2
10561 ; PWR9-LABEL: ult_26_v4i32:
10563 ; PWR9-NEXT: vspltisw 3, 13
10564 ; PWR9-NEXT: vpopcntw 2, 2
10565 ; PWR9-NEXT: vadduwm 3, 3, 3
10566 ; PWR9-NEXT: vcmpgtuw 2, 3, 2
10568 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
10569 %3 = icmp ult <4 x i32> %2, <i32 26, i32 26, i32 26, i32 26>
10570 %4 = sext <4 x i1> %3 to <4 x i32>
10574 define <4 x i32> @ugt_26_v4i32(<4 x i32> %0) {
10575 ; PWR5-LABEL: ugt_26_v4i32:
10577 ; PWR5-NEXT: addis 3, 2, .LCPI90_0@toc@ha
10578 ; PWR5-NEXT: vspltisw 4, 1
10579 ; PWR5-NEXT: vxor 3, 3, 3
10580 ; PWR5-NEXT: addi 3, 3, .LCPI90_0@toc@l
10581 ; PWR5-NEXT: lvx 5, 0, 3
10582 ; PWR5-NEXT: addis 3, 2, .LCPI90_1@toc@ha
10583 ; PWR5-NEXT: addi 3, 3, .LCPI90_1@toc@l
10584 ; PWR5-NEXT: vspltisw 0, 2
10585 ; PWR5-NEXT: vsrw 4, 2, 4
10586 ; PWR5-NEXT: vand 4, 4, 5
10587 ; PWR5-NEXT: lvx 5, 0, 3
10588 ; PWR5-NEXT: vsubuwm 2, 2, 4
10589 ; PWR5-NEXT: vand 4, 2, 5
10590 ; PWR5-NEXT: vsrw 2, 2, 0
10591 ; PWR5-NEXT: vand 2, 2, 5
10592 ; PWR5-NEXT: vspltisw 5, 4
10593 ; PWR5-NEXT: vadduwm 2, 4, 2
10594 ; PWR5-NEXT: vsrw 4, 2, 5
10595 ; PWR5-NEXT: vspltisb 5, 15
10596 ; PWR5-NEXT: vadduwm 2, 2, 4
10597 ; PWR5-NEXT: vspltisb 4, 1
10598 ; PWR5-NEXT: vand 2, 2, 5
10599 ; PWR5-NEXT: vspltisw 5, -16
10600 ; PWR5-NEXT: vrlw 0, 4, 5
10601 ; PWR5-NEXT: vmulouh 4, 2, 4
10602 ; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
10603 ; PWR5-NEXT: vspltisw 3, 12
10604 ; PWR5-NEXT: vadduwm 3, 3, 3
10605 ; PWR5-NEXT: vslw 2, 2, 5
10606 ; PWR5-NEXT: vadduwm 2, 4, 2
10607 ; PWR5-NEXT: vsrw 2, 2, 3
10608 ; PWR5-NEXT: vspltisw 3, 13
10609 ; PWR5-NEXT: vadduwm 3, 3, 3
10610 ; PWR5-NEXT: vcmpgtuw 2, 2, 3
10613 ; PWR6-LABEL: ugt_26_v4i32:
10615 ; PWR6-NEXT: addis 3, 2, .LCPI90_0@toc@ha
10616 ; PWR6-NEXT: vspltisw 4, 1
10617 ; PWR6-NEXT: vxor 3, 3, 3
10618 ; PWR6-NEXT: addi 3, 3, .LCPI90_0@toc@l
10619 ; PWR6-NEXT: lvx 5, 0, 3
10620 ; PWR6-NEXT: addis 3, 2, .LCPI90_1@toc@ha
10621 ; PWR6-NEXT: addi 3, 3, .LCPI90_1@toc@l
10622 ; PWR6-NEXT: vspltisw 0, 2
10623 ; PWR6-NEXT: vsrw 4, 2, 4
10624 ; PWR6-NEXT: vand 4, 4, 5
10625 ; PWR6-NEXT: lvx 5, 0, 3
10626 ; PWR6-NEXT: vsubuwm 2, 2, 4
10627 ; PWR6-NEXT: vand 4, 2, 5
10628 ; PWR6-NEXT: vsrw 2, 2, 0
10629 ; PWR6-NEXT: vand 2, 2, 5
10630 ; PWR6-NEXT: vspltisw 5, 4
10631 ; PWR6-NEXT: vadduwm 2, 4, 2
10632 ; PWR6-NEXT: vsrw 4, 2, 5
10633 ; PWR6-NEXT: vspltisb 5, 15
10634 ; PWR6-NEXT: vadduwm 2, 2, 4
10635 ; PWR6-NEXT: vspltisb 4, 1
10636 ; PWR6-NEXT: vand 2, 2, 5
10637 ; PWR6-NEXT: vspltisw 5, -16
10638 ; PWR6-NEXT: vrlw 0, 4, 5
10639 ; PWR6-NEXT: vmulouh 4, 2, 4
10640 ; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
10641 ; PWR6-NEXT: vspltisw 3, 12
10642 ; PWR6-NEXT: vadduwm 3, 3, 3
10643 ; PWR6-NEXT: vslw 2, 2, 5
10644 ; PWR6-NEXT: vadduwm 2, 4, 2
10645 ; PWR6-NEXT: vsrw 2, 2, 3
10646 ; PWR6-NEXT: vspltisw 3, 13
10647 ; PWR6-NEXT: vadduwm 3, 3, 3
10648 ; PWR6-NEXT: vcmpgtuw 2, 2, 3
10651 ; PWR7-LABEL: ugt_26_v4i32:
10653 ; PWR7-NEXT: vspltisw 3, 1
10654 ; PWR7-NEXT: addis 3, 2, .LCPI90_0@toc@ha
10655 ; PWR7-NEXT: addi 3, 3, .LCPI90_0@toc@l
10656 ; PWR7-NEXT: vspltisw 4, 2
10657 ; PWR7-NEXT: lxvw4x 0, 0, 3
10658 ; PWR7-NEXT: addis 3, 2, .LCPI90_1@toc@ha
10659 ; PWR7-NEXT: vspltisw 5, -16
10660 ; PWR7-NEXT: vsrw 3, 2, 3
10661 ; PWR7-NEXT: addi 3, 3, .LCPI90_1@toc@l
10662 ; PWR7-NEXT: vspltisb 0, 15
10663 ; PWR7-NEXT: xxland 35, 35, 0
10664 ; PWR7-NEXT: lxvw4x 0, 0, 3
10665 ; PWR7-NEXT: vsubuwm 2, 2, 3
10666 ; PWR7-NEXT: vsrw 3, 2, 4
10667 ; PWR7-NEXT: xxland 34, 34, 0
10668 ; PWR7-NEXT: vspltisw 4, 4
10669 ; PWR7-NEXT: xxland 35, 35, 0
10670 ; PWR7-NEXT: vadduwm 2, 2, 3
10671 ; PWR7-NEXT: vsrw 3, 2, 4
10672 ; PWR7-NEXT: vspltisb 4, 1
10673 ; PWR7-NEXT: vrlw 1, 4, 5
10674 ; PWR7-NEXT: vadduwm 2, 2, 3
10675 ; PWR7-NEXT: xxlxor 35, 35, 35
10676 ; PWR7-NEXT: xxland 34, 34, 32
10677 ; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
10678 ; PWR7-NEXT: vmulouh 2, 2, 4
10679 ; PWR7-NEXT: vspltisw 4, 12
10680 ; PWR7-NEXT: vslw 3, 3, 5
10681 ; PWR7-NEXT: vadduwm 2, 2, 3
10682 ; PWR7-NEXT: vadduwm 3, 4, 4
10683 ; PWR7-NEXT: vsrw 2, 2, 3
10684 ; PWR7-NEXT: vspltisw 3, 13
10685 ; PWR7-NEXT: vadduwm 3, 3, 3
10686 ; PWR7-NEXT: vcmpgtuw 2, 2, 3
10689 ; PWR8-LABEL: ugt_26_v4i32:
10691 ; PWR8-NEXT: vspltisw 3, 13
10692 ; PWR8-NEXT: vpopcntw 2, 2
10693 ; PWR8-NEXT: vadduwm 3, 3, 3
10694 ; PWR8-NEXT: vcmpgtuw 2, 2, 3
10697 ; PWR9-LABEL: ugt_26_v4i32:
10699 ; PWR9-NEXT: vspltisw 3, 13
10700 ; PWR9-NEXT: vpopcntw 2, 2
10701 ; PWR9-NEXT: vadduwm 3, 3, 3
10702 ; PWR9-NEXT: vcmpgtuw 2, 2, 3
10704 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
10705 %3 = icmp ugt <4 x i32> %2, <i32 26, i32 26, i32 26, i32 26>
10706 %4 = sext <4 x i1> %3 to <4 x i32>
10710 define <4 x i32> @ult_27_v4i32(<4 x i32> %0) {
10711 ; PWR5-LABEL: ult_27_v4i32:
10713 ; PWR5-NEXT: addis 3, 2, .LCPI91_0@toc@ha
10714 ; PWR5-NEXT: vspltisw 4, 1
10715 ; PWR5-NEXT: vxor 3, 3, 3
10716 ; PWR5-NEXT: addi 3, 3, .LCPI91_0@toc@l
10717 ; PWR5-NEXT: lvx 5, 0, 3
10718 ; PWR5-NEXT: addis 3, 2, .LCPI91_1@toc@ha
10719 ; PWR5-NEXT: addi 3, 3, .LCPI91_1@toc@l
10720 ; PWR5-NEXT: vspltisw 0, 2
10721 ; PWR5-NEXT: vsrw 4, 2, 4
10722 ; PWR5-NEXT: vand 4, 4, 5
10723 ; PWR5-NEXT: lvx 5, 0, 3
10724 ; PWR5-NEXT: vsubuwm 2, 2, 4
10725 ; PWR5-NEXT: vand 4, 2, 5
10726 ; PWR5-NEXT: vsrw 2, 2, 0
10727 ; PWR5-NEXT: vand 2, 2, 5
10728 ; PWR5-NEXT: vspltisw 5, 4
10729 ; PWR5-NEXT: vadduwm 2, 4, 2
10730 ; PWR5-NEXT: vsrw 4, 2, 5
10731 ; PWR5-NEXT: vspltisb 5, 15
10732 ; PWR5-NEXT: vadduwm 2, 2, 4
10733 ; PWR5-NEXT: vspltisb 4, 1
10734 ; PWR5-NEXT: vand 2, 2, 5
10735 ; PWR5-NEXT: vspltisw 5, -16
10736 ; PWR5-NEXT: vrlw 0, 4, 5
10737 ; PWR5-NEXT: vmulouh 4, 2, 4
10738 ; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
10739 ; PWR5-NEXT: vspltisw 3, 12
10740 ; PWR5-NEXT: vadduwm 3, 3, 3
10741 ; PWR5-NEXT: vslw 2, 2, 5
10742 ; PWR5-NEXT: vadduwm 2, 4, 2
10743 ; PWR5-NEXT: vsrw 2, 2, 3
10744 ; PWR5-NEXT: vspltisw 3, 11
10745 ; PWR5-NEXT: vsubuwm 3, 3, 5
10746 ; PWR5-NEXT: vcmpgtuw 2, 3, 2
10749 ; PWR6-LABEL: ult_27_v4i32:
10751 ; PWR6-NEXT: addis 3, 2, .LCPI91_0@toc@ha
10752 ; PWR6-NEXT: vspltisw 4, 1
10753 ; PWR6-NEXT: vxor 3, 3, 3
10754 ; PWR6-NEXT: addi 3, 3, .LCPI91_0@toc@l
10755 ; PWR6-NEXT: lvx 5, 0, 3
10756 ; PWR6-NEXT: addis 3, 2, .LCPI91_1@toc@ha
10757 ; PWR6-NEXT: addi 3, 3, .LCPI91_1@toc@l
10758 ; PWR6-NEXT: vspltisw 0, 2
10759 ; PWR6-NEXT: vsrw 4, 2, 4
10760 ; PWR6-NEXT: vand 4, 4, 5
10761 ; PWR6-NEXT: lvx 5, 0, 3
10762 ; PWR6-NEXT: vsubuwm 2, 2, 4
10763 ; PWR6-NEXT: vand 4, 2, 5
10764 ; PWR6-NEXT: vsrw 2, 2, 0
10765 ; PWR6-NEXT: vand 2, 2, 5
10766 ; PWR6-NEXT: vspltisw 5, 4
10767 ; PWR6-NEXT: vadduwm 2, 4, 2
10768 ; PWR6-NEXT: vsrw 4, 2, 5
10769 ; PWR6-NEXT: vspltisb 5, 15
10770 ; PWR6-NEXT: vadduwm 2, 2, 4
10771 ; PWR6-NEXT: vspltisb 4, 1
10772 ; PWR6-NEXT: vand 2, 2, 5
10773 ; PWR6-NEXT: vspltisw 5, -16
10774 ; PWR6-NEXT: vrlw 0, 4, 5
10775 ; PWR6-NEXT: vmulouh 4, 2, 4
10776 ; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
10777 ; PWR6-NEXT: vspltisw 3, 12
10778 ; PWR6-NEXT: vadduwm 3, 3, 3
10779 ; PWR6-NEXT: vslw 2, 2, 5
10780 ; PWR6-NEXT: vadduwm 2, 4, 2
10781 ; PWR6-NEXT: vsrw 2, 2, 3
10782 ; PWR6-NEXT: vspltisw 3, 11
10783 ; PWR6-NEXT: vsubuwm 3, 3, 5
10784 ; PWR6-NEXT: vcmpgtuw 2, 3, 2
10787 ; PWR7-LABEL: ult_27_v4i32:
10789 ; PWR7-NEXT: vspltisw 3, 1
10790 ; PWR7-NEXT: addis 3, 2, .LCPI91_0@toc@ha
10791 ; PWR7-NEXT: addi 3, 3, .LCPI91_0@toc@l
10792 ; PWR7-NEXT: vspltisw 4, 2
10793 ; PWR7-NEXT: lxvw4x 0, 0, 3
10794 ; PWR7-NEXT: addis 3, 2, .LCPI91_1@toc@ha
10795 ; PWR7-NEXT: vspltisw 5, -16
10796 ; PWR7-NEXT: vsrw 3, 2, 3
10797 ; PWR7-NEXT: addi 3, 3, .LCPI91_1@toc@l
10798 ; PWR7-NEXT: vspltisb 0, 15
10799 ; PWR7-NEXT: xxland 35, 35, 0
10800 ; PWR7-NEXT: lxvw4x 0, 0, 3
10801 ; PWR7-NEXT: vsubuwm 2, 2, 3
10802 ; PWR7-NEXT: vsrw 3, 2, 4
10803 ; PWR7-NEXT: xxland 34, 34, 0
10804 ; PWR7-NEXT: vspltisw 4, 4
10805 ; PWR7-NEXT: xxland 35, 35, 0
10806 ; PWR7-NEXT: vadduwm 2, 2, 3
10807 ; PWR7-NEXT: vsrw 3, 2, 4
10808 ; PWR7-NEXT: vspltisb 4, 1
10809 ; PWR7-NEXT: vrlw 1, 4, 5
10810 ; PWR7-NEXT: vadduwm 2, 2, 3
10811 ; PWR7-NEXT: xxlxor 35, 35, 35
10812 ; PWR7-NEXT: xxland 34, 34, 32
10813 ; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
10814 ; PWR7-NEXT: vmulouh 2, 2, 4
10815 ; PWR7-NEXT: vspltisw 4, 12
10816 ; PWR7-NEXT: vslw 3, 3, 5
10817 ; PWR7-NEXT: vadduwm 2, 2, 3
10818 ; PWR7-NEXT: vadduwm 3, 4, 4
10819 ; PWR7-NEXT: vsrw 2, 2, 3
10820 ; PWR7-NEXT: vspltisw 3, 11
10821 ; PWR7-NEXT: vsubuwm 3, 3, 5
10822 ; PWR7-NEXT: vcmpgtuw 2, 3, 2
10825 ; PWR8-LABEL: ult_27_v4i32:
10827 ; PWR8-NEXT: vspltisw 3, -16
10828 ; PWR8-NEXT: vspltisw 4, 11
10829 ; PWR8-NEXT: vpopcntw 2, 2
10830 ; PWR8-NEXT: vsubuwm 3, 4, 3
10831 ; PWR8-NEXT: vcmpgtuw 2, 3, 2
10834 ; PWR9-LABEL: ult_27_v4i32:
10836 ; PWR9-NEXT: vspltisw 3, -16
10837 ; PWR9-NEXT: vspltisw 4, 11
10838 ; PWR9-NEXT: vpopcntw 2, 2
10839 ; PWR9-NEXT: vsubuwm 3, 4, 3
10840 ; PWR9-NEXT: vcmpgtuw 2, 3, 2
10842 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
10843 %3 = icmp ult <4 x i32> %2, <i32 27, i32 27, i32 27, i32 27>
10844 %4 = sext <4 x i1> %3 to <4 x i32>
10848 define <4 x i32> @ugt_27_v4i32(<4 x i32> %0) {
10849 ; PWR5-LABEL: ugt_27_v4i32:
10851 ; PWR5-NEXT: addis 3, 2, .LCPI92_0@toc@ha
10852 ; PWR5-NEXT: vspltisw 4, 1
10853 ; PWR5-NEXT: vxor 3, 3, 3
10854 ; PWR5-NEXT: addi 3, 3, .LCPI92_0@toc@l
10855 ; PWR5-NEXT: lvx 5, 0, 3
10856 ; PWR5-NEXT: addis 3, 2, .LCPI92_1@toc@ha
10857 ; PWR5-NEXT: addi 3, 3, .LCPI92_1@toc@l
10858 ; PWR5-NEXT: vspltisw 0, 2
10859 ; PWR5-NEXT: vsrw 4, 2, 4
10860 ; PWR5-NEXT: vand 4, 4, 5
10861 ; PWR5-NEXT: lvx 5, 0, 3
10862 ; PWR5-NEXT: vsubuwm 2, 2, 4
10863 ; PWR5-NEXT: vand 4, 2, 5
10864 ; PWR5-NEXT: vsrw 2, 2, 0
10865 ; PWR5-NEXT: vand 2, 2, 5
10866 ; PWR5-NEXT: vspltisw 5, 4
10867 ; PWR5-NEXT: vadduwm 2, 4, 2
10868 ; PWR5-NEXT: vsrw 4, 2, 5
10869 ; PWR5-NEXT: vspltisb 5, 15
10870 ; PWR5-NEXT: vadduwm 2, 2, 4
10871 ; PWR5-NEXT: vspltisb 4, 1
10872 ; PWR5-NEXT: vand 2, 2, 5
10873 ; PWR5-NEXT: vspltisw 5, -16
10874 ; PWR5-NEXT: vrlw 0, 4, 5
10875 ; PWR5-NEXT: vmulouh 4, 2, 4
10876 ; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
10877 ; PWR5-NEXT: vspltisw 3, 12
10878 ; PWR5-NEXT: vadduwm 3, 3, 3
10879 ; PWR5-NEXT: vslw 2, 2, 5
10880 ; PWR5-NEXT: vadduwm 2, 4, 2
10881 ; PWR5-NEXT: vsrw 2, 2, 3
10882 ; PWR5-NEXT: vspltisw 3, 11
10883 ; PWR5-NEXT: vsubuwm 3, 3, 5
10884 ; PWR5-NEXT: vcmpgtuw 2, 2, 3
10887 ; PWR6-LABEL: ugt_27_v4i32:
10889 ; PWR6-NEXT: addis 3, 2, .LCPI92_0@toc@ha
10890 ; PWR6-NEXT: vspltisw 4, 1
10891 ; PWR6-NEXT: vxor 3, 3, 3
10892 ; PWR6-NEXT: addi 3, 3, .LCPI92_0@toc@l
10893 ; PWR6-NEXT: lvx 5, 0, 3
10894 ; PWR6-NEXT: addis 3, 2, .LCPI92_1@toc@ha
10895 ; PWR6-NEXT: addi 3, 3, .LCPI92_1@toc@l
10896 ; PWR6-NEXT: vspltisw 0, 2
10897 ; PWR6-NEXT: vsrw 4, 2, 4
10898 ; PWR6-NEXT: vand 4, 4, 5
10899 ; PWR6-NEXT: lvx 5, 0, 3
10900 ; PWR6-NEXT: vsubuwm 2, 2, 4
10901 ; PWR6-NEXT: vand 4, 2, 5
10902 ; PWR6-NEXT: vsrw 2, 2, 0
10903 ; PWR6-NEXT: vand 2, 2, 5
10904 ; PWR6-NEXT: vspltisw 5, 4
10905 ; PWR6-NEXT: vadduwm 2, 4, 2
10906 ; PWR6-NEXT: vsrw 4, 2, 5
10907 ; PWR6-NEXT: vspltisb 5, 15
10908 ; PWR6-NEXT: vadduwm 2, 2, 4
10909 ; PWR6-NEXT: vspltisb 4, 1
10910 ; PWR6-NEXT: vand 2, 2, 5
10911 ; PWR6-NEXT: vspltisw 5, -16
10912 ; PWR6-NEXT: vrlw 0, 4, 5
10913 ; PWR6-NEXT: vmulouh 4, 2, 4
10914 ; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
10915 ; PWR6-NEXT: vspltisw 3, 12
10916 ; PWR6-NEXT: vadduwm 3, 3, 3
10917 ; PWR6-NEXT: vslw 2, 2, 5
10918 ; PWR6-NEXT: vadduwm 2, 4, 2
10919 ; PWR6-NEXT: vsrw 2, 2, 3
10920 ; PWR6-NEXT: vspltisw 3, 11
10921 ; PWR6-NEXT: vsubuwm 3, 3, 5
10922 ; PWR6-NEXT: vcmpgtuw 2, 2, 3
10925 ; PWR7-LABEL: ugt_27_v4i32:
10927 ; PWR7-NEXT: vspltisw 3, 1
10928 ; PWR7-NEXT: addis 3, 2, .LCPI92_0@toc@ha
10929 ; PWR7-NEXT: addi 3, 3, .LCPI92_0@toc@l
10930 ; PWR7-NEXT: vspltisw 4, 2
10931 ; PWR7-NEXT: lxvw4x 0, 0, 3
10932 ; PWR7-NEXT: addis 3, 2, .LCPI92_1@toc@ha
10933 ; PWR7-NEXT: vspltisw 5, -16
10934 ; PWR7-NEXT: vsrw 3, 2, 3
10935 ; PWR7-NEXT: addi 3, 3, .LCPI92_1@toc@l
10936 ; PWR7-NEXT: vspltisb 0, 15
10937 ; PWR7-NEXT: xxland 35, 35, 0
10938 ; PWR7-NEXT: lxvw4x 0, 0, 3
10939 ; PWR7-NEXT: vsubuwm 2, 2, 3
10940 ; PWR7-NEXT: vsrw 3, 2, 4
10941 ; PWR7-NEXT: xxland 34, 34, 0
10942 ; PWR7-NEXT: vspltisw 4, 4
10943 ; PWR7-NEXT: xxland 35, 35, 0
10944 ; PWR7-NEXT: vadduwm 2, 2, 3
10945 ; PWR7-NEXT: vsrw 3, 2, 4
10946 ; PWR7-NEXT: vspltisb 4, 1
10947 ; PWR7-NEXT: vrlw 1, 4, 5
10948 ; PWR7-NEXT: vadduwm 2, 2, 3
10949 ; PWR7-NEXT: xxlxor 35, 35, 35
10950 ; PWR7-NEXT: xxland 34, 34, 32
10951 ; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
10952 ; PWR7-NEXT: vmulouh 2, 2, 4
10953 ; PWR7-NEXT: vspltisw 4, 12
10954 ; PWR7-NEXT: vslw 3, 3, 5
10955 ; PWR7-NEXT: vadduwm 2, 2, 3
10956 ; PWR7-NEXT: vadduwm 3, 4, 4
10957 ; PWR7-NEXT: vsrw 2, 2, 3
10958 ; PWR7-NEXT: vspltisw 3, 11
10959 ; PWR7-NEXT: vsubuwm 3, 3, 5
10960 ; PWR7-NEXT: vcmpgtuw 2, 2, 3
10963 ; PWR8-LABEL: ugt_27_v4i32:
10965 ; PWR8-NEXT: vspltisw 3, -16
10966 ; PWR8-NEXT: vspltisw 4, 11
10967 ; PWR8-NEXT: vpopcntw 2, 2
10968 ; PWR8-NEXT: vsubuwm 3, 4, 3
10969 ; PWR8-NEXT: vcmpgtuw 2, 2, 3
10972 ; PWR9-LABEL: ugt_27_v4i32:
10974 ; PWR9-NEXT: vspltisw 3, -16
10975 ; PWR9-NEXT: vspltisw 4, 11
10976 ; PWR9-NEXT: vpopcntw 2, 2
10977 ; PWR9-NEXT: vsubuwm 3, 4, 3
10978 ; PWR9-NEXT: vcmpgtuw 2, 2, 3
10980 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
10981 %3 = icmp ugt <4 x i32> %2, <i32 27, i32 27, i32 27, i32 27>
10982 %4 = sext <4 x i1> %3 to <4 x i32>
10986 define <4 x i32> @ult_28_v4i32(<4 x i32> %0) {
10987 ; PWR5-LABEL: ult_28_v4i32:
10989 ; PWR5-NEXT: addis 3, 2, .LCPI93_0@toc@ha
10990 ; PWR5-NEXT: vspltisw 4, 1
10991 ; PWR5-NEXT: vxor 3, 3, 3
10992 ; PWR5-NEXT: addi 3, 3, .LCPI93_0@toc@l
10993 ; PWR5-NEXT: lvx 5, 0, 3
10994 ; PWR5-NEXT: addis 3, 2, .LCPI93_1@toc@ha
10995 ; PWR5-NEXT: addi 3, 3, .LCPI93_1@toc@l
10996 ; PWR5-NEXT: vspltisw 0, 2
10997 ; PWR5-NEXT: vsrw 4, 2, 4
10998 ; PWR5-NEXT: vand 4, 4, 5
10999 ; PWR5-NEXT: lvx 5, 0, 3
11000 ; PWR5-NEXT: vsubuwm 2, 2, 4
11001 ; PWR5-NEXT: vand 4, 2, 5
11002 ; PWR5-NEXT: vsrw 2, 2, 0
11003 ; PWR5-NEXT: vand 2, 2, 5
11004 ; PWR5-NEXT: vspltisw 5, 4
11005 ; PWR5-NEXT: vadduwm 2, 4, 2
11006 ; PWR5-NEXT: vsrw 4, 2, 5
11007 ; PWR5-NEXT: vspltisb 5, 15
11008 ; PWR5-NEXT: vadduwm 2, 2, 4
11009 ; PWR5-NEXT: vspltisb 4, 1
11010 ; PWR5-NEXT: vand 2, 2, 5
11011 ; PWR5-NEXT: vspltisw 5, -16
11012 ; PWR5-NEXT: vrlw 0, 4, 5
11013 ; PWR5-NEXT: vmulouh 4, 2, 4
11014 ; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
11015 ; PWR5-NEXT: vspltisw 3, 12
11016 ; PWR5-NEXT: vadduwm 3, 3, 3
11017 ; PWR5-NEXT: vslw 2, 2, 5
11018 ; PWR5-NEXT: vadduwm 2, 4, 2
11019 ; PWR5-NEXT: vsrw 2, 2, 3
11020 ; PWR5-NEXT: vspltisw 3, 14
11021 ; PWR5-NEXT: vadduwm 3, 3, 3
11022 ; PWR5-NEXT: vcmpgtuw 2, 3, 2
11025 ; PWR6-LABEL: ult_28_v4i32:
11027 ; PWR6-NEXT: addis 3, 2, .LCPI93_0@toc@ha
11028 ; PWR6-NEXT: vspltisw 4, 1
11029 ; PWR6-NEXT: vxor 3, 3, 3
11030 ; PWR6-NEXT: addi 3, 3, .LCPI93_0@toc@l
11031 ; PWR6-NEXT: lvx 5, 0, 3
11032 ; PWR6-NEXT: addis 3, 2, .LCPI93_1@toc@ha
11033 ; PWR6-NEXT: addi 3, 3, .LCPI93_1@toc@l
11034 ; PWR6-NEXT: vspltisw 0, 2
11035 ; PWR6-NEXT: vsrw 4, 2, 4
11036 ; PWR6-NEXT: vand 4, 4, 5
11037 ; PWR6-NEXT: lvx 5, 0, 3
11038 ; PWR6-NEXT: vsubuwm 2, 2, 4
11039 ; PWR6-NEXT: vand 4, 2, 5
11040 ; PWR6-NEXT: vsrw 2, 2, 0
11041 ; PWR6-NEXT: vand 2, 2, 5
11042 ; PWR6-NEXT: vspltisw 5, 4
11043 ; PWR6-NEXT: vadduwm 2, 4, 2
11044 ; PWR6-NEXT: vsrw 4, 2, 5
11045 ; PWR6-NEXT: vspltisb 5, 15
11046 ; PWR6-NEXT: vadduwm 2, 2, 4
11047 ; PWR6-NEXT: vspltisb 4, 1
11048 ; PWR6-NEXT: vand 2, 2, 5
11049 ; PWR6-NEXT: vspltisw 5, -16
11050 ; PWR6-NEXT: vrlw 0, 4, 5
11051 ; PWR6-NEXT: vmulouh 4, 2, 4
11052 ; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
11053 ; PWR6-NEXT: vspltisw 3, 12
11054 ; PWR6-NEXT: vadduwm 3, 3, 3
11055 ; PWR6-NEXT: vslw 2, 2, 5
11056 ; PWR6-NEXT: vadduwm 2, 4, 2
11057 ; PWR6-NEXT: vsrw 2, 2, 3
11058 ; PWR6-NEXT: vspltisw 3, 14
11059 ; PWR6-NEXT: vadduwm 3, 3, 3
11060 ; PWR6-NEXT: vcmpgtuw 2, 3, 2
11063 ; PWR7-LABEL: ult_28_v4i32:
11065 ; PWR7-NEXT: vspltisw 3, 1
11066 ; PWR7-NEXT: addis 3, 2, .LCPI93_0@toc@ha
11067 ; PWR7-NEXT: addi 3, 3, .LCPI93_0@toc@l
11068 ; PWR7-NEXT: vspltisw 4, 2
11069 ; PWR7-NEXT: lxvw4x 0, 0, 3
11070 ; PWR7-NEXT: addis 3, 2, .LCPI93_1@toc@ha
11071 ; PWR7-NEXT: vspltisw 5, -16
11072 ; PWR7-NEXT: vsrw 3, 2, 3
11073 ; PWR7-NEXT: addi 3, 3, .LCPI93_1@toc@l
11074 ; PWR7-NEXT: vspltisb 0, 15
11075 ; PWR7-NEXT: xxland 35, 35, 0
11076 ; PWR7-NEXT: lxvw4x 0, 0, 3
11077 ; PWR7-NEXT: vsubuwm 2, 2, 3
11078 ; PWR7-NEXT: vsrw 3, 2, 4
11079 ; PWR7-NEXT: xxland 34, 34, 0
11080 ; PWR7-NEXT: vspltisw 4, 4
11081 ; PWR7-NEXT: xxland 35, 35, 0
11082 ; PWR7-NEXT: vadduwm 2, 2, 3
11083 ; PWR7-NEXT: vsrw 3, 2, 4
11084 ; PWR7-NEXT: vspltisb 4, 1
11085 ; PWR7-NEXT: vrlw 1, 4, 5
11086 ; PWR7-NEXT: vadduwm 2, 2, 3
11087 ; PWR7-NEXT: xxlxor 35, 35, 35
11088 ; PWR7-NEXT: xxland 34, 34, 32
11089 ; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
11090 ; PWR7-NEXT: vmulouh 2, 2, 4
11091 ; PWR7-NEXT: vspltisw 4, 12
11092 ; PWR7-NEXT: vslw 3, 3, 5
11093 ; PWR7-NEXT: vadduwm 2, 2, 3
11094 ; PWR7-NEXT: vadduwm 3, 4, 4
11095 ; PWR7-NEXT: vsrw 2, 2, 3
11096 ; PWR7-NEXT: vspltisw 3, 14
11097 ; PWR7-NEXT: vadduwm 3, 3, 3
11098 ; PWR7-NEXT: vcmpgtuw 2, 3, 2
11101 ; PWR8-LABEL: ult_28_v4i32:
11103 ; PWR8-NEXT: vspltisw 3, 14
11104 ; PWR8-NEXT: vpopcntw 2, 2
11105 ; PWR8-NEXT: vadduwm 3, 3, 3
11106 ; PWR8-NEXT: vcmpgtuw 2, 3, 2
11109 ; PWR9-LABEL: ult_28_v4i32:
11111 ; PWR9-NEXT: vspltisw 3, 14
11112 ; PWR9-NEXT: vpopcntw 2, 2
11113 ; PWR9-NEXT: vadduwm 3, 3, 3
11114 ; PWR9-NEXT: vcmpgtuw 2, 3, 2
11116 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
11117 %3 = icmp ult <4 x i32> %2, <i32 28, i32 28, i32 28, i32 28>
11118 %4 = sext <4 x i1> %3 to <4 x i32>
11122 define <4 x i32> @ugt_28_v4i32(<4 x i32> %0) {
11123 ; PWR5-LABEL: ugt_28_v4i32:
11125 ; PWR5-NEXT: addis 3, 2, .LCPI94_0@toc@ha
11126 ; PWR5-NEXT: vspltisw 4, 1
11127 ; PWR5-NEXT: vxor 3, 3, 3
11128 ; PWR5-NEXT: addi 3, 3, .LCPI94_0@toc@l
11129 ; PWR5-NEXT: lvx 5, 0, 3
11130 ; PWR5-NEXT: addis 3, 2, .LCPI94_1@toc@ha
11131 ; PWR5-NEXT: addi 3, 3, .LCPI94_1@toc@l
11132 ; PWR5-NEXT: vspltisw 0, 2
11133 ; PWR5-NEXT: vsrw 4, 2, 4
11134 ; PWR5-NEXT: vand 4, 4, 5
11135 ; PWR5-NEXT: lvx 5, 0, 3
11136 ; PWR5-NEXT: vsubuwm 2, 2, 4
11137 ; PWR5-NEXT: vand 4, 2, 5
11138 ; PWR5-NEXT: vsrw 2, 2, 0
11139 ; PWR5-NEXT: vand 2, 2, 5
11140 ; PWR5-NEXT: vspltisw 5, 4
11141 ; PWR5-NEXT: vadduwm 2, 4, 2
11142 ; PWR5-NEXT: vsrw 4, 2, 5
11143 ; PWR5-NEXT: vspltisb 5, 15
11144 ; PWR5-NEXT: vadduwm 2, 2, 4
11145 ; PWR5-NEXT: vspltisb 4, 1
11146 ; PWR5-NEXT: vand 2, 2, 5
11147 ; PWR5-NEXT: vspltisw 5, -16
11148 ; PWR5-NEXT: vrlw 0, 4, 5
11149 ; PWR5-NEXT: vmulouh 4, 2, 4
11150 ; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
11151 ; PWR5-NEXT: vspltisw 3, 12
11152 ; PWR5-NEXT: vadduwm 3, 3, 3
11153 ; PWR5-NEXT: vslw 2, 2, 5
11154 ; PWR5-NEXT: vadduwm 2, 4, 2
11155 ; PWR5-NEXT: vsrw 2, 2, 3
11156 ; PWR5-NEXT: vspltisw 3, 14
11157 ; PWR5-NEXT: vadduwm 3, 3, 3
11158 ; PWR5-NEXT: vcmpgtuw 2, 2, 3
11161 ; PWR6-LABEL: ugt_28_v4i32:
11163 ; PWR6-NEXT: addis 3, 2, .LCPI94_0@toc@ha
11164 ; PWR6-NEXT: vspltisw 4, 1
11165 ; PWR6-NEXT: vxor 3, 3, 3
11166 ; PWR6-NEXT: addi 3, 3, .LCPI94_0@toc@l
11167 ; PWR6-NEXT: lvx 5, 0, 3
11168 ; PWR6-NEXT: addis 3, 2, .LCPI94_1@toc@ha
11169 ; PWR6-NEXT: addi 3, 3, .LCPI94_1@toc@l
11170 ; PWR6-NEXT: vspltisw 0, 2
11171 ; PWR6-NEXT: vsrw 4, 2, 4
11172 ; PWR6-NEXT: vand 4, 4, 5
11173 ; PWR6-NEXT: lvx 5, 0, 3
11174 ; PWR6-NEXT: vsubuwm 2, 2, 4
11175 ; PWR6-NEXT: vand 4, 2, 5
11176 ; PWR6-NEXT: vsrw 2, 2, 0
11177 ; PWR6-NEXT: vand 2, 2, 5
11178 ; PWR6-NEXT: vspltisw 5, 4
11179 ; PWR6-NEXT: vadduwm 2, 4, 2
11180 ; PWR6-NEXT: vsrw 4, 2, 5
11181 ; PWR6-NEXT: vspltisb 5, 15
11182 ; PWR6-NEXT: vadduwm 2, 2, 4
11183 ; PWR6-NEXT: vspltisb 4, 1
11184 ; PWR6-NEXT: vand 2, 2, 5
11185 ; PWR6-NEXT: vspltisw 5, -16
11186 ; PWR6-NEXT: vrlw 0, 4, 5
11187 ; PWR6-NEXT: vmulouh 4, 2, 4
11188 ; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
11189 ; PWR6-NEXT: vspltisw 3, 12
11190 ; PWR6-NEXT: vadduwm 3, 3, 3
11191 ; PWR6-NEXT: vslw 2, 2, 5
11192 ; PWR6-NEXT: vadduwm 2, 4, 2
11193 ; PWR6-NEXT: vsrw 2, 2, 3
11194 ; PWR6-NEXT: vspltisw 3, 14
11195 ; PWR6-NEXT: vadduwm 3, 3, 3
11196 ; PWR6-NEXT: vcmpgtuw 2, 2, 3
11199 ; PWR7-LABEL: ugt_28_v4i32:
11201 ; PWR7-NEXT: vspltisw 3, 1
11202 ; PWR7-NEXT: addis 3, 2, .LCPI94_0@toc@ha
11203 ; PWR7-NEXT: addi 3, 3, .LCPI94_0@toc@l
11204 ; PWR7-NEXT: vspltisw 4, 2
11205 ; PWR7-NEXT: lxvw4x 0, 0, 3
11206 ; PWR7-NEXT: addis 3, 2, .LCPI94_1@toc@ha
11207 ; PWR7-NEXT: vspltisw 5, -16
11208 ; PWR7-NEXT: vsrw 3, 2, 3
11209 ; PWR7-NEXT: addi 3, 3, .LCPI94_1@toc@l
11210 ; PWR7-NEXT: vspltisb 0, 15
11211 ; PWR7-NEXT: xxland 35, 35, 0
11212 ; PWR7-NEXT: lxvw4x 0, 0, 3
11213 ; PWR7-NEXT: vsubuwm 2, 2, 3
11214 ; PWR7-NEXT: vsrw 3, 2, 4
11215 ; PWR7-NEXT: xxland 34, 34, 0
11216 ; PWR7-NEXT: vspltisw 4, 4
11217 ; PWR7-NEXT: xxland 35, 35, 0
11218 ; PWR7-NEXT: vadduwm 2, 2, 3
11219 ; PWR7-NEXT: vsrw 3, 2, 4
11220 ; PWR7-NEXT: vspltisb 4, 1
11221 ; PWR7-NEXT: vrlw 1, 4, 5
11222 ; PWR7-NEXT: vadduwm 2, 2, 3
11223 ; PWR7-NEXT: xxlxor 35, 35, 35
11224 ; PWR7-NEXT: xxland 34, 34, 32
11225 ; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
11226 ; PWR7-NEXT: vmulouh 2, 2, 4
11227 ; PWR7-NEXT: vspltisw 4, 12
11228 ; PWR7-NEXT: vslw 3, 3, 5
11229 ; PWR7-NEXT: vadduwm 2, 2, 3
11230 ; PWR7-NEXT: vadduwm 3, 4, 4
11231 ; PWR7-NEXT: vsrw 2, 2, 3
11232 ; PWR7-NEXT: vspltisw 3, 14
11233 ; PWR7-NEXT: vadduwm 3, 3, 3
11234 ; PWR7-NEXT: vcmpgtuw 2, 2, 3
11237 ; PWR8-LABEL: ugt_28_v4i32:
11239 ; PWR8-NEXT: vspltisw 3, 14
11240 ; PWR8-NEXT: vpopcntw 2, 2
11241 ; PWR8-NEXT: vadduwm 3, 3, 3
11242 ; PWR8-NEXT: vcmpgtuw 2, 2, 3
11245 ; PWR9-LABEL: ugt_28_v4i32:
11247 ; PWR9-NEXT: vspltisw 3, 14
11248 ; PWR9-NEXT: vpopcntw 2, 2
11249 ; PWR9-NEXT: vadduwm 3, 3, 3
11250 ; PWR9-NEXT: vcmpgtuw 2, 2, 3
11252 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
11253 %3 = icmp ugt <4 x i32> %2, <i32 28, i32 28, i32 28, i32 28>
11254 %4 = sext <4 x i1> %3 to <4 x i32>
11258 define <4 x i32> @ult_29_v4i32(<4 x i32> %0) {
11259 ; PWR5-LABEL: ult_29_v4i32:
11261 ; PWR5-NEXT: addis 3, 2, .LCPI95_0@toc@ha
11262 ; PWR5-NEXT: vspltisw 4, 1
11263 ; PWR5-NEXT: vxor 3, 3, 3
11264 ; PWR5-NEXT: addi 3, 3, .LCPI95_0@toc@l
11265 ; PWR5-NEXT: lvx 5, 0, 3
11266 ; PWR5-NEXT: addis 3, 2, .LCPI95_1@toc@ha
11267 ; PWR5-NEXT: addi 3, 3, .LCPI95_1@toc@l
11268 ; PWR5-NEXT: vspltisw 0, 2
11269 ; PWR5-NEXT: vsrw 4, 2, 4
11270 ; PWR5-NEXT: vand 4, 4, 5
11271 ; PWR5-NEXT: lvx 5, 0, 3
11272 ; PWR5-NEXT: vsubuwm 2, 2, 4
11273 ; PWR5-NEXT: vand 4, 2, 5
11274 ; PWR5-NEXT: vsrw 2, 2, 0
11275 ; PWR5-NEXT: vand 2, 2, 5
11276 ; PWR5-NEXT: vspltisw 5, 4
11277 ; PWR5-NEXT: vadduwm 2, 4, 2
11278 ; PWR5-NEXT: vsrw 4, 2, 5
11279 ; PWR5-NEXT: vspltisb 5, 15
11280 ; PWR5-NEXT: vadduwm 2, 2, 4
11281 ; PWR5-NEXT: vspltisb 4, 1
11282 ; PWR5-NEXT: vand 2, 2, 5
11283 ; PWR5-NEXT: vspltisw 5, -16
11284 ; PWR5-NEXT: vrlw 0, 4, 5
11285 ; PWR5-NEXT: vmulouh 4, 2, 4
11286 ; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
11287 ; PWR5-NEXT: vspltisw 3, 12
11288 ; PWR5-NEXT: vadduwm 3, 3, 3
11289 ; PWR5-NEXT: vslw 2, 2, 5
11290 ; PWR5-NEXT: vadduwm 2, 4, 2
11291 ; PWR5-NEXT: vsrw 2, 2, 3
11292 ; PWR5-NEXT: vspltisw 3, 13
11293 ; PWR5-NEXT: vsubuwm 3, 3, 5
11294 ; PWR5-NEXT: vcmpgtuw 2, 3, 2
11297 ; PWR6-LABEL: ult_29_v4i32:
11299 ; PWR6-NEXT: addis 3, 2, .LCPI95_0@toc@ha
11300 ; PWR6-NEXT: vspltisw 4, 1
11301 ; PWR6-NEXT: vxor 3, 3, 3
11302 ; PWR6-NEXT: addi 3, 3, .LCPI95_0@toc@l
11303 ; PWR6-NEXT: lvx 5, 0, 3
11304 ; PWR6-NEXT: addis 3, 2, .LCPI95_1@toc@ha
11305 ; PWR6-NEXT: addi 3, 3, .LCPI95_1@toc@l
11306 ; PWR6-NEXT: vspltisw 0, 2
11307 ; PWR6-NEXT: vsrw 4, 2, 4
11308 ; PWR6-NEXT: vand 4, 4, 5
11309 ; PWR6-NEXT: lvx 5, 0, 3
11310 ; PWR6-NEXT: vsubuwm 2, 2, 4
11311 ; PWR6-NEXT: vand 4, 2, 5
11312 ; PWR6-NEXT: vsrw 2, 2, 0
11313 ; PWR6-NEXT: vand 2, 2, 5
11314 ; PWR6-NEXT: vspltisw 5, 4
11315 ; PWR6-NEXT: vadduwm 2, 4, 2
11316 ; PWR6-NEXT: vsrw 4, 2, 5
11317 ; PWR6-NEXT: vspltisb 5, 15
11318 ; PWR6-NEXT: vadduwm 2, 2, 4
11319 ; PWR6-NEXT: vspltisb 4, 1
11320 ; PWR6-NEXT: vand 2, 2, 5
11321 ; PWR6-NEXT: vspltisw 5, -16
11322 ; PWR6-NEXT: vrlw 0, 4, 5
11323 ; PWR6-NEXT: vmulouh 4, 2, 4
11324 ; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
11325 ; PWR6-NEXT: vspltisw 3, 12
11326 ; PWR6-NEXT: vadduwm 3, 3, 3
11327 ; PWR6-NEXT: vslw 2, 2, 5
11328 ; PWR6-NEXT: vadduwm 2, 4, 2
11329 ; PWR6-NEXT: vsrw 2, 2, 3
11330 ; PWR6-NEXT: vspltisw 3, 13
11331 ; PWR6-NEXT: vsubuwm 3, 3, 5
11332 ; PWR6-NEXT: vcmpgtuw 2, 3, 2
11335 ; PWR7-LABEL: ult_29_v4i32:
11337 ; PWR7-NEXT: vspltisw 3, 1
11338 ; PWR7-NEXT: addis 3, 2, .LCPI95_0@toc@ha
11339 ; PWR7-NEXT: addi 3, 3, .LCPI95_0@toc@l
11340 ; PWR7-NEXT: vspltisw 4, 2
11341 ; PWR7-NEXT: lxvw4x 0, 0, 3
11342 ; PWR7-NEXT: addis 3, 2, .LCPI95_1@toc@ha
11343 ; PWR7-NEXT: vspltisw 5, -16
11344 ; PWR7-NEXT: vsrw 3, 2, 3
11345 ; PWR7-NEXT: addi 3, 3, .LCPI95_1@toc@l
11346 ; PWR7-NEXT: vspltisb 0, 15
11347 ; PWR7-NEXT: xxland 35, 35, 0
11348 ; PWR7-NEXT: lxvw4x 0, 0, 3
11349 ; PWR7-NEXT: vsubuwm 2, 2, 3
11350 ; PWR7-NEXT: vsrw 3, 2, 4
11351 ; PWR7-NEXT: xxland 34, 34, 0
11352 ; PWR7-NEXT: vspltisw 4, 4
11353 ; PWR7-NEXT: xxland 35, 35, 0
11354 ; PWR7-NEXT: vadduwm 2, 2, 3
11355 ; PWR7-NEXT: vsrw 3, 2, 4
11356 ; PWR7-NEXT: vspltisb 4, 1
11357 ; PWR7-NEXT: vrlw 1, 4, 5
11358 ; PWR7-NEXT: vadduwm 2, 2, 3
11359 ; PWR7-NEXT: xxlxor 35, 35, 35
11360 ; PWR7-NEXT: xxland 34, 34, 32
11361 ; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
11362 ; PWR7-NEXT: vmulouh 2, 2, 4
11363 ; PWR7-NEXT: vspltisw 4, 12
11364 ; PWR7-NEXT: vslw 3, 3, 5
11365 ; PWR7-NEXT: vadduwm 2, 2, 3
11366 ; PWR7-NEXT: vadduwm 3, 4, 4
11367 ; PWR7-NEXT: vsrw 2, 2, 3
11368 ; PWR7-NEXT: vspltisw 3, 13
11369 ; PWR7-NEXT: vsubuwm 3, 3, 5
11370 ; PWR7-NEXT: vcmpgtuw 2, 3, 2
11373 ; PWR8-LABEL: ult_29_v4i32:
11375 ; PWR8-NEXT: vspltisw 3, -16
11376 ; PWR8-NEXT: vspltisw 4, 13
11377 ; PWR8-NEXT: vpopcntw 2, 2
11378 ; PWR8-NEXT: vsubuwm 3, 4, 3
11379 ; PWR8-NEXT: vcmpgtuw 2, 3, 2
11382 ; PWR9-LABEL: ult_29_v4i32:
11384 ; PWR9-NEXT: vspltisw 3, -16
11385 ; PWR9-NEXT: vspltisw 4, 13
11386 ; PWR9-NEXT: vpopcntw 2, 2
11387 ; PWR9-NEXT: vsubuwm 3, 4, 3
11388 ; PWR9-NEXT: vcmpgtuw 2, 3, 2
11390 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
11391 %3 = icmp ult <4 x i32> %2, <i32 29, i32 29, i32 29, i32 29>
11392 %4 = sext <4 x i1> %3 to <4 x i32>
11396 define <4 x i32> @ugt_29_v4i32(<4 x i32> %0) {
11397 ; PWR5-LABEL: ugt_29_v4i32:
11399 ; PWR5-NEXT: addis 3, 2, .LCPI96_0@toc@ha
11400 ; PWR5-NEXT: vspltisw 4, 1
11401 ; PWR5-NEXT: vxor 3, 3, 3
11402 ; PWR5-NEXT: addi 3, 3, .LCPI96_0@toc@l
11403 ; PWR5-NEXT: lvx 5, 0, 3
11404 ; PWR5-NEXT: addis 3, 2, .LCPI96_1@toc@ha
11405 ; PWR5-NEXT: addi 3, 3, .LCPI96_1@toc@l
11406 ; PWR5-NEXT: vspltisw 0, 2
11407 ; PWR5-NEXT: vsrw 4, 2, 4
11408 ; PWR5-NEXT: vand 4, 4, 5
11409 ; PWR5-NEXT: lvx 5, 0, 3
11410 ; PWR5-NEXT: vsubuwm 2, 2, 4
11411 ; PWR5-NEXT: vand 4, 2, 5
11412 ; PWR5-NEXT: vsrw 2, 2, 0
11413 ; PWR5-NEXT: vand 2, 2, 5
11414 ; PWR5-NEXT: vspltisw 5, 4
11415 ; PWR5-NEXT: vadduwm 2, 4, 2
11416 ; PWR5-NEXT: vsrw 4, 2, 5
11417 ; PWR5-NEXT: vspltisb 5, 15
11418 ; PWR5-NEXT: vadduwm 2, 2, 4
11419 ; PWR5-NEXT: vspltisb 4, 1
11420 ; PWR5-NEXT: vand 2, 2, 5
11421 ; PWR5-NEXT: vspltisw 5, -16
11422 ; PWR5-NEXT: vrlw 0, 4, 5
11423 ; PWR5-NEXT: vmulouh 4, 2, 4
11424 ; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
11425 ; PWR5-NEXT: vspltisw 3, 12
11426 ; PWR5-NEXT: vadduwm 3, 3, 3
11427 ; PWR5-NEXT: vslw 2, 2, 5
11428 ; PWR5-NEXT: vadduwm 2, 4, 2
11429 ; PWR5-NEXT: vsrw 2, 2, 3
11430 ; PWR5-NEXT: vspltisw 3, 13
11431 ; PWR5-NEXT: vsubuwm 3, 3, 5
11432 ; PWR5-NEXT: vcmpgtuw 2, 2, 3
11435 ; PWR6-LABEL: ugt_29_v4i32:
11437 ; PWR6-NEXT: addis 3, 2, .LCPI96_0@toc@ha
11438 ; PWR6-NEXT: vspltisw 4, 1
11439 ; PWR6-NEXT: vxor 3, 3, 3
11440 ; PWR6-NEXT: addi 3, 3, .LCPI96_0@toc@l
11441 ; PWR6-NEXT: lvx 5, 0, 3
11442 ; PWR6-NEXT: addis 3, 2, .LCPI96_1@toc@ha
11443 ; PWR6-NEXT: addi 3, 3, .LCPI96_1@toc@l
11444 ; PWR6-NEXT: vspltisw 0, 2
11445 ; PWR6-NEXT: vsrw 4, 2, 4
11446 ; PWR6-NEXT: vand 4, 4, 5
11447 ; PWR6-NEXT: lvx 5, 0, 3
11448 ; PWR6-NEXT: vsubuwm 2, 2, 4
11449 ; PWR6-NEXT: vand 4, 2, 5
11450 ; PWR6-NEXT: vsrw 2, 2, 0
11451 ; PWR6-NEXT: vand 2, 2, 5
11452 ; PWR6-NEXT: vspltisw 5, 4
11453 ; PWR6-NEXT: vadduwm 2, 4, 2
11454 ; PWR6-NEXT: vsrw 4, 2, 5
11455 ; PWR6-NEXT: vspltisb 5, 15
11456 ; PWR6-NEXT: vadduwm 2, 2, 4
11457 ; PWR6-NEXT: vspltisb 4, 1
11458 ; PWR6-NEXT: vand 2, 2, 5
11459 ; PWR6-NEXT: vspltisw 5, -16
11460 ; PWR6-NEXT: vrlw 0, 4, 5
11461 ; PWR6-NEXT: vmulouh 4, 2, 4
11462 ; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
11463 ; PWR6-NEXT: vspltisw 3, 12
11464 ; PWR6-NEXT: vadduwm 3, 3, 3
11465 ; PWR6-NEXT: vslw 2, 2, 5
11466 ; PWR6-NEXT: vadduwm 2, 4, 2
11467 ; PWR6-NEXT: vsrw 2, 2, 3
11468 ; PWR6-NEXT: vspltisw 3, 13
11469 ; PWR6-NEXT: vsubuwm 3, 3, 5
11470 ; PWR6-NEXT: vcmpgtuw 2, 2, 3
11473 ; PWR7-LABEL: ugt_29_v4i32:
11475 ; PWR7-NEXT: vspltisw 3, 1
11476 ; PWR7-NEXT: addis 3, 2, .LCPI96_0@toc@ha
11477 ; PWR7-NEXT: addi 3, 3, .LCPI96_0@toc@l
11478 ; PWR7-NEXT: vspltisw 4, 2
11479 ; PWR7-NEXT: lxvw4x 0, 0, 3
11480 ; PWR7-NEXT: addis 3, 2, .LCPI96_1@toc@ha
11481 ; PWR7-NEXT: vspltisw 5, -16
11482 ; PWR7-NEXT: vsrw 3, 2, 3
11483 ; PWR7-NEXT: addi 3, 3, .LCPI96_1@toc@l
11484 ; PWR7-NEXT: vspltisb 0, 15
11485 ; PWR7-NEXT: xxland 35, 35, 0
11486 ; PWR7-NEXT: lxvw4x 0, 0, 3
11487 ; PWR7-NEXT: vsubuwm 2, 2, 3
11488 ; PWR7-NEXT: vsrw 3, 2, 4
11489 ; PWR7-NEXT: xxland 34, 34, 0
11490 ; PWR7-NEXT: vspltisw 4, 4
11491 ; PWR7-NEXT: xxland 35, 35, 0
11492 ; PWR7-NEXT: vadduwm 2, 2, 3
11493 ; PWR7-NEXT: vsrw 3, 2, 4
11494 ; PWR7-NEXT: vspltisb 4, 1
11495 ; PWR7-NEXT: vrlw 1, 4, 5
11496 ; PWR7-NEXT: vadduwm 2, 2, 3
11497 ; PWR7-NEXT: xxlxor 35, 35, 35
11498 ; PWR7-NEXT: xxland 34, 34, 32
11499 ; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
11500 ; PWR7-NEXT: vmulouh 2, 2, 4
11501 ; PWR7-NEXT: vspltisw 4, 12
11502 ; PWR7-NEXT: vslw 3, 3, 5
11503 ; PWR7-NEXT: vadduwm 2, 2, 3
11504 ; PWR7-NEXT: vadduwm 3, 4, 4
11505 ; PWR7-NEXT: vsrw 2, 2, 3
11506 ; PWR7-NEXT: vspltisw 3, 13
11507 ; PWR7-NEXT: vsubuwm 3, 3, 5
11508 ; PWR7-NEXT: vcmpgtuw 2, 2, 3
11511 ; PWR8-LABEL: ugt_29_v4i32:
11513 ; PWR8-NEXT: vspltisw 3, -16
11514 ; PWR8-NEXT: vspltisw 4, 13
11515 ; PWR8-NEXT: vpopcntw 2, 2
11516 ; PWR8-NEXT: vsubuwm 3, 4, 3
11517 ; PWR8-NEXT: vcmpgtuw 2, 2, 3
11520 ; PWR9-LABEL: ugt_29_v4i32:
11522 ; PWR9-NEXT: vspltisw 3, -16
11523 ; PWR9-NEXT: vspltisw 4, 13
11524 ; PWR9-NEXT: vpopcntw 2, 2
11525 ; PWR9-NEXT: vsubuwm 3, 4, 3
11526 ; PWR9-NEXT: vcmpgtuw 2, 2, 3
11528 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
11529 %3 = icmp ugt <4 x i32> %2, <i32 29, i32 29, i32 29, i32 29>
11530 %4 = sext <4 x i1> %3 to <4 x i32>
11534 define <4 x i32> @ult_30_v4i32(<4 x i32> %0) {
11535 ; PWR5-LABEL: ult_30_v4i32:
11537 ; PWR5-NEXT: addis 3, 2, .LCPI97_0@toc@ha
11538 ; PWR5-NEXT: vspltisw 4, 1
11539 ; PWR5-NEXT: vxor 3, 3, 3
11540 ; PWR5-NEXT: addi 3, 3, .LCPI97_0@toc@l
11541 ; PWR5-NEXT: lvx 5, 0, 3
11542 ; PWR5-NEXT: addis 3, 2, .LCPI97_1@toc@ha
11543 ; PWR5-NEXT: addi 3, 3, .LCPI97_1@toc@l
11544 ; PWR5-NEXT: vspltisw 0, 2
11545 ; PWR5-NEXT: vsrw 4, 2, 4
11546 ; PWR5-NEXT: vand 4, 4, 5
11547 ; PWR5-NEXT: lvx 5, 0, 3
11548 ; PWR5-NEXT: vsubuwm 2, 2, 4
11549 ; PWR5-NEXT: vand 4, 2, 5
11550 ; PWR5-NEXT: vsrw 2, 2, 0
11551 ; PWR5-NEXT: vand 2, 2, 5
11552 ; PWR5-NEXT: vspltisw 5, 4
11553 ; PWR5-NEXT: vadduwm 2, 4, 2
11554 ; PWR5-NEXT: vsrw 4, 2, 5
11555 ; PWR5-NEXT: vspltisb 5, 15
11556 ; PWR5-NEXT: vadduwm 2, 2, 4
11557 ; PWR5-NEXT: vspltisb 4, 1
11558 ; PWR5-NEXT: vand 2, 2, 5
11559 ; PWR5-NEXT: vspltisw 5, -16
11560 ; PWR5-NEXT: vrlw 0, 4, 5
11561 ; PWR5-NEXT: vmulouh 4, 2, 4
11562 ; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
11563 ; PWR5-NEXT: vspltisw 3, 12
11564 ; PWR5-NEXT: vadduwm 3, 3, 3
11565 ; PWR5-NEXT: vslw 2, 2, 5
11566 ; PWR5-NEXT: vadduwm 2, 4, 2
11567 ; PWR5-NEXT: vsrw 2, 2, 3
11568 ; PWR5-NEXT: vspltisw 3, 15
11569 ; PWR5-NEXT: vadduwm 3, 3, 3
11570 ; PWR5-NEXT: vcmpgtuw 2, 3, 2
11573 ; PWR6-LABEL: ult_30_v4i32:
11575 ; PWR6-NEXT: addis 3, 2, .LCPI97_0@toc@ha
11576 ; PWR6-NEXT: vspltisw 4, 1
11577 ; PWR6-NEXT: vxor 3, 3, 3
11578 ; PWR6-NEXT: addi 3, 3, .LCPI97_0@toc@l
11579 ; PWR6-NEXT: lvx 5, 0, 3
11580 ; PWR6-NEXT: addis 3, 2, .LCPI97_1@toc@ha
11581 ; PWR6-NEXT: addi 3, 3, .LCPI97_1@toc@l
11582 ; PWR6-NEXT: vspltisw 0, 2
11583 ; PWR6-NEXT: vsrw 4, 2, 4
11584 ; PWR6-NEXT: vand 4, 4, 5
11585 ; PWR6-NEXT: lvx 5, 0, 3
11586 ; PWR6-NEXT: vsubuwm 2, 2, 4
11587 ; PWR6-NEXT: vand 4, 2, 5
11588 ; PWR6-NEXT: vsrw 2, 2, 0
11589 ; PWR6-NEXT: vand 2, 2, 5
11590 ; PWR6-NEXT: vspltisw 5, 4
11591 ; PWR6-NEXT: vadduwm 2, 4, 2
11592 ; PWR6-NEXT: vsrw 4, 2, 5
11593 ; PWR6-NEXT: vspltisb 5, 15
11594 ; PWR6-NEXT: vadduwm 2, 2, 4
11595 ; PWR6-NEXT: vspltisb 4, 1
11596 ; PWR6-NEXT: vand 2, 2, 5
11597 ; PWR6-NEXT: vspltisw 5, -16
11598 ; PWR6-NEXT: vrlw 0, 4, 5
11599 ; PWR6-NEXT: vmulouh 4, 2, 4
11600 ; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
11601 ; PWR6-NEXT: vspltisw 3, 12
11602 ; PWR6-NEXT: vadduwm 3, 3, 3
11603 ; PWR6-NEXT: vslw 2, 2, 5
11604 ; PWR6-NEXT: vadduwm 2, 4, 2
11605 ; PWR6-NEXT: vsrw 2, 2, 3
11606 ; PWR6-NEXT: vspltisw 3, 15
11607 ; PWR6-NEXT: vadduwm 3, 3, 3
11608 ; PWR6-NEXT: vcmpgtuw 2, 3, 2
11611 ; PWR7-LABEL: ult_30_v4i32:
11613 ; PWR7-NEXT: vspltisw 3, 1
11614 ; PWR7-NEXT: addis 3, 2, .LCPI97_0@toc@ha
11615 ; PWR7-NEXT: addi 3, 3, .LCPI97_0@toc@l
11616 ; PWR7-NEXT: vspltisw 4, 2
11617 ; PWR7-NEXT: lxvw4x 0, 0, 3
11618 ; PWR7-NEXT: addis 3, 2, .LCPI97_1@toc@ha
11619 ; PWR7-NEXT: vspltisw 5, -16
11620 ; PWR7-NEXT: vsrw 3, 2, 3
11621 ; PWR7-NEXT: addi 3, 3, .LCPI97_1@toc@l
11622 ; PWR7-NEXT: vspltisb 0, 15
11623 ; PWR7-NEXT: xxland 35, 35, 0
11624 ; PWR7-NEXT: lxvw4x 0, 0, 3
11625 ; PWR7-NEXT: vsubuwm 2, 2, 3
11626 ; PWR7-NEXT: vsrw 3, 2, 4
11627 ; PWR7-NEXT: xxland 34, 34, 0
11628 ; PWR7-NEXT: vspltisw 4, 4
11629 ; PWR7-NEXT: xxland 35, 35, 0
11630 ; PWR7-NEXT: vadduwm 2, 2, 3
11631 ; PWR7-NEXT: vsrw 3, 2, 4
11632 ; PWR7-NEXT: vspltisb 4, 1
11633 ; PWR7-NEXT: vrlw 1, 4, 5
11634 ; PWR7-NEXT: vadduwm 2, 2, 3
11635 ; PWR7-NEXT: xxlxor 35, 35, 35
11636 ; PWR7-NEXT: xxland 34, 34, 32
11637 ; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
11638 ; PWR7-NEXT: vmulouh 2, 2, 4
11639 ; PWR7-NEXT: vspltisw 4, 12
11640 ; PWR7-NEXT: vslw 3, 3, 5
11641 ; PWR7-NEXT: vadduwm 2, 2, 3
11642 ; PWR7-NEXT: vadduwm 3, 4, 4
11643 ; PWR7-NEXT: vsrw 2, 2, 3
11644 ; PWR7-NEXT: vspltisw 3, 15
11645 ; PWR7-NEXT: vadduwm 3, 3, 3
11646 ; PWR7-NEXT: vcmpgtuw 2, 3, 2
11649 ; PWR8-LABEL: ult_30_v4i32:
11651 ; PWR8-NEXT: vspltisw 3, 15
11652 ; PWR8-NEXT: vpopcntw 2, 2
11653 ; PWR8-NEXT: vadduwm 3, 3, 3
11654 ; PWR8-NEXT: vcmpgtuw 2, 3, 2
11657 ; PWR9-LABEL: ult_30_v4i32:
11659 ; PWR9-NEXT: vspltisw 3, 15
11660 ; PWR9-NEXT: vpopcntw 2, 2
11661 ; PWR9-NEXT: vadduwm 3, 3, 3
11662 ; PWR9-NEXT: vcmpgtuw 2, 3, 2
11664 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
11665 %3 = icmp ult <4 x i32> %2, <i32 30, i32 30, i32 30, i32 30>
11666 %4 = sext <4 x i1> %3 to <4 x i32>
11670 define <4 x i32> @ugt_30_v4i32(<4 x i32> %0) {
11671 ; PWR5-LABEL: ugt_30_v4i32:
11673 ; PWR5-NEXT: addis 3, 2, .LCPI98_0@toc@ha
11674 ; PWR5-NEXT: vspltisw 4, 1
11675 ; PWR5-NEXT: vxor 3, 3, 3
11676 ; PWR5-NEXT: addi 3, 3, .LCPI98_0@toc@l
11677 ; PWR5-NEXT: lvx 5, 0, 3
11678 ; PWR5-NEXT: addis 3, 2, .LCPI98_1@toc@ha
11679 ; PWR5-NEXT: addi 3, 3, .LCPI98_1@toc@l
11680 ; PWR5-NEXT: vspltisw 0, 2
11681 ; PWR5-NEXT: vsrw 4, 2, 4
11682 ; PWR5-NEXT: vand 4, 4, 5
11683 ; PWR5-NEXT: lvx 5, 0, 3
11684 ; PWR5-NEXT: vsubuwm 2, 2, 4
11685 ; PWR5-NEXT: vand 4, 2, 5
11686 ; PWR5-NEXT: vsrw 2, 2, 0
11687 ; PWR5-NEXT: vand 2, 2, 5
11688 ; PWR5-NEXT: vspltisw 5, 4
11689 ; PWR5-NEXT: vadduwm 2, 4, 2
11690 ; PWR5-NEXT: vsrw 4, 2, 5
11691 ; PWR5-NEXT: vspltisb 5, 15
11692 ; PWR5-NEXT: vadduwm 2, 2, 4
11693 ; PWR5-NEXT: vspltisb 4, 1
11694 ; PWR5-NEXT: vand 2, 2, 5
11695 ; PWR5-NEXT: vspltisw 5, -16
11696 ; PWR5-NEXT: vrlw 0, 4, 5
11697 ; PWR5-NEXT: vmulouh 4, 2, 4
11698 ; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
11699 ; PWR5-NEXT: vspltisw 3, 12
11700 ; PWR5-NEXT: vadduwm 3, 3, 3
11701 ; PWR5-NEXT: vslw 2, 2, 5
11702 ; PWR5-NEXT: vadduwm 2, 4, 2
11703 ; PWR5-NEXT: vsrw 2, 2, 3
11704 ; PWR5-NEXT: vspltisw 3, 15
11705 ; PWR5-NEXT: vadduwm 3, 3, 3
11706 ; PWR5-NEXT: vcmpgtuw 2, 2, 3
11709 ; PWR6-LABEL: ugt_30_v4i32:
11711 ; PWR6-NEXT: addis 3, 2, .LCPI98_0@toc@ha
11712 ; PWR6-NEXT: vspltisw 4, 1
11713 ; PWR6-NEXT: vxor 3, 3, 3
11714 ; PWR6-NEXT: addi 3, 3, .LCPI98_0@toc@l
11715 ; PWR6-NEXT: lvx 5, 0, 3
11716 ; PWR6-NEXT: addis 3, 2, .LCPI98_1@toc@ha
11717 ; PWR6-NEXT: addi 3, 3, .LCPI98_1@toc@l
11718 ; PWR6-NEXT: vspltisw 0, 2
11719 ; PWR6-NEXT: vsrw 4, 2, 4
11720 ; PWR6-NEXT: vand 4, 4, 5
11721 ; PWR6-NEXT: lvx 5, 0, 3
11722 ; PWR6-NEXT: vsubuwm 2, 2, 4
11723 ; PWR6-NEXT: vand 4, 2, 5
11724 ; PWR6-NEXT: vsrw 2, 2, 0
11725 ; PWR6-NEXT: vand 2, 2, 5
11726 ; PWR6-NEXT: vspltisw 5, 4
11727 ; PWR6-NEXT: vadduwm 2, 4, 2
11728 ; PWR6-NEXT: vsrw 4, 2, 5
11729 ; PWR6-NEXT: vspltisb 5, 15
11730 ; PWR6-NEXT: vadduwm 2, 2, 4
11731 ; PWR6-NEXT: vspltisb 4, 1
11732 ; PWR6-NEXT: vand 2, 2, 5
11733 ; PWR6-NEXT: vspltisw 5, -16
11734 ; PWR6-NEXT: vrlw 0, 4, 5
11735 ; PWR6-NEXT: vmulouh 4, 2, 4
11736 ; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
11737 ; PWR6-NEXT: vspltisw 3, 12
11738 ; PWR6-NEXT: vadduwm 3, 3, 3
11739 ; PWR6-NEXT: vslw 2, 2, 5
11740 ; PWR6-NEXT: vadduwm 2, 4, 2
11741 ; PWR6-NEXT: vsrw 2, 2, 3
11742 ; PWR6-NEXT: vspltisw 3, 15
11743 ; PWR6-NEXT: vadduwm 3, 3, 3
11744 ; PWR6-NEXT: vcmpgtuw 2, 2, 3
11747 ; PWR7-LABEL: ugt_30_v4i32:
11749 ; PWR7-NEXT: vspltisw 3, 1
11750 ; PWR7-NEXT: addis 3, 2, .LCPI98_0@toc@ha
11751 ; PWR7-NEXT: addi 3, 3, .LCPI98_0@toc@l
11752 ; PWR7-NEXT: vspltisw 4, 2
11753 ; PWR7-NEXT: lxvw4x 0, 0, 3
11754 ; PWR7-NEXT: addis 3, 2, .LCPI98_1@toc@ha
11755 ; PWR7-NEXT: vspltisw 5, -16
11756 ; PWR7-NEXT: vsrw 3, 2, 3
11757 ; PWR7-NEXT: addi 3, 3, .LCPI98_1@toc@l
11758 ; PWR7-NEXT: vspltisb 0, 15
11759 ; PWR7-NEXT: xxland 35, 35, 0
11760 ; PWR7-NEXT: lxvw4x 0, 0, 3
11761 ; PWR7-NEXT: vsubuwm 2, 2, 3
11762 ; PWR7-NEXT: vsrw 3, 2, 4
11763 ; PWR7-NEXT: xxland 34, 34, 0
11764 ; PWR7-NEXT: vspltisw 4, 4
11765 ; PWR7-NEXT: xxland 35, 35, 0
11766 ; PWR7-NEXT: vadduwm 2, 2, 3
11767 ; PWR7-NEXT: vsrw 3, 2, 4
11768 ; PWR7-NEXT: vspltisb 4, 1
11769 ; PWR7-NEXT: vrlw 1, 4, 5
11770 ; PWR7-NEXT: vadduwm 2, 2, 3
11771 ; PWR7-NEXT: xxlxor 35, 35, 35
11772 ; PWR7-NEXT: xxland 34, 34, 32
11773 ; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
11774 ; PWR7-NEXT: vmulouh 2, 2, 4
11775 ; PWR7-NEXT: vspltisw 4, 12
11776 ; PWR7-NEXT: vslw 3, 3, 5
11777 ; PWR7-NEXT: vadduwm 2, 2, 3
11778 ; PWR7-NEXT: vadduwm 3, 4, 4
11779 ; PWR7-NEXT: vsrw 2, 2, 3
11780 ; PWR7-NEXT: vspltisw 3, 15
11781 ; PWR7-NEXT: vadduwm 3, 3, 3
11782 ; PWR7-NEXT: vcmpgtuw 2, 2, 3
11785 ; PWR8-LABEL: ugt_30_v4i32:
11787 ; PWR8-NEXT: vspltisw 3, 15
11788 ; PWR8-NEXT: vpopcntw 2, 2
11789 ; PWR8-NEXT: vadduwm 3, 3, 3
11790 ; PWR8-NEXT: vcmpgtuw 2, 2, 3
11793 ; PWR9-LABEL: ugt_30_v4i32:
11795 ; PWR9-NEXT: vspltisw 3, 15
11796 ; PWR9-NEXT: vpopcntw 2, 2
11797 ; PWR9-NEXT: vadduwm 3, 3, 3
11798 ; PWR9-NEXT: vcmpgtuw 2, 2, 3
11800 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
11801 %3 = icmp ugt <4 x i32> %2, <i32 30, i32 30, i32 30, i32 30>
11802 %4 = sext <4 x i1> %3 to <4 x i32>
11806 define <4 x i32> @ult_31_v4i32(<4 x i32> %0) {
11807 ; PWR5-LABEL: ult_31_v4i32:
11809 ; PWR5-NEXT: addis 3, 2, .LCPI99_0@toc@ha
11810 ; PWR5-NEXT: vspltisw 4, 1
11811 ; PWR5-NEXT: vxor 3, 3, 3
11812 ; PWR5-NEXT: addi 3, 3, .LCPI99_0@toc@l
11813 ; PWR5-NEXT: lvx 5, 0, 3
11814 ; PWR5-NEXT: addis 3, 2, .LCPI99_1@toc@ha
11815 ; PWR5-NEXT: addi 3, 3, .LCPI99_1@toc@l
11816 ; PWR5-NEXT: vspltisw 0, 2
11817 ; PWR5-NEXT: vsrw 4, 2, 4
11818 ; PWR5-NEXT: vand 4, 4, 5
11819 ; PWR5-NEXT: lvx 5, 0, 3
11820 ; PWR5-NEXT: vsubuwm 2, 2, 4
11821 ; PWR5-NEXT: vand 4, 2, 5
11822 ; PWR5-NEXT: vsrw 2, 2, 0
11823 ; PWR5-NEXT: vand 2, 2, 5
11824 ; PWR5-NEXT: vspltisw 5, 4
11825 ; PWR5-NEXT: vadduwm 2, 4, 2
11826 ; PWR5-NEXT: vsrw 4, 2, 5
11827 ; PWR5-NEXT: vspltisb 5, 15
11828 ; PWR5-NEXT: vadduwm 2, 2, 4
11829 ; PWR5-NEXT: vspltisb 4, 1
11830 ; PWR5-NEXT: vand 2, 2, 5
11831 ; PWR5-NEXT: vspltisw 5, -16
11832 ; PWR5-NEXT: vrlw 0, 4, 5
11833 ; PWR5-NEXT: vmulouh 4, 2, 4
11834 ; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
11835 ; PWR5-NEXT: vspltisw 3, 12
11836 ; PWR5-NEXT: vadduwm 3, 3, 3
11837 ; PWR5-NEXT: vslw 2, 2, 5
11838 ; PWR5-NEXT: vadduwm 2, 4, 2
11839 ; PWR5-NEXT: vsrw 2, 2, 3
11840 ; PWR5-NEXT: vspltisw 3, 15
11841 ; PWR5-NEXT: vsubuwm 3, 3, 5
11842 ; PWR5-NEXT: vcmpgtuw 2, 3, 2
11845 ; PWR6-LABEL: ult_31_v4i32:
11847 ; PWR6-NEXT: addis 3, 2, .LCPI99_0@toc@ha
11848 ; PWR6-NEXT: vspltisw 4, 1
11849 ; PWR6-NEXT: vxor 3, 3, 3
11850 ; PWR6-NEXT: addi 3, 3, .LCPI99_0@toc@l
11851 ; PWR6-NEXT: lvx 5, 0, 3
11852 ; PWR6-NEXT: addis 3, 2, .LCPI99_1@toc@ha
11853 ; PWR6-NEXT: addi 3, 3, .LCPI99_1@toc@l
11854 ; PWR6-NEXT: vspltisw 0, 2
11855 ; PWR6-NEXT: vsrw 4, 2, 4
11856 ; PWR6-NEXT: vand 4, 4, 5
11857 ; PWR6-NEXT: lvx 5, 0, 3
11858 ; PWR6-NEXT: vsubuwm 2, 2, 4
11859 ; PWR6-NEXT: vand 4, 2, 5
11860 ; PWR6-NEXT: vsrw 2, 2, 0
11861 ; PWR6-NEXT: vand 2, 2, 5
11862 ; PWR6-NEXT: vspltisw 5, 4
11863 ; PWR6-NEXT: vadduwm 2, 4, 2
11864 ; PWR6-NEXT: vsrw 4, 2, 5
11865 ; PWR6-NEXT: vspltisb 5, 15
11866 ; PWR6-NEXT: vadduwm 2, 2, 4
11867 ; PWR6-NEXT: vspltisb 4, 1
11868 ; PWR6-NEXT: vand 2, 2, 5
11869 ; PWR6-NEXT: vspltisw 5, -16
11870 ; PWR6-NEXT: vrlw 0, 4, 5
11871 ; PWR6-NEXT: vmulouh 4, 2, 4
11872 ; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
11873 ; PWR6-NEXT: vspltisw 3, 12
11874 ; PWR6-NEXT: vadduwm 3, 3, 3
11875 ; PWR6-NEXT: vslw 2, 2, 5
11876 ; PWR6-NEXT: vadduwm 2, 4, 2
11877 ; PWR6-NEXT: vsrw 2, 2, 3
11878 ; PWR6-NEXT: vspltisw 3, 15
11879 ; PWR6-NEXT: vsubuwm 3, 3, 5
11880 ; PWR6-NEXT: vcmpgtuw 2, 3, 2
11883 ; PWR7-LABEL: ult_31_v4i32:
11885 ; PWR7-NEXT: vspltisw 3, 1
11886 ; PWR7-NEXT: addis 3, 2, .LCPI99_0@toc@ha
11887 ; PWR7-NEXT: addi 3, 3, .LCPI99_0@toc@l
11888 ; PWR7-NEXT: vspltisw 4, 2
11889 ; PWR7-NEXT: lxvw4x 0, 0, 3
11890 ; PWR7-NEXT: addis 3, 2, .LCPI99_1@toc@ha
11891 ; PWR7-NEXT: vspltisw 5, -16
11892 ; PWR7-NEXT: vsrw 3, 2, 3
11893 ; PWR7-NEXT: addi 3, 3, .LCPI99_1@toc@l
11894 ; PWR7-NEXT: vspltisb 0, 15
11895 ; PWR7-NEXT: xxland 35, 35, 0
11896 ; PWR7-NEXT: lxvw4x 0, 0, 3
11897 ; PWR7-NEXT: vsubuwm 2, 2, 3
11898 ; PWR7-NEXT: vsrw 3, 2, 4
11899 ; PWR7-NEXT: xxland 34, 34, 0
11900 ; PWR7-NEXT: vspltisw 4, 4
11901 ; PWR7-NEXT: xxland 35, 35, 0
11902 ; PWR7-NEXT: vadduwm 2, 2, 3
11903 ; PWR7-NEXT: vsrw 3, 2, 4
11904 ; PWR7-NEXT: vspltisb 4, 1
11905 ; PWR7-NEXT: vrlw 1, 4, 5
11906 ; PWR7-NEXT: vadduwm 2, 2, 3
11907 ; PWR7-NEXT: xxlxor 35, 35, 35
11908 ; PWR7-NEXT: xxland 34, 34, 32
11909 ; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
11910 ; PWR7-NEXT: vmulouh 2, 2, 4
11911 ; PWR7-NEXT: vspltisw 4, 12
11912 ; PWR7-NEXT: vslw 3, 3, 5
11913 ; PWR7-NEXT: vadduwm 2, 2, 3
11914 ; PWR7-NEXT: vadduwm 3, 4, 4
11915 ; PWR7-NEXT: vsrw 2, 2, 3
11916 ; PWR7-NEXT: vspltisw 3, 15
11917 ; PWR7-NEXT: vsubuwm 3, 3, 5
11918 ; PWR7-NEXT: vcmpgtuw 2, 3, 2
11921 ; PWR8-LABEL: ult_31_v4i32:
11923 ; PWR8-NEXT: vspltisw 3, -16
11924 ; PWR8-NEXT: vspltisw 4, 15
11925 ; PWR8-NEXT: vpopcntw 2, 2
11926 ; PWR8-NEXT: vsubuwm 3, 4, 3
11927 ; PWR8-NEXT: vcmpgtuw 2, 3, 2
11930 ; PWR9-LABEL: ult_31_v4i32:
11932 ; PWR9-NEXT: vspltisw 3, -16
11933 ; PWR9-NEXT: vspltisw 4, 15
11934 ; PWR9-NEXT: vpopcntw 2, 2
11935 ; PWR9-NEXT: vsubuwm 3, 4, 3
11936 ; PWR9-NEXT: vcmpgtuw 2, 3, 2
11938 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
11939 %3 = icmp ult <4 x i32> %2, <i32 31, i32 31, i32 31, i32 31>
11940 %4 = sext <4 x i1> %3 to <4 x i32>
11944 define <2 x i64> @ugt_1_v2i64(<2 x i64> %0) {
11945 ; PWR5-LABEL: ugt_1_v2i64:
11947 ; PWR5-NEXT: addi 5, 3, -1
11948 ; PWR5-NEXT: and 3, 3, 5
11949 ; PWR5-NEXT: addi 5, 4, -1
11950 ; PWR5-NEXT: subfic 3, 3, 0
11951 ; PWR5-NEXT: subfe 3, 3, 3
11952 ; PWR5-NEXT: and 4, 4, 5
11953 ; PWR5-NEXT: subfic 4, 4, 0
11954 ; PWR5-NEXT: subfe 4, 4, 4
11957 ; PWR6-LABEL: ugt_1_v2i64:
11959 ; PWR6-NEXT: addi 5, 3, -1
11960 ; PWR6-NEXT: and 3, 3, 5
11961 ; PWR6-NEXT: addi 5, 4, -1
11962 ; PWR6-NEXT: subfic 3, 3, 0
11963 ; PWR6-NEXT: subfe 3, 3, 3
11964 ; PWR6-NEXT: and 4, 4, 5
11965 ; PWR6-NEXT: subfic 4, 4, 0
11966 ; PWR6-NEXT: subfe 4, 4, 4
11969 ; PWR7-LABEL: ugt_1_v2i64:
11971 ; PWR7-NEXT: addi 3, 1, -32
11972 ; PWR7-NEXT: xxlxor 35, 35, 35
11973 ; PWR7-NEXT: stxvd2x 34, 0, 3
11974 ; PWR7-NEXT: ld 3, -24(1)
11975 ; PWR7-NEXT: addi 3, 3, -1
11976 ; PWR7-NEXT: std 3, -8(1)
11977 ; PWR7-NEXT: ld 3, -32(1)
11978 ; PWR7-NEXT: addi 3, 3, -1
11979 ; PWR7-NEXT: std 3, -16(1)
11980 ; PWR7-NEXT: addi 3, 1, -16
11981 ; PWR7-NEXT: lxvw4x 0, 0, 3
11982 ; PWR7-NEXT: xxland 34, 34, 0
11983 ; PWR7-NEXT: vcmpequw 2, 2, 3
11984 ; PWR7-NEXT: xxlnor 34, 34, 34
11987 ; PWR8-LABEL: ugt_1_v2i64:
11989 ; PWR8-NEXT: addis 3, 2, .LCPI100_0@toc@ha
11990 ; PWR8-NEXT: vpopcntd 2, 2
11991 ; PWR8-NEXT: addi 3, 3, .LCPI100_0@toc@l
11992 ; PWR8-NEXT: lxvd2x 35, 0, 3
11993 ; PWR8-NEXT: vcmpgtud 2, 2, 3
11996 ; PWR9-LABEL: ugt_1_v2i64:
11998 ; PWR9-NEXT: addis 3, 2, .LCPI100_0@toc@ha
11999 ; PWR9-NEXT: vpopcntd 2, 2
12000 ; PWR9-NEXT: addi 3, 3, .LCPI100_0@toc@l
12001 ; PWR9-NEXT: lxv 35, 0(3)
12002 ; PWR9-NEXT: vcmpgtud 2, 2, 3
12004 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
12005 %3 = icmp ugt <2 x i64> %2, <i64 1, i64 1>
12006 %4 = sext <2 x i1> %3 to <2 x i64>
12010 define <2 x i64> @ult_2_v2i64(<2 x i64> %0) {
12011 ; PWR5-LABEL: ult_2_v2i64:
12013 ; PWR5-NEXT: addi 5, 3, -1
12014 ; PWR5-NEXT: and 3, 3, 5
12015 ; PWR5-NEXT: addi 5, 4, -1
12016 ; PWR5-NEXT: addic 3, 3, -1
12017 ; PWR5-NEXT: subfe 3, 3, 3
12018 ; PWR5-NEXT: and 4, 4, 5
12019 ; PWR5-NEXT: addic 4, 4, -1
12020 ; PWR5-NEXT: subfe 4, 4, 4
12023 ; PWR6-LABEL: ult_2_v2i64:
12025 ; PWR6-NEXT: addi 5, 3, -1
12026 ; PWR6-NEXT: and 3, 3, 5
12027 ; PWR6-NEXT: addi 5, 4, -1
12028 ; PWR6-NEXT: addic 3, 3, -1
12029 ; PWR6-NEXT: subfe 3, 3, 3
12030 ; PWR6-NEXT: and 4, 4, 5
12031 ; PWR6-NEXT: addic 4, 4, -1
12032 ; PWR6-NEXT: subfe 4, 4, 4
12035 ; PWR7-LABEL: ult_2_v2i64:
12037 ; PWR7-NEXT: addi 3, 1, -32
12038 ; PWR7-NEXT: xxlxor 35, 35, 35
12039 ; PWR7-NEXT: stxvd2x 34, 0, 3
12040 ; PWR7-NEXT: ld 3, -24(1)
12041 ; PWR7-NEXT: addi 3, 3, -1
12042 ; PWR7-NEXT: std 3, -8(1)
12043 ; PWR7-NEXT: ld 3, -32(1)
12044 ; PWR7-NEXT: addi 3, 3, -1
12045 ; PWR7-NEXT: std 3, -16(1)
12046 ; PWR7-NEXT: addi 3, 1, -16
12047 ; PWR7-NEXT: lxvw4x 0, 0, 3
12048 ; PWR7-NEXT: xxland 34, 34, 0
12049 ; PWR7-NEXT: vcmpequw 2, 2, 3
12052 ; PWR8-LABEL: ult_2_v2i64:
12054 ; PWR8-NEXT: addis 3, 2, .LCPI101_0@toc@ha
12055 ; PWR8-NEXT: vpopcntd 2, 2
12056 ; PWR8-NEXT: addi 3, 3, .LCPI101_0@toc@l
12057 ; PWR8-NEXT: lxvd2x 35, 0, 3
12058 ; PWR8-NEXT: vcmpgtud 2, 3, 2
12061 ; PWR9-LABEL: ult_2_v2i64:
12063 ; PWR9-NEXT: addis 3, 2, .LCPI101_0@toc@ha
12064 ; PWR9-NEXT: vpopcntd 2, 2
12065 ; PWR9-NEXT: addi 3, 3, .LCPI101_0@toc@l
12066 ; PWR9-NEXT: lxv 35, 0(3)
12067 ; PWR9-NEXT: vcmpgtud 2, 3, 2
12069 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
12070 %3 = icmp ult <2 x i64> %2, <i64 2, i64 2>
12071 %4 = sext <2 x i1> %3 to <2 x i64>
12075 define <2 x i64> @ugt_2_v2i64(<2 x i64> %0) {
12076 ; PWR5-LABEL: ugt_2_v2i64:
12078 ; PWR5-NEXT: lis 5, 21845
12079 ; PWR5-NEXT: lis 6, 13107
12080 ; PWR5-NEXT: ori 5, 5, 21845
12081 ; PWR5-NEXT: rotldi 8, 4, 63
12082 ; PWR5-NEXT: rotldi 9, 3, 63
12083 ; PWR5-NEXT: rldimi 5, 5, 32, 0
12084 ; PWR5-NEXT: and 8, 8, 5
12085 ; PWR5-NEXT: and 5, 9, 5
12086 ; PWR5-NEXT: ori 6, 6, 13107
12087 ; PWR5-NEXT: sub 3, 3, 5
12088 ; PWR5-NEXT: rldimi 6, 6, 32, 0
12089 ; PWR5-NEXT: sub 4, 4, 8
12090 ; PWR5-NEXT: and 8, 3, 6
12091 ; PWR5-NEXT: rotldi 3, 3, 62
12092 ; PWR5-NEXT: and 3, 3, 6
12093 ; PWR5-NEXT: lis 7, 3855
12094 ; PWR5-NEXT: and 5, 4, 6
12095 ; PWR5-NEXT: rotldi 4, 4, 62
12096 ; PWR5-NEXT: add 3, 8, 3
12097 ; PWR5-NEXT: lis 9, 257
12098 ; PWR5-NEXT: ori 7, 7, 3855
12099 ; PWR5-NEXT: and 4, 4, 6
12100 ; PWR5-NEXT: rldicl 6, 3, 60, 4
12101 ; PWR5-NEXT: ori 9, 9, 257
12102 ; PWR5-NEXT: rldimi 7, 7, 32, 0
12103 ; PWR5-NEXT: add 4, 5, 4
12104 ; PWR5-NEXT: add 3, 3, 6
12105 ; PWR5-NEXT: rldimi 9, 9, 32, 0
12106 ; PWR5-NEXT: rldicl 5, 4, 60, 4
12107 ; PWR5-NEXT: and 3, 3, 7
12108 ; PWR5-NEXT: add 4, 4, 5
12109 ; PWR5-NEXT: mulld 3, 3, 9
12110 ; PWR5-NEXT: and 4, 4, 7
12111 ; PWR5-NEXT: rldicl 3, 3, 8, 56
12112 ; PWR5-NEXT: mulld 4, 4, 9
12113 ; PWR5-NEXT: li 5, 2
12114 ; PWR5-NEXT: subfic 3, 3, 2
12115 ; PWR5-NEXT: rldicl 4, 4, 8, 56
12116 ; PWR5-NEXT: subfe 3, 5, 5
12117 ; PWR5-NEXT: subfic 4, 4, 2
12118 ; PWR5-NEXT: subfe 4, 5, 5
12121 ; PWR6-LABEL: ugt_2_v2i64:
12123 ; PWR6-NEXT: lis 5, 21845
12124 ; PWR6-NEXT: lis 6, 13107
12125 ; PWR6-NEXT: ori 5, 5, 21845
12126 ; PWR6-NEXT: rotldi 8, 4, 63
12127 ; PWR6-NEXT: rotldi 9, 3, 63
12128 ; PWR6-NEXT: rldimi 5, 5, 32, 0
12129 ; PWR6-NEXT: and 8, 8, 5
12130 ; PWR6-NEXT: and 5, 9, 5
12131 ; PWR6-NEXT: ori 6, 6, 13107
12132 ; PWR6-NEXT: sub 3, 3, 5
12133 ; PWR6-NEXT: rldimi 6, 6, 32, 0
12134 ; PWR6-NEXT: sub 4, 4, 8
12135 ; PWR6-NEXT: and 8, 3, 6
12136 ; PWR6-NEXT: rotldi 3, 3, 62
12137 ; PWR6-NEXT: and 3, 3, 6
12138 ; PWR6-NEXT: lis 7, 3855
12139 ; PWR6-NEXT: and 5, 4, 6
12140 ; PWR6-NEXT: rotldi 4, 4, 62
12141 ; PWR6-NEXT: add 3, 8, 3
12142 ; PWR6-NEXT: lis 9, 257
12143 ; PWR6-NEXT: ori 7, 7, 3855
12144 ; PWR6-NEXT: and 4, 4, 6
12145 ; PWR6-NEXT: rldicl 6, 3, 60, 4
12146 ; PWR6-NEXT: ori 9, 9, 257
12147 ; PWR6-NEXT: rldimi 7, 7, 32, 0
12148 ; PWR6-NEXT: add 4, 5, 4
12149 ; PWR6-NEXT: add 3, 3, 6
12150 ; PWR6-NEXT: rldimi 9, 9, 32, 0
12151 ; PWR6-NEXT: rldicl 5, 4, 60, 4
12152 ; PWR6-NEXT: and 3, 3, 7
12153 ; PWR6-NEXT: add 4, 4, 5
12154 ; PWR6-NEXT: mulld 3, 3, 9
12155 ; PWR6-NEXT: and 4, 4, 7
12156 ; PWR6-NEXT: rldicl 3, 3, 8, 56
12157 ; PWR6-NEXT: mulld 4, 4, 9
12158 ; PWR6-NEXT: li 5, 2
12159 ; PWR6-NEXT: subfic 3, 3, 2
12160 ; PWR6-NEXT: rldicl 4, 4, 8, 56
12161 ; PWR6-NEXT: subfe 3, 5, 5
12162 ; PWR6-NEXT: subfic 4, 4, 2
12163 ; PWR6-NEXT: subfe 4, 5, 5
12166 ; PWR7-LABEL: ugt_2_v2i64:
12168 ; PWR7-NEXT: addi 3, 1, -32
12169 ; PWR7-NEXT: li 5, 0
12170 ; PWR7-NEXT: li 6, -1
12171 ; PWR7-NEXT: stxvd2x 34, 0, 3
12172 ; PWR7-NEXT: ld 3, -24(1)
12173 ; PWR7-NEXT: ld 4, -32(1)
12174 ; PWR7-NEXT: popcntd 3, 3
12175 ; PWR7-NEXT: popcntd 4, 4
12176 ; PWR7-NEXT: cmpldi 3, 2
12177 ; PWR7-NEXT: iselgt 3, 6, 5
12178 ; PWR7-NEXT: cmpldi 4, 2
12179 ; PWR7-NEXT: iselgt 4, 6, 5
12180 ; PWR7-NEXT: std 3, -8(1)
12181 ; PWR7-NEXT: addi 3, 1, -16
12182 ; PWR7-NEXT: std 4, -16(1)
12183 ; PWR7-NEXT: lxvd2x 34, 0, 3
12186 ; PWR8-LABEL: ugt_2_v2i64:
12188 ; PWR8-NEXT: addis 3, 2, .LCPI102_0@toc@ha
12189 ; PWR8-NEXT: vpopcntd 2, 2
12190 ; PWR8-NEXT: addi 3, 3, .LCPI102_0@toc@l
12191 ; PWR8-NEXT: lxvd2x 35, 0, 3
12192 ; PWR8-NEXT: vcmpgtud 2, 2, 3
12195 ; PWR9-LABEL: ugt_2_v2i64:
12197 ; PWR9-NEXT: addis 3, 2, .LCPI102_0@toc@ha
12198 ; PWR9-NEXT: vpopcntd 2, 2
12199 ; PWR9-NEXT: addi 3, 3, .LCPI102_0@toc@l
12200 ; PWR9-NEXT: lxv 35, 0(3)
12201 ; PWR9-NEXT: vcmpgtud 2, 2, 3
12203 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
12204 %3 = icmp ugt <2 x i64> %2, <i64 2, i64 2>
12205 %4 = sext <2 x i1> %3 to <2 x i64>
12209 define <2 x i64> @ult_3_v2i64(<2 x i64> %0) {
12210 ; PWR5-LABEL: ult_3_v2i64:
12212 ; PWR5-NEXT: lis 5, 21845
12213 ; PWR5-NEXT: lis 6, 13107
12214 ; PWR5-NEXT: ori 5, 5, 21845
12215 ; PWR5-NEXT: rotldi 8, 4, 63
12216 ; PWR5-NEXT: rotldi 9, 3, 63
12217 ; PWR5-NEXT: rldimi 5, 5, 32, 0
12218 ; PWR5-NEXT: and 8, 8, 5
12219 ; PWR5-NEXT: and 5, 9, 5
12220 ; PWR5-NEXT: ori 6, 6, 13107
12221 ; PWR5-NEXT: sub 3, 3, 5
12222 ; PWR5-NEXT: rldimi 6, 6, 32, 0
12223 ; PWR5-NEXT: sub 4, 4, 8
12224 ; PWR5-NEXT: and 8, 3, 6
12225 ; PWR5-NEXT: rotldi 3, 3, 62
12226 ; PWR5-NEXT: and 3, 3, 6
12227 ; PWR5-NEXT: lis 7, 3855
12228 ; PWR5-NEXT: and 5, 4, 6
12229 ; PWR5-NEXT: rotldi 4, 4, 62
12230 ; PWR5-NEXT: add 3, 8, 3
12231 ; PWR5-NEXT: lis 9, 257
12232 ; PWR5-NEXT: ori 7, 7, 3855
12233 ; PWR5-NEXT: and 4, 4, 6
12234 ; PWR5-NEXT: rldicl 6, 3, 60, 4
12235 ; PWR5-NEXT: ori 9, 9, 257
12236 ; PWR5-NEXT: rldimi 7, 7, 32, 0
12237 ; PWR5-NEXT: add 4, 5, 4
12238 ; PWR5-NEXT: add 3, 3, 6
12239 ; PWR5-NEXT: rldimi 9, 9, 32, 0
12240 ; PWR5-NEXT: rldicl 5, 4, 60, 4
12241 ; PWR5-NEXT: and 3, 3, 7
12242 ; PWR5-NEXT: add 4, 4, 5
12243 ; PWR5-NEXT: mulld 3, 3, 9
12244 ; PWR5-NEXT: and 4, 4, 7
12245 ; PWR5-NEXT: rldicl 3, 3, 8, 56
12246 ; PWR5-NEXT: li 5, 3
12247 ; PWR5-NEXT: mulld 4, 4, 9
12248 ; PWR5-NEXT: subc 6, 3, 5
12249 ; PWR5-NEXT: rldicl 4, 4, 8, 56
12250 ; PWR5-NEXT: subfe 3, 3, 3
12251 ; PWR5-NEXT: subc 5, 4, 5
12252 ; PWR5-NEXT: subfe 4, 4, 4
12255 ; PWR6-LABEL: ult_3_v2i64:
12257 ; PWR6-NEXT: lis 5, 21845
12258 ; PWR6-NEXT: lis 6, 13107
12259 ; PWR6-NEXT: ori 5, 5, 21845
12260 ; PWR6-NEXT: rotldi 8, 4, 63
12261 ; PWR6-NEXT: rotldi 9, 3, 63
12262 ; PWR6-NEXT: rldimi 5, 5, 32, 0
12263 ; PWR6-NEXT: and 8, 8, 5
12264 ; PWR6-NEXT: and 5, 9, 5
12265 ; PWR6-NEXT: ori 6, 6, 13107
12266 ; PWR6-NEXT: sub 3, 3, 5
12267 ; PWR6-NEXT: rldimi 6, 6, 32, 0
12268 ; PWR6-NEXT: sub 4, 4, 8
12269 ; PWR6-NEXT: and 8, 3, 6
12270 ; PWR6-NEXT: rotldi 3, 3, 62
12271 ; PWR6-NEXT: and 3, 3, 6
12272 ; PWR6-NEXT: lis 7, 3855
12273 ; PWR6-NEXT: and 5, 4, 6
12274 ; PWR6-NEXT: rotldi 4, 4, 62
12275 ; PWR6-NEXT: add 3, 8, 3
12276 ; PWR6-NEXT: lis 9, 257
12277 ; PWR6-NEXT: ori 7, 7, 3855
12278 ; PWR6-NEXT: and 4, 4, 6
12279 ; PWR6-NEXT: rldicl 6, 3, 60, 4
12280 ; PWR6-NEXT: ori 9, 9, 257
12281 ; PWR6-NEXT: rldimi 7, 7, 32, 0
12282 ; PWR6-NEXT: add 4, 5, 4
12283 ; PWR6-NEXT: add 3, 3, 6
12284 ; PWR6-NEXT: rldimi 9, 9, 32, 0
12285 ; PWR6-NEXT: rldicl 5, 4, 60, 4
12286 ; PWR6-NEXT: and 3, 3, 7
12287 ; PWR6-NEXT: add 4, 4, 5
12288 ; PWR6-NEXT: mulld 3, 3, 9
12289 ; PWR6-NEXT: and 4, 4, 7
12290 ; PWR6-NEXT: rldicl 3, 3, 8, 56
12291 ; PWR6-NEXT: li 5, 3
12292 ; PWR6-NEXT: mulld 4, 4, 9
12293 ; PWR6-NEXT: subc 6, 3, 5
12294 ; PWR6-NEXT: rldicl 4, 4, 8, 56
12295 ; PWR6-NEXT: subfe 3, 3, 3
12296 ; PWR6-NEXT: subc 5, 4, 5
12297 ; PWR6-NEXT: subfe 4, 4, 4
12300 ; PWR7-LABEL: ult_3_v2i64:
12302 ; PWR7-NEXT: addi 3, 1, -32
12303 ; PWR7-NEXT: li 5, 0
12304 ; PWR7-NEXT: li 6, -1
12305 ; PWR7-NEXT: stxvd2x 34, 0, 3
12306 ; PWR7-NEXT: ld 3, -24(1)
12307 ; PWR7-NEXT: ld 4, -32(1)
12308 ; PWR7-NEXT: popcntd 3, 3
12309 ; PWR7-NEXT: popcntd 4, 4
12310 ; PWR7-NEXT: cmpldi 3, 3
12311 ; PWR7-NEXT: isellt 3, 6, 5
12312 ; PWR7-NEXT: cmpldi 4, 3
12313 ; PWR7-NEXT: isellt 4, 6, 5
12314 ; PWR7-NEXT: std 3, -8(1)
12315 ; PWR7-NEXT: addi 3, 1, -16
12316 ; PWR7-NEXT: std 4, -16(1)
12317 ; PWR7-NEXT: lxvd2x 34, 0, 3
12320 ; PWR8-LABEL: ult_3_v2i64:
12322 ; PWR8-NEXT: addis 3, 2, .LCPI103_0@toc@ha
12323 ; PWR8-NEXT: vpopcntd 2, 2
12324 ; PWR8-NEXT: addi 3, 3, .LCPI103_0@toc@l
12325 ; PWR8-NEXT: lxvd2x 35, 0, 3
12326 ; PWR8-NEXT: vcmpgtud 2, 3, 2
12329 ; PWR9-LABEL: ult_3_v2i64:
12331 ; PWR9-NEXT: addis 3, 2, .LCPI103_0@toc@ha
12332 ; PWR9-NEXT: vpopcntd 2, 2
12333 ; PWR9-NEXT: addi 3, 3, .LCPI103_0@toc@l
12334 ; PWR9-NEXT: lxv 35, 0(3)
12335 ; PWR9-NEXT: vcmpgtud 2, 3, 2
12337 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
12338 %3 = icmp ult <2 x i64> %2, <i64 3, i64 3>
12339 %4 = sext <2 x i1> %3 to <2 x i64>
12343 define <2 x i64> @ugt_3_v2i64(<2 x i64> %0) {
12344 ; PWR5-LABEL: ugt_3_v2i64:
12346 ; PWR5-NEXT: lis 5, 21845
12347 ; PWR5-NEXT: lis 6, 13107
12348 ; PWR5-NEXT: ori 5, 5, 21845
12349 ; PWR5-NEXT: rotldi 8, 4, 63
12350 ; PWR5-NEXT: rotldi 9, 3, 63
12351 ; PWR5-NEXT: rldimi 5, 5, 32, 0
12352 ; PWR5-NEXT: and 8, 8, 5
12353 ; PWR5-NEXT: and 5, 9, 5
12354 ; PWR5-NEXT: ori 6, 6, 13107
12355 ; PWR5-NEXT: sub 3, 3, 5
12356 ; PWR5-NEXT: rldimi 6, 6, 32, 0
12357 ; PWR5-NEXT: sub 4, 4, 8
12358 ; PWR5-NEXT: and 8, 3, 6
12359 ; PWR5-NEXT: rotldi 3, 3, 62
12360 ; PWR5-NEXT: and 3, 3, 6
12361 ; PWR5-NEXT: lis 7, 3855
12362 ; PWR5-NEXT: and 5, 4, 6
12363 ; PWR5-NEXT: rotldi 4, 4, 62
12364 ; PWR5-NEXT: add 3, 8, 3
12365 ; PWR5-NEXT: lis 9, 257
12366 ; PWR5-NEXT: ori 7, 7, 3855
12367 ; PWR5-NEXT: and 4, 4, 6
12368 ; PWR5-NEXT: rldicl 6, 3, 60, 4
12369 ; PWR5-NEXT: ori 9, 9, 257
12370 ; PWR5-NEXT: rldimi 7, 7, 32, 0
12371 ; PWR5-NEXT: add 4, 5, 4
12372 ; PWR5-NEXT: add 3, 3, 6
12373 ; PWR5-NEXT: rldimi 9, 9, 32, 0
12374 ; PWR5-NEXT: rldicl 5, 4, 60, 4
12375 ; PWR5-NEXT: and 3, 3, 7
12376 ; PWR5-NEXT: add 4, 4, 5
12377 ; PWR5-NEXT: mulld 3, 3, 9
12378 ; PWR5-NEXT: and 4, 4, 7
12379 ; PWR5-NEXT: rldicl 3, 3, 8, 56
12380 ; PWR5-NEXT: mulld 4, 4, 9
12381 ; PWR5-NEXT: li 5, 3
12382 ; PWR5-NEXT: subfic 3, 3, 3
12383 ; PWR5-NEXT: rldicl 4, 4, 8, 56
12384 ; PWR5-NEXT: subfe 3, 5, 5
12385 ; PWR5-NEXT: subfic 4, 4, 3
12386 ; PWR5-NEXT: subfe 4, 5, 5
12389 ; PWR6-LABEL: ugt_3_v2i64:
12391 ; PWR6-NEXT: lis 5, 21845
12392 ; PWR6-NEXT: lis 6, 13107
12393 ; PWR6-NEXT: ori 5, 5, 21845
12394 ; PWR6-NEXT: rotldi 8, 4, 63
12395 ; PWR6-NEXT: rotldi 9, 3, 63
12396 ; PWR6-NEXT: rldimi 5, 5, 32, 0
12397 ; PWR6-NEXT: and 8, 8, 5
12398 ; PWR6-NEXT: and 5, 9, 5
12399 ; PWR6-NEXT: ori 6, 6, 13107
12400 ; PWR6-NEXT: sub 3, 3, 5
12401 ; PWR6-NEXT: rldimi 6, 6, 32, 0
12402 ; PWR6-NEXT: sub 4, 4, 8
12403 ; PWR6-NEXT: and 8, 3, 6
12404 ; PWR6-NEXT: rotldi 3, 3, 62
12405 ; PWR6-NEXT: and 3, 3, 6
12406 ; PWR6-NEXT: lis 7, 3855
12407 ; PWR6-NEXT: and 5, 4, 6
12408 ; PWR6-NEXT: rotldi 4, 4, 62
12409 ; PWR6-NEXT: add 3, 8, 3
12410 ; PWR6-NEXT: lis 9, 257
12411 ; PWR6-NEXT: ori 7, 7, 3855
12412 ; PWR6-NEXT: and 4, 4, 6
12413 ; PWR6-NEXT: rldicl 6, 3, 60, 4
12414 ; PWR6-NEXT: ori 9, 9, 257
12415 ; PWR6-NEXT: rldimi 7, 7, 32, 0
12416 ; PWR6-NEXT: add 4, 5, 4
12417 ; PWR6-NEXT: add 3, 3, 6
12418 ; PWR6-NEXT: rldimi 9, 9, 32, 0
12419 ; PWR6-NEXT: rldicl 5, 4, 60, 4
12420 ; PWR6-NEXT: and 3, 3, 7
12421 ; PWR6-NEXT: add 4, 4, 5
12422 ; PWR6-NEXT: mulld 3, 3, 9
12423 ; PWR6-NEXT: and 4, 4, 7
12424 ; PWR6-NEXT: rldicl 3, 3, 8, 56
12425 ; PWR6-NEXT: mulld 4, 4, 9
12426 ; PWR6-NEXT: li 5, 3
12427 ; PWR6-NEXT: subfic 3, 3, 3
12428 ; PWR6-NEXT: rldicl 4, 4, 8, 56
12429 ; PWR6-NEXT: subfe 3, 5, 5
12430 ; PWR6-NEXT: subfic 4, 4, 3
12431 ; PWR6-NEXT: subfe 4, 5, 5
12434 ; PWR7-LABEL: ugt_3_v2i64:
12436 ; PWR7-NEXT: addi 3, 1, -32
12437 ; PWR7-NEXT: li 5, 0
12438 ; PWR7-NEXT: li 6, -1
12439 ; PWR7-NEXT: stxvd2x 34, 0, 3
12440 ; PWR7-NEXT: ld 3, -24(1)
12441 ; PWR7-NEXT: ld 4, -32(1)
12442 ; PWR7-NEXT: popcntd 3, 3
12443 ; PWR7-NEXT: popcntd 4, 4
12444 ; PWR7-NEXT: cmpldi 3, 3
12445 ; PWR7-NEXT: iselgt 3, 6, 5
12446 ; PWR7-NEXT: cmpldi 4, 3
12447 ; PWR7-NEXT: iselgt 4, 6, 5
12448 ; PWR7-NEXT: std 3, -8(1)
12449 ; PWR7-NEXT: addi 3, 1, -16
12450 ; PWR7-NEXT: std 4, -16(1)
12451 ; PWR7-NEXT: lxvd2x 34, 0, 3
12454 ; PWR8-LABEL: ugt_3_v2i64:
12456 ; PWR8-NEXT: addis 3, 2, .LCPI104_0@toc@ha
12457 ; PWR8-NEXT: vpopcntd 2, 2
12458 ; PWR8-NEXT: addi 3, 3, .LCPI104_0@toc@l
12459 ; PWR8-NEXT: lxvd2x 35, 0, 3
12460 ; PWR8-NEXT: vcmpgtud 2, 2, 3
12463 ; PWR9-LABEL: ugt_3_v2i64:
12465 ; PWR9-NEXT: addis 3, 2, .LCPI104_0@toc@ha
12466 ; PWR9-NEXT: vpopcntd 2, 2
12467 ; PWR9-NEXT: addi 3, 3, .LCPI104_0@toc@l
12468 ; PWR9-NEXT: lxv 35, 0(3)
12469 ; PWR9-NEXT: vcmpgtud 2, 2, 3
12471 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
12472 %3 = icmp ugt <2 x i64> %2, <i64 3, i64 3>
12473 %4 = sext <2 x i1> %3 to <2 x i64>
12477 define <2 x i64> @ult_4_v2i64(<2 x i64> %0) {
12478 ; PWR5-LABEL: ult_4_v2i64:
12480 ; PWR5-NEXT: lis 5, 21845
12481 ; PWR5-NEXT: lis 6, 13107
12482 ; PWR5-NEXT: ori 5, 5, 21845
12483 ; PWR5-NEXT: rotldi 8, 4, 63
12484 ; PWR5-NEXT: rotldi 9, 3, 63
12485 ; PWR5-NEXT: rldimi 5, 5, 32, 0
12486 ; PWR5-NEXT: and 8, 8, 5
12487 ; PWR5-NEXT: and 5, 9, 5
12488 ; PWR5-NEXT: ori 6, 6, 13107
12489 ; PWR5-NEXT: sub 3, 3, 5
12490 ; PWR5-NEXT: rldimi 6, 6, 32, 0
12491 ; PWR5-NEXT: sub 4, 4, 8
12492 ; PWR5-NEXT: and 8, 3, 6
12493 ; PWR5-NEXT: rotldi 3, 3, 62
12494 ; PWR5-NEXT: and 3, 3, 6
12495 ; PWR5-NEXT: lis 7, 3855
12496 ; PWR5-NEXT: and 5, 4, 6
12497 ; PWR5-NEXT: rotldi 4, 4, 62
12498 ; PWR5-NEXT: add 3, 8, 3
12499 ; PWR5-NEXT: lis 9, 257
12500 ; PWR5-NEXT: ori 7, 7, 3855
12501 ; PWR5-NEXT: and 4, 4, 6
12502 ; PWR5-NEXT: rldicl 6, 3, 60, 4
12503 ; PWR5-NEXT: ori 9, 9, 257
12504 ; PWR5-NEXT: rldimi 7, 7, 32, 0
12505 ; PWR5-NEXT: add 4, 5, 4
12506 ; PWR5-NEXT: add 3, 3, 6
12507 ; PWR5-NEXT: rldimi 9, 9, 32, 0
12508 ; PWR5-NEXT: rldicl 5, 4, 60, 4
12509 ; PWR5-NEXT: and 3, 3, 7
12510 ; PWR5-NEXT: add 4, 4, 5
12511 ; PWR5-NEXT: mulld 3, 3, 9
12512 ; PWR5-NEXT: and 4, 4, 7
12513 ; PWR5-NEXT: rldicl 3, 3, 8, 56
12514 ; PWR5-NEXT: li 5, 4
12515 ; PWR5-NEXT: mulld 4, 4, 9
12516 ; PWR5-NEXT: subc 6, 3, 5
12517 ; PWR5-NEXT: rldicl 4, 4, 8, 56
12518 ; PWR5-NEXT: subfe 3, 3, 3
12519 ; PWR5-NEXT: subc 5, 4, 5
12520 ; PWR5-NEXT: subfe 4, 4, 4
12523 ; PWR6-LABEL: ult_4_v2i64:
12525 ; PWR6-NEXT: lis 5, 21845
12526 ; PWR6-NEXT: lis 6, 13107
12527 ; PWR6-NEXT: ori 5, 5, 21845
12528 ; PWR6-NEXT: rotldi 8, 4, 63
12529 ; PWR6-NEXT: rotldi 9, 3, 63
12530 ; PWR6-NEXT: rldimi 5, 5, 32, 0
12531 ; PWR6-NEXT: and 8, 8, 5
12532 ; PWR6-NEXT: and 5, 9, 5
12533 ; PWR6-NEXT: ori 6, 6, 13107
12534 ; PWR6-NEXT: sub 3, 3, 5
12535 ; PWR6-NEXT: rldimi 6, 6, 32, 0
12536 ; PWR6-NEXT: sub 4, 4, 8
12537 ; PWR6-NEXT: and 8, 3, 6
12538 ; PWR6-NEXT: rotldi 3, 3, 62
12539 ; PWR6-NEXT: and 3, 3, 6
12540 ; PWR6-NEXT: lis 7, 3855
12541 ; PWR6-NEXT: and 5, 4, 6
12542 ; PWR6-NEXT: rotldi 4, 4, 62
12543 ; PWR6-NEXT: add 3, 8, 3
12544 ; PWR6-NEXT: lis 9, 257
12545 ; PWR6-NEXT: ori 7, 7, 3855
12546 ; PWR6-NEXT: and 4, 4, 6
12547 ; PWR6-NEXT: rldicl 6, 3, 60, 4
12548 ; PWR6-NEXT: ori 9, 9, 257
12549 ; PWR6-NEXT: rldimi 7, 7, 32, 0
12550 ; PWR6-NEXT: add 4, 5, 4
12551 ; PWR6-NEXT: add 3, 3, 6
12552 ; PWR6-NEXT: rldimi 9, 9, 32, 0
12553 ; PWR6-NEXT: rldicl 5, 4, 60, 4
12554 ; PWR6-NEXT: and 3, 3, 7
12555 ; PWR6-NEXT: add 4, 4, 5
12556 ; PWR6-NEXT: mulld 3, 3, 9
12557 ; PWR6-NEXT: and 4, 4, 7
12558 ; PWR6-NEXT: rldicl 3, 3, 8, 56
12559 ; PWR6-NEXT: li 5, 4
12560 ; PWR6-NEXT: mulld 4, 4, 9
12561 ; PWR6-NEXT: subc 6, 3, 5
12562 ; PWR6-NEXT: rldicl 4, 4, 8, 56
12563 ; PWR6-NEXT: subfe 3, 3, 3
12564 ; PWR6-NEXT: subc 5, 4, 5
12565 ; PWR6-NEXT: subfe 4, 4, 4
12568 ; PWR7-LABEL: ult_4_v2i64:
12570 ; PWR7-NEXT: addi 3, 1, -32
12571 ; PWR7-NEXT: li 5, 0
12572 ; PWR7-NEXT: li 6, -1
12573 ; PWR7-NEXT: stxvd2x 34, 0, 3
12574 ; PWR7-NEXT: ld 3, -24(1)
12575 ; PWR7-NEXT: ld 4, -32(1)
12576 ; PWR7-NEXT: popcntd 3, 3
12577 ; PWR7-NEXT: popcntd 4, 4
12578 ; PWR7-NEXT: cmpldi 3, 4
12579 ; PWR7-NEXT: isellt 3, 6, 5
12580 ; PWR7-NEXT: cmpldi 4, 4
12581 ; PWR7-NEXT: isellt 4, 6, 5
12582 ; PWR7-NEXT: std 3, -8(1)
12583 ; PWR7-NEXT: addi 3, 1, -16
12584 ; PWR7-NEXT: std 4, -16(1)
12585 ; PWR7-NEXT: lxvd2x 34, 0, 3
12588 ; PWR8-LABEL: ult_4_v2i64:
12590 ; PWR8-NEXT: addis 3, 2, .LCPI105_0@toc@ha
12591 ; PWR8-NEXT: vpopcntd 2, 2
12592 ; PWR8-NEXT: addi 3, 3, .LCPI105_0@toc@l
12593 ; PWR8-NEXT: lxvd2x 35, 0, 3
12594 ; PWR8-NEXT: vcmpgtud 2, 3, 2
12597 ; PWR9-LABEL: ult_4_v2i64:
12599 ; PWR9-NEXT: addis 3, 2, .LCPI105_0@toc@ha
12600 ; PWR9-NEXT: vpopcntd 2, 2
12601 ; PWR9-NEXT: addi 3, 3, .LCPI105_0@toc@l
12602 ; PWR9-NEXT: lxv 35, 0(3)
12603 ; PWR9-NEXT: vcmpgtud 2, 3, 2
12605 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
12606 %3 = icmp ult <2 x i64> %2, <i64 4, i64 4>
12607 %4 = sext <2 x i1> %3 to <2 x i64>
12611 define <2 x i64> @ugt_4_v2i64(<2 x i64> %0) {
12612 ; PWR5-LABEL: ugt_4_v2i64:
12614 ; PWR5-NEXT: lis 5, 21845
12615 ; PWR5-NEXT: lis 6, 13107
12616 ; PWR5-NEXT: ori 5, 5, 21845
12617 ; PWR5-NEXT: rotldi 8, 4, 63
12618 ; PWR5-NEXT: rotldi 9, 3, 63
12619 ; PWR5-NEXT: rldimi 5, 5, 32, 0
12620 ; PWR5-NEXT: and 8, 8, 5
12621 ; PWR5-NEXT: and 5, 9, 5
12622 ; PWR5-NEXT: ori 6, 6, 13107
12623 ; PWR5-NEXT: sub 3, 3, 5
12624 ; PWR5-NEXT: rldimi 6, 6, 32, 0
12625 ; PWR5-NEXT: sub 4, 4, 8
12626 ; PWR5-NEXT: and 8, 3, 6
12627 ; PWR5-NEXT: rotldi 3, 3, 62
12628 ; PWR5-NEXT: and 3, 3, 6
12629 ; PWR5-NEXT: lis 7, 3855
12630 ; PWR5-NEXT: and 5, 4, 6
12631 ; PWR5-NEXT: rotldi 4, 4, 62
12632 ; PWR5-NEXT: add 3, 8, 3
12633 ; PWR5-NEXT: lis 9, 257
12634 ; PWR5-NEXT: ori 7, 7, 3855
12635 ; PWR5-NEXT: and 4, 4, 6
12636 ; PWR5-NEXT: rldicl 6, 3, 60, 4
12637 ; PWR5-NEXT: ori 9, 9, 257
12638 ; PWR5-NEXT: rldimi 7, 7, 32, 0
12639 ; PWR5-NEXT: add 4, 5, 4
12640 ; PWR5-NEXT: add 3, 3, 6
12641 ; PWR5-NEXT: rldimi 9, 9, 32, 0
12642 ; PWR5-NEXT: rldicl 5, 4, 60, 4
12643 ; PWR5-NEXT: and 3, 3, 7
12644 ; PWR5-NEXT: add 4, 4, 5
12645 ; PWR5-NEXT: mulld 3, 3, 9
12646 ; PWR5-NEXT: and 4, 4, 7
12647 ; PWR5-NEXT: rldicl 3, 3, 8, 56
12648 ; PWR5-NEXT: mulld 4, 4, 9
12649 ; PWR5-NEXT: li 5, 4
12650 ; PWR5-NEXT: subfic 3, 3, 4
12651 ; PWR5-NEXT: rldicl 4, 4, 8, 56
12652 ; PWR5-NEXT: subfe 3, 5, 5
12653 ; PWR5-NEXT: subfic 4, 4, 4
12654 ; PWR5-NEXT: subfe 4, 5, 5
12657 ; PWR6-LABEL: ugt_4_v2i64:
12659 ; PWR6-NEXT: lis 5, 21845
12660 ; PWR6-NEXT: lis 6, 13107
12661 ; PWR6-NEXT: ori 5, 5, 21845
12662 ; PWR6-NEXT: rotldi 8, 4, 63
12663 ; PWR6-NEXT: rotldi 9, 3, 63
12664 ; PWR6-NEXT: rldimi 5, 5, 32, 0
12665 ; PWR6-NEXT: and 8, 8, 5
12666 ; PWR6-NEXT: and 5, 9, 5
12667 ; PWR6-NEXT: ori 6, 6, 13107
12668 ; PWR6-NEXT: sub 3, 3, 5
12669 ; PWR6-NEXT: rldimi 6, 6, 32, 0
12670 ; PWR6-NEXT: sub 4, 4, 8
12671 ; PWR6-NEXT: and 8, 3, 6
12672 ; PWR6-NEXT: rotldi 3, 3, 62
12673 ; PWR6-NEXT: and 3, 3, 6
12674 ; PWR6-NEXT: lis 7, 3855
12675 ; PWR6-NEXT: and 5, 4, 6
12676 ; PWR6-NEXT: rotldi 4, 4, 62
12677 ; PWR6-NEXT: add 3, 8, 3
12678 ; PWR6-NEXT: lis 9, 257
12679 ; PWR6-NEXT: ori 7, 7, 3855
12680 ; PWR6-NEXT: and 4, 4, 6
12681 ; PWR6-NEXT: rldicl 6, 3, 60, 4
12682 ; PWR6-NEXT: ori 9, 9, 257
12683 ; PWR6-NEXT: rldimi 7, 7, 32, 0
12684 ; PWR6-NEXT: add 4, 5, 4
12685 ; PWR6-NEXT: add 3, 3, 6
12686 ; PWR6-NEXT: rldimi 9, 9, 32, 0
12687 ; PWR6-NEXT: rldicl 5, 4, 60, 4
12688 ; PWR6-NEXT: and 3, 3, 7
12689 ; PWR6-NEXT: add 4, 4, 5
12690 ; PWR6-NEXT: mulld 3, 3, 9
12691 ; PWR6-NEXT: and 4, 4, 7
12692 ; PWR6-NEXT: rldicl 3, 3, 8, 56
12693 ; PWR6-NEXT: mulld 4, 4, 9
12694 ; PWR6-NEXT: li 5, 4
12695 ; PWR6-NEXT: subfic 3, 3, 4
12696 ; PWR6-NEXT: rldicl 4, 4, 8, 56
12697 ; PWR6-NEXT: subfe 3, 5, 5
12698 ; PWR6-NEXT: subfic 4, 4, 4
12699 ; PWR6-NEXT: subfe 4, 5, 5
12702 ; PWR7-LABEL: ugt_4_v2i64:
12704 ; PWR7-NEXT: addi 3, 1, -32
12705 ; PWR7-NEXT: li 5, 0
12706 ; PWR7-NEXT: li 6, -1
12707 ; PWR7-NEXT: stxvd2x 34, 0, 3
12708 ; PWR7-NEXT: ld 3, -24(1)
12709 ; PWR7-NEXT: ld 4, -32(1)
12710 ; PWR7-NEXT: popcntd 3, 3
12711 ; PWR7-NEXT: popcntd 4, 4
12712 ; PWR7-NEXT: cmpldi 3, 4
12713 ; PWR7-NEXT: iselgt 3, 6, 5
12714 ; PWR7-NEXT: cmpldi 4, 4
12715 ; PWR7-NEXT: iselgt 4, 6, 5
12716 ; PWR7-NEXT: std 3, -8(1)
12717 ; PWR7-NEXT: addi 3, 1, -16
12718 ; PWR7-NEXT: std 4, -16(1)
12719 ; PWR7-NEXT: lxvd2x 34, 0, 3
12722 ; PWR8-LABEL: ugt_4_v2i64:
12724 ; PWR8-NEXT: addis 3, 2, .LCPI106_0@toc@ha
12725 ; PWR8-NEXT: vpopcntd 2, 2
12726 ; PWR8-NEXT: addi 3, 3, .LCPI106_0@toc@l
12727 ; PWR8-NEXT: lxvd2x 35, 0, 3
12728 ; PWR8-NEXT: vcmpgtud 2, 2, 3
12731 ; PWR9-LABEL: ugt_4_v2i64:
12733 ; PWR9-NEXT: addis 3, 2, .LCPI106_0@toc@ha
12734 ; PWR9-NEXT: vpopcntd 2, 2
12735 ; PWR9-NEXT: addi 3, 3, .LCPI106_0@toc@l
12736 ; PWR9-NEXT: lxv 35, 0(3)
12737 ; PWR9-NEXT: vcmpgtud 2, 2, 3
12739 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
12740 %3 = icmp ugt <2 x i64> %2, <i64 4, i64 4>
12741 %4 = sext <2 x i1> %3 to <2 x i64>
12745 define <2 x i64> @ult_5_v2i64(<2 x i64> %0) {
12746 ; PWR5-LABEL: ult_5_v2i64:
12748 ; PWR5-NEXT: lis 5, 21845
12749 ; PWR5-NEXT: lis 6, 13107
12750 ; PWR5-NEXT: ori 5, 5, 21845
12751 ; PWR5-NEXT: rotldi 8, 4, 63
12752 ; PWR5-NEXT: rotldi 9, 3, 63
12753 ; PWR5-NEXT: rldimi 5, 5, 32, 0
12754 ; PWR5-NEXT: and 8, 8, 5
12755 ; PWR5-NEXT: and 5, 9, 5
12756 ; PWR5-NEXT: ori 6, 6, 13107
12757 ; PWR5-NEXT: sub 3, 3, 5
12758 ; PWR5-NEXT: rldimi 6, 6, 32, 0
12759 ; PWR5-NEXT: sub 4, 4, 8
12760 ; PWR5-NEXT: and 8, 3, 6
12761 ; PWR5-NEXT: rotldi 3, 3, 62
12762 ; PWR5-NEXT: and 3, 3, 6
12763 ; PWR5-NEXT: lis 7, 3855
12764 ; PWR5-NEXT: and 5, 4, 6
12765 ; PWR5-NEXT: rotldi 4, 4, 62
12766 ; PWR5-NEXT: add 3, 8, 3
12767 ; PWR5-NEXT: lis 9, 257
12768 ; PWR5-NEXT: ori 7, 7, 3855
12769 ; PWR5-NEXT: and 4, 4, 6
12770 ; PWR5-NEXT: rldicl 6, 3, 60, 4
12771 ; PWR5-NEXT: ori 9, 9, 257
12772 ; PWR5-NEXT: rldimi 7, 7, 32, 0
12773 ; PWR5-NEXT: add 4, 5, 4
12774 ; PWR5-NEXT: add 3, 3, 6
12775 ; PWR5-NEXT: rldimi 9, 9, 32, 0
12776 ; PWR5-NEXT: rldicl 5, 4, 60, 4
12777 ; PWR5-NEXT: and 3, 3, 7
12778 ; PWR5-NEXT: add 4, 4, 5
12779 ; PWR5-NEXT: mulld 3, 3, 9
12780 ; PWR5-NEXT: and 4, 4, 7
12781 ; PWR5-NEXT: rldicl 3, 3, 8, 56
12782 ; PWR5-NEXT: li 5, 5
12783 ; PWR5-NEXT: mulld 4, 4, 9
12784 ; PWR5-NEXT: subc 6, 3, 5
12785 ; PWR5-NEXT: rldicl 4, 4, 8, 56
12786 ; PWR5-NEXT: subfe 3, 3, 3
12787 ; PWR5-NEXT: subc 5, 4, 5
12788 ; PWR5-NEXT: subfe 4, 4, 4
12791 ; PWR6-LABEL: ult_5_v2i64:
12793 ; PWR6-NEXT: lis 5, 21845
12794 ; PWR6-NEXT: lis 6, 13107
12795 ; PWR6-NEXT: ori 5, 5, 21845
12796 ; PWR6-NEXT: rotldi 8, 4, 63
12797 ; PWR6-NEXT: rotldi 9, 3, 63
12798 ; PWR6-NEXT: rldimi 5, 5, 32, 0
12799 ; PWR6-NEXT: and 8, 8, 5
12800 ; PWR6-NEXT: and 5, 9, 5
12801 ; PWR6-NEXT: ori 6, 6, 13107
12802 ; PWR6-NEXT: sub 3, 3, 5
12803 ; PWR6-NEXT: rldimi 6, 6, 32, 0
12804 ; PWR6-NEXT: sub 4, 4, 8
12805 ; PWR6-NEXT: and 8, 3, 6
12806 ; PWR6-NEXT: rotldi 3, 3, 62
12807 ; PWR6-NEXT: and 3, 3, 6
12808 ; PWR6-NEXT: lis 7, 3855
12809 ; PWR6-NEXT: and 5, 4, 6
12810 ; PWR6-NEXT: rotldi 4, 4, 62
12811 ; PWR6-NEXT: add 3, 8, 3
12812 ; PWR6-NEXT: lis 9, 257
12813 ; PWR6-NEXT: ori 7, 7, 3855
12814 ; PWR6-NEXT: and 4, 4, 6
12815 ; PWR6-NEXT: rldicl 6, 3, 60, 4
12816 ; PWR6-NEXT: ori 9, 9, 257
12817 ; PWR6-NEXT: rldimi 7, 7, 32, 0
12818 ; PWR6-NEXT: add 4, 5, 4
12819 ; PWR6-NEXT: add 3, 3, 6
12820 ; PWR6-NEXT: rldimi 9, 9, 32, 0
12821 ; PWR6-NEXT: rldicl 5, 4, 60, 4
12822 ; PWR6-NEXT: and 3, 3, 7
12823 ; PWR6-NEXT: add 4, 4, 5
12824 ; PWR6-NEXT: mulld 3, 3, 9
12825 ; PWR6-NEXT: and 4, 4, 7
12826 ; PWR6-NEXT: rldicl 3, 3, 8, 56
12827 ; PWR6-NEXT: li 5, 5
12828 ; PWR6-NEXT: mulld 4, 4, 9
12829 ; PWR6-NEXT: subc 6, 3, 5
12830 ; PWR6-NEXT: rldicl 4, 4, 8, 56
12831 ; PWR6-NEXT: subfe 3, 3, 3
12832 ; PWR6-NEXT: subc 5, 4, 5
12833 ; PWR6-NEXT: subfe 4, 4, 4
12836 ; PWR7-LABEL: ult_5_v2i64:
12838 ; PWR7-NEXT: addi 3, 1, -32
12839 ; PWR7-NEXT: li 5, 0
12840 ; PWR7-NEXT: li 6, -1
12841 ; PWR7-NEXT: stxvd2x 34, 0, 3
12842 ; PWR7-NEXT: ld 3, -24(1)
12843 ; PWR7-NEXT: ld 4, -32(1)
12844 ; PWR7-NEXT: popcntd 3, 3
12845 ; PWR7-NEXT: popcntd 4, 4
12846 ; PWR7-NEXT: cmpldi 3, 5
12847 ; PWR7-NEXT: isellt 3, 6, 5
12848 ; PWR7-NEXT: cmpldi 4, 5
12849 ; PWR7-NEXT: isellt 4, 6, 5
12850 ; PWR7-NEXT: std 3, -8(1)
12851 ; PWR7-NEXT: addi 3, 1, -16
12852 ; PWR7-NEXT: std 4, -16(1)
12853 ; PWR7-NEXT: lxvd2x 34, 0, 3
12856 ; PWR8-LABEL: ult_5_v2i64:
12858 ; PWR8-NEXT: addis 3, 2, .LCPI107_0@toc@ha
12859 ; PWR8-NEXT: vpopcntd 2, 2
12860 ; PWR8-NEXT: addi 3, 3, .LCPI107_0@toc@l
12861 ; PWR8-NEXT: lxvd2x 35, 0, 3
12862 ; PWR8-NEXT: vcmpgtud 2, 3, 2
12865 ; PWR9-LABEL: ult_5_v2i64:
12867 ; PWR9-NEXT: addis 3, 2, .LCPI107_0@toc@ha
12868 ; PWR9-NEXT: vpopcntd 2, 2
12869 ; PWR9-NEXT: addi 3, 3, .LCPI107_0@toc@l
12870 ; PWR9-NEXT: lxv 35, 0(3)
12871 ; PWR9-NEXT: vcmpgtud 2, 3, 2
12873 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
12874 %3 = icmp ult <2 x i64> %2, <i64 5, i64 5>
12875 %4 = sext <2 x i1> %3 to <2 x i64>
12879 define <2 x i64> @ugt_5_v2i64(<2 x i64> %0) {
12880 ; PWR5-LABEL: ugt_5_v2i64:
12882 ; PWR5-NEXT: lis 5, 21845
12883 ; PWR5-NEXT: lis 6, 13107
12884 ; PWR5-NEXT: ori 5, 5, 21845
12885 ; PWR5-NEXT: rotldi 8, 4, 63
12886 ; PWR5-NEXT: rotldi 9, 3, 63
12887 ; PWR5-NEXT: rldimi 5, 5, 32, 0
12888 ; PWR5-NEXT: and 8, 8, 5
12889 ; PWR5-NEXT: and 5, 9, 5
12890 ; PWR5-NEXT: ori 6, 6, 13107
12891 ; PWR5-NEXT: sub 3, 3, 5
12892 ; PWR5-NEXT: rldimi 6, 6, 32, 0
12893 ; PWR5-NEXT: sub 4, 4, 8
12894 ; PWR5-NEXT: and 8, 3, 6
12895 ; PWR5-NEXT: rotldi 3, 3, 62
12896 ; PWR5-NEXT: and 3, 3, 6
12897 ; PWR5-NEXT: lis 7, 3855
12898 ; PWR5-NEXT: and 5, 4, 6
12899 ; PWR5-NEXT: rotldi 4, 4, 62
12900 ; PWR5-NEXT: add 3, 8, 3
12901 ; PWR5-NEXT: lis 9, 257
12902 ; PWR5-NEXT: ori 7, 7, 3855
12903 ; PWR5-NEXT: and 4, 4, 6
12904 ; PWR5-NEXT: rldicl 6, 3, 60, 4
12905 ; PWR5-NEXT: ori 9, 9, 257
12906 ; PWR5-NEXT: rldimi 7, 7, 32, 0
12907 ; PWR5-NEXT: add 4, 5, 4
12908 ; PWR5-NEXT: add 3, 3, 6
12909 ; PWR5-NEXT: rldimi 9, 9, 32, 0
12910 ; PWR5-NEXT: rldicl 5, 4, 60, 4
12911 ; PWR5-NEXT: and 3, 3, 7
12912 ; PWR5-NEXT: add 4, 4, 5
12913 ; PWR5-NEXT: mulld 3, 3, 9
12914 ; PWR5-NEXT: and 4, 4, 7
12915 ; PWR5-NEXT: rldicl 3, 3, 8, 56
12916 ; PWR5-NEXT: mulld 4, 4, 9
12917 ; PWR5-NEXT: li 5, 5
12918 ; PWR5-NEXT: subfic 3, 3, 5
12919 ; PWR5-NEXT: rldicl 4, 4, 8, 56
12920 ; PWR5-NEXT: subfe 3, 5, 5
12921 ; PWR5-NEXT: subfic 4, 4, 5
12922 ; PWR5-NEXT: subfe 4, 5, 5
12925 ; PWR6-LABEL: ugt_5_v2i64:
12927 ; PWR6-NEXT: lis 5, 21845
12928 ; PWR6-NEXT: lis 6, 13107
12929 ; PWR6-NEXT: ori 5, 5, 21845
12930 ; PWR6-NEXT: rotldi 8, 4, 63
12931 ; PWR6-NEXT: rotldi 9, 3, 63
12932 ; PWR6-NEXT: rldimi 5, 5, 32, 0
12933 ; PWR6-NEXT: and 8, 8, 5
12934 ; PWR6-NEXT: and 5, 9, 5
12935 ; PWR6-NEXT: ori 6, 6, 13107
12936 ; PWR6-NEXT: sub 3, 3, 5
12937 ; PWR6-NEXT: rldimi 6, 6, 32, 0
12938 ; PWR6-NEXT: sub 4, 4, 8
12939 ; PWR6-NEXT: and 8, 3, 6
12940 ; PWR6-NEXT: rotldi 3, 3, 62
12941 ; PWR6-NEXT: and 3, 3, 6
12942 ; PWR6-NEXT: lis 7, 3855
12943 ; PWR6-NEXT: and 5, 4, 6
12944 ; PWR6-NEXT: rotldi 4, 4, 62
12945 ; PWR6-NEXT: add 3, 8, 3
12946 ; PWR6-NEXT: lis 9, 257
12947 ; PWR6-NEXT: ori 7, 7, 3855
12948 ; PWR6-NEXT: and 4, 4, 6
12949 ; PWR6-NEXT: rldicl 6, 3, 60, 4
12950 ; PWR6-NEXT: ori 9, 9, 257
12951 ; PWR6-NEXT: rldimi 7, 7, 32, 0
12952 ; PWR6-NEXT: add 4, 5, 4
12953 ; PWR6-NEXT: add 3, 3, 6
12954 ; PWR6-NEXT: rldimi 9, 9, 32, 0
12955 ; PWR6-NEXT: rldicl 5, 4, 60, 4
12956 ; PWR6-NEXT: and 3, 3, 7
12957 ; PWR6-NEXT: add 4, 4, 5
12958 ; PWR6-NEXT: mulld 3, 3, 9
12959 ; PWR6-NEXT: and 4, 4, 7
12960 ; PWR6-NEXT: rldicl 3, 3, 8, 56
12961 ; PWR6-NEXT: mulld 4, 4, 9
12962 ; PWR6-NEXT: li 5, 5
12963 ; PWR6-NEXT: subfic 3, 3, 5
12964 ; PWR6-NEXT: rldicl 4, 4, 8, 56
12965 ; PWR6-NEXT: subfe 3, 5, 5
12966 ; PWR6-NEXT: subfic 4, 4, 5
12967 ; PWR6-NEXT: subfe 4, 5, 5
12970 ; PWR7-LABEL: ugt_5_v2i64:
12972 ; PWR7-NEXT: addi 3, 1, -32
12973 ; PWR7-NEXT: li 5, 0
12974 ; PWR7-NEXT: li 6, -1
12975 ; PWR7-NEXT: stxvd2x 34, 0, 3
12976 ; PWR7-NEXT: ld 3, -24(1)
12977 ; PWR7-NEXT: ld 4, -32(1)
12978 ; PWR7-NEXT: popcntd 3, 3
12979 ; PWR7-NEXT: popcntd 4, 4
12980 ; PWR7-NEXT: cmpldi 3, 5
12981 ; PWR7-NEXT: iselgt 3, 6, 5
12982 ; PWR7-NEXT: cmpldi 4, 5
12983 ; PWR7-NEXT: iselgt 4, 6, 5
12984 ; PWR7-NEXT: std 3, -8(1)
12985 ; PWR7-NEXT: addi 3, 1, -16
12986 ; PWR7-NEXT: std 4, -16(1)
12987 ; PWR7-NEXT: lxvd2x 34, 0, 3
12990 ; PWR8-LABEL: ugt_5_v2i64:
12992 ; PWR8-NEXT: addis 3, 2, .LCPI108_0@toc@ha
12993 ; PWR8-NEXT: vpopcntd 2, 2
12994 ; PWR8-NEXT: addi 3, 3, .LCPI108_0@toc@l
12995 ; PWR8-NEXT: lxvd2x 35, 0, 3
12996 ; PWR8-NEXT: vcmpgtud 2, 2, 3
12999 ; PWR9-LABEL: ugt_5_v2i64:
13001 ; PWR9-NEXT: addis 3, 2, .LCPI108_0@toc@ha
13002 ; PWR9-NEXT: vpopcntd 2, 2
13003 ; PWR9-NEXT: addi 3, 3, .LCPI108_0@toc@l
13004 ; PWR9-NEXT: lxv 35, 0(3)
13005 ; PWR9-NEXT: vcmpgtud 2, 2, 3
13007 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
13008 %3 = icmp ugt <2 x i64> %2, <i64 5, i64 5>
13009 %4 = sext <2 x i1> %3 to <2 x i64>
13013 define <2 x i64> @ult_6_v2i64(<2 x i64> %0) {
13014 ; PWR5-LABEL: ult_6_v2i64:
13016 ; PWR5-NEXT: lis 5, 21845
13017 ; PWR5-NEXT: lis 6, 13107
13018 ; PWR5-NEXT: ori 5, 5, 21845
13019 ; PWR5-NEXT: rotldi 8, 4, 63
13020 ; PWR5-NEXT: rotldi 9, 3, 63
13021 ; PWR5-NEXT: rldimi 5, 5, 32, 0
13022 ; PWR5-NEXT: and 8, 8, 5
13023 ; PWR5-NEXT: and 5, 9, 5
13024 ; PWR5-NEXT: ori 6, 6, 13107
13025 ; PWR5-NEXT: sub 3, 3, 5
13026 ; PWR5-NEXT: rldimi 6, 6, 32, 0
13027 ; PWR5-NEXT: sub 4, 4, 8
13028 ; PWR5-NEXT: and 8, 3, 6
13029 ; PWR5-NEXT: rotldi 3, 3, 62
13030 ; PWR5-NEXT: and 3, 3, 6
13031 ; PWR5-NEXT: lis 7, 3855
13032 ; PWR5-NEXT: and 5, 4, 6
13033 ; PWR5-NEXT: rotldi 4, 4, 62
13034 ; PWR5-NEXT: add 3, 8, 3
13035 ; PWR5-NEXT: lis 9, 257
13036 ; PWR5-NEXT: ori 7, 7, 3855
13037 ; PWR5-NEXT: and 4, 4, 6
13038 ; PWR5-NEXT: rldicl 6, 3, 60, 4
13039 ; PWR5-NEXT: ori 9, 9, 257
13040 ; PWR5-NEXT: rldimi 7, 7, 32, 0
13041 ; PWR5-NEXT: add 4, 5, 4
13042 ; PWR5-NEXT: add 3, 3, 6
13043 ; PWR5-NEXT: rldimi 9, 9, 32, 0
13044 ; PWR5-NEXT: rldicl 5, 4, 60, 4
13045 ; PWR5-NEXT: and 3, 3, 7
13046 ; PWR5-NEXT: add 4, 4, 5
13047 ; PWR5-NEXT: mulld 3, 3, 9
13048 ; PWR5-NEXT: and 4, 4, 7
13049 ; PWR5-NEXT: rldicl 3, 3, 8, 56
13050 ; PWR5-NEXT: li 5, 6
13051 ; PWR5-NEXT: mulld 4, 4, 9
13052 ; PWR5-NEXT: subc 6, 3, 5
13053 ; PWR5-NEXT: rldicl 4, 4, 8, 56
13054 ; PWR5-NEXT: subfe 3, 3, 3
13055 ; PWR5-NEXT: subc 5, 4, 5
13056 ; PWR5-NEXT: subfe 4, 4, 4
13059 ; PWR6-LABEL: ult_6_v2i64:
13061 ; PWR6-NEXT: lis 5, 21845
13062 ; PWR6-NEXT: lis 6, 13107
13063 ; PWR6-NEXT: ori 5, 5, 21845
13064 ; PWR6-NEXT: rotldi 8, 4, 63
13065 ; PWR6-NEXT: rotldi 9, 3, 63
13066 ; PWR6-NEXT: rldimi 5, 5, 32, 0
13067 ; PWR6-NEXT: and 8, 8, 5
13068 ; PWR6-NEXT: and 5, 9, 5
13069 ; PWR6-NEXT: ori 6, 6, 13107
13070 ; PWR6-NEXT: sub 3, 3, 5
13071 ; PWR6-NEXT: rldimi 6, 6, 32, 0
13072 ; PWR6-NEXT: sub 4, 4, 8
13073 ; PWR6-NEXT: and 8, 3, 6
13074 ; PWR6-NEXT: rotldi 3, 3, 62
13075 ; PWR6-NEXT: and 3, 3, 6
13076 ; PWR6-NEXT: lis 7, 3855
13077 ; PWR6-NEXT: and 5, 4, 6
13078 ; PWR6-NEXT: rotldi 4, 4, 62
13079 ; PWR6-NEXT: add 3, 8, 3
13080 ; PWR6-NEXT: lis 9, 257
13081 ; PWR6-NEXT: ori 7, 7, 3855
13082 ; PWR6-NEXT: and 4, 4, 6
13083 ; PWR6-NEXT: rldicl 6, 3, 60, 4
13084 ; PWR6-NEXT: ori 9, 9, 257
13085 ; PWR6-NEXT: rldimi 7, 7, 32, 0
13086 ; PWR6-NEXT: add 4, 5, 4
13087 ; PWR6-NEXT: add 3, 3, 6
13088 ; PWR6-NEXT: rldimi 9, 9, 32, 0
13089 ; PWR6-NEXT: rldicl 5, 4, 60, 4
13090 ; PWR6-NEXT: and 3, 3, 7
13091 ; PWR6-NEXT: add 4, 4, 5
13092 ; PWR6-NEXT: mulld 3, 3, 9
13093 ; PWR6-NEXT: and 4, 4, 7
13094 ; PWR6-NEXT: rldicl 3, 3, 8, 56
13095 ; PWR6-NEXT: li 5, 6
13096 ; PWR6-NEXT: mulld 4, 4, 9
13097 ; PWR6-NEXT: subc 6, 3, 5
13098 ; PWR6-NEXT: rldicl 4, 4, 8, 56
13099 ; PWR6-NEXT: subfe 3, 3, 3
13100 ; PWR6-NEXT: subc 5, 4, 5
13101 ; PWR6-NEXT: subfe 4, 4, 4
13104 ; PWR7-LABEL: ult_6_v2i64:
13106 ; PWR7-NEXT: addi 3, 1, -32
13107 ; PWR7-NEXT: li 5, 0
13108 ; PWR7-NEXT: li 6, -1
13109 ; PWR7-NEXT: stxvd2x 34, 0, 3
13110 ; PWR7-NEXT: ld 3, -24(1)
13111 ; PWR7-NEXT: ld 4, -32(1)
13112 ; PWR7-NEXT: popcntd 3, 3
13113 ; PWR7-NEXT: popcntd 4, 4
13114 ; PWR7-NEXT: cmpldi 3, 6
13115 ; PWR7-NEXT: isellt 3, 6, 5
13116 ; PWR7-NEXT: cmpldi 4, 6
13117 ; PWR7-NEXT: isellt 4, 6, 5
13118 ; PWR7-NEXT: std 3, -8(1)
13119 ; PWR7-NEXT: addi 3, 1, -16
13120 ; PWR7-NEXT: std 4, -16(1)
13121 ; PWR7-NEXT: lxvd2x 34, 0, 3
13124 ; PWR8-LABEL: ult_6_v2i64:
13126 ; PWR8-NEXT: addis 3, 2, .LCPI109_0@toc@ha
13127 ; PWR8-NEXT: vpopcntd 2, 2
13128 ; PWR8-NEXT: addi 3, 3, .LCPI109_0@toc@l
13129 ; PWR8-NEXT: lxvd2x 35, 0, 3
13130 ; PWR8-NEXT: vcmpgtud 2, 3, 2
13133 ; PWR9-LABEL: ult_6_v2i64:
13135 ; PWR9-NEXT: addis 3, 2, .LCPI109_0@toc@ha
13136 ; PWR9-NEXT: vpopcntd 2, 2
13137 ; PWR9-NEXT: addi 3, 3, .LCPI109_0@toc@l
13138 ; PWR9-NEXT: lxv 35, 0(3)
13139 ; PWR9-NEXT: vcmpgtud 2, 3, 2
13141 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
13142 %3 = icmp ult <2 x i64> %2, <i64 6, i64 6>
13143 %4 = sext <2 x i1> %3 to <2 x i64>
13147 define <2 x i64> @ugt_6_v2i64(<2 x i64> %0) {
13148 ; PWR5-LABEL: ugt_6_v2i64:
13150 ; PWR5-NEXT: lis 5, 21845
13151 ; PWR5-NEXT: lis 6, 13107
13152 ; PWR5-NEXT: ori 5, 5, 21845
13153 ; PWR5-NEXT: rotldi 8, 4, 63
13154 ; PWR5-NEXT: rotldi 9, 3, 63
13155 ; PWR5-NEXT: rldimi 5, 5, 32, 0
13156 ; PWR5-NEXT: and 8, 8, 5
13157 ; PWR5-NEXT: and 5, 9, 5
13158 ; PWR5-NEXT: ori 6, 6, 13107
13159 ; PWR5-NEXT: sub 3, 3, 5
13160 ; PWR5-NEXT: rldimi 6, 6, 32, 0
13161 ; PWR5-NEXT: sub 4, 4, 8
13162 ; PWR5-NEXT: and 8, 3, 6
13163 ; PWR5-NEXT: rotldi 3, 3, 62
13164 ; PWR5-NEXT: and 3, 3, 6
13165 ; PWR5-NEXT: lis 7, 3855
13166 ; PWR5-NEXT: and 5, 4, 6
13167 ; PWR5-NEXT: rotldi 4, 4, 62
13168 ; PWR5-NEXT: add 3, 8, 3
13169 ; PWR5-NEXT: lis 9, 257
13170 ; PWR5-NEXT: ori 7, 7, 3855
13171 ; PWR5-NEXT: and 4, 4, 6
13172 ; PWR5-NEXT: rldicl 6, 3, 60, 4
13173 ; PWR5-NEXT: ori 9, 9, 257
13174 ; PWR5-NEXT: rldimi 7, 7, 32, 0
13175 ; PWR5-NEXT: add 4, 5, 4
13176 ; PWR5-NEXT: add 3, 3, 6
13177 ; PWR5-NEXT: rldimi 9, 9, 32, 0
13178 ; PWR5-NEXT: rldicl 5, 4, 60, 4
13179 ; PWR5-NEXT: and 3, 3, 7
13180 ; PWR5-NEXT: add 4, 4, 5
13181 ; PWR5-NEXT: mulld 3, 3, 9
13182 ; PWR5-NEXT: and 4, 4, 7
13183 ; PWR5-NEXT: rldicl 3, 3, 8, 56
13184 ; PWR5-NEXT: mulld 4, 4, 9
13185 ; PWR5-NEXT: li 5, 6
13186 ; PWR5-NEXT: subfic 3, 3, 6
13187 ; PWR5-NEXT: rldicl 4, 4, 8, 56
13188 ; PWR5-NEXT: subfe 3, 5, 5
13189 ; PWR5-NEXT: subfic 4, 4, 6
13190 ; PWR5-NEXT: subfe 4, 5, 5
13193 ; PWR6-LABEL: ugt_6_v2i64:
13195 ; PWR6-NEXT: lis 5, 21845
13196 ; PWR6-NEXT: lis 6, 13107
13197 ; PWR6-NEXT: ori 5, 5, 21845
13198 ; PWR6-NEXT: rotldi 8, 4, 63
13199 ; PWR6-NEXT: rotldi 9, 3, 63
13200 ; PWR6-NEXT: rldimi 5, 5, 32, 0
13201 ; PWR6-NEXT: and 8, 8, 5
13202 ; PWR6-NEXT: and 5, 9, 5
13203 ; PWR6-NEXT: ori 6, 6, 13107
13204 ; PWR6-NEXT: sub 3, 3, 5
13205 ; PWR6-NEXT: rldimi 6, 6, 32, 0
13206 ; PWR6-NEXT: sub 4, 4, 8
13207 ; PWR6-NEXT: and 8, 3, 6
13208 ; PWR6-NEXT: rotldi 3, 3, 62
13209 ; PWR6-NEXT: and 3, 3, 6
13210 ; PWR6-NEXT: lis 7, 3855
13211 ; PWR6-NEXT: and 5, 4, 6
13212 ; PWR6-NEXT: rotldi 4, 4, 62
13213 ; PWR6-NEXT: add 3, 8, 3
13214 ; PWR6-NEXT: lis 9, 257
13215 ; PWR6-NEXT: ori 7, 7, 3855
13216 ; PWR6-NEXT: and 4, 4, 6
13217 ; PWR6-NEXT: rldicl 6, 3, 60, 4
13218 ; PWR6-NEXT: ori 9, 9, 257
13219 ; PWR6-NEXT: rldimi 7, 7, 32, 0
13220 ; PWR6-NEXT: add 4, 5, 4
13221 ; PWR6-NEXT: add 3, 3, 6
13222 ; PWR6-NEXT: rldimi 9, 9, 32, 0
13223 ; PWR6-NEXT: rldicl 5, 4, 60, 4
13224 ; PWR6-NEXT: and 3, 3, 7
13225 ; PWR6-NEXT: add 4, 4, 5
13226 ; PWR6-NEXT: mulld 3, 3, 9
13227 ; PWR6-NEXT: and 4, 4, 7
13228 ; PWR6-NEXT: rldicl 3, 3, 8, 56
13229 ; PWR6-NEXT: mulld 4, 4, 9
13230 ; PWR6-NEXT: li 5, 6
13231 ; PWR6-NEXT: subfic 3, 3, 6
13232 ; PWR6-NEXT: rldicl 4, 4, 8, 56
13233 ; PWR6-NEXT: subfe 3, 5, 5
13234 ; PWR6-NEXT: subfic 4, 4, 6
13235 ; PWR6-NEXT: subfe 4, 5, 5
13238 ; PWR7-LABEL: ugt_6_v2i64:
13240 ; PWR7-NEXT: addi 3, 1, -32
13241 ; PWR7-NEXT: li 5, 0
13242 ; PWR7-NEXT: li 6, -1
13243 ; PWR7-NEXT: stxvd2x 34, 0, 3
13244 ; PWR7-NEXT: ld 3, -24(1)
13245 ; PWR7-NEXT: ld 4, -32(1)
13246 ; PWR7-NEXT: popcntd 3, 3
13247 ; PWR7-NEXT: popcntd 4, 4
13248 ; PWR7-NEXT: cmpldi 3, 6
13249 ; PWR7-NEXT: iselgt 3, 6, 5
13250 ; PWR7-NEXT: cmpldi 4, 6
13251 ; PWR7-NEXT: iselgt 4, 6, 5
13252 ; PWR7-NEXT: std 3, -8(1)
13253 ; PWR7-NEXT: addi 3, 1, -16
13254 ; PWR7-NEXT: std 4, -16(1)
13255 ; PWR7-NEXT: lxvd2x 34, 0, 3
13258 ; PWR8-LABEL: ugt_6_v2i64:
13260 ; PWR8-NEXT: addis 3, 2, .LCPI110_0@toc@ha
13261 ; PWR8-NEXT: vpopcntd 2, 2
13262 ; PWR8-NEXT: addi 3, 3, .LCPI110_0@toc@l
13263 ; PWR8-NEXT: lxvd2x 35, 0, 3
13264 ; PWR8-NEXT: vcmpgtud 2, 2, 3
13267 ; PWR9-LABEL: ugt_6_v2i64:
13269 ; PWR9-NEXT: addis 3, 2, .LCPI110_0@toc@ha
13270 ; PWR9-NEXT: vpopcntd 2, 2
13271 ; PWR9-NEXT: addi 3, 3, .LCPI110_0@toc@l
13272 ; PWR9-NEXT: lxv 35, 0(3)
13273 ; PWR9-NEXT: vcmpgtud 2, 2, 3
13275 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
13276 %3 = icmp ugt <2 x i64> %2, <i64 6, i64 6>
13277 %4 = sext <2 x i1> %3 to <2 x i64>
13281 define <2 x i64> @ult_7_v2i64(<2 x i64> %0) {
13282 ; PWR5-LABEL: ult_7_v2i64:
13284 ; PWR5-NEXT: lis 5, 21845
13285 ; PWR5-NEXT: lis 6, 13107
13286 ; PWR5-NEXT: ori 5, 5, 21845
13287 ; PWR5-NEXT: rotldi 8, 4, 63
13288 ; PWR5-NEXT: rotldi 9, 3, 63
13289 ; PWR5-NEXT: rldimi 5, 5, 32, 0
13290 ; PWR5-NEXT: and 8, 8, 5
13291 ; PWR5-NEXT: and 5, 9, 5
13292 ; PWR5-NEXT: ori 6, 6, 13107
13293 ; PWR5-NEXT: sub 3, 3, 5
13294 ; PWR5-NEXT: rldimi 6, 6, 32, 0
13295 ; PWR5-NEXT: sub 4, 4, 8
13296 ; PWR5-NEXT: and 8, 3, 6
13297 ; PWR5-NEXT: rotldi 3, 3, 62
13298 ; PWR5-NEXT: and 3, 3, 6
13299 ; PWR5-NEXT: lis 7, 3855
13300 ; PWR5-NEXT: and 5, 4, 6
13301 ; PWR5-NEXT: rotldi 4, 4, 62
13302 ; PWR5-NEXT: add 3, 8, 3
13303 ; PWR5-NEXT: lis 9, 257
13304 ; PWR5-NEXT: ori 7, 7, 3855
13305 ; PWR5-NEXT: and 4, 4, 6
13306 ; PWR5-NEXT: rldicl 6, 3, 60, 4
13307 ; PWR5-NEXT: ori 9, 9, 257
13308 ; PWR5-NEXT: rldimi 7, 7, 32, 0
13309 ; PWR5-NEXT: add 4, 5, 4
13310 ; PWR5-NEXT: add 3, 3, 6
13311 ; PWR5-NEXT: rldimi 9, 9, 32, 0
13312 ; PWR5-NEXT: rldicl 5, 4, 60, 4
13313 ; PWR5-NEXT: and 3, 3, 7
13314 ; PWR5-NEXT: add 4, 4, 5
13315 ; PWR5-NEXT: mulld 3, 3, 9
13316 ; PWR5-NEXT: and 4, 4, 7
13317 ; PWR5-NEXT: rldicl 3, 3, 8, 56
13318 ; PWR5-NEXT: li 5, 7
13319 ; PWR5-NEXT: mulld 4, 4, 9
13320 ; PWR5-NEXT: subc 6, 3, 5
13321 ; PWR5-NEXT: rldicl 4, 4, 8, 56
13322 ; PWR5-NEXT: subfe 3, 3, 3
13323 ; PWR5-NEXT: subc 5, 4, 5
13324 ; PWR5-NEXT: subfe 4, 4, 4
13327 ; PWR6-LABEL: ult_7_v2i64:
13329 ; PWR6-NEXT: lis 5, 21845
13330 ; PWR6-NEXT: lis 6, 13107
13331 ; PWR6-NEXT: ori 5, 5, 21845
13332 ; PWR6-NEXT: rotldi 8, 4, 63
13333 ; PWR6-NEXT: rotldi 9, 3, 63
13334 ; PWR6-NEXT: rldimi 5, 5, 32, 0
13335 ; PWR6-NEXT: and 8, 8, 5
13336 ; PWR6-NEXT: and 5, 9, 5
13337 ; PWR6-NEXT: ori 6, 6, 13107
13338 ; PWR6-NEXT: sub 3, 3, 5
13339 ; PWR6-NEXT: rldimi 6, 6, 32, 0
13340 ; PWR6-NEXT: sub 4, 4, 8
13341 ; PWR6-NEXT: and 8, 3, 6
13342 ; PWR6-NEXT: rotldi 3, 3, 62
13343 ; PWR6-NEXT: and 3, 3, 6
13344 ; PWR6-NEXT: lis 7, 3855
13345 ; PWR6-NEXT: and 5, 4, 6
13346 ; PWR6-NEXT: rotldi 4, 4, 62
13347 ; PWR6-NEXT: add 3, 8, 3
13348 ; PWR6-NEXT: lis 9, 257
13349 ; PWR6-NEXT: ori 7, 7, 3855
13350 ; PWR6-NEXT: and 4, 4, 6
13351 ; PWR6-NEXT: rldicl 6, 3, 60, 4
13352 ; PWR6-NEXT: ori 9, 9, 257
13353 ; PWR6-NEXT: rldimi 7, 7, 32, 0
13354 ; PWR6-NEXT: add 4, 5, 4
13355 ; PWR6-NEXT: add 3, 3, 6
13356 ; PWR6-NEXT: rldimi 9, 9, 32, 0
13357 ; PWR6-NEXT: rldicl 5, 4, 60, 4
13358 ; PWR6-NEXT: and 3, 3, 7
13359 ; PWR6-NEXT: add 4, 4, 5
13360 ; PWR6-NEXT: mulld 3, 3, 9
13361 ; PWR6-NEXT: and 4, 4, 7
13362 ; PWR6-NEXT: rldicl 3, 3, 8, 56
13363 ; PWR6-NEXT: li 5, 7
13364 ; PWR6-NEXT: mulld 4, 4, 9
13365 ; PWR6-NEXT: subc 6, 3, 5
13366 ; PWR6-NEXT: rldicl 4, 4, 8, 56
13367 ; PWR6-NEXT: subfe 3, 3, 3
13368 ; PWR6-NEXT: subc 5, 4, 5
13369 ; PWR6-NEXT: subfe 4, 4, 4
13372 ; PWR7-LABEL: ult_7_v2i64:
13374 ; PWR7-NEXT: addi 3, 1, -32
13375 ; PWR7-NEXT: li 5, 0
13376 ; PWR7-NEXT: li 6, -1
13377 ; PWR7-NEXT: stxvd2x 34, 0, 3
13378 ; PWR7-NEXT: ld 3, -24(1)
13379 ; PWR7-NEXT: ld 4, -32(1)
13380 ; PWR7-NEXT: popcntd 3, 3
13381 ; PWR7-NEXT: popcntd 4, 4
13382 ; PWR7-NEXT: cmpldi 3, 7
13383 ; PWR7-NEXT: isellt 3, 6, 5
13384 ; PWR7-NEXT: cmpldi 4, 7
13385 ; PWR7-NEXT: isellt 4, 6, 5
13386 ; PWR7-NEXT: std 3, -8(1)
13387 ; PWR7-NEXT: addi 3, 1, -16
13388 ; PWR7-NEXT: std 4, -16(1)
13389 ; PWR7-NEXT: lxvd2x 34, 0, 3
13392 ; PWR8-LABEL: ult_7_v2i64:
13394 ; PWR8-NEXT: addis 3, 2, .LCPI111_0@toc@ha
13395 ; PWR8-NEXT: vpopcntd 2, 2
13396 ; PWR8-NEXT: addi 3, 3, .LCPI111_0@toc@l
13397 ; PWR8-NEXT: lxvd2x 35, 0, 3
13398 ; PWR8-NEXT: vcmpgtud 2, 3, 2
13401 ; PWR9-LABEL: ult_7_v2i64:
13403 ; PWR9-NEXT: addis 3, 2, .LCPI111_0@toc@ha
13404 ; PWR9-NEXT: vpopcntd 2, 2
13405 ; PWR9-NEXT: addi 3, 3, .LCPI111_0@toc@l
13406 ; PWR9-NEXT: lxv 35, 0(3)
13407 ; PWR9-NEXT: vcmpgtud 2, 3, 2
13409 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
13410 %3 = icmp ult <2 x i64> %2, <i64 7, i64 7>
13411 %4 = sext <2 x i1> %3 to <2 x i64>
13415 define <2 x i64> @ugt_7_v2i64(<2 x i64> %0) {
13416 ; PWR5-LABEL: ugt_7_v2i64:
13418 ; PWR5-NEXT: lis 5, 21845
13419 ; PWR5-NEXT: lis 6, 13107
13420 ; PWR5-NEXT: ori 5, 5, 21845
13421 ; PWR5-NEXT: rotldi 8, 4, 63
13422 ; PWR5-NEXT: rotldi 9, 3, 63
13423 ; PWR5-NEXT: rldimi 5, 5, 32, 0
13424 ; PWR5-NEXT: and 8, 8, 5
13425 ; PWR5-NEXT: and 5, 9, 5
13426 ; PWR5-NEXT: ori 6, 6, 13107
13427 ; PWR5-NEXT: sub 3, 3, 5
13428 ; PWR5-NEXT: rldimi 6, 6, 32, 0
13429 ; PWR5-NEXT: sub 4, 4, 8
13430 ; PWR5-NEXT: and 8, 3, 6
13431 ; PWR5-NEXT: rotldi 3, 3, 62
13432 ; PWR5-NEXT: and 3, 3, 6
13433 ; PWR5-NEXT: lis 7, 3855
13434 ; PWR5-NEXT: and 5, 4, 6
13435 ; PWR5-NEXT: rotldi 4, 4, 62
13436 ; PWR5-NEXT: add 3, 8, 3
13437 ; PWR5-NEXT: lis 9, 257
13438 ; PWR5-NEXT: ori 7, 7, 3855
13439 ; PWR5-NEXT: and 4, 4, 6
13440 ; PWR5-NEXT: rldicl 6, 3, 60, 4
13441 ; PWR5-NEXT: ori 9, 9, 257
13442 ; PWR5-NEXT: rldimi 7, 7, 32, 0
13443 ; PWR5-NEXT: add 4, 5, 4
13444 ; PWR5-NEXT: add 3, 3, 6
13445 ; PWR5-NEXT: rldimi 9, 9, 32, 0
13446 ; PWR5-NEXT: rldicl 5, 4, 60, 4
13447 ; PWR5-NEXT: and 3, 3, 7
13448 ; PWR5-NEXT: add 4, 4, 5
13449 ; PWR5-NEXT: mulld 3, 3, 9
13450 ; PWR5-NEXT: and 4, 4, 7
13451 ; PWR5-NEXT: rldicl 3, 3, 8, 56
13452 ; PWR5-NEXT: mulld 4, 4, 9
13453 ; PWR5-NEXT: li 5, 7
13454 ; PWR5-NEXT: subfic 3, 3, 7
13455 ; PWR5-NEXT: rldicl 4, 4, 8, 56
13456 ; PWR5-NEXT: subfe 3, 5, 5
13457 ; PWR5-NEXT: subfic 4, 4, 7
13458 ; PWR5-NEXT: subfe 4, 5, 5
13461 ; PWR6-LABEL: ugt_7_v2i64:
13463 ; PWR6-NEXT: lis 5, 21845
13464 ; PWR6-NEXT: lis 6, 13107
13465 ; PWR6-NEXT: ori 5, 5, 21845
13466 ; PWR6-NEXT: rotldi 8, 4, 63
13467 ; PWR6-NEXT: rotldi 9, 3, 63
13468 ; PWR6-NEXT: rldimi 5, 5, 32, 0
13469 ; PWR6-NEXT: and 8, 8, 5
13470 ; PWR6-NEXT: and 5, 9, 5
13471 ; PWR6-NEXT: ori 6, 6, 13107
13472 ; PWR6-NEXT: sub 3, 3, 5
13473 ; PWR6-NEXT: rldimi 6, 6, 32, 0
13474 ; PWR6-NEXT: sub 4, 4, 8
13475 ; PWR6-NEXT: and 8, 3, 6
13476 ; PWR6-NEXT: rotldi 3, 3, 62
13477 ; PWR6-NEXT: and 3, 3, 6
13478 ; PWR6-NEXT: lis 7, 3855
13479 ; PWR6-NEXT: and 5, 4, 6
13480 ; PWR6-NEXT: rotldi 4, 4, 62
13481 ; PWR6-NEXT: add 3, 8, 3
13482 ; PWR6-NEXT: lis 9, 257
13483 ; PWR6-NEXT: ori 7, 7, 3855
13484 ; PWR6-NEXT: and 4, 4, 6
13485 ; PWR6-NEXT: rldicl 6, 3, 60, 4
13486 ; PWR6-NEXT: ori 9, 9, 257
13487 ; PWR6-NEXT: rldimi 7, 7, 32, 0
13488 ; PWR6-NEXT: add 4, 5, 4
13489 ; PWR6-NEXT: add 3, 3, 6
13490 ; PWR6-NEXT: rldimi 9, 9, 32, 0
13491 ; PWR6-NEXT: rldicl 5, 4, 60, 4
13492 ; PWR6-NEXT: and 3, 3, 7
13493 ; PWR6-NEXT: add 4, 4, 5
13494 ; PWR6-NEXT: mulld 3, 3, 9
13495 ; PWR6-NEXT: and 4, 4, 7
13496 ; PWR6-NEXT: rldicl 3, 3, 8, 56
13497 ; PWR6-NEXT: mulld 4, 4, 9
13498 ; PWR6-NEXT: li 5, 7
13499 ; PWR6-NEXT: subfic 3, 3, 7
13500 ; PWR6-NEXT: rldicl 4, 4, 8, 56
13501 ; PWR6-NEXT: subfe 3, 5, 5
13502 ; PWR6-NEXT: subfic 4, 4, 7
13503 ; PWR6-NEXT: subfe 4, 5, 5
13506 ; PWR7-LABEL: ugt_7_v2i64:
13508 ; PWR7-NEXT: addi 3, 1, -32
13509 ; PWR7-NEXT: li 5, 0
13510 ; PWR7-NEXT: li 6, -1
13511 ; PWR7-NEXT: stxvd2x 34, 0, 3
13512 ; PWR7-NEXT: ld 3, -24(1)
13513 ; PWR7-NEXT: ld 4, -32(1)
13514 ; PWR7-NEXT: popcntd 3, 3
13515 ; PWR7-NEXT: popcntd 4, 4
13516 ; PWR7-NEXT: cmpldi 3, 7
13517 ; PWR7-NEXT: iselgt 3, 6, 5
13518 ; PWR7-NEXT: cmpldi 4, 7
13519 ; PWR7-NEXT: iselgt 4, 6, 5
13520 ; PWR7-NEXT: std 3, -8(1)
13521 ; PWR7-NEXT: addi 3, 1, -16
13522 ; PWR7-NEXT: std 4, -16(1)
13523 ; PWR7-NEXT: lxvd2x 34, 0, 3
13526 ; PWR8-LABEL: ugt_7_v2i64:
13528 ; PWR8-NEXT: addis 3, 2, .LCPI112_0@toc@ha
13529 ; PWR8-NEXT: vpopcntd 2, 2
13530 ; PWR8-NEXT: addi 3, 3, .LCPI112_0@toc@l
13531 ; PWR8-NEXT: lxvd2x 35, 0, 3
13532 ; PWR8-NEXT: vcmpgtud 2, 2, 3
13535 ; PWR9-LABEL: ugt_7_v2i64:
13537 ; PWR9-NEXT: addis 3, 2, .LCPI112_0@toc@ha
13538 ; PWR9-NEXT: vpopcntd 2, 2
13539 ; PWR9-NEXT: addi 3, 3, .LCPI112_0@toc@l
13540 ; PWR9-NEXT: lxv 35, 0(3)
13541 ; PWR9-NEXT: vcmpgtud 2, 2, 3
13543 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
13544 %3 = icmp ugt <2 x i64> %2, <i64 7, i64 7>
13545 %4 = sext <2 x i1> %3 to <2 x i64>
13549 define <2 x i64> @ult_8_v2i64(<2 x i64> %0) {
13550 ; PWR5-LABEL: ult_8_v2i64:
13552 ; PWR5-NEXT: lis 5, 21845
13553 ; PWR5-NEXT: lis 6, 13107
13554 ; PWR5-NEXT: ori 5, 5, 21845
13555 ; PWR5-NEXT: rotldi 8, 4, 63
13556 ; PWR5-NEXT: rotldi 9, 3, 63
13557 ; PWR5-NEXT: rldimi 5, 5, 32, 0
13558 ; PWR5-NEXT: and 8, 8, 5
13559 ; PWR5-NEXT: and 5, 9, 5
13560 ; PWR5-NEXT: ori 6, 6, 13107
13561 ; PWR5-NEXT: sub 3, 3, 5
13562 ; PWR5-NEXT: rldimi 6, 6, 32, 0
13563 ; PWR5-NEXT: sub 4, 4, 8
13564 ; PWR5-NEXT: and 8, 3, 6
13565 ; PWR5-NEXT: rotldi 3, 3, 62
13566 ; PWR5-NEXT: and 3, 3, 6
13567 ; PWR5-NEXT: lis 7, 3855
13568 ; PWR5-NEXT: and 5, 4, 6
13569 ; PWR5-NEXT: rotldi 4, 4, 62
13570 ; PWR5-NEXT: add 3, 8, 3
13571 ; PWR5-NEXT: lis 9, 257
13572 ; PWR5-NEXT: ori 7, 7, 3855
13573 ; PWR5-NEXT: and 4, 4, 6
13574 ; PWR5-NEXT: rldicl 6, 3, 60, 4
13575 ; PWR5-NEXT: ori 9, 9, 257
13576 ; PWR5-NEXT: rldimi 7, 7, 32, 0
13577 ; PWR5-NEXT: add 4, 5, 4
13578 ; PWR5-NEXT: add 3, 3, 6
13579 ; PWR5-NEXT: rldimi 9, 9, 32, 0
13580 ; PWR5-NEXT: rldicl 5, 4, 60, 4
13581 ; PWR5-NEXT: and 3, 3, 7
13582 ; PWR5-NEXT: add 4, 4, 5
13583 ; PWR5-NEXT: mulld 3, 3, 9
13584 ; PWR5-NEXT: and 4, 4, 7
13585 ; PWR5-NEXT: rldicl 3, 3, 8, 56
13586 ; PWR5-NEXT: li 5, 8
13587 ; PWR5-NEXT: mulld 4, 4, 9
13588 ; PWR5-NEXT: subc 6, 3, 5
13589 ; PWR5-NEXT: rldicl 4, 4, 8, 56
13590 ; PWR5-NEXT: subfe 3, 3, 3
13591 ; PWR5-NEXT: subc 5, 4, 5
13592 ; PWR5-NEXT: subfe 4, 4, 4
13595 ; PWR6-LABEL: ult_8_v2i64:
13597 ; PWR6-NEXT: lis 5, 21845
13598 ; PWR6-NEXT: lis 6, 13107
13599 ; PWR6-NEXT: ori 5, 5, 21845
13600 ; PWR6-NEXT: rotldi 8, 4, 63
13601 ; PWR6-NEXT: rotldi 9, 3, 63
13602 ; PWR6-NEXT: rldimi 5, 5, 32, 0
13603 ; PWR6-NEXT: and 8, 8, 5
13604 ; PWR6-NEXT: and 5, 9, 5
13605 ; PWR6-NEXT: ori 6, 6, 13107
13606 ; PWR6-NEXT: sub 3, 3, 5
13607 ; PWR6-NEXT: rldimi 6, 6, 32, 0
13608 ; PWR6-NEXT: sub 4, 4, 8
13609 ; PWR6-NEXT: and 8, 3, 6
13610 ; PWR6-NEXT: rotldi 3, 3, 62
13611 ; PWR6-NEXT: and 3, 3, 6
13612 ; PWR6-NEXT: lis 7, 3855
13613 ; PWR6-NEXT: and 5, 4, 6
13614 ; PWR6-NEXT: rotldi 4, 4, 62
13615 ; PWR6-NEXT: add 3, 8, 3
13616 ; PWR6-NEXT: lis 9, 257
13617 ; PWR6-NEXT: ori 7, 7, 3855
13618 ; PWR6-NEXT: and 4, 4, 6
13619 ; PWR6-NEXT: rldicl 6, 3, 60, 4
13620 ; PWR6-NEXT: ori 9, 9, 257
13621 ; PWR6-NEXT: rldimi 7, 7, 32, 0
13622 ; PWR6-NEXT: add 4, 5, 4
13623 ; PWR6-NEXT: add 3, 3, 6
13624 ; PWR6-NEXT: rldimi 9, 9, 32, 0
13625 ; PWR6-NEXT: rldicl 5, 4, 60, 4
13626 ; PWR6-NEXT: and 3, 3, 7
13627 ; PWR6-NEXT: add 4, 4, 5
13628 ; PWR6-NEXT: mulld 3, 3, 9
13629 ; PWR6-NEXT: and 4, 4, 7
13630 ; PWR6-NEXT: rldicl 3, 3, 8, 56
13631 ; PWR6-NEXT: li 5, 8
13632 ; PWR6-NEXT: mulld 4, 4, 9
13633 ; PWR6-NEXT: subc 6, 3, 5
13634 ; PWR6-NEXT: rldicl 4, 4, 8, 56
13635 ; PWR6-NEXT: subfe 3, 3, 3
13636 ; PWR6-NEXT: subc 5, 4, 5
13637 ; PWR6-NEXT: subfe 4, 4, 4
13640 ; PWR7-LABEL: ult_8_v2i64:
13642 ; PWR7-NEXT: addi 3, 1, -32
13643 ; PWR7-NEXT: li 5, 0
13644 ; PWR7-NEXT: li 6, -1
13645 ; PWR7-NEXT: stxvd2x 34, 0, 3
13646 ; PWR7-NEXT: ld 3, -24(1)
13647 ; PWR7-NEXT: ld 4, -32(1)
13648 ; PWR7-NEXT: popcntd 3, 3
13649 ; PWR7-NEXT: popcntd 4, 4
13650 ; PWR7-NEXT: cmpldi 3, 8
13651 ; PWR7-NEXT: isellt 3, 6, 5
13652 ; PWR7-NEXT: cmpldi 4, 8
13653 ; PWR7-NEXT: isellt 4, 6, 5
13654 ; PWR7-NEXT: std 3, -8(1)
13655 ; PWR7-NEXT: addi 3, 1, -16
13656 ; PWR7-NEXT: std 4, -16(1)
13657 ; PWR7-NEXT: lxvd2x 34, 0, 3
13660 ; PWR8-LABEL: ult_8_v2i64:
13662 ; PWR8-NEXT: addis 3, 2, .LCPI113_0@toc@ha
13663 ; PWR8-NEXT: vpopcntd 2, 2
13664 ; PWR8-NEXT: addi 3, 3, .LCPI113_0@toc@l
13665 ; PWR8-NEXT: lxvd2x 35, 0, 3
13666 ; PWR8-NEXT: vcmpgtud 2, 3, 2
13669 ; PWR9-LABEL: ult_8_v2i64:
13671 ; PWR9-NEXT: addis 3, 2, .LCPI113_0@toc@ha
13672 ; PWR9-NEXT: vpopcntd 2, 2
13673 ; PWR9-NEXT: addi 3, 3, .LCPI113_0@toc@l
13674 ; PWR9-NEXT: lxv 35, 0(3)
13675 ; PWR9-NEXT: vcmpgtud 2, 3, 2
13677 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
13678 %3 = icmp ult <2 x i64> %2, <i64 8, i64 8>
13679 %4 = sext <2 x i1> %3 to <2 x i64>
13683 define <2 x i64> @ugt_8_v2i64(<2 x i64> %0) {
13684 ; PWR5-LABEL: ugt_8_v2i64:
13686 ; PWR5-NEXT: lis 5, 21845
13687 ; PWR5-NEXT: lis 6, 13107
13688 ; PWR5-NEXT: ori 5, 5, 21845
13689 ; PWR5-NEXT: rotldi 8, 4, 63
13690 ; PWR5-NEXT: rotldi 9, 3, 63
13691 ; PWR5-NEXT: rldimi 5, 5, 32, 0
13692 ; PWR5-NEXT: and 8, 8, 5
13693 ; PWR5-NEXT: and 5, 9, 5
13694 ; PWR5-NEXT: ori 6, 6, 13107
13695 ; PWR5-NEXT: sub 3, 3, 5
13696 ; PWR5-NEXT: rldimi 6, 6, 32, 0
13697 ; PWR5-NEXT: sub 4, 4, 8
13698 ; PWR5-NEXT: and 8, 3, 6
13699 ; PWR5-NEXT: rotldi 3, 3, 62
13700 ; PWR5-NEXT: and 3, 3, 6
13701 ; PWR5-NEXT: lis 7, 3855
13702 ; PWR5-NEXT: and 5, 4, 6
13703 ; PWR5-NEXT: rotldi 4, 4, 62
13704 ; PWR5-NEXT: add 3, 8, 3
13705 ; PWR5-NEXT: lis 9, 257
13706 ; PWR5-NEXT: ori 7, 7, 3855
13707 ; PWR5-NEXT: and 4, 4, 6
13708 ; PWR5-NEXT: rldicl 6, 3, 60, 4
13709 ; PWR5-NEXT: ori 9, 9, 257
13710 ; PWR5-NEXT: rldimi 7, 7, 32, 0
13711 ; PWR5-NEXT: add 4, 5, 4
13712 ; PWR5-NEXT: add 3, 3, 6
13713 ; PWR5-NEXT: rldimi 9, 9, 32, 0
13714 ; PWR5-NEXT: rldicl 5, 4, 60, 4
13715 ; PWR5-NEXT: and 3, 3, 7
13716 ; PWR5-NEXT: add 4, 4, 5
13717 ; PWR5-NEXT: mulld 3, 3, 9
13718 ; PWR5-NEXT: and 4, 4, 7
13719 ; PWR5-NEXT: rldicl 3, 3, 8, 56
13720 ; PWR5-NEXT: mulld 4, 4, 9
13721 ; PWR5-NEXT: li 5, 8
13722 ; PWR5-NEXT: subfic 3, 3, 8
13723 ; PWR5-NEXT: rldicl 4, 4, 8, 56
13724 ; PWR5-NEXT: subfe 3, 5, 5
13725 ; PWR5-NEXT: subfic 4, 4, 8
13726 ; PWR5-NEXT: subfe 4, 5, 5
13729 ; PWR6-LABEL: ugt_8_v2i64:
13731 ; PWR6-NEXT: lis 5, 21845
13732 ; PWR6-NEXT: lis 6, 13107
13733 ; PWR6-NEXT: ori 5, 5, 21845
13734 ; PWR6-NEXT: rotldi 8, 4, 63
13735 ; PWR6-NEXT: rotldi 9, 3, 63
13736 ; PWR6-NEXT: rldimi 5, 5, 32, 0
13737 ; PWR6-NEXT: and 8, 8, 5
13738 ; PWR6-NEXT: and 5, 9, 5
13739 ; PWR6-NEXT: ori 6, 6, 13107
13740 ; PWR6-NEXT: sub 3, 3, 5
13741 ; PWR6-NEXT: rldimi 6, 6, 32, 0
13742 ; PWR6-NEXT: sub 4, 4, 8
13743 ; PWR6-NEXT: and 8, 3, 6
13744 ; PWR6-NEXT: rotldi 3, 3, 62
13745 ; PWR6-NEXT: and 3, 3, 6
13746 ; PWR6-NEXT: lis 7, 3855
13747 ; PWR6-NEXT: and 5, 4, 6
13748 ; PWR6-NEXT: rotldi 4, 4, 62
13749 ; PWR6-NEXT: add 3, 8, 3
13750 ; PWR6-NEXT: lis 9, 257
13751 ; PWR6-NEXT: ori 7, 7, 3855
13752 ; PWR6-NEXT: and 4, 4, 6
13753 ; PWR6-NEXT: rldicl 6, 3, 60, 4
13754 ; PWR6-NEXT: ori 9, 9, 257
13755 ; PWR6-NEXT: rldimi 7, 7, 32, 0
13756 ; PWR6-NEXT: add 4, 5, 4
13757 ; PWR6-NEXT: add 3, 3, 6
13758 ; PWR6-NEXT: rldimi 9, 9, 32, 0
13759 ; PWR6-NEXT: rldicl 5, 4, 60, 4
13760 ; PWR6-NEXT: and 3, 3, 7
13761 ; PWR6-NEXT: add 4, 4, 5
13762 ; PWR6-NEXT: mulld 3, 3, 9
13763 ; PWR6-NEXT: and 4, 4, 7
13764 ; PWR6-NEXT: rldicl 3, 3, 8, 56
13765 ; PWR6-NEXT: mulld 4, 4, 9
13766 ; PWR6-NEXT: li 5, 8
13767 ; PWR6-NEXT: subfic 3, 3, 8
13768 ; PWR6-NEXT: rldicl 4, 4, 8, 56
13769 ; PWR6-NEXT: subfe 3, 5, 5
13770 ; PWR6-NEXT: subfic 4, 4, 8
13771 ; PWR6-NEXT: subfe 4, 5, 5
13774 ; PWR7-LABEL: ugt_8_v2i64:
13776 ; PWR7-NEXT: addi 3, 1, -32
13777 ; PWR7-NEXT: li 5, 0
13778 ; PWR7-NEXT: li 6, -1
13779 ; PWR7-NEXT: stxvd2x 34, 0, 3
13780 ; PWR7-NEXT: ld 3, -24(1)
13781 ; PWR7-NEXT: ld 4, -32(1)
13782 ; PWR7-NEXT: popcntd 3, 3
13783 ; PWR7-NEXT: popcntd 4, 4
13784 ; PWR7-NEXT: cmpldi 3, 8
13785 ; PWR7-NEXT: iselgt 3, 6, 5
13786 ; PWR7-NEXT: cmpldi 4, 8
13787 ; PWR7-NEXT: iselgt 4, 6, 5
13788 ; PWR7-NEXT: std 3, -8(1)
13789 ; PWR7-NEXT: addi 3, 1, -16
13790 ; PWR7-NEXT: std 4, -16(1)
13791 ; PWR7-NEXT: lxvd2x 34, 0, 3
13794 ; PWR8-LABEL: ugt_8_v2i64:
13796 ; PWR8-NEXT: addis 3, 2, .LCPI114_0@toc@ha
13797 ; PWR8-NEXT: vpopcntd 2, 2
13798 ; PWR8-NEXT: addi 3, 3, .LCPI114_0@toc@l
13799 ; PWR8-NEXT: lxvd2x 35, 0, 3
13800 ; PWR8-NEXT: vcmpgtud 2, 2, 3
13803 ; PWR9-LABEL: ugt_8_v2i64:
13805 ; PWR9-NEXT: addis 3, 2, .LCPI114_0@toc@ha
13806 ; PWR9-NEXT: vpopcntd 2, 2
13807 ; PWR9-NEXT: addi 3, 3, .LCPI114_0@toc@l
13808 ; PWR9-NEXT: lxv 35, 0(3)
13809 ; PWR9-NEXT: vcmpgtud 2, 2, 3
13811 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
13812 %3 = icmp ugt <2 x i64> %2, <i64 8, i64 8>
13813 %4 = sext <2 x i1> %3 to <2 x i64>
13817 define <2 x i64> @ult_9_v2i64(<2 x i64> %0) {
13818 ; PWR5-LABEL: ult_9_v2i64:
13820 ; PWR5-NEXT: lis 5, 21845
13821 ; PWR5-NEXT: lis 6, 13107
13822 ; PWR5-NEXT: ori 5, 5, 21845
13823 ; PWR5-NEXT: rotldi 8, 4, 63
13824 ; PWR5-NEXT: rotldi 9, 3, 63
13825 ; PWR5-NEXT: rldimi 5, 5, 32, 0
13826 ; PWR5-NEXT: and 8, 8, 5
13827 ; PWR5-NEXT: and 5, 9, 5
13828 ; PWR5-NEXT: ori 6, 6, 13107
13829 ; PWR5-NEXT: sub 3, 3, 5
13830 ; PWR5-NEXT: rldimi 6, 6, 32, 0
13831 ; PWR5-NEXT: sub 4, 4, 8
13832 ; PWR5-NEXT: and 8, 3, 6
13833 ; PWR5-NEXT: rotldi 3, 3, 62
13834 ; PWR5-NEXT: and 3, 3, 6
13835 ; PWR5-NEXT: lis 7, 3855
13836 ; PWR5-NEXT: and 5, 4, 6
13837 ; PWR5-NEXT: rotldi 4, 4, 62
13838 ; PWR5-NEXT: add 3, 8, 3
13839 ; PWR5-NEXT: lis 9, 257
13840 ; PWR5-NEXT: ori 7, 7, 3855
13841 ; PWR5-NEXT: and 4, 4, 6
13842 ; PWR5-NEXT: rldicl 6, 3, 60, 4
13843 ; PWR5-NEXT: ori 9, 9, 257
13844 ; PWR5-NEXT: rldimi 7, 7, 32, 0
13845 ; PWR5-NEXT: add 4, 5, 4
13846 ; PWR5-NEXT: add 3, 3, 6
13847 ; PWR5-NEXT: rldimi 9, 9, 32, 0
13848 ; PWR5-NEXT: rldicl 5, 4, 60, 4
13849 ; PWR5-NEXT: and 3, 3, 7
13850 ; PWR5-NEXT: add 4, 4, 5
13851 ; PWR5-NEXT: mulld 3, 3, 9
13852 ; PWR5-NEXT: and 4, 4, 7
13853 ; PWR5-NEXT: rldicl 3, 3, 8, 56
13854 ; PWR5-NEXT: li 5, 9
13855 ; PWR5-NEXT: mulld 4, 4, 9
13856 ; PWR5-NEXT: subc 6, 3, 5
13857 ; PWR5-NEXT: rldicl 4, 4, 8, 56
13858 ; PWR5-NEXT: subfe 3, 3, 3
13859 ; PWR5-NEXT: subc 5, 4, 5
13860 ; PWR5-NEXT: subfe 4, 4, 4
13863 ; PWR6-LABEL: ult_9_v2i64:
13865 ; PWR6-NEXT: lis 5, 21845
13866 ; PWR6-NEXT: lis 6, 13107
13867 ; PWR6-NEXT: ori 5, 5, 21845
13868 ; PWR6-NEXT: rotldi 8, 4, 63
13869 ; PWR6-NEXT: rotldi 9, 3, 63
13870 ; PWR6-NEXT: rldimi 5, 5, 32, 0
13871 ; PWR6-NEXT: and 8, 8, 5
13872 ; PWR6-NEXT: and 5, 9, 5
13873 ; PWR6-NEXT: ori 6, 6, 13107
13874 ; PWR6-NEXT: sub 3, 3, 5
13875 ; PWR6-NEXT: rldimi 6, 6, 32, 0
13876 ; PWR6-NEXT: sub 4, 4, 8
13877 ; PWR6-NEXT: and 8, 3, 6
13878 ; PWR6-NEXT: rotldi 3, 3, 62
13879 ; PWR6-NEXT: and 3, 3, 6
13880 ; PWR6-NEXT: lis 7, 3855
13881 ; PWR6-NEXT: and 5, 4, 6
13882 ; PWR6-NEXT: rotldi 4, 4, 62
13883 ; PWR6-NEXT: add 3, 8, 3
13884 ; PWR6-NEXT: lis 9, 257
13885 ; PWR6-NEXT: ori 7, 7, 3855
13886 ; PWR6-NEXT: and 4, 4, 6
13887 ; PWR6-NEXT: rldicl 6, 3, 60, 4
13888 ; PWR6-NEXT: ori 9, 9, 257
13889 ; PWR6-NEXT: rldimi 7, 7, 32, 0
13890 ; PWR6-NEXT: add 4, 5, 4
13891 ; PWR6-NEXT: add 3, 3, 6
13892 ; PWR6-NEXT: rldimi 9, 9, 32, 0
13893 ; PWR6-NEXT: rldicl 5, 4, 60, 4
13894 ; PWR6-NEXT: and 3, 3, 7
13895 ; PWR6-NEXT: add 4, 4, 5
13896 ; PWR6-NEXT: mulld 3, 3, 9
13897 ; PWR6-NEXT: and 4, 4, 7
13898 ; PWR6-NEXT: rldicl 3, 3, 8, 56
13899 ; PWR6-NEXT: li 5, 9
13900 ; PWR6-NEXT: mulld 4, 4, 9
13901 ; PWR6-NEXT: subc 6, 3, 5
13902 ; PWR6-NEXT: rldicl 4, 4, 8, 56
13903 ; PWR6-NEXT: subfe 3, 3, 3
13904 ; PWR6-NEXT: subc 5, 4, 5
13905 ; PWR6-NEXT: subfe 4, 4, 4
13908 ; PWR7-LABEL: ult_9_v2i64:
13910 ; PWR7-NEXT: addi 3, 1, -32
13911 ; PWR7-NEXT: li 5, 0
13912 ; PWR7-NEXT: li 6, -1
13913 ; PWR7-NEXT: stxvd2x 34, 0, 3
13914 ; PWR7-NEXT: ld 3, -24(1)
13915 ; PWR7-NEXT: ld 4, -32(1)
13916 ; PWR7-NEXT: popcntd 3, 3
13917 ; PWR7-NEXT: popcntd 4, 4
13918 ; PWR7-NEXT: cmpldi 3, 9
13919 ; PWR7-NEXT: isellt 3, 6, 5
13920 ; PWR7-NEXT: cmpldi 4, 9
13921 ; PWR7-NEXT: isellt 4, 6, 5
13922 ; PWR7-NEXT: std 3, -8(1)
13923 ; PWR7-NEXT: addi 3, 1, -16
13924 ; PWR7-NEXT: std 4, -16(1)
13925 ; PWR7-NEXT: lxvd2x 34, 0, 3
13928 ; PWR8-LABEL: ult_9_v2i64:
13930 ; PWR8-NEXT: addis 3, 2, .LCPI115_0@toc@ha
13931 ; PWR8-NEXT: vpopcntd 2, 2
13932 ; PWR8-NEXT: addi 3, 3, .LCPI115_0@toc@l
13933 ; PWR8-NEXT: lxvd2x 35, 0, 3
13934 ; PWR8-NEXT: vcmpgtud 2, 3, 2
13937 ; PWR9-LABEL: ult_9_v2i64:
13939 ; PWR9-NEXT: addis 3, 2, .LCPI115_0@toc@ha
13940 ; PWR9-NEXT: vpopcntd 2, 2
13941 ; PWR9-NEXT: addi 3, 3, .LCPI115_0@toc@l
13942 ; PWR9-NEXT: lxv 35, 0(3)
13943 ; PWR9-NEXT: vcmpgtud 2, 3, 2
13945 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
13946 %3 = icmp ult <2 x i64> %2, <i64 9, i64 9>
13947 %4 = sext <2 x i1> %3 to <2 x i64>
13951 define <2 x i64> @ugt_9_v2i64(<2 x i64> %0) {
13952 ; PWR5-LABEL: ugt_9_v2i64:
13954 ; PWR5-NEXT: lis 5, 21845
13955 ; PWR5-NEXT: lis 6, 13107
13956 ; PWR5-NEXT: ori 5, 5, 21845
13957 ; PWR5-NEXT: rotldi 8, 4, 63
13958 ; PWR5-NEXT: rotldi 9, 3, 63
13959 ; PWR5-NEXT: rldimi 5, 5, 32, 0
13960 ; PWR5-NEXT: and 8, 8, 5
13961 ; PWR5-NEXT: and 5, 9, 5
13962 ; PWR5-NEXT: ori 6, 6, 13107
13963 ; PWR5-NEXT: sub 3, 3, 5
13964 ; PWR5-NEXT: rldimi 6, 6, 32, 0
13965 ; PWR5-NEXT: sub 4, 4, 8
13966 ; PWR5-NEXT: and 8, 3, 6
13967 ; PWR5-NEXT: rotldi 3, 3, 62
13968 ; PWR5-NEXT: and 3, 3, 6
13969 ; PWR5-NEXT: lis 7, 3855
13970 ; PWR5-NEXT: and 5, 4, 6
13971 ; PWR5-NEXT: rotldi 4, 4, 62
13972 ; PWR5-NEXT: add 3, 8, 3
13973 ; PWR5-NEXT: lis 9, 257
13974 ; PWR5-NEXT: ori 7, 7, 3855
13975 ; PWR5-NEXT: and 4, 4, 6
13976 ; PWR5-NEXT: rldicl 6, 3, 60, 4
13977 ; PWR5-NEXT: ori 9, 9, 257
13978 ; PWR5-NEXT: rldimi 7, 7, 32, 0
13979 ; PWR5-NEXT: add 4, 5, 4
13980 ; PWR5-NEXT: add 3, 3, 6
13981 ; PWR5-NEXT: rldimi 9, 9, 32, 0
13982 ; PWR5-NEXT: rldicl 5, 4, 60, 4
13983 ; PWR5-NEXT: and 3, 3, 7
13984 ; PWR5-NEXT: add 4, 4, 5
13985 ; PWR5-NEXT: mulld 3, 3, 9
13986 ; PWR5-NEXT: and 4, 4, 7
13987 ; PWR5-NEXT: rldicl 3, 3, 8, 56
13988 ; PWR5-NEXT: mulld 4, 4, 9
13989 ; PWR5-NEXT: li 5, 9
13990 ; PWR5-NEXT: subfic 3, 3, 9
13991 ; PWR5-NEXT: rldicl 4, 4, 8, 56
13992 ; PWR5-NEXT: subfe 3, 5, 5
13993 ; PWR5-NEXT: subfic 4, 4, 9
13994 ; PWR5-NEXT: subfe 4, 5, 5
13997 ; PWR6-LABEL: ugt_9_v2i64:
13999 ; PWR6-NEXT: lis 5, 21845
14000 ; PWR6-NEXT: lis 6, 13107
14001 ; PWR6-NEXT: ori 5, 5, 21845
14002 ; PWR6-NEXT: rotldi 8, 4, 63
14003 ; PWR6-NEXT: rotldi 9, 3, 63
14004 ; PWR6-NEXT: rldimi 5, 5, 32, 0
14005 ; PWR6-NEXT: and 8, 8, 5
14006 ; PWR6-NEXT: and 5, 9, 5
14007 ; PWR6-NEXT: ori 6, 6, 13107
14008 ; PWR6-NEXT: sub 3, 3, 5
14009 ; PWR6-NEXT: rldimi 6, 6, 32, 0
14010 ; PWR6-NEXT: sub 4, 4, 8
14011 ; PWR6-NEXT: and 8, 3, 6
14012 ; PWR6-NEXT: rotldi 3, 3, 62
14013 ; PWR6-NEXT: and 3, 3, 6
14014 ; PWR6-NEXT: lis 7, 3855
14015 ; PWR6-NEXT: and 5, 4, 6
14016 ; PWR6-NEXT: rotldi 4, 4, 62
14017 ; PWR6-NEXT: add 3, 8, 3
14018 ; PWR6-NEXT: lis 9, 257
14019 ; PWR6-NEXT: ori 7, 7, 3855
14020 ; PWR6-NEXT: and 4, 4, 6
14021 ; PWR6-NEXT: rldicl 6, 3, 60, 4
14022 ; PWR6-NEXT: ori 9, 9, 257
14023 ; PWR6-NEXT: rldimi 7, 7, 32, 0
14024 ; PWR6-NEXT: add 4, 5, 4
14025 ; PWR6-NEXT: add 3, 3, 6
14026 ; PWR6-NEXT: rldimi 9, 9, 32, 0
14027 ; PWR6-NEXT: rldicl 5, 4, 60, 4
14028 ; PWR6-NEXT: and 3, 3, 7
14029 ; PWR6-NEXT: add 4, 4, 5
14030 ; PWR6-NEXT: mulld 3, 3, 9
14031 ; PWR6-NEXT: and 4, 4, 7
14032 ; PWR6-NEXT: rldicl 3, 3, 8, 56
14033 ; PWR6-NEXT: mulld 4, 4, 9
14034 ; PWR6-NEXT: li 5, 9
14035 ; PWR6-NEXT: subfic 3, 3, 9
14036 ; PWR6-NEXT: rldicl 4, 4, 8, 56
14037 ; PWR6-NEXT: subfe 3, 5, 5
14038 ; PWR6-NEXT: subfic 4, 4, 9
14039 ; PWR6-NEXT: subfe 4, 5, 5
14042 ; PWR7-LABEL: ugt_9_v2i64:
14044 ; PWR7-NEXT: addi 3, 1, -32
14045 ; PWR7-NEXT: li 5, 0
14046 ; PWR7-NEXT: li 6, -1
14047 ; PWR7-NEXT: stxvd2x 34, 0, 3
14048 ; PWR7-NEXT: ld 3, -24(1)
14049 ; PWR7-NEXT: ld 4, -32(1)
14050 ; PWR7-NEXT: popcntd 3, 3
14051 ; PWR7-NEXT: popcntd 4, 4
14052 ; PWR7-NEXT: cmpldi 3, 9
14053 ; PWR7-NEXT: iselgt 3, 6, 5
14054 ; PWR7-NEXT: cmpldi 4, 9
14055 ; PWR7-NEXT: iselgt 4, 6, 5
14056 ; PWR7-NEXT: std 3, -8(1)
14057 ; PWR7-NEXT: addi 3, 1, -16
14058 ; PWR7-NEXT: std 4, -16(1)
14059 ; PWR7-NEXT: lxvd2x 34, 0, 3
14062 ; PWR8-LABEL: ugt_9_v2i64:
14064 ; PWR8-NEXT: addis 3, 2, .LCPI116_0@toc@ha
14065 ; PWR8-NEXT: vpopcntd 2, 2
14066 ; PWR8-NEXT: addi 3, 3, .LCPI116_0@toc@l
14067 ; PWR8-NEXT: lxvd2x 35, 0, 3
14068 ; PWR8-NEXT: vcmpgtud 2, 2, 3
14071 ; PWR9-LABEL: ugt_9_v2i64:
14073 ; PWR9-NEXT: addis 3, 2, .LCPI116_0@toc@ha
14074 ; PWR9-NEXT: vpopcntd 2, 2
14075 ; PWR9-NEXT: addi 3, 3, .LCPI116_0@toc@l
14076 ; PWR9-NEXT: lxv 35, 0(3)
14077 ; PWR9-NEXT: vcmpgtud 2, 2, 3
14079 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
14080 %3 = icmp ugt <2 x i64> %2, <i64 9, i64 9>
14081 %4 = sext <2 x i1> %3 to <2 x i64>
14085 define <2 x i64> @ult_10_v2i64(<2 x i64> %0) {
14086 ; PWR5-LABEL: ult_10_v2i64:
14088 ; PWR5-NEXT: lis 5, 21845
14089 ; PWR5-NEXT: lis 6, 13107
14090 ; PWR5-NEXT: ori 5, 5, 21845
14091 ; PWR5-NEXT: rotldi 8, 4, 63
14092 ; PWR5-NEXT: rotldi 9, 3, 63
14093 ; PWR5-NEXT: rldimi 5, 5, 32, 0
14094 ; PWR5-NEXT: and 8, 8, 5
14095 ; PWR5-NEXT: and 5, 9, 5
14096 ; PWR5-NEXT: ori 6, 6, 13107
14097 ; PWR5-NEXT: sub 3, 3, 5
14098 ; PWR5-NEXT: rldimi 6, 6, 32, 0
14099 ; PWR5-NEXT: sub 4, 4, 8
14100 ; PWR5-NEXT: and 8, 3, 6
14101 ; PWR5-NEXT: rotldi 3, 3, 62
14102 ; PWR5-NEXT: and 3, 3, 6
14103 ; PWR5-NEXT: lis 7, 3855
14104 ; PWR5-NEXT: and 5, 4, 6
14105 ; PWR5-NEXT: rotldi 4, 4, 62
14106 ; PWR5-NEXT: add 3, 8, 3
14107 ; PWR5-NEXT: lis 9, 257
14108 ; PWR5-NEXT: ori 7, 7, 3855
14109 ; PWR5-NEXT: and 4, 4, 6
14110 ; PWR5-NEXT: rldicl 6, 3, 60, 4
14111 ; PWR5-NEXT: ori 9, 9, 257
14112 ; PWR5-NEXT: rldimi 7, 7, 32, 0
14113 ; PWR5-NEXT: add 4, 5, 4
14114 ; PWR5-NEXT: add 3, 3, 6
14115 ; PWR5-NEXT: rldimi 9, 9, 32, 0
14116 ; PWR5-NEXT: rldicl 5, 4, 60, 4
14117 ; PWR5-NEXT: and 3, 3, 7
14118 ; PWR5-NEXT: add 4, 4, 5
14119 ; PWR5-NEXT: mulld 3, 3, 9
14120 ; PWR5-NEXT: and 4, 4, 7
14121 ; PWR5-NEXT: rldicl 3, 3, 8, 56
14122 ; PWR5-NEXT: li 5, 10
14123 ; PWR5-NEXT: mulld 4, 4, 9
14124 ; PWR5-NEXT: subc 6, 3, 5
14125 ; PWR5-NEXT: rldicl 4, 4, 8, 56
14126 ; PWR5-NEXT: subfe 3, 3, 3
14127 ; PWR5-NEXT: subc 5, 4, 5
14128 ; PWR5-NEXT: subfe 4, 4, 4
14131 ; PWR6-LABEL: ult_10_v2i64:
14133 ; PWR6-NEXT: lis 5, 21845
14134 ; PWR6-NEXT: lis 6, 13107
14135 ; PWR6-NEXT: ori 5, 5, 21845
14136 ; PWR6-NEXT: rotldi 8, 4, 63
14137 ; PWR6-NEXT: rotldi 9, 3, 63
14138 ; PWR6-NEXT: rldimi 5, 5, 32, 0
14139 ; PWR6-NEXT: and 8, 8, 5
14140 ; PWR6-NEXT: and 5, 9, 5
14141 ; PWR6-NEXT: ori 6, 6, 13107
14142 ; PWR6-NEXT: sub 3, 3, 5
14143 ; PWR6-NEXT: rldimi 6, 6, 32, 0
14144 ; PWR6-NEXT: sub 4, 4, 8
14145 ; PWR6-NEXT: and 8, 3, 6
14146 ; PWR6-NEXT: rotldi 3, 3, 62
14147 ; PWR6-NEXT: and 3, 3, 6
14148 ; PWR6-NEXT: lis 7, 3855
14149 ; PWR6-NEXT: and 5, 4, 6
14150 ; PWR6-NEXT: rotldi 4, 4, 62
14151 ; PWR6-NEXT: add 3, 8, 3
14152 ; PWR6-NEXT: lis 9, 257
14153 ; PWR6-NEXT: ori 7, 7, 3855
14154 ; PWR6-NEXT: and 4, 4, 6
14155 ; PWR6-NEXT: rldicl 6, 3, 60, 4
14156 ; PWR6-NEXT: ori 9, 9, 257
14157 ; PWR6-NEXT: rldimi 7, 7, 32, 0
14158 ; PWR6-NEXT: add 4, 5, 4
14159 ; PWR6-NEXT: add 3, 3, 6
14160 ; PWR6-NEXT: rldimi 9, 9, 32, 0
14161 ; PWR6-NEXT: rldicl 5, 4, 60, 4
14162 ; PWR6-NEXT: and 3, 3, 7
14163 ; PWR6-NEXT: add 4, 4, 5
14164 ; PWR6-NEXT: mulld 3, 3, 9
14165 ; PWR6-NEXT: and 4, 4, 7
14166 ; PWR6-NEXT: rldicl 3, 3, 8, 56
14167 ; PWR6-NEXT: li 5, 10
14168 ; PWR6-NEXT: mulld 4, 4, 9
14169 ; PWR6-NEXT: subc 6, 3, 5
14170 ; PWR6-NEXT: rldicl 4, 4, 8, 56
14171 ; PWR6-NEXT: subfe 3, 3, 3
14172 ; PWR6-NEXT: subc 5, 4, 5
14173 ; PWR6-NEXT: subfe 4, 4, 4
14176 ; PWR7-LABEL: ult_10_v2i64:
14178 ; PWR7-NEXT: addi 3, 1, -32
14179 ; PWR7-NEXT: li 5, 0
14180 ; PWR7-NEXT: li 6, -1
14181 ; PWR7-NEXT: stxvd2x 34, 0, 3
14182 ; PWR7-NEXT: ld 3, -24(1)
14183 ; PWR7-NEXT: ld 4, -32(1)
14184 ; PWR7-NEXT: popcntd 3, 3
14185 ; PWR7-NEXT: popcntd 4, 4
14186 ; PWR7-NEXT: cmpldi 3, 10
14187 ; PWR7-NEXT: isellt 3, 6, 5
14188 ; PWR7-NEXT: cmpldi 4, 10
14189 ; PWR7-NEXT: isellt 4, 6, 5
14190 ; PWR7-NEXT: std 3, -8(1)
14191 ; PWR7-NEXT: addi 3, 1, -16
14192 ; PWR7-NEXT: std 4, -16(1)
14193 ; PWR7-NEXT: lxvd2x 34, 0, 3
14196 ; PWR8-LABEL: ult_10_v2i64:
14198 ; PWR8-NEXT: addis 3, 2, .LCPI117_0@toc@ha
14199 ; PWR8-NEXT: vpopcntd 2, 2
14200 ; PWR8-NEXT: addi 3, 3, .LCPI117_0@toc@l
14201 ; PWR8-NEXT: lxvd2x 35, 0, 3
14202 ; PWR8-NEXT: vcmpgtud 2, 3, 2
14205 ; PWR9-LABEL: ult_10_v2i64:
14207 ; PWR9-NEXT: addis 3, 2, .LCPI117_0@toc@ha
14208 ; PWR9-NEXT: vpopcntd 2, 2
14209 ; PWR9-NEXT: addi 3, 3, .LCPI117_0@toc@l
14210 ; PWR9-NEXT: lxv 35, 0(3)
14211 ; PWR9-NEXT: vcmpgtud 2, 3, 2
14213 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
14214 %3 = icmp ult <2 x i64> %2, <i64 10, i64 10>
14215 %4 = sext <2 x i1> %3 to <2 x i64>
14219 define <2 x i64> @ugt_10_v2i64(<2 x i64> %0) {
14220 ; PWR5-LABEL: ugt_10_v2i64:
14222 ; PWR5-NEXT: lis 5, 21845
14223 ; PWR5-NEXT: lis 6, 13107
14224 ; PWR5-NEXT: ori 5, 5, 21845
14225 ; PWR5-NEXT: rotldi 8, 4, 63
14226 ; PWR5-NEXT: rotldi 9, 3, 63
14227 ; PWR5-NEXT: rldimi 5, 5, 32, 0
14228 ; PWR5-NEXT: and 8, 8, 5
14229 ; PWR5-NEXT: and 5, 9, 5
14230 ; PWR5-NEXT: ori 6, 6, 13107
14231 ; PWR5-NEXT: sub 3, 3, 5
14232 ; PWR5-NEXT: rldimi 6, 6, 32, 0
14233 ; PWR5-NEXT: sub 4, 4, 8
14234 ; PWR5-NEXT: and 8, 3, 6
14235 ; PWR5-NEXT: rotldi 3, 3, 62
14236 ; PWR5-NEXT: and 3, 3, 6
14237 ; PWR5-NEXT: lis 7, 3855
14238 ; PWR5-NEXT: and 5, 4, 6
14239 ; PWR5-NEXT: rotldi 4, 4, 62
14240 ; PWR5-NEXT: add 3, 8, 3
14241 ; PWR5-NEXT: lis 9, 257
14242 ; PWR5-NEXT: ori 7, 7, 3855
14243 ; PWR5-NEXT: and 4, 4, 6
14244 ; PWR5-NEXT: rldicl 6, 3, 60, 4
14245 ; PWR5-NEXT: ori 9, 9, 257
14246 ; PWR5-NEXT: rldimi 7, 7, 32, 0
14247 ; PWR5-NEXT: add 4, 5, 4
14248 ; PWR5-NEXT: add 3, 3, 6
14249 ; PWR5-NEXT: rldimi 9, 9, 32, 0
14250 ; PWR5-NEXT: rldicl 5, 4, 60, 4
14251 ; PWR5-NEXT: and 3, 3, 7
14252 ; PWR5-NEXT: add 4, 4, 5
14253 ; PWR5-NEXT: mulld 3, 3, 9
14254 ; PWR5-NEXT: and 4, 4, 7
14255 ; PWR5-NEXT: rldicl 3, 3, 8, 56
14256 ; PWR5-NEXT: mulld 4, 4, 9
14257 ; PWR5-NEXT: li 5, 10
14258 ; PWR5-NEXT: subfic 3, 3, 10
14259 ; PWR5-NEXT: rldicl 4, 4, 8, 56
14260 ; PWR5-NEXT: subfe 3, 5, 5
14261 ; PWR5-NEXT: subfic 4, 4, 10
14262 ; PWR5-NEXT: subfe 4, 5, 5
14265 ; PWR6-LABEL: ugt_10_v2i64:
14267 ; PWR6-NEXT: lis 5, 21845
14268 ; PWR6-NEXT: lis 6, 13107
14269 ; PWR6-NEXT: ori 5, 5, 21845
14270 ; PWR6-NEXT: rotldi 8, 4, 63
14271 ; PWR6-NEXT: rotldi 9, 3, 63
14272 ; PWR6-NEXT: rldimi 5, 5, 32, 0
14273 ; PWR6-NEXT: and 8, 8, 5
14274 ; PWR6-NEXT: and 5, 9, 5
14275 ; PWR6-NEXT: ori 6, 6, 13107
14276 ; PWR6-NEXT: sub 3, 3, 5
14277 ; PWR6-NEXT: rldimi 6, 6, 32, 0
14278 ; PWR6-NEXT: sub 4, 4, 8
14279 ; PWR6-NEXT: and 8, 3, 6
14280 ; PWR6-NEXT: rotldi 3, 3, 62
14281 ; PWR6-NEXT: and 3, 3, 6
14282 ; PWR6-NEXT: lis 7, 3855
14283 ; PWR6-NEXT: and 5, 4, 6
14284 ; PWR6-NEXT: rotldi 4, 4, 62
14285 ; PWR6-NEXT: add 3, 8, 3
14286 ; PWR6-NEXT: lis 9, 257
14287 ; PWR6-NEXT: ori 7, 7, 3855
14288 ; PWR6-NEXT: and 4, 4, 6
14289 ; PWR6-NEXT: rldicl 6, 3, 60, 4
14290 ; PWR6-NEXT: ori 9, 9, 257
14291 ; PWR6-NEXT: rldimi 7, 7, 32, 0
14292 ; PWR6-NEXT: add 4, 5, 4
14293 ; PWR6-NEXT: add 3, 3, 6
14294 ; PWR6-NEXT: rldimi 9, 9, 32, 0
14295 ; PWR6-NEXT: rldicl 5, 4, 60, 4
14296 ; PWR6-NEXT: and 3, 3, 7
14297 ; PWR6-NEXT: add 4, 4, 5
14298 ; PWR6-NEXT: mulld 3, 3, 9
14299 ; PWR6-NEXT: and 4, 4, 7
14300 ; PWR6-NEXT: rldicl 3, 3, 8, 56
14301 ; PWR6-NEXT: mulld 4, 4, 9
14302 ; PWR6-NEXT: li 5, 10
14303 ; PWR6-NEXT: subfic 3, 3, 10
14304 ; PWR6-NEXT: rldicl 4, 4, 8, 56
14305 ; PWR6-NEXT: subfe 3, 5, 5
14306 ; PWR6-NEXT: subfic 4, 4, 10
14307 ; PWR6-NEXT: subfe 4, 5, 5
14310 ; PWR7-LABEL: ugt_10_v2i64:
14312 ; PWR7-NEXT: addi 3, 1, -32
14313 ; PWR7-NEXT: li 5, 0
14314 ; PWR7-NEXT: li 6, -1
14315 ; PWR7-NEXT: stxvd2x 34, 0, 3
14316 ; PWR7-NEXT: ld 3, -24(1)
14317 ; PWR7-NEXT: ld 4, -32(1)
14318 ; PWR7-NEXT: popcntd 3, 3
14319 ; PWR7-NEXT: popcntd 4, 4
14320 ; PWR7-NEXT: cmpldi 3, 10
14321 ; PWR7-NEXT: iselgt 3, 6, 5
14322 ; PWR7-NEXT: cmpldi 4, 10
14323 ; PWR7-NEXT: iselgt 4, 6, 5
14324 ; PWR7-NEXT: std 3, -8(1)
14325 ; PWR7-NEXT: addi 3, 1, -16
14326 ; PWR7-NEXT: std 4, -16(1)
14327 ; PWR7-NEXT: lxvd2x 34, 0, 3
14330 ; PWR8-LABEL: ugt_10_v2i64:
14332 ; PWR8-NEXT: addis 3, 2, .LCPI118_0@toc@ha
14333 ; PWR8-NEXT: vpopcntd 2, 2
14334 ; PWR8-NEXT: addi 3, 3, .LCPI118_0@toc@l
14335 ; PWR8-NEXT: lxvd2x 35, 0, 3
14336 ; PWR8-NEXT: vcmpgtud 2, 2, 3
14339 ; PWR9-LABEL: ugt_10_v2i64:
14341 ; PWR9-NEXT: addis 3, 2, .LCPI118_0@toc@ha
14342 ; PWR9-NEXT: vpopcntd 2, 2
14343 ; PWR9-NEXT: addi 3, 3, .LCPI118_0@toc@l
14344 ; PWR9-NEXT: lxv 35, 0(3)
14345 ; PWR9-NEXT: vcmpgtud 2, 2, 3
14347 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
14348 %3 = icmp ugt <2 x i64> %2, <i64 10, i64 10>
14349 %4 = sext <2 x i1> %3 to <2 x i64>
14353 define <2 x i64> @ult_11_v2i64(<2 x i64> %0) {
14354 ; PWR5-LABEL: ult_11_v2i64:
14356 ; PWR5-NEXT: lis 5, 21845
14357 ; PWR5-NEXT: lis 6, 13107
14358 ; PWR5-NEXT: ori 5, 5, 21845
14359 ; PWR5-NEXT: rotldi 8, 4, 63
14360 ; PWR5-NEXT: rotldi 9, 3, 63
14361 ; PWR5-NEXT: rldimi 5, 5, 32, 0
14362 ; PWR5-NEXT: and 8, 8, 5
14363 ; PWR5-NEXT: and 5, 9, 5
14364 ; PWR5-NEXT: ori 6, 6, 13107
14365 ; PWR5-NEXT: sub 3, 3, 5
14366 ; PWR5-NEXT: rldimi 6, 6, 32, 0
14367 ; PWR5-NEXT: sub 4, 4, 8
14368 ; PWR5-NEXT: and 8, 3, 6
14369 ; PWR5-NEXT: rotldi 3, 3, 62
14370 ; PWR5-NEXT: and 3, 3, 6
14371 ; PWR5-NEXT: lis 7, 3855
14372 ; PWR5-NEXT: and 5, 4, 6
14373 ; PWR5-NEXT: rotldi 4, 4, 62
14374 ; PWR5-NEXT: add 3, 8, 3
14375 ; PWR5-NEXT: lis 9, 257
14376 ; PWR5-NEXT: ori 7, 7, 3855
14377 ; PWR5-NEXT: and 4, 4, 6
14378 ; PWR5-NEXT: rldicl 6, 3, 60, 4
14379 ; PWR5-NEXT: ori 9, 9, 257
14380 ; PWR5-NEXT: rldimi 7, 7, 32, 0
14381 ; PWR5-NEXT: add 4, 5, 4
14382 ; PWR5-NEXT: add 3, 3, 6
14383 ; PWR5-NEXT: rldimi 9, 9, 32, 0
14384 ; PWR5-NEXT: rldicl 5, 4, 60, 4
14385 ; PWR5-NEXT: and 3, 3, 7
14386 ; PWR5-NEXT: add 4, 4, 5
14387 ; PWR5-NEXT: mulld 3, 3, 9
14388 ; PWR5-NEXT: and 4, 4, 7
14389 ; PWR5-NEXT: rldicl 3, 3, 8, 56
14390 ; PWR5-NEXT: li 5, 11
14391 ; PWR5-NEXT: mulld 4, 4, 9
14392 ; PWR5-NEXT: subc 6, 3, 5
14393 ; PWR5-NEXT: rldicl 4, 4, 8, 56
14394 ; PWR5-NEXT: subfe 3, 3, 3
14395 ; PWR5-NEXT: subc 5, 4, 5
14396 ; PWR5-NEXT: subfe 4, 4, 4
14399 ; PWR6-LABEL: ult_11_v2i64:
14401 ; PWR6-NEXT: lis 5, 21845
14402 ; PWR6-NEXT: lis 6, 13107
14403 ; PWR6-NEXT: ori 5, 5, 21845
14404 ; PWR6-NEXT: rotldi 8, 4, 63
14405 ; PWR6-NEXT: rotldi 9, 3, 63
14406 ; PWR6-NEXT: rldimi 5, 5, 32, 0
14407 ; PWR6-NEXT: and 8, 8, 5
14408 ; PWR6-NEXT: and 5, 9, 5
14409 ; PWR6-NEXT: ori 6, 6, 13107
14410 ; PWR6-NEXT: sub 3, 3, 5
14411 ; PWR6-NEXT: rldimi 6, 6, 32, 0
14412 ; PWR6-NEXT: sub 4, 4, 8
14413 ; PWR6-NEXT: and 8, 3, 6
14414 ; PWR6-NEXT: rotldi 3, 3, 62
14415 ; PWR6-NEXT: and 3, 3, 6
14416 ; PWR6-NEXT: lis 7, 3855
14417 ; PWR6-NEXT: and 5, 4, 6
14418 ; PWR6-NEXT: rotldi 4, 4, 62
14419 ; PWR6-NEXT: add 3, 8, 3
14420 ; PWR6-NEXT: lis 9, 257
14421 ; PWR6-NEXT: ori 7, 7, 3855
14422 ; PWR6-NEXT: and 4, 4, 6
14423 ; PWR6-NEXT: rldicl 6, 3, 60, 4
14424 ; PWR6-NEXT: ori 9, 9, 257
14425 ; PWR6-NEXT: rldimi 7, 7, 32, 0
14426 ; PWR6-NEXT: add 4, 5, 4
14427 ; PWR6-NEXT: add 3, 3, 6
14428 ; PWR6-NEXT: rldimi 9, 9, 32, 0
14429 ; PWR6-NEXT: rldicl 5, 4, 60, 4
14430 ; PWR6-NEXT: and 3, 3, 7
14431 ; PWR6-NEXT: add 4, 4, 5
14432 ; PWR6-NEXT: mulld 3, 3, 9
14433 ; PWR6-NEXT: and 4, 4, 7
14434 ; PWR6-NEXT: rldicl 3, 3, 8, 56
14435 ; PWR6-NEXT: li 5, 11
14436 ; PWR6-NEXT: mulld 4, 4, 9
14437 ; PWR6-NEXT: subc 6, 3, 5
14438 ; PWR6-NEXT: rldicl 4, 4, 8, 56
14439 ; PWR6-NEXT: subfe 3, 3, 3
14440 ; PWR6-NEXT: subc 5, 4, 5
14441 ; PWR6-NEXT: subfe 4, 4, 4
14444 ; PWR7-LABEL: ult_11_v2i64:
14446 ; PWR7-NEXT: addi 3, 1, -32
14447 ; PWR7-NEXT: li 5, 0
14448 ; PWR7-NEXT: li 6, -1
14449 ; PWR7-NEXT: stxvd2x 34, 0, 3
14450 ; PWR7-NEXT: ld 3, -24(1)
14451 ; PWR7-NEXT: ld 4, -32(1)
14452 ; PWR7-NEXT: popcntd 3, 3
14453 ; PWR7-NEXT: popcntd 4, 4
14454 ; PWR7-NEXT: cmpldi 3, 11
14455 ; PWR7-NEXT: isellt 3, 6, 5
14456 ; PWR7-NEXT: cmpldi 4, 11
14457 ; PWR7-NEXT: isellt 4, 6, 5
14458 ; PWR7-NEXT: std 3, -8(1)
14459 ; PWR7-NEXT: addi 3, 1, -16
14460 ; PWR7-NEXT: std 4, -16(1)
14461 ; PWR7-NEXT: lxvd2x 34, 0, 3
14464 ; PWR8-LABEL: ult_11_v2i64:
14466 ; PWR8-NEXT: addis 3, 2, .LCPI119_0@toc@ha
14467 ; PWR8-NEXT: vpopcntd 2, 2
14468 ; PWR8-NEXT: addi 3, 3, .LCPI119_0@toc@l
14469 ; PWR8-NEXT: lxvd2x 35, 0, 3
14470 ; PWR8-NEXT: vcmpgtud 2, 3, 2
14473 ; PWR9-LABEL: ult_11_v2i64:
14475 ; PWR9-NEXT: addis 3, 2, .LCPI119_0@toc@ha
14476 ; PWR9-NEXT: vpopcntd 2, 2
14477 ; PWR9-NEXT: addi 3, 3, .LCPI119_0@toc@l
14478 ; PWR9-NEXT: lxv 35, 0(3)
14479 ; PWR9-NEXT: vcmpgtud 2, 3, 2
14481 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
14482 %3 = icmp ult <2 x i64> %2, <i64 11, i64 11>
14483 %4 = sext <2 x i1> %3 to <2 x i64>
14487 define <2 x i64> @ugt_11_v2i64(<2 x i64> %0) {
14488 ; PWR5-LABEL: ugt_11_v2i64:
14490 ; PWR5-NEXT: lis 5, 21845
14491 ; PWR5-NEXT: lis 6, 13107
14492 ; PWR5-NEXT: ori 5, 5, 21845
14493 ; PWR5-NEXT: rotldi 8, 4, 63
14494 ; PWR5-NEXT: rotldi 9, 3, 63
14495 ; PWR5-NEXT: rldimi 5, 5, 32, 0
14496 ; PWR5-NEXT: and 8, 8, 5
14497 ; PWR5-NEXT: and 5, 9, 5
14498 ; PWR5-NEXT: ori 6, 6, 13107
14499 ; PWR5-NEXT: sub 3, 3, 5
14500 ; PWR5-NEXT: rldimi 6, 6, 32, 0
14501 ; PWR5-NEXT: sub 4, 4, 8
14502 ; PWR5-NEXT: and 8, 3, 6
14503 ; PWR5-NEXT: rotldi 3, 3, 62
14504 ; PWR5-NEXT: and 3, 3, 6
14505 ; PWR5-NEXT: lis 7, 3855
14506 ; PWR5-NEXT: and 5, 4, 6
14507 ; PWR5-NEXT: rotldi 4, 4, 62
14508 ; PWR5-NEXT: add 3, 8, 3
14509 ; PWR5-NEXT: lis 9, 257
14510 ; PWR5-NEXT: ori 7, 7, 3855
14511 ; PWR5-NEXT: and 4, 4, 6
14512 ; PWR5-NEXT: rldicl 6, 3, 60, 4
14513 ; PWR5-NEXT: ori 9, 9, 257
14514 ; PWR5-NEXT: rldimi 7, 7, 32, 0
14515 ; PWR5-NEXT: add 4, 5, 4
14516 ; PWR5-NEXT: add 3, 3, 6
14517 ; PWR5-NEXT: rldimi 9, 9, 32, 0
14518 ; PWR5-NEXT: rldicl 5, 4, 60, 4
14519 ; PWR5-NEXT: and 3, 3, 7
14520 ; PWR5-NEXT: add 4, 4, 5
14521 ; PWR5-NEXT: mulld 3, 3, 9
14522 ; PWR5-NEXT: and 4, 4, 7
14523 ; PWR5-NEXT: rldicl 3, 3, 8, 56
14524 ; PWR5-NEXT: mulld 4, 4, 9
14525 ; PWR5-NEXT: li 5, 11
14526 ; PWR5-NEXT: subfic 3, 3, 11
14527 ; PWR5-NEXT: rldicl 4, 4, 8, 56
14528 ; PWR5-NEXT: subfe 3, 5, 5
14529 ; PWR5-NEXT: subfic 4, 4, 11
14530 ; PWR5-NEXT: subfe 4, 5, 5
14533 ; PWR6-LABEL: ugt_11_v2i64:
14535 ; PWR6-NEXT: lis 5, 21845
14536 ; PWR6-NEXT: lis 6, 13107
14537 ; PWR6-NEXT: ori 5, 5, 21845
14538 ; PWR6-NEXT: rotldi 8, 4, 63
14539 ; PWR6-NEXT: rotldi 9, 3, 63
14540 ; PWR6-NEXT: rldimi 5, 5, 32, 0
14541 ; PWR6-NEXT: and 8, 8, 5
14542 ; PWR6-NEXT: and 5, 9, 5
14543 ; PWR6-NEXT: ori 6, 6, 13107
14544 ; PWR6-NEXT: sub 3, 3, 5
14545 ; PWR6-NEXT: rldimi 6, 6, 32, 0
14546 ; PWR6-NEXT: sub 4, 4, 8
14547 ; PWR6-NEXT: and 8, 3, 6
14548 ; PWR6-NEXT: rotldi 3, 3, 62
14549 ; PWR6-NEXT: and 3, 3, 6
14550 ; PWR6-NEXT: lis 7, 3855
14551 ; PWR6-NEXT: and 5, 4, 6
14552 ; PWR6-NEXT: rotldi 4, 4, 62
14553 ; PWR6-NEXT: add 3, 8, 3
14554 ; PWR6-NEXT: lis 9, 257
14555 ; PWR6-NEXT: ori 7, 7, 3855
14556 ; PWR6-NEXT: and 4, 4, 6
14557 ; PWR6-NEXT: rldicl 6, 3, 60, 4
14558 ; PWR6-NEXT: ori 9, 9, 257
14559 ; PWR6-NEXT: rldimi 7, 7, 32, 0
14560 ; PWR6-NEXT: add 4, 5, 4
14561 ; PWR6-NEXT: add 3, 3, 6
14562 ; PWR6-NEXT: rldimi 9, 9, 32, 0
14563 ; PWR6-NEXT: rldicl 5, 4, 60, 4
14564 ; PWR6-NEXT: and 3, 3, 7
14565 ; PWR6-NEXT: add 4, 4, 5
14566 ; PWR6-NEXT: mulld 3, 3, 9
14567 ; PWR6-NEXT: and 4, 4, 7
14568 ; PWR6-NEXT: rldicl 3, 3, 8, 56
14569 ; PWR6-NEXT: mulld 4, 4, 9
14570 ; PWR6-NEXT: li 5, 11
14571 ; PWR6-NEXT: subfic 3, 3, 11
14572 ; PWR6-NEXT: rldicl 4, 4, 8, 56
14573 ; PWR6-NEXT: subfe 3, 5, 5
14574 ; PWR6-NEXT: subfic 4, 4, 11
14575 ; PWR6-NEXT: subfe 4, 5, 5
14578 ; PWR7-LABEL: ugt_11_v2i64:
14580 ; PWR7-NEXT: addi 3, 1, -32
14581 ; PWR7-NEXT: li 5, 0
14582 ; PWR7-NEXT: li 6, -1
14583 ; PWR7-NEXT: stxvd2x 34, 0, 3
14584 ; PWR7-NEXT: ld 3, -24(1)
14585 ; PWR7-NEXT: ld 4, -32(1)
14586 ; PWR7-NEXT: popcntd 3, 3
14587 ; PWR7-NEXT: popcntd 4, 4
14588 ; PWR7-NEXT: cmpldi 3, 11
14589 ; PWR7-NEXT: iselgt 3, 6, 5
14590 ; PWR7-NEXT: cmpldi 4, 11
14591 ; PWR7-NEXT: iselgt 4, 6, 5
14592 ; PWR7-NEXT: std 3, -8(1)
14593 ; PWR7-NEXT: addi 3, 1, -16
14594 ; PWR7-NEXT: std 4, -16(1)
14595 ; PWR7-NEXT: lxvd2x 34, 0, 3
14598 ; PWR8-LABEL: ugt_11_v2i64:
14600 ; PWR8-NEXT: addis 3, 2, .LCPI120_0@toc@ha
14601 ; PWR8-NEXT: vpopcntd 2, 2
14602 ; PWR8-NEXT: addi 3, 3, .LCPI120_0@toc@l
14603 ; PWR8-NEXT: lxvd2x 35, 0, 3
14604 ; PWR8-NEXT: vcmpgtud 2, 2, 3
14607 ; PWR9-LABEL: ugt_11_v2i64:
14609 ; PWR9-NEXT: addis 3, 2, .LCPI120_0@toc@ha
14610 ; PWR9-NEXT: vpopcntd 2, 2
14611 ; PWR9-NEXT: addi 3, 3, .LCPI120_0@toc@l
14612 ; PWR9-NEXT: lxv 35, 0(3)
14613 ; PWR9-NEXT: vcmpgtud 2, 2, 3
14615 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
14616 %3 = icmp ugt <2 x i64> %2, <i64 11, i64 11>
14617 %4 = sext <2 x i1> %3 to <2 x i64>
14621 define <2 x i64> @ult_12_v2i64(<2 x i64> %0) {
14622 ; PWR5-LABEL: ult_12_v2i64:
14624 ; PWR5-NEXT: lis 5, 21845
14625 ; PWR5-NEXT: lis 6, 13107
14626 ; PWR5-NEXT: ori 5, 5, 21845
14627 ; PWR5-NEXT: rotldi 8, 4, 63
14628 ; PWR5-NEXT: rotldi 9, 3, 63
14629 ; PWR5-NEXT: rldimi 5, 5, 32, 0
14630 ; PWR5-NEXT: and 8, 8, 5
14631 ; PWR5-NEXT: and 5, 9, 5
14632 ; PWR5-NEXT: ori 6, 6, 13107
14633 ; PWR5-NEXT: sub 3, 3, 5
14634 ; PWR5-NEXT: rldimi 6, 6, 32, 0
14635 ; PWR5-NEXT: sub 4, 4, 8
14636 ; PWR5-NEXT: and 8, 3, 6
14637 ; PWR5-NEXT: rotldi 3, 3, 62
14638 ; PWR5-NEXT: and 3, 3, 6
14639 ; PWR5-NEXT: lis 7, 3855
14640 ; PWR5-NEXT: and 5, 4, 6
14641 ; PWR5-NEXT: rotldi 4, 4, 62
14642 ; PWR5-NEXT: add 3, 8, 3
14643 ; PWR5-NEXT: lis 9, 257
14644 ; PWR5-NEXT: ori 7, 7, 3855
14645 ; PWR5-NEXT: and 4, 4, 6
14646 ; PWR5-NEXT: rldicl 6, 3, 60, 4
14647 ; PWR5-NEXT: ori 9, 9, 257
14648 ; PWR5-NEXT: rldimi 7, 7, 32, 0
14649 ; PWR5-NEXT: add 4, 5, 4
14650 ; PWR5-NEXT: add 3, 3, 6
14651 ; PWR5-NEXT: rldimi 9, 9, 32, 0
14652 ; PWR5-NEXT: rldicl 5, 4, 60, 4
14653 ; PWR5-NEXT: and 3, 3, 7
14654 ; PWR5-NEXT: add 4, 4, 5
14655 ; PWR5-NEXT: mulld 3, 3, 9
14656 ; PWR5-NEXT: and 4, 4, 7
14657 ; PWR5-NEXT: rldicl 3, 3, 8, 56
14658 ; PWR5-NEXT: li 5, 12
14659 ; PWR5-NEXT: mulld 4, 4, 9
14660 ; PWR5-NEXT: subc 6, 3, 5
14661 ; PWR5-NEXT: rldicl 4, 4, 8, 56
14662 ; PWR5-NEXT: subfe 3, 3, 3
14663 ; PWR5-NEXT: subc 5, 4, 5
14664 ; PWR5-NEXT: subfe 4, 4, 4
14667 ; PWR6-LABEL: ult_12_v2i64:
14669 ; PWR6-NEXT: lis 5, 21845
14670 ; PWR6-NEXT: lis 6, 13107
14671 ; PWR6-NEXT: ori 5, 5, 21845
14672 ; PWR6-NEXT: rotldi 8, 4, 63
14673 ; PWR6-NEXT: rotldi 9, 3, 63
14674 ; PWR6-NEXT: rldimi 5, 5, 32, 0
14675 ; PWR6-NEXT: and 8, 8, 5
14676 ; PWR6-NEXT: and 5, 9, 5
14677 ; PWR6-NEXT: ori 6, 6, 13107
14678 ; PWR6-NEXT: sub 3, 3, 5
14679 ; PWR6-NEXT: rldimi 6, 6, 32, 0
14680 ; PWR6-NEXT: sub 4, 4, 8
14681 ; PWR6-NEXT: and 8, 3, 6
14682 ; PWR6-NEXT: rotldi 3, 3, 62
14683 ; PWR6-NEXT: and 3, 3, 6
14684 ; PWR6-NEXT: lis 7, 3855
14685 ; PWR6-NEXT: and 5, 4, 6
14686 ; PWR6-NEXT: rotldi 4, 4, 62
14687 ; PWR6-NEXT: add 3, 8, 3
14688 ; PWR6-NEXT: lis 9, 257
14689 ; PWR6-NEXT: ori 7, 7, 3855
14690 ; PWR6-NEXT: and 4, 4, 6
14691 ; PWR6-NEXT: rldicl 6, 3, 60, 4
14692 ; PWR6-NEXT: ori 9, 9, 257
14693 ; PWR6-NEXT: rldimi 7, 7, 32, 0
14694 ; PWR6-NEXT: add 4, 5, 4
14695 ; PWR6-NEXT: add 3, 3, 6
14696 ; PWR6-NEXT: rldimi 9, 9, 32, 0
14697 ; PWR6-NEXT: rldicl 5, 4, 60, 4
14698 ; PWR6-NEXT: and 3, 3, 7
14699 ; PWR6-NEXT: add 4, 4, 5
14700 ; PWR6-NEXT: mulld 3, 3, 9
14701 ; PWR6-NEXT: and 4, 4, 7
14702 ; PWR6-NEXT: rldicl 3, 3, 8, 56
14703 ; PWR6-NEXT: li 5, 12
14704 ; PWR6-NEXT: mulld 4, 4, 9
14705 ; PWR6-NEXT: subc 6, 3, 5
14706 ; PWR6-NEXT: rldicl 4, 4, 8, 56
14707 ; PWR6-NEXT: subfe 3, 3, 3
14708 ; PWR6-NEXT: subc 5, 4, 5
14709 ; PWR6-NEXT: subfe 4, 4, 4
14712 ; PWR7-LABEL: ult_12_v2i64:
14714 ; PWR7-NEXT: addi 3, 1, -32
14715 ; PWR7-NEXT: li 5, 0
14716 ; PWR7-NEXT: li 6, -1
14717 ; PWR7-NEXT: stxvd2x 34, 0, 3
14718 ; PWR7-NEXT: ld 3, -24(1)
14719 ; PWR7-NEXT: ld 4, -32(1)
14720 ; PWR7-NEXT: popcntd 3, 3
14721 ; PWR7-NEXT: popcntd 4, 4
14722 ; PWR7-NEXT: cmpldi 3, 12
14723 ; PWR7-NEXT: isellt 3, 6, 5
14724 ; PWR7-NEXT: cmpldi 4, 12
14725 ; PWR7-NEXT: isellt 4, 6, 5
14726 ; PWR7-NEXT: std 3, -8(1)
14727 ; PWR7-NEXT: addi 3, 1, -16
14728 ; PWR7-NEXT: std 4, -16(1)
14729 ; PWR7-NEXT: lxvd2x 34, 0, 3
14732 ; PWR8-LABEL: ult_12_v2i64:
14734 ; PWR8-NEXT: addis 3, 2, .LCPI121_0@toc@ha
14735 ; PWR8-NEXT: vpopcntd 2, 2
14736 ; PWR8-NEXT: addi 3, 3, .LCPI121_0@toc@l
14737 ; PWR8-NEXT: lxvd2x 35, 0, 3
14738 ; PWR8-NEXT: vcmpgtud 2, 3, 2
14741 ; PWR9-LABEL: ult_12_v2i64:
14743 ; PWR9-NEXT: addis 3, 2, .LCPI121_0@toc@ha
14744 ; PWR9-NEXT: vpopcntd 2, 2
14745 ; PWR9-NEXT: addi 3, 3, .LCPI121_0@toc@l
14746 ; PWR9-NEXT: lxv 35, 0(3)
14747 ; PWR9-NEXT: vcmpgtud 2, 3, 2
14749 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
14750 %3 = icmp ult <2 x i64> %2, <i64 12, i64 12>
14751 %4 = sext <2 x i1> %3 to <2 x i64>
14755 define <2 x i64> @ugt_12_v2i64(<2 x i64> %0) {
14756 ; PWR5-LABEL: ugt_12_v2i64:
14758 ; PWR5-NEXT: lis 5, 21845
14759 ; PWR5-NEXT: lis 6, 13107
14760 ; PWR5-NEXT: ori 5, 5, 21845
14761 ; PWR5-NEXT: rotldi 8, 4, 63
14762 ; PWR5-NEXT: rotldi 9, 3, 63
14763 ; PWR5-NEXT: rldimi 5, 5, 32, 0
14764 ; PWR5-NEXT: and 8, 8, 5
14765 ; PWR5-NEXT: and 5, 9, 5
14766 ; PWR5-NEXT: ori 6, 6, 13107
14767 ; PWR5-NEXT: sub 3, 3, 5
14768 ; PWR5-NEXT: rldimi 6, 6, 32, 0
14769 ; PWR5-NEXT: sub 4, 4, 8
14770 ; PWR5-NEXT: and 8, 3, 6
14771 ; PWR5-NEXT: rotldi 3, 3, 62
14772 ; PWR5-NEXT: and 3, 3, 6
14773 ; PWR5-NEXT: lis 7, 3855
14774 ; PWR5-NEXT: and 5, 4, 6
14775 ; PWR5-NEXT: rotldi 4, 4, 62
14776 ; PWR5-NEXT: add 3, 8, 3
14777 ; PWR5-NEXT: lis 9, 257
14778 ; PWR5-NEXT: ori 7, 7, 3855
14779 ; PWR5-NEXT: and 4, 4, 6
14780 ; PWR5-NEXT: rldicl 6, 3, 60, 4
14781 ; PWR5-NEXT: ori 9, 9, 257
14782 ; PWR5-NEXT: rldimi 7, 7, 32, 0
14783 ; PWR5-NEXT: add 4, 5, 4
14784 ; PWR5-NEXT: add 3, 3, 6
14785 ; PWR5-NEXT: rldimi 9, 9, 32, 0
14786 ; PWR5-NEXT: rldicl 5, 4, 60, 4
14787 ; PWR5-NEXT: and 3, 3, 7
14788 ; PWR5-NEXT: add 4, 4, 5
14789 ; PWR5-NEXT: mulld 3, 3, 9
14790 ; PWR5-NEXT: and 4, 4, 7
14791 ; PWR5-NEXT: rldicl 3, 3, 8, 56
14792 ; PWR5-NEXT: mulld 4, 4, 9
14793 ; PWR5-NEXT: li 5, 12
14794 ; PWR5-NEXT: subfic 3, 3, 12
14795 ; PWR5-NEXT: rldicl 4, 4, 8, 56
14796 ; PWR5-NEXT: subfe 3, 5, 5
14797 ; PWR5-NEXT: subfic 4, 4, 12
14798 ; PWR5-NEXT: subfe 4, 5, 5
14801 ; PWR6-LABEL: ugt_12_v2i64:
14803 ; PWR6-NEXT: lis 5, 21845
14804 ; PWR6-NEXT: lis 6, 13107
14805 ; PWR6-NEXT: ori 5, 5, 21845
14806 ; PWR6-NEXT: rotldi 8, 4, 63
14807 ; PWR6-NEXT: rotldi 9, 3, 63
14808 ; PWR6-NEXT: rldimi 5, 5, 32, 0
14809 ; PWR6-NEXT: and 8, 8, 5
14810 ; PWR6-NEXT: and 5, 9, 5
14811 ; PWR6-NEXT: ori 6, 6, 13107
14812 ; PWR6-NEXT: sub 3, 3, 5
14813 ; PWR6-NEXT: rldimi 6, 6, 32, 0
14814 ; PWR6-NEXT: sub 4, 4, 8
14815 ; PWR6-NEXT: and 8, 3, 6
14816 ; PWR6-NEXT: rotldi 3, 3, 62
14817 ; PWR6-NEXT: and 3, 3, 6
14818 ; PWR6-NEXT: lis 7, 3855
14819 ; PWR6-NEXT: and 5, 4, 6
14820 ; PWR6-NEXT: rotldi 4, 4, 62
14821 ; PWR6-NEXT: add 3, 8, 3
14822 ; PWR6-NEXT: lis 9, 257
14823 ; PWR6-NEXT: ori 7, 7, 3855
14824 ; PWR6-NEXT: and 4, 4, 6
14825 ; PWR6-NEXT: rldicl 6, 3, 60, 4
14826 ; PWR6-NEXT: ori 9, 9, 257
14827 ; PWR6-NEXT: rldimi 7, 7, 32, 0
14828 ; PWR6-NEXT: add 4, 5, 4
14829 ; PWR6-NEXT: add 3, 3, 6
14830 ; PWR6-NEXT: rldimi 9, 9, 32, 0
14831 ; PWR6-NEXT: rldicl 5, 4, 60, 4
14832 ; PWR6-NEXT: and 3, 3, 7
14833 ; PWR6-NEXT: add 4, 4, 5
14834 ; PWR6-NEXT: mulld 3, 3, 9
14835 ; PWR6-NEXT: and 4, 4, 7
14836 ; PWR6-NEXT: rldicl 3, 3, 8, 56
14837 ; PWR6-NEXT: mulld 4, 4, 9
14838 ; PWR6-NEXT: li 5, 12
14839 ; PWR6-NEXT: subfic 3, 3, 12
14840 ; PWR6-NEXT: rldicl 4, 4, 8, 56
14841 ; PWR6-NEXT: subfe 3, 5, 5
14842 ; PWR6-NEXT: subfic 4, 4, 12
14843 ; PWR6-NEXT: subfe 4, 5, 5
14846 ; PWR7-LABEL: ugt_12_v2i64:
14848 ; PWR7-NEXT: addi 3, 1, -32
14849 ; PWR7-NEXT: li 5, 0
14850 ; PWR7-NEXT: li 6, -1
14851 ; PWR7-NEXT: stxvd2x 34, 0, 3
14852 ; PWR7-NEXT: ld 3, -24(1)
14853 ; PWR7-NEXT: ld 4, -32(1)
14854 ; PWR7-NEXT: popcntd 3, 3
14855 ; PWR7-NEXT: popcntd 4, 4
14856 ; PWR7-NEXT: cmpldi 3, 12
14857 ; PWR7-NEXT: iselgt 3, 6, 5
14858 ; PWR7-NEXT: cmpldi 4, 12
14859 ; PWR7-NEXT: iselgt 4, 6, 5
14860 ; PWR7-NEXT: std 3, -8(1)
14861 ; PWR7-NEXT: addi 3, 1, -16
14862 ; PWR7-NEXT: std 4, -16(1)
14863 ; PWR7-NEXT: lxvd2x 34, 0, 3
14866 ; PWR8-LABEL: ugt_12_v2i64:
14868 ; PWR8-NEXT: addis 3, 2, .LCPI122_0@toc@ha
14869 ; PWR8-NEXT: vpopcntd 2, 2
14870 ; PWR8-NEXT: addi 3, 3, .LCPI122_0@toc@l
14871 ; PWR8-NEXT: lxvd2x 35, 0, 3
14872 ; PWR8-NEXT: vcmpgtud 2, 2, 3
14875 ; PWR9-LABEL: ugt_12_v2i64:
14877 ; PWR9-NEXT: addis 3, 2, .LCPI122_0@toc@ha
14878 ; PWR9-NEXT: vpopcntd 2, 2
14879 ; PWR9-NEXT: addi 3, 3, .LCPI122_0@toc@l
14880 ; PWR9-NEXT: lxv 35, 0(3)
14881 ; PWR9-NEXT: vcmpgtud 2, 2, 3
14883 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
14884 %3 = icmp ugt <2 x i64> %2, <i64 12, i64 12>
14885 %4 = sext <2 x i1> %3 to <2 x i64>
14889 define <2 x i64> @ult_13_v2i64(<2 x i64> %0) {
14890 ; PWR5-LABEL: ult_13_v2i64:
14892 ; PWR5-NEXT: lis 5, 21845
14893 ; PWR5-NEXT: lis 6, 13107
14894 ; PWR5-NEXT: ori 5, 5, 21845
14895 ; PWR5-NEXT: rotldi 8, 4, 63
14896 ; PWR5-NEXT: rotldi 9, 3, 63
14897 ; PWR5-NEXT: rldimi 5, 5, 32, 0
14898 ; PWR5-NEXT: and 8, 8, 5
14899 ; PWR5-NEXT: and 5, 9, 5
14900 ; PWR5-NEXT: ori 6, 6, 13107
14901 ; PWR5-NEXT: sub 3, 3, 5
14902 ; PWR5-NEXT: rldimi 6, 6, 32, 0
14903 ; PWR5-NEXT: sub 4, 4, 8
14904 ; PWR5-NEXT: and 8, 3, 6
14905 ; PWR5-NEXT: rotldi 3, 3, 62
14906 ; PWR5-NEXT: and 3, 3, 6
14907 ; PWR5-NEXT: lis 7, 3855
14908 ; PWR5-NEXT: and 5, 4, 6
14909 ; PWR5-NEXT: rotldi 4, 4, 62
14910 ; PWR5-NEXT: add 3, 8, 3
14911 ; PWR5-NEXT: lis 9, 257
14912 ; PWR5-NEXT: ori 7, 7, 3855
14913 ; PWR5-NEXT: and 4, 4, 6
14914 ; PWR5-NEXT: rldicl 6, 3, 60, 4
14915 ; PWR5-NEXT: ori 9, 9, 257
14916 ; PWR5-NEXT: rldimi 7, 7, 32, 0
14917 ; PWR5-NEXT: add 4, 5, 4
14918 ; PWR5-NEXT: add 3, 3, 6
14919 ; PWR5-NEXT: rldimi 9, 9, 32, 0
14920 ; PWR5-NEXT: rldicl 5, 4, 60, 4
14921 ; PWR5-NEXT: and 3, 3, 7
14922 ; PWR5-NEXT: add 4, 4, 5
14923 ; PWR5-NEXT: mulld 3, 3, 9
14924 ; PWR5-NEXT: and 4, 4, 7
14925 ; PWR5-NEXT: rldicl 3, 3, 8, 56
14926 ; PWR5-NEXT: li 5, 13
14927 ; PWR5-NEXT: mulld 4, 4, 9
14928 ; PWR5-NEXT: subc 6, 3, 5
14929 ; PWR5-NEXT: rldicl 4, 4, 8, 56
14930 ; PWR5-NEXT: subfe 3, 3, 3
14931 ; PWR5-NEXT: subc 5, 4, 5
14932 ; PWR5-NEXT: subfe 4, 4, 4
14935 ; PWR6-LABEL: ult_13_v2i64:
14937 ; PWR6-NEXT: lis 5, 21845
14938 ; PWR6-NEXT: lis 6, 13107
14939 ; PWR6-NEXT: ori 5, 5, 21845
14940 ; PWR6-NEXT: rotldi 8, 4, 63
14941 ; PWR6-NEXT: rotldi 9, 3, 63
14942 ; PWR6-NEXT: rldimi 5, 5, 32, 0
14943 ; PWR6-NEXT: and 8, 8, 5
14944 ; PWR6-NEXT: and 5, 9, 5
14945 ; PWR6-NEXT: ori 6, 6, 13107
14946 ; PWR6-NEXT: sub 3, 3, 5
14947 ; PWR6-NEXT: rldimi 6, 6, 32, 0
14948 ; PWR6-NEXT: sub 4, 4, 8
14949 ; PWR6-NEXT: and 8, 3, 6
14950 ; PWR6-NEXT: rotldi 3, 3, 62
14951 ; PWR6-NEXT: and 3, 3, 6
14952 ; PWR6-NEXT: lis 7, 3855
14953 ; PWR6-NEXT: and 5, 4, 6
14954 ; PWR6-NEXT: rotldi 4, 4, 62
14955 ; PWR6-NEXT: add 3, 8, 3
14956 ; PWR6-NEXT: lis 9, 257
14957 ; PWR6-NEXT: ori 7, 7, 3855
14958 ; PWR6-NEXT: and 4, 4, 6
14959 ; PWR6-NEXT: rldicl 6, 3, 60, 4
14960 ; PWR6-NEXT: ori 9, 9, 257
14961 ; PWR6-NEXT: rldimi 7, 7, 32, 0
14962 ; PWR6-NEXT: add 4, 5, 4
14963 ; PWR6-NEXT: add 3, 3, 6
14964 ; PWR6-NEXT: rldimi 9, 9, 32, 0
14965 ; PWR6-NEXT: rldicl 5, 4, 60, 4
14966 ; PWR6-NEXT: and 3, 3, 7
14967 ; PWR6-NEXT: add 4, 4, 5
14968 ; PWR6-NEXT: mulld 3, 3, 9
14969 ; PWR6-NEXT: and 4, 4, 7
14970 ; PWR6-NEXT: rldicl 3, 3, 8, 56
14971 ; PWR6-NEXT: li 5, 13
14972 ; PWR6-NEXT: mulld 4, 4, 9
14973 ; PWR6-NEXT: subc 6, 3, 5
14974 ; PWR6-NEXT: rldicl 4, 4, 8, 56
14975 ; PWR6-NEXT: subfe 3, 3, 3
14976 ; PWR6-NEXT: subc 5, 4, 5
14977 ; PWR6-NEXT: subfe 4, 4, 4
14980 ; PWR7-LABEL: ult_13_v2i64:
14982 ; PWR7-NEXT: addi 3, 1, -32
14983 ; PWR7-NEXT: li 5, 0
14984 ; PWR7-NEXT: li 6, -1
14985 ; PWR7-NEXT: stxvd2x 34, 0, 3
14986 ; PWR7-NEXT: ld 3, -24(1)
14987 ; PWR7-NEXT: ld 4, -32(1)
14988 ; PWR7-NEXT: popcntd 3, 3
14989 ; PWR7-NEXT: popcntd 4, 4
14990 ; PWR7-NEXT: cmpldi 3, 13
14991 ; PWR7-NEXT: isellt 3, 6, 5
14992 ; PWR7-NEXT: cmpldi 4, 13
14993 ; PWR7-NEXT: isellt 4, 6, 5
14994 ; PWR7-NEXT: std 3, -8(1)
14995 ; PWR7-NEXT: addi 3, 1, -16
14996 ; PWR7-NEXT: std 4, -16(1)
14997 ; PWR7-NEXT: lxvd2x 34, 0, 3
15000 ; PWR8-LABEL: ult_13_v2i64:
15002 ; PWR8-NEXT: addis 3, 2, .LCPI123_0@toc@ha
15003 ; PWR8-NEXT: vpopcntd 2, 2
15004 ; PWR8-NEXT: addi 3, 3, .LCPI123_0@toc@l
15005 ; PWR8-NEXT: lxvd2x 35, 0, 3
15006 ; PWR8-NEXT: vcmpgtud 2, 3, 2
15009 ; PWR9-LABEL: ult_13_v2i64:
15011 ; PWR9-NEXT: addis 3, 2, .LCPI123_0@toc@ha
15012 ; PWR9-NEXT: vpopcntd 2, 2
15013 ; PWR9-NEXT: addi 3, 3, .LCPI123_0@toc@l
15014 ; PWR9-NEXT: lxv 35, 0(3)
15015 ; PWR9-NEXT: vcmpgtud 2, 3, 2
15017 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
15018 %3 = icmp ult <2 x i64> %2, <i64 13, i64 13>
15019 %4 = sext <2 x i1> %3 to <2 x i64>
15023 define <2 x i64> @ugt_13_v2i64(<2 x i64> %0) {
15024 ; PWR5-LABEL: ugt_13_v2i64:
15026 ; PWR5-NEXT: lis 5, 21845
15027 ; PWR5-NEXT: lis 6, 13107
15028 ; PWR5-NEXT: ori 5, 5, 21845
15029 ; PWR5-NEXT: rotldi 8, 4, 63
15030 ; PWR5-NEXT: rotldi 9, 3, 63
15031 ; PWR5-NEXT: rldimi 5, 5, 32, 0
15032 ; PWR5-NEXT: and 8, 8, 5
15033 ; PWR5-NEXT: and 5, 9, 5
15034 ; PWR5-NEXT: ori 6, 6, 13107
15035 ; PWR5-NEXT: sub 3, 3, 5
15036 ; PWR5-NEXT: rldimi 6, 6, 32, 0
15037 ; PWR5-NEXT: sub 4, 4, 8
15038 ; PWR5-NEXT: and 8, 3, 6
15039 ; PWR5-NEXT: rotldi 3, 3, 62
15040 ; PWR5-NEXT: and 3, 3, 6
15041 ; PWR5-NEXT: lis 7, 3855
15042 ; PWR5-NEXT: and 5, 4, 6
15043 ; PWR5-NEXT: rotldi 4, 4, 62
15044 ; PWR5-NEXT: add 3, 8, 3
15045 ; PWR5-NEXT: lis 9, 257
15046 ; PWR5-NEXT: ori 7, 7, 3855
15047 ; PWR5-NEXT: and 4, 4, 6
15048 ; PWR5-NEXT: rldicl 6, 3, 60, 4
15049 ; PWR5-NEXT: ori 9, 9, 257
15050 ; PWR5-NEXT: rldimi 7, 7, 32, 0
15051 ; PWR5-NEXT: add 4, 5, 4
15052 ; PWR5-NEXT: add 3, 3, 6
15053 ; PWR5-NEXT: rldimi 9, 9, 32, 0
15054 ; PWR5-NEXT: rldicl 5, 4, 60, 4
15055 ; PWR5-NEXT: and 3, 3, 7
15056 ; PWR5-NEXT: add 4, 4, 5
15057 ; PWR5-NEXT: mulld 3, 3, 9
15058 ; PWR5-NEXT: and 4, 4, 7
15059 ; PWR5-NEXT: rldicl 3, 3, 8, 56
15060 ; PWR5-NEXT: mulld 4, 4, 9
15061 ; PWR5-NEXT: li 5, 13
15062 ; PWR5-NEXT: subfic 3, 3, 13
15063 ; PWR5-NEXT: rldicl 4, 4, 8, 56
15064 ; PWR5-NEXT: subfe 3, 5, 5
15065 ; PWR5-NEXT: subfic 4, 4, 13
15066 ; PWR5-NEXT: subfe 4, 5, 5
15069 ; PWR6-LABEL: ugt_13_v2i64:
15071 ; PWR6-NEXT: lis 5, 21845
15072 ; PWR6-NEXT: lis 6, 13107
15073 ; PWR6-NEXT: ori 5, 5, 21845
15074 ; PWR6-NEXT: rotldi 8, 4, 63
15075 ; PWR6-NEXT: rotldi 9, 3, 63
15076 ; PWR6-NEXT: rldimi 5, 5, 32, 0
15077 ; PWR6-NEXT: and 8, 8, 5
15078 ; PWR6-NEXT: and 5, 9, 5
15079 ; PWR6-NEXT: ori 6, 6, 13107
15080 ; PWR6-NEXT: sub 3, 3, 5
15081 ; PWR6-NEXT: rldimi 6, 6, 32, 0
15082 ; PWR6-NEXT: sub 4, 4, 8
15083 ; PWR6-NEXT: and 8, 3, 6
15084 ; PWR6-NEXT: rotldi 3, 3, 62
15085 ; PWR6-NEXT: and 3, 3, 6
15086 ; PWR6-NEXT: lis 7, 3855
15087 ; PWR6-NEXT: and 5, 4, 6
15088 ; PWR6-NEXT: rotldi 4, 4, 62
15089 ; PWR6-NEXT: add 3, 8, 3
15090 ; PWR6-NEXT: lis 9, 257
15091 ; PWR6-NEXT: ori 7, 7, 3855
15092 ; PWR6-NEXT: and 4, 4, 6
15093 ; PWR6-NEXT: rldicl 6, 3, 60, 4
15094 ; PWR6-NEXT: ori 9, 9, 257
15095 ; PWR6-NEXT: rldimi 7, 7, 32, 0
15096 ; PWR6-NEXT: add 4, 5, 4
15097 ; PWR6-NEXT: add 3, 3, 6
15098 ; PWR6-NEXT: rldimi 9, 9, 32, 0
15099 ; PWR6-NEXT: rldicl 5, 4, 60, 4
15100 ; PWR6-NEXT: and 3, 3, 7
15101 ; PWR6-NEXT: add 4, 4, 5
15102 ; PWR6-NEXT: mulld 3, 3, 9
15103 ; PWR6-NEXT: and 4, 4, 7
15104 ; PWR6-NEXT: rldicl 3, 3, 8, 56
15105 ; PWR6-NEXT: mulld 4, 4, 9
15106 ; PWR6-NEXT: li 5, 13
15107 ; PWR6-NEXT: subfic 3, 3, 13
15108 ; PWR6-NEXT: rldicl 4, 4, 8, 56
15109 ; PWR6-NEXT: subfe 3, 5, 5
15110 ; PWR6-NEXT: subfic 4, 4, 13
15111 ; PWR6-NEXT: subfe 4, 5, 5
15114 ; PWR7-LABEL: ugt_13_v2i64:
15116 ; PWR7-NEXT: addi 3, 1, -32
15117 ; PWR7-NEXT: li 5, 0
15118 ; PWR7-NEXT: li 6, -1
15119 ; PWR7-NEXT: stxvd2x 34, 0, 3
15120 ; PWR7-NEXT: ld 3, -24(1)
15121 ; PWR7-NEXT: ld 4, -32(1)
15122 ; PWR7-NEXT: popcntd 3, 3
15123 ; PWR7-NEXT: popcntd 4, 4
15124 ; PWR7-NEXT: cmpldi 3, 13
15125 ; PWR7-NEXT: iselgt 3, 6, 5
15126 ; PWR7-NEXT: cmpldi 4, 13
15127 ; PWR7-NEXT: iselgt 4, 6, 5
15128 ; PWR7-NEXT: std 3, -8(1)
15129 ; PWR7-NEXT: addi 3, 1, -16
15130 ; PWR7-NEXT: std 4, -16(1)
15131 ; PWR7-NEXT: lxvd2x 34, 0, 3
15134 ; PWR8-LABEL: ugt_13_v2i64:
15136 ; PWR8-NEXT: addis 3, 2, .LCPI124_0@toc@ha
15137 ; PWR8-NEXT: vpopcntd 2, 2
15138 ; PWR8-NEXT: addi 3, 3, .LCPI124_0@toc@l
15139 ; PWR8-NEXT: lxvd2x 35, 0, 3
15140 ; PWR8-NEXT: vcmpgtud 2, 2, 3
15143 ; PWR9-LABEL: ugt_13_v2i64:
15145 ; PWR9-NEXT: addis 3, 2, .LCPI124_0@toc@ha
15146 ; PWR9-NEXT: vpopcntd 2, 2
15147 ; PWR9-NEXT: addi 3, 3, .LCPI124_0@toc@l
15148 ; PWR9-NEXT: lxv 35, 0(3)
15149 ; PWR9-NEXT: vcmpgtud 2, 2, 3
15151 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
15152 %3 = icmp ugt <2 x i64> %2, <i64 13, i64 13>
15153 %4 = sext <2 x i1> %3 to <2 x i64>
15157 define <2 x i64> @ult_14_v2i64(<2 x i64> %0) {
15158 ; PWR5-LABEL: ult_14_v2i64:
15160 ; PWR5-NEXT: lis 5, 21845
15161 ; PWR5-NEXT: lis 6, 13107
15162 ; PWR5-NEXT: ori 5, 5, 21845
15163 ; PWR5-NEXT: rotldi 8, 4, 63
15164 ; PWR5-NEXT: rotldi 9, 3, 63
15165 ; PWR5-NEXT: rldimi 5, 5, 32, 0
15166 ; PWR5-NEXT: and 8, 8, 5
15167 ; PWR5-NEXT: and 5, 9, 5
15168 ; PWR5-NEXT: ori 6, 6, 13107
15169 ; PWR5-NEXT: sub 3, 3, 5
15170 ; PWR5-NEXT: rldimi 6, 6, 32, 0
15171 ; PWR5-NEXT: sub 4, 4, 8
15172 ; PWR5-NEXT: and 8, 3, 6
15173 ; PWR5-NEXT: rotldi 3, 3, 62
15174 ; PWR5-NEXT: and 3, 3, 6
15175 ; PWR5-NEXT: lis 7, 3855
15176 ; PWR5-NEXT: and 5, 4, 6
15177 ; PWR5-NEXT: rotldi 4, 4, 62
15178 ; PWR5-NEXT: add 3, 8, 3
15179 ; PWR5-NEXT: lis 9, 257
15180 ; PWR5-NEXT: ori 7, 7, 3855
15181 ; PWR5-NEXT: and 4, 4, 6
15182 ; PWR5-NEXT: rldicl 6, 3, 60, 4
15183 ; PWR5-NEXT: ori 9, 9, 257
15184 ; PWR5-NEXT: rldimi 7, 7, 32, 0
15185 ; PWR5-NEXT: add 4, 5, 4
15186 ; PWR5-NEXT: add 3, 3, 6
15187 ; PWR5-NEXT: rldimi 9, 9, 32, 0
15188 ; PWR5-NEXT: rldicl 5, 4, 60, 4
15189 ; PWR5-NEXT: and 3, 3, 7
15190 ; PWR5-NEXT: add 4, 4, 5
15191 ; PWR5-NEXT: mulld 3, 3, 9
15192 ; PWR5-NEXT: and 4, 4, 7
15193 ; PWR5-NEXT: rldicl 3, 3, 8, 56
15194 ; PWR5-NEXT: li 5, 14
15195 ; PWR5-NEXT: mulld 4, 4, 9
15196 ; PWR5-NEXT: subc 6, 3, 5
15197 ; PWR5-NEXT: rldicl 4, 4, 8, 56
15198 ; PWR5-NEXT: subfe 3, 3, 3
15199 ; PWR5-NEXT: subc 5, 4, 5
15200 ; PWR5-NEXT: subfe 4, 4, 4
15203 ; PWR6-LABEL: ult_14_v2i64:
15205 ; PWR6-NEXT: lis 5, 21845
15206 ; PWR6-NEXT: lis 6, 13107
15207 ; PWR6-NEXT: ori 5, 5, 21845
15208 ; PWR6-NEXT: rotldi 8, 4, 63
15209 ; PWR6-NEXT: rotldi 9, 3, 63
15210 ; PWR6-NEXT: rldimi 5, 5, 32, 0
15211 ; PWR6-NEXT: and 8, 8, 5
15212 ; PWR6-NEXT: and 5, 9, 5
15213 ; PWR6-NEXT: ori 6, 6, 13107
15214 ; PWR6-NEXT: sub 3, 3, 5
15215 ; PWR6-NEXT: rldimi 6, 6, 32, 0
15216 ; PWR6-NEXT: sub 4, 4, 8
15217 ; PWR6-NEXT: and 8, 3, 6
15218 ; PWR6-NEXT: rotldi 3, 3, 62
15219 ; PWR6-NEXT: and 3, 3, 6
15220 ; PWR6-NEXT: lis 7, 3855
15221 ; PWR6-NEXT: and 5, 4, 6
15222 ; PWR6-NEXT: rotldi 4, 4, 62
15223 ; PWR6-NEXT: add 3, 8, 3
15224 ; PWR6-NEXT: lis 9, 257
15225 ; PWR6-NEXT: ori 7, 7, 3855
15226 ; PWR6-NEXT: and 4, 4, 6
15227 ; PWR6-NEXT: rldicl 6, 3, 60, 4
15228 ; PWR6-NEXT: ori 9, 9, 257
15229 ; PWR6-NEXT: rldimi 7, 7, 32, 0
15230 ; PWR6-NEXT: add 4, 5, 4
15231 ; PWR6-NEXT: add 3, 3, 6
15232 ; PWR6-NEXT: rldimi 9, 9, 32, 0
15233 ; PWR6-NEXT: rldicl 5, 4, 60, 4
15234 ; PWR6-NEXT: and 3, 3, 7
15235 ; PWR6-NEXT: add 4, 4, 5
15236 ; PWR6-NEXT: mulld 3, 3, 9
15237 ; PWR6-NEXT: and 4, 4, 7
15238 ; PWR6-NEXT: rldicl 3, 3, 8, 56
15239 ; PWR6-NEXT: li 5, 14
15240 ; PWR6-NEXT: mulld 4, 4, 9
15241 ; PWR6-NEXT: subc 6, 3, 5
15242 ; PWR6-NEXT: rldicl 4, 4, 8, 56
15243 ; PWR6-NEXT: subfe 3, 3, 3
15244 ; PWR6-NEXT: subc 5, 4, 5
15245 ; PWR6-NEXT: subfe 4, 4, 4
15248 ; PWR7-LABEL: ult_14_v2i64:
15250 ; PWR7-NEXT: addi 3, 1, -32
15251 ; PWR7-NEXT: li 5, 0
15252 ; PWR7-NEXT: li 6, -1
15253 ; PWR7-NEXT: stxvd2x 34, 0, 3
15254 ; PWR7-NEXT: ld 3, -24(1)
15255 ; PWR7-NEXT: ld 4, -32(1)
15256 ; PWR7-NEXT: popcntd 3, 3
15257 ; PWR7-NEXT: popcntd 4, 4
15258 ; PWR7-NEXT: cmpldi 3, 14
15259 ; PWR7-NEXT: isellt 3, 6, 5
15260 ; PWR7-NEXT: cmpldi 4, 14
15261 ; PWR7-NEXT: isellt 4, 6, 5
15262 ; PWR7-NEXT: std 3, -8(1)
15263 ; PWR7-NEXT: addi 3, 1, -16
15264 ; PWR7-NEXT: std 4, -16(1)
15265 ; PWR7-NEXT: lxvd2x 34, 0, 3
15268 ; PWR8-LABEL: ult_14_v2i64:
15270 ; PWR8-NEXT: addis 3, 2, .LCPI125_0@toc@ha
15271 ; PWR8-NEXT: vpopcntd 2, 2
15272 ; PWR8-NEXT: addi 3, 3, .LCPI125_0@toc@l
15273 ; PWR8-NEXT: lxvd2x 35, 0, 3
15274 ; PWR8-NEXT: vcmpgtud 2, 3, 2
15277 ; PWR9-LABEL: ult_14_v2i64:
15279 ; PWR9-NEXT: addis 3, 2, .LCPI125_0@toc@ha
15280 ; PWR9-NEXT: vpopcntd 2, 2
15281 ; PWR9-NEXT: addi 3, 3, .LCPI125_0@toc@l
15282 ; PWR9-NEXT: lxv 35, 0(3)
15283 ; PWR9-NEXT: vcmpgtud 2, 3, 2
15285 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
15286 %3 = icmp ult <2 x i64> %2, <i64 14, i64 14>
15287 %4 = sext <2 x i1> %3 to <2 x i64>
15291 define <2 x i64> @ugt_14_v2i64(<2 x i64> %0) {
15292 ; PWR5-LABEL: ugt_14_v2i64:
15294 ; PWR5-NEXT: lis 5, 21845
15295 ; PWR5-NEXT: lis 6, 13107
15296 ; PWR5-NEXT: ori 5, 5, 21845
15297 ; PWR5-NEXT: rotldi 8, 4, 63
15298 ; PWR5-NEXT: rotldi 9, 3, 63
15299 ; PWR5-NEXT: rldimi 5, 5, 32, 0
15300 ; PWR5-NEXT: and 8, 8, 5
15301 ; PWR5-NEXT: and 5, 9, 5
15302 ; PWR5-NEXT: ori 6, 6, 13107
15303 ; PWR5-NEXT: sub 3, 3, 5
15304 ; PWR5-NEXT: rldimi 6, 6, 32, 0
15305 ; PWR5-NEXT: sub 4, 4, 8
15306 ; PWR5-NEXT: and 8, 3, 6
15307 ; PWR5-NEXT: rotldi 3, 3, 62
15308 ; PWR5-NEXT: and 3, 3, 6
15309 ; PWR5-NEXT: lis 7, 3855
15310 ; PWR5-NEXT: and 5, 4, 6
15311 ; PWR5-NEXT: rotldi 4, 4, 62
15312 ; PWR5-NEXT: add 3, 8, 3
15313 ; PWR5-NEXT: lis 9, 257
15314 ; PWR5-NEXT: ori 7, 7, 3855
15315 ; PWR5-NEXT: and 4, 4, 6
15316 ; PWR5-NEXT: rldicl 6, 3, 60, 4
15317 ; PWR5-NEXT: ori 9, 9, 257
15318 ; PWR5-NEXT: rldimi 7, 7, 32, 0
15319 ; PWR5-NEXT: add 4, 5, 4
15320 ; PWR5-NEXT: add 3, 3, 6
15321 ; PWR5-NEXT: rldimi 9, 9, 32, 0
15322 ; PWR5-NEXT: rldicl 5, 4, 60, 4
15323 ; PWR5-NEXT: and 3, 3, 7
15324 ; PWR5-NEXT: add 4, 4, 5
15325 ; PWR5-NEXT: mulld 3, 3, 9
15326 ; PWR5-NEXT: and 4, 4, 7
15327 ; PWR5-NEXT: rldicl 3, 3, 8, 56
15328 ; PWR5-NEXT: mulld 4, 4, 9
15329 ; PWR5-NEXT: li 5, 14
15330 ; PWR5-NEXT: subfic 3, 3, 14
15331 ; PWR5-NEXT: rldicl 4, 4, 8, 56
15332 ; PWR5-NEXT: subfe 3, 5, 5
15333 ; PWR5-NEXT: subfic 4, 4, 14
15334 ; PWR5-NEXT: subfe 4, 5, 5
15337 ; PWR6-LABEL: ugt_14_v2i64:
15339 ; PWR6-NEXT: lis 5, 21845
15340 ; PWR6-NEXT: lis 6, 13107
15341 ; PWR6-NEXT: ori 5, 5, 21845
15342 ; PWR6-NEXT: rotldi 8, 4, 63
15343 ; PWR6-NEXT: rotldi 9, 3, 63
15344 ; PWR6-NEXT: rldimi 5, 5, 32, 0
15345 ; PWR6-NEXT: and 8, 8, 5
15346 ; PWR6-NEXT: and 5, 9, 5
15347 ; PWR6-NEXT: ori 6, 6, 13107
15348 ; PWR6-NEXT: sub 3, 3, 5
15349 ; PWR6-NEXT: rldimi 6, 6, 32, 0
15350 ; PWR6-NEXT: sub 4, 4, 8
15351 ; PWR6-NEXT: and 8, 3, 6
15352 ; PWR6-NEXT: rotldi 3, 3, 62
15353 ; PWR6-NEXT: and 3, 3, 6
15354 ; PWR6-NEXT: lis 7, 3855
15355 ; PWR6-NEXT: and 5, 4, 6
15356 ; PWR6-NEXT: rotldi 4, 4, 62
15357 ; PWR6-NEXT: add 3, 8, 3
15358 ; PWR6-NEXT: lis 9, 257
15359 ; PWR6-NEXT: ori 7, 7, 3855
15360 ; PWR6-NEXT: and 4, 4, 6
15361 ; PWR6-NEXT: rldicl 6, 3, 60, 4
15362 ; PWR6-NEXT: ori 9, 9, 257
15363 ; PWR6-NEXT: rldimi 7, 7, 32, 0
15364 ; PWR6-NEXT: add 4, 5, 4
15365 ; PWR6-NEXT: add 3, 3, 6
15366 ; PWR6-NEXT: rldimi 9, 9, 32, 0
15367 ; PWR6-NEXT: rldicl 5, 4, 60, 4
15368 ; PWR6-NEXT: and 3, 3, 7
15369 ; PWR6-NEXT: add 4, 4, 5
15370 ; PWR6-NEXT: mulld 3, 3, 9
15371 ; PWR6-NEXT: and 4, 4, 7
15372 ; PWR6-NEXT: rldicl 3, 3, 8, 56
15373 ; PWR6-NEXT: mulld 4, 4, 9
15374 ; PWR6-NEXT: li 5, 14
15375 ; PWR6-NEXT: subfic 3, 3, 14
15376 ; PWR6-NEXT: rldicl 4, 4, 8, 56
15377 ; PWR6-NEXT: subfe 3, 5, 5
15378 ; PWR6-NEXT: subfic 4, 4, 14
15379 ; PWR6-NEXT: subfe 4, 5, 5
15382 ; PWR7-LABEL: ugt_14_v2i64:
15384 ; PWR7-NEXT: addi 3, 1, -32
15385 ; PWR7-NEXT: li 5, 0
15386 ; PWR7-NEXT: li 6, -1
15387 ; PWR7-NEXT: stxvd2x 34, 0, 3
15388 ; PWR7-NEXT: ld 3, -24(1)
15389 ; PWR7-NEXT: ld 4, -32(1)
15390 ; PWR7-NEXT: popcntd 3, 3
15391 ; PWR7-NEXT: popcntd 4, 4
15392 ; PWR7-NEXT: cmpldi 3, 14
15393 ; PWR7-NEXT: iselgt 3, 6, 5
15394 ; PWR7-NEXT: cmpldi 4, 14
15395 ; PWR7-NEXT: iselgt 4, 6, 5
15396 ; PWR7-NEXT: std 3, -8(1)
15397 ; PWR7-NEXT: addi 3, 1, -16
15398 ; PWR7-NEXT: std 4, -16(1)
15399 ; PWR7-NEXT: lxvd2x 34, 0, 3
15402 ; PWR8-LABEL: ugt_14_v2i64:
15404 ; PWR8-NEXT: addis 3, 2, .LCPI126_0@toc@ha
15405 ; PWR8-NEXT: vpopcntd 2, 2
15406 ; PWR8-NEXT: addi 3, 3, .LCPI126_0@toc@l
15407 ; PWR8-NEXT: lxvd2x 35, 0, 3
15408 ; PWR8-NEXT: vcmpgtud 2, 2, 3
15411 ; PWR9-LABEL: ugt_14_v2i64:
15413 ; PWR9-NEXT: addis 3, 2, .LCPI126_0@toc@ha
15414 ; PWR9-NEXT: vpopcntd 2, 2
15415 ; PWR9-NEXT: addi 3, 3, .LCPI126_0@toc@l
15416 ; PWR9-NEXT: lxv 35, 0(3)
15417 ; PWR9-NEXT: vcmpgtud 2, 2, 3
15419 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
15420 %3 = icmp ugt <2 x i64> %2, <i64 14, i64 14>
15421 %4 = sext <2 x i1> %3 to <2 x i64>
15425 define <2 x i64> @ult_15_v2i64(<2 x i64> %0) {
15426 ; PWR5-LABEL: ult_15_v2i64:
15428 ; PWR5-NEXT: lis 5, 21845
15429 ; PWR5-NEXT: lis 6, 13107
15430 ; PWR5-NEXT: ori 5, 5, 21845
15431 ; PWR5-NEXT: rotldi 8, 4, 63
15432 ; PWR5-NEXT: rotldi 9, 3, 63
15433 ; PWR5-NEXT: rldimi 5, 5, 32, 0
15434 ; PWR5-NEXT: and 8, 8, 5
15435 ; PWR5-NEXT: and 5, 9, 5
15436 ; PWR5-NEXT: ori 6, 6, 13107
15437 ; PWR5-NEXT: sub 3, 3, 5
15438 ; PWR5-NEXT: rldimi 6, 6, 32, 0
15439 ; PWR5-NEXT: sub 4, 4, 8
15440 ; PWR5-NEXT: and 8, 3, 6
15441 ; PWR5-NEXT: rotldi 3, 3, 62
15442 ; PWR5-NEXT: and 3, 3, 6
15443 ; PWR5-NEXT: lis 7, 3855
15444 ; PWR5-NEXT: and 5, 4, 6
15445 ; PWR5-NEXT: rotldi 4, 4, 62
15446 ; PWR5-NEXT: add 3, 8, 3
15447 ; PWR5-NEXT: lis 9, 257
15448 ; PWR5-NEXT: ori 7, 7, 3855
15449 ; PWR5-NEXT: and 4, 4, 6
15450 ; PWR5-NEXT: rldicl 6, 3, 60, 4
15451 ; PWR5-NEXT: ori 9, 9, 257
15452 ; PWR5-NEXT: rldimi 7, 7, 32, 0
15453 ; PWR5-NEXT: add 4, 5, 4
15454 ; PWR5-NEXT: add 3, 3, 6
15455 ; PWR5-NEXT: rldimi 9, 9, 32, 0
15456 ; PWR5-NEXT: rldicl 5, 4, 60, 4
15457 ; PWR5-NEXT: and 3, 3, 7
15458 ; PWR5-NEXT: add 4, 4, 5
15459 ; PWR5-NEXT: mulld 3, 3, 9
15460 ; PWR5-NEXT: and 4, 4, 7
15461 ; PWR5-NEXT: rldicl 3, 3, 8, 56
15462 ; PWR5-NEXT: li 5, 15
15463 ; PWR5-NEXT: mulld 4, 4, 9
15464 ; PWR5-NEXT: subc 6, 3, 5
15465 ; PWR5-NEXT: rldicl 4, 4, 8, 56
15466 ; PWR5-NEXT: subfe 3, 3, 3
15467 ; PWR5-NEXT: subc 5, 4, 5
15468 ; PWR5-NEXT: subfe 4, 4, 4
15471 ; PWR6-LABEL: ult_15_v2i64:
15473 ; PWR6-NEXT: lis 5, 21845
15474 ; PWR6-NEXT: lis 6, 13107
15475 ; PWR6-NEXT: ori 5, 5, 21845
15476 ; PWR6-NEXT: rotldi 8, 4, 63
15477 ; PWR6-NEXT: rotldi 9, 3, 63
15478 ; PWR6-NEXT: rldimi 5, 5, 32, 0
15479 ; PWR6-NEXT: and 8, 8, 5
15480 ; PWR6-NEXT: and 5, 9, 5
15481 ; PWR6-NEXT: ori 6, 6, 13107
15482 ; PWR6-NEXT: sub 3, 3, 5
15483 ; PWR6-NEXT: rldimi 6, 6, 32, 0
15484 ; PWR6-NEXT: sub 4, 4, 8
15485 ; PWR6-NEXT: and 8, 3, 6
15486 ; PWR6-NEXT: rotldi 3, 3, 62
15487 ; PWR6-NEXT: and 3, 3, 6
15488 ; PWR6-NEXT: lis 7, 3855
15489 ; PWR6-NEXT: and 5, 4, 6
15490 ; PWR6-NEXT: rotldi 4, 4, 62
15491 ; PWR6-NEXT: add 3, 8, 3
15492 ; PWR6-NEXT: lis 9, 257
15493 ; PWR6-NEXT: ori 7, 7, 3855
15494 ; PWR6-NEXT: and 4, 4, 6
15495 ; PWR6-NEXT: rldicl 6, 3, 60, 4
15496 ; PWR6-NEXT: ori 9, 9, 257
15497 ; PWR6-NEXT: rldimi 7, 7, 32, 0
15498 ; PWR6-NEXT: add 4, 5, 4
15499 ; PWR6-NEXT: add 3, 3, 6
15500 ; PWR6-NEXT: rldimi 9, 9, 32, 0
15501 ; PWR6-NEXT: rldicl 5, 4, 60, 4
15502 ; PWR6-NEXT: and 3, 3, 7
15503 ; PWR6-NEXT: add 4, 4, 5
15504 ; PWR6-NEXT: mulld 3, 3, 9
15505 ; PWR6-NEXT: and 4, 4, 7
15506 ; PWR6-NEXT: rldicl 3, 3, 8, 56
15507 ; PWR6-NEXT: li 5, 15
15508 ; PWR6-NEXT: mulld 4, 4, 9
15509 ; PWR6-NEXT: subc 6, 3, 5
15510 ; PWR6-NEXT: rldicl 4, 4, 8, 56
15511 ; PWR6-NEXT: subfe 3, 3, 3
15512 ; PWR6-NEXT: subc 5, 4, 5
15513 ; PWR6-NEXT: subfe 4, 4, 4
15516 ; PWR7-LABEL: ult_15_v2i64:
15518 ; PWR7-NEXT: addi 3, 1, -32
15519 ; PWR7-NEXT: li 5, 0
15520 ; PWR7-NEXT: li 6, -1
15521 ; PWR7-NEXT: stxvd2x 34, 0, 3
15522 ; PWR7-NEXT: ld 3, -24(1)
15523 ; PWR7-NEXT: ld 4, -32(1)
15524 ; PWR7-NEXT: popcntd 3, 3
15525 ; PWR7-NEXT: popcntd 4, 4
15526 ; PWR7-NEXT: cmpldi 3, 15
15527 ; PWR7-NEXT: isellt 3, 6, 5
15528 ; PWR7-NEXT: cmpldi 4, 15
15529 ; PWR7-NEXT: isellt 4, 6, 5
15530 ; PWR7-NEXT: std 3, -8(1)
15531 ; PWR7-NEXT: addi 3, 1, -16
15532 ; PWR7-NEXT: std 4, -16(1)
15533 ; PWR7-NEXT: lxvd2x 34, 0, 3
15536 ; PWR8-LABEL: ult_15_v2i64:
15538 ; PWR8-NEXT: addis 3, 2, .LCPI127_0@toc@ha
15539 ; PWR8-NEXT: vpopcntd 2, 2
15540 ; PWR8-NEXT: addi 3, 3, .LCPI127_0@toc@l
15541 ; PWR8-NEXT: lxvd2x 35, 0, 3
15542 ; PWR8-NEXT: vcmpgtud 2, 3, 2
15545 ; PWR9-LABEL: ult_15_v2i64:
15547 ; PWR9-NEXT: addis 3, 2, .LCPI127_0@toc@ha
15548 ; PWR9-NEXT: vpopcntd 2, 2
15549 ; PWR9-NEXT: addi 3, 3, .LCPI127_0@toc@l
15550 ; PWR9-NEXT: lxv 35, 0(3)
15551 ; PWR9-NEXT: vcmpgtud 2, 3, 2
15553 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
15554 %3 = icmp ult <2 x i64> %2, <i64 15, i64 15>
15555 %4 = sext <2 x i1> %3 to <2 x i64>
15559 define <2 x i64> @ugt_15_v2i64(<2 x i64> %0) {
15560 ; PWR5-LABEL: ugt_15_v2i64:
15562 ; PWR5-NEXT: lis 5, 21845
15563 ; PWR5-NEXT: lis 6, 13107
15564 ; PWR5-NEXT: ori 5, 5, 21845
15565 ; PWR5-NEXT: rotldi 8, 4, 63
15566 ; PWR5-NEXT: rotldi 9, 3, 63
15567 ; PWR5-NEXT: rldimi 5, 5, 32, 0
15568 ; PWR5-NEXT: and 8, 8, 5
15569 ; PWR5-NEXT: and 5, 9, 5
15570 ; PWR5-NEXT: ori 6, 6, 13107
15571 ; PWR5-NEXT: sub 3, 3, 5
15572 ; PWR5-NEXT: rldimi 6, 6, 32, 0
15573 ; PWR5-NEXT: sub 4, 4, 8
15574 ; PWR5-NEXT: and 8, 3, 6
15575 ; PWR5-NEXT: rotldi 3, 3, 62
15576 ; PWR5-NEXT: and 3, 3, 6
15577 ; PWR5-NEXT: lis 7, 3855
15578 ; PWR5-NEXT: and 5, 4, 6
15579 ; PWR5-NEXT: rotldi 4, 4, 62
15580 ; PWR5-NEXT: add 3, 8, 3
15581 ; PWR5-NEXT: lis 9, 257
15582 ; PWR5-NEXT: ori 7, 7, 3855
15583 ; PWR5-NEXT: and 4, 4, 6
15584 ; PWR5-NEXT: rldicl 6, 3, 60, 4
15585 ; PWR5-NEXT: ori 9, 9, 257
15586 ; PWR5-NEXT: rldimi 7, 7, 32, 0
15587 ; PWR5-NEXT: add 4, 5, 4
15588 ; PWR5-NEXT: add 3, 3, 6
15589 ; PWR5-NEXT: rldimi 9, 9, 32, 0
15590 ; PWR5-NEXT: rldicl 5, 4, 60, 4
15591 ; PWR5-NEXT: and 3, 3, 7
15592 ; PWR5-NEXT: add 4, 4, 5
15593 ; PWR5-NEXT: mulld 3, 3, 9
15594 ; PWR5-NEXT: and 4, 4, 7
15595 ; PWR5-NEXT: rldicl 3, 3, 8, 56
15596 ; PWR5-NEXT: mulld 4, 4, 9
15597 ; PWR5-NEXT: li 5, 15
15598 ; PWR5-NEXT: subfic 3, 3, 15
15599 ; PWR5-NEXT: rldicl 4, 4, 8, 56
15600 ; PWR5-NEXT: subfe 3, 5, 5
15601 ; PWR5-NEXT: subfic 4, 4, 15
15602 ; PWR5-NEXT: subfe 4, 5, 5
15605 ; PWR6-LABEL: ugt_15_v2i64:
15607 ; PWR6-NEXT: lis 5, 21845
15608 ; PWR6-NEXT: lis 6, 13107
15609 ; PWR6-NEXT: ori 5, 5, 21845
15610 ; PWR6-NEXT: rotldi 8, 4, 63
15611 ; PWR6-NEXT: rotldi 9, 3, 63
15612 ; PWR6-NEXT: rldimi 5, 5, 32, 0
15613 ; PWR6-NEXT: and 8, 8, 5
15614 ; PWR6-NEXT: and 5, 9, 5
15615 ; PWR6-NEXT: ori 6, 6, 13107
15616 ; PWR6-NEXT: sub 3, 3, 5
15617 ; PWR6-NEXT: rldimi 6, 6, 32, 0
15618 ; PWR6-NEXT: sub 4, 4, 8
15619 ; PWR6-NEXT: and 8, 3, 6
15620 ; PWR6-NEXT: rotldi 3, 3, 62
15621 ; PWR6-NEXT: and 3, 3, 6
15622 ; PWR6-NEXT: lis 7, 3855
15623 ; PWR6-NEXT: and 5, 4, 6
15624 ; PWR6-NEXT: rotldi 4, 4, 62
15625 ; PWR6-NEXT: add 3, 8, 3
15626 ; PWR6-NEXT: lis 9, 257
15627 ; PWR6-NEXT: ori 7, 7, 3855
15628 ; PWR6-NEXT: and 4, 4, 6
15629 ; PWR6-NEXT: rldicl 6, 3, 60, 4
15630 ; PWR6-NEXT: ori 9, 9, 257
15631 ; PWR6-NEXT: rldimi 7, 7, 32, 0
15632 ; PWR6-NEXT: add 4, 5, 4
15633 ; PWR6-NEXT: add 3, 3, 6
15634 ; PWR6-NEXT: rldimi 9, 9, 32, 0
15635 ; PWR6-NEXT: rldicl 5, 4, 60, 4
15636 ; PWR6-NEXT: and 3, 3, 7
15637 ; PWR6-NEXT: add 4, 4, 5
15638 ; PWR6-NEXT: mulld 3, 3, 9
15639 ; PWR6-NEXT: and 4, 4, 7
15640 ; PWR6-NEXT: rldicl 3, 3, 8, 56
15641 ; PWR6-NEXT: mulld 4, 4, 9
15642 ; PWR6-NEXT: li 5, 15
15643 ; PWR6-NEXT: subfic 3, 3, 15
15644 ; PWR6-NEXT: rldicl 4, 4, 8, 56
15645 ; PWR6-NEXT: subfe 3, 5, 5
15646 ; PWR6-NEXT: subfic 4, 4, 15
15647 ; PWR6-NEXT: subfe 4, 5, 5
15650 ; PWR7-LABEL: ugt_15_v2i64:
15652 ; PWR7-NEXT: addi 3, 1, -32
15653 ; PWR7-NEXT: li 5, 0
15654 ; PWR7-NEXT: li 6, -1
15655 ; PWR7-NEXT: stxvd2x 34, 0, 3
15656 ; PWR7-NEXT: ld 3, -24(1)
15657 ; PWR7-NEXT: ld 4, -32(1)
15658 ; PWR7-NEXT: popcntd 3, 3
15659 ; PWR7-NEXT: popcntd 4, 4
15660 ; PWR7-NEXT: cmpldi 3, 15
15661 ; PWR7-NEXT: iselgt 3, 6, 5
15662 ; PWR7-NEXT: cmpldi 4, 15
15663 ; PWR7-NEXT: iselgt 4, 6, 5
15664 ; PWR7-NEXT: std 3, -8(1)
15665 ; PWR7-NEXT: addi 3, 1, -16
15666 ; PWR7-NEXT: std 4, -16(1)
15667 ; PWR7-NEXT: lxvd2x 34, 0, 3
15670 ; PWR8-LABEL: ugt_15_v2i64:
15672 ; PWR8-NEXT: addis 3, 2, .LCPI128_0@toc@ha
15673 ; PWR8-NEXT: vpopcntd 2, 2
15674 ; PWR8-NEXT: addi 3, 3, .LCPI128_0@toc@l
15675 ; PWR8-NEXT: lxvd2x 35, 0, 3
15676 ; PWR8-NEXT: vcmpgtud 2, 2, 3
15679 ; PWR9-LABEL: ugt_15_v2i64:
15681 ; PWR9-NEXT: addis 3, 2, .LCPI128_0@toc@ha
15682 ; PWR9-NEXT: vpopcntd 2, 2
15683 ; PWR9-NEXT: addi 3, 3, .LCPI128_0@toc@l
15684 ; PWR9-NEXT: lxv 35, 0(3)
15685 ; PWR9-NEXT: vcmpgtud 2, 2, 3
15687 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
15688 %3 = icmp ugt <2 x i64> %2, <i64 15, i64 15>
15689 %4 = sext <2 x i1> %3 to <2 x i64>
15693 define <2 x i64> @ult_16_v2i64(<2 x i64> %0) {
15694 ; PWR5-LABEL: ult_16_v2i64:
15696 ; PWR5-NEXT: lis 5, 21845
15697 ; PWR5-NEXT: lis 6, 13107
15698 ; PWR5-NEXT: ori 5, 5, 21845
15699 ; PWR5-NEXT: rotldi 8, 4, 63
15700 ; PWR5-NEXT: rotldi 9, 3, 63
15701 ; PWR5-NEXT: rldimi 5, 5, 32, 0
15702 ; PWR5-NEXT: and 8, 8, 5
15703 ; PWR5-NEXT: and 5, 9, 5
15704 ; PWR5-NEXT: ori 6, 6, 13107
15705 ; PWR5-NEXT: sub 3, 3, 5
15706 ; PWR5-NEXT: rldimi 6, 6, 32, 0
15707 ; PWR5-NEXT: sub 4, 4, 8
15708 ; PWR5-NEXT: and 8, 3, 6
15709 ; PWR5-NEXT: rotldi 3, 3, 62
15710 ; PWR5-NEXT: and 3, 3, 6
15711 ; PWR5-NEXT: lis 7, 3855
15712 ; PWR5-NEXT: and 5, 4, 6
15713 ; PWR5-NEXT: rotldi 4, 4, 62
15714 ; PWR5-NEXT: add 3, 8, 3
15715 ; PWR5-NEXT: lis 9, 257
15716 ; PWR5-NEXT: ori 7, 7, 3855
15717 ; PWR5-NEXT: and 4, 4, 6
15718 ; PWR5-NEXT: rldicl 6, 3, 60, 4
15719 ; PWR5-NEXT: ori 9, 9, 257
15720 ; PWR5-NEXT: rldimi 7, 7, 32, 0
15721 ; PWR5-NEXT: add 4, 5, 4
15722 ; PWR5-NEXT: add 3, 3, 6
15723 ; PWR5-NEXT: rldimi 9, 9, 32, 0
15724 ; PWR5-NEXT: rldicl 5, 4, 60, 4
15725 ; PWR5-NEXT: and 3, 3, 7
15726 ; PWR5-NEXT: add 4, 4, 5
15727 ; PWR5-NEXT: mulld 3, 3, 9
15728 ; PWR5-NEXT: and 4, 4, 7
15729 ; PWR5-NEXT: rldicl 3, 3, 8, 56
15730 ; PWR5-NEXT: li 5, 16
15731 ; PWR5-NEXT: mulld 4, 4, 9
15732 ; PWR5-NEXT: subc 6, 3, 5
15733 ; PWR5-NEXT: rldicl 4, 4, 8, 56
15734 ; PWR5-NEXT: subfe 3, 3, 3
15735 ; PWR5-NEXT: subc 5, 4, 5
15736 ; PWR5-NEXT: subfe 4, 4, 4
15739 ; PWR6-LABEL: ult_16_v2i64:
15741 ; PWR6-NEXT: lis 5, 21845
15742 ; PWR6-NEXT: lis 6, 13107
15743 ; PWR6-NEXT: ori 5, 5, 21845
15744 ; PWR6-NEXT: rotldi 8, 4, 63
15745 ; PWR6-NEXT: rotldi 9, 3, 63
15746 ; PWR6-NEXT: rldimi 5, 5, 32, 0
15747 ; PWR6-NEXT: and 8, 8, 5
15748 ; PWR6-NEXT: and 5, 9, 5
15749 ; PWR6-NEXT: ori 6, 6, 13107
15750 ; PWR6-NEXT: sub 3, 3, 5
15751 ; PWR6-NEXT: rldimi 6, 6, 32, 0
15752 ; PWR6-NEXT: sub 4, 4, 8
15753 ; PWR6-NEXT: and 8, 3, 6
15754 ; PWR6-NEXT: rotldi 3, 3, 62
15755 ; PWR6-NEXT: and 3, 3, 6
15756 ; PWR6-NEXT: lis 7, 3855
15757 ; PWR6-NEXT: and 5, 4, 6
15758 ; PWR6-NEXT: rotldi 4, 4, 62
15759 ; PWR6-NEXT: add 3, 8, 3
15760 ; PWR6-NEXT: lis 9, 257
15761 ; PWR6-NEXT: ori 7, 7, 3855
15762 ; PWR6-NEXT: and 4, 4, 6
15763 ; PWR6-NEXT: rldicl 6, 3, 60, 4
15764 ; PWR6-NEXT: ori 9, 9, 257
15765 ; PWR6-NEXT: rldimi 7, 7, 32, 0
15766 ; PWR6-NEXT: add 4, 5, 4
15767 ; PWR6-NEXT: add 3, 3, 6
15768 ; PWR6-NEXT: rldimi 9, 9, 32, 0
15769 ; PWR6-NEXT: rldicl 5, 4, 60, 4
15770 ; PWR6-NEXT: and 3, 3, 7
15771 ; PWR6-NEXT: add 4, 4, 5
15772 ; PWR6-NEXT: mulld 3, 3, 9
15773 ; PWR6-NEXT: and 4, 4, 7
15774 ; PWR6-NEXT: rldicl 3, 3, 8, 56
15775 ; PWR6-NEXT: li 5, 16
15776 ; PWR6-NEXT: mulld 4, 4, 9
15777 ; PWR6-NEXT: subc 6, 3, 5
15778 ; PWR6-NEXT: rldicl 4, 4, 8, 56
15779 ; PWR6-NEXT: subfe 3, 3, 3
15780 ; PWR6-NEXT: subc 5, 4, 5
15781 ; PWR6-NEXT: subfe 4, 4, 4
15784 ; PWR7-LABEL: ult_16_v2i64:
15786 ; PWR7-NEXT: addi 3, 1, -32
15787 ; PWR7-NEXT: li 5, 0
15788 ; PWR7-NEXT: li 6, -1
15789 ; PWR7-NEXT: stxvd2x 34, 0, 3
15790 ; PWR7-NEXT: ld 3, -24(1)
15791 ; PWR7-NEXT: ld 4, -32(1)
15792 ; PWR7-NEXT: popcntd 3, 3
15793 ; PWR7-NEXT: popcntd 4, 4
15794 ; PWR7-NEXT: cmpldi 3, 16
15795 ; PWR7-NEXT: isellt 3, 6, 5
15796 ; PWR7-NEXT: cmpldi 4, 16
15797 ; PWR7-NEXT: isellt 4, 6, 5
15798 ; PWR7-NEXT: std 3, -8(1)
15799 ; PWR7-NEXT: addi 3, 1, -16
15800 ; PWR7-NEXT: std 4, -16(1)
15801 ; PWR7-NEXT: lxvd2x 34, 0, 3
15804 ; PWR8-LABEL: ult_16_v2i64:
15806 ; PWR8-NEXT: addis 3, 2, .LCPI129_0@toc@ha
15807 ; PWR8-NEXT: vpopcntd 2, 2
15808 ; PWR8-NEXT: addi 3, 3, .LCPI129_0@toc@l
15809 ; PWR8-NEXT: lxvd2x 35, 0, 3
15810 ; PWR8-NEXT: vcmpgtud 2, 3, 2
15813 ; PWR9-LABEL: ult_16_v2i64:
15815 ; PWR9-NEXT: addis 3, 2, .LCPI129_0@toc@ha
15816 ; PWR9-NEXT: vpopcntd 2, 2
15817 ; PWR9-NEXT: addi 3, 3, .LCPI129_0@toc@l
15818 ; PWR9-NEXT: lxv 35, 0(3)
15819 ; PWR9-NEXT: vcmpgtud 2, 3, 2
15821 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
15822 %3 = icmp ult <2 x i64> %2, <i64 16, i64 16>
15823 %4 = sext <2 x i1> %3 to <2 x i64>
15827 define <2 x i64> @ugt_16_v2i64(<2 x i64> %0) {
15828 ; PWR5-LABEL: ugt_16_v2i64:
15830 ; PWR5-NEXT: lis 5, 21845
15831 ; PWR5-NEXT: lis 6, 13107
15832 ; PWR5-NEXT: ori 5, 5, 21845
15833 ; PWR5-NEXT: rotldi 8, 4, 63
15834 ; PWR5-NEXT: rotldi 9, 3, 63
15835 ; PWR5-NEXT: rldimi 5, 5, 32, 0
15836 ; PWR5-NEXT: and 8, 8, 5
15837 ; PWR5-NEXT: and 5, 9, 5
15838 ; PWR5-NEXT: ori 6, 6, 13107
15839 ; PWR5-NEXT: sub 3, 3, 5
15840 ; PWR5-NEXT: rldimi 6, 6, 32, 0
15841 ; PWR5-NEXT: sub 4, 4, 8
15842 ; PWR5-NEXT: and 8, 3, 6
15843 ; PWR5-NEXT: rotldi 3, 3, 62
15844 ; PWR5-NEXT: and 3, 3, 6
15845 ; PWR5-NEXT: lis 7, 3855
15846 ; PWR5-NEXT: and 5, 4, 6
15847 ; PWR5-NEXT: rotldi 4, 4, 62
15848 ; PWR5-NEXT: add 3, 8, 3
15849 ; PWR5-NEXT: lis 9, 257
15850 ; PWR5-NEXT: ori 7, 7, 3855
15851 ; PWR5-NEXT: and 4, 4, 6
15852 ; PWR5-NEXT: rldicl 6, 3, 60, 4
15853 ; PWR5-NEXT: ori 9, 9, 257
15854 ; PWR5-NEXT: rldimi 7, 7, 32, 0
15855 ; PWR5-NEXT: add 4, 5, 4
15856 ; PWR5-NEXT: add 3, 3, 6
15857 ; PWR5-NEXT: rldimi 9, 9, 32, 0
15858 ; PWR5-NEXT: rldicl 5, 4, 60, 4
15859 ; PWR5-NEXT: and 3, 3, 7
15860 ; PWR5-NEXT: add 4, 4, 5
15861 ; PWR5-NEXT: mulld 3, 3, 9
15862 ; PWR5-NEXT: and 4, 4, 7
15863 ; PWR5-NEXT: rldicl 3, 3, 8, 56
15864 ; PWR5-NEXT: mulld 4, 4, 9
15865 ; PWR5-NEXT: li 5, 16
15866 ; PWR5-NEXT: subfic 3, 3, 16
15867 ; PWR5-NEXT: rldicl 4, 4, 8, 56
15868 ; PWR5-NEXT: subfe 3, 5, 5
15869 ; PWR5-NEXT: subfic 4, 4, 16
15870 ; PWR5-NEXT: subfe 4, 5, 5
15873 ; PWR6-LABEL: ugt_16_v2i64:
15875 ; PWR6-NEXT: lis 5, 21845
15876 ; PWR6-NEXT: lis 6, 13107
15877 ; PWR6-NEXT: ori 5, 5, 21845
15878 ; PWR6-NEXT: rotldi 8, 4, 63
15879 ; PWR6-NEXT: rotldi 9, 3, 63
15880 ; PWR6-NEXT: rldimi 5, 5, 32, 0
15881 ; PWR6-NEXT: and 8, 8, 5
15882 ; PWR6-NEXT: and 5, 9, 5
15883 ; PWR6-NEXT: ori 6, 6, 13107
15884 ; PWR6-NEXT: sub 3, 3, 5
15885 ; PWR6-NEXT: rldimi 6, 6, 32, 0
15886 ; PWR6-NEXT: sub 4, 4, 8
15887 ; PWR6-NEXT: and 8, 3, 6
15888 ; PWR6-NEXT: rotldi 3, 3, 62
15889 ; PWR6-NEXT: and 3, 3, 6
15890 ; PWR6-NEXT: lis 7, 3855
15891 ; PWR6-NEXT: and 5, 4, 6
15892 ; PWR6-NEXT: rotldi 4, 4, 62
15893 ; PWR6-NEXT: add 3, 8, 3
15894 ; PWR6-NEXT: lis 9, 257
15895 ; PWR6-NEXT: ori 7, 7, 3855
15896 ; PWR6-NEXT: and 4, 4, 6
15897 ; PWR6-NEXT: rldicl 6, 3, 60, 4
15898 ; PWR6-NEXT: ori 9, 9, 257
15899 ; PWR6-NEXT: rldimi 7, 7, 32, 0
15900 ; PWR6-NEXT: add 4, 5, 4
15901 ; PWR6-NEXT: add 3, 3, 6
15902 ; PWR6-NEXT: rldimi 9, 9, 32, 0
15903 ; PWR6-NEXT: rldicl 5, 4, 60, 4
15904 ; PWR6-NEXT: and 3, 3, 7
15905 ; PWR6-NEXT: add 4, 4, 5
15906 ; PWR6-NEXT: mulld 3, 3, 9
15907 ; PWR6-NEXT: and 4, 4, 7
15908 ; PWR6-NEXT: rldicl 3, 3, 8, 56
15909 ; PWR6-NEXT: mulld 4, 4, 9
15910 ; PWR6-NEXT: li 5, 16
15911 ; PWR6-NEXT: subfic 3, 3, 16
15912 ; PWR6-NEXT: rldicl 4, 4, 8, 56
15913 ; PWR6-NEXT: subfe 3, 5, 5
15914 ; PWR6-NEXT: subfic 4, 4, 16
15915 ; PWR6-NEXT: subfe 4, 5, 5
15918 ; PWR7-LABEL: ugt_16_v2i64:
15920 ; PWR7-NEXT: addi 3, 1, -32
15921 ; PWR7-NEXT: li 5, 0
15922 ; PWR7-NEXT: li 6, -1
15923 ; PWR7-NEXT: stxvd2x 34, 0, 3
15924 ; PWR7-NEXT: ld 3, -24(1)
15925 ; PWR7-NEXT: ld 4, -32(1)
15926 ; PWR7-NEXT: popcntd 3, 3
15927 ; PWR7-NEXT: popcntd 4, 4
15928 ; PWR7-NEXT: cmpldi 3, 16
15929 ; PWR7-NEXT: iselgt 3, 6, 5
15930 ; PWR7-NEXT: cmpldi 4, 16
15931 ; PWR7-NEXT: iselgt 4, 6, 5
15932 ; PWR7-NEXT: std 3, -8(1)
15933 ; PWR7-NEXT: addi 3, 1, -16
15934 ; PWR7-NEXT: std 4, -16(1)
15935 ; PWR7-NEXT: lxvd2x 34, 0, 3
15938 ; PWR8-LABEL: ugt_16_v2i64:
15940 ; PWR8-NEXT: addis 3, 2, .LCPI130_0@toc@ha
15941 ; PWR8-NEXT: vpopcntd 2, 2
15942 ; PWR8-NEXT: addi 3, 3, .LCPI130_0@toc@l
15943 ; PWR8-NEXT: lxvd2x 35, 0, 3
15944 ; PWR8-NEXT: vcmpgtud 2, 2, 3
15947 ; PWR9-LABEL: ugt_16_v2i64:
15949 ; PWR9-NEXT: addis 3, 2, .LCPI130_0@toc@ha
15950 ; PWR9-NEXT: vpopcntd 2, 2
15951 ; PWR9-NEXT: addi 3, 3, .LCPI130_0@toc@l
15952 ; PWR9-NEXT: lxv 35, 0(3)
15953 ; PWR9-NEXT: vcmpgtud 2, 2, 3
15955 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
15956 %3 = icmp ugt <2 x i64> %2, <i64 16, i64 16>
15957 %4 = sext <2 x i1> %3 to <2 x i64>
15961 define <2 x i64> @ult_17_v2i64(<2 x i64> %0) {
15962 ; PWR5-LABEL: ult_17_v2i64:
15964 ; PWR5-NEXT: lis 5, 21845
15965 ; PWR5-NEXT: lis 6, 13107
15966 ; PWR5-NEXT: ori 5, 5, 21845
15967 ; PWR5-NEXT: rotldi 8, 4, 63
15968 ; PWR5-NEXT: rotldi 9, 3, 63
15969 ; PWR5-NEXT: rldimi 5, 5, 32, 0
15970 ; PWR5-NEXT: and 8, 8, 5
15971 ; PWR5-NEXT: and 5, 9, 5
15972 ; PWR5-NEXT: ori 6, 6, 13107
15973 ; PWR5-NEXT: sub 3, 3, 5
15974 ; PWR5-NEXT: rldimi 6, 6, 32, 0
15975 ; PWR5-NEXT: sub 4, 4, 8
15976 ; PWR5-NEXT: and 8, 3, 6
15977 ; PWR5-NEXT: rotldi 3, 3, 62
15978 ; PWR5-NEXT: and 3, 3, 6
15979 ; PWR5-NEXT: lis 7, 3855
15980 ; PWR5-NEXT: and 5, 4, 6
15981 ; PWR5-NEXT: rotldi 4, 4, 62
15982 ; PWR5-NEXT: add 3, 8, 3
15983 ; PWR5-NEXT: lis 9, 257
15984 ; PWR5-NEXT: ori 7, 7, 3855
15985 ; PWR5-NEXT: and 4, 4, 6
15986 ; PWR5-NEXT: rldicl 6, 3, 60, 4
15987 ; PWR5-NEXT: ori 9, 9, 257
15988 ; PWR5-NEXT: rldimi 7, 7, 32, 0
15989 ; PWR5-NEXT: add 4, 5, 4
15990 ; PWR5-NEXT: add 3, 3, 6
15991 ; PWR5-NEXT: rldimi 9, 9, 32, 0
15992 ; PWR5-NEXT: rldicl 5, 4, 60, 4
15993 ; PWR5-NEXT: and 3, 3, 7
15994 ; PWR5-NEXT: add 4, 4, 5
15995 ; PWR5-NEXT: mulld 3, 3, 9
15996 ; PWR5-NEXT: and 4, 4, 7
15997 ; PWR5-NEXT: rldicl 3, 3, 8, 56
15998 ; PWR5-NEXT: li 5, 17
15999 ; PWR5-NEXT: mulld 4, 4, 9
16000 ; PWR5-NEXT: subc 6, 3, 5
16001 ; PWR5-NEXT: rldicl 4, 4, 8, 56
16002 ; PWR5-NEXT: subfe 3, 3, 3
16003 ; PWR5-NEXT: subc 5, 4, 5
16004 ; PWR5-NEXT: subfe 4, 4, 4
16007 ; PWR6-LABEL: ult_17_v2i64:
16009 ; PWR6-NEXT: lis 5, 21845
16010 ; PWR6-NEXT: lis 6, 13107
16011 ; PWR6-NEXT: ori 5, 5, 21845
16012 ; PWR6-NEXT: rotldi 8, 4, 63
16013 ; PWR6-NEXT: rotldi 9, 3, 63
16014 ; PWR6-NEXT: rldimi 5, 5, 32, 0
16015 ; PWR6-NEXT: and 8, 8, 5
16016 ; PWR6-NEXT: and 5, 9, 5
16017 ; PWR6-NEXT: ori 6, 6, 13107
16018 ; PWR6-NEXT: sub 3, 3, 5
16019 ; PWR6-NEXT: rldimi 6, 6, 32, 0
16020 ; PWR6-NEXT: sub 4, 4, 8
16021 ; PWR6-NEXT: and 8, 3, 6
16022 ; PWR6-NEXT: rotldi 3, 3, 62
16023 ; PWR6-NEXT: and 3, 3, 6
16024 ; PWR6-NEXT: lis 7, 3855
16025 ; PWR6-NEXT: and 5, 4, 6
16026 ; PWR6-NEXT: rotldi 4, 4, 62
16027 ; PWR6-NEXT: add 3, 8, 3
16028 ; PWR6-NEXT: lis 9, 257
16029 ; PWR6-NEXT: ori 7, 7, 3855
16030 ; PWR6-NEXT: and 4, 4, 6
16031 ; PWR6-NEXT: rldicl 6, 3, 60, 4
16032 ; PWR6-NEXT: ori 9, 9, 257
16033 ; PWR6-NEXT: rldimi 7, 7, 32, 0
16034 ; PWR6-NEXT: add 4, 5, 4
16035 ; PWR6-NEXT: add 3, 3, 6
16036 ; PWR6-NEXT: rldimi 9, 9, 32, 0
16037 ; PWR6-NEXT: rldicl 5, 4, 60, 4
16038 ; PWR6-NEXT: and 3, 3, 7
16039 ; PWR6-NEXT: add 4, 4, 5
16040 ; PWR6-NEXT: mulld 3, 3, 9
16041 ; PWR6-NEXT: and 4, 4, 7
16042 ; PWR6-NEXT: rldicl 3, 3, 8, 56
16043 ; PWR6-NEXT: li 5, 17
16044 ; PWR6-NEXT: mulld 4, 4, 9
16045 ; PWR6-NEXT: subc 6, 3, 5
16046 ; PWR6-NEXT: rldicl 4, 4, 8, 56
16047 ; PWR6-NEXT: subfe 3, 3, 3
16048 ; PWR6-NEXT: subc 5, 4, 5
16049 ; PWR6-NEXT: subfe 4, 4, 4
16052 ; PWR7-LABEL: ult_17_v2i64:
16054 ; PWR7-NEXT: addi 3, 1, -32
16055 ; PWR7-NEXT: li 5, 0
16056 ; PWR7-NEXT: li 6, -1
16057 ; PWR7-NEXT: stxvd2x 34, 0, 3
16058 ; PWR7-NEXT: ld 3, -24(1)
16059 ; PWR7-NEXT: ld 4, -32(1)
16060 ; PWR7-NEXT: popcntd 3, 3
16061 ; PWR7-NEXT: popcntd 4, 4
16062 ; PWR7-NEXT: cmpldi 3, 17
16063 ; PWR7-NEXT: isellt 3, 6, 5
16064 ; PWR7-NEXT: cmpldi 4, 17
16065 ; PWR7-NEXT: isellt 4, 6, 5
16066 ; PWR7-NEXT: std 3, -8(1)
16067 ; PWR7-NEXT: addi 3, 1, -16
16068 ; PWR7-NEXT: std 4, -16(1)
16069 ; PWR7-NEXT: lxvd2x 34, 0, 3
16072 ; PWR8-LABEL: ult_17_v2i64:
16074 ; PWR8-NEXT: addis 3, 2, .LCPI131_0@toc@ha
16075 ; PWR8-NEXT: vpopcntd 2, 2
16076 ; PWR8-NEXT: addi 3, 3, .LCPI131_0@toc@l
16077 ; PWR8-NEXT: lxvd2x 35, 0, 3
16078 ; PWR8-NEXT: vcmpgtud 2, 3, 2
16081 ; PWR9-LABEL: ult_17_v2i64:
16083 ; PWR9-NEXT: addis 3, 2, .LCPI131_0@toc@ha
16084 ; PWR9-NEXT: vpopcntd 2, 2
16085 ; PWR9-NEXT: addi 3, 3, .LCPI131_0@toc@l
16086 ; PWR9-NEXT: lxv 35, 0(3)
16087 ; PWR9-NEXT: vcmpgtud 2, 3, 2
16089 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
16090 %3 = icmp ult <2 x i64> %2, <i64 17, i64 17>
16091 %4 = sext <2 x i1> %3 to <2 x i64>
16095 define <2 x i64> @ugt_17_v2i64(<2 x i64> %0) {
16096 ; PWR5-LABEL: ugt_17_v2i64:
16098 ; PWR5-NEXT: lis 5, 21845
16099 ; PWR5-NEXT: lis 6, 13107
16100 ; PWR5-NEXT: ori 5, 5, 21845
16101 ; PWR5-NEXT: rotldi 8, 4, 63
16102 ; PWR5-NEXT: rotldi 9, 3, 63
16103 ; PWR5-NEXT: rldimi 5, 5, 32, 0
16104 ; PWR5-NEXT: and 8, 8, 5
16105 ; PWR5-NEXT: and 5, 9, 5
16106 ; PWR5-NEXT: ori 6, 6, 13107
16107 ; PWR5-NEXT: sub 3, 3, 5
16108 ; PWR5-NEXT: rldimi 6, 6, 32, 0
16109 ; PWR5-NEXT: sub 4, 4, 8
16110 ; PWR5-NEXT: and 8, 3, 6
16111 ; PWR5-NEXT: rotldi 3, 3, 62
16112 ; PWR5-NEXT: and 3, 3, 6
16113 ; PWR5-NEXT: lis 7, 3855
16114 ; PWR5-NEXT: and 5, 4, 6
16115 ; PWR5-NEXT: rotldi 4, 4, 62
16116 ; PWR5-NEXT: add 3, 8, 3
16117 ; PWR5-NEXT: lis 9, 257
16118 ; PWR5-NEXT: ori 7, 7, 3855
16119 ; PWR5-NEXT: and 4, 4, 6
16120 ; PWR5-NEXT: rldicl 6, 3, 60, 4
16121 ; PWR5-NEXT: ori 9, 9, 257
16122 ; PWR5-NEXT: rldimi 7, 7, 32, 0
16123 ; PWR5-NEXT: add 4, 5, 4
16124 ; PWR5-NEXT: add 3, 3, 6
16125 ; PWR5-NEXT: rldimi 9, 9, 32, 0
16126 ; PWR5-NEXT: rldicl 5, 4, 60, 4
16127 ; PWR5-NEXT: and 3, 3, 7
16128 ; PWR5-NEXT: add 4, 4, 5
16129 ; PWR5-NEXT: mulld 3, 3, 9
16130 ; PWR5-NEXT: and 4, 4, 7
16131 ; PWR5-NEXT: rldicl 3, 3, 8, 56
16132 ; PWR5-NEXT: mulld 4, 4, 9
16133 ; PWR5-NEXT: li 5, 17
16134 ; PWR5-NEXT: subfic 3, 3, 17
16135 ; PWR5-NEXT: rldicl 4, 4, 8, 56
16136 ; PWR5-NEXT: subfe 3, 5, 5
16137 ; PWR5-NEXT: subfic 4, 4, 17
16138 ; PWR5-NEXT: subfe 4, 5, 5
16141 ; PWR6-LABEL: ugt_17_v2i64:
16143 ; PWR6-NEXT: lis 5, 21845
16144 ; PWR6-NEXT: lis 6, 13107
16145 ; PWR6-NEXT: ori 5, 5, 21845
16146 ; PWR6-NEXT: rotldi 8, 4, 63
16147 ; PWR6-NEXT: rotldi 9, 3, 63
16148 ; PWR6-NEXT: rldimi 5, 5, 32, 0
16149 ; PWR6-NEXT: and 8, 8, 5
16150 ; PWR6-NEXT: and 5, 9, 5
16151 ; PWR6-NEXT: ori 6, 6, 13107
16152 ; PWR6-NEXT: sub 3, 3, 5
16153 ; PWR6-NEXT: rldimi 6, 6, 32, 0
16154 ; PWR6-NEXT: sub 4, 4, 8
16155 ; PWR6-NEXT: and 8, 3, 6
16156 ; PWR6-NEXT: rotldi 3, 3, 62
16157 ; PWR6-NEXT: and 3, 3, 6
16158 ; PWR6-NEXT: lis 7, 3855
16159 ; PWR6-NEXT: and 5, 4, 6
16160 ; PWR6-NEXT: rotldi 4, 4, 62
16161 ; PWR6-NEXT: add 3, 8, 3
16162 ; PWR6-NEXT: lis 9, 257
16163 ; PWR6-NEXT: ori 7, 7, 3855
16164 ; PWR6-NEXT: and 4, 4, 6
16165 ; PWR6-NEXT: rldicl 6, 3, 60, 4
16166 ; PWR6-NEXT: ori 9, 9, 257
16167 ; PWR6-NEXT: rldimi 7, 7, 32, 0
16168 ; PWR6-NEXT: add 4, 5, 4
16169 ; PWR6-NEXT: add 3, 3, 6
16170 ; PWR6-NEXT: rldimi 9, 9, 32, 0
16171 ; PWR6-NEXT: rldicl 5, 4, 60, 4
16172 ; PWR6-NEXT: and 3, 3, 7
16173 ; PWR6-NEXT: add 4, 4, 5
16174 ; PWR6-NEXT: mulld 3, 3, 9
16175 ; PWR6-NEXT: and 4, 4, 7
16176 ; PWR6-NEXT: rldicl 3, 3, 8, 56
16177 ; PWR6-NEXT: mulld 4, 4, 9
16178 ; PWR6-NEXT: li 5, 17
16179 ; PWR6-NEXT: subfic 3, 3, 17
16180 ; PWR6-NEXT: rldicl 4, 4, 8, 56
16181 ; PWR6-NEXT: subfe 3, 5, 5
16182 ; PWR6-NEXT: subfic 4, 4, 17
16183 ; PWR6-NEXT: subfe 4, 5, 5
16186 ; PWR7-LABEL: ugt_17_v2i64:
16188 ; PWR7-NEXT: addi 3, 1, -32
16189 ; PWR7-NEXT: li 5, 0
16190 ; PWR7-NEXT: li 6, -1
16191 ; PWR7-NEXT: stxvd2x 34, 0, 3
16192 ; PWR7-NEXT: ld 3, -24(1)
16193 ; PWR7-NEXT: ld 4, -32(1)
16194 ; PWR7-NEXT: popcntd 3, 3
16195 ; PWR7-NEXT: popcntd 4, 4
16196 ; PWR7-NEXT: cmpldi 3, 17
16197 ; PWR7-NEXT: iselgt 3, 6, 5
16198 ; PWR7-NEXT: cmpldi 4, 17
16199 ; PWR7-NEXT: iselgt 4, 6, 5
16200 ; PWR7-NEXT: std 3, -8(1)
16201 ; PWR7-NEXT: addi 3, 1, -16
16202 ; PWR7-NEXT: std 4, -16(1)
16203 ; PWR7-NEXT: lxvd2x 34, 0, 3
16206 ; PWR8-LABEL: ugt_17_v2i64:
16208 ; PWR8-NEXT: addis 3, 2, .LCPI132_0@toc@ha
16209 ; PWR8-NEXT: vpopcntd 2, 2
16210 ; PWR8-NEXT: addi 3, 3, .LCPI132_0@toc@l
16211 ; PWR8-NEXT: lxvd2x 35, 0, 3
16212 ; PWR8-NEXT: vcmpgtud 2, 2, 3
16215 ; PWR9-LABEL: ugt_17_v2i64:
16217 ; PWR9-NEXT: addis 3, 2, .LCPI132_0@toc@ha
16218 ; PWR9-NEXT: vpopcntd 2, 2
16219 ; PWR9-NEXT: addi 3, 3, .LCPI132_0@toc@l
16220 ; PWR9-NEXT: lxv 35, 0(3)
16221 ; PWR9-NEXT: vcmpgtud 2, 2, 3
16223 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
16224 %3 = icmp ugt <2 x i64> %2, <i64 17, i64 17>
16225 %4 = sext <2 x i1> %3 to <2 x i64>
16229 define <2 x i64> @ult_18_v2i64(<2 x i64> %0) {
16230 ; PWR5-LABEL: ult_18_v2i64:
16232 ; PWR5-NEXT: lis 5, 21845
16233 ; PWR5-NEXT: lis 6, 13107
16234 ; PWR5-NEXT: ori 5, 5, 21845
16235 ; PWR5-NEXT: rotldi 8, 4, 63
16236 ; PWR5-NEXT: rotldi 9, 3, 63
16237 ; PWR5-NEXT: rldimi 5, 5, 32, 0
16238 ; PWR5-NEXT: and 8, 8, 5
16239 ; PWR5-NEXT: and 5, 9, 5
16240 ; PWR5-NEXT: ori 6, 6, 13107
16241 ; PWR5-NEXT: sub 3, 3, 5
16242 ; PWR5-NEXT: rldimi 6, 6, 32, 0
16243 ; PWR5-NEXT: sub 4, 4, 8
16244 ; PWR5-NEXT: and 8, 3, 6
16245 ; PWR5-NEXT: rotldi 3, 3, 62
16246 ; PWR5-NEXT: and 3, 3, 6
16247 ; PWR5-NEXT: lis 7, 3855
16248 ; PWR5-NEXT: and 5, 4, 6
16249 ; PWR5-NEXT: rotldi 4, 4, 62
16250 ; PWR5-NEXT: add 3, 8, 3
16251 ; PWR5-NEXT: lis 9, 257
16252 ; PWR5-NEXT: ori 7, 7, 3855
16253 ; PWR5-NEXT: and 4, 4, 6
16254 ; PWR5-NEXT: rldicl 6, 3, 60, 4
16255 ; PWR5-NEXT: ori 9, 9, 257
16256 ; PWR5-NEXT: rldimi 7, 7, 32, 0
16257 ; PWR5-NEXT: add 4, 5, 4
16258 ; PWR5-NEXT: add 3, 3, 6
16259 ; PWR5-NEXT: rldimi 9, 9, 32, 0
16260 ; PWR5-NEXT: rldicl 5, 4, 60, 4
16261 ; PWR5-NEXT: and 3, 3, 7
16262 ; PWR5-NEXT: add 4, 4, 5
16263 ; PWR5-NEXT: mulld 3, 3, 9
16264 ; PWR5-NEXT: and 4, 4, 7
16265 ; PWR5-NEXT: rldicl 3, 3, 8, 56
16266 ; PWR5-NEXT: li 5, 18
16267 ; PWR5-NEXT: mulld 4, 4, 9
16268 ; PWR5-NEXT: subc 6, 3, 5
16269 ; PWR5-NEXT: rldicl 4, 4, 8, 56
16270 ; PWR5-NEXT: subfe 3, 3, 3
16271 ; PWR5-NEXT: subc 5, 4, 5
16272 ; PWR5-NEXT: subfe 4, 4, 4
16275 ; PWR6-LABEL: ult_18_v2i64:
16277 ; PWR6-NEXT: lis 5, 21845
16278 ; PWR6-NEXT: lis 6, 13107
16279 ; PWR6-NEXT: ori 5, 5, 21845
16280 ; PWR6-NEXT: rotldi 8, 4, 63
16281 ; PWR6-NEXT: rotldi 9, 3, 63
16282 ; PWR6-NEXT: rldimi 5, 5, 32, 0
16283 ; PWR6-NEXT: and 8, 8, 5
16284 ; PWR6-NEXT: and 5, 9, 5
16285 ; PWR6-NEXT: ori 6, 6, 13107
16286 ; PWR6-NEXT: sub 3, 3, 5
16287 ; PWR6-NEXT: rldimi 6, 6, 32, 0
16288 ; PWR6-NEXT: sub 4, 4, 8
16289 ; PWR6-NEXT: and 8, 3, 6
16290 ; PWR6-NEXT: rotldi 3, 3, 62
16291 ; PWR6-NEXT: and 3, 3, 6
16292 ; PWR6-NEXT: lis 7, 3855
16293 ; PWR6-NEXT: and 5, 4, 6
16294 ; PWR6-NEXT: rotldi 4, 4, 62
16295 ; PWR6-NEXT: add 3, 8, 3
16296 ; PWR6-NEXT: lis 9, 257
16297 ; PWR6-NEXT: ori 7, 7, 3855
16298 ; PWR6-NEXT: and 4, 4, 6
16299 ; PWR6-NEXT: rldicl 6, 3, 60, 4
16300 ; PWR6-NEXT: ori 9, 9, 257
16301 ; PWR6-NEXT: rldimi 7, 7, 32, 0
16302 ; PWR6-NEXT: add 4, 5, 4
16303 ; PWR6-NEXT: add 3, 3, 6
16304 ; PWR6-NEXT: rldimi 9, 9, 32, 0
16305 ; PWR6-NEXT: rldicl 5, 4, 60, 4
16306 ; PWR6-NEXT: and 3, 3, 7
16307 ; PWR6-NEXT: add 4, 4, 5
16308 ; PWR6-NEXT: mulld 3, 3, 9
16309 ; PWR6-NEXT: and 4, 4, 7
16310 ; PWR6-NEXT: rldicl 3, 3, 8, 56
16311 ; PWR6-NEXT: li 5, 18
16312 ; PWR6-NEXT: mulld 4, 4, 9
16313 ; PWR6-NEXT: subc 6, 3, 5
16314 ; PWR6-NEXT: rldicl 4, 4, 8, 56
16315 ; PWR6-NEXT: subfe 3, 3, 3
16316 ; PWR6-NEXT: subc 5, 4, 5
16317 ; PWR6-NEXT: subfe 4, 4, 4
16320 ; PWR7-LABEL: ult_18_v2i64:
16322 ; PWR7-NEXT: addi 3, 1, -32
16323 ; PWR7-NEXT: li 5, 0
16324 ; PWR7-NEXT: li 6, -1
16325 ; PWR7-NEXT: stxvd2x 34, 0, 3
16326 ; PWR7-NEXT: ld 3, -24(1)
16327 ; PWR7-NEXT: ld 4, -32(1)
16328 ; PWR7-NEXT: popcntd 3, 3
16329 ; PWR7-NEXT: popcntd 4, 4
16330 ; PWR7-NEXT: cmpldi 3, 18
16331 ; PWR7-NEXT: isellt 3, 6, 5
16332 ; PWR7-NEXT: cmpldi 4, 18
16333 ; PWR7-NEXT: isellt 4, 6, 5
16334 ; PWR7-NEXT: std 3, -8(1)
16335 ; PWR7-NEXT: addi 3, 1, -16
16336 ; PWR7-NEXT: std 4, -16(1)
16337 ; PWR7-NEXT: lxvd2x 34, 0, 3
16340 ; PWR8-LABEL: ult_18_v2i64:
16342 ; PWR8-NEXT: addis 3, 2, .LCPI133_0@toc@ha
16343 ; PWR8-NEXT: vpopcntd 2, 2
16344 ; PWR8-NEXT: addi 3, 3, .LCPI133_0@toc@l
16345 ; PWR8-NEXT: lxvd2x 35, 0, 3
16346 ; PWR8-NEXT: vcmpgtud 2, 3, 2
16349 ; PWR9-LABEL: ult_18_v2i64:
16351 ; PWR9-NEXT: addis 3, 2, .LCPI133_0@toc@ha
16352 ; PWR9-NEXT: vpopcntd 2, 2
16353 ; PWR9-NEXT: addi 3, 3, .LCPI133_0@toc@l
16354 ; PWR9-NEXT: lxv 35, 0(3)
16355 ; PWR9-NEXT: vcmpgtud 2, 3, 2
16357 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
16358 %3 = icmp ult <2 x i64> %2, <i64 18, i64 18>
16359 %4 = sext <2 x i1> %3 to <2 x i64>
16363 define <2 x i64> @ugt_18_v2i64(<2 x i64> %0) {
16364 ; PWR5-LABEL: ugt_18_v2i64:
16366 ; PWR5-NEXT: lis 5, 21845
16367 ; PWR5-NEXT: lis 6, 13107
16368 ; PWR5-NEXT: ori 5, 5, 21845
16369 ; PWR5-NEXT: rotldi 8, 4, 63
16370 ; PWR5-NEXT: rotldi 9, 3, 63
16371 ; PWR5-NEXT: rldimi 5, 5, 32, 0
16372 ; PWR5-NEXT: and 8, 8, 5
16373 ; PWR5-NEXT: and 5, 9, 5
16374 ; PWR5-NEXT: ori 6, 6, 13107
16375 ; PWR5-NEXT: sub 3, 3, 5
16376 ; PWR5-NEXT: rldimi 6, 6, 32, 0
16377 ; PWR5-NEXT: sub 4, 4, 8
16378 ; PWR5-NEXT: and 8, 3, 6
16379 ; PWR5-NEXT: rotldi 3, 3, 62
16380 ; PWR5-NEXT: and 3, 3, 6
16381 ; PWR5-NEXT: lis 7, 3855
16382 ; PWR5-NEXT: and 5, 4, 6
16383 ; PWR5-NEXT: rotldi 4, 4, 62
16384 ; PWR5-NEXT: add 3, 8, 3
16385 ; PWR5-NEXT: lis 9, 257
16386 ; PWR5-NEXT: ori 7, 7, 3855
16387 ; PWR5-NEXT: and 4, 4, 6
16388 ; PWR5-NEXT: rldicl 6, 3, 60, 4
16389 ; PWR5-NEXT: ori 9, 9, 257
16390 ; PWR5-NEXT: rldimi 7, 7, 32, 0
16391 ; PWR5-NEXT: add 4, 5, 4
16392 ; PWR5-NEXT: add 3, 3, 6
16393 ; PWR5-NEXT: rldimi 9, 9, 32, 0
16394 ; PWR5-NEXT: rldicl 5, 4, 60, 4
16395 ; PWR5-NEXT: and 3, 3, 7
16396 ; PWR5-NEXT: add 4, 4, 5
16397 ; PWR5-NEXT: mulld 3, 3, 9
16398 ; PWR5-NEXT: and 4, 4, 7
16399 ; PWR5-NEXT: rldicl 3, 3, 8, 56
16400 ; PWR5-NEXT: mulld 4, 4, 9
16401 ; PWR5-NEXT: li 5, 18
16402 ; PWR5-NEXT: subfic 3, 3, 18
16403 ; PWR5-NEXT: rldicl 4, 4, 8, 56
16404 ; PWR5-NEXT: subfe 3, 5, 5
16405 ; PWR5-NEXT: subfic 4, 4, 18
16406 ; PWR5-NEXT: subfe 4, 5, 5
16409 ; PWR6-LABEL: ugt_18_v2i64:
16411 ; PWR6-NEXT: lis 5, 21845
16412 ; PWR6-NEXT: lis 6, 13107
16413 ; PWR6-NEXT: ori 5, 5, 21845
16414 ; PWR6-NEXT: rotldi 8, 4, 63
16415 ; PWR6-NEXT: rotldi 9, 3, 63
16416 ; PWR6-NEXT: rldimi 5, 5, 32, 0
16417 ; PWR6-NEXT: and 8, 8, 5
16418 ; PWR6-NEXT: and 5, 9, 5
16419 ; PWR6-NEXT: ori 6, 6, 13107
16420 ; PWR6-NEXT: sub 3, 3, 5
16421 ; PWR6-NEXT: rldimi 6, 6, 32, 0
16422 ; PWR6-NEXT: sub 4, 4, 8
16423 ; PWR6-NEXT: and 8, 3, 6
16424 ; PWR6-NEXT: rotldi 3, 3, 62
16425 ; PWR6-NEXT: and 3, 3, 6
16426 ; PWR6-NEXT: lis 7, 3855
16427 ; PWR6-NEXT: and 5, 4, 6
16428 ; PWR6-NEXT: rotldi 4, 4, 62
16429 ; PWR6-NEXT: add 3, 8, 3
16430 ; PWR6-NEXT: lis 9, 257
16431 ; PWR6-NEXT: ori 7, 7, 3855
16432 ; PWR6-NEXT: and 4, 4, 6
16433 ; PWR6-NEXT: rldicl 6, 3, 60, 4
16434 ; PWR6-NEXT: ori 9, 9, 257
16435 ; PWR6-NEXT: rldimi 7, 7, 32, 0
16436 ; PWR6-NEXT: add 4, 5, 4
16437 ; PWR6-NEXT: add 3, 3, 6
16438 ; PWR6-NEXT: rldimi 9, 9, 32, 0
16439 ; PWR6-NEXT: rldicl 5, 4, 60, 4
16440 ; PWR6-NEXT: and 3, 3, 7
16441 ; PWR6-NEXT: add 4, 4, 5
16442 ; PWR6-NEXT: mulld 3, 3, 9
16443 ; PWR6-NEXT: and 4, 4, 7
16444 ; PWR6-NEXT: rldicl 3, 3, 8, 56
16445 ; PWR6-NEXT: mulld 4, 4, 9
16446 ; PWR6-NEXT: li 5, 18
16447 ; PWR6-NEXT: subfic 3, 3, 18
16448 ; PWR6-NEXT: rldicl 4, 4, 8, 56
16449 ; PWR6-NEXT: subfe 3, 5, 5
16450 ; PWR6-NEXT: subfic 4, 4, 18
16451 ; PWR6-NEXT: subfe 4, 5, 5
16454 ; PWR7-LABEL: ugt_18_v2i64:
16456 ; PWR7-NEXT: addi 3, 1, -32
16457 ; PWR7-NEXT: li 5, 0
16458 ; PWR7-NEXT: li 6, -1
16459 ; PWR7-NEXT: stxvd2x 34, 0, 3
16460 ; PWR7-NEXT: ld 3, -24(1)
16461 ; PWR7-NEXT: ld 4, -32(1)
16462 ; PWR7-NEXT: popcntd 3, 3
16463 ; PWR7-NEXT: popcntd 4, 4
16464 ; PWR7-NEXT: cmpldi 3, 18
16465 ; PWR7-NEXT: iselgt 3, 6, 5
16466 ; PWR7-NEXT: cmpldi 4, 18
16467 ; PWR7-NEXT: iselgt 4, 6, 5
16468 ; PWR7-NEXT: std 3, -8(1)
16469 ; PWR7-NEXT: addi 3, 1, -16
16470 ; PWR7-NEXT: std 4, -16(1)
16471 ; PWR7-NEXT: lxvd2x 34, 0, 3
16474 ; PWR8-LABEL: ugt_18_v2i64:
16476 ; PWR8-NEXT: addis 3, 2, .LCPI134_0@toc@ha
16477 ; PWR8-NEXT: vpopcntd 2, 2
16478 ; PWR8-NEXT: addi 3, 3, .LCPI134_0@toc@l
16479 ; PWR8-NEXT: lxvd2x 35, 0, 3
16480 ; PWR8-NEXT: vcmpgtud 2, 2, 3
16483 ; PWR9-LABEL: ugt_18_v2i64:
16485 ; PWR9-NEXT: addis 3, 2, .LCPI134_0@toc@ha
16486 ; PWR9-NEXT: vpopcntd 2, 2
16487 ; PWR9-NEXT: addi 3, 3, .LCPI134_0@toc@l
16488 ; PWR9-NEXT: lxv 35, 0(3)
16489 ; PWR9-NEXT: vcmpgtud 2, 2, 3
16491 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
16492 %3 = icmp ugt <2 x i64> %2, <i64 18, i64 18>
16493 %4 = sext <2 x i1> %3 to <2 x i64>
16497 define <2 x i64> @ult_19_v2i64(<2 x i64> %0) {
16498 ; PWR5-LABEL: ult_19_v2i64:
16500 ; PWR5-NEXT: lis 5, 21845
16501 ; PWR5-NEXT: lis 6, 13107
16502 ; PWR5-NEXT: ori 5, 5, 21845
16503 ; PWR5-NEXT: rotldi 8, 4, 63
16504 ; PWR5-NEXT: rotldi 9, 3, 63
16505 ; PWR5-NEXT: rldimi 5, 5, 32, 0
16506 ; PWR5-NEXT: and 8, 8, 5
16507 ; PWR5-NEXT: and 5, 9, 5
16508 ; PWR5-NEXT: ori 6, 6, 13107
16509 ; PWR5-NEXT: sub 3, 3, 5
16510 ; PWR5-NEXT: rldimi 6, 6, 32, 0
16511 ; PWR5-NEXT: sub 4, 4, 8
16512 ; PWR5-NEXT: and 8, 3, 6
16513 ; PWR5-NEXT: rotldi 3, 3, 62
16514 ; PWR5-NEXT: and 3, 3, 6
16515 ; PWR5-NEXT: lis 7, 3855
16516 ; PWR5-NEXT: and 5, 4, 6
16517 ; PWR5-NEXT: rotldi 4, 4, 62
16518 ; PWR5-NEXT: add 3, 8, 3
16519 ; PWR5-NEXT: lis 9, 257
16520 ; PWR5-NEXT: ori 7, 7, 3855
16521 ; PWR5-NEXT: and 4, 4, 6
16522 ; PWR5-NEXT: rldicl 6, 3, 60, 4
16523 ; PWR5-NEXT: ori 9, 9, 257
16524 ; PWR5-NEXT: rldimi 7, 7, 32, 0
16525 ; PWR5-NEXT: add 4, 5, 4
16526 ; PWR5-NEXT: add 3, 3, 6
16527 ; PWR5-NEXT: rldimi 9, 9, 32, 0
16528 ; PWR5-NEXT: rldicl 5, 4, 60, 4
16529 ; PWR5-NEXT: and 3, 3, 7
16530 ; PWR5-NEXT: add 4, 4, 5
16531 ; PWR5-NEXT: mulld 3, 3, 9
16532 ; PWR5-NEXT: and 4, 4, 7
16533 ; PWR5-NEXT: rldicl 3, 3, 8, 56
16534 ; PWR5-NEXT: li 5, 19
16535 ; PWR5-NEXT: mulld 4, 4, 9
16536 ; PWR5-NEXT: subc 6, 3, 5
16537 ; PWR5-NEXT: rldicl 4, 4, 8, 56
16538 ; PWR5-NEXT: subfe 3, 3, 3
16539 ; PWR5-NEXT: subc 5, 4, 5
16540 ; PWR5-NEXT: subfe 4, 4, 4
16543 ; PWR6-LABEL: ult_19_v2i64:
16545 ; PWR6-NEXT: lis 5, 21845
16546 ; PWR6-NEXT: lis 6, 13107
16547 ; PWR6-NEXT: ori 5, 5, 21845
16548 ; PWR6-NEXT: rotldi 8, 4, 63
16549 ; PWR6-NEXT: rotldi 9, 3, 63
16550 ; PWR6-NEXT: rldimi 5, 5, 32, 0
16551 ; PWR6-NEXT: and 8, 8, 5
16552 ; PWR6-NEXT: and 5, 9, 5
16553 ; PWR6-NEXT: ori 6, 6, 13107
16554 ; PWR6-NEXT: sub 3, 3, 5
16555 ; PWR6-NEXT: rldimi 6, 6, 32, 0
16556 ; PWR6-NEXT: sub 4, 4, 8
16557 ; PWR6-NEXT: and 8, 3, 6
16558 ; PWR6-NEXT: rotldi 3, 3, 62
16559 ; PWR6-NEXT: and 3, 3, 6
16560 ; PWR6-NEXT: lis 7, 3855
16561 ; PWR6-NEXT: and 5, 4, 6
16562 ; PWR6-NEXT: rotldi 4, 4, 62
16563 ; PWR6-NEXT: add 3, 8, 3
16564 ; PWR6-NEXT: lis 9, 257
16565 ; PWR6-NEXT: ori 7, 7, 3855
16566 ; PWR6-NEXT: and 4, 4, 6
16567 ; PWR6-NEXT: rldicl 6, 3, 60, 4
16568 ; PWR6-NEXT: ori 9, 9, 257
16569 ; PWR6-NEXT: rldimi 7, 7, 32, 0
16570 ; PWR6-NEXT: add 4, 5, 4
16571 ; PWR6-NEXT: add 3, 3, 6
16572 ; PWR6-NEXT: rldimi 9, 9, 32, 0
16573 ; PWR6-NEXT: rldicl 5, 4, 60, 4
16574 ; PWR6-NEXT: and 3, 3, 7
16575 ; PWR6-NEXT: add 4, 4, 5
16576 ; PWR6-NEXT: mulld 3, 3, 9
16577 ; PWR6-NEXT: and 4, 4, 7
16578 ; PWR6-NEXT: rldicl 3, 3, 8, 56
16579 ; PWR6-NEXT: li 5, 19
16580 ; PWR6-NEXT: mulld 4, 4, 9
16581 ; PWR6-NEXT: subc 6, 3, 5
16582 ; PWR6-NEXT: rldicl 4, 4, 8, 56
16583 ; PWR6-NEXT: subfe 3, 3, 3
16584 ; PWR6-NEXT: subc 5, 4, 5
16585 ; PWR6-NEXT: subfe 4, 4, 4
16588 ; PWR7-LABEL: ult_19_v2i64:
16590 ; PWR7-NEXT: addi 3, 1, -32
16591 ; PWR7-NEXT: li 5, 0
16592 ; PWR7-NEXT: li 6, -1
16593 ; PWR7-NEXT: stxvd2x 34, 0, 3
16594 ; PWR7-NEXT: ld 3, -24(1)
16595 ; PWR7-NEXT: ld 4, -32(1)
16596 ; PWR7-NEXT: popcntd 3, 3
16597 ; PWR7-NEXT: popcntd 4, 4
16598 ; PWR7-NEXT: cmpldi 3, 19
16599 ; PWR7-NEXT: isellt 3, 6, 5
16600 ; PWR7-NEXT: cmpldi 4, 19
16601 ; PWR7-NEXT: isellt 4, 6, 5
16602 ; PWR7-NEXT: std 3, -8(1)
16603 ; PWR7-NEXT: addi 3, 1, -16
16604 ; PWR7-NEXT: std 4, -16(1)
16605 ; PWR7-NEXT: lxvd2x 34, 0, 3
16608 ; PWR8-LABEL: ult_19_v2i64:
16610 ; PWR8-NEXT: addis 3, 2, .LCPI135_0@toc@ha
16611 ; PWR8-NEXT: vpopcntd 2, 2
16612 ; PWR8-NEXT: addi 3, 3, .LCPI135_0@toc@l
16613 ; PWR8-NEXT: lxvd2x 35, 0, 3
16614 ; PWR8-NEXT: vcmpgtud 2, 3, 2
16617 ; PWR9-LABEL: ult_19_v2i64:
16619 ; PWR9-NEXT: addis 3, 2, .LCPI135_0@toc@ha
16620 ; PWR9-NEXT: vpopcntd 2, 2
16621 ; PWR9-NEXT: addi 3, 3, .LCPI135_0@toc@l
16622 ; PWR9-NEXT: lxv 35, 0(3)
16623 ; PWR9-NEXT: vcmpgtud 2, 3, 2
16625 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
16626 %3 = icmp ult <2 x i64> %2, <i64 19, i64 19>
16627 %4 = sext <2 x i1> %3 to <2 x i64>
16631 define <2 x i64> @ugt_19_v2i64(<2 x i64> %0) {
16632 ; PWR5-LABEL: ugt_19_v2i64:
16634 ; PWR5-NEXT: lis 5, 21845
16635 ; PWR5-NEXT: lis 6, 13107
16636 ; PWR5-NEXT: ori 5, 5, 21845
16637 ; PWR5-NEXT: rotldi 8, 4, 63
16638 ; PWR5-NEXT: rotldi 9, 3, 63
16639 ; PWR5-NEXT: rldimi 5, 5, 32, 0
16640 ; PWR5-NEXT: and 8, 8, 5
16641 ; PWR5-NEXT: and 5, 9, 5
16642 ; PWR5-NEXT: ori 6, 6, 13107
16643 ; PWR5-NEXT: sub 3, 3, 5
16644 ; PWR5-NEXT: rldimi 6, 6, 32, 0
16645 ; PWR5-NEXT: sub 4, 4, 8
16646 ; PWR5-NEXT: and 8, 3, 6
16647 ; PWR5-NEXT: rotldi 3, 3, 62
16648 ; PWR5-NEXT: and 3, 3, 6
16649 ; PWR5-NEXT: lis 7, 3855
16650 ; PWR5-NEXT: and 5, 4, 6
16651 ; PWR5-NEXT: rotldi 4, 4, 62
16652 ; PWR5-NEXT: add 3, 8, 3
16653 ; PWR5-NEXT: lis 9, 257
16654 ; PWR5-NEXT: ori 7, 7, 3855
16655 ; PWR5-NEXT: and 4, 4, 6
16656 ; PWR5-NEXT: rldicl 6, 3, 60, 4
16657 ; PWR5-NEXT: ori 9, 9, 257
16658 ; PWR5-NEXT: rldimi 7, 7, 32, 0
16659 ; PWR5-NEXT: add 4, 5, 4
16660 ; PWR5-NEXT: add 3, 3, 6
16661 ; PWR5-NEXT: rldimi 9, 9, 32, 0
16662 ; PWR5-NEXT: rldicl 5, 4, 60, 4
16663 ; PWR5-NEXT: and 3, 3, 7
16664 ; PWR5-NEXT: add 4, 4, 5
16665 ; PWR5-NEXT: mulld 3, 3, 9
16666 ; PWR5-NEXT: and 4, 4, 7
16667 ; PWR5-NEXT: rldicl 3, 3, 8, 56
16668 ; PWR5-NEXT: mulld 4, 4, 9
16669 ; PWR5-NEXT: li 5, 19
16670 ; PWR5-NEXT: subfic 3, 3, 19
16671 ; PWR5-NEXT: rldicl 4, 4, 8, 56
16672 ; PWR5-NEXT: subfe 3, 5, 5
16673 ; PWR5-NEXT: subfic 4, 4, 19
16674 ; PWR5-NEXT: subfe 4, 5, 5
16677 ; PWR6-LABEL: ugt_19_v2i64:
16679 ; PWR6-NEXT: lis 5, 21845
16680 ; PWR6-NEXT: lis 6, 13107
16681 ; PWR6-NEXT: ori 5, 5, 21845
16682 ; PWR6-NEXT: rotldi 8, 4, 63
16683 ; PWR6-NEXT: rotldi 9, 3, 63
16684 ; PWR6-NEXT: rldimi 5, 5, 32, 0
16685 ; PWR6-NEXT: and 8, 8, 5
16686 ; PWR6-NEXT: and 5, 9, 5
16687 ; PWR6-NEXT: ori 6, 6, 13107
16688 ; PWR6-NEXT: sub 3, 3, 5
16689 ; PWR6-NEXT: rldimi 6, 6, 32, 0
16690 ; PWR6-NEXT: sub 4, 4, 8
16691 ; PWR6-NEXT: and 8, 3, 6
16692 ; PWR6-NEXT: rotldi 3, 3, 62
16693 ; PWR6-NEXT: and 3, 3, 6
16694 ; PWR6-NEXT: lis 7, 3855
16695 ; PWR6-NEXT: and 5, 4, 6
16696 ; PWR6-NEXT: rotldi 4, 4, 62
16697 ; PWR6-NEXT: add 3, 8, 3
16698 ; PWR6-NEXT: lis 9, 257
16699 ; PWR6-NEXT: ori 7, 7, 3855
16700 ; PWR6-NEXT: and 4, 4, 6
16701 ; PWR6-NEXT: rldicl 6, 3, 60, 4
16702 ; PWR6-NEXT: ori 9, 9, 257
16703 ; PWR6-NEXT: rldimi 7, 7, 32, 0
16704 ; PWR6-NEXT: add 4, 5, 4
16705 ; PWR6-NEXT: add 3, 3, 6
16706 ; PWR6-NEXT: rldimi 9, 9, 32, 0
16707 ; PWR6-NEXT: rldicl 5, 4, 60, 4
16708 ; PWR6-NEXT: and 3, 3, 7
16709 ; PWR6-NEXT: add 4, 4, 5
16710 ; PWR6-NEXT: mulld 3, 3, 9
16711 ; PWR6-NEXT: and 4, 4, 7
16712 ; PWR6-NEXT: rldicl 3, 3, 8, 56
16713 ; PWR6-NEXT: mulld 4, 4, 9
16714 ; PWR6-NEXT: li 5, 19
16715 ; PWR6-NEXT: subfic 3, 3, 19
16716 ; PWR6-NEXT: rldicl 4, 4, 8, 56
16717 ; PWR6-NEXT: subfe 3, 5, 5
16718 ; PWR6-NEXT: subfic 4, 4, 19
16719 ; PWR6-NEXT: subfe 4, 5, 5
16722 ; PWR7-LABEL: ugt_19_v2i64:
16724 ; PWR7-NEXT: addi 3, 1, -32
16725 ; PWR7-NEXT: li 5, 0
16726 ; PWR7-NEXT: li 6, -1
16727 ; PWR7-NEXT: stxvd2x 34, 0, 3
16728 ; PWR7-NEXT: ld 3, -24(1)
16729 ; PWR7-NEXT: ld 4, -32(1)
16730 ; PWR7-NEXT: popcntd 3, 3
16731 ; PWR7-NEXT: popcntd 4, 4
16732 ; PWR7-NEXT: cmpldi 3, 19
16733 ; PWR7-NEXT: iselgt 3, 6, 5
16734 ; PWR7-NEXT: cmpldi 4, 19
16735 ; PWR7-NEXT: iselgt 4, 6, 5
16736 ; PWR7-NEXT: std 3, -8(1)
16737 ; PWR7-NEXT: addi 3, 1, -16
16738 ; PWR7-NEXT: std 4, -16(1)
16739 ; PWR7-NEXT: lxvd2x 34, 0, 3
16742 ; PWR8-LABEL: ugt_19_v2i64:
16744 ; PWR8-NEXT: addis 3, 2, .LCPI136_0@toc@ha
16745 ; PWR8-NEXT: vpopcntd 2, 2
16746 ; PWR8-NEXT: addi 3, 3, .LCPI136_0@toc@l
16747 ; PWR8-NEXT: lxvd2x 35, 0, 3
16748 ; PWR8-NEXT: vcmpgtud 2, 2, 3
16751 ; PWR9-LABEL: ugt_19_v2i64:
16753 ; PWR9-NEXT: addis 3, 2, .LCPI136_0@toc@ha
16754 ; PWR9-NEXT: vpopcntd 2, 2
16755 ; PWR9-NEXT: addi 3, 3, .LCPI136_0@toc@l
16756 ; PWR9-NEXT: lxv 35, 0(3)
16757 ; PWR9-NEXT: vcmpgtud 2, 2, 3
16759 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
16760 %3 = icmp ugt <2 x i64> %2, <i64 19, i64 19>
16761 %4 = sext <2 x i1> %3 to <2 x i64>
16765 define <2 x i64> @ult_20_v2i64(<2 x i64> %0) {
16766 ; PWR5-LABEL: ult_20_v2i64:
16768 ; PWR5-NEXT: lis 5, 21845
16769 ; PWR5-NEXT: lis 6, 13107
16770 ; PWR5-NEXT: ori 5, 5, 21845
16771 ; PWR5-NEXT: rotldi 8, 4, 63
16772 ; PWR5-NEXT: rotldi 9, 3, 63
16773 ; PWR5-NEXT: rldimi 5, 5, 32, 0
16774 ; PWR5-NEXT: and 8, 8, 5
16775 ; PWR5-NEXT: and 5, 9, 5
16776 ; PWR5-NEXT: ori 6, 6, 13107
16777 ; PWR5-NEXT: sub 3, 3, 5
16778 ; PWR5-NEXT: rldimi 6, 6, 32, 0
16779 ; PWR5-NEXT: sub 4, 4, 8
16780 ; PWR5-NEXT: and 8, 3, 6
16781 ; PWR5-NEXT: rotldi 3, 3, 62
16782 ; PWR5-NEXT: and 3, 3, 6
16783 ; PWR5-NEXT: lis 7, 3855
16784 ; PWR5-NEXT: and 5, 4, 6
16785 ; PWR5-NEXT: rotldi 4, 4, 62
16786 ; PWR5-NEXT: add 3, 8, 3
16787 ; PWR5-NEXT: lis 9, 257
16788 ; PWR5-NEXT: ori 7, 7, 3855
16789 ; PWR5-NEXT: and 4, 4, 6
16790 ; PWR5-NEXT: rldicl 6, 3, 60, 4
16791 ; PWR5-NEXT: ori 9, 9, 257
16792 ; PWR5-NEXT: rldimi 7, 7, 32, 0
16793 ; PWR5-NEXT: add 4, 5, 4
16794 ; PWR5-NEXT: add 3, 3, 6
16795 ; PWR5-NEXT: rldimi 9, 9, 32, 0
16796 ; PWR5-NEXT: rldicl 5, 4, 60, 4
16797 ; PWR5-NEXT: and 3, 3, 7
16798 ; PWR5-NEXT: add 4, 4, 5
16799 ; PWR5-NEXT: mulld 3, 3, 9
16800 ; PWR5-NEXT: and 4, 4, 7
16801 ; PWR5-NEXT: rldicl 3, 3, 8, 56
16802 ; PWR5-NEXT: li 5, 20
16803 ; PWR5-NEXT: mulld 4, 4, 9
16804 ; PWR5-NEXT: subc 6, 3, 5
16805 ; PWR5-NEXT: rldicl 4, 4, 8, 56
16806 ; PWR5-NEXT: subfe 3, 3, 3
16807 ; PWR5-NEXT: subc 5, 4, 5
16808 ; PWR5-NEXT: subfe 4, 4, 4
16811 ; PWR6-LABEL: ult_20_v2i64:
16813 ; PWR6-NEXT: lis 5, 21845
16814 ; PWR6-NEXT: lis 6, 13107
16815 ; PWR6-NEXT: ori 5, 5, 21845
16816 ; PWR6-NEXT: rotldi 8, 4, 63
16817 ; PWR6-NEXT: rotldi 9, 3, 63
16818 ; PWR6-NEXT: rldimi 5, 5, 32, 0
16819 ; PWR6-NEXT: and 8, 8, 5
16820 ; PWR6-NEXT: and 5, 9, 5
16821 ; PWR6-NEXT: ori 6, 6, 13107
16822 ; PWR6-NEXT: sub 3, 3, 5
16823 ; PWR6-NEXT: rldimi 6, 6, 32, 0
16824 ; PWR6-NEXT: sub 4, 4, 8
16825 ; PWR6-NEXT: and 8, 3, 6
16826 ; PWR6-NEXT: rotldi 3, 3, 62
16827 ; PWR6-NEXT: and 3, 3, 6
16828 ; PWR6-NEXT: lis 7, 3855
16829 ; PWR6-NEXT: and 5, 4, 6
16830 ; PWR6-NEXT: rotldi 4, 4, 62
16831 ; PWR6-NEXT: add 3, 8, 3
16832 ; PWR6-NEXT: lis 9, 257
16833 ; PWR6-NEXT: ori 7, 7, 3855
16834 ; PWR6-NEXT: and 4, 4, 6
16835 ; PWR6-NEXT: rldicl 6, 3, 60, 4
16836 ; PWR6-NEXT: ori 9, 9, 257
16837 ; PWR6-NEXT: rldimi 7, 7, 32, 0
16838 ; PWR6-NEXT: add 4, 5, 4
16839 ; PWR6-NEXT: add 3, 3, 6
16840 ; PWR6-NEXT: rldimi 9, 9, 32, 0
16841 ; PWR6-NEXT: rldicl 5, 4, 60, 4
16842 ; PWR6-NEXT: and 3, 3, 7
16843 ; PWR6-NEXT: add 4, 4, 5
16844 ; PWR6-NEXT: mulld 3, 3, 9
16845 ; PWR6-NEXT: and 4, 4, 7
16846 ; PWR6-NEXT: rldicl 3, 3, 8, 56
16847 ; PWR6-NEXT: li 5, 20
16848 ; PWR6-NEXT: mulld 4, 4, 9
16849 ; PWR6-NEXT: subc 6, 3, 5
16850 ; PWR6-NEXT: rldicl 4, 4, 8, 56
16851 ; PWR6-NEXT: subfe 3, 3, 3
16852 ; PWR6-NEXT: subc 5, 4, 5
16853 ; PWR6-NEXT: subfe 4, 4, 4
16856 ; PWR7-LABEL: ult_20_v2i64:
16858 ; PWR7-NEXT: addi 3, 1, -32
16859 ; PWR7-NEXT: li 5, 0
16860 ; PWR7-NEXT: li 6, -1
16861 ; PWR7-NEXT: stxvd2x 34, 0, 3
16862 ; PWR7-NEXT: ld 3, -24(1)
16863 ; PWR7-NEXT: ld 4, -32(1)
16864 ; PWR7-NEXT: popcntd 3, 3
16865 ; PWR7-NEXT: popcntd 4, 4
16866 ; PWR7-NEXT: cmpldi 3, 20
16867 ; PWR7-NEXT: isellt 3, 6, 5
16868 ; PWR7-NEXT: cmpldi 4, 20
16869 ; PWR7-NEXT: isellt 4, 6, 5
16870 ; PWR7-NEXT: std 3, -8(1)
16871 ; PWR7-NEXT: addi 3, 1, -16
16872 ; PWR7-NEXT: std 4, -16(1)
16873 ; PWR7-NEXT: lxvd2x 34, 0, 3
16876 ; PWR8-LABEL: ult_20_v2i64:
16878 ; PWR8-NEXT: addis 3, 2, .LCPI137_0@toc@ha
16879 ; PWR8-NEXT: vpopcntd 2, 2
16880 ; PWR8-NEXT: addi 3, 3, .LCPI137_0@toc@l
16881 ; PWR8-NEXT: lxvd2x 35, 0, 3
16882 ; PWR8-NEXT: vcmpgtud 2, 3, 2
16885 ; PWR9-LABEL: ult_20_v2i64:
16887 ; PWR9-NEXT: addis 3, 2, .LCPI137_0@toc@ha
16888 ; PWR9-NEXT: vpopcntd 2, 2
16889 ; PWR9-NEXT: addi 3, 3, .LCPI137_0@toc@l
16890 ; PWR9-NEXT: lxv 35, 0(3)
16891 ; PWR9-NEXT: vcmpgtud 2, 3, 2
16893 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
16894 %3 = icmp ult <2 x i64> %2, <i64 20, i64 20>
16895 %4 = sext <2 x i1> %3 to <2 x i64>
16899 define <2 x i64> @ugt_20_v2i64(<2 x i64> %0) {
16900 ; PWR5-LABEL: ugt_20_v2i64:
16902 ; PWR5-NEXT: lis 5, 21845
16903 ; PWR5-NEXT: lis 6, 13107
16904 ; PWR5-NEXT: ori 5, 5, 21845
16905 ; PWR5-NEXT: rotldi 8, 4, 63
16906 ; PWR5-NEXT: rotldi 9, 3, 63
16907 ; PWR5-NEXT: rldimi 5, 5, 32, 0
16908 ; PWR5-NEXT: and 8, 8, 5
16909 ; PWR5-NEXT: and 5, 9, 5
16910 ; PWR5-NEXT: ori 6, 6, 13107
16911 ; PWR5-NEXT: sub 3, 3, 5
16912 ; PWR5-NEXT: rldimi 6, 6, 32, 0
16913 ; PWR5-NEXT: sub 4, 4, 8
16914 ; PWR5-NEXT: and 8, 3, 6
16915 ; PWR5-NEXT: rotldi 3, 3, 62
16916 ; PWR5-NEXT: and 3, 3, 6
16917 ; PWR5-NEXT: lis 7, 3855
16918 ; PWR5-NEXT: and 5, 4, 6
16919 ; PWR5-NEXT: rotldi 4, 4, 62
16920 ; PWR5-NEXT: add 3, 8, 3
16921 ; PWR5-NEXT: lis 9, 257
16922 ; PWR5-NEXT: ori 7, 7, 3855
16923 ; PWR5-NEXT: and 4, 4, 6
16924 ; PWR5-NEXT: rldicl 6, 3, 60, 4
16925 ; PWR5-NEXT: ori 9, 9, 257
16926 ; PWR5-NEXT: rldimi 7, 7, 32, 0
16927 ; PWR5-NEXT: add 4, 5, 4
16928 ; PWR5-NEXT: add 3, 3, 6
16929 ; PWR5-NEXT: rldimi 9, 9, 32, 0
16930 ; PWR5-NEXT: rldicl 5, 4, 60, 4
16931 ; PWR5-NEXT: and 3, 3, 7
16932 ; PWR5-NEXT: add 4, 4, 5
16933 ; PWR5-NEXT: mulld 3, 3, 9
16934 ; PWR5-NEXT: and 4, 4, 7
16935 ; PWR5-NEXT: rldicl 3, 3, 8, 56
16936 ; PWR5-NEXT: mulld 4, 4, 9
16937 ; PWR5-NEXT: li 5, 20
16938 ; PWR5-NEXT: subfic 3, 3, 20
16939 ; PWR5-NEXT: rldicl 4, 4, 8, 56
16940 ; PWR5-NEXT: subfe 3, 5, 5
16941 ; PWR5-NEXT: subfic 4, 4, 20
16942 ; PWR5-NEXT: subfe 4, 5, 5
16945 ; PWR6-LABEL: ugt_20_v2i64:
16947 ; PWR6-NEXT: lis 5, 21845
16948 ; PWR6-NEXT: lis 6, 13107
16949 ; PWR6-NEXT: ori 5, 5, 21845
16950 ; PWR6-NEXT: rotldi 8, 4, 63
16951 ; PWR6-NEXT: rotldi 9, 3, 63
16952 ; PWR6-NEXT: rldimi 5, 5, 32, 0
16953 ; PWR6-NEXT: and 8, 8, 5
16954 ; PWR6-NEXT: and 5, 9, 5
16955 ; PWR6-NEXT: ori 6, 6, 13107
16956 ; PWR6-NEXT: sub 3, 3, 5
16957 ; PWR6-NEXT: rldimi 6, 6, 32, 0
16958 ; PWR6-NEXT: sub 4, 4, 8
16959 ; PWR6-NEXT: and 8, 3, 6
16960 ; PWR6-NEXT: rotldi 3, 3, 62
16961 ; PWR6-NEXT: and 3, 3, 6
16962 ; PWR6-NEXT: lis 7, 3855
16963 ; PWR6-NEXT: and 5, 4, 6
16964 ; PWR6-NEXT: rotldi 4, 4, 62
16965 ; PWR6-NEXT: add 3, 8, 3
16966 ; PWR6-NEXT: lis 9, 257
16967 ; PWR6-NEXT: ori 7, 7, 3855
16968 ; PWR6-NEXT: and 4, 4, 6
16969 ; PWR6-NEXT: rldicl 6, 3, 60, 4
16970 ; PWR6-NEXT: ori 9, 9, 257
16971 ; PWR6-NEXT: rldimi 7, 7, 32, 0
16972 ; PWR6-NEXT: add 4, 5, 4
16973 ; PWR6-NEXT: add 3, 3, 6
16974 ; PWR6-NEXT: rldimi 9, 9, 32, 0
16975 ; PWR6-NEXT: rldicl 5, 4, 60, 4
16976 ; PWR6-NEXT: and 3, 3, 7
16977 ; PWR6-NEXT: add 4, 4, 5
16978 ; PWR6-NEXT: mulld 3, 3, 9
16979 ; PWR6-NEXT: and 4, 4, 7
16980 ; PWR6-NEXT: rldicl 3, 3, 8, 56
16981 ; PWR6-NEXT: mulld 4, 4, 9
16982 ; PWR6-NEXT: li 5, 20
16983 ; PWR6-NEXT: subfic 3, 3, 20
16984 ; PWR6-NEXT: rldicl 4, 4, 8, 56
16985 ; PWR6-NEXT: subfe 3, 5, 5
16986 ; PWR6-NEXT: subfic 4, 4, 20
16987 ; PWR6-NEXT: subfe 4, 5, 5
16990 ; PWR7-LABEL: ugt_20_v2i64:
16992 ; PWR7-NEXT: addi 3, 1, -32
16993 ; PWR7-NEXT: li 5, 0
16994 ; PWR7-NEXT: li 6, -1
16995 ; PWR7-NEXT: stxvd2x 34, 0, 3
16996 ; PWR7-NEXT: ld 3, -24(1)
16997 ; PWR7-NEXT: ld 4, -32(1)
16998 ; PWR7-NEXT: popcntd 3, 3
16999 ; PWR7-NEXT: popcntd 4, 4
17000 ; PWR7-NEXT: cmpldi 3, 20
17001 ; PWR7-NEXT: iselgt 3, 6, 5
17002 ; PWR7-NEXT: cmpldi 4, 20
17003 ; PWR7-NEXT: iselgt 4, 6, 5
17004 ; PWR7-NEXT: std 3, -8(1)
17005 ; PWR7-NEXT: addi 3, 1, -16
17006 ; PWR7-NEXT: std 4, -16(1)
17007 ; PWR7-NEXT: lxvd2x 34, 0, 3
17010 ; PWR8-LABEL: ugt_20_v2i64:
17012 ; PWR8-NEXT: addis 3, 2, .LCPI138_0@toc@ha
17013 ; PWR8-NEXT: vpopcntd 2, 2
17014 ; PWR8-NEXT: addi 3, 3, .LCPI138_0@toc@l
17015 ; PWR8-NEXT: lxvd2x 35, 0, 3
17016 ; PWR8-NEXT: vcmpgtud 2, 2, 3
17019 ; PWR9-LABEL: ugt_20_v2i64:
17021 ; PWR9-NEXT: addis 3, 2, .LCPI138_0@toc@ha
17022 ; PWR9-NEXT: vpopcntd 2, 2
17023 ; PWR9-NEXT: addi 3, 3, .LCPI138_0@toc@l
17024 ; PWR9-NEXT: lxv 35, 0(3)
17025 ; PWR9-NEXT: vcmpgtud 2, 2, 3
17027 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
17028 %3 = icmp ugt <2 x i64> %2, <i64 20, i64 20>
17029 %4 = sext <2 x i1> %3 to <2 x i64>
17033 define <2 x i64> @ult_21_v2i64(<2 x i64> %0) {
17034 ; PWR5-LABEL: ult_21_v2i64:
17036 ; PWR5-NEXT: lis 5, 21845
17037 ; PWR5-NEXT: lis 6, 13107
17038 ; PWR5-NEXT: ori 5, 5, 21845
17039 ; PWR5-NEXT: rotldi 8, 4, 63
17040 ; PWR5-NEXT: rotldi 9, 3, 63
17041 ; PWR5-NEXT: rldimi 5, 5, 32, 0
17042 ; PWR5-NEXT: and 8, 8, 5
17043 ; PWR5-NEXT: and 5, 9, 5
17044 ; PWR5-NEXT: ori 6, 6, 13107
17045 ; PWR5-NEXT: sub 3, 3, 5
17046 ; PWR5-NEXT: rldimi 6, 6, 32, 0
17047 ; PWR5-NEXT: sub 4, 4, 8
17048 ; PWR5-NEXT: and 8, 3, 6
17049 ; PWR5-NEXT: rotldi 3, 3, 62
17050 ; PWR5-NEXT: and 3, 3, 6
17051 ; PWR5-NEXT: lis 7, 3855
17052 ; PWR5-NEXT: and 5, 4, 6
17053 ; PWR5-NEXT: rotldi 4, 4, 62
17054 ; PWR5-NEXT: add 3, 8, 3
17055 ; PWR5-NEXT: lis 9, 257
17056 ; PWR5-NEXT: ori 7, 7, 3855
17057 ; PWR5-NEXT: and 4, 4, 6
17058 ; PWR5-NEXT: rldicl 6, 3, 60, 4
17059 ; PWR5-NEXT: ori 9, 9, 257
17060 ; PWR5-NEXT: rldimi 7, 7, 32, 0
17061 ; PWR5-NEXT: add 4, 5, 4
17062 ; PWR5-NEXT: add 3, 3, 6
17063 ; PWR5-NEXT: rldimi 9, 9, 32, 0
17064 ; PWR5-NEXT: rldicl 5, 4, 60, 4
17065 ; PWR5-NEXT: and 3, 3, 7
17066 ; PWR5-NEXT: add 4, 4, 5
17067 ; PWR5-NEXT: mulld 3, 3, 9
17068 ; PWR5-NEXT: and 4, 4, 7
17069 ; PWR5-NEXT: rldicl 3, 3, 8, 56
17070 ; PWR5-NEXT: li 5, 21
17071 ; PWR5-NEXT: mulld 4, 4, 9
17072 ; PWR5-NEXT: subc 6, 3, 5
17073 ; PWR5-NEXT: rldicl 4, 4, 8, 56
17074 ; PWR5-NEXT: subfe 3, 3, 3
17075 ; PWR5-NEXT: subc 5, 4, 5
17076 ; PWR5-NEXT: subfe 4, 4, 4
17079 ; PWR6-LABEL: ult_21_v2i64:
17081 ; PWR6-NEXT: lis 5, 21845
17082 ; PWR6-NEXT: lis 6, 13107
17083 ; PWR6-NEXT: ori 5, 5, 21845
17084 ; PWR6-NEXT: rotldi 8, 4, 63
17085 ; PWR6-NEXT: rotldi 9, 3, 63
17086 ; PWR6-NEXT: rldimi 5, 5, 32, 0
17087 ; PWR6-NEXT: and 8, 8, 5
17088 ; PWR6-NEXT: and 5, 9, 5
17089 ; PWR6-NEXT: ori 6, 6, 13107
17090 ; PWR6-NEXT: sub 3, 3, 5
17091 ; PWR6-NEXT: rldimi 6, 6, 32, 0
17092 ; PWR6-NEXT: sub 4, 4, 8
17093 ; PWR6-NEXT: and 8, 3, 6
17094 ; PWR6-NEXT: rotldi 3, 3, 62
17095 ; PWR6-NEXT: and 3, 3, 6
17096 ; PWR6-NEXT: lis 7, 3855
17097 ; PWR6-NEXT: and 5, 4, 6
17098 ; PWR6-NEXT: rotldi 4, 4, 62
17099 ; PWR6-NEXT: add 3, 8, 3
17100 ; PWR6-NEXT: lis 9, 257
17101 ; PWR6-NEXT: ori 7, 7, 3855
17102 ; PWR6-NEXT: and 4, 4, 6
17103 ; PWR6-NEXT: rldicl 6, 3, 60, 4
17104 ; PWR6-NEXT: ori 9, 9, 257
17105 ; PWR6-NEXT: rldimi 7, 7, 32, 0
17106 ; PWR6-NEXT: add 4, 5, 4
17107 ; PWR6-NEXT: add 3, 3, 6
17108 ; PWR6-NEXT: rldimi 9, 9, 32, 0
17109 ; PWR6-NEXT: rldicl 5, 4, 60, 4
17110 ; PWR6-NEXT: and 3, 3, 7
17111 ; PWR6-NEXT: add 4, 4, 5
17112 ; PWR6-NEXT: mulld 3, 3, 9
17113 ; PWR6-NEXT: and 4, 4, 7
17114 ; PWR6-NEXT: rldicl 3, 3, 8, 56
17115 ; PWR6-NEXT: li 5, 21
17116 ; PWR6-NEXT: mulld 4, 4, 9
17117 ; PWR6-NEXT: subc 6, 3, 5
17118 ; PWR6-NEXT: rldicl 4, 4, 8, 56
17119 ; PWR6-NEXT: subfe 3, 3, 3
17120 ; PWR6-NEXT: subc 5, 4, 5
17121 ; PWR6-NEXT: subfe 4, 4, 4
17124 ; PWR7-LABEL: ult_21_v2i64:
17126 ; PWR7-NEXT: addi 3, 1, -32
17127 ; PWR7-NEXT: li 5, 0
17128 ; PWR7-NEXT: li 6, -1
17129 ; PWR7-NEXT: stxvd2x 34, 0, 3
17130 ; PWR7-NEXT: ld 3, -24(1)
17131 ; PWR7-NEXT: ld 4, -32(1)
17132 ; PWR7-NEXT: popcntd 3, 3
17133 ; PWR7-NEXT: popcntd 4, 4
17134 ; PWR7-NEXT: cmpldi 3, 21
17135 ; PWR7-NEXT: isellt 3, 6, 5
17136 ; PWR7-NEXT: cmpldi 4, 21
17137 ; PWR7-NEXT: isellt 4, 6, 5
17138 ; PWR7-NEXT: std 3, -8(1)
17139 ; PWR7-NEXT: addi 3, 1, -16
17140 ; PWR7-NEXT: std 4, -16(1)
17141 ; PWR7-NEXT: lxvd2x 34, 0, 3
17144 ; PWR8-LABEL: ult_21_v2i64:
17146 ; PWR8-NEXT: addis 3, 2, .LCPI139_0@toc@ha
17147 ; PWR8-NEXT: vpopcntd 2, 2
17148 ; PWR8-NEXT: addi 3, 3, .LCPI139_0@toc@l
17149 ; PWR8-NEXT: lxvd2x 35, 0, 3
17150 ; PWR8-NEXT: vcmpgtud 2, 3, 2
17153 ; PWR9-LABEL: ult_21_v2i64:
17155 ; PWR9-NEXT: addis 3, 2, .LCPI139_0@toc@ha
17156 ; PWR9-NEXT: vpopcntd 2, 2
17157 ; PWR9-NEXT: addi 3, 3, .LCPI139_0@toc@l
17158 ; PWR9-NEXT: lxv 35, 0(3)
17159 ; PWR9-NEXT: vcmpgtud 2, 3, 2
17161 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
17162 %3 = icmp ult <2 x i64> %2, <i64 21, i64 21>
17163 %4 = sext <2 x i1> %3 to <2 x i64>
17167 define <2 x i64> @ugt_21_v2i64(<2 x i64> %0) {
17168 ; PWR5-LABEL: ugt_21_v2i64:
17170 ; PWR5-NEXT: lis 5, 21845
17171 ; PWR5-NEXT: lis 6, 13107
17172 ; PWR5-NEXT: ori 5, 5, 21845
17173 ; PWR5-NEXT: rotldi 8, 4, 63
17174 ; PWR5-NEXT: rotldi 9, 3, 63
17175 ; PWR5-NEXT: rldimi 5, 5, 32, 0
17176 ; PWR5-NEXT: and 8, 8, 5
17177 ; PWR5-NEXT: and 5, 9, 5
17178 ; PWR5-NEXT: ori 6, 6, 13107
17179 ; PWR5-NEXT: sub 3, 3, 5
17180 ; PWR5-NEXT: rldimi 6, 6, 32, 0
17181 ; PWR5-NEXT: sub 4, 4, 8
17182 ; PWR5-NEXT: and 8, 3, 6
17183 ; PWR5-NEXT: rotldi 3, 3, 62
17184 ; PWR5-NEXT: and 3, 3, 6
17185 ; PWR5-NEXT: lis 7, 3855
17186 ; PWR5-NEXT: and 5, 4, 6
17187 ; PWR5-NEXT: rotldi 4, 4, 62
17188 ; PWR5-NEXT: add 3, 8, 3
17189 ; PWR5-NEXT: lis 9, 257
17190 ; PWR5-NEXT: ori 7, 7, 3855
17191 ; PWR5-NEXT: and 4, 4, 6
17192 ; PWR5-NEXT: rldicl 6, 3, 60, 4
17193 ; PWR5-NEXT: ori 9, 9, 257
17194 ; PWR5-NEXT: rldimi 7, 7, 32, 0
17195 ; PWR5-NEXT: add 4, 5, 4
17196 ; PWR5-NEXT: add 3, 3, 6
17197 ; PWR5-NEXT: rldimi 9, 9, 32, 0
17198 ; PWR5-NEXT: rldicl 5, 4, 60, 4
17199 ; PWR5-NEXT: and 3, 3, 7
17200 ; PWR5-NEXT: add 4, 4, 5
17201 ; PWR5-NEXT: mulld 3, 3, 9
17202 ; PWR5-NEXT: and 4, 4, 7
17203 ; PWR5-NEXT: rldicl 3, 3, 8, 56
17204 ; PWR5-NEXT: mulld 4, 4, 9
17205 ; PWR5-NEXT: li 5, 21
17206 ; PWR5-NEXT: subfic 3, 3, 21
17207 ; PWR5-NEXT: rldicl 4, 4, 8, 56
17208 ; PWR5-NEXT: subfe 3, 5, 5
17209 ; PWR5-NEXT: subfic 4, 4, 21
17210 ; PWR5-NEXT: subfe 4, 5, 5
17213 ; PWR6-LABEL: ugt_21_v2i64:
17215 ; PWR6-NEXT: lis 5, 21845
17216 ; PWR6-NEXT: lis 6, 13107
17217 ; PWR6-NEXT: ori 5, 5, 21845
17218 ; PWR6-NEXT: rotldi 8, 4, 63
17219 ; PWR6-NEXT: rotldi 9, 3, 63
17220 ; PWR6-NEXT: rldimi 5, 5, 32, 0
17221 ; PWR6-NEXT: and 8, 8, 5
17222 ; PWR6-NEXT: and 5, 9, 5
17223 ; PWR6-NEXT: ori 6, 6, 13107
17224 ; PWR6-NEXT: sub 3, 3, 5
17225 ; PWR6-NEXT: rldimi 6, 6, 32, 0
17226 ; PWR6-NEXT: sub 4, 4, 8
17227 ; PWR6-NEXT: and 8, 3, 6
17228 ; PWR6-NEXT: rotldi 3, 3, 62
17229 ; PWR6-NEXT: and 3, 3, 6
17230 ; PWR6-NEXT: lis 7, 3855
17231 ; PWR6-NEXT: and 5, 4, 6
17232 ; PWR6-NEXT: rotldi 4, 4, 62
17233 ; PWR6-NEXT: add 3, 8, 3
17234 ; PWR6-NEXT: lis 9, 257
17235 ; PWR6-NEXT: ori 7, 7, 3855
17236 ; PWR6-NEXT: and 4, 4, 6
17237 ; PWR6-NEXT: rldicl 6, 3, 60, 4
17238 ; PWR6-NEXT: ori 9, 9, 257
17239 ; PWR6-NEXT: rldimi 7, 7, 32, 0
17240 ; PWR6-NEXT: add 4, 5, 4
17241 ; PWR6-NEXT: add 3, 3, 6
17242 ; PWR6-NEXT: rldimi 9, 9, 32, 0
17243 ; PWR6-NEXT: rldicl 5, 4, 60, 4
17244 ; PWR6-NEXT: and 3, 3, 7
17245 ; PWR6-NEXT: add 4, 4, 5
17246 ; PWR6-NEXT: mulld 3, 3, 9
17247 ; PWR6-NEXT: and 4, 4, 7
17248 ; PWR6-NEXT: rldicl 3, 3, 8, 56
17249 ; PWR6-NEXT: mulld 4, 4, 9
17250 ; PWR6-NEXT: li 5, 21
17251 ; PWR6-NEXT: subfic 3, 3, 21
17252 ; PWR6-NEXT: rldicl 4, 4, 8, 56
17253 ; PWR6-NEXT: subfe 3, 5, 5
17254 ; PWR6-NEXT: subfic 4, 4, 21
17255 ; PWR6-NEXT: subfe 4, 5, 5
17258 ; PWR7-LABEL: ugt_21_v2i64:
17260 ; PWR7-NEXT: addi 3, 1, -32
17261 ; PWR7-NEXT: li 5, 0
17262 ; PWR7-NEXT: li 6, -1
17263 ; PWR7-NEXT: stxvd2x 34, 0, 3
17264 ; PWR7-NEXT: ld 3, -24(1)
17265 ; PWR7-NEXT: ld 4, -32(1)
17266 ; PWR7-NEXT: popcntd 3, 3
17267 ; PWR7-NEXT: popcntd 4, 4
17268 ; PWR7-NEXT: cmpldi 3, 21
17269 ; PWR7-NEXT: iselgt 3, 6, 5
17270 ; PWR7-NEXT: cmpldi 4, 21
17271 ; PWR7-NEXT: iselgt 4, 6, 5
17272 ; PWR7-NEXT: std 3, -8(1)
17273 ; PWR7-NEXT: addi 3, 1, -16
17274 ; PWR7-NEXT: std 4, -16(1)
17275 ; PWR7-NEXT: lxvd2x 34, 0, 3
17278 ; PWR8-LABEL: ugt_21_v2i64:
17280 ; PWR8-NEXT: addis 3, 2, .LCPI140_0@toc@ha
17281 ; PWR8-NEXT: vpopcntd 2, 2
17282 ; PWR8-NEXT: addi 3, 3, .LCPI140_0@toc@l
17283 ; PWR8-NEXT: lxvd2x 35, 0, 3
17284 ; PWR8-NEXT: vcmpgtud 2, 2, 3
17287 ; PWR9-LABEL: ugt_21_v2i64:
17289 ; PWR9-NEXT: addis 3, 2, .LCPI140_0@toc@ha
17290 ; PWR9-NEXT: vpopcntd 2, 2
17291 ; PWR9-NEXT: addi 3, 3, .LCPI140_0@toc@l
17292 ; PWR9-NEXT: lxv 35, 0(3)
17293 ; PWR9-NEXT: vcmpgtud 2, 2, 3
17295 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
17296 %3 = icmp ugt <2 x i64> %2, <i64 21, i64 21>
17297 %4 = sext <2 x i1> %3 to <2 x i64>
17301 define <2 x i64> @ult_22_v2i64(<2 x i64> %0) {
17302 ; PWR5-LABEL: ult_22_v2i64:
17304 ; PWR5-NEXT: lis 5, 21845
17305 ; PWR5-NEXT: lis 6, 13107
17306 ; PWR5-NEXT: ori 5, 5, 21845
17307 ; PWR5-NEXT: rotldi 8, 4, 63
17308 ; PWR5-NEXT: rotldi 9, 3, 63
17309 ; PWR5-NEXT: rldimi 5, 5, 32, 0
17310 ; PWR5-NEXT: and 8, 8, 5
17311 ; PWR5-NEXT: and 5, 9, 5
17312 ; PWR5-NEXT: ori 6, 6, 13107
17313 ; PWR5-NEXT: sub 3, 3, 5
17314 ; PWR5-NEXT: rldimi 6, 6, 32, 0
17315 ; PWR5-NEXT: sub 4, 4, 8
17316 ; PWR5-NEXT: and 8, 3, 6
17317 ; PWR5-NEXT: rotldi 3, 3, 62
17318 ; PWR5-NEXT: and 3, 3, 6
17319 ; PWR5-NEXT: lis 7, 3855
17320 ; PWR5-NEXT: and 5, 4, 6
17321 ; PWR5-NEXT: rotldi 4, 4, 62
17322 ; PWR5-NEXT: add 3, 8, 3
17323 ; PWR5-NEXT: lis 9, 257
17324 ; PWR5-NEXT: ori 7, 7, 3855
17325 ; PWR5-NEXT: and 4, 4, 6
17326 ; PWR5-NEXT: rldicl 6, 3, 60, 4
17327 ; PWR5-NEXT: ori 9, 9, 257
17328 ; PWR5-NEXT: rldimi 7, 7, 32, 0
17329 ; PWR5-NEXT: add 4, 5, 4
17330 ; PWR5-NEXT: add 3, 3, 6
17331 ; PWR5-NEXT: rldimi 9, 9, 32, 0
17332 ; PWR5-NEXT: rldicl 5, 4, 60, 4
17333 ; PWR5-NEXT: and 3, 3, 7
17334 ; PWR5-NEXT: add 4, 4, 5
17335 ; PWR5-NEXT: mulld 3, 3, 9
17336 ; PWR5-NEXT: and 4, 4, 7
17337 ; PWR5-NEXT: rldicl 3, 3, 8, 56
17338 ; PWR5-NEXT: li 5, 22
17339 ; PWR5-NEXT: mulld 4, 4, 9
17340 ; PWR5-NEXT: subc 6, 3, 5
17341 ; PWR5-NEXT: rldicl 4, 4, 8, 56
17342 ; PWR5-NEXT: subfe 3, 3, 3
17343 ; PWR5-NEXT: subc 5, 4, 5
17344 ; PWR5-NEXT: subfe 4, 4, 4
17347 ; PWR6-LABEL: ult_22_v2i64:
17349 ; PWR6-NEXT: lis 5, 21845
17350 ; PWR6-NEXT: lis 6, 13107
17351 ; PWR6-NEXT: ori 5, 5, 21845
17352 ; PWR6-NEXT: rotldi 8, 4, 63
17353 ; PWR6-NEXT: rotldi 9, 3, 63
17354 ; PWR6-NEXT: rldimi 5, 5, 32, 0
17355 ; PWR6-NEXT: and 8, 8, 5
17356 ; PWR6-NEXT: and 5, 9, 5
17357 ; PWR6-NEXT: ori 6, 6, 13107
17358 ; PWR6-NEXT: sub 3, 3, 5
17359 ; PWR6-NEXT: rldimi 6, 6, 32, 0
17360 ; PWR6-NEXT: sub 4, 4, 8
17361 ; PWR6-NEXT: and 8, 3, 6
17362 ; PWR6-NEXT: rotldi 3, 3, 62
17363 ; PWR6-NEXT: and 3, 3, 6
17364 ; PWR6-NEXT: lis 7, 3855
17365 ; PWR6-NEXT: and 5, 4, 6
17366 ; PWR6-NEXT: rotldi 4, 4, 62
17367 ; PWR6-NEXT: add 3, 8, 3
17368 ; PWR6-NEXT: lis 9, 257
17369 ; PWR6-NEXT: ori 7, 7, 3855
17370 ; PWR6-NEXT: and 4, 4, 6
17371 ; PWR6-NEXT: rldicl 6, 3, 60, 4
17372 ; PWR6-NEXT: ori 9, 9, 257
17373 ; PWR6-NEXT: rldimi 7, 7, 32, 0
17374 ; PWR6-NEXT: add 4, 5, 4
17375 ; PWR6-NEXT: add 3, 3, 6
17376 ; PWR6-NEXT: rldimi 9, 9, 32, 0
17377 ; PWR6-NEXT: rldicl 5, 4, 60, 4
17378 ; PWR6-NEXT: and 3, 3, 7
17379 ; PWR6-NEXT: add 4, 4, 5
17380 ; PWR6-NEXT: mulld 3, 3, 9
17381 ; PWR6-NEXT: and 4, 4, 7
17382 ; PWR6-NEXT: rldicl 3, 3, 8, 56
17383 ; PWR6-NEXT: li 5, 22
17384 ; PWR6-NEXT: mulld 4, 4, 9
17385 ; PWR6-NEXT: subc 6, 3, 5
17386 ; PWR6-NEXT: rldicl 4, 4, 8, 56
17387 ; PWR6-NEXT: subfe 3, 3, 3
17388 ; PWR6-NEXT: subc 5, 4, 5
17389 ; PWR6-NEXT: subfe 4, 4, 4
17392 ; PWR7-LABEL: ult_22_v2i64:
17394 ; PWR7-NEXT: addi 3, 1, -32
17395 ; PWR7-NEXT: li 5, 0
17396 ; PWR7-NEXT: li 6, -1
17397 ; PWR7-NEXT: stxvd2x 34, 0, 3
17398 ; PWR7-NEXT: ld 3, -24(1)
17399 ; PWR7-NEXT: ld 4, -32(1)
17400 ; PWR7-NEXT: popcntd 3, 3
17401 ; PWR7-NEXT: popcntd 4, 4
17402 ; PWR7-NEXT: cmpldi 3, 22
17403 ; PWR7-NEXT: isellt 3, 6, 5
17404 ; PWR7-NEXT: cmpldi 4, 22
17405 ; PWR7-NEXT: isellt 4, 6, 5
17406 ; PWR7-NEXT: std 3, -8(1)
17407 ; PWR7-NEXT: addi 3, 1, -16
17408 ; PWR7-NEXT: std 4, -16(1)
17409 ; PWR7-NEXT: lxvd2x 34, 0, 3
17412 ; PWR8-LABEL: ult_22_v2i64:
17414 ; PWR8-NEXT: addis 3, 2, .LCPI141_0@toc@ha
17415 ; PWR8-NEXT: vpopcntd 2, 2
17416 ; PWR8-NEXT: addi 3, 3, .LCPI141_0@toc@l
17417 ; PWR8-NEXT: lxvd2x 35, 0, 3
17418 ; PWR8-NEXT: vcmpgtud 2, 3, 2
17421 ; PWR9-LABEL: ult_22_v2i64:
17423 ; PWR9-NEXT: addis 3, 2, .LCPI141_0@toc@ha
17424 ; PWR9-NEXT: vpopcntd 2, 2
17425 ; PWR9-NEXT: addi 3, 3, .LCPI141_0@toc@l
17426 ; PWR9-NEXT: lxv 35, 0(3)
17427 ; PWR9-NEXT: vcmpgtud 2, 3, 2
17429 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
17430 %3 = icmp ult <2 x i64> %2, <i64 22, i64 22>
17431 %4 = sext <2 x i1> %3 to <2 x i64>
17435 define <2 x i64> @ugt_22_v2i64(<2 x i64> %0) {
17436 ; PWR5-LABEL: ugt_22_v2i64:
17438 ; PWR5-NEXT: lis 5, 21845
17439 ; PWR5-NEXT: lis 6, 13107
17440 ; PWR5-NEXT: ori 5, 5, 21845
17441 ; PWR5-NEXT: rotldi 8, 4, 63
17442 ; PWR5-NEXT: rotldi 9, 3, 63
17443 ; PWR5-NEXT: rldimi 5, 5, 32, 0
17444 ; PWR5-NEXT: and 8, 8, 5
17445 ; PWR5-NEXT: and 5, 9, 5
17446 ; PWR5-NEXT: ori 6, 6, 13107
17447 ; PWR5-NEXT: sub 3, 3, 5
17448 ; PWR5-NEXT: rldimi 6, 6, 32, 0
17449 ; PWR5-NEXT: sub 4, 4, 8
17450 ; PWR5-NEXT: and 8, 3, 6
17451 ; PWR5-NEXT: rotldi 3, 3, 62
17452 ; PWR5-NEXT: and 3, 3, 6
17453 ; PWR5-NEXT: lis 7, 3855
17454 ; PWR5-NEXT: and 5, 4, 6
17455 ; PWR5-NEXT: rotldi 4, 4, 62
17456 ; PWR5-NEXT: add 3, 8, 3
17457 ; PWR5-NEXT: lis 9, 257
17458 ; PWR5-NEXT: ori 7, 7, 3855
17459 ; PWR5-NEXT: and 4, 4, 6
17460 ; PWR5-NEXT: rldicl 6, 3, 60, 4
17461 ; PWR5-NEXT: ori 9, 9, 257
17462 ; PWR5-NEXT: rldimi 7, 7, 32, 0
17463 ; PWR5-NEXT: add 4, 5, 4
17464 ; PWR5-NEXT: add 3, 3, 6
17465 ; PWR5-NEXT: rldimi 9, 9, 32, 0
17466 ; PWR5-NEXT: rldicl 5, 4, 60, 4
17467 ; PWR5-NEXT: and 3, 3, 7
17468 ; PWR5-NEXT: add 4, 4, 5
17469 ; PWR5-NEXT: mulld 3, 3, 9
17470 ; PWR5-NEXT: and 4, 4, 7
17471 ; PWR5-NEXT: rldicl 3, 3, 8, 56
17472 ; PWR5-NEXT: mulld 4, 4, 9
17473 ; PWR5-NEXT: li 5, 22
17474 ; PWR5-NEXT: subfic 3, 3, 22
17475 ; PWR5-NEXT: rldicl 4, 4, 8, 56
17476 ; PWR5-NEXT: subfe 3, 5, 5
17477 ; PWR5-NEXT: subfic 4, 4, 22
17478 ; PWR5-NEXT: subfe 4, 5, 5
17481 ; PWR6-LABEL: ugt_22_v2i64:
17483 ; PWR6-NEXT: lis 5, 21845
17484 ; PWR6-NEXT: lis 6, 13107
17485 ; PWR6-NEXT: ori 5, 5, 21845
17486 ; PWR6-NEXT: rotldi 8, 4, 63
17487 ; PWR6-NEXT: rotldi 9, 3, 63
17488 ; PWR6-NEXT: rldimi 5, 5, 32, 0
17489 ; PWR6-NEXT: and 8, 8, 5
17490 ; PWR6-NEXT: and 5, 9, 5
17491 ; PWR6-NEXT: ori 6, 6, 13107
17492 ; PWR6-NEXT: sub 3, 3, 5
17493 ; PWR6-NEXT: rldimi 6, 6, 32, 0
17494 ; PWR6-NEXT: sub 4, 4, 8
17495 ; PWR6-NEXT: and 8, 3, 6
17496 ; PWR6-NEXT: rotldi 3, 3, 62
17497 ; PWR6-NEXT: and 3, 3, 6
17498 ; PWR6-NEXT: lis 7, 3855
17499 ; PWR6-NEXT: and 5, 4, 6
17500 ; PWR6-NEXT: rotldi 4, 4, 62
17501 ; PWR6-NEXT: add 3, 8, 3
17502 ; PWR6-NEXT: lis 9, 257
17503 ; PWR6-NEXT: ori 7, 7, 3855
17504 ; PWR6-NEXT: and 4, 4, 6
17505 ; PWR6-NEXT: rldicl 6, 3, 60, 4
17506 ; PWR6-NEXT: ori 9, 9, 257
17507 ; PWR6-NEXT: rldimi 7, 7, 32, 0
17508 ; PWR6-NEXT: add 4, 5, 4
17509 ; PWR6-NEXT: add 3, 3, 6
17510 ; PWR6-NEXT: rldimi 9, 9, 32, 0
17511 ; PWR6-NEXT: rldicl 5, 4, 60, 4
17512 ; PWR6-NEXT: and 3, 3, 7
17513 ; PWR6-NEXT: add 4, 4, 5
17514 ; PWR6-NEXT: mulld 3, 3, 9
17515 ; PWR6-NEXT: and 4, 4, 7
17516 ; PWR6-NEXT: rldicl 3, 3, 8, 56
17517 ; PWR6-NEXT: mulld 4, 4, 9
17518 ; PWR6-NEXT: li 5, 22
17519 ; PWR6-NEXT: subfic 3, 3, 22
17520 ; PWR6-NEXT: rldicl 4, 4, 8, 56
17521 ; PWR6-NEXT: subfe 3, 5, 5
17522 ; PWR6-NEXT: subfic 4, 4, 22
17523 ; PWR6-NEXT: subfe 4, 5, 5
17526 ; PWR7-LABEL: ugt_22_v2i64:
17528 ; PWR7-NEXT: addi 3, 1, -32
17529 ; PWR7-NEXT: li 5, 0
17530 ; PWR7-NEXT: li 6, -1
17531 ; PWR7-NEXT: stxvd2x 34, 0, 3
17532 ; PWR7-NEXT: ld 3, -24(1)
17533 ; PWR7-NEXT: ld 4, -32(1)
17534 ; PWR7-NEXT: popcntd 3, 3
17535 ; PWR7-NEXT: popcntd 4, 4
17536 ; PWR7-NEXT: cmpldi 3, 22
17537 ; PWR7-NEXT: iselgt 3, 6, 5
17538 ; PWR7-NEXT: cmpldi 4, 22
17539 ; PWR7-NEXT: iselgt 4, 6, 5
17540 ; PWR7-NEXT: std 3, -8(1)
17541 ; PWR7-NEXT: addi 3, 1, -16
17542 ; PWR7-NEXT: std 4, -16(1)
17543 ; PWR7-NEXT: lxvd2x 34, 0, 3
17546 ; PWR8-LABEL: ugt_22_v2i64:
17548 ; PWR8-NEXT: addis 3, 2, .LCPI142_0@toc@ha
17549 ; PWR8-NEXT: vpopcntd 2, 2
17550 ; PWR8-NEXT: addi 3, 3, .LCPI142_0@toc@l
17551 ; PWR8-NEXT: lxvd2x 35, 0, 3
17552 ; PWR8-NEXT: vcmpgtud 2, 2, 3
17555 ; PWR9-LABEL: ugt_22_v2i64:
17557 ; PWR9-NEXT: addis 3, 2, .LCPI142_0@toc@ha
17558 ; PWR9-NEXT: vpopcntd 2, 2
17559 ; PWR9-NEXT: addi 3, 3, .LCPI142_0@toc@l
17560 ; PWR9-NEXT: lxv 35, 0(3)
17561 ; PWR9-NEXT: vcmpgtud 2, 2, 3
17563 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
17564 %3 = icmp ugt <2 x i64> %2, <i64 22, i64 22>
17565 %4 = sext <2 x i1> %3 to <2 x i64>
17569 define <2 x i64> @ult_23_v2i64(<2 x i64> %0) {
17570 ; PWR5-LABEL: ult_23_v2i64:
17572 ; PWR5-NEXT: lis 5, 21845
17573 ; PWR5-NEXT: lis 6, 13107
17574 ; PWR5-NEXT: ori 5, 5, 21845
17575 ; PWR5-NEXT: rotldi 8, 4, 63
17576 ; PWR5-NEXT: rotldi 9, 3, 63
17577 ; PWR5-NEXT: rldimi 5, 5, 32, 0
17578 ; PWR5-NEXT: and 8, 8, 5
17579 ; PWR5-NEXT: and 5, 9, 5
17580 ; PWR5-NEXT: ori 6, 6, 13107
17581 ; PWR5-NEXT: sub 3, 3, 5
17582 ; PWR5-NEXT: rldimi 6, 6, 32, 0
17583 ; PWR5-NEXT: sub 4, 4, 8
17584 ; PWR5-NEXT: and 8, 3, 6
17585 ; PWR5-NEXT: rotldi 3, 3, 62
17586 ; PWR5-NEXT: and 3, 3, 6
17587 ; PWR5-NEXT: lis 7, 3855
17588 ; PWR5-NEXT: and 5, 4, 6
17589 ; PWR5-NEXT: rotldi 4, 4, 62
17590 ; PWR5-NEXT: add 3, 8, 3
17591 ; PWR5-NEXT: lis 9, 257
17592 ; PWR5-NEXT: ori 7, 7, 3855
17593 ; PWR5-NEXT: and 4, 4, 6
17594 ; PWR5-NEXT: rldicl 6, 3, 60, 4
17595 ; PWR5-NEXT: ori 9, 9, 257
17596 ; PWR5-NEXT: rldimi 7, 7, 32, 0
17597 ; PWR5-NEXT: add 4, 5, 4
17598 ; PWR5-NEXT: add 3, 3, 6
17599 ; PWR5-NEXT: rldimi 9, 9, 32, 0
17600 ; PWR5-NEXT: rldicl 5, 4, 60, 4
17601 ; PWR5-NEXT: and 3, 3, 7
17602 ; PWR5-NEXT: add 4, 4, 5
17603 ; PWR5-NEXT: mulld 3, 3, 9
17604 ; PWR5-NEXT: and 4, 4, 7
17605 ; PWR5-NEXT: rldicl 3, 3, 8, 56
17606 ; PWR5-NEXT: li 5, 23
17607 ; PWR5-NEXT: mulld 4, 4, 9
17608 ; PWR5-NEXT: subc 6, 3, 5
17609 ; PWR5-NEXT: rldicl 4, 4, 8, 56
17610 ; PWR5-NEXT: subfe 3, 3, 3
17611 ; PWR5-NEXT: subc 5, 4, 5
17612 ; PWR5-NEXT: subfe 4, 4, 4
17615 ; PWR6-LABEL: ult_23_v2i64:
17617 ; PWR6-NEXT: lis 5, 21845
17618 ; PWR6-NEXT: lis 6, 13107
17619 ; PWR6-NEXT: ori 5, 5, 21845
17620 ; PWR6-NEXT: rotldi 8, 4, 63
17621 ; PWR6-NEXT: rotldi 9, 3, 63
17622 ; PWR6-NEXT: rldimi 5, 5, 32, 0
17623 ; PWR6-NEXT: and 8, 8, 5
17624 ; PWR6-NEXT: and 5, 9, 5
17625 ; PWR6-NEXT: ori 6, 6, 13107
17626 ; PWR6-NEXT: sub 3, 3, 5
17627 ; PWR6-NEXT: rldimi 6, 6, 32, 0
17628 ; PWR6-NEXT: sub 4, 4, 8
17629 ; PWR6-NEXT: and 8, 3, 6
17630 ; PWR6-NEXT: rotldi 3, 3, 62
17631 ; PWR6-NEXT: and 3, 3, 6
17632 ; PWR6-NEXT: lis 7, 3855
17633 ; PWR6-NEXT: and 5, 4, 6
17634 ; PWR6-NEXT: rotldi 4, 4, 62
17635 ; PWR6-NEXT: add 3, 8, 3
17636 ; PWR6-NEXT: lis 9, 257
17637 ; PWR6-NEXT: ori 7, 7, 3855
17638 ; PWR6-NEXT: and 4, 4, 6
17639 ; PWR6-NEXT: rldicl 6, 3, 60, 4
17640 ; PWR6-NEXT: ori 9, 9, 257
17641 ; PWR6-NEXT: rldimi 7, 7, 32, 0
17642 ; PWR6-NEXT: add 4, 5, 4
17643 ; PWR6-NEXT: add 3, 3, 6
17644 ; PWR6-NEXT: rldimi 9, 9, 32, 0
17645 ; PWR6-NEXT: rldicl 5, 4, 60, 4
17646 ; PWR6-NEXT: and 3, 3, 7
17647 ; PWR6-NEXT: add 4, 4, 5
17648 ; PWR6-NEXT: mulld 3, 3, 9
17649 ; PWR6-NEXT: and 4, 4, 7
17650 ; PWR6-NEXT: rldicl 3, 3, 8, 56
17651 ; PWR6-NEXT: li 5, 23
17652 ; PWR6-NEXT: mulld 4, 4, 9
17653 ; PWR6-NEXT: subc 6, 3, 5
17654 ; PWR6-NEXT: rldicl 4, 4, 8, 56
17655 ; PWR6-NEXT: subfe 3, 3, 3
17656 ; PWR6-NEXT: subc 5, 4, 5
17657 ; PWR6-NEXT: subfe 4, 4, 4
17660 ; PWR7-LABEL: ult_23_v2i64:
17662 ; PWR7-NEXT: addi 3, 1, -32
17663 ; PWR7-NEXT: li 5, 0
17664 ; PWR7-NEXT: li 6, -1
17665 ; PWR7-NEXT: stxvd2x 34, 0, 3
17666 ; PWR7-NEXT: ld 3, -24(1)
17667 ; PWR7-NEXT: ld 4, -32(1)
17668 ; PWR7-NEXT: popcntd 3, 3
17669 ; PWR7-NEXT: popcntd 4, 4
17670 ; PWR7-NEXT: cmpldi 3, 23
17671 ; PWR7-NEXT: isellt 3, 6, 5
17672 ; PWR7-NEXT: cmpldi 4, 23
17673 ; PWR7-NEXT: isellt 4, 6, 5
17674 ; PWR7-NEXT: std 3, -8(1)
17675 ; PWR7-NEXT: addi 3, 1, -16
17676 ; PWR7-NEXT: std 4, -16(1)
17677 ; PWR7-NEXT: lxvd2x 34, 0, 3
17680 ; PWR8-LABEL: ult_23_v2i64:
17682 ; PWR8-NEXT: addis 3, 2, .LCPI143_0@toc@ha
17683 ; PWR8-NEXT: vpopcntd 2, 2
17684 ; PWR8-NEXT: addi 3, 3, .LCPI143_0@toc@l
17685 ; PWR8-NEXT: lxvd2x 35, 0, 3
17686 ; PWR8-NEXT: vcmpgtud 2, 3, 2
17689 ; PWR9-LABEL: ult_23_v2i64:
17691 ; PWR9-NEXT: addis 3, 2, .LCPI143_0@toc@ha
17692 ; PWR9-NEXT: vpopcntd 2, 2
17693 ; PWR9-NEXT: addi 3, 3, .LCPI143_0@toc@l
17694 ; PWR9-NEXT: lxv 35, 0(3)
17695 ; PWR9-NEXT: vcmpgtud 2, 3, 2
17697 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
17698 %3 = icmp ult <2 x i64> %2, <i64 23, i64 23>
17699 %4 = sext <2 x i1> %3 to <2 x i64>
17703 define <2 x i64> @ugt_23_v2i64(<2 x i64> %0) {
17704 ; PWR5-LABEL: ugt_23_v2i64:
17706 ; PWR5-NEXT: lis 5, 21845
17707 ; PWR5-NEXT: lis 6, 13107
17708 ; PWR5-NEXT: ori 5, 5, 21845
17709 ; PWR5-NEXT: rotldi 8, 4, 63
17710 ; PWR5-NEXT: rotldi 9, 3, 63
17711 ; PWR5-NEXT: rldimi 5, 5, 32, 0
17712 ; PWR5-NEXT: and 8, 8, 5
17713 ; PWR5-NEXT: and 5, 9, 5
17714 ; PWR5-NEXT: ori 6, 6, 13107
17715 ; PWR5-NEXT: sub 3, 3, 5
17716 ; PWR5-NEXT: rldimi 6, 6, 32, 0
17717 ; PWR5-NEXT: sub 4, 4, 8
17718 ; PWR5-NEXT: and 8, 3, 6
17719 ; PWR5-NEXT: rotldi 3, 3, 62
17720 ; PWR5-NEXT: and 3, 3, 6
17721 ; PWR5-NEXT: lis 7, 3855
17722 ; PWR5-NEXT: and 5, 4, 6
17723 ; PWR5-NEXT: rotldi 4, 4, 62
17724 ; PWR5-NEXT: add 3, 8, 3
17725 ; PWR5-NEXT: lis 9, 257
17726 ; PWR5-NEXT: ori 7, 7, 3855
17727 ; PWR5-NEXT: and 4, 4, 6
17728 ; PWR5-NEXT: rldicl 6, 3, 60, 4
17729 ; PWR5-NEXT: ori 9, 9, 257
17730 ; PWR5-NEXT: rldimi 7, 7, 32, 0
17731 ; PWR5-NEXT: add 4, 5, 4
17732 ; PWR5-NEXT: add 3, 3, 6
17733 ; PWR5-NEXT: rldimi 9, 9, 32, 0
17734 ; PWR5-NEXT: rldicl 5, 4, 60, 4
17735 ; PWR5-NEXT: and 3, 3, 7
17736 ; PWR5-NEXT: add 4, 4, 5
17737 ; PWR5-NEXT: mulld 3, 3, 9
17738 ; PWR5-NEXT: and 4, 4, 7
17739 ; PWR5-NEXT: rldicl 3, 3, 8, 56
17740 ; PWR5-NEXT: mulld 4, 4, 9
17741 ; PWR5-NEXT: li 5, 23
17742 ; PWR5-NEXT: subfic 3, 3, 23
17743 ; PWR5-NEXT: rldicl 4, 4, 8, 56
17744 ; PWR5-NEXT: subfe 3, 5, 5
17745 ; PWR5-NEXT: subfic 4, 4, 23
17746 ; PWR5-NEXT: subfe 4, 5, 5
17749 ; PWR6-LABEL: ugt_23_v2i64:
17751 ; PWR6-NEXT: lis 5, 21845
17752 ; PWR6-NEXT: lis 6, 13107
17753 ; PWR6-NEXT: ori 5, 5, 21845
17754 ; PWR6-NEXT: rotldi 8, 4, 63
17755 ; PWR6-NEXT: rotldi 9, 3, 63
17756 ; PWR6-NEXT: rldimi 5, 5, 32, 0
17757 ; PWR6-NEXT: and 8, 8, 5
17758 ; PWR6-NEXT: and 5, 9, 5
17759 ; PWR6-NEXT: ori 6, 6, 13107
17760 ; PWR6-NEXT: sub 3, 3, 5
17761 ; PWR6-NEXT: rldimi 6, 6, 32, 0
17762 ; PWR6-NEXT: sub 4, 4, 8
17763 ; PWR6-NEXT: and 8, 3, 6
17764 ; PWR6-NEXT: rotldi 3, 3, 62
17765 ; PWR6-NEXT: and 3, 3, 6
17766 ; PWR6-NEXT: lis 7, 3855
17767 ; PWR6-NEXT: and 5, 4, 6
17768 ; PWR6-NEXT: rotldi 4, 4, 62
17769 ; PWR6-NEXT: add 3, 8, 3
17770 ; PWR6-NEXT: lis 9, 257
17771 ; PWR6-NEXT: ori 7, 7, 3855
17772 ; PWR6-NEXT: and 4, 4, 6
17773 ; PWR6-NEXT: rldicl 6, 3, 60, 4
17774 ; PWR6-NEXT: ori 9, 9, 257
17775 ; PWR6-NEXT: rldimi 7, 7, 32, 0
17776 ; PWR6-NEXT: add 4, 5, 4
17777 ; PWR6-NEXT: add 3, 3, 6
17778 ; PWR6-NEXT: rldimi 9, 9, 32, 0
17779 ; PWR6-NEXT: rldicl 5, 4, 60, 4
17780 ; PWR6-NEXT: and 3, 3, 7
17781 ; PWR6-NEXT: add 4, 4, 5
17782 ; PWR6-NEXT: mulld 3, 3, 9
17783 ; PWR6-NEXT: and 4, 4, 7
17784 ; PWR6-NEXT: rldicl 3, 3, 8, 56
17785 ; PWR6-NEXT: mulld 4, 4, 9
17786 ; PWR6-NEXT: li 5, 23
17787 ; PWR6-NEXT: subfic 3, 3, 23
17788 ; PWR6-NEXT: rldicl 4, 4, 8, 56
17789 ; PWR6-NEXT: subfe 3, 5, 5
17790 ; PWR6-NEXT: subfic 4, 4, 23
17791 ; PWR6-NEXT: subfe 4, 5, 5
17794 ; PWR7-LABEL: ugt_23_v2i64:
17796 ; PWR7-NEXT: addi 3, 1, -32
17797 ; PWR7-NEXT: li 5, 0
17798 ; PWR7-NEXT: li 6, -1
17799 ; PWR7-NEXT: stxvd2x 34, 0, 3
17800 ; PWR7-NEXT: ld 3, -24(1)
17801 ; PWR7-NEXT: ld 4, -32(1)
17802 ; PWR7-NEXT: popcntd 3, 3
17803 ; PWR7-NEXT: popcntd 4, 4
17804 ; PWR7-NEXT: cmpldi 3, 23
17805 ; PWR7-NEXT: iselgt 3, 6, 5
17806 ; PWR7-NEXT: cmpldi 4, 23
17807 ; PWR7-NEXT: iselgt 4, 6, 5
17808 ; PWR7-NEXT: std 3, -8(1)
17809 ; PWR7-NEXT: addi 3, 1, -16
17810 ; PWR7-NEXT: std 4, -16(1)
17811 ; PWR7-NEXT: lxvd2x 34, 0, 3
17814 ; PWR8-LABEL: ugt_23_v2i64:
17816 ; PWR8-NEXT: addis 3, 2, .LCPI144_0@toc@ha
17817 ; PWR8-NEXT: vpopcntd 2, 2
17818 ; PWR8-NEXT: addi 3, 3, .LCPI144_0@toc@l
17819 ; PWR8-NEXT: lxvd2x 35, 0, 3
17820 ; PWR8-NEXT: vcmpgtud 2, 2, 3
17823 ; PWR9-LABEL: ugt_23_v2i64:
17825 ; PWR9-NEXT: addis 3, 2, .LCPI144_0@toc@ha
17826 ; PWR9-NEXT: vpopcntd 2, 2
17827 ; PWR9-NEXT: addi 3, 3, .LCPI144_0@toc@l
17828 ; PWR9-NEXT: lxv 35, 0(3)
17829 ; PWR9-NEXT: vcmpgtud 2, 2, 3
17831 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
17832 %3 = icmp ugt <2 x i64> %2, <i64 23, i64 23>
17833 %4 = sext <2 x i1> %3 to <2 x i64>
17837 define <2 x i64> @ult_24_v2i64(<2 x i64> %0) {
17838 ; PWR5-LABEL: ult_24_v2i64:
17840 ; PWR5-NEXT: lis 5, 21845
17841 ; PWR5-NEXT: lis 6, 13107
17842 ; PWR5-NEXT: ori 5, 5, 21845
17843 ; PWR5-NEXT: rotldi 8, 4, 63
17844 ; PWR5-NEXT: rotldi 9, 3, 63
17845 ; PWR5-NEXT: rldimi 5, 5, 32, 0
17846 ; PWR5-NEXT: and 8, 8, 5
17847 ; PWR5-NEXT: and 5, 9, 5
17848 ; PWR5-NEXT: ori 6, 6, 13107
17849 ; PWR5-NEXT: sub 3, 3, 5
17850 ; PWR5-NEXT: rldimi 6, 6, 32, 0
17851 ; PWR5-NEXT: sub 4, 4, 8
17852 ; PWR5-NEXT: and 8, 3, 6
17853 ; PWR5-NEXT: rotldi 3, 3, 62
17854 ; PWR5-NEXT: and 3, 3, 6
17855 ; PWR5-NEXT: lis 7, 3855
17856 ; PWR5-NEXT: and 5, 4, 6
17857 ; PWR5-NEXT: rotldi 4, 4, 62
17858 ; PWR5-NEXT: add 3, 8, 3
17859 ; PWR5-NEXT: lis 9, 257
17860 ; PWR5-NEXT: ori 7, 7, 3855
17861 ; PWR5-NEXT: and 4, 4, 6
17862 ; PWR5-NEXT: rldicl 6, 3, 60, 4
17863 ; PWR5-NEXT: ori 9, 9, 257
17864 ; PWR5-NEXT: rldimi 7, 7, 32, 0
17865 ; PWR5-NEXT: add 4, 5, 4
17866 ; PWR5-NEXT: add 3, 3, 6
17867 ; PWR5-NEXT: rldimi 9, 9, 32, 0
17868 ; PWR5-NEXT: rldicl 5, 4, 60, 4
17869 ; PWR5-NEXT: and 3, 3, 7
17870 ; PWR5-NEXT: add 4, 4, 5
17871 ; PWR5-NEXT: mulld 3, 3, 9
17872 ; PWR5-NEXT: and 4, 4, 7
17873 ; PWR5-NEXT: rldicl 3, 3, 8, 56
17874 ; PWR5-NEXT: li 5, 24
17875 ; PWR5-NEXT: mulld 4, 4, 9
17876 ; PWR5-NEXT: subc 6, 3, 5
17877 ; PWR5-NEXT: rldicl 4, 4, 8, 56
17878 ; PWR5-NEXT: subfe 3, 3, 3
17879 ; PWR5-NEXT: subc 5, 4, 5
17880 ; PWR5-NEXT: subfe 4, 4, 4
17883 ; PWR6-LABEL: ult_24_v2i64:
17885 ; PWR6-NEXT: lis 5, 21845
17886 ; PWR6-NEXT: lis 6, 13107
17887 ; PWR6-NEXT: ori 5, 5, 21845
17888 ; PWR6-NEXT: rotldi 8, 4, 63
17889 ; PWR6-NEXT: rotldi 9, 3, 63
17890 ; PWR6-NEXT: rldimi 5, 5, 32, 0
17891 ; PWR6-NEXT: and 8, 8, 5
17892 ; PWR6-NEXT: and 5, 9, 5
17893 ; PWR6-NEXT: ori 6, 6, 13107
17894 ; PWR6-NEXT: sub 3, 3, 5
17895 ; PWR6-NEXT: rldimi 6, 6, 32, 0
17896 ; PWR6-NEXT: sub 4, 4, 8
17897 ; PWR6-NEXT: and 8, 3, 6
17898 ; PWR6-NEXT: rotldi 3, 3, 62
17899 ; PWR6-NEXT: and 3, 3, 6
17900 ; PWR6-NEXT: lis 7, 3855
17901 ; PWR6-NEXT: and 5, 4, 6
17902 ; PWR6-NEXT: rotldi 4, 4, 62
17903 ; PWR6-NEXT: add 3, 8, 3
17904 ; PWR6-NEXT: lis 9, 257
17905 ; PWR6-NEXT: ori 7, 7, 3855
17906 ; PWR6-NEXT: and 4, 4, 6
17907 ; PWR6-NEXT: rldicl 6, 3, 60, 4
17908 ; PWR6-NEXT: ori 9, 9, 257
17909 ; PWR6-NEXT: rldimi 7, 7, 32, 0
17910 ; PWR6-NEXT: add 4, 5, 4
17911 ; PWR6-NEXT: add 3, 3, 6
17912 ; PWR6-NEXT: rldimi 9, 9, 32, 0
17913 ; PWR6-NEXT: rldicl 5, 4, 60, 4
17914 ; PWR6-NEXT: and 3, 3, 7
17915 ; PWR6-NEXT: add 4, 4, 5
17916 ; PWR6-NEXT: mulld 3, 3, 9
17917 ; PWR6-NEXT: and 4, 4, 7
17918 ; PWR6-NEXT: rldicl 3, 3, 8, 56
17919 ; PWR6-NEXT: li 5, 24
17920 ; PWR6-NEXT: mulld 4, 4, 9
17921 ; PWR6-NEXT: subc 6, 3, 5
17922 ; PWR6-NEXT: rldicl 4, 4, 8, 56
17923 ; PWR6-NEXT: subfe 3, 3, 3
17924 ; PWR6-NEXT: subc 5, 4, 5
17925 ; PWR6-NEXT: subfe 4, 4, 4
17928 ; PWR7-LABEL: ult_24_v2i64:
17930 ; PWR7-NEXT: addi 3, 1, -32
17931 ; PWR7-NEXT: li 5, 0
17932 ; PWR7-NEXT: li 6, -1
17933 ; PWR7-NEXT: stxvd2x 34, 0, 3
17934 ; PWR7-NEXT: ld 3, -24(1)
17935 ; PWR7-NEXT: ld 4, -32(1)
17936 ; PWR7-NEXT: popcntd 3, 3
17937 ; PWR7-NEXT: popcntd 4, 4
17938 ; PWR7-NEXT: cmpldi 3, 24
17939 ; PWR7-NEXT: isellt 3, 6, 5
17940 ; PWR7-NEXT: cmpldi 4, 24
17941 ; PWR7-NEXT: isellt 4, 6, 5
17942 ; PWR7-NEXT: std 3, -8(1)
17943 ; PWR7-NEXT: addi 3, 1, -16
17944 ; PWR7-NEXT: std 4, -16(1)
17945 ; PWR7-NEXT: lxvd2x 34, 0, 3
17948 ; PWR8-LABEL: ult_24_v2i64:
17950 ; PWR8-NEXT: addis 3, 2, .LCPI145_0@toc@ha
17951 ; PWR8-NEXT: vpopcntd 2, 2
17952 ; PWR8-NEXT: addi 3, 3, .LCPI145_0@toc@l
17953 ; PWR8-NEXT: lxvd2x 35, 0, 3
17954 ; PWR8-NEXT: vcmpgtud 2, 3, 2
17957 ; PWR9-LABEL: ult_24_v2i64:
17959 ; PWR9-NEXT: addis 3, 2, .LCPI145_0@toc@ha
17960 ; PWR9-NEXT: vpopcntd 2, 2
17961 ; PWR9-NEXT: addi 3, 3, .LCPI145_0@toc@l
17962 ; PWR9-NEXT: lxv 35, 0(3)
17963 ; PWR9-NEXT: vcmpgtud 2, 3, 2
17965 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
17966 %3 = icmp ult <2 x i64> %2, <i64 24, i64 24>
17967 %4 = sext <2 x i1> %3 to <2 x i64>
17971 define <2 x i64> @ugt_24_v2i64(<2 x i64> %0) {
17972 ; PWR5-LABEL: ugt_24_v2i64:
17974 ; PWR5-NEXT: lis 5, 21845
17975 ; PWR5-NEXT: lis 6, 13107
17976 ; PWR5-NEXT: ori 5, 5, 21845
17977 ; PWR5-NEXT: rotldi 8, 4, 63
17978 ; PWR5-NEXT: rotldi 9, 3, 63
17979 ; PWR5-NEXT: rldimi 5, 5, 32, 0
17980 ; PWR5-NEXT: and 8, 8, 5
17981 ; PWR5-NEXT: and 5, 9, 5
17982 ; PWR5-NEXT: ori 6, 6, 13107
17983 ; PWR5-NEXT: sub 3, 3, 5
17984 ; PWR5-NEXT: rldimi 6, 6, 32, 0
17985 ; PWR5-NEXT: sub 4, 4, 8
17986 ; PWR5-NEXT: and 8, 3, 6
17987 ; PWR5-NEXT: rotldi 3, 3, 62
17988 ; PWR5-NEXT: and 3, 3, 6
17989 ; PWR5-NEXT: lis 7, 3855
17990 ; PWR5-NEXT: and 5, 4, 6
17991 ; PWR5-NEXT: rotldi 4, 4, 62
17992 ; PWR5-NEXT: add 3, 8, 3
17993 ; PWR5-NEXT: lis 9, 257
17994 ; PWR5-NEXT: ori 7, 7, 3855
17995 ; PWR5-NEXT: and 4, 4, 6
17996 ; PWR5-NEXT: rldicl 6, 3, 60, 4
17997 ; PWR5-NEXT: ori 9, 9, 257
17998 ; PWR5-NEXT: rldimi 7, 7, 32, 0
17999 ; PWR5-NEXT: add 4, 5, 4
18000 ; PWR5-NEXT: add 3, 3, 6
18001 ; PWR5-NEXT: rldimi 9, 9, 32, 0
18002 ; PWR5-NEXT: rldicl 5, 4, 60, 4
18003 ; PWR5-NEXT: and 3, 3, 7
18004 ; PWR5-NEXT: add 4, 4, 5
18005 ; PWR5-NEXT: mulld 3, 3, 9
18006 ; PWR5-NEXT: and 4, 4, 7
18007 ; PWR5-NEXT: rldicl 3, 3, 8, 56
18008 ; PWR5-NEXT: mulld 4, 4, 9
18009 ; PWR5-NEXT: li 5, 24
18010 ; PWR5-NEXT: subfic 3, 3, 24
18011 ; PWR5-NEXT: rldicl 4, 4, 8, 56
18012 ; PWR5-NEXT: subfe 3, 5, 5
18013 ; PWR5-NEXT: subfic 4, 4, 24
18014 ; PWR5-NEXT: subfe 4, 5, 5
18017 ; PWR6-LABEL: ugt_24_v2i64:
18019 ; PWR6-NEXT: lis 5, 21845
18020 ; PWR6-NEXT: lis 6, 13107
18021 ; PWR6-NEXT: ori 5, 5, 21845
18022 ; PWR6-NEXT: rotldi 8, 4, 63
18023 ; PWR6-NEXT: rotldi 9, 3, 63
18024 ; PWR6-NEXT: rldimi 5, 5, 32, 0
18025 ; PWR6-NEXT: and 8, 8, 5
18026 ; PWR6-NEXT: and 5, 9, 5
18027 ; PWR6-NEXT: ori 6, 6, 13107
18028 ; PWR6-NEXT: sub 3, 3, 5
18029 ; PWR6-NEXT: rldimi 6, 6, 32, 0
18030 ; PWR6-NEXT: sub 4, 4, 8
18031 ; PWR6-NEXT: and 8, 3, 6
18032 ; PWR6-NEXT: rotldi 3, 3, 62
18033 ; PWR6-NEXT: and 3, 3, 6
18034 ; PWR6-NEXT: lis 7, 3855
18035 ; PWR6-NEXT: and 5, 4, 6
18036 ; PWR6-NEXT: rotldi 4, 4, 62
18037 ; PWR6-NEXT: add 3, 8, 3
18038 ; PWR6-NEXT: lis 9, 257
18039 ; PWR6-NEXT: ori 7, 7, 3855
18040 ; PWR6-NEXT: and 4, 4, 6
18041 ; PWR6-NEXT: rldicl 6, 3, 60, 4
18042 ; PWR6-NEXT: ori 9, 9, 257
18043 ; PWR6-NEXT: rldimi 7, 7, 32, 0
18044 ; PWR6-NEXT: add 4, 5, 4
18045 ; PWR6-NEXT: add 3, 3, 6
18046 ; PWR6-NEXT: rldimi 9, 9, 32, 0
18047 ; PWR6-NEXT: rldicl 5, 4, 60, 4
18048 ; PWR6-NEXT: and 3, 3, 7
18049 ; PWR6-NEXT: add 4, 4, 5
18050 ; PWR6-NEXT: mulld 3, 3, 9
18051 ; PWR6-NEXT: and 4, 4, 7
18052 ; PWR6-NEXT: rldicl 3, 3, 8, 56
18053 ; PWR6-NEXT: mulld 4, 4, 9
18054 ; PWR6-NEXT: li 5, 24
18055 ; PWR6-NEXT: subfic 3, 3, 24
18056 ; PWR6-NEXT: rldicl 4, 4, 8, 56
18057 ; PWR6-NEXT: subfe 3, 5, 5
18058 ; PWR6-NEXT: subfic 4, 4, 24
18059 ; PWR6-NEXT: subfe 4, 5, 5
18062 ; PWR7-LABEL: ugt_24_v2i64:
18064 ; PWR7-NEXT: addi 3, 1, -32
18065 ; PWR7-NEXT: li 5, 0
18066 ; PWR7-NEXT: li 6, -1
18067 ; PWR7-NEXT: stxvd2x 34, 0, 3
18068 ; PWR7-NEXT: ld 3, -24(1)
18069 ; PWR7-NEXT: ld 4, -32(1)
18070 ; PWR7-NEXT: popcntd 3, 3
18071 ; PWR7-NEXT: popcntd 4, 4
18072 ; PWR7-NEXT: cmpldi 3, 24
18073 ; PWR7-NEXT: iselgt 3, 6, 5
18074 ; PWR7-NEXT: cmpldi 4, 24
18075 ; PWR7-NEXT: iselgt 4, 6, 5
18076 ; PWR7-NEXT: std 3, -8(1)
18077 ; PWR7-NEXT: addi 3, 1, -16
18078 ; PWR7-NEXT: std 4, -16(1)
18079 ; PWR7-NEXT: lxvd2x 34, 0, 3
18082 ; PWR8-LABEL: ugt_24_v2i64:
18084 ; PWR8-NEXT: addis 3, 2, .LCPI146_0@toc@ha
18085 ; PWR8-NEXT: vpopcntd 2, 2
18086 ; PWR8-NEXT: addi 3, 3, .LCPI146_0@toc@l
18087 ; PWR8-NEXT: lxvd2x 35, 0, 3
18088 ; PWR8-NEXT: vcmpgtud 2, 2, 3
18091 ; PWR9-LABEL: ugt_24_v2i64:
18093 ; PWR9-NEXT: addis 3, 2, .LCPI146_0@toc@ha
18094 ; PWR9-NEXT: vpopcntd 2, 2
18095 ; PWR9-NEXT: addi 3, 3, .LCPI146_0@toc@l
18096 ; PWR9-NEXT: lxv 35, 0(3)
18097 ; PWR9-NEXT: vcmpgtud 2, 2, 3
18099 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
18100 %3 = icmp ugt <2 x i64> %2, <i64 24, i64 24>
18101 %4 = sext <2 x i1> %3 to <2 x i64>
18105 define <2 x i64> @ult_25_v2i64(<2 x i64> %0) {
18106 ; PWR5-LABEL: ult_25_v2i64:
18108 ; PWR5-NEXT: lis 5, 21845
18109 ; PWR5-NEXT: lis 6, 13107
18110 ; PWR5-NEXT: ori 5, 5, 21845
18111 ; PWR5-NEXT: rotldi 8, 4, 63
18112 ; PWR5-NEXT: rotldi 9, 3, 63
18113 ; PWR5-NEXT: rldimi 5, 5, 32, 0
18114 ; PWR5-NEXT: and 8, 8, 5
18115 ; PWR5-NEXT: and 5, 9, 5
18116 ; PWR5-NEXT: ori 6, 6, 13107
18117 ; PWR5-NEXT: sub 3, 3, 5
18118 ; PWR5-NEXT: rldimi 6, 6, 32, 0
18119 ; PWR5-NEXT: sub 4, 4, 8
18120 ; PWR5-NEXT: and 8, 3, 6
18121 ; PWR5-NEXT: rotldi 3, 3, 62
18122 ; PWR5-NEXT: and 3, 3, 6
18123 ; PWR5-NEXT: lis 7, 3855
18124 ; PWR5-NEXT: and 5, 4, 6
18125 ; PWR5-NEXT: rotldi 4, 4, 62
18126 ; PWR5-NEXT: add 3, 8, 3
18127 ; PWR5-NEXT: lis 9, 257
18128 ; PWR5-NEXT: ori 7, 7, 3855
18129 ; PWR5-NEXT: and 4, 4, 6
18130 ; PWR5-NEXT: rldicl 6, 3, 60, 4
18131 ; PWR5-NEXT: ori 9, 9, 257
18132 ; PWR5-NEXT: rldimi 7, 7, 32, 0
18133 ; PWR5-NEXT: add 4, 5, 4
18134 ; PWR5-NEXT: add 3, 3, 6
18135 ; PWR5-NEXT: rldimi 9, 9, 32, 0
18136 ; PWR5-NEXT: rldicl 5, 4, 60, 4
18137 ; PWR5-NEXT: and 3, 3, 7
18138 ; PWR5-NEXT: add 4, 4, 5
18139 ; PWR5-NEXT: mulld 3, 3, 9
18140 ; PWR5-NEXT: and 4, 4, 7
18141 ; PWR5-NEXT: rldicl 3, 3, 8, 56
18142 ; PWR5-NEXT: li 5, 25
18143 ; PWR5-NEXT: mulld 4, 4, 9
18144 ; PWR5-NEXT: subc 6, 3, 5
18145 ; PWR5-NEXT: rldicl 4, 4, 8, 56
18146 ; PWR5-NEXT: subfe 3, 3, 3
18147 ; PWR5-NEXT: subc 5, 4, 5
18148 ; PWR5-NEXT: subfe 4, 4, 4
18151 ; PWR6-LABEL: ult_25_v2i64:
18153 ; PWR6-NEXT: lis 5, 21845
18154 ; PWR6-NEXT: lis 6, 13107
18155 ; PWR6-NEXT: ori 5, 5, 21845
18156 ; PWR6-NEXT: rotldi 8, 4, 63
18157 ; PWR6-NEXT: rotldi 9, 3, 63
18158 ; PWR6-NEXT: rldimi 5, 5, 32, 0
18159 ; PWR6-NEXT: and 8, 8, 5
18160 ; PWR6-NEXT: and 5, 9, 5
18161 ; PWR6-NEXT: ori 6, 6, 13107
18162 ; PWR6-NEXT: sub 3, 3, 5
18163 ; PWR6-NEXT: rldimi 6, 6, 32, 0
18164 ; PWR6-NEXT: sub 4, 4, 8
18165 ; PWR6-NEXT: and 8, 3, 6
18166 ; PWR6-NEXT: rotldi 3, 3, 62
18167 ; PWR6-NEXT: and 3, 3, 6
18168 ; PWR6-NEXT: lis 7, 3855
18169 ; PWR6-NEXT: and 5, 4, 6
18170 ; PWR6-NEXT: rotldi 4, 4, 62
18171 ; PWR6-NEXT: add 3, 8, 3
18172 ; PWR6-NEXT: lis 9, 257
18173 ; PWR6-NEXT: ori 7, 7, 3855
18174 ; PWR6-NEXT: and 4, 4, 6
18175 ; PWR6-NEXT: rldicl 6, 3, 60, 4
18176 ; PWR6-NEXT: ori 9, 9, 257
18177 ; PWR6-NEXT: rldimi 7, 7, 32, 0
18178 ; PWR6-NEXT: add 4, 5, 4
18179 ; PWR6-NEXT: add 3, 3, 6
18180 ; PWR6-NEXT: rldimi 9, 9, 32, 0
18181 ; PWR6-NEXT: rldicl 5, 4, 60, 4
18182 ; PWR6-NEXT: and 3, 3, 7
18183 ; PWR6-NEXT: add 4, 4, 5
18184 ; PWR6-NEXT: mulld 3, 3, 9
18185 ; PWR6-NEXT: and 4, 4, 7
18186 ; PWR6-NEXT: rldicl 3, 3, 8, 56
18187 ; PWR6-NEXT: li 5, 25
18188 ; PWR6-NEXT: mulld 4, 4, 9
18189 ; PWR6-NEXT: subc 6, 3, 5
18190 ; PWR6-NEXT: rldicl 4, 4, 8, 56
18191 ; PWR6-NEXT: subfe 3, 3, 3
18192 ; PWR6-NEXT: subc 5, 4, 5
18193 ; PWR6-NEXT: subfe 4, 4, 4
18196 ; PWR7-LABEL: ult_25_v2i64:
18198 ; PWR7-NEXT: addi 3, 1, -32
18199 ; PWR7-NEXT: li 5, 0
18200 ; PWR7-NEXT: li 6, -1
18201 ; PWR7-NEXT: stxvd2x 34, 0, 3
18202 ; PWR7-NEXT: ld 3, -24(1)
18203 ; PWR7-NEXT: ld 4, -32(1)
18204 ; PWR7-NEXT: popcntd 3, 3
18205 ; PWR7-NEXT: popcntd 4, 4
18206 ; PWR7-NEXT: cmpldi 3, 25
18207 ; PWR7-NEXT: isellt 3, 6, 5
18208 ; PWR7-NEXT: cmpldi 4, 25
18209 ; PWR7-NEXT: isellt 4, 6, 5
18210 ; PWR7-NEXT: std 3, -8(1)
18211 ; PWR7-NEXT: addi 3, 1, -16
18212 ; PWR7-NEXT: std 4, -16(1)
18213 ; PWR7-NEXT: lxvd2x 34, 0, 3
18216 ; PWR8-LABEL: ult_25_v2i64:
18218 ; PWR8-NEXT: addis 3, 2, .LCPI147_0@toc@ha
18219 ; PWR8-NEXT: vpopcntd 2, 2
18220 ; PWR8-NEXT: addi 3, 3, .LCPI147_0@toc@l
18221 ; PWR8-NEXT: lxvd2x 35, 0, 3
18222 ; PWR8-NEXT: vcmpgtud 2, 3, 2
18225 ; PWR9-LABEL: ult_25_v2i64:
18227 ; PWR9-NEXT: addis 3, 2, .LCPI147_0@toc@ha
18228 ; PWR9-NEXT: vpopcntd 2, 2
18229 ; PWR9-NEXT: addi 3, 3, .LCPI147_0@toc@l
18230 ; PWR9-NEXT: lxv 35, 0(3)
18231 ; PWR9-NEXT: vcmpgtud 2, 3, 2
18233 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
18234 %3 = icmp ult <2 x i64> %2, <i64 25, i64 25>
18235 %4 = sext <2 x i1> %3 to <2 x i64>
18239 define <2 x i64> @ugt_25_v2i64(<2 x i64> %0) {
18240 ; PWR5-LABEL: ugt_25_v2i64:
18242 ; PWR5-NEXT: lis 5, 21845
18243 ; PWR5-NEXT: lis 6, 13107
18244 ; PWR5-NEXT: ori 5, 5, 21845
18245 ; PWR5-NEXT: rotldi 8, 4, 63
18246 ; PWR5-NEXT: rotldi 9, 3, 63
18247 ; PWR5-NEXT: rldimi 5, 5, 32, 0
18248 ; PWR5-NEXT: and 8, 8, 5
18249 ; PWR5-NEXT: and 5, 9, 5
18250 ; PWR5-NEXT: ori 6, 6, 13107
18251 ; PWR5-NEXT: sub 3, 3, 5
18252 ; PWR5-NEXT: rldimi 6, 6, 32, 0
18253 ; PWR5-NEXT: sub 4, 4, 8
18254 ; PWR5-NEXT: and 8, 3, 6
18255 ; PWR5-NEXT: rotldi 3, 3, 62
18256 ; PWR5-NEXT: and 3, 3, 6
18257 ; PWR5-NEXT: lis 7, 3855
18258 ; PWR5-NEXT: and 5, 4, 6
18259 ; PWR5-NEXT: rotldi 4, 4, 62
18260 ; PWR5-NEXT: add 3, 8, 3
18261 ; PWR5-NEXT: lis 9, 257
18262 ; PWR5-NEXT: ori 7, 7, 3855
18263 ; PWR5-NEXT: and 4, 4, 6
18264 ; PWR5-NEXT: rldicl 6, 3, 60, 4
18265 ; PWR5-NEXT: ori 9, 9, 257
18266 ; PWR5-NEXT: rldimi 7, 7, 32, 0
18267 ; PWR5-NEXT: add 4, 5, 4
18268 ; PWR5-NEXT: add 3, 3, 6
18269 ; PWR5-NEXT: rldimi 9, 9, 32, 0
18270 ; PWR5-NEXT: rldicl 5, 4, 60, 4
18271 ; PWR5-NEXT: and 3, 3, 7
18272 ; PWR5-NEXT: add 4, 4, 5
18273 ; PWR5-NEXT: mulld 3, 3, 9
18274 ; PWR5-NEXT: and 4, 4, 7
18275 ; PWR5-NEXT: rldicl 3, 3, 8, 56
18276 ; PWR5-NEXT: mulld 4, 4, 9
18277 ; PWR5-NEXT: li 5, 25
18278 ; PWR5-NEXT: subfic 3, 3, 25
18279 ; PWR5-NEXT: rldicl 4, 4, 8, 56
18280 ; PWR5-NEXT: subfe 3, 5, 5
18281 ; PWR5-NEXT: subfic 4, 4, 25
18282 ; PWR5-NEXT: subfe 4, 5, 5
18285 ; PWR6-LABEL: ugt_25_v2i64:
18287 ; PWR6-NEXT: lis 5, 21845
18288 ; PWR6-NEXT: lis 6, 13107
18289 ; PWR6-NEXT: ori 5, 5, 21845
18290 ; PWR6-NEXT: rotldi 8, 4, 63
18291 ; PWR6-NEXT: rotldi 9, 3, 63
18292 ; PWR6-NEXT: rldimi 5, 5, 32, 0
18293 ; PWR6-NEXT: and 8, 8, 5
18294 ; PWR6-NEXT: and 5, 9, 5
18295 ; PWR6-NEXT: ori 6, 6, 13107
18296 ; PWR6-NEXT: sub 3, 3, 5
18297 ; PWR6-NEXT: rldimi 6, 6, 32, 0
18298 ; PWR6-NEXT: sub 4, 4, 8
18299 ; PWR6-NEXT: and 8, 3, 6
18300 ; PWR6-NEXT: rotldi 3, 3, 62
18301 ; PWR6-NEXT: and 3, 3, 6
18302 ; PWR6-NEXT: lis 7, 3855
18303 ; PWR6-NEXT: and 5, 4, 6
18304 ; PWR6-NEXT: rotldi 4, 4, 62
18305 ; PWR6-NEXT: add 3, 8, 3
18306 ; PWR6-NEXT: lis 9, 257
18307 ; PWR6-NEXT: ori 7, 7, 3855
18308 ; PWR6-NEXT: and 4, 4, 6
18309 ; PWR6-NEXT: rldicl 6, 3, 60, 4
18310 ; PWR6-NEXT: ori 9, 9, 257
18311 ; PWR6-NEXT: rldimi 7, 7, 32, 0
18312 ; PWR6-NEXT: add 4, 5, 4
18313 ; PWR6-NEXT: add 3, 3, 6
18314 ; PWR6-NEXT: rldimi 9, 9, 32, 0
18315 ; PWR6-NEXT: rldicl 5, 4, 60, 4
18316 ; PWR6-NEXT: and 3, 3, 7
18317 ; PWR6-NEXT: add 4, 4, 5
18318 ; PWR6-NEXT: mulld 3, 3, 9
18319 ; PWR6-NEXT: and 4, 4, 7
18320 ; PWR6-NEXT: rldicl 3, 3, 8, 56
18321 ; PWR6-NEXT: mulld 4, 4, 9
18322 ; PWR6-NEXT: li 5, 25
18323 ; PWR6-NEXT: subfic 3, 3, 25
18324 ; PWR6-NEXT: rldicl 4, 4, 8, 56
18325 ; PWR6-NEXT: subfe 3, 5, 5
18326 ; PWR6-NEXT: subfic 4, 4, 25
18327 ; PWR6-NEXT: subfe 4, 5, 5
18330 ; PWR7-LABEL: ugt_25_v2i64:
18332 ; PWR7-NEXT: addi 3, 1, -32
18333 ; PWR7-NEXT: li 5, 0
18334 ; PWR7-NEXT: li 6, -1
18335 ; PWR7-NEXT: stxvd2x 34, 0, 3
18336 ; PWR7-NEXT: ld 3, -24(1)
18337 ; PWR7-NEXT: ld 4, -32(1)
18338 ; PWR7-NEXT: popcntd 3, 3
18339 ; PWR7-NEXT: popcntd 4, 4
18340 ; PWR7-NEXT: cmpldi 3, 25
18341 ; PWR7-NEXT: iselgt 3, 6, 5
18342 ; PWR7-NEXT: cmpldi 4, 25
18343 ; PWR7-NEXT: iselgt 4, 6, 5
18344 ; PWR7-NEXT: std 3, -8(1)
18345 ; PWR7-NEXT: addi 3, 1, -16
18346 ; PWR7-NEXT: std 4, -16(1)
18347 ; PWR7-NEXT: lxvd2x 34, 0, 3
18350 ; PWR8-LABEL: ugt_25_v2i64:
18352 ; PWR8-NEXT: addis 3, 2, .LCPI148_0@toc@ha
18353 ; PWR8-NEXT: vpopcntd 2, 2
18354 ; PWR8-NEXT: addi 3, 3, .LCPI148_0@toc@l
18355 ; PWR8-NEXT: lxvd2x 35, 0, 3
18356 ; PWR8-NEXT: vcmpgtud 2, 2, 3
18359 ; PWR9-LABEL: ugt_25_v2i64:
18361 ; PWR9-NEXT: addis 3, 2, .LCPI148_0@toc@ha
18362 ; PWR9-NEXT: vpopcntd 2, 2
18363 ; PWR9-NEXT: addi 3, 3, .LCPI148_0@toc@l
18364 ; PWR9-NEXT: lxv 35, 0(3)
18365 ; PWR9-NEXT: vcmpgtud 2, 2, 3
18367 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
18368 %3 = icmp ugt <2 x i64> %2, <i64 25, i64 25>
18369 %4 = sext <2 x i1> %3 to <2 x i64>
18373 define <2 x i64> @ult_26_v2i64(<2 x i64> %0) {
18374 ; PWR5-LABEL: ult_26_v2i64:
18376 ; PWR5-NEXT: lis 5, 21845
18377 ; PWR5-NEXT: lis 6, 13107
18378 ; PWR5-NEXT: ori 5, 5, 21845
18379 ; PWR5-NEXT: rotldi 8, 4, 63
18380 ; PWR5-NEXT: rotldi 9, 3, 63
18381 ; PWR5-NEXT: rldimi 5, 5, 32, 0
18382 ; PWR5-NEXT: and 8, 8, 5
18383 ; PWR5-NEXT: and 5, 9, 5
18384 ; PWR5-NEXT: ori 6, 6, 13107
18385 ; PWR5-NEXT: sub 3, 3, 5
18386 ; PWR5-NEXT: rldimi 6, 6, 32, 0
18387 ; PWR5-NEXT: sub 4, 4, 8
18388 ; PWR5-NEXT: and 8, 3, 6
18389 ; PWR5-NEXT: rotldi 3, 3, 62
18390 ; PWR5-NEXT: and 3, 3, 6
18391 ; PWR5-NEXT: lis 7, 3855
18392 ; PWR5-NEXT: and 5, 4, 6
18393 ; PWR5-NEXT: rotldi 4, 4, 62
18394 ; PWR5-NEXT: add 3, 8, 3
18395 ; PWR5-NEXT: lis 9, 257
18396 ; PWR5-NEXT: ori 7, 7, 3855
18397 ; PWR5-NEXT: and 4, 4, 6
18398 ; PWR5-NEXT: rldicl 6, 3, 60, 4
18399 ; PWR5-NEXT: ori 9, 9, 257
18400 ; PWR5-NEXT: rldimi 7, 7, 32, 0
18401 ; PWR5-NEXT: add 4, 5, 4
18402 ; PWR5-NEXT: add 3, 3, 6
18403 ; PWR5-NEXT: rldimi 9, 9, 32, 0
18404 ; PWR5-NEXT: rldicl 5, 4, 60, 4
18405 ; PWR5-NEXT: and 3, 3, 7
18406 ; PWR5-NEXT: add 4, 4, 5
18407 ; PWR5-NEXT: mulld 3, 3, 9
18408 ; PWR5-NEXT: and 4, 4, 7
18409 ; PWR5-NEXT: rldicl 3, 3, 8, 56
18410 ; PWR5-NEXT: li 5, 26
18411 ; PWR5-NEXT: mulld 4, 4, 9
18412 ; PWR5-NEXT: subc 6, 3, 5
18413 ; PWR5-NEXT: rldicl 4, 4, 8, 56
18414 ; PWR5-NEXT: subfe 3, 3, 3
18415 ; PWR5-NEXT: subc 5, 4, 5
18416 ; PWR5-NEXT: subfe 4, 4, 4
18419 ; PWR6-LABEL: ult_26_v2i64:
18421 ; PWR6-NEXT: lis 5, 21845
18422 ; PWR6-NEXT: lis 6, 13107
18423 ; PWR6-NEXT: ori 5, 5, 21845
18424 ; PWR6-NEXT: rotldi 8, 4, 63
18425 ; PWR6-NEXT: rotldi 9, 3, 63
18426 ; PWR6-NEXT: rldimi 5, 5, 32, 0
18427 ; PWR6-NEXT: and 8, 8, 5
18428 ; PWR6-NEXT: and 5, 9, 5
18429 ; PWR6-NEXT: ori 6, 6, 13107
18430 ; PWR6-NEXT: sub 3, 3, 5
18431 ; PWR6-NEXT: rldimi 6, 6, 32, 0
18432 ; PWR6-NEXT: sub 4, 4, 8
18433 ; PWR6-NEXT: and 8, 3, 6
18434 ; PWR6-NEXT: rotldi 3, 3, 62
18435 ; PWR6-NEXT: and 3, 3, 6
18436 ; PWR6-NEXT: lis 7, 3855
18437 ; PWR6-NEXT: and 5, 4, 6
18438 ; PWR6-NEXT: rotldi 4, 4, 62
18439 ; PWR6-NEXT: add 3, 8, 3
18440 ; PWR6-NEXT: lis 9, 257
18441 ; PWR6-NEXT: ori 7, 7, 3855
18442 ; PWR6-NEXT: and 4, 4, 6
18443 ; PWR6-NEXT: rldicl 6, 3, 60, 4
18444 ; PWR6-NEXT: ori 9, 9, 257
18445 ; PWR6-NEXT: rldimi 7, 7, 32, 0
18446 ; PWR6-NEXT: add 4, 5, 4
18447 ; PWR6-NEXT: add 3, 3, 6
18448 ; PWR6-NEXT: rldimi 9, 9, 32, 0
18449 ; PWR6-NEXT: rldicl 5, 4, 60, 4
18450 ; PWR6-NEXT: and 3, 3, 7
18451 ; PWR6-NEXT: add 4, 4, 5
18452 ; PWR6-NEXT: mulld 3, 3, 9
18453 ; PWR6-NEXT: and 4, 4, 7
18454 ; PWR6-NEXT: rldicl 3, 3, 8, 56
18455 ; PWR6-NEXT: li 5, 26
18456 ; PWR6-NEXT: mulld 4, 4, 9
18457 ; PWR6-NEXT: subc 6, 3, 5
18458 ; PWR6-NEXT: rldicl 4, 4, 8, 56
18459 ; PWR6-NEXT: subfe 3, 3, 3
18460 ; PWR6-NEXT: subc 5, 4, 5
18461 ; PWR6-NEXT: subfe 4, 4, 4
18464 ; PWR7-LABEL: ult_26_v2i64:
18466 ; PWR7-NEXT: addi 3, 1, -32
18467 ; PWR7-NEXT: li 5, 0
18468 ; PWR7-NEXT: li 6, -1
18469 ; PWR7-NEXT: stxvd2x 34, 0, 3
18470 ; PWR7-NEXT: ld 3, -24(1)
18471 ; PWR7-NEXT: ld 4, -32(1)
18472 ; PWR7-NEXT: popcntd 3, 3
18473 ; PWR7-NEXT: popcntd 4, 4
18474 ; PWR7-NEXT: cmpldi 3, 26
18475 ; PWR7-NEXT: isellt 3, 6, 5
18476 ; PWR7-NEXT: cmpldi 4, 26
18477 ; PWR7-NEXT: isellt 4, 6, 5
18478 ; PWR7-NEXT: std 3, -8(1)
18479 ; PWR7-NEXT: addi 3, 1, -16
18480 ; PWR7-NEXT: std 4, -16(1)
18481 ; PWR7-NEXT: lxvd2x 34, 0, 3
18484 ; PWR8-LABEL: ult_26_v2i64:
18486 ; PWR8-NEXT: addis 3, 2, .LCPI149_0@toc@ha
18487 ; PWR8-NEXT: vpopcntd 2, 2
18488 ; PWR8-NEXT: addi 3, 3, .LCPI149_0@toc@l
18489 ; PWR8-NEXT: lxvd2x 35, 0, 3
18490 ; PWR8-NEXT: vcmpgtud 2, 3, 2
18493 ; PWR9-LABEL: ult_26_v2i64:
18495 ; PWR9-NEXT: addis 3, 2, .LCPI149_0@toc@ha
18496 ; PWR9-NEXT: vpopcntd 2, 2
18497 ; PWR9-NEXT: addi 3, 3, .LCPI149_0@toc@l
18498 ; PWR9-NEXT: lxv 35, 0(3)
18499 ; PWR9-NEXT: vcmpgtud 2, 3, 2
18501 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
18502 %3 = icmp ult <2 x i64> %2, <i64 26, i64 26>
18503 %4 = sext <2 x i1> %3 to <2 x i64>
18507 define <2 x i64> @ugt_26_v2i64(<2 x i64> %0) {
18508 ; PWR5-LABEL: ugt_26_v2i64:
18510 ; PWR5-NEXT: lis 5, 21845
18511 ; PWR5-NEXT: lis 6, 13107
18512 ; PWR5-NEXT: ori 5, 5, 21845
18513 ; PWR5-NEXT: rotldi 8, 4, 63
18514 ; PWR5-NEXT: rotldi 9, 3, 63
18515 ; PWR5-NEXT: rldimi 5, 5, 32, 0
18516 ; PWR5-NEXT: and 8, 8, 5
18517 ; PWR5-NEXT: and 5, 9, 5
18518 ; PWR5-NEXT: ori 6, 6, 13107
18519 ; PWR5-NEXT: sub 3, 3, 5
18520 ; PWR5-NEXT: rldimi 6, 6, 32, 0
18521 ; PWR5-NEXT: sub 4, 4, 8
18522 ; PWR5-NEXT: and 8, 3, 6
18523 ; PWR5-NEXT: rotldi 3, 3, 62
18524 ; PWR5-NEXT: and 3, 3, 6
18525 ; PWR5-NEXT: lis 7, 3855
18526 ; PWR5-NEXT: and 5, 4, 6
18527 ; PWR5-NEXT: rotldi 4, 4, 62
18528 ; PWR5-NEXT: add 3, 8, 3
18529 ; PWR5-NEXT: lis 9, 257
18530 ; PWR5-NEXT: ori 7, 7, 3855
18531 ; PWR5-NEXT: and 4, 4, 6
18532 ; PWR5-NEXT: rldicl 6, 3, 60, 4
18533 ; PWR5-NEXT: ori 9, 9, 257
18534 ; PWR5-NEXT: rldimi 7, 7, 32, 0
18535 ; PWR5-NEXT: add 4, 5, 4
18536 ; PWR5-NEXT: add 3, 3, 6
18537 ; PWR5-NEXT: rldimi 9, 9, 32, 0
18538 ; PWR5-NEXT: rldicl 5, 4, 60, 4
18539 ; PWR5-NEXT: and 3, 3, 7
18540 ; PWR5-NEXT: add 4, 4, 5
18541 ; PWR5-NEXT: mulld 3, 3, 9
18542 ; PWR5-NEXT: and 4, 4, 7
18543 ; PWR5-NEXT: rldicl 3, 3, 8, 56
18544 ; PWR5-NEXT: mulld 4, 4, 9
18545 ; PWR5-NEXT: li 5, 26
18546 ; PWR5-NEXT: subfic 3, 3, 26
18547 ; PWR5-NEXT: rldicl 4, 4, 8, 56
18548 ; PWR5-NEXT: subfe 3, 5, 5
18549 ; PWR5-NEXT: subfic 4, 4, 26
18550 ; PWR5-NEXT: subfe 4, 5, 5
18553 ; PWR6-LABEL: ugt_26_v2i64:
18555 ; PWR6-NEXT: lis 5, 21845
18556 ; PWR6-NEXT: lis 6, 13107
18557 ; PWR6-NEXT: ori 5, 5, 21845
18558 ; PWR6-NEXT: rotldi 8, 4, 63
18559 ; PWR6-NEXT: rotldi 9, 3, 63
18560 ; PWR6-NEXT: rldimi 5, 5, 32, 0
18561 ; PWR6-NEXT: and 8, 8, 5
18562 ; PWR6-NEXT: and 5, 9, 5
18563 ; PWR6-NEXT: ori 6, 6, 13107
18564 ; PWR6-NEXT: sub 3, 3, 5
18565 ; PWR6-NEXT: rldimi 6, 6, 32, 0
18566 ; PWR6-NEXT: sub 4, 4, 8
18567 ; PWR6-NEXT: and 8, 3, 6
18568 ; PWR6-NEXT: rotldi 3, 3, 62
18569 ; PWR6-NEXT: and 3, 3, 6
18570 ; PWR6-NEXT: lis 7, 3855
18571 ; PWR6-NEXT: and 5, 4, 6
18572 ; PWR6-NEXT: rotldi 4, 4, 62
18573 ; PWR6-NEXT: add 3, 8, 3
18574 ; PWR6-NEXT: lis 9, 257
18575 ; PWR6-NEXT: ori 7, 7, 3855
18576 ; PWR6-NEXT: and 4, 4, 6
18577 ; PWR6-NEXT: rldicl 6, 3, 60, 4
18578 ; PWR6-NEXT: ori 9, 9, 257
18579 ; PWR6-NEXT: rldimi 7, 7, 32, 0
18580 ; PWR6-NEXT: add 4, 5, 4
18581 ; PWR6-NEXT: add 3, 3, 6
18582 ; PWR6-NEXT: rldimi 9, 9, 32, 0
18583 ; PWR6-NEXT: rldicl 5, 4, 60, 4
18584 ; PWR6-NEXT: and 3, 3, 7
18585 ; PWR6-NEXT: add 4, 4, 5
18586 ; PWR6-NEXT: mulld 3, 3, 9
18587 ; PWR6-NEXT: and 4, 4, 7
18588 ; PWR6-NEXT: rldicl 3, 3, 8, 56
18589 ; PWR6-NEXT: mulld 4, 4, 9
18590 ; PWR6-NEXT: li 5, 26
18591 ; PWR6-NEXT: subfic 3, 3, 26
18592 ; PWR6-NEXT: rldicl 4, 4, 8, 56
18593 ; PWR6-NEXT: subfe 3, 5, 5
18594 ; PWR6-NEXT: subfic 4, 4, 26
18595 ; PWR6-NEXT: subfe 4, 5, 5
18598 ; PWR7-LABEL: ugt_26_v2i64:
18600 ; PWR7-NEXT: addi 3, 1, -32
18601 ; PWR7-NEXT: li 5, 0
18602 ; PWR7-NEXT: li 6, -1
18603 ; PWR7-NEXT: stxvd2x 34, 0, 3
18604 ; PWR7-NEXT: ld 3, -24(1)
18605 ; PWR7-NEXT: ld 4, -32(1)
18606 ; PWR7-NEXT: popcntd 3, 3
18607 ; PWR7-NEXT: popcntd 4, 4
18608 ; PWR7-NEXT: cmpldi 3, 26
18609 ; PWR7-NEXT: iselgt 3, 6, 5
18610 ; PWR7-NEXT: cmpldi 4, 26
18611 ; PWR7-NEXT: iselgt 4, 6, 5
18612 ; PWR7-NEXT: std 3, -8(1)
18613 ; PWR7-NEXT: addi 3, 1, -16
18614 ; PWR7-NEXT: std 4, -16(1)
18615 ; PWR7-NEXT: lxvd2x 34, 0, 3
18618 ; PWR8-LABEL: ugt_26_v2i64:
18620 ; PWR8-NEXT: addis 3, 2, .LCPI150_0@toc@ha
18621 ; PWR8-NEXT: vpopcntd 2, 2
18622 ; PWR8-NEXT: addi 3, 3, .LCPI150_0@toc@l
18623 ; PWR8-NEXT: lxvd2x 35, 0, 3
18624 ; PWR8-NEXT: vcmpgtud 2, 2, 3
18627 ; PWR9-LABEL: ugt_26_v2i64:
18629 ; PWR9-NEXT: addis 3, 2, .LCPI150_0@toc@ha
18630 ; PWR9-NEXT: vpopcntd 2, 2
18631 ; PWR9-NEXT: addi 3, 3, .LCPI150_0@toc@l
18632 ; PWR9-NEXT: lxv 35, 0(3)
18633 ; PWR9-NEXT: vcmpgtud 2, 2, 3
18635 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
18636 %3 = icmp ugt <2 x i64> %2, <i64 26, i64 26>
18637 %4 = sext <2 x i1> %3 to <2 x i64>
18641 define <2 x i64> @ult_27_v2i64(<2 x i64> %0) {
18642 ; PWR5-LABEL: ult_27_v2i64:
18644 ; PWR5-NEXT: lis 5, 21845
18645 ; PWR5-NEXT: lis 6, 13107
18646 ; PWR5-NEXT: ori 5, 5, 21845
18647 ; PWR5-NEXT: rotldi 8, 4, 63
18648 ; PWR5-NEXT: rotldi 9, 3, 63
18649 ; PWR5-NEXT: rldimi 5, 5, 32, 0
18650 ; PWR5-NEXT: and 8, 8, 5
18651 ; PWR5-NEXT: and 5, 9, 5
18652 ; PWR5-NEXT: ori 6, 6, 13107
18653 ; PWR5-NEXT: sub 3, 3, 5
18654 ; PWR5-NEXT: rldimi 6, 6, 32, 0
18655 ; PWR5-NEXT: sub 4, 4, 8
18656 ; PWR5-NEXT: and 8, 3, 6
18657 ; PWR5-NEXT: rotldi 3, 3, 62
18658 ; PWR5-NEXT: and 3, 3, 6
18659 ; PWR5-NEXT: lis 7, 3855
18660 ; PWR5-NEXT: and 5, 4, 6
18661 ; PWR5-NEXT: rotldi 4, 4, 62
18662 ; PWR5-NEXT: add 3, 8, 3
18663 ; PWR5-NEXT: lis 9, 257
18664 ; PWR5-NEXT: ori 7, 7, 3855
18665 ; PWR5-NEXT: and 4, 4, 6
18666 ; PWR5-NEXT: rldicl 6, 3, 60, 4
18667 ; PWR5-NEXT: ori 9, 9, 257
18668 ; PWR5-NEXT: rldimi 7, 7, 32, 0
18669 ; PWR5-NEXT: add 4, 5, 4
18670 ; PWR5-NEXT: add 3, 3, 6
18671 ; PWR5-NEXT: rldimi 9, 9, 32, 0
18672 ; PWR5-NEXT: rldicl 5, 4, 60, 4
18673 ; PWR5-NEXT: and 3, 3, 7
18674 ; PWR5-NEXT: add 4, 4, 5
18675 ; PWR5-NEXT: mulld 3, 3, 9
18676 ; PWR5-NEXT: and 4, 4, 7
18677 ; PWR5-NEXT: rldicl 3, 3, 8, 56
18678 ; PWR5-NEXT: li 5, 27
18679 ; PWR5-NEXT: mulld 4, 4, 9
18680 ; PWR5-NEXT: subc 6, 3, 5
18681 ; PWR5-NEXT: rldicl 4, 4, 8, 56
18682 ; PWR5-NEXT: subfe 3, 3, 3
18683 ; PWR5-NEXT: subc 5, 4, 5
18684 ; PWR5-NEXT: subfe 4, 4, 4
18687 ; PWR6-LABEL: ult_27_v2i64:
18689 ; PWR6-NEXT: lis 5, 21845
18690 ; PWR6-NEXT: lis 6, 13107
18691 ; PWR6-NEXT: ori 5, 5, 21845
18692 ; PWR6-NEXT: rotldi 8, 4, 63
18693 ; PWR6-NEXT: rotldi 9, 3, 63
18694 ; PWR6-NEXT: rldimi 5, 5, 32, 0
18695 ; PWR6-NEXT: and 8, 8, 5
18696 ; PWR6-NEXT: and 5, 9, 5
18697 ; PWR6-NEXT: ori 6, 6, 13107
18698 ; PWR6-NEXT: sub 3, 3, 5
18699 ; PWR6-NEXT: rldimi 6, 6, 32, 0
18700 ; PWR6-NEXT: sub 4, 4, 8
18701 ; PWR6-NEXT: and 8, 3, 6
18702 ; PWR6-NEXT: rotldi 3, 3, 62
18703 ; PWR6-NEXT: and 3, 3, 6
18704 ; PWR6-NEXT: lis 7, 3855
18705 ; PWR6-NEXT: and 5, 4, 6
18706 ; PWR6-NEXT: rotldi 4, 4, 62
18707 ; PWR6-NEXT: add 3, 8, 3
18708 ; PWR6-NEXT: lis 9, 257
18709 ; PWR6-NEXT: ori 7, 7, 3855
18710 ; PWR6-NEXT: and 4, 4, 6
18711 ; PWR6-NEXT: rldicl 6, 3, 60, 4
18712 ; PWR6-NEXT: ori 9, 9, 257
18713 ; PWR6-NEXT: rldimi 7, 7, 32, 0
18714 ; PWR6-NEXT: add 4, 5, 4
18715 ; PWR6-NEXT: add 3, 3, 6
18716 ; PWR6-NEXT: rldimi 9, 9, 32, 0
18717 ; PWR6-NEXT: rldicl 5, 4, 60, 4
18718 ; PWR6-NEXT: and 3, 3, 7
18719 ; PWR6-NEXT: add 4, 4, 5
18720 ; PWR6-NEXT: mulld 3, 3, 9
18721 ; PWR6-NEXT: and 4, 4, 7
18722 ; PWR6-NEXT: rldicl 3, 3, 8, 56
18723 ; PWR6-NEXT: li 5, 27
18724 ; PWR6-NEXT: mulld 4, 4, 9
18725 ; PWR6-NEXT: subc 6, 3, 5
18726 ; PWR6-NEXT: rldicl 4, 4, 8, 56
18727 ; PWR6-NEXT: subfe 3, 3, 3
18728 ; PWR6-NEXT: subc 5, 4, 5
18729 ; PWR6-NEXT: subfe 4, 4, 4
18732 ; PWR7-LABEL: ult_27_v2i64:
18734 ; PWR7-NEXT: addi 3, 1, -32
18735 ; PWR7-NEXT: li 5, 0
18736 ; PWR7-NEXT: li 6, -1
18737 ; PWR7-NEXT: stxvd2x 34, 0, 3
18738 ; PWR7-NEXT: ld 3, -24(1)
18739 ; PWR7-NEXT: ld 4, -32(1)
18740 ; PWR7-NEXT: popcntd 3, 3
18741 ; PWR7-NEXT: popcntd 4, 4
18742 ; PWR7-NEXT: cmpldi 3, 27
18743 ; PWR7-NEXT: isellt 3, 6, 5
18744 ; PWR7-NEXT: cmpldi 4, 27
18745 ; PWR7-NEXT: isellt 4, 6, 5
18746 ; PWR7-NEXT: std 3, -8(1)
18747 ; PWR7-NEXT: addi 3, 1, -16
18748 ; PWR7-NEXT: std 4, -16(1)
18749 ; PWR7-NEXT: lxvd2x 34, 0, 3
18752 ; PWR8-LABEL: ult_27_v2i64:
18754 ; PWR8-NEXT: addis 3, 2, .LCPI151_0@toc@ha
18755 ; PWR8-NEXT: vpopcntd 2, 2
18756 ; PWR8-NEXT: addi 3, 3, .LCPI151_0@toc@l
18757 ; PWR8-NEXT: lxvd2x 35, 0, 3
18758 ; PWR8-NEXT: vcmpgtud 2, 3, 2
18761 ; PWR9-LABEL: ult_27_v2i64:
18763 ; PWR9-NEXT: addis 3, 2, .LCPI151_0@toc@ha
18764 ; PWR9-NEXT: vpopcntd 2, 2
18765 ; PWR9-NEXT: addi 3, 3, .LCPI151_0@toc@l
18766 ; PWR9-NEXT: lxv 35, 0(3)
18767 ; PWR9-NEXT: vcmpgtud 2, 3, 2
18769 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
18770 %3 = icmp ult <2 x i64> %2, <i64 27, i64 27>
18771 %4 = sext <2 x i1> %3 to <2 x i64>
18775 define <2 x i64> @ugt_27_v2i64(<2 x i64> %0) {
18776 ; PWR5-LABEL: ugt_27_v2i64:
18778 ; PWR5-NEXT: lis 5, 21845
18779 ; PWR5-NEXT: lis 6, 13107
18780 ; PWR5-NEXT: ori 5, 5, 21845
18781 ; PWR5-NEXT: rotldi 8, 4, 63
18782 ; PWR5-NEXT: rotldi 9, 3, 63
18783 ; PWR5-NEXT: rldimi 5, 5, 32, 0
18784 ; PWR5-NEXT: and 8, 8, 5
18785 ; PWR5-NEXT: and 5, 9, 5
18786 ; PWR5-NEXT: ori 6, 6, 13107
18787 ; PWR5-NEXT: sub 3, 3, 5
18788 ; PWR5-NEXT: rldimi 6, 6, 32, 0
18789 ; PWR5-NEXT: sub 4, 4, 8
18790 ; PWR5-NEXT: and 8, 3, 6
18791 ; PWR5-NEXT: rotldi 3, 3, 62
18792 ; PWR5-NEXT: and 3, 3, 6
18793 ; PWR5-NEXT: lis 7, 3855
18794 ; PWR5-NEXT: and 5, 4, 6
18795 ; PWR5-NEXT: rotldi 4, 4, 62
18796 ; PWR5-NEXT: add 3, 8, 3
18797 ; PWR5-NEXT: lis 9, 257
18798 ; PWR5-NEXT: ori 7, 7, 3855
18799 ; PWR5-NEXT: and 4, 4, 6
18800 ; PWR5-NEXT: rldicl 6, 3, 60, 4
18801 ; PWR5-NEXT: ori 9, 9, 257
18802 ; PWR5-NEXT: rldimi 7, 7, 32, 0
18803 ; PWR5-NEXT: add 4, 5, 4
18804 ; PWR5-NEXT: add 3, 3, 6
18805 ; PWR5-NEXT: rldimi 9, 9, 32, 0
18806 ; PWR5-NEXT: rldicl 5, 4, 60, 4
18807 ; PWR5-NEXT: and 3, 3, 7
18808 ; PWR5-NEXT: add 4, 4, 5
18809 ; PWR5-NEXT: mulld 3, 3, 9
18810 ; PWR5-NEXT: and 4, 4, 7
18811 ; PWR5-NEXT: rldicl 3, 3, 8, 56
18812 ; PWR5-NEXT: mulld 4, 4, 9
18813 ; PWR5-NEXT: li 5, 27
18814 ; PWR5-NEXT: subfic 3, 3, 27
18815 ; PWR5-NEXT: rldicl 4, 4, 8, 56
18816 ; PWR5-NEXT: subfe 3, 5, 5
18817 ; PWR5-NEXT: subfic 4, 4, 27
18818 ; PWR5-NEXT: subfe 4, 5, 5
18821 ; PWR6-LABEL: ugt_27_v2i64:
18823 ; PWR6-NEXT: lis 5, 21845
18824 ; PWR6-NEXT: lis 6, 13107
18825 ; PWR6-NEXT: ori 5, 5, 21845
18826 ; PWR6-NEXT: rotldi 8, 4, 63
18827 ; PWR6-NEXT: rotldi 9, 3, 63
18828 ; PWR6-NEXT: rldimi 5, 5, 32, 0
18829 ; PWR6-NEXT: and 8, 8, 5
18830 ; PWR6-NEXT: and 5, 9, 5
18831 ; PWR6-NEXT: ori 6, 6, 13107
18832 ; PWR6-NEXT: sub 3, 3, 5
18833 ; PWR6-NEXT: rldimi 6, 6, 32, 0
18834 ; PWR6-NEXT: sub 4, 4, 8
18835 ; PWR6-NEXT: and 8, 3, 6
18836 ; PWR6-NEXT: rotldi 3, 3, 62
18837 ; PWR6-NEXT: and 3, 3, 6
18838 ; PWR6-NEXT: lis 7, 3855
18839 ; PWR6-NEXT: and 5, 4, 6
18840 ; PWR6-NEXT: rotldi 4, 4, 62
18841 ; PWR6-NEXT: add 3, 8, 3
18842 ; PWR6-NEXT: lis 9, 257
18843 ; PWR6-NEXT: ori 7, 7, 3855
18844 ; PWR6-NEXT: and 4, 4, 6
18845 ; PWR6-NEXT: rldicl 6, 3, 60, 4
18846 ; PWR6-NEXT: ori 9, 9, 257
18847 ; PWR6-NEXT: rldimi 7, 7, 32, 0
18848 ; PWR6-NEXT: add 4, 5, 4
18849 ; PWR6-NEXT: add 3, 3, 6
18850 ; PWR6-NEXT: rldimi 9, 9, 32, 0
18851 ; PWR6-NEXT: rldicl 5, 4, 60, 4
18852 ; PWR6-NEXT: and 3, 3, 7
18853 ; PWR6-NEXT: add 4, 4, 5
18854 ; PWR6-NEXT: mulld 3, 3, 9
18855 ; PWR6-NEXT: and 4, 4, 7
18856 ; PWR6-NEXT: rldicl 3, 3, 8, 56
18857 ; PWR6-NEXT: mulld 4, 4, 9
18858 ; PWR6-NEXT: li 5, 27
18859 ; PWR6-NEXT: subfic 3, 3, 27
18860 ; PWR6-NEXT: rldicl 4, 4, 8, 56
18861 ; PWR6-NEXT: subfe 3, 5, 5
18862 ; PWR6-NEXT: subfic 4, 4, 27
18863 ; PWR6-NEXT: subfe 4, 5, 5
18866 ; PWR7-LABEL: ugt_27_v2i64:
18868 ; PWR7-NEXT: addi 3, 1, -32
18869 ; PWR7-NEXT: li 5, 0
18870 ; PWR7-NEXT: li 6, -1
18871 ; PWR7-NEXT: stxvd2x 34, 0, 3
18872 ; PWR7-NEXT: ld 3, -24(1)
18873 ; PWR7-NEXT: ld 4, -32(1)
18874 ; PWR7-NEXT: popcntd 3, 3
18875 ; PWR7-NEXT: popcntd 4, 4
18876 ; PWR7-NEXT: cmpldi 3, 27
18877 ; PWR7-NEXT: iselgt 3, 6, 5
18878 ; PWR7-NEXT: cmpldi 4, 27
18879 ; PWR7-NEXT: iselgt 4, 6, 5
18880 ; PWR7-NEXT: std 3, -8(1)
18881 ; PWR7-NEXT: addi 3, 1, -16
18882 ; PWR7-NEXT: std 4, -16(1)
18883 ; PWR7-NEXT: lxvd2x 34, 0, 3
18886 ; PWR8-LABEL: ugt_27_v2i64:
18888 ; PWR8-NEXT: addis 3, 2, .LCPI152_0@toc@ha
18889 ; PWR8-NEXT: vpopcntd 2, 2
18890 ; PWR8-NEXT: addi 3, 3, .LCPI152_0@toc@l
18891 ; PWR8-NEXT: lxvd2x 35, 0, 3
18892 ; PWR8-NEXT: vcmpgtud 2, 2, 3
18895 ; PWR9-LABEL: ugt_27_v2i64:
18897 ; PWR9-NEXT: addis 3, 2, .LCPI152_0@toc@ha
18898 ; PWR9-NEXT: vpopcntd 2, 2
18899 ; PWR9-NEXT: addi 3, 3, .LCPI152_0@toc@l
18900 ; PWR9-NEXT: lxv 35, 0(3)
18901 ; PWR9-NEXT: vcmpgtud 2, 2, 3
18903 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
18904 %3 = icmp ugt <2 x i64> %2, <i64 27, i64 27>
18905 %4 = sext <2 x i1> %3 to <2 x i64>
18909 define <2 x i64> @ult_28_v2i64(<2 x i64> %0) {
18910 ; PWR5-LABEL: ult_28_v2i64:
18912 ; PWR5-NEXT: lis 5, 21845
18913 ; PWR5-NEXT: lis 6, 13107
18914 ; PWR5-NEXT: ori 5, 5, 21845
18915 ; PWR5-NEXT: rotldi 8, 4, 63
18916 ; PWR5-NEXT: rotldi 9, 3, 63
18917 ; PWR5-NEXT: rldimi 5, 5, 32, 0
18918 ; PWR5-NEXT: and 8, 8, 5
18919 ; PWR5-NEXT: and 5, 9, 5
18920 ; PWR5-NEXT: ori 6, 6, 13107
18921 ; PWR5-NEXT: sub 3, 3, 5
18922 ; PWR5-NEXT: rldimi 6, 6, 32, 0
18923 ; PWR5-NEXT: sub 4, 4, 8
18924 ; PWR5-NEXT: and 8, 3, 6
18925 ; PWR5-NEXT: rotldi 3, 3, 62
18926 ; PWR5-NEXT: and 3, 3, 6
18927 ; PWR5-NEXT: lis 7, 3855
18928 ; PWR5-NEXT: and 5, 4, 6
18929 ; PWR5-NEXT: rotldi 4, 4, 62
18930 ; PWR5-NEXT: add 3, 8, 3
18931 ; PWR5-NEXT: lis 9, 257
18932 ; PWR5-NEXT: ori 7, 7, 3855
18933 ; PWR5-NEXT: and 4, 4, 6
18934 ; PWR5-NEXT: rldicl 6, 3, 60, 4
18935 ; PWR5-NEXT: ori 9, 9, 257
18936 ; PWR5-NEXT: rldimi 7, 7, 32, 0
18937 ; PWR5-NEXT: add 4, 5, 4
18938 ; PWR5-NEXT: add 3, 3, 6
18939 ; PWR5-NEXT: rldimi 9, 9, 32, 0
18940 ; PWR5-NEXT: rldicl 5, 4, 60, 4
18941 ; PWR5-NEXT: and 3, 3, 7
18942 ; PWR5-NEXT: add 4, 4, 5
18943 ; PWR5-NEXT: mulld 3, 3, 9
18944 ; PWR5-NEXT: and 4, 4, 7
18945 ; PWR5-NEXT: rldicl 3, 3, 8, 56
18946 ; PWR5-NEXT: li 5, 28
18947 ; PWR5-NEXT: mulld 4, 4, 9
18948 ; PWR5-NEXT: subc 6, 3, 5
18949 ; PWR5-NEXT: rldicl 4, 4, 8, 56
18950 ; PWR5-NEXT: subfe 3, 3, 3
18951 ; PWR5-NEXT: subc 5, 4, 5
18952 ; PWR5-NEXT: subfe 4, 4, 4
18955 ; PWR6-LABEL: ult_28_v2i64:
18957 ; PWR6-NEXT: lis 5, 21845
18958 ; PWR6-NEXT: lis 6, 13107
18959 ; PWR6-NEXT: ori 5, 5, 21845
18960 ; PWR6-NEXT: rotldi 8, 4, 63
18961 ; PWR6-NEXT: rotldi 9, 3, 63
18962 ; PWR6-NEXT: rldimi 5, 5, 32, 0
18963 ; PWR6-NEXT: and 8, 8, 5
18964 ; PWR6-NEXT: and 5, 9, 5
18965 ; PWR6-NEXT: ori 6, 6, 13107
18966 ; PWR6-NEXT: sub 3, 3, 5
18967 ; PWR6-NEXT: rldimi 6, 6, 32, 0
18968 ; PWR6-NEXT: sub 4, 4, 8
18969 ; PWR6-NEXT: and 8, 3, 6
18970 ; PWR6-NEXT: rotldi 3, 3, 62
18971 ; PWR6-NEXT: and 3, 3, 6
18972 ; PWR6-NEXT: lis 7, 3855
18973 ; PWR6-NEXT: and 5, 4, 6
18974 ; PWR6-NEXT: rotldi 4, 4, 62
18975 ; PWR6-NEXT: add 3, 8, 3
18976 ; PWR6-NEXT: lis 9, 257
18977 ; PWR6-NEXT: ori 7, 7, 3855
18978 ; PWR6-NEXT: and 4, 4, 6
18979 ; PWR6-NEXT: rldicl 6, 3, 60, 4
18980 ; PWR6-NEXT: ori 9, 9, 257
18981 ; PWR6-NEXT: rldimi 7, 7, 32, 0
18982 ; PWR6-NEXT: add 4, 5, 4
18983 ; PWR6-NEXT: add 3, 3, 6
18984 ; PWR6-NEXT: rldimi 9, 9, 32, 0
18985 ; PWR6-NEXT: rldicl 5, 4, 60, 4
18986 ; PWR6-NEXT: and 3, 3, 7
18987 ; PWR6-NEXT: add 4, 4, 5
18988 ; PWR6-NEXT: mulld 3, 3, 9
18989 ; PWR6-NEXT: and 4, 4, 7
18990 ; PWR6-NEXT: rldicl 3, 3, 8, 56
18991 ; PWR6-NEXT: li 5, 28
18992 ; PWR6-NEXT: mulld 4, 4, 9
18993 ; PWR6-NEXT: subc 6, 3, 5
18994 ; PWR6-NEXT: rldicl 4, 4, 8, 56
18995 ; PWR6-NEXT: subfe 3, 3, 3
18996 ; PWR6-NEXT: subc 5, 4, 5
18997 ; PWR6-NEXT: subfe 4, 4, 4
19000 ; PWR7-LABEL: ult_28_v2i64:
19002 ; PWR7-NEXT: addi 3, 1, -32
19003 ; PWR7-NEXT: li 5, 0
19004 ; PWR7-NEXT: li 6, -1
19005 ; PWR7-NEXT: stxvd2x 34, 0, 3
19006 ; PWR7-NEXT: ld 3, -24(1)
19007 ; PWR7-NEXT: ld 4, -32(1)
19008 ; PWR7-NEXT: popcntd 3, 3
19009 ; PWR7-NEXT: popcntd 4, 4
19010 ; PWR7-NEXT: cmpldi 3, 28
19011 ; PWR7-NEXT: isellt 3, 6, 5
19012 ; PWR7-NEXT: cmpldi 4, 28
19013 ; PWR7-NEXT: isellt 4, 6, 5
19014 ; PWR7-NEXT: std 3, -8(1)
19015 ; PWR7-NEXT: addi 3, 1, -16
19016 ; PWR7-NEXT: std 4, -16(1)
19017 ; PWR7-NEXT: lxvd2x 34, 0, 3
19020 ; PWR8-LABEL: ult_28_v2i64:
19022 ; PWR8-NEXT: addis 3, 2, .LCPI153_0@toc@ha
19023 ; PWR8-NEXT: vpopcntd 2, 2
19024 ; PWR8-NEXT: addi 3, 3, .LCPI153_0@toc@l
19025 ; PWR8-NEXT: lxvd2x 35, 0, 3
19026 ; PWR8-NEXT: vcmpgtud 2, 3, 2
19029 ; PWR9-LABEL: ult_28_v2i64:
19031 ; PWR9-NEXT: addis 3, 2, .LCPI153_0@toc@ha
19032 ; PWR9-NEXT: vpopcntd 2, 2
19033 ; PWR9-NEXT: addi 3, 3, .LCPI153_0@toc@l
19034 ; PWR9-NEXT: lxv 35, 0(3)
19035 ; PWR9-NEXT: vcmpgtud 2, 3, 2
19037 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
19038 %3 = icmp ult <2 x i64> %2, <i64 28, i64 28>
19039 %4 = sext <2 x i1> %3 to <2 x i64>
19043 define <2 x i64> @ugt_28_v2i64(<2 x i64> %0) {
19044 ; PWR5-LABEL: ugt_28_v2i64:
19046 ; PWR5-NEXT: lis 5, 21845
19047 ; PWR5-NEXT: lis 6, 13107
19048 ; PWR5-NEXT: ori 5, 5, 21845
19049 ; PWR5-NEXT: rotldi 8, 4, 63
19050 ; PWR5-NEXT: rotldi 9, 3, 63
19051 ; PWR5-NEXT: rldimi 5, 5, 32, 0
19052 ; PWR5-NEXT: and 8, 8, 5
19053 ; PWR5-NEXT: and 5, 9, 5
19054 ; PWR5-NEXT: ori 6, 6, 13107
19055 ; PWR5-NEXT: sub 3, 3, 5
19056 ; PWR5-NEXT: rldimi 6, 6, 32, 0
19057 ; PWR5-NEXT: sub 4, 4, 8
19058 ; PWR5-NEXT: and 8, 3, 6
19059 ; PWR5-NEXT: rotldi 3, 3, 62
19060 ; PWR5-NEXT: and 3, 3, 6
19061 ; PWR5-NEXT: lis 7, 3855
19062 ; PWR5-NEXT: and 5, 4, 6
19063 ; PWR5-NEXT: rotldi 4, 4, 62
19064 ; PWR5-NEXT: add 3, 8, 3
19065 ; PWR5-NEXT: lis 9, 257
19066 ; PWR5-NEXT: ori 7, 7, 3855
19067 ; PWR5-NEXT: and 4, 4, 6
19068 ; PWR5-NEXT: rldicl 6, 3, 60, 4
19069 ; PWR5-NEXT: ori 9, 9, 257
19070 ; PWR5-NEXT: rldimi 7, 7, 32, 0
19071 ; PWR5-NEXT: add 4, 5, 4
19072 ; PWR5-NEXT: add 3, 3, 6
19073 ; PWR5-NEXT: rldimi 9, 9, 32, 0
19074 ; PWR5-NEXT: rldicl 5, 4, 60, 4
19075 ; PWR5-NEXT: and 3, 3, 7
19076 ; PWR5-NEXT: add 4, 4, 5
19077 ; PWR5-NEXT: mulld 3, 3, 9
19078 ; PWR5-NEXT: and 4, 4, 7
19079 ; PWR5-NEXT: rldicl 3, 3, 8, 56
19080 ; PWR5-NEXT: mulld 4, 4, 9
19081 ; PWR5-NEXT: li 5, 28
19082 ; PWR5-NEXT: subfic 3, 3, 28
19083 ; PWR5-NEXT: rldicl 4, 4, 8, 56
19084 ; PWR5-NEXT: subfe 3, 5, 5
19085 ; PWR5-NEXT: subfic 4, 4, 28
19086 ; PWR5-NEXT: subfe 4, 5, 5
19089 ; PWR6-LABEL: ugt_28_v2i64:
19091 ; PWR6-NEXT: lis 5, 21845
19092 ; PWR6-NEXT: lis 6, 13107
19093 ; PWR6-NEXT: ori 5, 5, 21845
19094 ; PWR6-NEXT: rotldi 8, 4, 63
19095 ; PWR6-NEXT: rotldi 9, 3, 63
19096 ; PWR6-NEXT: rldimi 5, 5, 32, 0
19097 ; PWR6-NEXT: and 8, 8, 5
19098 ; PWR6-NEXT: and 5, 9, 5
19099 ; PWR6-NEXT: ori 6, 6, 13107
19100 ; PWR6-NEXT: sub 3, 3, 5
19101 ; PWR6-NEXT: rldimi 6, 6, 32, 0
19102 ; PWR6-NEXT: sub 4, 4, 8
19103 ; PWR6-NEXT: and 8, 3, 6
19104 ; PWR6-NEXT: rotldi 3, 3, 62
19105 ; PWR6-NEXT: and 3, 3, 6
19106 ; PWR6-NEXT: lis 7, 3855
19107 ; PWR6-NEXT: and 5, 4, 6
19108 ; PWR6-NEXT: rotldi 4, 4, 62
19109 ; PWR6-NEXT: add 3, 8, 3
19110 ; PWR6-NEXT: lis 9, 257
19111 ; PWR6-NEXT: ori 7, 7, 3855
19112 ; PWR6-NEXT: and 4, 4, 6
19113 ; PWR6-NEXT: rldicl 6, 3, 60, 4
19114 ; PWR6-NEXT: ori 9, 9, 257
19115 ; PWR6-NEXT: rldimi 7, 7, 32, 0
19116 ; PWR6-NEXT: add 4, 5, 4
19117 ; PWR6-NEXT: add 3, 3, 6
19118 ; PWR6-NEXT: rldimi 9, 9, 32, 0
19119 ; PWR6-NEXT: rldicl 5, 4, 60, 4
19120 ; PWR6-NEXT: and 3, 3, 7
19121 ; PWR6-NEXT: add 4, 4, 5
19122 ; PWR6-NEXT: mulld 3, 3, 9
19123 ; PWR6-NEXT: and 4, 4, 7
19124 ; PWR6-NEXT: rldicl 3, 3, 8, 56
19125 ; PWR6-NEXT: mulld 4, 4, 9
19126 ; PWR6-NEXT: li 5, 28
19127 ; PWR6-NEXT: subfic 3, 3, 28
19128 ; PWR6-NEXT: rldicl 4, 4, 8, 56
19129 ; PWR6-NEXT: subfe 3, 5, 5
19130 ; PWR6-NEXT: subfic 4, 4, 28
19131 ; PWR6-NEXT: subfe 4, 5, 5
19134 ; PWR7-LABEL: ugt_28_v2i64:
19136 ; PWR7-NEXT: addi 3, 1, -32
19137 ; PWR7-NEXT: li 5, 0
19138 ; PWR7-NEXT: li 6, -1
19139 ; PWR7-NEXT: stxvd2x 34, 0, 3
19140 ; PWR7-NEXT: ld 3, -24(1)
19141 ; PWR7-NEXT: ld 4, -32(1)
19142 ; PWR7-NEXT: popcntd 3, 3
19143 ; PWR7-NEXT: popcntd 4, 4
19144 ; PWR7-NEXT: cmpldi 3, 28
19145 ; PWR7-NEXT: iselgt 3, 6, 5
19146 ; PWR7-NEXT: cmpldi 4, 28
19147 ; PWR7-NEXT: iselgt 4, 6, 5
19148 ; PWR7-NEXT: std 3, -8(1)
19149 ; PWR7-NEXT: addi 3, 1, -16
19150 ; PWR7-NEXT: std 4, -16(1)
19151 ; PWR7-NEXT: lxvd2x 34, 0, 3
19154 ; PWR8-LABEL: ugt_28_v2i64:
19156 ; PWR8-NEXT: addis 3, 2, .LCPI154_0@toc@ha
19157 ; PWR8-NEXT: vpopcntd 2, 2
19158 ; PWR8-NEXT: addi 3, 3, .LCPI154_0@toc@l
19159 ; PWR8-NEXT: lxvd2x 35, 0, 3
19160 ; PWR8-NEXT: vcmpgtud 2, 2, 3
19163 ; PWR9-LABEL: ugt_28_v2i64:
19165 ; PWR9-NEXT: addis 3, 2, .LCPI154_0@toc@ha
19166 ; PWR9-NEXT: vpopcntd 2, 2
19167 ; PWR9-NEXT: addi 3, 3, .LCPI154_0@toc@l
19168 ; PWR9-NEXT: lxv 35, 0(3)
19169 ; PWR9-NEXT: vcmpgtud 2, 2, 3
19171 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
19172 %3 = icmp ugt <2 x i64> %2, <i64 28, i64 28>
19173 %4 = sext <2 x i1> %3 to <2 x i64>
19177 define <2 x i64> @ult_29_v2i64(<2 x i64> %0) {
19178 ; PWR5-LABEL: ult_29_v2i64:
19180 ; PWR5-NEXT: lis 5, 21845
19181 ; PWR5-NEXT: lis 6, 13107
19182 ; PWR5-NEXT: ori 5, 5, 21845
19183 ; PWR5-NEXT: rotldi 8, 4, 63
19184 ; PWR5-NEXT: rotldi 9, 3, 63
19185 ; PWR5-NEXT: rldimi 5, 5, 32, 0
19186 ; PWR5-NEXT: and 8, 8, 5
19187 ; PWR5-NEXT: and 5, 9, 5
19188 ; PWR5-NEXT: ori 6, 6, 13107
19189 ; PWR5-NEXT: sub 3, 3, 5
19190 ; PWR5-NEXT: rldimi 6, 6, 32, 0
19191 ; PWR5-NEXT: sub 4, 4, 8
19192 ; PWR5-NEXT: and 8, 3, 6
19193 ; PWR5-NEXT: rotldi 3, 3, 62
19194 ; PWR5-NEXT: and 3, 3, 6
19195 ; PWR5-NEXT: lis 7, 3855
19196 ; PWR5-NEXT: and 5, 4, 6
19197 ; PWR5-NEXT: rotldi 4, 4, 62
19198 ; PWR5-NEXT: add 3, 8, 3
19199 ; PWR5-NEXT: lis 9, 257
19200 ; PWR5-NEXT: ori 7, 7, 3855
19201 ; PWR5-NEXT: and 4, 4, 6
19202 ; PWR5-NEXT: rldicl 6, 3, 60, 4
19203 ; PWR5-NEXT: ori 9, 9, 257
19204 ; PWR5-NEXT: rldimi 7, 7, 32, 0
19205 ; PWR5-NEXT: add 4, 5, 4
19206 ; PWR5-NEXT: add 3, 3, 6
19207 ; PWR5-NEXT: rldimi 9, 9, 32, 0
19208 ; PWR5-NEXT: rldicl 5, 4, 60, 4
19209 ; PWR5-NEXT: and 3, 3, 7
19210 ; PWR5-NEXT: add 4, 4, 5
19211 ; PWR5-NEXT: mulld 3, 3, 9
19212 ; PWR5-NEXT: and 4, 4, 7
19213 ; PWR5-NEXT: rldicl 3, 3, 8, 56
19214 ; PWR5-NEXT: li 5, 29
19215 ; PWR5-NEXT: mulld 4, 4, 9
19216 ; PWR5-NEXT: subc 6, 3, 5
19217 ; PWR5-NEXT: rldicl 4, 4, 8, 56
19218 ; PWR5-NEXT: subfe 3, 3, 3
19219 ; PWR5-NEXT: subc 5, 4, 5
19220 ; PWR5-NEXT: subfe 4, 4, 4
19223 ; PWR6-LABEL: ult_29_v2i64:
19225 ; PWR6-NEXT: lis 5, 21845
19226 ; PWR6-NEXT: lis 6, 13107
19227 ; PWR6-NEXT: ori 5, 5, 21845
19228 ; PWR6-NEXT: rotldi 8, 4, 63
19229 ; PWR6-NEXT: rotldi 9, 3, 63
19230 ; PWR6-NEXT: rldimi 5, 5, 32, 0
19231 ; PWR6-NEXT: and 8, 8, 5
19232 ; PWR6-NEXT: and 5, 9, 5
19233 ; PWR6-NEXT: ori 6, 6, 13107
19234 ; PWR6-NEXT: sub 3, 3, 5
19235 ; PWR6-NEXT: rldimi 6, 6, 32, 0
19236 ; PWR6-NEXT: sub 4, 4, 8
19237 ; PWR6-NEXT: and 8, 3, 6
19238 ; PWR6-NEXT: rotldi 3, 3, 62
19239 ; PWR6-NEXT: and 3, 3, 6
19240 ; PWR6-NEXT: lis 7, 3855
19241 ; PWR6-NEXT: and 5, 4, 6
19242 ; PWR6-NEXT: rotldi 4, 4, 62
19243 ; PWR6-NEXT: add 3, 8, 3
19244 ; PWR6-NEXT: lis 9, 257
19245 ; PWR6-NEXT: ori 7, 7, 3855
19246 ; PWR6-NEXT: and 4, 4, 6
19247 ; PWR6-NEXT: rldicl 6, 3, 60, 4
19248 ; PWR6-NEXT: ori 9, 9, 257
19249 ; PWR6-NEXT: rldimi 7, 7, 32, 0
19250 ; PWR6-NEXT: add 4, 5, 4
19251 ; PWR6-NEXT: add 3, 3, 6
19252 ; PWR6-NEXT: rldimi 9, 9, 32, 0
19253 ; PWR6-NEXT: rldicl 5, 4, 60, 4
19254 ; PWR6-NEXT: and 3, 3, 7
19255 ; PWR6-NEXT: add 4, 4, 5
19256 ; PWR6-NEXT: mulld 3, 3, 9
19257 ; PWR6-NEXT: and 4, 4, 7
19258 ; PWR6-NEXT: rldicl 3, 3, 8, 56
19259 ; PWR6-NEXT: li 5, 29
19260 ; PWR6-NEXT: mulld 4, 4, 9
19261 ; PWR6-NEXT: subc 6, 3, 5
19262 ; PWR6-NEXT: rldicl 4, 4, 8, 56
19263 ; PWR6-NEXT: subfe 3, 3, 3
19264 ; PWR6-NEXT: subc 5, 4, 5
19265 ; PWR6-NEXT: subfe 4, 4, 4
19268 ; PWR7-LABEL: ult_29_v2i64:
19270 ; PWR7-NEXT: addi 3, 1, -32
19271 ; PWR7-NEXT: li 5, 0
19272 ; PWR7-NEXT: li 6, -1
19273 ; PWR7-NEXT: stxvd2x 34, 0, 3
19274 ; PWR7-NEXT: ld 3, -24(1)
19275 ; PWR7-NEXT: ld 4, -32(1)
19276 ; PWR7-NEXT: popcntd 3, 3
19277 ; PWR7-NEXT: popcntd 4, 4
19278 ; PWR7-NEXT: cmpldi 3, 29
19279 ; PWR7-NEXT: isellt 3, 6, 5
19280 ; PWR7-NEXT: cmpldi 4, 29
19281 ; PWR7-NEXT: isellt 4, 6, 5
19282 ; PWR7-NEXT: std 3, -8(1)
19283 ; PWR7-NEXT: addi 3, 1, -16
19284 ; PWR7-NEXT: std 4, -16(1)
19285 ; PWR7-NEXT: lxvd2x 34, 0, 3
19288 ; PWR8-LABEL: ult_29_v2i64:
19290 ; PWR8-NEXT: addis 3, 2, .LCPI155_0@toc@ha
19291 ; PWR8-NEXT: vpopcntd 2, 2
19292 ; PWR8-NEXT: addi 3, 3, .LCPI155_0@toc@l
19293 ; PWR8-NEXT: lxvd2x 35, 0, 3
19294 ; PWR8-NEXT: vcmpgtud 2, 3, 2
19297 ; PWR9-LABEL: ult_29_v2i64:
19299 ; PWR9-NEXT: addis 3, 2, .LCPI155_0@toc@ha
19300 ; PWR9-NEXT: vpopcntd 2, 2
19301 ; PWR9-NEXT: addi 3, 3, .LCPI155_0@toc@l
19302 ; PWR9-NEXT: lxv 35, 0(3)
19303 ; PWR9-NEXT: vcmpgtud 2, 3, 2
19305 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
19306 %3 = icmp ult <2 x i64> %2, <i64 29, i64 29>
19307 %4 = sext <2 x i1> %3 to <2 x i64>
19311 define <2 x i64> @ugt_29_v2i64(<2 x i64> %0) {
19312 ; PWR5-LABEL: ugt_29_v2i64:
19314 ; PWR5-NEXT: lis 5, 21845
19315 ; PWR5-NEXT: lis 6, 13107
19316 ; PWR5-NEXT: ori 5, 5, 21845
19317 ; PWR5-NEXT: rotldi 8, 4, 63
19318 ; PWR5-NEXT: rotldi 9, 3, 63
19319 ; PWR5-NEXT: rldimi 5, 5, 32, 0
19320 ; PWR5-NEXT: and 8, 8, 5
19321 ; PWR5-NEXT: and 5, 9, 5
19322 ; PWR5-NEXT: ori 6, 6, 13107
19323 ; PWR5-NEXT: sub 3, 3, 5
19324 ; PWR5-NEXT: rldimi 6, 6, 32, 0
19325 ; PWR5-NEXT: sub 4, 4, 8
19326 ; PWR5-NEXT: and 8, 3, 6
19327 ; PWR5-NEXT: rotldi 3, 3, 62
19328 ; PWR5-NEXT: and 3, 3, 6
19329 ; PWR5-NEXT: lis 7, 3855
19330 ; PWR5-NEXT: and 5, 4, 6
19331 ; PWR5-NEXT: rotldi 4, 4, 62
19332 ; PWR5-NEXT: add 3, 8, 3
19333 ; PWR5-NEXT: lis 9, 257
19334 ; PWR5-NEXT: ori 7, 7, 3855
19335 ; PWR5-NEXT: and 4, 4, 6
19336 ; PWR5-NEXT: rldicl 6, 3, 60, 4
19337 ; PWR5-NEXT: ori 9, 9, 257
19338 ; PWR5-NEXT: rldimi 7, 7, 32, 0
19339 ; PWR5-NEXT: add 4, 5, 4
19340 ; PWR5-NEXT: add 3, 3, 6
19341 ; PWR5-NEXT: rldimi 9, 9, 32, 0
19342 ; PWR5-NEXT: rldicl 5, 4, 60, 4
19343 ; PWR5-NEXT: and 3, 3, 7
19344 ; PWR5-NEXT: add 4, 4, 5
19345 ; PWR5-NEXT: mulld 3, 3, 9
19346 ; PWR5-NEXT: and 4, 4, 7
19347 ; PWR5-NEXT: rldicl 3, 3, 8, 56
19348 ; PWR5-NEXT: mulld 4, 4, 9
19349 ; PWR5-NEXT: li 5, 29
19350 ; PWR5-NEXT: subfic 3, 3, 29
19351 ; PWR5-NEXT: rldicl 4, 4, 8, 56
19352 ; PWR5-NEXT: subfe 3, 5, 5
19353 ; PWR5-NEXT: subfic 4, 4, 29
19354 ; PWR5-NEXT: subfe 4, 5, 5
19357 ; PWR6-LABEL: ugt_29_v2i64:
19359 ; PWR6-NEXT: lis 5, 21845
19360 ; PWR6-NEXT: lis 6, 13107
19361 ; PWR6-NEXT: ori 5, 5, 21845
19362 ; PWR6-NEXT: rotldi 8, 4, 63
19363 ; PWR6-NEXT: rotldi 9, 3, 63
19364 ; PWR6-NEXT: rldimi 5, 5, 32, 0
19365 ; PWR6-NEXT: and 8, 8, 5
19366 ; PWR6-NEXT: and 5, 9, 5
19367 ; PWR6-NEXT: ori 6, 6, 13107
19368 ; PWR6-NEXT: sub 3, 3, 5
19369 ; PWR6-NEXT: rldimi 6, 6, 32, 0
19370 ; PWR6-NEXT: sub 4, 4, 8
19371 ; PWR6-NEXT: and 8, 3, 6
19372 ; PWR6-NEXT: rotldi 3, 3, 62
19373 ; PWR6-NEXT: and 3, 3, 6
19374 ; PWR6-NEXT: lis 7, 3855
19375 ; PWR6-NEXT: and 5, 4, 6
19376 ; PWR6-NEXT: rotldi 4, 4, 62
19377 ; PWR6-NEXT: add 3, 8, 3
19378 ; PWR6-NEXT: lis 9, 257
19379 ; PWR6-NEXT: ori 7, 7, 3855
19380 ; PWR6-NEXT: and 4, 4, 6
19381 ; PWR6-NEXT: rldicl 6, 3, 60, 4
19382 ; PWR6-NEXT: ori 9, 9, 257
19383 ; PWR6-NEXT: rldimi 7, 7, 32, 0
19384 ; PWR6-NEXT: add 4, 5, 4
19385 ; PWR6-NEXT: add 3, 3, 6
19386 ; PWR6-NEXT: rldimi 9, 9, 32, 0
19387 ; PWR6-NEXT: rldicl 5, 4, 60, 4
19388 ; PWR6-NEXT: and 3, 3, 7
19389 ; PWR6-NEXT: add 4, 4, 5
19390 ; PWR6-NEXT: mulld 3, 3, 9
19391 ; PWR6-NEXT: and 4, 4, 7
19392 ; PWR6-NEXT: rldicl 3, 3, 8, 56
19393 ; PWR6-NEXT: mulld 4, 4, 9
19394 ; PWR6-NEXT: li 5, 29
19395 ; PWR6-NEXT: subfic 3, 3, 29
19396 ; PWR6-NEXT: rldicl 4, 4, 8, 56
19397 ; PWR6-NEXT: subfe 3, 5, 5
19398 ; PWR6-NEXT: subfic 4, 4, 29
19399 ; PWR6-NEXT: subfe 4, 5, 5
19402 ; PWR7-LABEL: ugt_29_v2i64:
19404 ; PWR7-NEXT: addi 3, 1, -32
19405 ; PWR7-NEXT: li 5, 0
19406 ; PWR7-NEXT: li 6, -1
19407 ; PWR7-NEXT: stxvd2x 34, 0, 3
19408 ; PWR7-NEXT: ld 3, -24(1)
19409 ; PWR7-NEXT: ld 4, -32(1)
19410 ; PWR7-NEXT: popcntd 3, 3
19411 ; PWR7-NEXT: popcntd 4, 4
19412 ; PWR7-NEXT: cmpldi 3, 29
19413 ; PWR7-NEXT: iselgt 3, 6, 5
19414 ; PWR7-NEXT: cmpldi 4, 29
19415 ; PWR7-NEXT: iselgt 4, 6, 5
19416 ; PWR7-NEXT: std 3, -8(1)
19417 ; PWR7-NEXT: addi 3, 1, -16
19418 ; PWR7-NEXT: std 4, -16(1)
19419 ; PWR7-NEXT: lxvd2x 34, 0, 3
19422 ; PWR8-LABEL: ugt_29_v2i64:
19424 ; PWR8-NEXT: addis 3, 2, .LCPI156_0@toc@ha
19425 ; PWR8-NEXT: vpopcntd 2, 2
19426 ; PWR8-NEXT: addi 3, 3, .LCPI156_0@toc@l
19427 ; PWR8-NEXT: lxvd2x 35, 0, 3
19428 ; PWR8-NEXT: vcmpgtud 2, 2, 3
19431 ; PWR9-LABEL: ugt_29_v2i64:
19433 ; PWR9-NEXT: addis 3, 2, .LCPI156_0@toc@ha
19434 ; PWR9-NEXT: vpopcntd 2, 2
19435 ; PWR9-NEXT: addi 3, 3, .LCPI156_0@toc@l
19436 ; PWR9-NEXT: lxv 35, 0(3)
19437 ; PWR9-NEXT: vcmpgtud 2, 2, 3
19439 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
19440 %3 = icmp ugt <2 x i64> %2, <i64 29, i64 29>
19441 %4 = sext <2 x i1> %3 to <2 x i64>
19445 define <2 x i64> @ult_30_v2i64(<2 x i64> %0) {
19446 ; PWR5-LABEL: ult_30_v2i64:
19448 ; PWR5-NEXT: lis 5, 21845
19449 ; PWR5-NEXT: lis 6, 13107
19450 ; PWR5-NEXT: ori 5, 5, 21845
19451 ; PWR5-NEXT: rotldi 8, 4, 63
19452 ; PWR5-NEXT: rotldi 9, 3, 63
19453 ; PWR5-NEXT: rldimi 5, 5, 32, 0
19454 ; PWR5-NEXT: and 8, 8, 5
19455 ; PWR5-NEXT: and 5, 9, 5
19456 ; PWR5-NEXT: ori 6, 6, 13107
19457 ; PWR5-NEXT: sub 3, 3, 5
19458 ; PWR5-NEXT: rldimi 6, 6, 32, 0
19459 ; PWR5-NEXT: sub 4, 4, 8
19460 ; PWR5-NEXT: and 8, 3, 6
19461 ; PWR5-NEXT: rotldi 3, 3, 62
19462 ; PWR5-NEXT: and 3, 3, 6
19463 ; PWR5-NEXT: lis 7, 3855
19464 ; PWR5-NEXT: and 5, 4, 6
19465 ; PWR5-NEXT: rotldi 4, 4, 62
19466 ; PWR5-NEXT: add 3, 8, 3
19467 ; PWR5-NEXT: lis 9, 257
19468 ; PWR5-NEXT: ori 7, 7, 3855
19469 ; PWR5-NEXT: and 4, 4, 6
19470 ; PWR5-NEXT: rldicl 6, 3, 60, 4
19471 ; PWR5-NEXT: ori 9, 9, 257
19472 ; PWR5-NEXT: rldimi 7, 7, 32, 0
19473 ; PWR5-NEXT: add 4, 5, 4
19474 ; PWR5-NEXT: add 3, 3, 6
19475 ; PWR5-NEXT: rldimi 9, 9, 32, 0
19476 ; PWR5-NEXT: rldicl 5, 4, 60, 4
19477 ; PWR5-NEXT: and 3, 3, 7
19478 ; PWR5-NEXT: add 4, 4, 5
19479 ; PWR5-NEXT: mulld 3, 3, 9
19480 ; PWR5-NEXT: and 4, 4, 7
19481 ; PWR5-NEXT: rldicl 3, 3, 8, 56
19482 ; PWR5-NEXT: li 5, 30
19483 ; PWR5-NEXT: mulld 4, 4, 9
19484 ; PWR5-NEXT: subc 6, 3, 5
19485 ; PWR5-NEXT: rldicl 4, 4, 8, 56
19486 ; PWR5-NEXT: subfe 3, 3, 3
19487 ; PWR5-NEXT: subc 5, 4, 5
19488 ; PWR5-NEXT: subfe 4, 4, 4
19491 ; PWR6-LABEL: ult_30_v2i64:
19493 ; PWR6-NEXT: lis 5, 21845
19494 ; PWR6-NEXT: lis 6, 13107
19495 ; PWR6-NEXT: ori 5, 5, 21845
19496 ; PWR6-NEXT: rotldi 8, 4, 63
19497 ; PWR6-NEXT: rotldi 9, 3, 63
19498 ; PWR6-NEXT: rldimi 5, 5, 32, 0
19499 ; PWR6-NEXT: and 8, 8, 5
19500 ; PWR6-NEXT: and 5, 9, 5
19501 ; PWR6-NEXT: ori 6, 6, 13107
19502 ; PWR6-NEXT: sub 3, 3, 5
19503 ; PWR6-NEXT: rldimi 6, 6, 32, 0
19504 ; PWR6-NEXT: sub 4, 4, 8
19505 ; PWR6-NEXT: and 8, 3, 6
19506 ; PWR6-NEXT: rotldi 3, 3, 62
19507 ; PWR6-NEXT: and 3, 3, 6
19508 ; PWR6-NEXT: lis 7, 3855
19509 ; PWR6-NEXT: and 5, 4, 6
19510 ; PWR6-NEXT: rotldi 4, 4, 62
19511 ; PWR6-NEXT: add 3, 8, 3
19512 ; PWR6-NEXT: lis 9, 257
19513 ; PWR6-NEXT: ori 7, 7, 3855
19514 ; PWR6-NEXT: and 4, 4, 6
19515 ; PWR6-NEXT: rldicl 6, 3, 60, 4
19516 ; PWR6-NEXT: ori 9, 9, 257
19517 ; PWR6-NEXT: rldimi 7, 7, 32, 0
19518 ; PWR6-NEXT: add 4, 5, 4
19519 ; PWR6-NEXT: add 3, 3, 6
19520 ; PWR6-NEXT: rldimi 9, 9, 32, 0
19521 ; PWR6-NEXT: rldicl 5, 4, 60, 4
19522 ; PWR6-NEXT: and 3, 3, 7
19523 ; PWR6-NEXT: add 4, 4, 5
19524 ; PWR6-NEXT: mulld 3, 3, 9
19525 ; PWR6-NEXT: and 4, 4, 7
19526 ; PWR6-NEXT: rldicl 3, 3, 8, 56
19527 ; PWR6-NEXT: li 5, 30
19528 ; PWR6-NEXT: mulld 4, 4, 9
19529 ; PWR6-NEXT: subc 6, 3, 5
19530 ; PWR6-NEXT: rldicl 4, 4, 8, 56
19531 ; PWR6-NEXT: subfe 3, 3, 3
19532 ; PWR6-NEXT: subc 5, 4, 5
19533 ; PWR6-NEXT: subfe 4, 4, 4
19536 ; PWR7-LABEL: ult_30_v2i64:
19538 ; PWR7-NEXT: addi 3, 1, -32
19539 ; PWR7-NEXT: li 5, 0
19540 ; PWR7-NEXT: li 6, -1
19541 ; PWR7-NEXT: stxvd2x 34, 0, 3
19542 ; PWR7-NEXT: ld 3, -24(1)
19543 ; PWR7-NEXT: ld 4, -32(1)
19544 ; PWR7-NEXT: popcntd 3, 3
19545 ; PWR7-NEXT: popcntd 4, 4
19546 ; PWR7-NEXT: cmpldi 3, 30
19547 ; PWR7-NEXT: isellt 3, 6, 5
19548 ; PWR7-NEXT: cmpldi 4, 30
19549 ; PWR7-NEXT: isellt 4, 6, 5
19550 ; PWR7-NEXT: std 3, -8(1)
19551 ; PWR7-NEXT: addi 3, 1, -16
19552 ; PWR7-NEXT: std 4, -16(1)
19553 ; PWR7-NEXT: lxvd2x 34, 0, 3
19556 ; PWR8-LABEL: ult_30_v2i64:
19558 ; PWR8-NEXT: addis 3, 2, .LCPI157_0@toc@ha
19559 ; PWR8-NEXT: vpopcntd 2, 2
19560 ; PWR8-NEXT: addi 3, 3, .LCPI157_0@toc@l
19561 ; PWR8-NEXT: lxvd2x 35, 0, 3
19562 ; PWR8-NEXT: vcmpgtud 2, 3, 2
19565 ; PWR9-LABEL: ult_30_v2i64:
19567 ; PWR9-NEXT: addis 3, 2, .LCPI157_0@toc@ha
19568 ; PWR9-NEXT: vpopcntd 2, 2
19569 ; PWR9-NEXT: addi 3, 3, .LCPI157_0@toc@l
19570 ; PWR9-NEXT: lxv 35, 0(3)
19571 ; PWR9-NEXT: vcmpgtud 2, 3, 2
19573 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
19574 %3 = icmp ult <2 x i64> %2, <i64 30, i64 30>
19575 %4 = sext <2 x i1> %3 to <2 x i64>
19579 define <2 x i64> @ugt_30_v2i64(<2 x i64> %0) {
19580 ; PWR5-LABEL: ugt_30_v2i64:
19582 ; PWR5-NEXT: lis 5, 21845
19583 ; PWR5-NEXT: lis 6, 13107
19584 ; PWR5-NEXT: ori 5, 5, 21845
19585 ; PWR5-NEXT: rotldi 8, 4, 63
19586 ; PWR5-NEXT: rotldi 9, 3, 63
19587 ; PWR5-NEXT: rldimi 5, 5, 32, 0
19588 ; PWR5-NEXT: and 8, 8, 5
19589 ; PWR5-NEXT: and 5, 9, 5
19590 ; PWR5-NEXT: ori 6, 6, 13107
19591 ; PWR5-NEXT: sub 3, 3, 5
19592 ; PWR5-NEXT: rldimi 6, 6, 32, 0
19593 ; PWR5-NEXT: sub 4, 4, 8
19594 ; PWR5-NEXT: and 8, 3, 6
19595 ; PWR5-NEXT: rotldi 3, 3, 62
19596 ; PWR5-NEXT: and 3, 3, 6
19597 ; PWR5-NEXT: lis 7, 3855
19598 ; PWR5-NEXT: and 5, 4, 6
19599 ; PWR5-NEXT: rotldi 4, 4, 62
19600 ; PWR5-NEXT: add 3, 8, 3
19601 ; PWR5-NEXT: lis 9, 257
19602 ; PWR5-NEXT: ori 7, 7, 3855
19603 ; PWR5-NEXT: and 4, 4, 6
19604 ; PWR5-NEXT: rldicl 6, 3, 60, 4
19605 ; PWR5-NEXT: ori 9, 9, 257
19606 ; PWR5-NEXT: rldimi 7, 7, 32, 0
19607 ; PWR5-NEXT: add 4, 5, 4
19608 ; PWR5-NEXT: add 3, 3, 6
19609 ; PWR5-NEXT: rldimi 9, 9, 32, 0
19610 ; PWR5-NEXT: rldicl 5, 4, 60, 4
19611 ; PWR5-NEXT: and 3, 3, 7
19612 ; PWR5-NEXT: add 4, 4, 5
19613 ; PWR5-NEXT: mulld 3, 3, 9
19614 ; PWR5-NEXT: and 4, 4, 7
19615 ; PWR5-NEXT: rldicl 3, 3, 8, 56
19616 ; PWR5-NEXT: mulld 4, 4, 9
19617 ; PWR5-NEXT: li 5, 30
19618 ; PWR5-NEXT: subfic 3, 3, 30
19619 ; PWR5-NEXT: rldicl 4, 4, 8, 56
19620 ; PWR5-NEXT: subfe 3, 5, 5
19621 ; PWR5-NEXT: subfic 4, 4, 30
19622 ; PWR5-NEXT: subfe 4, 5, 5
19625 ; PWR6-LABEL: ugt_30_v2i64:
19627 ; PWR6-NEXT: lis 5, 21845
19628 ; PWR6-NEXT: lis 6, 13107
19629 ; PWR6-NEXT: ori 5, 5, 21845
19630 ; PWR6-NEXT: rotldi 8, 4, 63
19631 ; PWR6-NEXT: rotldi 9, 3, 63
19632 ; PWR6-NEXT: rldimi 5, 5, 32, 0
19633 ; PWR6-NEXT: and 8, 8, 5
19634 ; PWR6-NEXT: and 5, 9, 5
19635 ; PWR6-NEXT: ori 6, 6, 13107
19636 ; PWR6-NEXT: sub 3, 3, 5
19637 ; PWR6-NEXT: rldimi 6, 6, 32, 0
19638 ; PWR6-NEXT: sub 4, 4, 8
19639 ; PWR6-NEXT: and 8, 3, 6
19640 ; PWR6-NEXT: rotldi 3, 3, 62
19641 ; PWR6-NEXT: and 3, 3, 6
19642 ; PWR6-NEXT: lis 7, 3855
19643 ; PWR6-NEXT: and 5, 4, 6
19644 ; PWR6-NEXT: rotldi 4, 4, 62
19645 ; PWR6-NEXT: add 3, 8, 3
19646 ; PWR6-NEXT: lis 9, 257
19647 ; PWR6-NEXT: ori 7, 7, 3855
19648 ; PWR6-NEXT: and 4, 4, 6
19649 ; PWR6-NEXT: rldicl 6, 3, 60, 4
19650 ; PWR6-NEXT: ori 9, 9, 257
19651 ; PWR6-NEXT: rldimi 7, 7, 32, 0
19652 ; PWR6-NEXT: add 4, 5, 4
19653 ; PWR6-NEXT: add 3, 3, 6
19654 ; PWR6-NEXT: rldimi 9, 9, 32, 0
19655 ; PWR6-NEXT: rldicl 5, 4, 60, 4
19656 ; PWR6-NEXT: and 3, 3, 7
19657 ; PWR6-NEXT: add 4, 4, 5
19658 ; PWR6-NEXT: mulld 3, 3, 9
19659 ; PWR6-NEXT: and 4, 4, 7
19660 ; PWR6-NEXT: rldicl 3, 3, 8, 56
19661 ; PWR6-NEXT: mulld 4, 4, 9
19662 ; PWR6-NEXT: li 5, 30
19663 ; PWR6-NEXT: subfic 3, 3, 30
19664 ; PWR6-NEXT: rldicl 4, 4, 8, 56
19665 ; PWR6-NEXT: subfe 3, 5, 5
19666 ; PWR6-NEXT: subfic 4, 4, 30
19667 ; PWR6-NEXT: subfe 4, 5, 5
19670 ; PWR7-LABEL: ugt_30_v2i64:
19672 ; PWR7-NEXT: addi 3, 1, -32
19673 ; PWR7-NEXT: li 5, 0
19674 ; PWR7-NEXT: li 6, -1
19675 ; PWR7-NEXT: stxvd2x 34, 0, 3
19676 ; PWR7-NEXT: ld 3, -24(1)
19677 ; PWR7-NEXT: ld 4, -32(1)
19678 ; PWR7-NEXT: popcntd 3, 3
19679 ; PWR7-NEXT: popcntd 4, 4
19680 ; PWR7-NEXT: cmpldi 3, 30
19681 ; PWR7-NEXT: iselgt 3, 6, 5
19682 ; PWR7-NEXT: cmpldi 4, 30
19683 ; PWR7-NEXT: iselgt 4, 6, 5
19684 ; PWR7-NEXT: std 3, -8(1)
19685 ; PWR7-NEXT: addi 3, 1, -16
19686 ; PWR7-NEXT: std 4, -16(1)
19687 ; PWR7-NEXT: lxvd2x 34, 0, 3
19690 ; PWR8-LABEL: ugt_30_v2i64:
19692 ; PWR8-NEXT: addis 3, 2, .LCPI158_0@toc@ha
19693 ; PWR8-NEXT: vpopcntd 2, 2
19694 ; PWR8-NEXT: addi 3, 3, .LCPI158_0@toc@l
19695 ; PWR8-NEXT: lxvd2x 35, 0, 3
19696 ; PWR8-NEXT: vcmpgtud 2, 2, 3
19699 ; PWR9-LABEL: ugt_30_v2i64:
19701 ; PWR9-NEXT: addis 3, 2, .LCPI158_0@toc@ha
19702 ; PWR9-NEXT: vpopcntd 2, 2
19703 ; PWR9-NEXT: addi 3, 3, .LCPI158_0@toc@l
19704 ; PWR9-NEXT: lxv 35, 0(3)
19705 ; PWR9-NEXT: vcmpgtud 2, 2, 3
19707 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
19708 %3 = icmp ugt <2 x i64> %2, <i64 30, i64 30>
19709 %4 = sext <2 x i1> %3 to <2 x i64>
19713 define <2 x i64> @ult_31_v2i64(<2 x i64> %0) {
19714 ; PWR5-LABEL: ult_31_v2i64:
19716 ; PWR5-NEXT: lis 5, 21845
19717 ; PWR5-NEXT: lis 6, 13107
19718 ; PWR5-NEXT: ori 5, 5, 21845
19719 ; PWR5-NEXT: rotldi 8, 4, 63
19720 ; PWR5-NEXT: rotldi 9, 3, 63
19721 ; PWR5-NEXT: rldimi 5, 5, 32, 0
19722 ; PWR5-NEXT: and 8, 8, 5
19723 ; PWR5-NEXT: and 5, 9, 5
19724 ; PWR5-NEXT: ori 6, 6, 13107
19725 ; PWR5-NEXT: sub 3, 3, 5
19726 ; PWR5-NEXT: rldimi 6, 6, 32, 0
19727 ; PWR5-NEXT: sub 4, 4, 8
19728 ; PWR5-NEXT: and 8, 3, 6
19729 ; PWR5-NEXT: rotldi 3, 3, 62
19730 ; PWR5-NEXT: and 3, 3, 6
19731 ; PWR5-NEXT: lis 7, 3855
19732 ; PWR5-NEXT: and 5, 4, 6
19733 ; PWR5-NEXT: rotldi 4, 4, 62
19734 ; PWR5-NEXT: add 3, 8, 3
19735 ; PWR5-NEXT: lis 9, 257
19736 ; PWR5-NEXT: ori 7, 7, 3855
19737 ; PWR5-NEXT: and 4, 4, 6
19738 ; PWR5-NEXT: rldicl 6, 3, 60, 4
19739 ; PWR5-NEXT: ori 9, 9, 257
19740 ; PWR5-NEXT: rldimi 7, 7, 32, 0
19741 ; PWR5-NEXT: add 4, 5, 4
19742 ; PWR5-NEXT: add 3, 3, 6
19743 ; PWR5-NEXT: rldimi 9, 9, 32, 0
19744 ; PWR5-NEXT: rldicl 5, 4, 60, 4
19745 ; PWR5-NEXT: and 3, 3, 7
19746 ; PWR5-NEXT: add 4, 4, 5
19747 ; PWR5-NEXT: mulld 3, 3, 9
19748 ; PWR5-NEXT: and 4, 4, 7
19749 ; PWR5-NEXT: rldicl 3, 3, 8, 56
19750 ; PWR5-NEXT: li 5, 31
19751 ; PWR5-NEXT: mulld 4, 4, 9
19752 ; PWR5-NEXT: subc 6, 3, 5
19753 ; PWR5-NEXT: rldicl 4, 4, 8, 56
19754 ; PWR5-NEXT: subfe 3, 3, 3
19755 ; PWR5-NEXT: subc 5, 4, 5
19756 ; PWR5-NEXT: subfe 4, 4, 4
19759 ; PWR6-LABEL: ult_31_v2i64:
19761 ; PWR6-NEXT: lis 5, 21845
19762 ; PWR6-NEXT: lis 6, 13107
19763 ; PWR6-NEXT: ori 5, 5, 21845
19764 ; PWR6-NEXT: rotldi 8, 4, 63
19765 ; PWR6-NEXT: rotldi 9, 3, 63
19766 ; PWR6-NEXT: rldimi 5, 5, 32, 0
19767 ; PWR6-NEXT: and 8, 8, 5
19768 ; PWR6-NEXT: and 5, 9, 5
19769 ; PWR6-NEXT: ori 6, 6, 13107
19770 ; PWR6-NEXT: sub 3, 3, 5
19771 ; PWR6-NEXT: rldimi 6, 6, 32, 0
19772 ; PWR6-NEXT: sub 4, 4, 8
19773 ; PWR6-NEXT: and 8, 3, 6
19774 ; PWR6-NEXT: rotldi 3, 3, 62
19775 ; PWR6-NEXT: and 3, 3, 6
19776 ; PWR6-NEXT: lis 7, 3855
19777 ; PWR6-NEXT: and 5, 4, 6
19778 ; PWR6-NEXT: rotldi 4, 4, 62
19779 ; PWR6-NEXT: add 3, 8, 3
19780 ; PWR6-NEXT: lis 9, 257
19781 ; PWR6-NEXT: ori 7, 7, 3855
19782 ; PWR6-NEXT: and 4, 4, 6
19783 ; PWR6-NEXT: rldicl 6, 3, 60, 4
19784 ; PWR6-NEXT: ori 9, 9, 257
19785 ; PWR6-NEXT: rldimi 7, 7, 32, 0
19786 ; PWR6-NEXT: add 4, 5, 4
19787 ; PWR6-NEXT: add 3, 3, 6
19788 ; PWR6-NEXT: rldimi 9, 9, 32, 0
19789 ; PWR6-NEXT: rldicl 5, 4, 60, 4
19790 ; PWR6-NEXT: and 3, 3, 7
19791 ; PWR6-NEXT: add 4, 4, 5
19792 ; PWR6-NEXT: mulld 3, 3, 9
19793 ; PWR6-NEXT: and 4, 4, 7
19794 ; PWR6-NEXT: rldicl 3, 3, 8, 56
19795 ; PWR6-NEXT: li 5, 31
19796 ; PWR6-NEXT: mulld 4, 4, 9
19797 ; PWR6-NEXT: subc 6, 3, 5
19798 ; PWR6-NEXT: rldicl 4, 4, 8, 56
19799 ; PWR6-NEXT: subfe 3, 3, 3
19800 ; PWR6-NEXT: subc 5, 4, 5
19801 ; PWR6-NEXT: subfe 4, 4, 4
19804 ; PWR7-LABEL: ult_31_v2i64:
19806 ; PWR7-NEXT: addi 3, 1, -32
19807 ; PWR7-NEXT: li 5, 0
19808 ; PWR7-NEXT: li 6, -1
19809 ; PWR7-NEXT: stxvd2x 34, 0, 3
19810 ; PWR7-NEXT: ld 3, -24(1)
19811 ; PWR7-NEXT: ld 4, -32(1)
19812 ; PWR7-NEXT: popcntd 3, 3
19813 ; PWR7-NEXT: popcntd 4, 4
19814 ; PWR7-NEXT: cmpldi 3, 31
19815 ; PWR7-NEXT: isellt 3, 6, 5
19816 ; PWR7-NEXT: cmpldi 4, 31
19817 ; PWR7-NEXT: isellt 4, 6, 5
19818 ; PWR7-NEXT: std 3, -8(1)
19819 ; PWR7-NEXT: addi 3, 1, -16
19820 ; PWR7-NEXT: std 4, -16(1)
19821 ; PWR7-NEXT: lxvd2x 34, 0, 3
19824 ; PWR8-LABEL: ult_31_v2i64:
19826 ; PWR8-NEXT: addis 3, 2, .LCPI159_0@toc@ha
19827 ; PWR8-NEXT: vpopcntd 2, 2
19828 ; PWR8-NEXT: addi 3, 3, .LCPI159_0@toc@l
19829 ; PWR8-NEXT: lxvd2x 35, 0, 3
19830 ; PWR8-NEXT: vcmpgtud 2, 3, 2
19833 ; PWR9-LABEL: ult_31_v2i64:
19835 ; PWR9-NEXT: addis 3, 2, .LCPI159_0@toc@ha
19836 ; PWR9-NEXT: vpopcntd 2, 2
19837 ; PWR9-NEXT: addi 3, 3, .LCPI159_0@toc@l
19838 ; PWR9-NEXT: lxv 35, 0(3)
19839 ; PWR9-NEXT: vcmpgtud 2, 3, 2
19841 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
19842 %3 = icmp ult <2 x i64> %2, <i64 31, i64 31>
19843 %4 = sext <2 x i1> %3 to <2 x i64>
19847 define <2 x i64> @ugt_31_v2i64(<2 x i64> %0) {
19848 ; PWR5-LABEL: ugt_31_v2i64:
19850 ; PWR5-NEXT: lis 5, 21845
19851 ; PWR5-NEXT: lis 6, 13107
19852 ; PWR5-NEXT: ori 5, 5, 21845
19853 ; PWR5-NEXT: rotldi 8, 4, 63
19854 ; PWR5-NEXT: rotldi 9, 3, 63
19855 ; PWR5-NEXT: rldimi 5, 5, 32, 0
19856 ; PWR5-NEXT: and 8, 8, 5
19857 ; PWR5-NEXT: and 5, 9, 5
19858 ; PWR5-NEXT: ori 6, 6, 13107
19859 ; PWR5-NEXT: sub 3, 3, 5
19860 ; PWR5-NEXT: rldimi 6, 6, 32, 0
19861 ; PWR5-NEXT: sub 4, 4, 8
19862 ; PWR5-NEXT: and 8, 3, 6
19863 ; PWR5-NEXT: rotldi 3, 3, 62
19864 ; PWR5-NEXT: and 3, 3, 6
19865 ; PWR5-NEXT: lis 7, 3855
19866 ; PWR5-NEXT: and 5, 4, 6
19867 ; PWR5-NEXT: rotldi 4, 4, 62
19868 ; PWR5-NEXT: add 3, 8, 3
19869 ; PWR5-NEXT: lis 9, 257
19870 ; PWR5-NEXT: ori 7, 7, 3855
19871 ; PWR5-NEXT: and 4, 4, 6
19872 ; PWR5-NEXT: rldicl 6, 3, 60, 4
19873 ; PWR5-NEXT: ori 9, 9, 257
19874 ; PWR5-NEXT: rldimi 7, 7, 32, 0
19875 ; PWR5-NEXT: add 4, 5, 4
19876 ; PWR5-NEXT: add 3, 3, 6
19877 ; PWR5-NEXT: rldimi 9, 9, 32, 0
19878 ; PWR5-NEXT: rldicl 5, 4, 60, 4
19879 ; PWR5-NEXT: and 3, 3, 7
19880 ; PWR5-NEXT: add 4, 4, 5
19881 ; PWR5-NEXT: mulld 3, 3, 9
19882 ; PWR5-NEXT: and 4, 4, 7
19883 ; PWR5-NEXT: rldicl 3, 3, 8, 56
19884 ; PWR5-NEXT: mulld 4, 4, 9
19885 ; PWR5-NEXT: li 5, 31
19886 ; PWR5-NEXT: subfic 3, 3, 31
19887 ; PWR5-NEXT: rldicl 4, 4, 8, 56
19888 ; PWR5-NEXT: subfe 3, 5, 5
19889 ; PWR5-NEXT: subfic 4, 4, 31
19890 ; PWR5-NEXT: subfe 4, 5, 5
19893 ; PWR6-LABEL: ugt_31_v2i64:
19895 ; PWR6-NEXT: lis 5, 21845
19896 ; PWR6-NEXT: lis 6, 13107
19897 ; PWR6-NEXT: ori 5, 5, 21845
19898 ; PWR6-NEXT: rotldi 8, 4, 63
19899 ; PWR6-NEXT: rotldi 9, 3, 63
19900 ; PWR6-NEXT: rldimi 5, 5, 32, 0
19901 ; PWR6-NEXT: and 8, 8, 5
19902 ; PWR6-NEXT: and 5, 9, 5
19903 ; PWR6-NEXT: ori 6, 6, 13107
19904 ; PWR6-NEXT: sub 3, 3, 5
19905 ; PWR6-NEXT: rldimi 6, 6, 32, 0
19906 ; PWR6-NEXT: sub 4, 4, 8
19907 ; PWR6-NEXT: and 8, 3, 6
19908 ; PWR6-NEXT: rotldi 3, 3, 62
19909 ; PWR6-NEXT: and 3, 3, 6
19910 ; PWR6-NEXT: lis 7, 3855
19911 ; PWR6-NEXT: and 5, 4, 6
19912 ; PWR6-NEXT: rotldi 4, 4, 62
19913 ; PWR6-NEXT: add 3, 8, 3
19914 ; PWR6-NEXT: lis 9, 257
19915 ; PWR6-NEXT: ori 7, 7, 3855
19916 ; PWR6-NEXT: and 4, 4, 6
19917 ; PWR6-NEXT: rldicl 6, 3, 60, 4
19918 ; PWR6-NEXT: ori 9, 9, 257
19919 ; PWR6-NEXT: rldimi 7, 7, 32, 0
19920 ; PWR6-NEXT: add 4, 5, 4
19921 ; PWR6-NEXT: add 3, 3, 6
19922 ; PWR6-NEXT: rldimi 9, 9, 32, 0
19923 ; PWR6-NEXT: rldicl 5, 4, 60, 4
19924 ; PWR6-NEXT: and 3, 3, 7
19925 ; PWR6-NEXT: add 4, 4, 5
19926 ; PWR6-NEXT: mulld 3, 3, 9
19927 ; PWR6-NEXT: and 4, 4, 7
19928 ; PWR6-NEXT: rldicl 3, 3, 8, 56
19929 ; PWR6-NEXT: mulld 4, 4, 9
19930 ; PWR6-NEXT: li 5, 31
19931 ; PWR6-NEXT: subfic 3, 3, 31
19932 ; PWR6-NEXT: rldicl 4, 4, 8, 56
19933 ; PWR6-NEXT: subfe 3, 5, 5
19934 ; PWR6-NEXT: subfic 4, 4, 31
19935 ; PWR6-NEXT: subfe 4, 5, 5
19938 ; PWR7-LABEL: ugt_31_v2i64:
19940 ; PWR7-NEXT: addi 3, 1, -32
19941 ; PWR7-NEXT: li 5, 0
19942 ; PWR7-NEXT: li 6, -1
19943 ; PWR7-NEXT: stxvd2x 34, 0, 3
19944 ; PWR7-NEXT: ld 3, -24(1)
19945 ; PWR7-NEXT: ld 4, -32(1)
19946 ; PWR7-NEXT: popcntd 3, 3
19947 ; PWR7-NEXT: popcntd 4, 4
19948 ; PWR7-NEXT: cmpldi 3, 31
19949 ; PWR7-NEXT: iselgt 3, 6, 5
19950 ; PWR7-NEXT: cmpldi 4, 31
19951 ; PWR7-NEXT: iselgt 4, 6, 5
19952 ; PWR7-NEXT: std 3, -8(1)
19953 ; PWR7-NEXT: addi 3, 1, -16
19954 ; PWR7-NEXT: std 4, -16(1)
19955 ; PWR7-NEXT: lxvd2x 34, 0, 3
19958 ; PWR8-LABEL: ugt_31_v2i64:
19960 ; PWR8-NEXT: addis 3, 2, .LCPI160_0@toc@ha
19961 ; PWR8-NEXT: vpopcntd 2, 2
19962 ; PWR8-NEXT: addi 3, 3, .LCPI160_0@toc@l
19963 ; PWR8-NEXT: lxvd2x 35, 0, 3
19964 ; PWR8-NEXT: vcmpgtud 2, 2, 3
19967 ; PWR9-LABEL: ugt_31_v2i64:
19969 ; PWR9-NEXT: addis 3, 2, .LCPI160_0@toc@ha
19970 ; PWR9-NEXT: vpopcntd 2, 2
19971 ; PWR9-NEXT: addi 3, 3, .LCPI160_0@toc@l
19972 ; PWR9-NEXT: lxv 35, 0(3)
19973 ; PWR9-NEXT: vcmpgtud 2, 2, 3
19975 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
19976 %3 = icmp ugt <2 x i64> %2, <i64 31, i64 31>
19977 %4 = sext <2 x i1> %3 to <2 x i64>
19981 define <2 x i64> @ult_32_v2i64(<2 x i64> %0) {
19982 ; PWR5-LABEL: ult_32_v2i64:
19984 ; PWR5-NEXT: lis 5, 21845
19985 ; PWR5-NEXT: lis 6, 13107
19986 ; PWR5-NEXT: ori 5, 5, 21845
19987 ; PWR5-NEXT: rotldi 8, 4, 63
19988 ; PWR5-NEXT: rotldi 9, 3, 63
19989 ; PWR5-NEXT: rldimi 5, 5, 32, 0
19990 ; PWR5-NEXT: and 8, 8, 5
19991 ; PWR5-NEXT: and 5, 9, 5
19992 ; PWR5-NEXT: ori 6, 6, 13107
19993 ; PWR5-NEXT: sub 3, 3, 5
19994 ; PWR5-NEXT: rldimi 6, 6, 32, 0
19995 ; PWR5-NEXT: sub 4, 4, 8
19996 ; PWR5-NEXT: and 8, 3, 6
19997 ; PWR5-NEXT: rotldi 3, 3, 62
19998 ; PWR5-NEXT: and 3, 3, 6
19999 ; PWR5-NEXT: lis 7, 3855
20000 ; PWR5-NEXT: and 5, 4, 6
20001 ; PWR5-NEXT: rotldi 4, 4, 62
20002 ; PWR5-NEXT: add 3, 8, 3
20003 ; PWR5-NEXT: lis 9, 257
20004 ; PWR5-NEXT: ori 7, 7, 3855
20005 ; PWR5-NEXT: and 4, 4, 6
20006 ; PWR5-NEXT: rldicl 6, 3, 60, 4
20007 ; PWR5-NEXT: ori 9, 9, 257
20008 ; PWR5-NEXT: rldimi 7, 7, 32, 0
20009 ; PWR5-NEXT: add 4, 5, 4
20010 ; PWR5-NEXT: add 3, 3, 6
20011 ; PWR5-NEXT: rldimi 9, 9, 32, 0
20012 ; PWR5-NEXT: rldicl 5, 4, 60, 4
20013 ; PWR5-NEXT: and 3, 3, 7
20014 ; PWR5-NEXT: add 4, 4, 5
20015 ; PWR5-NEXT: mulld 3, 3, 9
20016 ; PWR5-NEXT: and 4, 4, 7
20017 ; PWR5-NEXT: rldicl 3, 3, 8, 56
20018 ; PWR5-NEXT: li 5, 32
20019 ; PWR5-NEXT: mulld 4, 4, 9
20020 ; PWR5-NEXT: subc 6, 3, 5
20021 ; PWR5-NEXT: rldicl 4, 4, 8, 56
20022 ; PWR5-NEXT: subfe 3, 3, 3
20023 ; PWR5-NEXT: subc 5, 4, 5
20024 ; PWR5-NEXT: subfe 4, 4, 4
20027 ; PWR6-LABEL: ult_32_v2i64:
20029 ; PWR6-NEXT: lis 5, 21845
20030 ; PWR6-NEXT: lis 6, 13107
20031 ; PWR6-NEXT: ori 5, 5, 21845
20032 ; PWR6-NEXT: rotldi 8, 4, 63
20033 ; PWR6-NEXT: rotldi 9, 3, 63
20034 ; PWR6-NEXT: rldimi 5, 5, 32, 0
20035 ; PWR6-NEXT: and 8, 8, 5
20036 ; PWR6-NEXT: and 5, 9, 5
20037 ; PWR6-NEXT: ori 6, 6, 13107
20038 ; PWR6-NEXT: sub 3, 3, 5
20039 ; PWR6-NEXT: rldimi 6, 6, 32, 0
20040 ; PWR6-NEXT: sub 4, 4, 8
20041 ; PWR6-NEXT: and 8, 3, 6
20042 ; PWR6-NEXT: rotldi 3, 3, 62
20043 ; PWR6-NEXT: and 3, 3, 6
20044 ; PWR6-NEXT: lis 7, 3855
20045 ; PWR6-NEXT: and 5, 4, 6
20046 ; PWR6-NEXT: rotldi 4, 4, 62
20047 ; PWR6-NEXT: add 3, 8, 3
20048 ; PWR6-NEXT: lis 9, 257
20049 ; PWR6-NEXT: ori 7, 7, 3855
20050 ; PWR6-NEXT: and 4, 4, 6
20051 ; PWR6-NEXT: rldicl 6, 3, 60, 4
20052 ; PWR6-NEXT: ori 9, 9, 257
20053 ; PWR6-NEXT: rldimi 7, 7, 32, 0
20054 ; PWR6-NEXT: add 4, 5, 4
20055 ; PWR6-NEXT: add 3, 3, 6
20056 ; PWR6-NEXT: rldimi 9, 9, 32, 0
20057 ; PWR6-NEXT: rldicl 5, 4, 60, 4
20058 ; PWR6-NEXT: and 3, 3, 7
20059 ; PWR6-NEXT: add 4, 4, 5
20060 ; PWR6-NEXT: mulld 3, 3, 9
20061 ; PWR6-NEXT: and 4, 4, 7
20062 ; PWR6-NEXT: rldicl 3, 3, 8, 56
20063 ; PWR6-NEXT: li 5, 32
20064 ; PWR6-NEXT: mulld 4, 4, 9
20065 ; PWR6-NEXT: subc 6, 3, 5
20066 ; PWR6-NEXT: rldicl 4, 4, 8, 56
20067 ; PWR6-NEXT: subfe 3, 3, 3
20068 ; PWR6-NEXT: subc 5, 4, 5
20069 ; PWR6-NEXT: subfe 4, 4, 4
20072 ; PWR7-LABEL: ult_32_v2i64:
20074 ; PWR7-NEXT: addi 3, 1, -32
20075 ; PWR7-NEXT: li 5, 0
20076 ; PWR7-NEXT: li 6, -1
20077 ; PWR7-NEXT: stxvd2x 34, 0, 3
20078 ; PWR7-NEXT: ld 3, -24(1)
20079 ; PWR7-NEXT: ld 4, -32(1)
20080 ; PWR7-NEXT: popcntd 3, 3
20081 ; PWR7-NEXT: popcntd 4, 4
20082 ; PWR7-NEXT: cmpldi 3, 32
20083 ; PWR7-NEXT: isellt 3, 6, 5
20084 ; PWR7-NEXT: cmpldi 4, 32
20085 ; PWR7-NEXT: isellt 4, 6, 5
20086 ; PWR7-NEXT: std 3, -8(1)
20087 ; PWR7-NEXT: addi 3, 1, -16
20088 ; PWR7-NEXT: std 4, -16(1)
20089 ; PWR7-NEXT: lxvd2x 34, 0, 3
20092 ; PWR8-LABEL: ult_32_v2i64:
20094 ; PWR8-NEXT: addis 3, 2, .LCPI161_0@toc@ha
20095 ; PWR8-NEXT: vpopcntd 2, 2
20096 ; PWR8-NEXT: addi 3, 3, .LCPI161_0@toc@l
20097 ; PWR8-NEXT: lxvd2x 35, 0, 3
20098 ; PWR8-NEXT: vcmpgtud 2, 3, 2
20101 ; PWR9-LABEL: ult_32_v2i64:
20103 ; PWR9-NEXT: addis 3, 2, .LCPI161_0@toc@ha
20104 ; PWR9-NEXT: vpopcntd 2, 2
20105 ; PWR9-NEXT: addi 3, 3, .LCPI161_0@toc@l
20106 ; PWR9-NEXT: lxv 35, 0(3)
20107 ; PWR9-NEXT: vcmpgtud 2, 3, 2
20109 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
20110 %3 = icmp ult <2 x i64> %2, <i64 32, i64 32>
20111 %4 = sext <2 x i1> %3 to <2 x i64>
20115 define <2 x i64> @ugt_32_v2i64(<2 x i64> %0) {
20116 ; PWR5-LABEL: ugt_32_v2i64:
20118 ; PWR5-NEXT: lis 5, 21845
20119 ; PWR5-NEXT: lis 6, 13107
20120 ; PWR5-NEXT: ori 5, 5, 21845
20121 ; PWR5-NEXT: rotldi 8, 4, 63
20122 ; PWR5-NEXT: rotldi 9, 3, 63
20123 ; PWR5-NEXT: rldimi 5, 5, 32, 0
20124 ; PWR5-NEXT: and 8, 8, 5
20125 ; PWR5-NEXT: and 5, 9, 5
20126 ; PWR5-NEXT: ori 6, 6, 13107
20127 ; PWR5-NEXT: sub 3, 3, 5
20128 ; PWR5-NEXT: rldimi 6, 6, 32, 0
20129 ; PWR5-NEXT: sub 4, 4, 8
20130 ; PWR5-NEXT: and 8, 3, 6
20131 ; PWR5-NEXT: rotldi 3, 3, 62
20132 ; PWR5-NEXT: and 3, 3, 6
20133 ; PWR5-NEXT: lis 7, 3855
20134 ; PWR5-NEXT: and 5, 4, 6
20135 ; PWR5-NEXT: rotldi 4, 4, 62
20136 ; PWR5-NEXT: add 3, 8, 3
20137 ; PWR5-NEXT: lis 9, 257
20138 ; PWR5-NEXT: ori 7, 7, 3855
20139 ; PWR5-NEXT: and 4, 4, 6
20140 ; PWR5-NEXT: rldicl 6, 3, 60, 4
20141 ; PWR5-NEXT: ori 9, 9, 257
20142 ; PWR5-NEXT: rldimi 7, 7, 32, 0
20143 ; PWR5-NEXT: add 4, 5, 4
20144 ; PWR5-NEXT: add 3, 3, 6
20145 ; PWR5-NEXT: rldimi 9, 9, 32, 0
20146 ; PWR5-NEXT: rldicl 5, 4, 60, 4
20147 ; PWR5-NEXT: and 3, 3, 7
20148 ; PWR5-NEXT: add 4, 4, 5
20149 ; PWR5-NEXT: mulld 3, 3, 9
20150 ; PWR5-NEXT: and 4, 4, 7
20151 ; PWR5-NEXT: rldicl 3, 3, 8, 56
20152 ; PWR5-NEXT: mulld 4, 4, 9
20153 ; PWR5-NEXT: li 5, 32
20154 ; PWR5-NEXT: subfic 3, 3, 32
20155 ; PWR5-NEXT: rldicl 4, 4, 8, 56
20156 ; PWR5-NEXT: subfe 3, 5, 5
20157 ; PWR5-NEXT: subfic 4, 4, 32
20158 ; PWR5-NEXT: subfe 4, 5, 5
20161 ; PWR6-LABEL: ugt_32_v2i64:
20163 ; PWR6-NEXT: lis 5, 21845
20164 ; PWR6-NEXT: lis 6, 13107
20165 ; PWR6-NEXT: ori 5, 5, 21845
20166 ; PWR6-NEXT: rotldi 8, 4, 63
20167 ; PWR6-NEXT: rotldi 9, 3, 63
20168 ; PWR6-NEXT: rldimi 5, 5, 32, 0
20169 ; PWR6-NEXT: and 8, 8, 5
20170 ; PWR6-NEXT: and 5, 9, 5
20171 ; PWR6-NEXT: ori 6, 6, 13107
20172 ; PWR6-NEXT: sub 3, 3, 5
20173 ; PWR6-NEXT: rldimi 6, 6, 32, 0
20174 ; PWR6-NEXT: sub 4, 4, 8
20175 ; PWR6-NEXT: and 8, 3, 6
20176 ; PWR6-NEXT: rotldi 3, 3, 62
20177 ; PWR6-NEXT: and 3, 3, 6
20178 ; PWR6-NEXT: lis 7, 3855
20179 ; PWR6-NEXT: and 5, 4, 6
20180 ; PWR6-NEXT: rotldi 4, 4, 62
20181 ; PWR6-NEXT: add 3, 8, 3
20182 ; PWR6-NEXT: lis 9, 257
20183 ; PWR6-NEXT: ori 7, 7, 3855
20184 ; PWR6-NEXT: and 4, 4, 6
20185 ; PWR6-NEXT: rldicl 6, 3, 60, 4
20186 ; PWR6-NEXT: ori 9, 9, 257
20187 ; PWR6-NEXT: rldimi 7, 7, 32, 0
20188 ; PWR6-NEXT: add 4, 5, 4
20189 ; PWR6-NEXT: add 3, 3, 6
20190 ; PWR6-NEXT: rldimi 9, 9, 32, 0
20191 ; PWR6-NEXT: rldicl 5, 4, 60, 4
20192 ; PWR6-NEXT: and 3, 3, 7
20193 ; PWR6-NEXT: add 4, 4, 5
20194 ; PWR6-NEXT: mulld 3, 3, 9
20195 ; PWR6-NEXT: and 4, 4, 7
20196 ; PWR6-NEXT: rldicl 3, 3, 8, 56
20197 ; PWR6-NEXT: mulld 4, 4, 9
20198 ; PWR6-NEXT: li 5, 32
20199 ; PWR6-NEXT: subfic 3, 3, 32
20200 ; PWR6-NEXT: rldicl 4, 4, 8, 56
20201 ; PWR6-NEXT: subfe 3, 5, 5
20202 ; PWR6-NEXT: subfic 4, 4, 32
20203 ; PWR6-NEXT: subfe 4, 5, 5
20206 ; PWR7-LABEL: ugt_32_v2i64:
20208 ; PWR7-NEXT: addi 3, 1, -32
20209 ; PWR7-NEXT: li 5, 0
20210 ; PWR7-NEXT: li 6, -1
20211 ; PWR7-NEXT: stxvd2x 34, 0, 3
20212 ; PWR7-NEXT: ld 3, -24(1)
20213 ; PWR7-NEXT: ld 4, -32(1)
20214 ; PWR7-NEXT: popcntd 3, 3
20215 ; PWR7-NEXT: popcntd 4, 4
20216 ; PWR7-NEXT: cmpldi 3, 32
20217 ; PWR7-NEXT: iselgt 3, 6, 5
20218 ; PWR7-NEXT: cmpldi 4, 32
20219 ; PWR7-NEXT: iselgt 4, 6, 5
20220 ; PWR7-NEXT: std 3, -8(1)
20221 ; PWR7-NEXT: addi 3, 1, -16
20222 ; PWR7-NEXT: std 4, -16(1)
20223 ; PWR7-NEXT: lxvd2x 34, 0, 3
20226 ; PWR8-LABEL: ugt_32_v2i64:
20228 ; PWR8-NEXT: addis 3, 2, .LCPI162_0@toc@ha
20229 ; PWR8-NEXT: vpopcntd 2, 2
20230 ; PWR8-NEXT: addi 3, 3, .LCPI162_0@toc@l
20231 ; PWR8-NEXT: lxvd2x 35, 0, 3
20232 ; PWR8-NEXT: vcmpgtud 2, 2, 3
20235 ; PWR9-LABEL: ugt_32_v2i64:
20237 ; PWR9-NEXT: addis 3, 2, .LCPI162_0@toc@ha
20238 ; PWR9-NEXT: vpopcntd 2, 2
20239 ; PWR9-NEXT: addi 3, 3, .LCPI162_0@toc@l
20240 ; PWR9-NEXT: lxv 35, 0(3)
20241 ; PWR9-NEXT: vcmpgtud 2, 2, 3
20243 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
20244 %3 = icmp ugt <2 x i64> %2, <i64 32, i64 32>
20245 %4 = sext <2 x i1> %3 to <2 x i64>
20249 define <2 x i64> @ult_33_v2i64(<2 x i64> %0) {
20250 ; PWR5-LABEL: ult_33_v2i64:
20252 ; PWR5-NEXT: lis 5, 21845
20253 ; PWR5-NEXT: lis 6, 13107
20254 ; PWR5-NEXT: ori 5, 5, 21845
20255 ; PWR5-NEXT: rotldi 8, 4, 63
20256 ; PWR5-NEXT: rotldi 9, 3, 63
20257 ; PWR5-NEXT: rldimi 5, 5, 32, 0
20258 ; PWR5-NEXT: and 8, 8, 5
20259 ; PWR5-NEXT: and 5, 9, 5
20260 ; PWR5-NEXT: ori 6, 6, 13107
20261 ; PWR5-NEXT: sub 3, 3, 5
20262 ; PWR5-NEXT: rldimi 6, 6, 32, 0
20263 ; PWR5-NEXT: sub 4, 4, 8
20264 ; PWR5-NEXT: and 8, 3, 6
20265 ; PWR5-NEXT: rotldi 3, 3, 62
20266 ; PWR5-NEXT: and 3, 3, 6
20267 ; PWR5-NEXT: lis 7, 3855
20268 ; PWR5-NEXT: and 5, 4, 6
20269 ; PWR5-NEXT: rotldi 4, 4, 62
20270 ; PWR5-NEXT: add 3, 8, 3
20271 ; PWR5-NEXT: lis 9, 257
20272 ; PWR5-NEXT: ori 7, 7, 3855
20273 ; PWR5-NEXT: and 4, 4, 6
20274 ; PWR5-NEXT: rldicl 6, 3, 60, 4
20275 ; PWR5-NEXT: ori 9, 9, 257
20276 ; PWR5-NEXT: rldimi 7, 7, 32, 0
20277 ; PWR5-NEXT: add 4, 5, 4
20278 ; PWR5-NEXT: add 3, 3, 6
20279 ; PWR5-NEXT: rldimi 9, 9, 32, 0
20280 ; PWR5-NEXT: rldicl 5, 4, 60, 4
20281 ; PWR5-NEXT: and 3, 3, 7
20282 ; PWR5-NEXT: add 4, 4, 5
20283 ; PWR5-NEXT: mulld 3, 3, 9
20284 ; PWR5-NEXT: and 4, 4, 7
20285 ; PWR5-NEXT: rldicl 3, 3, 8, 56
20286 ; PWR5-NEXT: li 5, 33
20287 ; PWR5-NEXT: mulld 4, 4, 9
20288 ; PWR5-NEXT: subc 6, 3, 5
20289 ; PWR5-NEXT: rldicl 4, 4, 8, 56
20290 ; PWR5-NEXT: subfe 3, 3, 3
20291 ; PWR5-NEXT: subc 5, 4, 5
20292 ; PWR5-NEXT: subfe 4, 4, 4
20295 ; PWR6-LABEL: ult_33_v2i64:
20297 ; PWR6-NEXT: lis 5, 21845
20298 ; PWR6-NEXT: lis 6, 13107
20299 ; PWR6-NEXT: ori 5, 5, 21845
20300 ; PWR6-NEXT: rotldi 8, 4, 63
20301 ; PWR6-NEXT: rotldi 9, 3, 63
20302 ; PWR6-NEXT: rldimi 5, 5, 32, 0
20303 ; PWR6-NEXT: and 8, 8, 5
20304 ; PWR6-NEXT: and 5, 9, 5
20305 ; PWR6-NEXT: ori 6, 6, 13107
20306 ; PWR6-NEXT: sub 3, 3, 5
20307 ; PWR6-NEXT: rldimi 6, 6, 32, 0
20308 ; PWR6-NEXT: sub 4, 4, 8
20309 ; PWR6-NEXT: and 8, 3, 6
20310 ; PWR6-NEXT: rotldi 3, 3, 62
20311 ; PWR6-NEXT: and 3, 3, 6
20312 ; PWR6-NEXT: lis 7, 3855
20313 ; PWR6-NEXT: and 5, 4, 6
20314 ; PWR6-NEXT: rotldi 4, 4, 62
20315 ; PWR6-NEXT: add 3, 8, 3
20316 ; PWR6-NEXT: lis 9, 257
20317 ; PWR6-NEXT: ori 7, 7, 3855
20318 ; PWR6-NEXT: and 4, 4, 6
20319 ; PWR6-NEXT: rldicl 6, 3, 60, 4
20320 ; PWR6-NEXT: ori 9, 9, 257
20321 ; PWR6-NEXT: rldimi 7, 7, 32, 0
20322 ; PWR6-NEXT: add 4, 5, 4
20323 ; PWR6-NEXT: add 3, 3, 6
20324 ; PWR6-NEXT: rldimi 9, 9, 32, 0
20325 ; PWR6-NEXT: rldicl 5, 4, 60, 4
20326 ; PWR6-NEXT: and 3, 3, 7
20327 ; PWR6-NEXT: add 4, 4, 5
20328 ; PWR6-NEXT: mulld 3, 3, 9
20329 ; PWR6-NEXT: and 4, 4, 7
20330 ; PWR6-NEXT: rldicl 3, 3, 8, 56
20331 ; PWR6-NEXT: li 5, 33
20332 ; PWR6-NEXT: mulld 4, 4, 9
20333 ; PWR6-NEXT: subc 6, 3, 5
20334 ; PWR6-NEXT: rldicl 4, 4, 8, 56
20335 ; PWR6-NEXT: subfe 3, 3, 3
20336 ; PWR6-NEXT: subc 5, 4, 5
20337 ; PWR6-NEXT: subfe 4, 4, 4
20340 ; PWR7-LABEL: ult_33_v2i64:
20342 ; PWR7-NEXT: addi 3, 1, -32
20343 ; PWR7-NEXT: li 5, 0
20344 ; PWR7-NEXT: li 6, -1
20345 ; PWR7-NEXT: stxvd2x 34, 0, 3
20346 ; PWR7-NEXT: ld 3, -24(1)
20347 ; PWR7-NEXT: ld 4, -32(1)
20348 ; PWR7-NEXT: popcntd 3, 3
20349 ; PWR7-NEXT: popcntd 4, 4
20350 ; PWR7-NEXT: cmpldi 3, 33
20351 ; PWR7-NEXT: isellt 3, 6, 5
20352 ; PWR7-NEXT: cmpldi 4, 33
20353 ; PWR7-NEXT: isellt 4, 6, 5
20354 ; PWR7-NEXT: std 3, -8(1)
20355 ; PWR7-NEXT: addi 3, 1, -16
20356 ; PWR7-NEXT: std 4, -16(1)
20357 ; PWR7-NEXT: lxvd2x 34, 0, 3
20360 ; PWR8-LABEL: ult_33_v2i64:
20362 ; PWR8-NEXT: addis 3, 2, .LCPI163_0@toc@ha
20363 ; PWR8-NEXT: vpopcntd 2, 2
20364 ; PWR8-NEXT: addi 3, 3, .LCPI163_0@toc@l
20365 ; PWR8-NEXT: lxvd2x 35, 0, 3
20366 ; PWR8-NEXT: vcmpgtud 2, 3, 2
20369 ; PWR9-LABEL: ult_33_v2i64:
20371 ; PWR9-NEXT: addis 3, 2, .LCPI163_0@toc@ha
20372 ; PWR9-NEXT: vpopcntd 2, 2
20373 ; PWR9-NEXT: addi 3, 3, .LCPI163_0@toc@l
20374 ; PWR9-NEXT: lxv 35, 0(3)
20375 ; PWR9-NEXT: vcmpgtud 2, 3, 2
20377 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
20378 %3 = icmp ult <2 x i64> %2, <i64 33, i64 33>
20379 %4 = sext <2 x i1> %3 to <2 x i64>
20383 define <2 x i64> @ugt_33_v2i64(<2 x i64> %0) {
20384 ; PWR5-LABEL: ugt_33_v2i64:
20386 ; PWR5-NEXT: lis 5, 21845
20387 ; PWR5-NEXT: lis 6, 13107
20388 ; PWR5-NEXT: ori 5, 5, 21845
20389 ; PWR5-NEXT: rotldi 8, 4, 63
20390 ; PWR5-NEXT: rotldi 9, 3, 63
20391 ; PWR5-NEXT: rldimi 5, 5, 32, 0
20392 ; PWR5-NEXT: and 8, 8, 5
20393 ; PWR5-NEXT: and 5, 9, 5
20394 ; PWR5-NEXT: ori 6, 6, 13107
20395 ; PWR5-NEXT: sub 3, 3, 5
20396 ; PWR5-NEXT: rldimi 6, 6, 32, 0
20397 ; PWR5-NEXT: sub 4, 4, 8
20398 ; PWR5-NEXT: and 8, 3, 6
20399 ; PWR5-NEXT: rotldi 3, 3, 62
20400 ; PWR5-NEXT: and 3, 3, 6
20401 ; PWR5-NEXT: lis 7, 3855
20402 ; PWR5-NEXT: and 5, 4, 6
20403 ; PWR5-NEXT: rotldi 4, 4, 62
20404 ; PWR5-NEXT: add 3, 8, 3
20405 ; PWR5-NEXT: lis 9, 257
20406 ; PWR5-NEXT: ori 7, 7, 3855
20407 ; PWR5-NEXT: and 4, 4, 6
20408 ; PWR5-NEXT: rldicl 6, 3, 60, 4
20409 ; PWR5-NEXT: ori 9, 9, 257
20410 ; PWR5-NEXT: rldimi 7, 7, 32, 0
20411 ; PWR5-NEXT: add 4, 5, 4
20412 ; PWR5-NEXT: add 3, 3, 6
20413 ; PWR5-NEXT: rldimi 9, 9, 32, 0
20414 ; PWR5-NEXT: rldicl 5, 4, 60, 4
20415 ; PWR5-NEXT: and 3, 3, 7
20416 ; PWR5-NEXT: add 4, 4, 5
20417 ; PWR5-NEXT: mulld 3, 3, 9
20418 ; PWR5-NEXT: and 4, 4, 7
20419 ; PWR5-NEXT: rldicl 3, 3, 8, 56
20420 ; PWR5-NEXT: mulld 4, 4, 9
20421 ; PWR5-NEXT: li 5, 33
20422 ; PWR5-NEXT: subfic 3, 3, 33
20423 ; PWR5-NEXT: rldicl 4, 4, 8, 56
20424 ; PWR5-NEXT: subfe 3, 5, 5
20425 ; PWR5-NEXT: subfic 4, 4, 33
20426 ; PWR5-NEXT: subfe 4, 5, 5
20429 ; PWR6-LABEL: ugt_33_v2i64:
20431 ; PWR6-NEXT: lis 5, 21845
20432 ; PWR6-NEXT: lis 6, 13107
20433 ; PWR6-NEXT: ori 5, 5, 21845
20434 ; PWR6-NEXT: rotldi 8, 4, 63
20435 ; PWR6-NEXT: rotldi 9, 3, 63
20436 ; PWR6-NEXT: rldimi 5, 5, 32, 0
20437 ; PWR6-NEXT: and 8, 8, 5
20438 ; PWR6-NEXT: and 5, 9, 5
20439 ; PWR6-NEXT: ori 6, 6, 13107
20440 ; PWR6-NEXT: sub 3, 3, 5
20441 ; PWR6-NEXT: rldimi 6, 6, 32, 0
20442 ; PWR6-NEXT: sub 4, 4, 8
20443 ; PWR6-NEXT: and 8, 3, 6
20444 ; PWR6-NEXT: rotldi 3, 3, 62
20445 ; PWR6-NEXT: and 3, 3, 6
20446 ; PWR6-NEXT: lis 7, 3855
20447 ; PWR6-NEXT: and 5, 4, 6
20448 ; PWR6-NEXT: rotldi 4, 4, 62
20449 ; PWR6-NEXT: add 3, 8, 3
20450 ; PWR6-NEXT: lis 9, 257
20451 ; PWR6-NEXT: ori 7, 7, 3855
20452 ; PWR6-NEXT: and 4, 4, 6
20453 ; PWR6-NEXT: rldicl 6, 3, 60, 4
20454 ; PWR6-NEXT: ori 9, 9, 257
20455 ; PWR6-NEXT: rldimi 7, 7, 32, 0
20456 ; PWR6-NEXT: add 4, 5, 4
20457 ; PWR6-NEXT: add 3, 3, 6
20458 ; PWR6-NEXT: rldimi 9, 9, 32, 0
20459 ; PWR6-NEXT: rldicl 5, 4, 60, 4
20460 ; PWR6-NEXT: and 3, 3, 7
20461 ; PWR6-NEXT: add 4, 4, 5
20462 ; PWR6-NEXT: mulld 3, 3, 9
20463 ; PWR6-NEXT: and 4, 4, 7
20464 ; PWR6-NEXT: rldicl 3, 3, 8, 56
20465 ; PWR6-NEXT: mulld 4, 4, 9
20466 ; PWR6-NEXT: li 5, 33
20467 ; PWR6-NEXT: subfic 3, 3, 33
20468 ; PWR6-NEXT: rldicl 4, 4, 8, 56
20469 ; PWR6-NEXT: subfe 3, 5, 5
20470 ; PWR6-NEXT: subfic 4, 4, 33
20471 ; PWR6-NEXT: subfe 4, 5, 5
20474 ; PWR7-LABEL: ugt_33_v2i64:
20476 ; PWR7-NEXT: addi 3, 1, -32
20477 ; PWR7-NEXT: li 5, 0
20478 ; PWR7-NEXT: li 6, -1
20479 ; PWR7-NEXT: stxvd2x 34, 0, 3
20480 ; PWR7-NEXT: ld 3, -24(1)
20481 ; PWR7-NEXT: ld 4, -32(1)
20482 ; PWR7-NEXT: popcntd 3, 3
20483 ; PWR7-NEXT: popcntd 4, 4
20484 ; PWR7-NEXT: cmpldi 3, 33
20485 ; PWR7-NEXT: iselgt 3, 6, 5
20486 ; PWR7-NEXT: cmpldi 4, 33
20487 ; PWR7-NEXT: iselgt 4, 6, 5
20488 ; PWR7-NEXT: std 3, -8(1)
20489 ; PWR7-NEXT: addi 3, 1, -16
20490 ; PWR7-NEXT: std 4, -16(1)
20491 ; PWR7-NEXT: lxvd2x 34, 0, 3
20494 ; PWR8-LABEL: ugt_33_v2i64:
20496 ; PWR8-NEXT: addis 3, 2, .LCPI164_0@toc@ha
20497 ; PWR8-NEXT: vpopcntd 2, 2
20498 ; PWR8-NEXT: addi 3, 3, .LCPI164_0@toc@l
20499 ; PWR8-NEXT: lxvd2x 35, 0, 3
20500 ; PWR8-NEXT: vcmpgtud 2, 2, 3
20503 ; PWR9-LABEL: ugt_33_v2i64:
20505 ; PWR9-NEXT: addis 3, 2, .LCPI164_0@toc@ha
20506 ; PWR9-NEXT: vpopcntd 2, 2
20507 ; PWR9-NEXT: addi 3, 3, .LCPI164_0@toc@l
20508 ; PWR9-NEXT: lxv 35, 0(3)
20509 ; PWR9-NEXT: vcmpgtud 2, 2, 3
20511 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
20512 %3 = icmp ugt <2 x i64> %2, <i64 33, i64 33>
20513 %4 = sext <2 x i1> %3 to <2 x i64>
20517 define <2 x i64> @ult_34_v2i64(<2 x i64> %0) {
20518 ; PWR5-LABEL: ult_34_v2i64:
20520 ; PWR5-NEXT: lis 5, 21845
20521 ; PWR5-NEXT: lis 6, 13107
20522 ; PWR5-NEXT: ori 5, 5, 21845
20523 ; PWR5-NEXT: rotldi 8, 4, 63
20524 ; PWR5-NEXT: rotldi 9, 3, 63
20525 ; PWR5-NEXT: rldimi 5, 5, 32, 0
20526 ; PWR5-NEXT: and 8, 8, 5
20527 ; PWR5-NEXT: and 5, 9, 5
20528 ; PWR5-NEXT: ori 6, 6, 13107
20529 ; PWR5-NEXT: sub 3, 3, 5
20530 ; PWR5-NEXT: rldimi 6, 6, 32, 0
20531 ; PWR5-NEXT: sub 4, 4, 8
20532 ; PWR5-NEXT: and 8, 3, 6
20533 ; PWR5-NEXT: rotldi 3, 3, 62
20534 ; PWR5-NEXT: and 3, 3, 6
20535 ; PWR5-NEXT: lis 7, 3855
20536 ; PWR5-NEXT: and 5, 4, 6
20537 ; PWR5-NEXT: rotldi 4, 4, 62
20538 ; PWR5-NEXT: add 3, 8, 3
20539 ; PWR5-NEXT: lis 9, 257
20540 ; PWR5-NEXT: ori 7, 7, 3855
20541 ; PWR5-NEXT: and 4, 4, 6
20542 ; PWR5-NEXT: rldicl 6, 3, 60, 4
20543 ; PWR5-NEXT: ori 9, 9, 257
20544 ; PWR5-NEXT: rldimi 7, 7, 32, 0
20545 ; PWR5-NEXT: add 4, 5, 4
20546 ; PWR5-NEXT: add 3, 3, 6
20547 ; PWR5-NEXT: rldimi 9, 9, 32, 0
20548 ; PWR5-NEXT: rldicl 5, 4, 60, 4
20549 ; PWR5-NEXT: and 3, 3, 7
20550 ; PWR5-NEXT: add 4, 4, 5
20551 ; PWR5-NEXT: mulld 3, 3, 9
20552 ; PWR5-NEXT: and 4, 4, 7
20553 ; PWR5-NEXT: rldicl 3, 3, 8, 56
20554 ; PWR5-NEXT: li 5, 34
20555 ; PWR5-NEXT: mulld 4, 4, 9
20556 ; PWR5-NEXT: subc 6, 3, 5
20557 ; PWR5-NEXT: rldicl 4, 4, 8, 56
20558 ; PWR5-NEXT: subfe 3, 3, 3
20559 ; PWR5-NEXT: subc 5, 4, 5
20560 ; PWR5-NEXT: subfe 4, 4, 4
20563 ; PWR6-LABEL: ult_34_v2i64:
20565 ; PWR6-NEXT: lis 5, 21845
20566 ; PWR6-NEXT: lis 6, 13107
20567 ; PWR6-NEXT: ori 5, 5, 21845
20568 ; PWR6-NEXT: rotldi 8, 4, 63
20569 ; PWR6-NEXT: rotldi 9, 3, 63
20570 ; PWR6-NEXT: rldimi 5, 5, 32, 0
20571 ; PWR6-NEXT: and 8, 8, 5
20572 ; PWR6-NEXT: and 5, 9, 5
20573 ; PWR6-NEXT: ori 6, 6, 13107
20574 ; PWR6-NEXT: sub 3, 3, 5
20575 ; PWR6-NEXT: rldimi 6, 6, 32, 0
20576 ; PWR6-NEXT: sub 4, 4, 8
20577 ; PWR6-NEXT: and 8, 3, 6
20578 ; PWR6-NEXT: rotldi 3, 3, 62
20579 ; PWR6-NEXT: and 3, 3, 6
20580 ; PWR6-NEXT: lis 7, 3855
20581 ; PWR6-NEXT: and 5, 4, 6
20582 ; PWR6-NEXT: rotldi 4, 4, 62
20583 ; PWR6-NEXT: add 3, 8, 3
20584 ; PWR6-NEXT: lis 9, 257
20585 ; PWR6-NEXT: ori 7, 7, 3855
20586 ; PWR6-NEXT: and 4, 4, 6
20587 ; PWR6-NEXT: rldicl 6, 3, 60, 4
20588 ; PWR6-NEXT: ori 9, 9, 257
20589 ; PWR6-NEXT: rldimi 7, 7, 32, 0
20590 ; PWR6-NEXT: add 4, 5, 4
20591 ; PWR6-NEXT: add 3, 3, 6
20592 ; PWR6-NEXT: rldimi 9, 9, 32, 0
20593 ; PWR6-NEXT: rldicl 5, 4, 60, 4
20594 ; PWR6-NEXT: and 3, 3, 7
20595 ; PWR6-NEXT: add 4, 4, 5
20596 ; PWR6-NEXT: mulld 3, 3, 9
20597 ; PWR6-NEXT: and 4, 4, 7
20598 ; PWR6-NEXT: rldicl 3, 3, 8, 56
20599 ; PWR6-NEXT: li 5, 34
20600 ; PWR6-NEXT: mulld 4, 4, 9
20601 ; PWR6-NEXT: subc 6, 3, 5
20602 ; PWR6-NEXT: rldicl 4, 4, 8, 56
20603 ; PWR6-NEXT: subfe 3, 3, 3
20604 ; PWR6-NEXT: subc 5, 4, 5
20605 ; PWR6-NEXT: subfe 4, 4, 4
20608 ; PWR7-LABEL: ult_34_v2i64:
20610 ; PWR7-NEXT: addi 3, 1, -32
20611 ; PWR7-NEXT: li 5, 0
20612 ; PWR7-NEXT: li 6, -1
20613 ; PWR7-NEXT: stxvd2x 34, 0, 3
20614 ; PWR7-NEXT: ld 3, -24(1)
20615 ; PWR7-NEXT: ld 4, -32(1)
20616 ; PWR7-NEXT: popcntd 3, 3
20617 ; PWR7-NEXT: popcntd 4, 4
20618 ; PWR7-NEXT: cmpldi 3, 34
20619 ; PWR7-NEXT: isellt 3, 6, 5
20620 ; PWR7-NEXT: cmpldi 4, 34
20621 ; PWR7-NEXT: isellt 4, 6, 5
20622 ; PWR7-NEXT: std 3, -8(1)
20623 ; PWR7-NEXT: addi 3, 1, -16
20624 ; PWR7-NEXT: std 4, -16(1)
20625 ; PWR7-NEXT: lxvd2x 34, 0, 3
20628 ; PWR8-LABEL: ult_34_v2i64:
20630 ; PWR8-NEXT: addis 3, 2, .LCPI165_0@toc@ha
20631 ; PWR8-NEXT: vpopcntd 2, 2
20632 ; PWR8-NEXT: addi 3, 3, .LCPI165_0@toc@l
20633 ; PWR8-NEXT: lxvd2x 35, 0, 3
20634 ; PWR8-NEXT: vcmpgtud 2, 3, 2
20637 ; PWR9-LABEL: ult_34_v2i64:
20639 ; PWR9-NEXT: addis 3, 2, .LCPI165_0@toc@ha
20640 ; PWR9-NEXT: vpopcntd 2, 2
20641 ; PWR9-NEXT: addi 3, 3, .LCPI165_0@toc@l
20642 ; PWR9-NEXT: lxv 35, 0(3)
20643 ; PWR9-NEXT: vcmpgtud 2, 3, 2
20645 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
20646 %3 = icmp ult <2 x i64> %2, <i64 34, i64 34>
20647 %4 = sext <2 x i1> %3 to <2 x i64>
20651 define <2 x i64> @ugt_34_v2i64(<2 x i64> %0) {
20652 ; PWR5-LABEL: ugt_34_v2i64:
20654 ; PWR5-NEXT: lis 5, 21845
20655 ; PWR5-NEXT: lis 6, 13107
20656 ; PWR5-NEXT: ori 5, 5, 21845
20657 ; PWR5-NEXT: rotldi 8, 4, 63
20658 ; PWR5-NEXT: rotldi 9, 3, 63
20659 ; PWR5-NEXT: rldimi 5, 5, 32, 0
20660 ; PWR5-NEXT: and 8, 8, 5
20661 ; PWR5-NEXT: and 5, 9, 5
20662 ; PWR5-NEXT: ori 6, 6, 13107
20663 ; PWR5-NEXT: sub 3, 3, 5
20664 ; PWR5-NEXT: rldimi 6, 6, 32, 0
20665 ; PWR5-NEXT: sub 4, 4, 8
20666 ; PWR5-NEXT: and 8, 3, 6
20667 ; PWR5-NEXT: rotldi 3, 3, 62
20668 ; PWR5-NEXT: and 3, 3, 6
20669 ; PWR5-NEXT: lis 7, 3855
20670 ; PWR5-NEXT: and 5, 4, 6
20671 ; PWR5-NEXT: rotldi 4, 4, 62
20672 ; PWR5-NEXT: add 3, 8, 3
20673 ; PWR5-NEXT: lis 9, 257
20674 ; PWR5-NEXT: ori 7, 7, 3855
20675 ; PWR5-NEXT: and 4, 4, 6
20676 ; PWR5-NEXT: rldicl 6, 3, 60, 4
20677 ; PWR5-NEXT: ori 9, 9, 257
20678 ; PWR5-NEXT: rldimi 7, 7, 32, 0
20679 ; PWR5-NEXT: add 4, 5, 4
20680 ; PWR5-NEXT: add 3, 3, 6
20681 ; PWR5-NEXT: rldimi 9, 9, 32, 0
20682 ; PWR5-NEXT: rldicl 5, 4, 60, 4
20683 ; PWR5-NEXT: and 3, 3, 7
20684 ; PWR5-NEXT: add 4, 4, 5
20685 ; PWR5-NEXT: mulld 3, 3, 9
20686 ; PWR5-NEXT: and 4, 4, 7
20687 ; PWR5-NEXT: rldicl 3, 3, 8, 56
20688 ; PWR5-NEXT: mulld 4, 4, 9
20689 ; PWR5-NEXT: li 5, 34
20690 ; PWR5-NEXT: subfic 3, 3, 34
20691 ; PWR5-NEXT: rldicl 4, 4, 8, 56
20692 ; PWR5-NEXT: subfe 3, 5, 5
20693 ; PWR5-NEXT: subfic 4, 4, 34
20694 ; PWR5-NEXT: subfe 4, 5, 5
20697 ; PWR6-LABEL: ugt_34_v2i64:
20699 ; PWR6-NEXT: lis 5, 21845
20700 ; PWR6-NEXT: lis 6, 13107
20701 ; PWR6-NEXT: ori 5, 5, 21845
20702 ; PWR6-NEXT: rotldi 8, 4, 63
20703 ; PWR6-NEXT: rotldi 9, 3, 63
20704 ; PWR6-NEXT: rldimi 5, 5, 32, 0
20705 ; PWR6-NEXT: and 8, 8, 5
20706 ; PWR6-NEXT: and 5, 9, 5
20707 ; PWR6-NEXT: ori 6, 6, 13107
20708 ; PWR6-NEXT: sub 3, 3, 5
20709 ; PWR6-NEXT: rldimi 6, 6, 32, 0
20710 ; PWR6-NEXT: sub 4, 4, 8
20711 ; PWR6-NEXT: and 8, 3, 6
20712 ; PWR6-NEXT: rotldi 3, 3, 62
20713 ; PWR6-NEXT: and 3, 3, 6
20714 ; PWR6-NEXT: lis 7, 3855
20715 ; PWR6-NEXT: and 5, 4, 6
20716 ; PWR6-NEXT: rotldi 4, 4, 62
20717 ; PWR6-NEXT: add 3, 8, 3
20718 ; PWR6-NEXT: lis 9, 257
20719 ; PWR6-NEXT: ori 7, 7, 3855
20720 ; PWR6-NEXT: and 4, 4, 6
20721 ; PWR6-NEXT: rldicl 6, 3, 60, 4
20722 ; PWR6-NEXT: ori 9, 9, 257
20723 ; PWR6-NEXT: rldimi 7, 7, 32, 0
20724 ; PWR6-NEXT: add 4, 5, 4
20725 ; PWR6-NEXT: add 3, 3, 6
20726 ; PWR6-NEXT: rldimi 9, 9, 32, 0
20727 ; PWR6-NEXT: rldicl 5, 4, 60, 4
20728 ; PWR6-NEXT: and 3, 3, 7
20729 ; PWR6-NEXT: add 4, 4, 5
20730 ; PWR6-NEXT: mulld 3, 3, 9
20731 ; PWR6-NEXT: and 4, 4, 7
20732 ; PWR6-NEXT: rldicl 3, 3, 8, 56
20733 ; PWR6-NEXT: mulld 4, 4, 9
20734 ; PWR6-NEXT: li 5, 34
20735 ; PWR6-NEXT: subfic 3, 3, 34
20736 ; PWR6-NEXT: rldicl 4, 4, 8, 56
20737 ; PWR6-NEXT: subfe 3, 5, 5
20738 ; PWR6-NEXT: subfic 4, 4, 34
20739 ; PWR6-NEXT: subfe 4, 5, 5
20742 ; PWR7-LABEL: ugt_34_v2i64:
20744 ; PWR7-NEXT: addi 3, 1, -32
20745 ; PWR7-NEXT: li 5, 0
20746 ; PWR7-NEXT: li 6, -1
20747 ; PWR7-NEXT: stxvd2x 34, 0, 3
20748 ; PWR7-NEXT: ld 3, -24(1)
20749 ; PWR7-NEXT: ld 4, -32(1)
20750 ; PWR7-NEXT: popcntd 3, 3
20751 ; PWR7-NEXT: popcntd 4, 4
20752 ; PWR7-NEXT: cmpldi 3, 34
20753 ; PWR7-NEXT: iselgt 3, 6, 5
20754 ; PWR7-NEXT: cmpldi 4, 34
20755 ; PWR7-NEXT: iselgt 4, 6, 5
20756 ; PWR7-NEXT: std 3, -8(1)
20757 ; PWR7-NEXT: addi 3, 1, -16
20758 ; PWR7-NEXT: std 4, -16(1)
20759 ; PWR7-NEXT: lxvd2x 34, 0, 3
20762 ; PWR8-LABEL: ugt_34_v2i64:
20764 ; PWR8-NEXT: addis 3, 2, .LCPI166_0@toc@ha
20765 ; PWR8-NEXT: vpopcntd 2, 2
20766 ; PWR8-NEXT: addi 3, 3, .LCPI166_0@toc@l
20767 ; PWR8-NEXT: lxvd2x 35, 0, 3
20768 ; PWR8-NEXT: vcmpgtud 2, 2, 3
20771 ; PWR9-LABEL: ugt_34_v2i64:
20773 ; PWR9-NEXT: addis 3, 2, .LCPI166_0@toc@ha
20774 ; PWR9-NEXT: vpopcntd 2, 2
20775 ; PWR9-NEXT: addi 3, 3, .LCPI166_0@toc@l
20776 ; PWR9-NEXT: lxv 35, 0(3)
20777 ; PWR9-NEXT: vcmpgtud 2, 2, 3
20779 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
20780 %3 = icmp ugt <2 x i64> %2, <i64 34, i64 34>
20781 %4 = sext <2 x i1> %3 to <2 x i64>
20785 define <2 x i64> @ult_35_v2i64(<2 x i64> %0) {
20786 ; PWR5-LABEL: ult_35_v2i64:
20788 ; PWR5-NEXT: lis 5, 21845
20789 ; PWR5-NEXT: lis 6, 13107
20790 ; PWR5-NEXT: ori 5, 5, 21845
20791 ; PWR5-NEXT: rotldi 8, 4, 63
20792 ; PWR5-NEXT: rotldi 9, 3, 63
20793 ; PWR5-NEXT: rldimi 5, 5, 32, 0
20794 ; PWR5-NEXT: and 8, 8, 5
20795 ; PWR5-NEXT: and 5, 9, 5
20796 ; PWR5-NEXT: ori 6, 6, 13107
20797 ; PWR5-NEXT: sub 3, 3, 5
20798 ; PWR5-NEXT: rldimi 6, 6, 32, 0
20799 ; PWR5-NEXT: sub 4, 4, 8
20800 ; PWR5-NEXT: and 8, 3, 6
20801 ; PWR5-NEXT: rotldi 3, 3, 62
20802 ; PWR5-NEXT: and 3, 3, 6
20803 ; PWR5-NEXT: lis 7, 3855
20804 ; PWR5-NEXT: and 5, 4, 6
20805 ; PWR5-NEXT: rotldi 4, 4, 62
20806 ; PWR5-NEXT: add 3, 8, 3
20807 ; PWR5-NEXT: lis 9, 257
20808 ; PWR5-NEXT: ori 7, 7, 3855
20809 ; PWR5-NEXT: and 4, 4, 6
20810 ; PWR5-NEXT: rldicl 6, 3, 60, 4
20811 ; PWR5-NEXT: ori 9, 9, 257
20812 ; PWR5-NEXT: rldimi 7, 7, 32, 0
20813 ; PWR5-NEXT: add 4, 5, 4
20814 ; PWR5-NEXT: add 3, 3, 6
20815 ; PWR5-NEXT: rldimi 9, 9, 32, 0
20816 ; PWR5-NEXT: rldicl 5, 4, 60, 4
20817 ; PWR5-NEXT: and 3, 3, 7
20818 ; PWR5-NEXT: add 4, 4, 5
20819 ; PWR5-NEXT: mulld 3, 3, 9
20820 ; PWR5-NEXT: and 4, 4, 7
20821 ; PWR5-NEXT: rldicl 3, 3, 8, 56
20822 ; PWR5-NEXT: li 5, 35
20823 ; PWR5-NEXT: mulld 4, 4, 9
20824 ; PWR5-NEXT: subc 6, 3, 5
20825 ; PWR5-NEXT: rldicl 4, 4, 8, 56
20826 ; PWR5-NEXT: subfe 3, 3, 3
20827 ; PWR5-NEXT: subc 5, 4, 5
20828 ; PWR5-NEXT: subfe 4, 4, 4
20831 ; PWR6-LABEL: ult_35_v2i64:
20833 ; PWR6-NEXT: lis 5, 21845
20834 ; PWR6-NEXT: lis 6, 13107
20835 ; PWR6-NEXT: ori 5, 5, 21845
20836 ; PWR6-NEXT: rotldi 8, 4, 63
20837 ; PWR6-NEXT: rotldi 9, 3, 63
20838 ; PWR6-NEXT: rldimi 5, 5, 32, 0
20839 ; PWR6-NEXT: and 8, 8, 5
20840 ; PWR6-NEXT: and 5, 9, 5
20841 ; PWR6-NEXT: ori 6, 6, 13107
20842 ; PWR6-NEXT: sub 3, 3, 5
20843 ; PWR6-NEXT: rldimi 6, 6, 32, 0
20844 ; PWR6-NEXT: sub 4, 4, 8
20845 ; PWR6-NEXT: and 8, 3, 6
20846 ; PWR6-NEXT: rotldi 3, 3, 62
20847 ; PWR6-NEXT: and 3, 3, 6
20848 ; PWR6-NEXT: lis 7, 3855
20849 ; PWR6-NEXT: and 5, 4, 6
20850 ; PWR6-NEXT: rotldi 4, 4, 62
20851 ; PWR6-NEXT: add 3, 8, 3
20852 ; PWR6-NEXT: lis 9, 257
20853 ; PWR6-NEXT: ori 7, 7, 3855
20854 ; PWR6-NEXT: and 4, 4, 6
20855 ; PWR6-NEXT: rldicl 6, 3, 60, 4
20856 ; PWR6-NEXT: ori 9, 9, 257
20857 ; PWR6-NEXT: rldimi 7, 7, 32, 0
20858 ; PWR6-NEXT: add 4, 5, 4
20859 ; PWR6-NEXT: add 3, 3, 6
20860 ; PWR6-NEXT: rldimi 9, 9, 32, 0
20861 ; PWR6-NEXT: rldicl 5, 4, 60, 4
20862 ; PWR6-NEXT: and 3, 3, 7
20863 ; PWR6-NEXT: add 4, 4, 5
20864 ; PWR6-NEXT: mulld 3, 3, 9
20865 ; PWR6-NEXT: and 4, 4, 7
20866 ; PWR6-NEXT: rldicl 3, 3, 8, 56
20867 ; PWR6-NEXT: li 5, 35
20868 ; PWR6-NEXT: mulld 4, 4, 9
20869 ; PWR6-NEXT: subc 6, 3, 5
20870 ; PWR6-NEXT: rldicl 4, 4, 8, 56
20871 ; PWR6-NEXT: subfe 3, 3, 3
20872 ; PWR6-NEXT: subc 5, 4, 5
20873 ; PWR6-NEXT: subfe 4, 4, 4
20876 ; PWR7-LABEL: ult_35_v2i64:
20878 ; PWR7-NEXT: addi 3, 1, -32
20879 ; PWR7-NEXT: li 5, 0
20880 ; PWR7-NEXT: li 6, -1
20881 ; PWR7-NEXT: stxvd2x 34, 0, 3
20882 ; PWR7-NEXT: ld 3, -24(1)
20883 ; PWR7-NEXT: ld 4, -32(1)
20884 ; PWR7-NEXT: popcntd 3, 3
20885 ; PWR7-NEXT: popcntd 4, 4
20886 ; PWR7-NEXT: cmpldi 3, 35
20887 ; PWR7-NEXT: isellt 3, 6, 5
20888 ; PWR7-NEXT: cmpldi 4, 35
20889 ; PWR7-NEXT: isellt 4, 6, 5
20890 ; PWR7-NEXT: std 3, -8(1)
20891 ; PWR7-NEXT: addi 3, 1, -16
20892 ; PWR7-NEXT: std 4, -16(1)
20893 ; PWR7-NEXT: lxvd2x 34, 0, 3
20896 ; PWR8-LABEL: ult_35_v2i64:
20898 ; PWR8-NEXT: addis 3, 2, .LCPI167_0@toc@ha
20899 ; PWR8-NEXT: vpopcntd 2, 2
20900 ; PWR8-NEXT: addi 3, 3, .LCPI167_0@toc@l
20901 ; PWR8-NEXT: lxvd2x 35, 0, 3
20902 ; PWR8-NEXT: vcmpgtud 2, 3, 2
20905 ; PWR9-LABEL: ult_35_v2i64:
20907 ; PWR9-NEXT: addis 3, 2, .LCPI167_0@toc@ha
20908 ; PWR9-NEXT: vpopcntd 2, 2
20909 ; PWR9-NEXT: addi 3, 3, .LCPI167_0@toc@l
20910 ; PWR9-NEXT: lxv 35, 0(3)
20911 ; PWR9-NEXT: vcmpgtud 2, 3, 2
20913 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
20914 %3 = icmp ult <2 x i64> %2, <i64 35, i64 35>
20915 %4 = sext <2 x i1> %3 to <2 x i64>
20919 define <2 x i64> @ugt_35_v2i64(<2 x i64> %0) {
20920 ; PWR5-LABEL: ugt_35_v2i64:
20922 ; PWR5-NEXT: lis 5, 21845
20923 ; PWR5-NEXT: lis 6, 13107
20924 ; PWR5-NEXT: ori 5, 5, 21845
20925 ; PWR5-NEXT: rotldi 8, 4, 63
20926 ; PWR5-NEXT: rotldi 9, 3, 63
20927 ; PWR5-NEXT: rldimi 5, 5, 32, 0
20928 ; PWR5-NEXT: and 8, 8, 5
20929 ; PWR5-NEXT: and 5, 9, 5
20930 ; PWR5-NEXT: ori 6, 6, 13107
20931 ; PWR5-NEXT: sub 3, 3, 5
20932 ; PWR5-NEXT: rldimi 6, 6, 32, 0
20933 ; PWR5-NEXT: sub 4, 4, 8
20934 ; PWR5-NEXT: and 8, 3, 6
20935 ; PWR5-NEXT: rotldi 3, 3, 62
20936 ; PWR5-NEXT: and 3, 3, 6
20937 ; PWR5-NEXT: lis 7, 3855
20938 ; PWR5-NEXT: and 5, 4, 6
20939 ; PWR5-NEXT: rotldi 4, 4, 62
20940 ; PWR5-NEXT: add 3, 8, 3
20941 ; PWR5-NEXT: lis 9, 257
20942 ; PWR5-NEXT: ori 7, 7, 3855
20943 ; PWR5-NEXT: and 4, 4, 6
20944 ; PWR5-NEXT: rldicl 6, 3, 60, 4
20945 ; PWR5-NEXT: ori 9, 9, 257
20946 ; PWR5-NEXT: rldimi 7, 7, 32, 0
20947 ; PWR5-NEXT: add 4, 5, 4
20948 ; PWR5-NEXT: add 3, 3, 6
20949 ; PWR5-NEXT: rldimi 9, 9, 32, 0
20950 ; PWR5-NEXT: rldicl 5, 4, 60, 4
20951 ; PWR5-NEXT: and 3, 3, 7
20952 ; PWR5-NEXT: add 4, 4, 5
20953 ; PWR5-NEXT: mulld 3, 3, 9
20954 ; PWR5-NEXT: and 4, 4, 7
20955 ; PWR5-NEXT: rldicl 3, 3, 8, 56
20956 ; PWR5-NEXT: mulld 4, 4, 9
20957 ; PWR5-NEXT: li 5, 35
20958 ; PWR5-NEXT: subfic 3, 3, 35
20959 ; PWR5-NEXT: rldicl 4, 4, 8, 56
20960 ; PWR5-NEXT: subfe 3, 5, 5
20961 ; PWR5-NEXT: subfic 4, 4, 35
20962 ; PWR5-NEXT: subfe 4, 5, 5
20965 ; PWR6-LABEL: ugt_35_v2i64:
20967 ; PWR6-NEXT: lis 5, 21845
20968 ; PWR6-NEXT: lis 6, 13107
20969 ; PWR6-NEXT: ori 5, 5, 21845
20970 ; PWR6-NEXT: rotldi 8, 4, 63
20971 ; PWR6-NEXT: rotldi 9, 3, 63
20972 ; PWR6-NEXT: rldimi 5, 5, 32, 0
20973 ; PWR6-NEXT: and 8, 8, 5
20974 ; PWR6-NEXT: and 5, 9, 5
20975 ; PWR6-NEXT: ori 6, 6, 13107
20976 ; PWR6-NEXT: sub 3, 3, 5
20977 ; PWR6-NEXT: rldimi 6, 6, 32, 0
20978 ; PWR6-NEXT: sub 4, 4, 8
20979 ; PWR6-NEXT: and 8, 3, 6
20980 ; PWR6-NEXT: rotldi 3, 3, 62
20981 ; PWR6-NEXT: and 3, 3, 6
20982 ; PWR6-NEXT: lis 7, 3855
20983 ; PWR6-NEXT: and 5, 4, 6
20984 ; PWR6-NEXT: rotldi 4, 4, 62
20985 ; PWR6-NEXT: add 3, 8, 3
20986 ; PWR6-NEXT: lis 9, 257
20987 ; PWR6-NEXT: ori 7, 7, 3855
20988 ; PWR6-NEXT: and 4, 4, 6
20989 ; PWR6-NEXT: rldicl 6, 3, 60, 4
20990 ; PWR6-NEXT: ori 9, 9, 257
20991 ; PWR6-NEXT: rldimi 7, 7, 32, 0
20992 ; PWR6-NEXT: add 4, 5, 4
20993 ; PWR6-NEXT: add 3, 3, 6
20994 ; PWR6-NEXT: rldimi 9, 9, 32, 0
20995 ; PWR6-NEXT: rldicl 5, 4, 60, 4
20996 ; PWR6-NEXT: and 3, 3, 7
20997 ; PWR6-NEXT: add 4, 4, 5
20998 ; PWR6-NEXT: mulld 3, 3, 9
20999 ; PWR6-NEXT: and 4, 4, 7
21000 ; PWR6-NEXT: rldicl 3, 3, 8, 56
21001 ; PWR6-NEXT: mulld 4, 4, 9
21002 ; PWR6-NEXT: li 5, 35
21003 ; PWR6-NEXT: subfic 3, 3, 35
21004 ; PWR6-NEXT: rldicl 4, 4, 8, 56
21005 ; PWR6-NEXT: subfe 3, 5, 5
21006 ; PWR6-NEXT: subfic 4, 4, 35
21007 ; PWR6-NEXT: subfe 4, 5, 5
21010 ; PWR7-LABEL: ugt_35_v2i64:
21012 ; PWR7-NEXT: addi 3, 1, -32
21013 ; PWR7-NEXT: li 5, 0
21014 ; PWR7-NEXT: li 6, -1
21015 ; PWR7-NEXT: stxvd2x 34, 0, 3
21016 ; PWR7-NEXT: ld 3, -24(1)
21017 ; PWR7-NEXT: ld 4, -32(1)
21018 ; PWR7-NEXT: popcntd 3, 3
21019 ; PWR7-NEXT: popcntd 4, 4
21020 ; PWR7-NEXT: cmpldi 3, 35
21021 ; PWR7-NEXT: iselgt 3, 6, 5
21022 ; PWR7-NEXT: cmpldi 4, 35
21023 ; PWR7-NEXT: iselgt 4, 6, 5
21024 ; PWR7-NEXT: std 3, -8(1)
21025 ; PWR7-NEXT: addi 3, 1, -16
21026 ; PWR7-NEXT: std 4, -16(1)
21027 ; PWR7-NEXT: lxvd2x 34, 0, 3
21030 ; PWR8-LABEL: ugt_35_v2i64:
21032 ; PWR8-NEXT: addis 3, 2, .LCPI168_0@toc@ha
21033 ; PWR8-NEXT: vpopcntd 2, 2
21034 ; PWR8-NEXT: addi 3, 3, .LCPI168_0@toc@l
21035 ; PWR8-NEXT: lxvd2x 35, 0, 3
21036 ; PWR8-NEXT: vcmpgtud 2, 2, 3
21039 ; PWR9-LABEL: ugt_35_v2i64:
21041 ; PWR9-NEXT: addis 3, 2, .LCPI168_0@toc@ha
21042 ; PWR9-NEXT: vpopcntd 2, 2
21043 ; PWR9-NEXT: addi 3, 3, .LCPI168_0@toc@l
21044 ; PWR9-NEXT: lxv 35, 0(3)
21045 ; PWR9-NEXT: vcmpgtud 2, 2, 3
21047 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
21048 %3 = icmp ugt <2 x i64> %2, <i64 35, i64 35>
21049 %4 = sext <2 x i1> %3 to <2 x i64>
21053 define <2 x i64> @ult_36_v2i64(<2 x i64> %0) {
21054 ; PWR5-LABEL: ult_36_v2i64:
21056 ; PWR5-NEXT: lis 5, 21845
21057 ; PWR5-NEXT: lis 6, 13107
21058 ; PWR5-NEXT: ori 5, 5, 21845
21059 ; PWR5-NEXT: rotldi 8, 4, 63
21060 ; PWR5-NEXT: rotldi 9, 3, 63
21061 ; PWR5-NEXT: rldimi 5, 5, 32, 0
21062 ; PWR5-NEXT: and 8, 8, 5
21063 ; PWR5-NEXT: and 5, 9, 5
21064 ; PWR5-NEXT: ori 6, 6, 13107
21065 ; PWR5-NEXT: sub 3, 3, 5
21066 ; PWR5-NEXT: rldimi 6, 6, 32, 0
21067 ; PWR5-NEXT: sub 4, 4, 8
21068 ; PWR5-NEXT: and 8, 3, 6
21069 ; PWR5-NEXT: rotldi 3, 3, 62
21070 ; PWR5-NEXT: and 3, 3, 6
21071 ; PWR5-NEXT: lis 7, 3855
21072 ; PWR5-NEXT: and 5, 4, 6
21073 ; PWR5-NEXT: rotldi 4, 4, 62
21074 ; PWR5-NEXT: add 3, 8, 3
21075 ; PWR5-NEXT: lis 9, 257
21076 ; PWR5-NEXT: ori 7, 7, 3855
21077 ; PWR5-NEXT: and 4, 4, 6
21078 ; PWR5-NEXT: rldicl 6, 3, 60, 4
21079 ; PWR5-NEXT: ori 9, 9, 257
21080 ; PWR5-NEXT: rldimi 7, 7, 32, 0
21081 ; PWR5-NEXT: add 4, 5, 4
21082 ; PWR5-NEXT: add 3, 3, 6
21083 ; PWR5-NEXT: rldimi 9, 9, 32, 0
21084 ; PWR5-NEXT: rldicl 5, 4, 60, 4
21085 ; PWR5-NEXT: and 3, 3, 7
21086 ; PWR5-NEXT: add 4, 4, 5
21087 ; PWR5-NEXT: mulld 3, 3, 9
21088 ; PWR5-NEXT: and 4, 4, 7
21089 ; PWR5-NEXT: rldicl 3, 3, 8, 56
21090 ; PWR5-NEXT: li 5, 36
21091 ; PWR5-NEXT: mulld 4, 4, 9
21092 ; PWR5-NEXT: subc 6, 3, 5
21093 ; PWR5-NEXT: rldicl 4, 4, 8, 56
21094 ; PWR5-NEXT: subfe 3, 3, 3
21095 ; PWR5-NEXT: subc 5, 4, 5
21096 ; PWR5-NEXT: subfe 4, 4, 4
21099 ; PWR6-LABEL: ult_36_v2i64:
21101 ; PWR6-NEXT: lis 5, 21845
21102 ; PWR6-NEXT: lis 6, 13107
21103 ; PWR6-NEXT: ori 5, 5, 21845
21104 ; PWR6-NEXT: rotldi 8, 4, 63
21105 ; PWR6-NEXT: rotldi 9, 3, 63
21106 ; PWR6-NEXT: rldimi 5, 5, 32, 0
21107 ; PWR6-NEXT: and 8, 8, 5
21108 ; PWR6-NEXT: and 5, 9, 5
21109 ; PWR6-NEXT: ori 6, 6, 13107
21110 ; PWR6-NEXT: sub 3, 3, 5
21111 ; PWR6-NEXT: rldimi 6, 6, 32, 0
21112 ; PWR6-NEXT: sub 4, 4, 8
21113 ; PWR6-NEXT: and 8, 3, 6
21114 ; PWR6-NEXT: rotldi 3, 3, 62
21115 ; PWR6-NEXT: and 3, 3, 6
21116 ; PWR6-NEXT: lis 7, 3855
21117 ; PWR6-NEXT: and 5, 4, 6
21118 ; PWR6-NEXT: rotldi 4, 4, 62
21119 ; PWR6-NEXT: add 3, 8, 3
21120 ; PWR6-NEXT: lis 9, 257
21121 ; PWR6-NEXT: ori 7, 7, 3855
21122 ; PWR6-NEXT: and 4, 4, 6
21123 ; PWR6-NEXT: rldicl 6, 3, 60, 4
21124 ; PWR6-NEXT: ori 9, 9, 257
21125 ; PWR6-NEXT: rldimi 7, 7, 32, 0
21126 ; PWR6-NEXT: add 4, 5, 4
21127 ; PWR6-NEXT: add 3, 3, 6
21128 ; PWR6-NEXT: rldimi 9, 9, 32, 0
21129 ; PWR6-NEXT: rldicl 5, 4, 60, 4
21130 ; PWR6-NEXT: and 3, 3, 7
21131 ; PWR6-NEXT: add 4, 4, 5
21132 ; PWR6-NEXT: mulld 3, 3, 9
21133 ; PWR6-NEXT: and 4, 4, 7
21134 ; PWR6-NEXT: rldicl 3, 3, 8, 56
21135 ; PWR6-NEXT: li 5, 36
21136 ; PWR6-NEXT: mulld 4, 4, 9
21137 ; PWR6-NEXT: subc 6, 3, 5
21138 ; PWR6-NEXT: rldicl 4, 4, 8, 56
21139 ; PWR6-NEXT: subfe 3, 3, 3
21140 ; PWR6-NEXT: subc 5, 4, 5
21141 ; PWR6-NEXT: subfe 4, 4, 4
21144 ; PWR7-LABEL: ult_36_v2i64:
21146 ; PWR7-NEXT: addi 3, 1, -32
21147 ; PWR7-NEXT: li 5, 0
21148 ; PWR7-NEXT: li 6, -1
21149 ; PWR7-NEXT: stxvd2x 34, 0, 3
21150 ; PWR7-NEXT: ld 3, -24(1)
21151 ; PWR7-NEXT: ld 4, -32(1)
21152 ; PWR7-NEXT: popcntd 3, 3
21153 ; PWR7-NEXT: popcntd 4, 4
21154 ; PWR7-NEXT: cmpldi 3, 36
21155 ; PWR7-NEXT: isellt 3, 6, 5
21156 ; PWR7-NEXT: cmpldi 4, 36
21157 ; PWR7-NEXT: isellt 4, 6, 5
21158 ; PWR7-NEXT: std 3, -8(1)
21159 ; PWR7-NEXT: addi 3, 1, -16
21160 ; PWR7-NEXT: std 4, -16(1)
21161 ; PWR7-NEXT: lxvd2x 34, 0, 3
21164 ; PWR8-LABEL: ult_36_v2i64:
21166 ; PWR8-NEXT: addis 3, 2, .LCPI169_0@toc@ha
21167 ; PWR8-NEXT: vpopcntd 2, 2
21168 ; PWR8-NEXT: addi 3, 3, .LCPI169_0@toc@l
21169 ; PWR8-NEXT: lxvd2x 35, 0, 3
21170 ; PWR8-NEXT: vcmpgtud 2, 3, 2
21173 ; PWR9-LABEL: ult_36_v2i64:
21175 ; PWR9-NEXT: addis 3, 2, .LCPI169_0@toc@ha
21176 ; PWR9-NEXT: vpopcntd 2, 2
21177 ; PWR9-NEXT: addi 3, 3, .LCPI169_0@toc@l
21178 ; PWR9-NEXT: lxv 35, 0(3)
21179 ; PWR9-NEXT: vcmpgtud 2, 3, 2
21181 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
21182 %3 = icmp ult <2 x i64> %2, <i64 36, i64 36>
21183 %4 = sext <2 x i1> %3 to <2 x i64>
21187 define <2 x i64> @ugt_36_v2i64(<2 x i64> %0) {
21188 ; PWR5-LABEL: ugt_36_v2i64:
21190 ; PWR5-NEXT: lis 5, 21845
21191 ; PWR5-NEXT: lis 6, 13107
21192 ; PWR5-NEXT: ori 5, 5, 21845
21193 ; PWR5-NEXT: rotldi 8, 4, 63
21194 ; PWR5-NEXT: rotldi 9, 3, 63
21195 ; PWR5-NEXT: rldimi 5, 5, 32, 0
21196 ; PWR5-NEXT: and 8, 8, 5
21197 ; PWR5-NEXT: and 5, 9, 5
21198 ; PWR5-NEXT: ori 6, 6, 13107
21199 ; PWR5-NEXT: sub 3, 3, 5
21200 ; PWR5-NEXT: rldimi 6, 6, 32, 0
21201 ; PWR5-NEXT: sub 4, 4, 8
21202 ; PWR5-NEXT: and 8, 3, 6
21203 ; PWR5-NEXT: rotldi 3, 3, 62
21204 ; PWR5-NEXT: and 3, 3, 6
21205 ; PWR5-NEXT: lis 7, 3855
21206 ; PWR5-NEXT: and 5, 4, 6
21207 ; PWR5-NEXT: rotldi 4, 4, 62
21208 ; PWR5-NEXT: add 3, 8, 3
21209 ; PWR5-NEXT: lis 9, 257
21210 ; PWR5-NEXT: ori 7, 7, 3855
21211 ; PWR5-NEXT: and 4, 4, 6
21212 ; PWR5-NEXT: rldicl 6, 3, 60, 4
21213 ; PWR5-NEXT: ori 9, 9, 257
21214 ; PWR5-NEXT: rldimi 7, 7, 32, 0
21215 ; PWR5-NEXT: add 4, 5, 4
21216 ; PWR5-NEXT: add 3, 3, 6
21217 ; PWR5-NEXT: rldimi 9, 9, 32, 0
21218 ; PWR5-NEXT: rldicl 5, 4, 60, 4
21219 ; PWR5-NEXT: and 3, 3, 7
21220 ; PWR5-NEXT: add 4, 4, 5
21221 ; PWR5-NEXT: mulld 3, 3, 9
21222 ; PWR5-NEXT: and 4, 4, 7
21223 ; PWR5-NEXT: rldicl 3, 3, 8, 56
21224 ; PWR5-NEXT: mulld 4, 4, 9
21225 ; PWR5-NEXT: li 5, 36
21226 ; PWR5-NEXT: subfic 3, 3, 36
21227 ; PWR5-NEXT: rldicl 4, 4, 8, 56
21228 ; PWR5-NEXT: subfe 3, 5, 5
21229 ; PWR5-NEXT: subfic 4, 4, 36
21230 ; PWR5-NEXT: subfe 4, 5, 5
21233 ; PWR6-LABEL: ugt_36_v2i64:
21235 ; PWR6-NEXT: lis 5, 21845
21236 ; PWR6-NEXT: lis 6, 13107
21237 ; PWR6-NEXT: ori 5, 5, 21845
21238 ; PWR6-NEXT: rotldi 8, 4, 63
21239 ; PWR6-NEXT: rotldi 9, 3, 63
21240 ; PWR6-NEXT: rldimi 5, 5, 32, 0
21241 ; PWR6-NEXT: and 8, 8, 5
21242 ; PWR6-NEXT: and 5, 9, 5
21243 ; PWR6-NEXT: ori 6, 6, 13107
21244 ; PWR6-NEXT: sub 3, 3, 5
21245 ; PWR6-NEXT: rldimi 6, 6, 32, 0
21246 ; PWR6-NEXT: sub 4, 4, 8
21247 ; PWR6-NEXT: and 8, 3, 6
21248 ; PWR6-NEXT: rotldi 3, 3, 62
21249 ; PWR6-NEXT: and 3, 3, 6
21250 ; PWR6-NEXT: lis 7, 3855
21251 ; PWR6-NEXT: and 5, 4, 6
21252 ; PWR6-NEXT: rotldi 4, 4, 62
21253 ; PWR6-NEXT: add 3, 8, 3
21254 ; PWR6-NEXT: lis 9, 257
21255 ; PWR6-NEXT: ori 7, 7, 3855
21256 ; PWR6-NEXT: and 4, 4, 6
21257 ; PWR6-NEXT: rldicl 6, 3, 60, 4
21258 ; PWR6-NEXT: ori 9, 9, 257
21259 ; PWR6-NEXT: rldimi 7, 7, 32, 0
21260 ; PWR6-NEXT: add 4, 5, 4
21261 ; PWR6-NEXT: add 3, 3, 6
21262 ; PWR6-NEXT: rldimi 9, 9, 32, 0
21263 ; PWR6-NEXT: rldicl 5, 4, 60, 4
21264 ; PWR6-NEXT: and 3, 3, 7
21265 ; PWR6-NEXT: add 4, 4, 5
21266 ; PWR6-NEXT: mulld 3, 3, 9
21267 ; PWR6-NEXT: and 4, 4, 7
21268 ; PWR6-NEXT: rldicl 3, 3, 8, 56
21269 ; PWR6-NEXT: mulld 4, 4, 9
21270 ; PWR6-NEXT: li 5, 36
21271 ; PWR6-NEXT: subfic 3, 3, 36
21272 ; PWR6-NEXT: rldicl 4, 4, 8, 56
21273 ; PWR6-NEXT: subfe 3, 5, 5
21274 ; PWR6-NEXT: subfic 4, 4, 36
21275 ; PWR6-NEXT: subfe 4, 5, 5
21278 ; PWR7-LABEL: ugt_36_v2i64:
21280 ; PWR7-NEXT: addi 3, 1, -32
21281 ; PWR7-NEXT: li 5, 0
21282 ; PWR7-NEXT: li 6, -1
21283 ; PWR7-NEXT: stxvd2x 34, 0, 3
21284 ; PWR7-NEXT: ld 3, -24(1)
21285 ; PWR7-NEXT: ld 4, -32(1)
21286 ; PWR7-NEXT: popcntd 3, 3
21287 ; PWR7-NEXT: popcntd 4, 4
21288 ; PWR7-NEXT: cmpldi 3, 36
21289 ; PWR7-NEXT: iselgt 3, 6, 5
21290 ; PWR7-NEXT: cmpldi 4, 36
21291 ; PWR7-NEXT: iselgt 4, 6, 5
21292 ; PWR7-NEXT: std 3, -8(1)
21293 ; PWR7-NEXT: addi 3, 1, -16
21294 ; PWR7-NEXT: std 4, -16(1)
21295 ; PWR7-NEXT: lxvd2x 34, 0, 3
21298 ; PWR8-LABEL: ugt_36_v2i64:
21300 ; PWR8-NEXT: addis 3, 2, .LCPI170_0@toc@ha
21301 ; PWR8-NEXT: vpopcntd 2, 2
21302 ; PWR8-NEXT: addi 3, 3, .LCPI170_0@toc@l
21303 ; PWR8-NEXT: lxvd2x 35, 0, 3
21304 ; PWR8-NEXT: vcmpgtud 2, 2, 3
21307 ; PWR9-LABEL: ugt_36_v2i64:
21309 ; PWR9-NEXT: addis 3, 2, .LCPI170_0@toc@ha
21310 ; PWR9-NEXT: vpopcntd 2, 2
21311 ; PWR9-NEXT: addi 3, 3, .LCPI170_0@toc@l
21312 ; PWR9-NEXT: lxv 35, 0(3)
21313 ; PWR9-NEXT: vcmpgtud 2, 2, 3
21315 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
21316 %3 = icmp ugt <2 x i64> %2, <i64 36, i64 36>
21317 %4 = sext <2 x i1> %3 to <2 x i64>
21321 define <2 x i64> @ult_37_v2i64(<2 x i64> %0) {
21322 ; PWR5-LABEL: ult_37_v2i64:
21324 ; PWR5-NEXT: lis 5, 21845
21325 ; PWR5-NEXT: lis 6, 13107
21326 ; PWR5-NEXT: ori 5, 5, 21845
21327 ; PWR5-NEXT: rotldi 8, 4, 63
21328 ; PWR5-NEXT: rotldi 9, 3, 63
21329 ; PWR5-NEXT: rldimi 5, 5, 32, 0
21330 ; PWR5-NEXT: and 8, 8, 5
21331 ; PWR5-NEXT: and 5, 9, 5
21332 ; PWR5-NEXT: ori 6, 6, 13107
21333 ; PWR5-NEXT: sub 3, 3, 5
21334 ; PWR5-NEXT: rldimi 6, 6, 32, 0
21335 ; PWR5-NEXT: sub 4, 4, 8
21336 ; PWR5-NEXT: and 8, 3, 6
21337 ; PWR5-NEXT: rotldi 3, 3, 62
21338 ; PWR5-NEXT: and 3, 3, 6
21339 ; PWR5-NEXT: lis 7, 3855
21340 ; PWR5-NEXT: and 5, 4, 6
21341 ; PWR5-NEXT: rotldi 4, 4, 62
21342 ; PWR5-NEXT: add 3, 8, 3
21343 ; PWR5-NEXT: lis 9, 257
21344 ; PWR5-NEXT: ori 7, 7, 3855
21345 ; PWR5-NEXT: and 4, 4, 6
21346 ; PWR5-NEXT: rldicl 6, 3, 60, 4
21347 ; PWR5-NEXT: ori 9, 9, 257
21348 ; PWR5-NEXT: rldimi 7, 7, 32, 0
21349 ; PWR5-NEXT: add 4, 5, 4
21350 ; PWR5-NEXT: add 3, 3, 6
21351 ; PWR5-NEXT: rldimi 9, 9, 32, 0
21352 ; PWR5-NEXT: rldicl 5, 4, 60, 4
21353 ; PWR5-NEXT: and 3, 3, 7
21354 ; PWR5-NEXT: add 4, 4, 5
21355 ; PWR5-NEXT: mulld 3, 3, 9
21356 ; PWR5-NEXT: and 4, 4, 7
21357 ; PWR5-NEXT: rldicl 3, 3, 8, 56
21358 ; PWR5-NEXT: li 5, 37
21359 ; PWR5-NEXT: mulld 4, 4, 9
21360 ; PWR5-NEXT: subc 6, 3, 5
21361 ; PWR5-NEXT: rldicl 4, 4, 8, 56
21362 ; PWR5-NEXT: subfe 3, 3, 3
21363 ; PWR5-NEXT: subc 5, 4, 5
21364 ; PWR5-NEXT: subfe 4, 4, 4
21367 ; PWR6-LABEL: ult_37_v2i64:
21369 ; PWR6-NEXT: lis 5, 21845
21370 ; PWR6-NEXT: lis 6, 13107
21371 ; PWR6-NEXT: ori 5, 5, 21845
21372 ; PWR6-NEXT: rotldi 8, 4, 63
21373 ; PWR6-NEXT: rotldi 9, 3, 63
21374 ; PWR6-NEXT: rldimi 5, 5, 32, 0
21375 ; PWR6-NEXT: and 8, 8, 5
21376 ; PWR6-NEXT: and 5, 9, 5
21377 ; PWR6-NEXT: ori 6, 6, 13107
21378 ; PWR6-NEXT: sub 3, 3, 5
21379 ; PWR6-NEXT: rldimi 6, 6, 32, 0
21380 ; PWR6-NEXT: sub 4, 4, 8
21381 ; PWR6-NEXT: and 8, 3, 6
21382 ; PWR6-NEXT: rotldi 3, 3, 62
21383 ; PWR6-NEXT: and 3, 3, 6
21384 ; PWR6-NEXT: lis 7, 3855
21385 ; PWR6-NEXT: and 5, 4, 6
21386 ; PWR6-NEXT: rotldi 4, 4, 62
21387 ; PWR6-NEXT: add 3, 8, 3
21388 ; PWR6-NEXT: lis 9, 257
21389 ; PWR6-NEXT: ori 7, 7, 3855
21390 ; PWR6-NEXT: and 4, 4, 6
21391 ; PWR6-NEXT: rldicl 6, 3, 60, 4
21392 ; PWR6-NEXT: ori 9, 9, 257
21393 ; PWR6-NEXT: rldimi 7, 7, 32, 0
21394 ; PWR6-NEXT: add 4, 5, 4
21395 ; PWR6-NEXT: add 3, 3, 6
21396 ; PWR6-NEXT: rldimi 9, 9, 32, 0
21397 ; PWR6-NEXT: rldicl 5, 4, 60, 4
21398 ; PWR6-NEXT: and 3, 3, 7
21399 ; PWR6-NEXT: add 4, 4, 5
21400 ; PWR6-NEXT: mulld 3, 3, 9
21401 ; PWR6-NEXT: and 4, 4, 7
21402 ; PWR6-NEXT: rldicl 3, 3, 8, 56
21403 ; PWR6-NEXT: li 5, 37
21404 ; PWR6-NEXT: mulld 4, 4, 9
21405 ; PWR6-NEXT: subc 6, 3, 5
21406 ; PWR6-NEXT: rldicl 4, 4, 8, 56
21407 ; PWR6-NEXT: subfe 3, 3, 3
21408 ; PWR6-NEXT: subc 5, 4, 5
21409 ; PWR6-NEXT: subfe 4, 4, 4
21412 ; PWR7-LABEL: ult_37_v2i64:
21414 ; PWR7-NEXT: addi 3, 1, -32
21415 ; PWR7-NEXT: li 5, 0
21416 ; PWR7-NEXT: li 6, -1
21417 ; PWR7-NEXT: stxvd2x 34, 0, 3
21418 ; PWR7-NEXT: ld 3, -24(1)
21419 ; PWR7-NEXT: ld 4, -32(1)
21420 ; PWR7-NEXT: popcntd 3, 3
21421 ; PWR7-NEXT: popcntd 4, 4
21422 ; PWR7-NEXT: cmpldi 3, 37
21423 ; PWR7-NEXT: isellt 3, 6, 5
21424 ; PWR7-NEXT: cmpldi 4, 37
21425 ; PWR7-NEXT: isellt 4, 6, 5
21426 ; PWR7-NEXT: std 3, -8(1)
21427 ; PWR7-NEXT: addi 3, 1, -16
21428 ; PWR7-NEXT: std 4, -16(1)
21429 ; PWR7-NEXT: lxvd2x 34, 0, 3
21432 ; PWR8-LABEL: ult_37_v2i64:
21434 ; PWR8-NEXT: addis 3, 2, .LCPI171_0@toc@ha
21435 ; PWR8-NEXT: vpopcntd 2, 2
21436 ; PWR8-NEXT: addi 3, 3, .LCPI171_0@toc@l
21437 ; PWR8-NEXT: lxvd2x 35, 0, 3
21438 ; PWR8-NEXT: vcmpgtud 2, 3, 2
21441 ; PWR9-LABEL: ult_37_v2i64:
21443 ; PWR9-NEXT: addis 3, 2, .LCPI171_0@toc@ha
21444 ; PWR9-NEXT: vpopcntd 2, 2
21445 ; PWR9-NEXT: addi 3, 3, .LCPI171_0@toc@l
21446 ; PWR9-NEXT: lxv 35, 0(3)
21447 ; PWR9-NEXT: vcmpgtud 2, 3, 2
21449 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
21450 %3 = icmp ult <2 x i64> %2, <i64 37, i64 37>
21451 %4 = sext <2 x i1> %3 to <2 x i64>
21455 define <2 x i64> @ugt_37_v2i64(<2 x i64> %0) {
21456 ; PWR5-LABEL: ugt_37_v2i64:
21458 ; PWR5-NEXT: lis 5, 21845
21459 ; PWR5-NEXT: lis 6, 13107
21460 ; PWR5-NEXT: ori 5, 5, 21845
21461 ; PWR5-NEXT: rotldi 8, 4, 63
21462 ; PWR5-NEXT: rotldi 9, 3, 63
21463 ; PWR5-NEXT: rldimi 5, 5, 32, 0
21464 ; PWR5-NEXT: and 8, 8, 5
21465 ; PWR5-NEXT: and 5, 9, 5
21466 ; PWR5-NEXT: ori 6, 6, 13107
21467 ; PWR5-NEXT: sub 3, 3, 5
21468 ; PWR5-NEXT: rldimi 6, 6, 32, 0
21469 ; PWR5-NEXT: sub 4, 4, 8
21470 ; PWR5-NEXT: and 8, 3, 6
21471 ; PWR5-NEXT: rotldi 3, 3, 62
21472 ; PWR5-NEXT: and 3, 3, 6
21473 ; PWR5-NEXT: lis 7, 3855
21474 ; PWR5-NEXT: and 5, 4, 6
21475 ; PWR5-NEXT: rotldi 4, 4, 62
21476 ; PWR5-NEXT: add 3, 8, 3
21477 ; PWR5-NEXT: lis 9, 257
21478 ; PWR5-NEXT: ori 7, 7, 3855
21479 ; PWR5-NEXT: and 4, 4, 6
21480 ; PWR5-NEXT: rldicl 6, 3, 60, 4
21481 ; PWR5-NEXT: ori 9, 9, 257
21482 ; PWR5-NEXT: rldimi 7, 7, 32, 0
21483 ; PWR5-NEXT: add 4, 5, 4
21484 ; PWR5-NEXT: add 3, 3, 6
21485 ; PWR5-NEXT: rldimi 9, 9, 32, 0
21486 ; PWR5-NEXT: rldicl 5, 4, 60, 4
21487 ; PWR5-NEXT: and 3, 3, 7
21488 ; PWR5-NEXT: add 4, 4, 5
21489 ; PWR5-NEXT: mulld 3, 3, 9
21490 ; PWR5-NEXT: and 4, 4, 7
21491 ; PWR5-NEXT: rldicl 3, 3, 8, 56
21492 ; PWR5-NEXT: mulld 4, 4, 9
21493 ; PWR5-NEXT: li 5, 37
21494 ; PWR5-NEXT: subfic 3, 3, 37
21495 ; PWR5-NEXT: rldicl 4, 4, 8, 56
21496 ; PWR5-NEXT: subfe 3, 5, 5
21497 ; PWR5-NEXT: subfic 4, 4, 37
21498 ; PWR5-NEXT: subfe 4, 5, 5
21501 ; PWR6-LABEL: ugt_37_v2i64:
21503 ; PWR6-NEXT: lis 5, 21845
21504 ; PWR6-NEXT: lis 6, 13107
21505 ; PWR6-NEXT: ori 5, 5, 21845
21506 ; PWR6-NEXT: rotldi 8, 4, 63
21507 ; PWR6-NEXT: rotldi 9, 3, 63
21508 ; PWR6-NEXT: rldimi 5, 5, 32, 0
21509 ; PWR6-NEXT: and 8, 8, 5
21510 ; PWR6-NEXT: and 5, 9, 5
21511 ; PWR6-NEXT: ori 6, 6, 13107
21512 ; PWR6-NEXT: sub 3, 3, 5
21513 ; PWR6-NEXT: rldimi 6, 6, 32, 0
21514 ; PWR6-NEXT: sub 4, 4, 8
21515 ; PWR6-NEXT: and 8, 3, 6
21516 ; PWR6-NEXT: rotldi 3, 3, 62
21517 ; PWR6-NEXT: and 3, 3, 6
21518 ; PWR6-NEXT: lis 7, 3855
21519 ; PWR6-NEXT: and 5, 4, 6
21520 ; PWR6-NEXT: rotldi 4, 4, 62
21521 ; PWR6-NEXT: add 3, 8, 3
21522 ; PWR6-NEXT: lis 9, 257
21523 ; PWR6-NEXT: ori 7, 7, 3855
21524 ; PWR6-NEXT: and 4, 4, 6
21525 ; PWR6-NEXT: rldicl 6, 3, 60, 4
21526 ; PWR6-NEXT: ori 9, 9, 257
21527 ; PWR6-NEXT: rldimi 7, 7, 32, 0
21528 ; PWR6-NEXT: add 4, 5, 4
21529 ; PWR6-NEXT: add 3, 3, 6
21530 ; PWR6-NEXT: rldimi 9, 9, 32, 0
21531 ; PWR6-NEXT: rldicl 5, 4, 60, 4
21532 ; PWR6-NEXT: and 3, 3, 7
21533 ; PWR6-NEXT: add 4, 4, 5
21534 ; PWR6-NEXT: mulld 3, 3, 9
21535 ; PWR6-NEXT: and 4, 4, 7
21536 ; PWR6-NEXT: rldicl 3, 3, 8, 56
21537 ; PWR6-NEXT: mulld 4, 4, 9
21538 ; PWR6-NEXT: li 5, 37
21539 ; PWR6-NEXT: subfic 3, 3, 37
21540 ; PWR6-NEXT: rldicl 4, 4, 8, 56
21541 ; PWR6-NEXT: subfe 3, 5, 5
21542 ; PWR6-NEXT: subfic 4, 4, 37
21543 ; PWR6-NEXT: subfe 4, 5, 5
21546 ; PWR7-LABEL: ugt_37_v2i64:
21548 ; PWR7-NEXT: addi 3, 1, -32
21549 ; PWR7-NEXT: li 5, 0
21550 ; PWR7-NEXT: li 6, -1
21551 ; PWR7-NEXT: stxvd2x 34, 0, 3
21552 ; PWR7-NEXT: ld 3, -24(1)
21553 ; PWR7-NEXT: ld 4, -32(1)
21554 ; PWR7-NEXT: popcntd 3, 3
21555 ; PWR7-NEXT: popcntd 4, 4
21556 ; PWR7-NEXT: cmpldi 3, 37
21557 ; PWR7-NEXT: iselgt 3, 6, 5
21558 ; PWR7-NEXT: cmpldi 4, 37
21559 ; PWR7-NEXT: iselgt 4, 6, 5
21560 ; PWR7-NEXT: std 3, -8(1)
21561 ; PWR7-NEXT: addi 3, 1, -16
21562 ; PWR7-NEXT: std 4, -16(1)
21563 ; PWR7-NEXT: lxvd2x 34, 0, 3
21566 ; PWR8-LABEL: ugt_37_v2i64:
21568 ; PWR8-NEXT: addis 3, 2, .LCPI172_0@toc@ha
21569 ; PWR8-NEXT: vpopcntd 2, 2
21570 ; PWR8-NEXT: addi 3, 3, .LCPI172_0@toc@l
21571 ; PWR8-NEXT: lxvd2x 35, 0, 3
21572 ; PWR8-NEXT: vcmpgtud 2, 2, 3
21575 ; PWR9-LABEL: ugt_37_v2i64:
21577 ; PWR9-NEXT: addis 3, 2, .LCPI172_0@toc@ha
21578 ; PWR9-NEXT: vpopcntd 2, 2
21579 ; PWR9-NEXT: addi 3, 3, .LCPI172_0@toc@l
21580 ; PWR9-NEXT: lxv 35, 0(3)
21581 ; PWR9-NEXT: vcmpgtud 2, 2, 3
21583 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
21584 %3 = icmp ugt <2 x i64> %2, <i64 37, i64 37>
21585 %4 = sext <2 x i1> %3 to <2 x i64>
21589 define <2 x i64> @ult_38_v2i64(<2 x i64> %0) {
21590 ; PWR5-LABEL: ult_38_v2i64:
21592 ; PWR5-NEXT: lis 5, 21845
21593 ; PWR5-NEXT: lis 6, 13107
21594 ; PWR5-NEXT: ori 5, 5, 21845
21595 ; PWR5-NEXT: rotldi 8, 4, 63
21596 ; PWR5-NEXT: rotldi 9, 3, 63
21597 ; PWR5-NEXT: rldimi 5, 5, 32, 0
21598 ; PWR5-NEXT: and 8, 8, 5
21599 ; PWR5-NEXT: and 5, 9, 5
21600 ; PWR5-NEXT: ori 6, 6, 13107
21601 ; PWR5-NEXT: sub 3, 3, 5
21602 ; PWR5-NEXT: rldimi 6, 6, 32, 0
21603 ; PWR5-NEXT: sub 4, 4, 8
21604 ; PWR5-NEXT: and 8, 3, 6
21605 ; PWR5-NEXT: rotldi 3, 3, 62
21606 ; PWR5-NEXT: and 3, 3, 6
21607 ; PWR5-NEXT: lis 7, 3855
21608 ; PWR5-NEXT: and 5, 4, 6
21609 ; PWR5-NEXT: rotldi 4, 4, 62
21610 ; PWR5-NEXT: add 3, 8, 3
21611 ; PWR5-NEXT: lis 9, 257
21612 ; PWR5-NEXT: ori 7, 7, 3855
21613 ; PWR5-NEXT: and 4, 4, 6
21614 ; PWR5-NEXT: rldicl 6, 3, 60, 4
21615 ; PWR5-NEXT: ori 9, 9, 257
21616 ; PWR5-NEXT: rldimi 7, 7, 32, 0
21617 ; PWR5-NEXT: add 4, 5, 4
21618 ; PWR5-NEXT: add 3, 3, 6
21619 ; PWR5-NEXT: rldimi 9, 9, 32, 0
21620 ; PWR5-NEXT: rldicl 5, 4, 60, 4
21621 ; PWR5-NEXT: and 3, 3, 7
21622 ; PWR5-NEXT: add 4, 4, 5
21623 ; PWR5-NEXT: mulld 3, 3, 9
21624 ; PWR5-NEXT: and 4, 4, 7
21625 ; PWR5-NEXT: rldicl 3, 3, 8, 56
21626 ; PWR5-NEXT: li 5, 38
21627 ; PWR5-NEXT: mulld 4, 4, 9
21628 ; PWR5-NEXT: subc 6, 3, 5
21629 ; PWR5-NEXT: rldicl 4, 4, 8, 56
21630 ; PWR5-NEXT: subfe 3, 3, 3
21631 ; PWR5-NEXT: subc 5, 4, 5
21632 ; PWR5-NEXT: subfe 4, 4, 4
21635 ; PWR6-LABEL: ult_38_v2i64:
21637 ; PWR6-NEXT: lis 5, 21845
21638 ; PWR6-NEXT: lis 6, 13107
21639 ; PWR6-NEXT: ori 5, 5, 21845
21640 ; PWR6-NEXT: rotldi 8, 4, 63
21641 ; PWR6-NEXT: rotldi 9, 3, 63
21642 ; PWR6-NEXT: rldimi 5, 5, 32, 0
21643 ; PWR6-NEXT: and 8, 8, 5
21644 ; PWR6-NEXT: and 5, 9, 5
21645 ; PWR6-NEXT: ori 6, 6, 13107
21646 ; PWR6-NEXT: sub 3, 3, 5
21647 ; PWR6-NEXT: rldimi 6, 6, 32, 0
21648 ; PWR6-NEXT: sub 4, 4, 8
21649 ; PWR6-NEXT: and 8, 3, 6
21650 ; PWR6-NEXT: rotldi 3, 3, 62
21651 ; PWR6-NEXT: and 3, 3, 6
21652 ; PWR6-NEXT: lis 7, 3855
21653 ; PWR6-NEXT: and 5, 4, 6
21654 ; PWR6-NEXT: rotldi 4, 4, 62
21655 ; PWR6-NEXT: add 3, 8, 3
21656 ; PWR6-NEXT: lis 9, 257
21657 ; PWR6-NEXT: ori 7, 7, 3855
21658 ; PWR6-NEXT: and 4, 4, 6
21659 ; PWR6-NEXT: rldicl 6, 3, 60, 4
21660 ; PWR6-NEXT: ori 9, 9, 257
21661 ; PWR6-NEXT: rldimi 7, 7, 32, 0
21662 ; PWR6-NEXT: add 4, 5, 4
21663 ; PWR6-NEXT: add 3, 3, 6
21664 ; PWR6-NEXT: rldimi 9, 9, 32, 0
21665 ; PWR6-NEXT: rldicl 5, 4, 60, 4
21666 ; PWR6-NEXT: and 3, 3, 7
21667 ; PWR6-NEXT: add 4, 4, 5
21668 ; PWR6-NEXT: mulld 3, 3, 9
21669 ; PWR6-NEXT: and 4, 4, 7
21670 ; PWR6-NEXT: rldicl 3, 3, 8, 56
21671 ; PWR6-NEXT: li 5, 38
21672 ; PWR6-NEXT: mulld 4, 4, 9
21673 ; PWR6-NEXT: subc 6, 3, 5
21674 ; PWR6-NEXT: rldicl 4, 4, 8, 56
21675 ; PWR6-NEXT: subfe 3, 3, 3
21676 ; PWR6-NEXT: subc 5, 4, 5
21677 ; PWR6-NEXT: subfe 4, 4, 4
21680 ; PWR7-LABEL: ult_38_v2i64:
21682 ; PWR7-NEXT: addi 3, 1, -32
21683 ; PWR7-NEXT: li 5, 0
21684 ; PWR7-NEXT: li 6, -1
21685 ; PWR7-NEXT: stxvd2x 34, 0, 3
21686 ; PWR7-NEXT: ld 3, -24(1)
21687 ; PWR7-NEXT: ld 4, -32(1)
21688 ; PWR7-NEXT: popcntd 3, 3
21689 ; PWR7-NEXT: popcntd 4, 4
21690 ; PWR7-NEXT: cmpldi 3, 38
21691 ; PWR7-NEXT: isellt 3, 6, 5
21692 ; PWR7-NEXT: cmpldi 4, 38
21693 ; PWR7-NEXT: isellt 4, 6, 5
21694 ; PWR7-NEXT: std 3, -8(1)
21695 ; PWR7-NEXT: addi 3, 1, -16
21696 ; PWR7-NEXT: std 4, -16(1)
21697 ; PWR7-NEXT: lxvd2x 34, 0, 3
21700 ; PWR8-LABEL: ult_38_v2i64:
21702 ; PWR8-NEXT: addis 3, 2, .LCPI173_0@toc@ha
21703 ; PWR8-NEXT: vpopcntd 2, 2
21704 ; PWR8-NEXT: addi 3, 3, .LCPI173_0@toc@l
21705 ; PWR8-NEXT: lxvd2x 35, 0, 3
21706 ; PWR8-NEXT: vcmpgtud 2, 3, 2
21709 ; PWR9-LABEL: ult_38_v2i64:
21711 ; PWR9-NEXT: addis 3, 2, .LCPI173_0@toc@ha
21712 ; PWR9-NEXT: vpopcntd 2, 2
21713 ; PWR9-NEXT: addi 3, 3, .LCPI173_0@toc@l
21714 ; PWR9-NEXT: lxv 35, 0(3)
21715 ; PWR9-NEXT: vcmpgtud 2, 3, 2
21717 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
21718 %3 = icmp ult <2 x i64> %2, <i64 38, i64 38>
21719 %4 = sext <2 x i1> %3 to <2 x i64>
21723 define <2 x i64> @ugt_38_v2i64(<2 x i64> %0) {
21724 ; PWR5-LABEL: ugt_38_v2i64:
21726 ; PWR5-NEXT: lis 5, 21845
21727 ; PWR5-NEXT: lis 6, 13107
21728 ; PWR5-NEXT: ori 5, 5, 21845
21729 ; PWR5-NEXT: rotldi 8, 4, 63
21730 ; PWR5-NEXT: rotldi 9, 3, 63
21731 ; PWR5-NEXT: rldimi 5, 5, 32, 0
21732 ; PWR5-NEXT: and 8, 8, 5
21733 ; PWR5-NEXT: and 5, 9, 5
21734 ; PWR5-NEXT: ori 6, 6, 13107
21735 ; PWR5-NEXT: sub 3, 3, 5
21736 ; PWR5-NEXT: rldimi 6, 6, 32, 0
21737 ; PWR5-NEXT: sub 4, 4, 8
21738 ; PWR5-NEXT: and 8, 3, 6
21739 ; PWR5-NEXT: rotldi 3, 3, 62
21740 ; PWR5-NEXT: and 3, 3, 6
21741 ; PWR5-NEXT: lis 7, 3855
21742 ; PWR5-NEXT: and 5, 4, 6
21743 ; PWR5-NEXT: rotldi 4, 4, 62
21744 ; PWR5-NEXT: add 3, 8, 3
21745 ; PWR5-NEXT: lis 9, 257
21746 ; PWR5-NEXT: ori 7, 7, 3855
21747 ; PWR5-NEXT: and 4, 4, 6
21748 ; PWR5-NEXT: rldicl 6, 3, 60, 4
21749 ; PWR5-NEXT: ori 9, 9, 257
21750 ; PWR5-NEXT: rldimi 7, 7, 32, 0
21751 ; PWR5-NEXT: add 4, 5, 4
21752 ; PWR5-NEXT: add 3, 3, 6
21753 ; PWR5-NEXT: rldimi 9, 9, 32, 0
21754 ; PWR5-NEXT: rldicl 5, 4, 60, 4
21755 ; PWR5-NEXT: and 3, 3, 7
21756 ; PWR5-NEXT: add 4, 4, 5
21757 ; PWR5-NEXT: mulld 3, 3, 9
21758 ; PWR5-NEXT: and 4, 4, 7
21759 ; PWR5-NEXT: rldicl 3, 3, 8, 56
21760 ; PWR5-NEXT: mulld 4, 4, 9
21761 ; PWR5-NEXT: li 5, 38
21762 ; PWR5-NEXT: subfic 3, 3, 38
21763 ; PWR5-NEXT: rldicl 4, 4, 8, 56
21764 ; PWR5-NEXT: subfe 3, 5, 5
21765 ; PWR5-NEXT: subfic 4, 4, 38
21766 ; PWR5-NEXT: subfe 4, 5, 5
21769 ; PWR6-LABEL: ugt_38_v2i64:
21771 ; PWR6-NEXT: lis 5, 21845
21772 ; PWR6-NEXT: lis 6, 13107
21773 ; PWR6-NEXT: ori 5, 5, 21845
21774 ; PWR6-NEXT: rotldi 8, 4, 63
21775 ; PWR6-NEXT: rotldi 9, 3, 63
21776 ; PWR6-NEXT: rldimi 5, 5, 32, 0
21777 ; PWR6-NEXT: and 8, 8, 5
21778 ; PWR6-NEXT: and 5, 9, 5
21779 ; PWR6-NEXT: ori 6, 6, 13107
21780 ; PWR6-NEXT: sub 3, 3, 5
21781 ; PWR6-NEXT: rldimi 6, 6, 32, 0
21782 ; PWR6-NEXT: sub 4, 4, 8
21783 ; PWR6-NEXT: and 8, 3, 6
21784 ; PWR6-NEXT: rotldi 3, 3, 62
21785 ; PWR6-NEXT: and 3, 3, 6
21786 ; PWR6-NEXT: lis 7, 3855
21787 ; PWR6-NEXT: and 5, 4, 6
21788 ; PWR6-NEXT: rotldi 4, 4, 62
21789 ; PWR6-NEXT: add 3, 8, 3
21790 ; PWR6-NEXT: lis 9, 257
21791 ; PWR6-NEXT: ori 7, 7, 3855
21792 ; PWR6-NEXT: and 4, 4, 6
21793 ; PWR6-NEXT: rldicl 6, 3, 60, 4
21794 ; PWR6-NEXT: ori 9, 9, 257
21795 ; PWR6-NEXT: rldimi 7, 7, 32, 0
21796 ; PWR6-NEXT: add 4, 5, 4
21797 ; PWR6-NEXT: add 3, 3, 6
21798 ; PWR6-NEXT: rldimi 9, 9, 32, 0
21799 ; PWR6-NEXT: rldicl 5, 4, 60, 4
21800 ; PWR6-NEXT: and 3, 3, 7
21801 ; PWR6-NEXT: add 4, 4, 5
21802 ; PWR6-NEXT: mulld 3, 3, 9
21803 ; PWR6-NEXT: and 4, 4, 7
21804 ; PWR6-NEXT: rldicl 3, 3, 8, 56
21805 ; PWR6-NEXT: mulld 4, 4, 9
21806 ; PWR6-NEXT: li 5, 38
21807 ; PWR6-NEXT: subfic 3, 3, 38
21808 ; PWR6-NEXT: rldicl 4, 4, 8, 56
21809 ; PWR6-NEXT: subfe 3, 5, 5
21810 ; PWR6-NEXT: subfic 4, 4, 38
21811 ; PWR6-NEXT: subfe 4, 5, 5
21814 ; PWR7-LABEL: ugt_38_v2i64:
21816 ; PWR7-NEXT: addi 3, 1, -32
21817 ; PWR7-NEXT: li 5, 0
21818 ; PWR7-NEXT: li 6, -1
21819 ; PWR7-NEXT: stxvd2x 34, 0, 3
21820 ; PWR7-NEXT: ld 3, -24(1)
21821 ; PWR7-NEXT: ld 4, -32(1)
21822 ; PWR7-NEXT: popcntd 3, 3
21823 ; PWR7-NEXT: popcntd 4, 4
21824 ; PWR7-NEXT: cmpldi 3, 38
21825 ; PWR7-NEXT: iselgt 3, 6, 5
21826 ; PWR7-NEXT: cmpldi 4, 38
21827 ; PWR7-NEXT: iselgt 4, 6, 5
21828 ; PWR7-NEXT: std 3, -8(1)
21829 ; PWR7-NEXT: addi 3, 1, -16
21830 ; PWR7-NEXT: std 4, -16(1)
21831 ; PWR7-NEXT: lxvd2x 34, 0, 3
21834 ; PWR8-LABEL: ugt_38_v2i64:
21836 ; PWR8-NEXT: addis 3, 2, .LCPI174_0@toc@ha
21837 ; PWR8-NEXT: vpopcntd 2, 2
21838 ; PWR8-NEXT: addi 3, 3, .LCPI174_0@toc@l
21839 ; PWR8-NEXT: lxvd2x 35, 0, 3
21840 ; PWR8-NEXT: vcmpgtud 2, 2, 3
21843 ; PWR9-LABEL: ugt_38_v2i64:
21845 ; PWR9-NEXT: addis 3, 2, .LCPI174_0@toc@ha
21846 ; PWR9-NEXT: vpopcntd 2, 2
21847 ; PWR9-NEXT: addi 3, 3, .LCPI174_0@toc@l
21848 ; PWR9-NEXT: lxv 35, 0(3)
21849 ; PWR9-NEXT: vcmpgtud 2, 2, 3
21851 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
21852 %3 = icmp ugt <2 x i64> %2, <i64 38, i64 38>
21853 %4 = sext <2 x i1> %3 to <2 x i64>
21857 define <2 x i64> @ult_39_v2i64(<2 x i64> %0) {
21858 ; PWR5-LABEL: ult_39_v2i64:
21860 ; PWR5-NEXT: lis 5, 21845
21861 ; PWR5-NEXT: lis 6, 13107
21862 ; PWR5-NEXT: ori 5, 5, 21845
21863 ; PWR5-NEXT: rotldi 8, 4, 63
21864 ; PWR5-NEXT: rotldi 9, 3, 63
21865 ; PWR5-NEXT: rldimi 5, 5, 32, 0
21866 ; PWR5-NEXT: and 8, 8, 5
21867 ; PWR5-NEXT: and 5, 9, 5
21868 ; PWR5-NEXT: ori 6, 6, 13107
21869 ; PWR5-NEXT: sub 3, 3, 5
21870 ; PWR5-NEXT: rldimi 6, 6, 32, 0
21871 ; PWR5-NEXT: sub 4, 4, 8
21872 ; PWR5-NEXT: and 8, 3, 6
21873 ; PWR5-NEXT: rotldi 3, 3, 62
21874 ; PWR5-NEXT: and 3, 3, 6
21875 ; PWR5-NEXT: lis 7, 3855
21876 ; PWR5-NEXT: and 5, 4, 6
21877 ; PWR5-NEXT: rotldi 4, 4, 62
21878 ; PWR5-NEXT: add 3, 8, 3
21879 ; PWR5-NEXT: lis 9, 257
21880 ; PWR5-NEXT: ori 7, 7, 3855
21881 ; PWR5-NEXT: and 4, 4, 6
21882 ; PWR5-NEXT: rldicl 6, 3, 60, 4
21883 ; PWR5-NEXT: ori 9, 9, 257
21884 ; PWR5-NEXT: rldimi 7, 7, 32, 0
21885 ; PWR5-NEXT: add 4, 5, 4
21886 ; PWR5-NEXT: add 3, 3, 6
21887 ; PWR5-NEXT: rldimi 9, 9, 32, 0
21888 ; PWR5-NEXT: rldicl 5, 4, 60, 4
21889 ; PWR5-NEXT: and 3, 3, 7
21890 ; PWR5-NEXT: add 4, 4, 5
21891 ; PWR5-NEXT: mulld 3, 3, 9
21892 ; PWR5-NEXT: and 4, 4, 7
21893 ; PWR5-NEXT: rldicl 3, 3, 8, 56
21894 ; PWR5-NEXT: li 5, 39
21895 ; PWR5-NEXT: mulld 4, 4, 9
21896 ; PWR5-NEXT: subc 6, 3, 5
21897 ; PWR5-NEXT: rldicl 4, 4, 8, 56
21898 ; PWR5-NEXT: subfe 3, 3, 3
21899 ; PWR5-NEXT: subc 5, 4, 5
21900 ; PWR5-NEXT: subfe 4, 4, 4
21903 ; PWR6-LABEL: ult_39_v2i64:
21905 ; PWR6-NEXT: lis 5, 21845
21906 ; PWR6-NEXT: lis 6, 13107
21907 ; PWR6-NEXT: ori 5, 5, 21845
21908 ; PWR6-NEXT: rotldi 8, 4, 63
21909 ; PWR6-NEXT: rotldi 9, 3, 63
21910 ; PWR6-NEXT: rldimi 5, 5, 32, 0
21911 ; PWR6-NEXT: and 8, 8, 5
21912 ; PWR6-NEXT: and 5, 9, 5
21913 ; PWR6-NEXT: ori 6, 6, 13107
21914 ; PWR6-NEXT: sub 3, 3, 5
21915 ; PWR6-NEXT: rldimi 6, 6, 32, 0
21916 ; PWR6-NEXT: sub 4, 4, 8
21917 ; PWR6-NEXT: and 8, 3, 6
21918 ; PWR6-NEXT: rotldi 3, 3, 62
21919 ; PWR6-NEXT: and 3, 3, 6
21920 ; PWR6-NEXT: lis 7, 3855
21921 ; PWR6-NEXT: and 5, 4, 6
21922 ; PWR6-NEXT: rotldi 4, 4, 62
21923 ; PWR6-NEXT: add 3, 8, 3
21924 ; PWR6-NEXT: lis 9, 257
21925 ; PWR6-NEXT: ori 7, 7, 3855
21926 ; PWR6-NEXT: and 4, 4, 6
21927 ; PWR6-NEXT: rldicl 6, 3, 60, 4
21928 ; PWR6-NEXT: ori 9, 9, 257
21929 ; PWR6-NEXT: rldimi 7, 7, 32, 0
21930 ; PWR6-NEXT: add 4, 5, 4
21931 ; PWR6-NEXT: add 3, 3, 6
21932 ; PWR6-NEXT: rldimi 9, 9, 32, 0
21933 ; PWR6-NEXT: rldicl 5, 4, 60, 4
21934 ; PWR6-NEXT: and 3, 3, 7
21935 ; PWR6-NEXT: add 4, 4, 5
21936 ; PWR6-NEXT: mulld 3, 3, 9
21937 ; PWR6-NEXT: and 4, 4, 7
21938 ; PWR6-NEXT: rldicl 3, 3, 8, 56
21939 ; PWR6-NEXT: li 5, 39
21940 ; PWR6-NEXT: mulld 4, 4, 9
21941 ; PWR6-NEXT: subc 6, 3, 5
21942 ; PWR6-NEXT: rldicl 4, 4, 8, 56
21943 ; PWR6-NEXT: subfe 3, 3, 3
21944 ; PWR6-NEXT: subc 5, 4, 5
21945 ; PWR6-NEXT: subfe 4, 4, 4
21948 ; PWR7-LABEL: ult_39_v2i64:
21950 ; PWR7-NEXT: addi 3, 1, -32
21951 ; PWR7-NEXT: li 5, 0
21952 ; PWR7-NEXT: li 6, -1
21953 ; PWR7-NEXT: stxvd2x 34, 0, 3
21954 ; PWR7-NEXT: ld 3, -24(1)
21955 ; PWR7-NEXT: ld 4, -32(1)
21956 ; PWR7-NEXT: popcntd 3, 3
21957 ; PWR7-NEXT: popcntd 4, 4
21958 ; PWR7-NEXT: cmpldi 3, 39
21959 ; PWR7-NEXT: isellt 3, 6, 5
21960 ; PWR7-NEXT: cmpldi 4, 39
21961 ; PWR7-NEXT: isellt 4, 6, 5
21962 ; PWR7-NEXT: std 3, -8(1)
21963 ; PWR7-NEXT: addi 3, 1, -16
21964 ; PWR7-NEXT: std 4, -16(1)
21965 ; PWR7-NEXT: lxvd2x 34, 0, 3
21968 ; PWR8-LABEL: ult_39_v2i64:
21970 ; PWR8-NEXT: addis 3, 2, .LCPI175_0@toc@ha
21971 ; PWR8-NEXT: vpopcntd 2, 2
21972 ; PWR8-NEXT: addi 3, 3, .LCPI175_0@toc@l
21973 ; PWR8-NEXT: lxvd2x 35, 0, 3
21974 ; PWR8-NEXT: vcmpgtud 2, 3, 2
21977 ; PWR9-LABEL: ult_39_v2i64:
21979 ; PWR9-NEXT: addis 3, 2, .LCPI175_0@toc@ha
21980 ; PWR9-NEXT: vpopcntd 2, 2
21981 ; PWR9-NEXT: addi 3, 3, .LCPI175_0@toc@l
21982 ; PWR9-NEXT: lxv 35, 0(3)
21983 ; PWR9-NEXT: vcmpgtud 2, 3, 2
21985 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
21986 %3 = icmp ult <2 x i64> %2, <i64 39, i64 39>
21987 %4 = sext <2 x i1> %3 to <2 x i64>
21991 define <2 x i64> @ugt_39_v2i64(<2 x i64> %0) {
21992 ; PWR5-LABEL: ugt_39_v2i64:
21994 ; PWR5-NEXT: lis 5, 21845
21995 ; PWR5-NEXT: lis 6, 13107
21996 ; PWR5-NEXT: ori 5, 5, 21845
21997 ; PWR5-NEXT: rotldi 8, 4, 63
21998 ; PWR5-NEXT: rotldi 9, 3, 63
21999 ; PWR5-NEXT: rldimi 5, 5, 32, 0
22000 ; PWR5-NEXT: and 8, 8, 5
22001 ; PWR5-NEXT: and 5, 9, 5
22002 ; PWR5-NEXT: ori 6, 6, 13107
22003 ; PWR5-NEXT: sub 3, 3, 5
22004 ; PWR5-NEXT: rldimi 6, 6, 32, 0
22005 ; PWR5-NEXT: sub 4, 4, 8
22006 ; PWR5-NEXT: and 8, 3, 6
22007 ; PWR5-NEXT: rotldi 3, 3, 62
22008 ; PWR5-NEXT: and 3, 3, 6
22009 ; PWR5-NEXT: lis 7, 3855
22010 ; PWR5-NEXT: and 5, 4, 6
22011 ; PWR5-NEXT: rotldi 4, 4, 62
22012 ; PWR5-NEXT: add 3, 8, 3
22013 ; PWR5-NEXT: lis 9, 257
22014 ; PWR5-NEXT: ori 7, 7, 3855
22015 ; PWR5-NEXT: and 4, 4, 6
22016 ; PWR5-NEXT: rldicl 6, 3, 60, 4
22017 ; PWR5-NEXT: ori 9, 9, 257
22018 ; PWR5-NEXT: rldimi 7, 7, 32, 0
22019 ; PWR5-NEXT: add 4, 5, 4
22020 ; PWR5-NEXT: add 3, 3, 6
22021 ; PWR5-NEXT: rldimi 9, 9, 32, 0
22022 ; PWR5-NEXT: rldicl 5, 4, 60, 4
22023 ; PWR5-NEXT: and 3, 3, 7
22024 ; PWR5-NEXT: add 4, 4, 5
22025 ; PWR5-NEXT: mulld 3, 3, 9
22026 ; PWR5-NEXT: and 4, 4, 7
22027 ; PWR5-NEXT: rldicl 3, 3, 8, 56
22028 ; PWR5-NEXT: mulld 4, 4, 9
22029 ; PWR5-NEXT: li 5, 39
22030 ; PWR5-NEXT: subfic 3, 3, 39
22031 ; PWR5-NEXT: rldicl 4, 4, 8, 56
22032 ; PWR5-NEXT: subfe 3, 5, 5
22033 ; PWR5-NEXT: subfic 4, 4, 39
22034 ; PWR5-NEXT: subfe 4, 5, 5
22037 ; PWR6-LABEL: ugt_39_v2i64:
22039 ; PWR6-NEXT: lis 5, 21845
22040 ; PWR6-NEXT: lis 6, 13107
22041 ; PWR6-NEXT: ori 5, 5, 21845
22042 ; PWR6-NEXT: rotldi 8, 4, 63
22043 ; PWR6-NEXT: rotldi 9, 3, 63
22044 ; PWR6-NEXT: rldimi 5, 5, 32, 0
22045 ; PWR6-NEXT: and 8, 8, 5
22046 ; PWR6-NEXT: and 5, 9, 5
22047 ; PWR6-NEXT: ori 6, 6, 13107
22048 ; PWR6-NEXT: sub 3, 3, 5
22049 ; PWR6-NEXT: rldimi 6, 6, 32, 0
22050 ; PWR6-NEXT: sub 4, 4, 8
22051 ; PWR6-NEXT: and 8, 3, 6
22052 ; PWR6-NEXT: rotldi 3, 3, 62
22053 ; PWR6-NEXT: and 3, 3, 6
22054 ; PWR6-NEXT: lis 7, 3855
22055 ; PWR6-NEXT: and 5, 4, 6
22056 ; PWR6-NEXT: rotldi 4, 4, 62
22057 ; PWR6-NEXT: add 3, 8, 3
22058 ; PWR6-NEXT: lis 9, 257
22059 ; PWR6-NEXT: ori 7, 7, 3855
22060 ; PWR6-NEXT: and 4, 4, 6
22061 ; PWR6-NEXT: rldicl 6, 3, 60, 4
22062 ; PWR6-NEXT: ori 9, 9, 257
22063 ; PWR6-NEXT: rldimi 7, 7, 32, 0
22064 ; PWR6-NEXT: add 4, 5, 4
22065 ; PWR6-NEXT: add 3, 3, 6
22066 ; PWR6-NEXT: rldimi 9, 9, 32, 0
22067 ; PWR6-NEXT: rldicl 5, 4, 60, 4
22068 ; PWR6-NEXT: and 3, 3, 7
22069 ; PWR6-NEXT: add 4, 4, 5
22070 ; PWR6-NEXT: mulld 3, 3, 9
22071 ; PWR6-NEXT: and 4, 4, 7
22072 ; PWR6-NEXT: rldicl 3, 3, 8, 56
22073 ; PWR6-NEXT: mulld 4, 4, 9
22074 ; PWR6-NEXT: li 5, 39
22075 ; PWR6-NEXT: subfic 3, 3, 39
22076 ; PWR6-NEXT: rldicl 4, 4, 8, 56
22077 ; PWR6-NEXT: subfe 3, 5, 5
22078 ; PWR6-NEXT: subfic 4, 4, 39
22079 ; PWR6-NEXT: subfe 4, 5, 5
22082 ; PWR7-LABEL: ugt_39_v2i64:
22084 ; PWR7-NEXT: addi 3, 1, -32
22085 ; PWR7-NEXT: li 5, 0
22086 ; PWR7-NEXT: li 6, -1
22087 ; PWR7-NEXT: stxvd2x 34, 0, 3
22088 ; PWR7-NEXT: ld 3, -24(1)
22089 ; PWR7-NEXT: ld 4, -32(1)
22090 ; PWR7-NEXT: popcntd 3, 3
22091 ; PWR7-NEXT: popcntd 4, 4
22092 ; PWR7-NEXT: cmpldi 3, 39
22093 ; PWR7-NEXT: iselgt 3, 6, 5
22094 ; PWR7-NEXT: cmpldi 4, 39
22095 ; PWR7-NEXT: iselgt 4, 6, 5
22096 ; PWR7-NEXT: std 3, -8(1)
22097 ; PWR7-NEXT: addi 3, 1, -16
22098 ; PWR7-NEXT: std 4, -16(1)
22099 ; PWR7-NEXT: lxvd2x 34, 0, 3
22102 ; PWR8-LABEL: ugt_39_v2i64:
22104 ; PWR8-NEXT: addis 3, 2, .LCPI176_0@toc@ha
22105 ; PWR8-NEXT: vpopcntd 2, 2
22106 ; PWR8-NEXT: addi 3, 3, .LCPI176_0@toc@l
22107 ; PWR8-NEXT: lxvd2x 35, 0, 3
22108 ; PWR8-NEXT: vcmpgtud 2, 2, 3
22111 ; PWR9-LABEL: ugt_39_v2i64:
22113 ; PWR9-NEXT: addis 3, 2, .LCPI176_0@toc@ha
22114 ; PWR9-NEXT: vpopcntd 2, 2
22115 ; PWR9-NEXT: addi 3, 3, .LCPI176_0@toc@l
22116 ; PWR9-NEXT: lxv 35, 0(3)
22117 ; PWR9-NEXT: vcmpgtud 2, 2, 3
22119 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
22120 %3 = icmp ugt <2 x i64> %2, <i64 39, i64 39>
22121 %4 = sext <2 x i1> %3 to <2 x i64>
22125 define <2 x i64> @ult_40_v2i64(<2 x i64> %0) {
22126 ; PWR5-LABEL: ult_40_v2i64:
22128 ; PWR5-NEXT: lis 5, 21845
22129 ; PWR5-NEXT: lis 6, 13107
22130 ; PWR5-NEXT: ori 5, 5, 21845
22131 ; PWR5-NEXT: rotldi 8, 4, 63
22132 ; PWR5-NEXT: rotldi 9, 3, 63
22133 ; PWR5-NEXT: rldimi 5, 5, 32, 0
22134 ; PWR5-NEXT: and 8, 8, 5
22135 ; PWR5-NEXT: and 5, 9, 5
22136 ; PWR5-NEXT: ori 6, 6, 13107
22137 ; PWR5-NEXT: sub 3, 3, 5
22138 ; PWR5-NEXT: rldimi 6, 6, 32, 0
22139 ; PWR5-NEXT: sub 4, 4, 8
22140 ; PWR5-NEXT: and 8, 3, 6
22141 ; PWR5-NEXT: rotldi 3, 3, 62
22142 ; PWR5-NEXT: and 3, 3, 6
22143 ; PWR5-NEXT: lis 7, 3855
22144 ; PWR5-NEXT: and 5, 4, 6
22145 ; PWR5-NEXT: rotldi 4, 4, 62
22146 ; PWR5-NEXT: add 3, 8, 3
22147 ; PWR5-NEXT: lis 9, 257
22148 ; PWR5-NEXT: ori 7, 7, 3855
22149 ; PWR5-NEXT: and 4, 4, 6
22150 ; PWR5-NEXT: rldicl 6, 3, 60, 4
22151 ; PWR5-NEXT: ori 9, 9, 257
22152 ; PWR5-NEXT: rldimi 7, 7, 32, 0
22153 ; PWR5-NEXT: add 4, 5, 4
22154 ; PWR5-NEXT: add 3, 3, 6
22155 ; PWR5-NEXT: rldimi 9, 9, 32, 0
22156 ; PWR5-NEXT: rldicl 5, 4, 60, 4
22157 ; PWR5-NEXT: and 3, 3, 7
22158 ; PWR5-NEXT: add 4, 4, 5
22159 ; PWR5-NEXT: mulld 3, 3, 9
22160 ; PWR5-NEXT: and 4, 4, 7
22161 ; PWR5-NEXT: rldicl 3, 3, 8, 56
22162 ; PWR5-NEXT: li 5, 40
22163 ; PWR5-NEXT: mulld 4, 4, 9
22164 ; PWR5-NEXT: subc 6, 3, 5
22165 ; PWR5-NEXT: rldicl 4, 4, 8, 56
22166 ; PWR5-NEXT: subfe 3, 3, 3
22167 ; PWR5-NEXT: subc 5, 4, 5
22168 ; PWR5-NEXT: subfe 4, 4, 4
22171 ; PWR6-LABEL: ult_40_v2i64:
22173 ; PWR6-NEXT: lis 5, 21845
22174 ; PWR6-NEXT: lis 6, 13107
22175 ; PWR6-NEXT: ori 5, 5, 21845
22176 ; PWR6-NEXT: rotldi 8, 4, 63
22177 ; PWR6-NEXT: rotldi 9, 3, 63
22178 ; PWR6-NEXT: rldimi 5, 5, 32, 0
22179 ; PWR6-NEXT: and 8, 8, 5
22180 ; PWR6-NEXT: and 5, 9, 5
22181 ; PWR6-NEXT: ori 6, 6, 13107
22182 ; PWR6-NEXT: sub 3, 3, 5
22183 ; PWR6-NEXT: rldimi 6, 6, 32, 0
22184 ; PWR6-NEXT: sub 4, 4, 8
22185 ; PWR6-NEXT: and 8, 3, 6
22186 ; PWR6-NEXT: rotldi 3, 3, 62
22187 ; PWR6-NEXT: and 3, 3, 6
22188 ; PWR6-NEXT: lis 7, 3855
22189 ; PWR6-NEXT: and 5, 4, 6
22190 ; PWR6-NEXT: rotldi 4, 4, 62
22191 ; PWR6-NEXT: add 3, 8, 3
22192 ; PWR6-NEXT: lis 9, 257
22193 ; PWR6-NEXT: ori 7, 7, 3855
22194 ; PWR6-NEXT: and 4, 4, 6
22195 ; PWR6-NEXT: rldicl 6, 3, 60, 4
22196 ; PWR6-NEXT: ori 9, 9, 257
22197 ; PWR6-NEXT: rldimi 7, 7, 32, 0
22198 ; PWR6-NEXT: add 4, 5, 4
22199 ; PWR6-NEXT: add 3, 3, 6
22200 ; PWR6-NEXT: rldimi 9, 9, 32, 0
22201 ; PWR6-NEXT: rldicl 5, 4, 60, 4
22202 ; PWR6-NEXT: and 3, 3, 7
22203 ; PWR6-NEXT: add 4, 4, 5
22204 ; PWR6-NEXT: mulld 3, 3, 9
22205 ; PWR6-NEXT: and 4, 4, 7
22206 ; PWR6-NEXT: rldicl 3, 3, 8, 56
22207 ; PWR6-NEXT: li 5, 40
22208 ; PWR6-NEXT: mulld 4, 4, 9
22209 ; PWR6-NEXT: subc 6, 3, 5
22210 ; PWR6-NEXT: rldicl 4, 4, 8, 56
22211 ; PWR6-NEXT: subfe 3, 3, 3
22212 ; PWR6-NEXT: subc 5, 4, 5
22213 ; PWR6-NEXT: subfe 4, 4, 4
22216 ; PWR7-LABEL: ult_40_v2i64:
22218 ; PWR7-NEXT: addi 3, 1, -32
22219 ; PWR7-NEXT: li 5, 0
22220 ; PWR7-NEXT: li 6, -1
22221 ; PWR7-NEXT: stxvd2x 34, 0, 3
22222 ; PWR7-NEXT: ld 3, -24(1)
22223 ; PWR7-NEXT: ld 4, -32(1)
22224 ; PWR7-NEXT: popcntd 3, 3
22225 ; PWR7-NEXT: popcntd 4, 4
22226 ; PWR7-NEXT: cmpldi 3, 40
22227 ; PWR7-NEXT: isellt 3, 6, 5
22228 ; PWR7-NEXT: cmpldi 4, 40
22229 ; PWR7-NEXT: isellt 4, 6, 5
22230 ; PWR7-NEXT: std 3, -8(1)
22231 ; PWR7-NEXT: addi 3, 1, -16
22232 ; PWR7-NEXT: std 4, -16(1)
22233 ; PWR7-NEXT: lxvd2x 34, 0, 3
22236 ; PWR8-LABEL: ult_40_v2i64:
22238 ; PWR8-NEXT: addis 3, 2, .LCPI177_0@toc@ha
22239 ; PWR8-NEXT: vpopcntd 2, 2
22240 ; PWR8-NEXT: addi 3, 3, .LCPI177_0@toc@l
22241 ; PWR8-NEXT: lxvd2x 35, 0, 3
22242 ; PWR8-NEXT: vcmpgtud 2, 3, 2
22245 ; PWR9-LABEL: ult_40_v2i64:
22247 ; PWR9-NEXT: addis 3, 2, .LCPI177_0@toc@ha
22248 ; PWR9-NEXT: vpopcntd 2, 2
22249 ; PWR9-NEXT: addi 3, 3, .LCPI177_0@toc@l
22250 ; PWR9-NEXT: lxv 35, 0(3)
22251 ; PWR9-NEXT: vcmpgtud 2, 3, 2
22253 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
22254 %3 = icmp ult <2 x i64> %2, <i64 40, i64 40>
22255 %4 = sext <2 x i1> %3 to <2 x i64>
22259 define <2 x i64> @ugt_40_v2i64(<2 x i64> %0) {
22260 ; PWR5-LABEL: ugt_40_v2i64:
22262 ; PWR5-NEXT: lis 5, 21845
22263 ; PWR5-NEXT: lis 6, 13107
22264 ; PWR5-NEXT: ori 5, 5, 21845
22265 ; PWR5-NEXT: rotldi 8, 4, 63
22266 ; PWR5-NEXT: rotldi 9, 3, 63
22267 ; PWR5-NEXT: rldimi 5, 5, 32, 0
22268 ; PWR5-NEXT: and 8, 8, 5
22269 ; PWR5-NEXT: and 5, 9, 5
22270 ; PWR5-NEXT: ori 6, 6, 13107
22271 ; PWR5-NEXT: sub 3, 3, 5
22272 ; PWR5-NEXT: rldimi 6, 6, 32, 0
22273 ; PWR5-NEXT: sub 4, 4, 8
22274 ; PWR5-NEXT: and 8, 3, 6
22275 ; PWR5-NEXT: rotldi 3, 3, 62
22276 ; PWR5-NEXT: and 3, 3, 6
22277 ; PWR5-NEXT: lis 7, 3855
22278 ; PWR5-NEXT: and 5, 4, 6
22279 ; PWR5-NEXT: rotldi 4, 4, 62
22280 ; PWR5-NEXT: add 3, 8, 3
22281 ; PWR5-NEXT: lis 9, 257
22282 ; PWR5-NEXT: ori 7, 7, 3855
22283 ; PWR5-NEXT: and 4, 4, 6
22284 ; PWR5-NEXT: rldicl 6, 3, 60, 4
22285 ; PWR5-NEXT: ori 9, 9, 257
22286 ; PWR5-NEXT: rldimi 7, 7, 32, 0
22287 ; PWR5-NEXT: add 4, 5, 4
22288 ; PWR5-NEXT: add 3, 3, 6
22289 ; PWR5-NEXT: rldimi 9, 9, 32, 0
22290 ; PWR5-NEXT: rldicl 5, 4, 60, 4
22291 ; PWR5-NEXT: and 3, 3, 7
22292 ; PWR5-NEXT: add 4, 4, 5
22293 ; PWR5-NEXT: mulld 3, 3, 9
22294 ; PWR5-NEXT: and 4, 4, 7
22295 ; PWR5-NEXT: rldicl 3, 3, 8, 56
22296 ; PWR5-NEXT: mulld 4, 4, 9
22297 ; PWR5-NEXT: li 5, 40
22298 ; PWR5-NEXT: subfic 3, 3, 40
22299 ; PWR5-NEXT: rldicl 4, 4, 8, 56
22300 ; PWR5-NEXT: subfe 3, 5, 5
22301 ; PWR5-NEXT: subfic 4, 4, 40
22302 ; PWR5-NEXT: subfe 4, 5, 5
22305 ; PWR6-LABEL: ugt_40_v2i64:
22307 ; PWR6-NEXT: lis 5, 21845
22308 ; PWR6-NEXT: lis 6, 13107
22309 ; PWR6-NEXT: ori 5, 5, 21845
22310 ; PWR6-NEXT: rotldi 8, 4, 63
22311 ; PWR6-NEXT: rotldi 9, 3, 63
22312 ; PWR6-NEXT: rldimi 5, 5, 32, 0
22313 ; PWR6-NEXT: and 8, 8, 5
22314 ; PWR6-NEXT: and 5, 9, 5
22315 ; PWR6-NEXT: ori 6, 6, 13107
22316 ; PWR6-NEXT: sub 3, 3, 5
22317 ; PWR6-NEXT: rldimi 6, 6, 32, 0
22318 ; PWR6-NEXT: sub 4, 4, 8
22319 ; PWR6-NEXT: and 8, 3, 6
22320 ; PWR6-NEXT: rotldi 3, 3, 62
22321 ; PWR6-NEXT: and 3, 3, 6
22322 ; PWR6-NEXT: lis 7, 3855
22323 ; PWR6-NEXT: and 5, 4, 6
22324 ; PWR6-NEXT: rotldi 4, 4, 62
22325 ; PWR6-NEXT: add 3, 8, 3
22326 ; PWR6-NEXT: lis 9, 257
22327 ; PWR6-NEXT: ori 7, 7, 3855
22328 ; PWR6-NEXT: and 4, 4, 6
22329 ; PWR6-NEXT: rldicl 6, 3, 60, 4
22330 ; PWR6-NEXT: ori 9, 9, 257
22331 ; PWR6-NEXT: rldimi 7, 7, 32, 0
22332 ; PWR6-NEXT: add 4, 5, 4
22333 ; PWR6-NEXT: add 3, 3, 6
22334 ; PWR6-NEXT: rldimi 9, 9, 32, 0
22335 ; PWR6-NEXT: rldicl 5, 4, 60, 4
22336 ; PWR6-NEXT: and 3, 3, 7
22337 ; PWR6-NEXT: add 4, 4, 5
22338 ; PWR6-NEXT: mulld 3, 3, 9
22339 ; PWR6-NEXT: and 4, 4, 7
22340 ; PWR6-NEXT: rldicl 3, 3, 8, 56
22341 ; PWR6-NEXT: mulld 4, 4, 9
22342 ; PWR6-NEXT: li 5, 40
22343 ; PWR6-NEXT: subfic 3, 3, 40
22344 ; PWR6-NEXT: rldicl 4, 4, 8, 56
22345 ; PWR6-NEXT: subfe 3, 5, 5
22346 ; PWR6-NEXT: subfic 4, 4, 40
22347 ; PWR6-NEXT: subfe 4, 5, 5
22350 ; PWR7-LABEL: ugt_40_v2i64:
22352 ; PWR7-NEXT: addi 3, 1, -32
22353 ; PWR7-NEXT: li 5, 0
22354 ; PWR7-NEXT: li 6, -1
22355 ; PWR7-NEXT: stxvd2x 34, 0, 3
22356 ; PWR7-NEXT: ld 3, -24(1)
22357 ; PWR7-NEXT: ld 4, -32(1)
22358 ; PWR7-NEXT: popcntd 3, 3
22359 ; PWR7-NEXT: popcntd 4, 4
22360 ; PWR7-NEXT: cmpldi 3, 40
22361 ; PWR7-NEXT: iselgt 3, 6, 5
22362 ; PWR7-NEXT: cmpldi 4, 40
22363 ; PWR7-NEXT: iselgt 4, 6, 5
22364 ; PWR7-NEXT: std 3, -8(1)
22365 ; PWR7-NEXT: addi 3, 1, -16
22366 ; PWR7-NEXT: std 4, -16(1)
22367 ; PWR7-NEXT: lxvd2x 34, 0, 3
22370 ; PWR8-LABEL: ugt_40_v2i64:
22372 ; PWR8-NEXT: addis 3, 2, .LCPI178_0@toc@ha
22373 ; PWR8-NEXT: vpopcntd 2, 2
22374 ; PWR8-NEXT: addi 3, 3, .LCPI178_0@toc@l
22375 ; PWR8-NEXT: lxvd2x 35, 0, 3
22376 ; PWR8-NEXT: vcmpgtud 2, 2, 3
22379 ; PWR9-LABEL: ugt_40_v2i64:
22381 ; PWR9-NEXT: addis 3, 2, .LCPI178_0@toc@ha
22382 ; PWR9-NEXT: vpopcntd 2, 2
22383 ; PWR9-NEXT: addi 3, 3, .LCPI178_0@toc@l
22384 ; PWR9-NEXT: lxv 35, 0(3)
22385 ; PWR9-NEXT: vcmpgtud 2, 2, 3
22387 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
22388 %3 = icmp ugt <2 x i64> %2, <i64 40, i64 40>
22389 %4 = sext <2 x i1> %3 to <2 x i64>
22393 define <2 x i64> @ult_41_v2i64(<2 x i64> %0) {
22394 ; PWR5-LABEL: ult_41_v2i64:
22396 ; PWR5-NEXT: lis 5, 21845
22397 ; PWR5-NEXT: lis 6, 13107
22398 ; PWR5-NEXT: ori 5, 5, 21845
22399 ; PWR5-NEXT: rotldi 8, 4, 63
22400 ; PWR5-NEXT: rotldi 9, 3, 63
22401 ; PWR5-NEXT: rldimi 5, 5, 32, 0
22402 ; PWR5-NEXT: and 8, 8, 5
22403 ; PWR5-NEXT: and 5, 9, 5
22404 ; PWR5-NEXT: ori 6, 6, 13107
22405 ; PWR5-NEXT: sub 3, 3, 5
22406 ; PWR5-NEXT: rldimi 6, 6, 32, 0
22407 ; PWR5-NEXT: sub 4, 4, 8
22408 ; PWR5-NEXT: and 8, 3, 6
22409 ; PWR5-NEXT: rotldi 3, 3, 62
22410 ; PWR5-NEXT: and 3, 3, 6
22411 ; PWR5-NEXT: lis 7, 3855
22412 ; PWR5-NEXT: and 5, 4, 6
22413 ; PWR5-NEXT: rotldi 4, 4, 62
22414 ; PWR5-NEXT: add 3, 8, 3
22415 ; PWR5-NEXT: lis 9, 257
22416 ; PWR5-NEXT: ori 7, 7, 3855
22417 ; PWR5-NEXT: and 4, 4, 6
22418 ; PWR5-NEXT: rldicl 6, 3, 60, 4
22419 ; PWR5-NEXT: ori 9, 9, 257
22420 ; PWR5-NEXT: rldimi 7, 7, 32, 0
22421 ; PWR5-NEXT: add 4, 5, 4
22422 ; PWR5-NEXT: add 3, 3, 6
22423 ; PWR5-NEXT: rldimi 9, 9, 32, 0
22424 ; PWR5-NEXT: rldicl 5, 4, 60, 4
22425 ; PWR5-NEXT: and 3, 3, 7
22426 ; PWR5-NEXT: add 4, 4, 5
22427 ; PWR5-NEXT: mulld 3, 3, 9
22428 ; PWR5-NEXT: and 4, 4, 7
22429 ; PWR5-NEXT: rldicl 3, 3, 8, 56
22430 ; PWR5-NEXT: li 5, 41
22431 ; PWR5-NEXT: mulld 4, 4, 9
22432 ; PWR5-NEXT: subc 6, 3, 5
22433 ; PWR5-NEXT: rldicl 4, 4, 8, 56
22434 ; PWR5-NEXT: subfe 3, 3, 3
22435 ; PWR5-NEXT: subc 5, 4, 5
22436 ; PWR5-NEXT: subfe 4, 4, 4
22439 ; PWR6-LABEL: ult_41_v2i64:
22441 ; PWR6-NEXT: lis 5, 21845
22442 ; PWR6-NEXT: lis 6, 13107
22443 ; PWR6-NEXT: ori 5, 5, 21845
22444 ; PWR6-NEXT: rotldi 8, 4, 63
22445 ; PWR6-NEXT: rotldi 9, 3, 63
22446 ; PWR6-NEXT: rldimi 5, 5, 32, 0
22447 ; PWR6-NEXT: and 8, 8, 5
22448 ; PWR6-NEXT: and 5, 9, 5
22449 ; PWR6-NEXT: ori 6, 6, 13107
22450 ; PWR6-NEXT: sub 3, 3, 5
22451 ; PWR6-NEXT: rldimi 6, 6, 32, 0
22452 ; PWR6-NEXT: sub 4, 4, 8
22453 ; PWR6-NEXT: and 8, 3, 6
22454 ; PWR6-NEXT: rotldi 3, 3, 62
22455 ; PWR6-NEXT: and 3, 3, 6
22456 ; PWR6-NEXT: lis 7, 3855
22457 ; PWR6-NEXT: and 5, 4, 6
22458 ; PWR6-NEXT: rotldi 4, 4, 62
22459 ; PWR6-NEXT: add 3, 8, 3
22460 ; PWR6-NEXT: lis 9, 257
22461 ; PWR6-NEXT: ori 7, 7, 3855
22462 ; PWR6-NEXT: and 4, 4, 6
22463 ; PWR6-NEXT: rldicl 6, 3, 60, 4
22464 ; PWR6-NEXT: ori 9, 9, 257
22465 ; PWR6-NEXT: rldimi 7, 7, 32, 0
22466 ; PWR6-NEXT: add 4, 5, 4
22467 ; PWR6-NEXT: add 3, 3, 6
22468 ; PWR6-NEXT: rldimi 9, 9, 32, 0
22469 ; PWR6-NEXT: rldicl 5, 4, 60, 4
22470 ; PWR6-NEXT: and 3, 3, 7
22471 ; PWR6-NEXT: add 4, 4, 5
22472 ; PWR6-NEXT: mulld 3, 3, 9
22473 ; PWR6-NEXT: and 4, 4, 7
22474 ; PWR6-NEXT: rldicl 3, 3, 8, 56
22475 ; PWR6-NEXT: li 5, 41
22476 ; PWR6-NEXT: mulld 4, 4, 9
22477 ; PWR6-NEXT: subc 6, 3, 5
22478 ; PWR6-NEXT: rldicl 4, 4, 8, 56
22479 ; PWR6-NEXT: subfe 3, 3, 3
22480 ; PWR6-NEXT: subc 5, 4, 5
22481 ; PWR6-NEXT: subfe 4, 4, 4
22484 ; PWR7-LABEL: ult_41_v2i64:
22486 ; PWR7-NEXT: addi 3, 1, -32
22487 ; PWR7-NEXT: li 5, 0
22488 ; PWR7-NEXT: li 6, -1
22489 ; PWR7-NEXT: stxvd2x 34, 0, 3
22490 ; PWR7-NEXT: ld 3, -24(1)
22491 ; PWR7-NEXT: ld 4, -32(1)
22492 ; PWR7-NEXT: popcntd 3, 3
22493 ; PWR7-NEXT: popcntd 4, 4
22494 ; PWR7-NEXT: cmpldi 3, 41
22495 ; PWR7-NEXT: isellt 3, 6, 5
22496 ; PWR7-NEXT: cmpldi 4, 41
22497 ; PWR7-NEXT: isellt 4, 6, 5
22498 ; PWR7-NEXT: std 3, -8(1)
22499 ; PWR7-NEXT: addi 3, 1, -16
22500 ; PWR7-NEXT: std 4, -16(1)
22501 ; PWR7-NEXT: lxvd2x 34, 0, 3
22504 ; PWR8-LABEL: ult_41_v2i64:
22506 ; PWR8-NEXT: addis 3, 2, .LCPI179_0@toc@ha
22507 ; PWR8-NEXT: vpopcntd 2, 2
22508 ; PWR8-NEXT: addi 3, 3, .LCPI179_0@toc@l
22509 ; PWR8-NEXT: lxvd2x 35, 0, 3
22510 ; PWR8-NEXT: vcmpgtud 2, 3, 2
22513 ; PWR9-LABEL: ult_41_v2i64:
22515 ; PWR9-NEXT: addis 3, 2, .LCPI179_0@toc@ha
22516 ; PWR9-NEXT: vpopcntd 2, 2
22517 ; PWR9-NEXT: addi 3, 3, .LCPI179_0@toc@l
22518 ; PWR9-NEXT: lxv 35, 0(3)
22519 ; PWR9-NEXT: vcmpgtud 2, 3, 2
22521 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
22522 %3 = icmp ult <2 x i64> %2, <i64 41, i64 41>
22523 %4 = sext <2 x i1> %3 to <2 x i64>
22527 define <2 x i64> @ugt_41_v2i64(<2 x i64> %0) {
22528 ; PWR5-LABEL: ugt_41_v2i64:
22530 ; PWR5-NEXT: lis 5, 21845
22531 ; PWR5-NEXT: lis 6, 13107
22532 ; PWR5-NEXT: ori 5, 5, 21845
22533 ; PWR5-NEXT: rotldi 8, 4, 63
22534 ; PWR5-NEXT: rotldi 9, 3, 63
22535 ; PWR5-NEXT: rldimi 5, 5, 32, 0
22536 ; PWR5-NEXT: and 8, 8, 5
22537 ; PWR5-NEXT: and 5, 9, 5
22538 ; PWR5-NEXT: ori 6, 6, 13107
22539 ; PWR5-NEXT: sub 3, 3, 5
22540 ; PWR5-NEXT: rldimi 6, 6, 32, 0
22541 ; PWR5-NEXT: sub 4, 4, 8
22542 ; PWR5-NEXT: and 8, 3, 6
22543 ; PWR5-NEXT: rotldi 3, 3, 62
22544 ; PWR5-NEXT: and 3, 3, 6
22545 ; PWR5-NEXT: lis 7, 3855
22546 ; PWR5-NEXT: and 5, 4, 6
22547 ; PWR5-NEXT: rotldi 4, 4, 62
22548 ; PWR5-NEXT: add 3, 8, 3
22549 ; PWR5-NEXT: lis 9, 257
22550 ; PWR5-NEXT: ori 7, 7, 3855
22551 ; PWR5-NEXT: and 4, 4, 6
22552 ; PWR5-NEXT: rldicl 6, 3, 60, 4
22553 ; PWR5-NEXT: ori 9, 9, 257
22554 ; PWR5-NEXT: rldimi 7, 7, 32, 0
22555 ; PWR5-NEXT: add 4, 5, 4
22556 ; PWR5-NEXT: add 3, 3, 6
22557 ; PWR5-NEXT: rldimi 9, 9, 32, 0
22558 ; PWR5-NEXT: rldicl 5, 4, 60, 4
22559 ; PWR5-NEXT: and 3, 3, 7
22560 ; PWR5-NEXT: add 4, 4, 5
22561 ; PWR5-NEXT: mulld 3, 3, 9
22562 ; PWR5-NEXT: and 4, 4, 7
22563 ; PWR5-NEXT: rldicl 3, 3, 8, 56
22564 ; PWR5-NEXT: mulld 4, 4, 9
22565 ; PWR5-NEXT: li 5, 41
22566 ; PWR5-NEXT: subfic 3, 3, 41
22567 ; PWR5-NEXT: rldicl 4, 4, 8, 56
22568 ; PWR5-NEXT: subfe 3, 5, 5
22569 ; PWR5-NEXT: subfic 4, 4, 41
22570 ; PWR5-NEXT: subfe 4, 5, 5
22573 ; PWR6-LABEL: ugt_41_v2i64:
22575 ; PWR6-NEXT: lis 5, 21845
22576 ; PWR6-NEXT: lis 6, 13107
22577 ; PWR6-NEXT: ori 5, 5, 21845
22578 ; PWR6-NEXT: rotldi 8, 4, 63
22579 ; PWR6-NEXT: rotldi 9, 3, 63
22580 ; PWR6-NEXT: rldimi 5, 5, 32, 0
22581 ; PWR6-NEXT: and 8, 8, 5
22582 ; PWR6-NEXT: and 5, 9, 5
22583 ; PWR6-NEXT: ori 6, 6, 13107
22584 ; PWR6-NEXT: sub 3, 3, 5
22585 ; PWR6-NEXT: rldimi 6, 6, 32, 0
22586 ; PWR6-NEXT: sub 4, 4, 8
22587 ; PWR6-NEXT: and 8, 3, 6
22588 ; PWR6-NEXT: rotldi 3, 3, 62
22589 ; PWR6-NEXT: and 3, 3, 6
22590 ; PWR6-NEXT: lis 7, 3855
22591 ; PWR6-NEXT: and 5, 4, 6
22592 ; PWR6-NEXT: rotldi 4, 4, 62
22593 ; PWR6-NEXT: add 3, 8, 3
22594 ; PWR6-NEXT: lis 9, 257
22595 ; PWR6-NEXT: ori 7, 7, 3855
22596 ; PWR6-NEXT: and 4, 4, 6
22597 ; PWR6-NEXT: rldicl 6, 3, 60, 4
22598 ; PWR6-NEXT: ori 9, 9, 257
22599 ; PWR6-NEXT: rldimi 7, 7, 32, 0
22600 ; PWR6-NEXT: add 4, 5, 4
22601 ; PWR6-NEXT: add 3, 3, 6
22602 ; PWR6-NEXT: rldimi 9, 9, 32, 0
22603 ; PWR6-NEXT: rldicl 5, 4, 60, 4
22604 ; PWR6-NEXT: and 3, 3, 7
22605 ; PWR6-NEXT: add 4, 4, 5
22606 ; PWR6-NEXT: mulld 3, 3, 9
22607 ; PWR6-NEXT: and 4, 4, 7
22608 ; PWR6-NEXT: rldicl 3, 3, 8, 56
22609 ; PWR6-NEXT: mulld 4, 4, 9
22610 ; PWR6-NEXT: li 5, 41
22611 ; PWR6-NEXT: subfic 3, 3, 41
22612 ; PWR6-NEXT: rldicl 4, 4, 8, 56
22613 ; PWR6-NEXT: subfe 3, 5, 5
22614 ; PWR6-NEXT: subfic 4, 4, 41
22615 ; PWR6-NEXT: subfe 4, 5, 5
22618 ; PWR7-LABEL: ugt_41_v2i64:
22620 ; PWR7-NEXT: addi 3, 1, -32
22621 ; PWR7-NEXT: li 5, 0
22622 ; PWR7-NEXT: li 6, -1
22623 ; PWR7-NEXT: stxvd2x 34, 0, 3
22624 ; PWR7-NEXT: ld 3, -24(1)
22625 ; PWR7-NEXT: ld 4, -32(1)
22626 ; PWR7-NEXT: popcntd 3, 3
22627 ; PWR7-NEXT: popcntd 4, 4
22628 ; PWR7-NEXT: cmpldi 3, 41
22629 ; PWR7-NEXT: iselgt 3, 6, 5
22630 ; PWR7-NEXT: cmpldi 4, 41
22631 ; PWR7-NEXT: iselgt 4, 6, 5
22632 ; PWR7-NEXT: std 3, -8(1)
22633 ; PWR7-NEXT: addi 3, 1, -16
22634 ; PWR7-NEXT: std 4, -16(1)
22635 ; PWR7-NEXT: lxvd2x 34, 0, 3
22638 ; PWR8-LABEL: ugt_41_v2i64:
22640 ; PWR8-NEXT: addis 3, 2, .LCPI180_0@toc@ha
22641 ; PWR8-NEXT: vpopcntd 2, 2
22642 ; PWR8-NEXT: addi 3, 3, .LCPI180_0@toc@l
22643 ; PWR8-NEXT: lxvd2x 35, 0, 3
22644 ; PWR8-NEXT: vcmpgtud 2, 2, 3
22647 ; PWR9-LABEL: ugt_41_v2i64:
22649 ; PWR9-NEXT: addis 3, 2, .LCPI180_0@toc@ha
22650 ; PWR9-NEXT: vpopcntd 2, 2
22651 ; PWR9-NEXT: addi 3, 3, .LCPI180_0@toc@l
22652 ; PWR9-NEXT: lxv 35, 0(3)
22653 ; PWR9-NEXT: vcmpgtud 2, 2, 3
22655 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
22656 %3 = icmp ugt <2 x i64> %2, <i64 41, i64 41>
22657 %4 = sext <2 x i1> %3 to <2 x i64>
22661 define <2 x i64> @ult_42_v2i64(<2 x i64> %0) {
22662 ; PWR5-LABEL: ult_42_v2i64:
22664 ; PWR5-NEXT: lis 5, 21845
22665 ; PWR5-NEXT: lis 6, 13107
22666 ; PWR5-NEXT: ori 5, 5, 21845
22667 ; PWR5-NEXT: rotldi 8, 4, 63
22668 ; PWR5-NEXT: rotldi 9, 3, 63
22669 ; PWR5-NEXT: rldimi 5, 5, 32, 0
22670 ; PWR5-NEXT: and 8, 8, 5
22671 ; PWR5-NEXT: and 5, 9, 5
22672 ; PWR5-NEXT: ori 6, 6, 13107
22673 ; PWR5-NEXT: sub 3, 3, 5
22674 ; PWR5-NEXT: rldimi 6, 6, 32, 0
22675 ; PWR5-NEXT: sub 4, 4, 8
22676 ; PWR5-NEXT: and 8, 3, 6
22677 ; PWR5-NEXT: rotldi 3, 3, 62
22678 ; PWR5-NEXT: and 3, 3, 6
22679 ; PWR5-NEXT: lis 7, 3855
22680 ; PWR5-NEXT: and 5, 4, 6
22681 ; PWR5-NEXT: rotldi 4, 4, 62
22682 ; PWR5-NEXT: add 3, 8, 3
22683 ; PWR5-NEXT: lis 9, 257
22684 ; PWR5-NEXT: ori 7, 7, 3855
22685 ; PWR5-NEXT: and 4, 4, 6
22686 ; PWR5-NEXT: rldicl 6, 3, 60, 4
22687 ; PWR5-NEXT: ori 9, 9, 257
22688 ; PWR5-NEXT: rldimi 7, 7, 32, 0
22689 ; PWR5-NEXT: add 4, 5, 4
22690 ; PWR5-NEXT: add 3, 3, 6
22691 ; PWR5-NEXT: rldimi 9, 9, 32, 0
22692 ; PWR5-NEXT: rldicl 5, 4, 60, 4
22693 ; PWR5-NEXT: and 3, 3, 7
22694 ; PWR5-NEXT: add 4, 4, 5
22695 ; PWR5-NEXT: mulld 3, 3, 9
22696 ; PWR5-NEXT: and 4, 4, 7
22697 ; PWR5-NEXT: rldicl 3, 3, 8, 56
22698 ; PWR5-NEXT: li 5, 42
22699 ; PWR5-NEXT: mulld 4, 4, 9
22700 ; PWR5-NEXT: subc 6, 3, 5
22701 ; PWR5-NEXT: rldicl 4, 4, 8, 56
22702 ; PWR5-NEXT: subfe 3, 3, 3
22703 ; PWR5-NEXT: subc 5, 4, 5
22704 ; PWR5-NEXT: subfe 4, 4, 4
22707 ; PWR6-LABEL: ult_42_v2i64:
22709 ; PWR6-NEXT: lis 5, 21845
22710 ; PWR6-NEXT: lis 6, 13107
22711 ; PWR6-NEXT: ori 5, 5, 21845
22712 ; PWR6-NEXT: rotldi 8, 4, 63
22713 ; PWR6-NEXT: rotldi 9, 3, 63
22714 ; PWR6-NEXT: rldimi 5, 5, 32, 0
22715 ; PWR6-NEXT: and 8, 8, 5
22716 ; PWR6-NEXT: and 5, 9, 5
22717 ; PWR6-NEXT: ori 6, 6, 13107
22718 ; PWR6-NEXT: sub 3, 3, 5
22719 ; PWR6-NEXT: rldimi 6, 6, 32, 0
22720 ; PWR6-NEXT: sub 4, 4, 8
22721 ; PWR6-NEXT: and 8, 3, 6
22722 ; PWR6-NEXT: rotldi 3, 3, 62
22723 ; PWR6-NEXT: and 3, 3, 6
22724 ; PWR6-NEXT: lis 7, 3855
22725 ; PWR6-NEXT: and 5, 4, 6
22726 ; PWR6-NEXT: rotldi 4, 4, 62
22727 ; PWR6-NEXT: add 3, 8, 3
22728 ; PWR6-NEXT: lis 9, 257
22729 ; PWR6-NEXT: ori 7, 7, 3855
22730 ; PWR6-NEXT: and 4, 4, 6
22731 ; PWR6-NEXT: rldicl 6, 3, 60, 4
22732 ; PWR6-NEXT: ori 9, 9, 257
22733 ; PWR6-NEXT: rldimi 7, 7, 32, 0
22734 ; PWR6-NEXT: add 4, 5, 4
22735 ; PWR6-NEXT: add 3, 3, 6
22736 ; PWR6-NEXT: rldimi 9, 9, 32, 0
22737 ; PWR6-NEXT: rldicl 5, 4, 60, 4
22738 ; PWR6-NEXT: and 3, 3, 7
22739 ; PWR6-NEXT: add 4, 4, 5
22740 ; PWR6-NEXT: mulld 3, 3, 9
22741 ; PWR6-NEXT: and 4, 4, 7
22742 ; PWR6-NEXT: rldicl 3, 3, 8, 56
22743 ; PWR6-NEXT: li 5, 42
22744 ; PWR6-NEXT: mulld 4, 4, 9
22745 ; PWR6-NEXT: subc 6, 3, 5
22746 ; PWR6-NEXT: rldicl 4, 4, 8, 56
22747 ; PWR6-NEXT: subfe 3, 3, 3
22748 ; PWR6-NEXT: subc 5, 4, 5
22749 ; PWR6-NEXT: subfe 4, 4, 4
22752 ; PWR7-LABEL: ult_42_v2i64:
22754 ; PWR7-NEXT: addi 3, 1, -32
22755 ; PWR7-NEXT: li 5, 0
22756 ; PWR7-NEXT: li 6, -1
22757 ; PWR7-NEXT: stxvd2x 34, 0, 3
22758 ; PWR7-NEXT: ld 3, -24(1)
22759 ; PWR7-NEXT: ld 4, -32(1)
22760 ; PWR7-NEXT: popcntd 3, 3
22761 ; PWR7-NEXT: popcntd 4, 4
22762 ; PWR7-NEXT: cmpldi 3, 42
22763 ; PWR7-NEXT: isellt 3, 6, 5
22764 ; PWR7-NEXT: cmpldi 4, 42
22765 ; PWR7-NEXT: isellt 4, 6, 5
22766 ; PWR7-NEXT: std 3, -8(1)
22767 ; PWR7-NEXT: addi 3, 1, -16
22768 ; PWR7-NEXT: std 4, -16(1)
22769 ; PWR7-NEXT: lxvd2x 34, 0, 3
22772 ; PWR8-LABEL: ult_42_v2i64:
22774 ; PWR8-NEXT: addis 3, 2, .LCPI181_0@toc@ha
22775 ; PWR8-NEXT: vpopcntd 2, 2
22776 ; PWR8-NEXT: addi 3, 3, .LCPI181_0@toc@l
22777 ; PWR8-NEXT: lxvd2x 35, 0, 3
22778 ; PWR8-NEXT: vcmpgtud 2, 3, 2
22781 ; PWR9-LABEL: ult_42_v2i64:
22783 ; PWR9-NEXT: addis 3, 2, .LCPI181_0@toc@ha
22784 ; PWR9-NEXT: vpopcntd 2, 2
22785 ; PWR9-NEXT: addi 3, 3, .LCPI181_0@toc@l
22786 ; PWR9-NEXT: lxv 35, 0(3)
22787 ; PWR9-NEXT: vcmpgtud 2, 3, 2
22789 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
22790 %3 = icmp ult <2 x i64> %2, <i64 42, i64 42>
22791 %4 = sext <2 x i1> %3 to <2 x i64>
22795 define <2 x i64> @ugt_42_v2i64(<2 x i64> %0) {
22796 ; PWR5-LABEL: ugt_42_v2i64:
22798 ; PWR5-NEXT: lis 5, 21845
22799 ; PWR5-NEXT: lis 6, 13107
22800 ; PWR5-NEXT: ori 5, 5, 21845
22801 ; PWR5-NEXT: rotldi 8, 4, 63
22802 ; PWR5-NEXT: rotldi 9, 3, 63
22803 ; PWR5-NEXT: rldimi 5, 5, 32, 0
22804 ; PWR5-NEXT: and 8, 8, 5
22805 ; PWR5-NEXT: and 5, 9, 5
22806 ; PWR5-NEXT: ori 6, 6, 13107
22807 ; PWR5-NEXT: sub 3, 3, 5
22808 ; PWR5-NEXT: rldimi 6, 6, 32, 0
22809 ; PWR5-NEXT: sub 4, 4, 8
22810 ; PWR5-NEXT: and 8, 3, 6
22811 ; PWR5-NEXT: rotldi 3, 3, 62
22812 ; PWR5-NEXT: and 3, 3, 6
22813 ; PWR5-NEXT: lis 7, 3855
22814 ; PWR5-NEXT: and 5, 4, 6
22815 ; PWR5-NEXT: rotldi 4, 4, 62
22816 ; PWR5-NEXT: add 3, 8, 3
22817 ; PWR5-NEXT: lis 9, 257
22818 ; PWR5-NEXT: ori 7, 7, 3855
22819 ; PWR5-NEXT: and 4, 4, 6
22820 ; PWR5-NEXT: rldicl 6, 3, 60, 4
22821 ; PWR5-NEXT: ori 9, 9, 257
22822 ; PWR5-NEXT: rldimi 7, 7, 32, 0
22823 ; PWR5-NEXT: add 4, 5, 4
22824 ; PWR5-NEXT: add 3, 3, 6
22825 ; PWR5-NEXT: rldimi 9, 9, 32, 0
22826 ; PWR5-NEXT: rldicl 5, 4, 60, 4
22827 ; PWR5-NEXT: and 3, 3, 7
22828 ; PWR5-NEXT: add 4, 4, 5
22829 ; PWR5-NEXT: mulld 3, 3, 9
22830 ; PWR5-NEXT: and 4, 4, 7
22831 ; PWR5-NEXT: rldicl 3, 3, 8, 56
22832 ; PWR5-NEXT: mulld 4, 4, 9
22833 ; PWR5-NEXT: li 5, 42
22834 ; PWR5-NEXT: subfic 3, 3, 42
22835 ; PWR5-NEXT: rldicl 4, 4, 8, 56
22836 ; PWR5-NEXT: subfe 3, 5, 5
22837 ; PWR5-NEXT: subfic 4, 4, 42
22838 ; PWR5-NEXT: subfe 4, 5, 5
22841 ; PWR6-LABEL: ugt_42_v2i64:
22843 ; PWR6-NEXT: lis 5, 21845
22844 ; PWR6-NEXT: lis 6, 13107
22845 ; PWR6-NEXT: ori 5, 5, 21845
22846 ; PWR6-NEXT: rotldi 8, 4, 63
22847 ; PWR6-NEXT: rotldi 9, 3, 63
22848 ; PWR6-NEXT: rldimi 5, 5, 32, 0
22849 ; PWR6-NEXT: and 8, 8, 5
22850 ; PWR6-NEXT: and 5, 9, 5
22851 ; PWR6-NEXT: ori 6, 6, 13107
22852 ; PWR6-NEXT: sub 3, 3, 5
22853 ; PWR6-NEXT: rldimi 6, 6, 32, 0
22854 ; PWR6-NEXT: sub 4, 4, 8
22855 ; PWR6-NEXT: and 8, 3, 6
22856 ; PWR6-NEXT: rotldi 3, 3, 62
22857 ; PWR6-NEXT: and 3, 3, 6
22858 ; PWR6-NEXT: lis 7, 3855
22859 ; PWR6-NEXT: and 5, 4, 6
22860 ; PWR6-NEXT: rotldi 4, 4, 62
22861 ; PWR6-NEXT: add 3, 8, 3
22862 ; PWR6-NEXT: lis 9, 257
22863 ; PWR6-NEXT: ori 7, 7, 3855
22864 ; PWR6-NEXT: and 4, 4, 6
22865 ; PWR6-NEXT: rldicl 6, 3, 60, 4
22866 ; PWR6-NEXT: ori 9, 9, 257
22867 ; PWR6-NEXT: rldimi 7, 7, 32, 0
22868 ; PWR6-NEXT: add 4, 5, 4
22869 ; PWR6-NEXT: add 3, 3, 6
22870 ; PWR6-NEXT: rldimi 9, 9, 32, 0
22871 ; PWR6-NEXT: rldicl 5, 4, 60, 4
22872 ; PWR6-NEXT: and 3, 3, 7
22873 ; PWR6-NEXT: add 4, 4, 5
22874 ; PWR6-NEXT: mulld 3, 3, 9
22875 ; PWR6-NEXT: and 4, 4, 7
22876 ; PWR6-NEXT: rldicl 3, 3, 8, 56
22877 ; PWR6-NEXT: mulld 4, 4, 9
22878 ; PWR6-NEXT: li 5, 42
22879 ; PWR6-NEXT: subfic 3, 3, 42
22880 ; PWR6-NEXT: rldicl 4, 4, 8, 56
22881 ; PWR6-NEXT: subfe 3, 5, 5
22882 ; PWR6-NEXT: subfic 4, 4, 42
22883 ; PWR6-NEXT: subfe 4, 5, 5
22886 ; PWR7-LABEL: ugt_42_v2i64:
22888 ; PWR7-NEXT: addi 3, 1, -32
22889 ; PWR7-NEXT: li 5, 0
22890 ; PWR7-NEXT: li 6, -1
22891 ; PWR7-NEXT: stxvd2x 34, 0, 3
22892 ; PWR7-NEXT: ld 3, -24(1)
22893 ; PWR7-NEXT: ld 4, -32(1)
22894 ; PWR7-NEXT: popcntd 3, 3
22895 ; PWR7-NEXT: popcntd 4, 4
22896 ; PWR7-NEXT: cmpldi 3, 42
22897 ; PWR7-NEXT: iselgt 3, 6, 5
22898 ; PWR7-NEXT: cmpldi 4, 42
22899 ; PWR7-NEXT: iselgt 4, 6, 5
22900 ; PWR7-NEXT: std 3, -8(1)
22901 ; PWR7-NEXT: addi 3, 1, -16
22902 ; PWR7-NEXT: std 4, -16(1)
22903 ; PWR7-NEXT: lxvd2x 34, 0, 3
22906 ; PWR8-LABEL: ugt_42_v2i64:
22908 ; PWR8-NEXT: addis 3, 2, .LCPI182_0@toc@ha
22909 ; PWR8-NEXT: vpopcntd 2, 2
22910 ; PWR8-NEXT: addi 3, 3, .LCPI182_0@toc@l
22911 ; PWR8-NEXT: lxvd2x 35, 0, 3
22912 ; PWR8-NEXT: vcmpgtud 2, 2, 3
22915 ; PWR9-LABEL: ugt_42_v2i64:
22917 ; PWR9-NEXT: addis 3, 2, .LCPI182_0@toc@ha
22918 ; PWR9-NEXT: vpopcntd 2, 2
22919 ; PWR9-NEXT: addi 3, 3, .LCPI182_0@toc@l
22920 ; PWR9-NEXT: lxv 35, 0(3)
22921 ; PWR9-NEXT: vcmpgtud 2, 2, 3
22923 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
22924 %3 = icmp ugt <2 x i64> %2, <i64 42, i64 42>
22925 %4 = sext <2 x i1> %3 to <2 x i64>
22929 define <2 x i64> @ult_43_v2i64(<2 x i64> %0) {
22930 ; PWR5-LABEL: ult_43_v2i64:
22932 ; PWR5-NEXT: lis 5, 21845
22933 ; PWR5-NEXT: lis 6, 13107
22934 ; PWR5-NEXT: ori 5, 5, 21845
22935 ; PWR5-NEXT: rotldi 8, 4, 63
22936 ; PWR5-NEXT: rotldi 9, 3, 63
22937 ; PWR5-NEXT: rldimi 5, 5, 32, 0
22938 ; PWR5-NEXT: and 8, 8, 5
22939 ; PWR5-NEXT: and 5, 9, 5
22940 ; PWR5-NEXT: ori 6, 6, 13107
22941 ; PWR5-NEXT: sub 3, 3, 5
22942 ; PWR5-NEXT: rldimi 6, 6, 32, 0
22943 ; PWR5-NEXT: sub 4, 4, 8
22944 ; PWR5-NEXT: and 8, 3, 6
22945 ; PWR5-NEXT: rotldi 3, 3, 62
22946 ; PWR5-NEXT: and 3, 3, 6
22947 ; PWR5-NEXT: lis 7, 3855
22948 ; PWR5-NEXT: and 5, 4, 6
22949 ; PWR5-NEXT: rotldi 4, 4, 62
22950 ; PWR5-NEXT: add 3, 8, 3
22951 ; PWR5-NEXT: lis 9, 257
22952 ; PWR5-NEXT: ori 7, 7, 3855
22953 ; PWR5-NEXT: and 4, 4, 6
22954 ; PWR5-NEXT: rldicl 6, 3, 60, 4
22955 ; PWR5-NEXT: ori 9, 9, 257
22956 ; PWR5-NEXT: rldimi 7, 7, 32, 0
22957 ; PWR5-NEXT: add 4, 5, 4
22958 ; PWR5-NEXT: add 3, 3, 6
22959 ; PWR5-NEXT: rldimi 9, 9, 32, 0
22960 ; PWR5-NEXT: rldicl 5, 4, 60, 4
22961 ; PWR5-NEXT: and 3, 3, 7
22962 ; PWR5-NEXT: add 4, 4, 5
22963 ; PWR5-NEXT: mulld 3, 3, 9
22964 ; PWR5-NEXT: and 4, 4, 7
22965 ; PWR5-NEXT: rldicl 3, 3, 8, 56
22966 ; PWR5-NEXT: li 5, 43
22967 ; PWR5-NEXT: mulld 4, 4, 9
22968 ; PWR5-NEXT: subc 6, 3, 5
22969 ; PWR5-NEXT: rldicl 4, 4, 8, 56
22970 ; PWR5-NEXT: subfe 3, 3, 3
22971 ; PWR5-NEXT: subc 5, 4, 5
22972 ; PWR5-NEXT: subfe 4, 4, 4
22975 ; PWR6-LABEL: ult_43_v2i64:
22977 ; PWR6-NEXT: lis 5, 21845
22978 ; PWR6-NEXT: lis 6, 13107
22979 ; PWR6-NEXT: ori 5, 5, 21845
22980 ; PWR6-NEXT: rotldi 8, 4, 63
22981 ; PWR6-NEXT: rotldi 9, 3, 63
22982 ; PWR6-NEXT: rldimi 5, 5, 32, 0
22983 ; PWR6-NEXT: and 8, 8, 5
22984 ; PWR6-NEXT: and 5, 9, 5
22985 ; PWR6-NEXT: ori 6, 6, 13107
22986 ; PWR6-NEXT: sub 3, 3, 5
22987 ; PWR6-NEXT: rldimi 6, 6, 32, 0
22988 ; PWR6-NEXT: sub 4, 4, 8
22989 ; PWR6-NEXT: and 8, 3, 6
22990 ; PWR6-NEXT: rotldi 3, 3, 62
22991 ; PWR6-NEXT: and 3, 3, 6
22992 ; PWR6-NEXT: lis 7, 3855
22993 ; PWR6-NEXT: and 5, 4, 6
22994 ; PWR6-NEXT: rotldi 4, 4, 62
22995 ; PWR6-NEXT: add 3, 8, 3
22996 ; PWR6-NEXT: lis 9, 257
22997 ; PWR6-NEXT: ori 7, 7, 3855
22998 ; PWR6-NEXT: and 4, 4, 6
22999 ; PWR6-NEXT: rldicl 6, 3, 60, 4
23000 ; PWR6-NEXT: ori 9, 9, 257
23001 ; PWR6-NEXT: rldimi 7, 7, 32, 0
23002 ; PWR6-NEXT: add 4, 5, 4
23003 ; PWR6-NEXT: add 3, 3, 6
23004 ; PWR6-NEXT: rldimi 9, 9, 32, 0
23005 ; PWR6-NEXT: rldicl 5, 4, 60, 4
23006 ; PWR6-NEXT: and 3, 3, 7
23007 ; PWR6-NEXT: add 4, 4, 5
23008 ; PWR6-NEXT: mulld 3, 3, 9
23009 ; PWR6-NEXT: and 4, 4, 7
23010 ; PWR6-NEXT: rldicl 3, 3, 8, 56
23011 ; PWR6-NEXT: li 5, 43
23012 ; PWR6-NEXT: mulld 4, 4, 9
23013 ; PWR6-NEXT: subc 6, 3, 5
23014 ; PWR6-NEXT: rldicl 4, 4, 8, 56
23015 ; PWR6-NEXT: subfe 3, 3, 3
23016 ; PWR6-NEXT: subc 5, 4, 5
23017 ; PWR6-NEXT: subfe 4, 4, 4
23020 ; PWR7-LABEL: ult_43_v2i64:
23022 ; PWR7-NEXT: addi 3, 1, -32
23023 ; PWR7-NEXT: li 5, 0
23024 ; PWR7-NEXT: li 6, -1
23025 ; PWR7-NEXT: stxvd2x 34, 0, 3
23026 ; PWR7-NEXT: ld 3, -24(1)
23027 ; PWR7-NEXT: ld 4, -32(1)
23028 ; PWR7-NEXT: popcntd 3, 3
23029 ; PWR7-NEXT: popcntd 4, 4
23030 ; PWR7-NEXT: cmpldi 3, 43
23031 ; PWR7-NEXT: isellt 3, 6, 5
23032 ; PWR7-NEXT: cmpldi 4, 43
23033 ; PWR7-NEXT: isellt 4, 6, 5
23034 ; PWR7-NEXT: std 3, -8(1)
23035 ; PWR7-NEXT: addi 3, 1, -16
23036 ; PWR7-NEXT: std 4, -16(1)
23037 ; PWR7-NEXT: lxvd2x 34, 0, 3
23040 ; PWR8-LABEL: ult_43_v2i64:
23042 ; PWR8-NEXT: addis 3, 2, .LCPI183_0@toc@ha
23043 ; PWR8-NEXT: vpopcntd 2, 2
23044 ; PWR8-NEXT: addi 3, 3, .LCPI183_0@toc@l
23045 ; PWR8-NEXT: lxvd2x 35, 0, 3
23046 ; PWR8-NEXT: vcmpgtud 2, 3, 2
23049 ; PWR9-LABEL: ult_43_v2i64:
23051 ; PWR9-NEXT: addis 3, 2, .LCPI183_0@toc@ha
23052 ; PWR9-NEXT: vpopcntd 2, 2
23053 ; PWR9-NEXT: addi 3, 3, .LCPI183_0@toc@l
23054 ; PWR9-NEXT: lxv 35, 0(3)
23055 ; PWR9-NEXT: vcmpgtud 2, 3, 2
23057 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
23058 %3 = icmp ult <2 x i64> %2, <i64 43, i64 43>
23059 %4 = sext <2 x i1> %3 to <2 x i64>
23063 define <2 x i64> @ugt_43_v2i64(<2 x i64> %0) {
23064 ; PWR5-LABEL: ugt_43_v2i64:
23066 ; PWR5-NEXT: lis 5, 21845
23067 ; PWR5-NEXT: lis 6, 13107
23068 ; PWR5-NEXT: ori 5, 5, 21845
23069 ; PWR5-NEXT: rotldi 8, 4, 63
23070 ; PWR5-NEXT: rotldi 9, 3, 63
23071 ; PWR5-NEXT: rldimi 5, 5, 32, 0
23072 ; PWR5-NEXT: and 8, 8, 5
23073 ; PWR5-NEXT: and 5, 9, 5
23074 ; PWR5-NEXT: ori 6, 6, 13107
23075 ; PWR5-NEXT: sub 3, 3, 5
23076 ; PWR5-NEXT: rldimi 6, 6, 32, 0
23077 ; PWR5-NEXT: sub 4, 4, 8
23078 ; PWR5-NEXT: and 8, 3, 6
23079 ; PWR5-NEXT: rotldi 3, 3, 62
23080 ; PWR5-NEXT: and 3, 3, 6
23081 ; PWR5-NEXT: lis 7, 3855
23082 ; PWR5-NEXT: and 5, 4, 6
23083 ; PWR5-NEXT: rotldi 4, 4, 62
23084 ; PWR5-NEXT: add 3, 8, 3
23085 ; PWR5-NEXT: lis 9, 257
23086 ; PWR5-NEXT: ori 7, 7, 3855
23087 ; PWR5-NEXT: and 4, 4, 6
23088 ; PWR5-NEXT: rldicl 6, 3, 60, 4
23089 ; PWR5-NEXT: ori 9, 9, 257
23090 ; PWR5-NEXT: rldimi 7, 7, 32, 0
23091 ; PWR5-NEXT: add 4, 5, 4
23092 ; PWR5-NEXT: add 3, 3, 6
23093 ; PWR5-NEXT: rldimi 9, 9, 32, 0
23094 ; PWR5-NEXT: rldicl 5, 4, 60, 4
23095 ; PWR5-NEXT: and 3, 3, 7
23096 ; PWR5-NEXT: add 4, 4, 5
23097 ; PWR5-NEXT: mulld 3, 3, 9
23098 ; PWR5-NEXT: and 4, 4, 7
23099 ; PWR5-NEXT: rldicl 3, 3, 8, 56
23100 ; PWR5-NEXT: mulld 4, 4, 9
23101 ; PWR5-NEXT: li 5, 43
23102 ; PWR5-NEXT: subfic 3, 3, 43
23103 ; PWR5-NEXT: rldicl 4, 4, 8, 56
23104 ; PWR5-NEXT: subfe 3, 5, 5
23105 ; PWR5-NEXT: subfic 4, 4, 43
23106 ; PWR5-NEXT: subfe 4, 5, 5
23109 ; PWR6-LABEL: ugt_43_v2i64:
23111 ; PWR6-NEXT: lis 5, 21845
23112 ; PWR6-NEXT: lis 6, 13107
23113 ; PWR6-NEXT: ori 5, 5, 21845
23114 ; PWR6-NEXT: rotldi 8, 4, 63
23115 ; PWR6-NEXT: rotldi 9, 3, 63
23116 ; PWR6-NEXT: rldimi 5, 5, 32, 0
23117 ; PWR6-NEXT: and 8, 8, 5
23118 ; PWR6-NEXT: and 5, 9, 5
23119 ; PWR6-NEXT: ori 6, 6, 13107
23120 ; PWR6-NEXT: sub 3, 3, 5
23121 ; PWR6-NEXT: rldimi 6, 6, 32, 0
23122 ; PWR6-NEXT: sub 4, 4, 8
23123 ; PWR6-NEXT: and 8, 3, 6
23124 ; PWR6-NEXT: rotldi 3, 3, 62
23125 ; PWR6-NEXT: and 3, 3, 6
23126 ; PWR6-NEXT: lis 7, 3855
23127 ; PWR6-NEXT: and 5, 4, 6
23128 ; PWR6-NEXT: rotldi 4, 4, 62
23129 ; PWR6-NEXT: add 3, 8, 3
23130 ; PWR6-NEXT: lis 9, 257
23131 ; PWR6-NEXT: ori 7, 7, 3855
23132 ; PWR6-NEXT: and 4, 4, 6
23133 ; PWR6-NEXT: rldicl 6, 3, 60, 4
23134 ; PWR6-NEXT: ori 9, 9, 257
23135 ; PWR6-NEXT: rldimi 7, 7, 32, 0
23136 ; PWR6-NEXT: add 4, 5, 4
23137 ; PWR6-NEXT: add 3, 3, 6
23138 ; PWR6-NEXT: rldimi 9, 9, 32, 0
23139 ; PWR6-NEXT: rldicl 5, 4, 60, 4
23140 ; PWR6-NEXT: and 3, 3, 7
23141 ; PWR6-NEXT: add 4, 4, 5
23142 ; PWR6-NEXT: mulld 3, 3, 9
23143 ; PWR6-NEXT: and 4, 4, 7
23144 ; PWR6-NEXT: rldicl 3, 3, 8, 56
23145 ; PWR6-NEXT: mulld 4, 4, 9
23146 ; PWR6-NEXT: li 5, 43
23147 ; PWR6-NEXT: subfic 3, 3, 43
23148 ; PWR6-NEXT: rldicl 4, 4, 8, 56
23149 ; PWR6-NEXT: subfe 3, 5, 5
23150 ; PWR6-NEXT: subfic 4, 4, 43
23151 ; PWR6-NEXT: subfe 4, 5, 5
23154 ; PWR7-LABEL: ugt_43_v2i64:
23156 ; PWR7-NEXT: addi 3, 1, -32
23157 ; PWR7-NEXT: li 5, 0
23158 ; PWR7-NEXT: li 6, -1
23159 ; PWR7-NEXT: stxvd2x 34, 0, 3
23160 ; PWR7-NEXT: ld 3, -24(1)
23161 ; PWR7-NEXT: ld 4, -32(1)
23162 ; PWR7-NEXT: popcntd 3, 3
23163 ; PWR7-NEXT: popcntd 4, 4
23164 ; PWR7-NEXT: cmpldi 3, 43
23165 ; PWR7-NEXT: iselgt 3, 6, 5
23166 ; PWR7-NEXT: cmpldi 4, 43
23167 ; PWR7-NEXT: iselgt 4, 6, 5
23168 ; PWR7-NEXT: std 3, -8(1)
23169 ; PWR7-NEXT: addi 3, 1, -16
23170 ; PWR7-NEXT: std 4, -16(1)
23171 ; PWR7-NEXT: lxvd2x 34, 0, 3
23174 ; PWR8-LABEL: ugt_43_v2i64:
23176 ; PWR8-NEXT: addis 3, 2, .LCPI184_0@toc@ha
23177 ; PWR8-NEXT: vpopcntd 2, 2
23178 ; PWR8-NEXT: addi 3, 3, .LCPI184_0@toc@l
23179 ; PWR8-NEXT: lxvd2x 35, 0, 3
23180 ; PWR8-NEXT: vcmpgtud 2, 2, 3
23183 ; PWR9-LABEL: ugt_43_v2i64:
23185 ; PWR9-NEXT: addis 3, 2, .LCPI184_0@toc@ha
23186 ; PWR9-NEXT: vpopcntd 2, 2
23187 ; PWR9-NEXT: addi 3, 3, .LCPI184_0@toc@l
23188 ; PWR9-NEXT: lxv 35, 0(3)
23189 ; PWR9-NEXT: vcmpgtud 2, 2, 3
23191 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
23192 %3 = icmp ugt <2 x i64> %2, <i64 43, i64 43>
23193 %4 = sext <2 x i1> %3 to <2 x i64>
23197 define <2 x i64> @ult_44_v2i64(<2 x i64> %0) {
23198 ; PWR5-LABEL: ult_44_v2i64:
23200 ; PWR5-NEXT: lis 5, 21845
23201 ; PWR5-NEXT: lis 6, 13107
23202 ; PWR5-NEXT: ori 5, 5, 21845
23203 ; PWR5-NEXT: rotldi 8, 4, 63
23204 ; PWR5-NEXT: rotldi 9, 3, 63
23205 ; PWR5-NEXT: rldimi 5, 5, 32, 0
23206 ; PWR5-NEXT: and 8, 8, 5
23207 ; PWR5-NEXT: and 5, 9, 5
23208 ; PWR5-NEXT: ori 6, 6, 13107
23209 ; PWR5-NEXT: sub 3, 3, 5
23210 ; PWR5-NEXT: rldimi 6, 6, 32, 0
23211 ; PWR5-NEXT: sub 4, 4, 8
23212 ; PWR5-NEXT: and 8, 3, 6
23213 ; PWR5-NEXT: rotldi 3, 3, 62
23214 ; PWR5-NEXT: and 3, 3, 6
23215 ; PWR5-NEXT: lis 7, 3855
23216 ; PWR5-NEXT: and 5, 4, 6
23217 ; PWR5-NEXT: rotldi 4, 4, 62
23218 ; PWR5-NEXT: add 3, 8, 3
23219 ; PWR5-NEXT: lis 9, 257
23220 ; PWR5-NEXT: ori 7, 7, 3855
23221 ; PWR5-NEXT: and 4, 4, 6
23222 ; PWR5-NEXT: rldicl 6, 3, 60, 4
23223 ; PWR5-NEXT: ori 9, 9, 257
23224 ; PWR5-NEXT: rldimi 7, 7, 32, 0
23225 ; PWR5-NEXT: add 4, 5, 4
23226 ; PWR5-NEXT: add 3, 3, 6
23227 ; PWR5-NEXT: rldimi 9, 9, 32, 0
23228 ; PWR5-NEXT: rldicl 5, 4, 60, 4
23229 ; PWR5-NEXT: and 3, 3, 7
23230 ; PWR5-NEXT: add 4, 4, 5
23231 ; PWR5-NEXT: mulld 3, 3, 9
23232 ; PWR5-NEXT: and 4, 4, 7
23233 ; PWR5-NEXT: rldicl 3, 3, 8, 56
23234 ; PWR5-NEXT: li 5, 44
23235 ; PWR5-NEXT: mulld 4, 4, 9
23236 ; PWR5-NEXT: subc 6, 3, 5
23237 ; PWR5-NEXT: rldicl 4, 4, 8, 56
23238 ; PWR5-NEXT: subfe 3, 3, 3
23239 ; PWR5-NEXT: subc 5, 4, 5
23240 ; PWR5-NEXT: subfe 4, 4, 4
23243 ; PWR6-LABEL: ult_44_v2i64:
23245 ; PWR6-NEXT: lis 5, 21845
23246 ; PWR6-NEXT: lis 6, 13107
23247 ; PWR6-NEXT: ori 5, 5, 21845
23248 ; PWR6-NEXT: rotldi 8, 4, 63
23249 ; PWR6-NEXT: rotldi 9, 3, 63
23250 ; PWR6-NEXT: rldimi 5, 5, 32, 0
23251 ; PWR6-NEXT: and 8, 8, 5
23252 ; PWR6-NEXT: and 5, 9, 5
23253 ; PWR6-NEXT: ori 6, 6, 13107
23254 ; PWR6-NEXT: sub 3, 3, 5
23255 ; PWR6-NEXT: rldimi 6, 6, 32, 0
23256 ; PWR6-NEXT: sub 4, 4, 8
23257 ; PWR6-NEXT: and 8, 3, 6
23258 ; PWR6-NEXT: rotldi 3, 3, 62
23259 ; PWR6-NEXT: and 3, 3, 6
23260 ; PWR6-NEXT: lis 7, 3855
23261 ; PWR6-NEXT: and 5, 4, 6
23262 ; PWR6-NEXT: rotldi 4, 4, 62
23263 ; PWR6-NEXT: add 3, 8, 3
23264 ; PWR6-NEXT: lis 9, 257
23265 ; PWR6-NEXT: ori 7, 7, 3855
23266 ; PWR6-NEXT: and 4, 4, 6
23267 ; PWR6-NEXT: rldicl 6, 3, 60, 4
23268 ; PWR6-NEXT: ori 9, 9, 257
23269 ; PWR6-NEXT: rldimi 7, 7, 32, 0
23270 ; PWR6-NEXT: add 4, 5, 4
23271 ; PWR6-NEXT: add 3, 3, 6
23272 ; PWR6-NEXT: rldimi 9, 9, 32, 0
23273 ; PWR6-NEXT: rldicl 5, 4, 60, 4
23274 ; PWR6-NEXT: and 3, 3, 7
23275 ; PWR6-NEXT: add 4, 4, 5
23276 ; PWR6-NEXT: mulld 3, 3, 9
23277 ; PWR6-NEXT: and 4, 4, 7
23278 ; PWR6-NEXT: rldicl 3, 3, 8, 56
23279 ; PWR6-NEXT: li 5, 44
23280 ; PWR6-NEXT: mulld 4, 4, 9
23281 ; PWR6-NEXT: subc 6, 3, 5
23282 ; PWR6-NEXT: rldicl 4, 4, 8, 56
23283 ; PWR6-NEXT: subfe 3, 3, 3
23284 ; PWR6-NEXT: subc 5, 4, 5
23285 ; PWR6-NEXT: subfe 4, 4, 4
23288 ; PWR7-LABEL: ult_44_v2i64:
23290 ; PWR7-NEXT: addi 3, 1, -32
23291 ; PWR7-NEXT: li 5, 0
23292 ; PWR7-NEXT: li 6, -1
23293 ; PWR7-NEXT: stxvd2x 34, 0, 3
23294 ; PWR7-NEXT: ld 3, -24(1)
23295 ; PWR7-NEXT: ld 4, -32(1)
23296 ; PWR7-NEXT: popcntd 3, 3
23297 ; PWR7-NEXT: popcntd 4, 4
23298 ; PWR7-NEXT: cmpldi 3, 44
23299 ; PWR7-NEXT: isellt 3, 6, 5
23300 ; PWR7-NEXT: cmpldi 4, 44
23301 ; PWR7-NEXT: isellt 4, 6, 5
23302 ; PWR7-NEXT: std 3, -8(1)
23303 ; PWR7-NEXT: addi 3, 1, -16
23304 ; PWR7-NEXT: std 4, -16(1)
23305 ; PWR7-NEXT: lxvd2x 34, 0, 3
23308 ; PWR8-LABEL: ult_44_v2i64:
23310 ; PWR8-NEXT: addis 3, 2, .LCPI185_0@toc@ha
23311 ; PWR8-NEXT: vpopcntd 2, 2
23312 ; PWR8-NEXT: addi 3, 3, .LCPI185_0@toc@l
23313 ; PWR8-NEXT: lxvd2x 35, 0, 3
23314 ; PWR8-NEXT: vcmpgtud 2, 3, 2
23317 ; PWR9-LABEL: ult_44_v2i64:
23319 ; PWR9-NEXT: addis 3, 2, .LCPI185_0@toc@ha
23320 ; PWR9-NEXT: vpopcntd 2, 2
23321 ; PWR9-NEXT: addi 3, 3, .LCPI185_0@toc@l
23322 ; PWR9-NEXT: lxv 35, 0(3)
23323 ; PWR9-NEXT: vcmpgtud 2, 3, 2
23325 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
23326 %3 = icmp ult <2 x i64> %2, <i64 44, i64 44>
23327 %4 = sext <2 x i1> %3 to <2 x i64>
23331 define <2 x i64> @ugt_44_v2i64(<2 x i64> %0) {
23332 ; PWR5-LABEL: ugt_44_v2i64:
23334 ; PWR5-NEXT: lis 5, 21845
23335 ; PWR5-NEXT: lis 6, 13107
23336 ; PWR5-NEXT: ori 5, 5, 21845
23337 ; PWR5-NEXT: rotldi 8, 4, 63
23338 ; PWR5-NEXT: rotldi 9, 3, 63
23339 ; PWR5-NEXT: rldimi 5, 5, 32, 0
23340 ; PWR5-NEXT: and 8, 8, 5
23341 ; PWR5-NEXT: and 5, 9, 5
23342 ; PWR5-NEXT: ori 6, 6, 13107
23343 ; PWR5-NEXT: sub 3, 3, 5
23344 ; PWR5-NEXT: rldimi 6, 6, 32, 0
23345 ; PWR5-NEXT: sub 4, 4, 8
23346 ; PWR5-NEXT: and 8, 3, 6
23347 ; PWR5-NEXT: rotldi 3, 3, 62
23348 ; PWR5-NEXT: and 3, 3, 6
23349 ; PWR5-NEXT: lis 7, 3855
23350 ; PWR5-NEXT: and 5, 4, 6
23351 ; PWR5-NEXT: rotldi 4, 4, 62
23352 ; PWR5-NEXT: add 3, 8, 3
23353 ; PWR5-NEXT: lis 9, 257
23354 ; PWR5-NEXT: ori 7, 7, 3855
23355 ; PWR5-NEXT: and 4, 4, 6
23356 ; PWR5-NEXT: rldicl 6, 3, 60, 4
23357 ; PWR5-NEXT: ori 9, 9, 257
23358 ; PWR5-NEXT: rldimi 7, 7, 32, 0
23359 ; PWR5-NEXT: add 4, 5, 4
23360 ; PWR5-NEXT: add 3, 3, 6
23361 ; PWR5-NEXT: rldimi 9, 9, 32, 0
23362 ; PWR5-NEXT: rldicl 5, 4, 60, 4
23363 ; PWR5-NEXT: and 3, 3, 7
23364 ; PWR5-NEXT: add 4, 4, 5
23365 ; PWR5-NEXT: mulld 3, 3, 9
23366 ; PWR5-NEXT: and 4, 4, 7
23367 ; PWR5-NEXT: rldicl 3, 3, 8, 56
23368 ; PWR5-NEXT: mulld 4, 4, 9
23369 ; PWR5-NEXT: li 5, 44
23370 ; PWR5-NEXT: subfic 3, 3, 44
23371 ; PWR5-NEXT: rldicl 4, 4, 8, 56
23372 ; PWR5-NEXT: subfe 3, 5, 5
23373 ; PWR5-NEXT: subfic 4, 4, 44
23374 ; PWR5-NEXT: subfe 4, 5, 5
23377 ; PWR6-LABEL: ugt_44_v2i64:
23379 ; PWR6-NEXT: lis 5, 21845
23380 ; PWR6-NEXT: lis 6, 13107
23381 ; PWR6-NEXT: ori 5, 5, 21845
23382 ; PWR6-NEXT: rotldi 8, 4, 63
23383 ; PWR6-NEXT: rotldi 9, 3, 63
23384 ; PWR6-NEXT: rldimi 5, 5, 32, 0
23385 ; PWR6-NEXT: and 8, 8, 5
23386 ; PWR6-NEXT: and 5, 9, 5
23387 ; PWR6-NEXT: ori 6, 6, 13107
23388 ; PWR6-NEXT: sub 3, 3, 5
23389 ; PWR6-NEXT: rldimi 6, 6, 32, 0
23390 ; PWR6-NEXT: sub 4, 4, 8
23391 ; PWR6-NEXT: and 8, 3, 6
23392 ; PWR6-NEXT: rotldi 3, 3, 62
23393 ; PWR6-NEXT: and 3, 3, 6
23394 ; PWR6-NEXT: lis 7, 3855
23395 ; PWR6-NEXT: and 5, 4, 6
23396 ; PWR6-NEXT: rotldi 4, 4, 62
23397 ; PWR6-NEXT: add 3, 8, 3
23398 ; PWR6-NEXT: lis 9, 257
23399 ; PWR6-NEXT: ori 7, 7, 3855
23400 ; PWR6-NEXT: and 4, 4, 6
23401 ; PWR6-NEXT: rldicl 6, 3, 60, 4
23402 ; PWR6-NEXT: ori 9, 9, 257
23403 ; PWR6-NEXT: rldimi 7, 7, 32, 0
23404 ; PWR6-NEXT: add 4, 5, 4
23405 ; PWR6-NEXT: add 3, 3, 6
23406 ; PWR6-NEXT: rldimi 9, 9, 32, 0
23407 ; PWR6-NEXT: rldicl 5, 4, 60, 4
23408 ; PWR6-NEXT: and 3, 3, 7
23409 ; PWR6-NEXT: add 4, 4, 5
23410 ; PWR6-NEXT: mulld 3, 3, 9
23411 ; PWR6-NEXT: and 4, 4, 7
23412 ; PWR6-NEXT: rldicl 3, 3, 8, 56
23413 ; PWR6-NEXT: mulld 4, 4, 9
23414 ; PWR6-NEXT: li 5, 44
23415 ; PWR6-NEXT: subfic 3, 3, 44
23416 ; PWR6-NEXT: rldicl 4, 4, 8, 56
23417 ; PWR6-NEXT: subfe 3, 5, 5
23418 ; PWR6-NEXT: subfic 4, 4, 44
23419 ; PWR6-NEXT: subfe 4, 5, 5
23422 ; PWR7-LABEL: ugt_44_v2i64:
23424 ; PWR7-NEXT: addi 3, 1, -32
23425 ; PWR7-NEXT: li 5, 0
23426 ; PWR7-NEXT: li 6, -1
23427 ; PWR7-NEXT: stxvd2x 34, 0, 3
23428 ; PWR7-NEXT: ld 3, -24(1)
23429 ; PWR7-NEXT: ld 4, -32(1)
23430 ; PWR7-NEXT: popcntd 3, 3
23431 ; PWR7-NEXT: popcntd 4, 4
23432 ; PWR7-NEXT: cmpldi 3, 44
23433 ; PWR7-NEXT: iselgt 3, 6, 5
23434 ; PWR7-NEXT: cmpldi 4, 44
23435 ; PWR7-NEXT: iselgt 4, 6, 5
23436 ; PWR7-NEXT: std 3, -8(1)
23437 ; PWR7-NEXT: addi 3, 1, -16
23438 ; PWR7-NEXT: std 4, -16(1)
23439 ; PWR7-NEXT: lxvd2x 34, 0, 3
23442 ; PWR8-LABEL: ugt_44_v2i64:
23444 ; PWR8-NEXT: addis 3, 2, .LCPI186_0@toc@ha
23445 ; PWR8-NEXT: vpopcntd 2, 2
23446 ; PWR8-NEXT: addi 3, 3, .LCPI186_0@toc@l
23447 ; PWR8-NEXT: lxvd2x 35, 0, 3
23448 ; PWR8-NEXT: vcmpgtud 2, 2, 3
23451 ; PWR9-LABEL: ugt_44_v2i64:
23453 ; PWR9-NEXT: addis 3, 2, .LCPI186_0@toc@ha
23454 ; PWR9-NEXT: vpopcntd 2, 2
23455 ; PWR9-NEXT: addi 3, 3, .LCPI186_0@toc@l
23456 ; PWR9-NEXT: lxv 35, 0(3)
23457 ; PWR9-NEXT: vcmpgtud 2, 2, 3
23459 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
23460 %3 = icmp ugt <2 x i64> %2, <i64 44, i64 44>
23461 %4 = sext <2 x i1> %3 to <2 x i64>
23465 define <2 x i64> @ult_45_v2i64(<2 x i64> %0) {
23466 ; PWR5-LABEL: ult_45_v2i64:
23468 ; PWR5-NEXT: lis 5, 21845
23469 ; PWR5-NEXT: lis 6, 13107
23470 ; PWR5-NEXT: ori 5, 5, 21845
23471 ; PWR5-NEXT: rotldi 8, 4, 63
23472 ; PWR5-NEXT: rotldi 9, 3, 63
23473 ; PWR5-NEXT: rldimi 5, 5, 32, 0
23474 ; PWR5-NEXT: and 8, 8, 5
23475 ; PWR5-NEXT: and 5, 9, 5
23476 ; PWR5-NEXT: ori 6, 6, 13107
23477 ; PWR5-NEXT: sub 3, 3, 5
23478 ; PWR5-NEXT: rldimi 6, 6, 32, 0
23479 ; PWR5-NEXT: sub 4, 4, 8
23480 ; PWR5-NEXT: and 8, 3, 6
23481 ; PWR5-NEXT: rotldi 3, 3, 62
23482 ; PWR5-NEXT: and 3, 3, 6
23483 ; PWR5-NEXT: lis 7, 3855
23484 ; PWR5-NEXT: and 5, 4, 6
23485 ; PWR5-NEXT: rotldi 4, 4, 62
23486 ; PWR5-NEXT: add 3, 8, 3
23487 ; PWR5-NEXT: lis 9, 257
23488 ; PWR5-NEXT: ori 7, 7, 3855
23489 ; PWR5-NEXT: and 4, 4, 6
23490 ; PWR5-NEXT: rldicl 6, 3, 60, 4
23491 ; PWR5-NEXT: ori 9, 9, 257
23492 ; PWR5-NEXT: rldimi 7, 7, 32, 0
23493 ; PWR5-NEXT: add 4, 5, 4
23494 ; PWR5-NEXT: add 3, 3, 6
23495 ; PWR5-NEXT: rldimi 9, 9, 32, 0
23496 ; PWR5-NEXT: rldicl 5, 4, 60, 4
23497 ; PWR5-NEXT: and 3, 3, 7
23498 ; PWR5-NEXT: add 4, 4, 5
23499 ; PWR5-NEXT: mulld 3, 3, 9
23500 ; PWR5-NEXT: and 4, 4, 7
23501 ; PWR5-NEXT: rldicl 3, 3, 8, 56
23502 ; PWR5-NEXT: li 5, 45
23503 ; PWR5-NEXT: mulld 4, 4, 9
23504 ; PWR5-NEXT: subc 6, 3, 5
23505 ; PWR5-NEXT: rldicl 4, 4, 8, 56
23506 ; PWR5-NEXT: subfe 3, 3, 3
23507 ; PWR5-NEXT: subc 5, 4, 5
23508 ; PWR5-NEXT: subfe 4, 4, 4
23511 ; PWR6-LABEL: ult_45_v2i64:
23513 ; PWR6-NEXT: lis 5, 21845
23514 ; PWR6-NEXT: lis 6, 13107
23515 ; PWR6-NEXT: ori 5, 5, 21845
23516 ; PWR6-NEXT: rotldi 8, 4, 63
23517 ; PWR6-NEXT: rotldi 9, 3, 63
23518 ; PWR6-NEXT: rldimi 5, 5, 32, 0
23519 ; PWR6-NEXT: and 8, 8, 5
23520 ; PWR6-NEXT: and 5, 9, 5
23521 ; PWR6-NEXT: ori 6, 6, 13107
23522 ; PWR6-NEXT: sub 3, 3, 5
23523 ; PWR6-NEXT: rldimi 6, 6, 32, 0
23524 ; PWR6-NEXT: sub 4, 4, 8
23525 ; PWR6-NEXT: and 8, 3, 6
23526 ; PWR6-NEXT: rotldi 3, 3, 62
23527 ; PWR6-NEXT: and 3, 3, 6
23528 ; PWR6-NEXT: lis 7, 3855
23529 ; PWR6-NEXT: and 5, 4, 6
23530 ; PWR6-NEXT: rotldi 4, 4, 62
23531 ; PWR6-NEXT: add 3, 8, 3
23532 ; PWR6-NEXT: lis 9, 257
23533 ; PWR6-NEXT: ori 7, 7, 3855
23534 ; PWR6-NEXT: and 4, 4, 6
23535 ; PWR6-NEXT: rldicl 6, 3, 60, 4
23536 ; PWR6-NEXT: ori 9, 9, 257
23537 ; PWR6-NEXT: rldimi 7, 7, 32, 0
23538 ; PWR6-NEXT: add 4, 5, 4
23539 ; PWR6-NEXT: add 3, 3, 6
23540 ; PWR6-NEXT: rldimi 9, 9, 32, 0
23541 ; PWR6-NEXT: rldicl 5, 4, 60, 4
23542 ; PWR6-NEXT: and 3, 3, 7
23543 ; PWR6-NEXT: add 4, 4, 5
23544 ; PWR6-NEXT: mulld 3, 3, 9
23545 ; PWR6-NEXT: and 4, 4, 7
23546 ; PWR6-NEXT: rldicl 3, 3, 8, 56
23547 ; PWR6-NEXT: li 5, 45
23548 ; PWR6-NEXT: mulld 4, 4, 9
23549 ; PWR6-NEXT: subc 6, 3, 5
23550 ; PWR6-NEXT: rldicl 4, 4, 8, 56
23551 ; PWR6-NEXT: subfe 3, 3, 3
23552 ; PWR6-NEXT: subc 5, 4, 5
23553 ; PWR6-NEXT: subfe 4, 4, 4
23556 ; PWR7-LABEL: ult_45_v2i64:
23558 ; PWR7-NEXT: addi 3, 1, -32
23559 ; PWR7-NEXT: li 5, 0
23560 ; PWR7-NEXT: li 6, -1
23561 ; PWR7-NEXT: stxvd2x 34, 0, 3
23562 ; PWR7-NEXT: ld 3, -24(1)
23563 ; PWR7-NEXT: ld 4, -32(1)
23564 ; PWR7-NEXT: popcntd 3, 3
23565 ; PWR7-NEXT: popcntd 4, 4
23566 ; PWR7-NEXT: cmpldi 3, 45
23567 ; PWR7-NEXT: isellt 3, 6, 5
23568 ; PWR7-NEXT: cmpldi 4, 45
23569 ; PWR7-NEXT: isellt 4, 6, 5
23570 ; PWR7-NEXT: std 3, -8(1)
23571 ; PWR7-NEXT: addi 3, 1, -16
23572 ; PWR7-NEXT: std 4, -16(1)
23573 ; PWR7-NEXT: lxvd2x 34, 0, 3
23576 ; PWR8-LABEL: ult_45_v2i64:
23578 ; PWR8-NEXT: addis 3, 2, .LCPI187_0@toc@ha
23579 ; PWR8-NEXT: vpopcntd 2, 2
23580 ; PWR8-NEXT: addi 3, 3, .LCPI187_0@toc@l
23581 ; PWR8-NEXT: lxvd2x 35, 0, 3
23582 ; PWR8-NEXT: vcmpgtud 2, 3, 2
23585 ; PWR9-LABEL: ult_45_v2i64:
23587 ; PWR9-NEXT: addis 3, 2, .LCPI187_0@toc@ha
23588 ; PWR9-NEXT: vpopcntd 2, 2
23589 ; PWR9-NEXT: addi 3, 3, .LCPI187_0@toc@l
23590 ; PWR9-NEXT: lxv 35, 0(3)
23591 ; PWR9-NEXT: vcmpgtud 2, 3, 2
23593 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
23594 %3 = icmp ult <2 x i64> %2, <i64 45, i64 45>
23595 %4 = sext <2 x i1> %3 to <2 x i64>
23599 define <2 x i64> @ugt_45_v2i64(<2 x i64> %0) {
23600 ; PWR5-LABEL: ugt_45_v2i64:
23602 ; PWR5-NEXT: lis 5, 21845
23603 ; PWR5-NEXT: lis 6, 13107
23604 ; PWR5-NEXT: ori 5, 5, 21845
23605 ; PWR5-NEXT: rotldi 8, 4, 63
23606 ; PWR5-NEXT: rotldi 9, 3, 63
23607 ; PWR5-NEXT: rldimi 5, 5, 32, 0
23608 ; PWR5-NEXT: and 8, 8, 5
23609 ; PWR5-NEXT: and 5, 9, 5
23610 ; PWR5-NEXT: ori 6, 6, 13107
23611 ; PWR5-NEXT: sub 3, 3, 5
23612 ; PWR5-NEXT: rldimi 6, 6, 32, 0
23613 ; PWR5-NEXT: sub 4, 4, 8
23614 ; PWR5-NEXT: and 8, 3, 6
23615 ; PWR5-NEXT: rotldi 3, 3, 62
23616 ; PWR5-NEXT: and 3, 3, 6
23617 ; PWR5-NEXT: lis 7, 3855
23618 ; PWR5-NEXT: and 5, 4, 6
23619 ; PWR5-NEXT: rotldi 4, 4, 62
23620 ; PWR5-NEXT: add 3, 8, 3
23621 ; PWR5-NEXT: lis 9, 257
23622 ; PWR5-NEXT: ori 7, 7, 3855
23623 ; PWR5-NEXT: and 4, 4, 6
23624 ; PWR5-NEXT: rldicl 6, 3, 60, 4
23625 ; PWR5-NEXT: ori 9, 9, 257
23626 ; PWR5-NEXT: rldimi 7, 7, 32, 0
23627 ; PWR5-NEXT: add 4, 5, 4
23628 ; PWR5-NEXT: add 3, 3, 6
23629 ; PWR5-NEXT: rldimi 9, 9, 32, 0
23630 ; PWR5-NEXT: rldicl 5, 4, 60, 4
23631 ; PWR5-NEXT: and 3, 3, 7
23632 ; PWR5-NEXT: add 4, 4, 5
23633 ; PWR5-NEXT: mulld 3, 3, 9
23634 ; PWR5-NEXT: and 4, 4, 7
23635 ; PWR5-NEXT: rldicl 3, 3, 8, 56
23636 ; PWR5-NEXT: mulld 4, 4, 9
23637 ; PWR5-NEXT: li 5, 45
23638 ; PWR5-NEXT: subfic 3, 3, 45
23639 ; PWR5-NEXT: rldicl 4, 4, 8, 56
23640 ; PWR5-NEXT: subfe 3, 5, 5
23641 ; PWR5-NEXT: subfic 4, 4, 45
23642 ; PWR5-NEXT: subfe 4, 5, 5
23645 ; PWR6-LABEL: ugt_45_v2i64:
23647 ; PWR6-NEXT: lis 5, 21845
23648 ; PWR6-NEXT: lis 6, 13107
23649 ; PWR6-NEXT: ori 5, 5, 21845
23650 ; PWR6-NEXT: rotldi 8, 4, 63
23651 ; PWR6-NEXT: rotldi 9, 3, 63
23652 ; PWR6-NEXT: rldimi 5, 5, 32, 0
23653 ; PWR6-NEXT: and 8, 8, 5
23654 ; PWR6-NEXT: and 5, 9, 5
23655 ; PWR6-NEXT: ori 6, 6, 13107
23656 ; PWR6-NEXT: sub 3, 3, 5
23657 ; PWR6-NEXT: rldimi 6, 6, 32, 0
23658 ; PWR6-NEXT: sub 4, 4, 8
23659 ; PWR6-NEXT: and 8, 3, 6
23660 ; PWR6-NEXT: rotldi 3, 3, 62
23661 ; PWR6-NEXT: and 3, 3, 6
23662 ; PWR6-NEXT: lis 7, 3855
23663 ; PWR6-NEXT: and 5, 4, 6
23664 ; PWR6-NEXT: rotldi 4, 4, 62
23665 ; PWR6-NEXT: add 3, 8, 3
23666 ; PWR6-NEXT: lis 9, 257
23667 ; PWR6-NEXT: ori 7, 7, 3855
23668 ; PWR6-NEXT: and 4, 4, 6
23669 ; PWR6-NEXT: rldicl 6, 3, 60, 4
23670 ; PWR6-NEXT: ori 9, 9, 257
23671 ; PWR6-NEXT: rldimi 7, 7, 32, 0
23672 ; PWR6-NEXT: add 4, 5, 4
23673 ; PWR6-NEXT: add 3, 3, 6
23674 ; PWR6-NEXT: rldimi 9, 9, 32, 0
23675 ; PWR6-NEXT: rldicl 5, 4, 60, 4
23676 ; PWR6-NEXT: and 3, 3, 7
23677 ; PWR6-NEXT: add 4, 4, 5
23678 ; PWR6-NEXT: mulld 3, 3, 9
23679 ; PWR6-NEXT: and 4, 4, 7
23680 ; PWR6-NEXT: rldicl 3, 3, 8, 56
23681 ; PWR6-NEXT: mulld 4, 4, 9
23682 ; PWR6-NEXT: li 5, 45
23683 ; PWR6-NEXT: subfic 3, 3, 45
23684 ; PWR6-NEXT: rldicl 4, 4, 8, 56
23685 ; PWR6-NEXT: subfe 3, 5, 5
23686 ; PWR6-NEXT: subfic 4, 4, 45
23687 ; PWR6-NEXT: subfe 4, 5, 5
23690 ; PWR7-LABEL: ugt_45_v2i64:
23692 ; PWR7-NEXT: addi 3, 1, -32
23693 ; PWR7-NEXT: li 5, 0
23694 ; PWR7-NEXT: li 6, -1
23695 ; PWR7-NEXT: stxvd2x 34, 0, 3
23696 ; PWR7-NEXT: ld 3, -24(1)
23697 ; PWR7-NEXT: ld 4, -32(1)
23698 ; PWR7-NEXT: popcntd 3, 3
23699 ; PWR7-NEXT: popcntd 4, 4
23700 ; PWR7-NEXT: cmpldi 3, 45
23701 ; PWR7-NEXT: iselgt 3, 6, 5
23702 ; PWR7-NEXT: cmpldi 4, 45
23703 ; PWR7-NEXT: iselgt 4, 6, 5
23704 ; PWR7-NEXT: std 3, -8(1)
23705 ; PWR7-NEXT: addi 3, 1, -16
23706 ; PWR7-NEXT: std 4, -16(1)
23707 ; PWR7-NEXT: lxvd2x 34, 0, 3
23710 ; PWR8-LABEL: ugt_45_v2i64:
23712 ; PWR8-NEXT: addis 3, 2, .LCPI188_0@toc@ha
23713 ; PWR8-NEXT: vpopcntd 2, 2
23714 ; PWR8-NEXT: addi 3, 3, .LCPI188_0@toc@l
23715 ; PWR8-NEXT: lxvd2x 35, 0, 3
23716 ; PWR8-NEXT: vcmpgtud 2, 2, 3
23719 ; PWR9-LABEL: ugt_45_v2i64:
23721 ; PWR9-NEXT: addis 3, 2, .LCPI188_0@toc@ha
23722 ; PWR9-NEXT: vpopcntd 2, 2
23723 ; PWR9-NEXT: addi 3, 3, .LCPI188_0@toc@l
23724 ; PWR9-NEXT: lxv 35, 0(3)
23725 ; PWR9-NEXT: vcmpgtud 2, 2, 3
23727 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
23728 %3 = icmp ugt <2 x i64> %2, <i64 45, i64 45>
23729 %4 = sext <2 x i1> %3 to <2 x i64>
23733 define <2 x i64> @ult_46_v2i64(<2 x i64> %0) {
23734 ; PWR5-LABEL: ult_46_v2i64:
23736 ; PWR5-NEXT: lis 5, 21845
23737 ; PWR5-NEXT: lis 6, 13107
23738 ; PWR5-NEXT: ori 5, 5, 21845
23739 ; PWR5-NEXT: rotldi 8, 4, 63
23740 ; PWR5-NEXT: rotldi 9, 3, 63
23741 ; PWR5-NEXT: rldimi 5, 5, 32, 0
23742 ; PWR5-NEXT: and 8, 8, 5
23743 ; PWR5-NEXT: and 5, 9, 5
23744 ; PWR5-NEXT: ori 6, 6, 13107
23745 ; PWR5-NEXT: sub 3, 3, 5
23746 ; PWR5-NEXT: rldimi 6, 6, 32, 0
23747 ; PWR5-NEXT: sub 4, 4, 8
23748 ; PWR5-NEXT: and 8, 3, 6
23749 ; PWR5-NEXT: rotldi 3, 3, 62
23750 ; PWR5-NEXT: and 3, 3, 6
23751 ; PWR5-NEXT: lis 7, 3855
23752 ; PWR5-NEXT: and 5, 4, 6
23753 ; PWR5-NEXT: rotldi 4, 4, 62
23754 ; PWR5-NEXT: add 3, 8, 3
23755 ; PWR5-NEXT: lis 9, 257
23756 ; PWR5-NEXT: ori 7, 7, 3855
23757 ; PWR5-NEXT: and 4, 4, 6
23758 ; PWR5-NEXT: rldicl 6, 3, 60, 4
23759 ; PWR5-NEXT: ori 9, 9, 257
23760 ; PWR5-NEXT: rldimi 7, 7, 32, 0
23761 ; PWR5-NEXT: add 4, 5, 4
23762 ; PWR5-NEXT: add 3, 3, 6
23763 ; PWR5-NEXT: rldimi 9, 9, 32, 0
23764 ; PWR5-NEXT: rldicl 5, 4, 60, 4
23765 ; PWR5-NEXT: and 3, 3, 7
23766 ; PWR5-NEXT: add 4, 4, 5
23767 ; PWR5-NEXT: mulld 3, 3, 9
23768 ; PWR5-NEXT: and 4, 4, 7
23769 ; PWR5-NEXT: rldicl 3, 3, 8, 56
23770 ; PWR5-NEXT: li 5, 46
23771 ; PWR5-NEXT: mulld 4, 4, 9
23772 ; PWR5-NEXT: subc 6, 3, 5
23773 ; PWR5-NEXT: rldicl 4, 4, 8, 56
23774 ; PWR5-NEXT: subfe 3, 3, 3
23775 ; PWR5-NEXT: subc 5, 4, 5
23776 ; PWR5-NEXT: subfe 4, 4, 4
23779 ; PWR6-LABEL: ult_46_v2i64:
23781 ; PWR6-NEXT: lis 5, 21845
23782 ; PWR6-NEXT: lis 6, 13107
23783 ; PWR6-NEXT: ori 5, 5, 21845
23784 ; PWR6-NEXT: rotldi 8, 4, 63
23785 ; PWR6-NEXT: rotldi 9, 3, 63
23786 ; PWR6-NEXT: rldimi 5, 5, 32, 0
23787 ; PWR6-NEXT: and 8, 8, 5
23788 ; PWR6-NEXT: and 5, 9, 5
23789 ; PWR6-NEXT: ori 6, 6, 13107
23790 ; PWR6-NEXT: sub 3, 3, 5
23791 ; PWR6-NEXT: rldimi 6, 6, 32, 0
23792 ; PWR6-NEXT: sub 4, 4, 8
23793 ; PWR6-NEXT: and 8, 3, 6
23794 ; PWR6-NEXT: rotldi 3, 3, 62
23795 ; PWR6-NEXT: and 3, 3, 6
23796 ; PWR6-NEXT: lis 7, 3855
23797 ; PWR6-NEXT: and 5, 4, 6
23798 ; PWR6-NEXT: rotldi 4, 4, 62
23799 ; PWR6-NEXT: add 3, 8, 3
23800 ; PWR6-NEXT: lis 9, 257
23801 ; PWR6-NEXT: ori 7, 7, 3855
23802 ; PWR6-NEXT: and 4, 4, 6
23803 ; PWR6-NEXT: rldicl 6, 3, 60, 4
23804 ; PWR6-NEXT: ori 9, 9, 257
23805 ; PWR6-NEXT: rldimi 7, 7, 32, 0
23806 ; PWR6-NEXT: add 4, 5, 4
23807 ; PWR6-NEXT: add 3, 3, 6
23808 ; PWR6-NEXT: rldimi 9, 9, 32, 0
23809 ; PWR6-NEXT: rldicl 5, 4, 60, 4
23810 ; PWR6-NEXT: and 3, 3, 7
23811 ; PWR6-NEXT: add 4, 4, 5
23812 ; PWR6-NEXT: mulld 3, 3, 9
23813 ; PWR6-NEXT: and 4, 4, 7
23814 ; PWR6-NEXT: rldicl 3, 3, 8, 56
23815 ; PWR6-NEXT: li 5, 46
23816 ; PWR6-NEXT: mulld 4, 4, 9
23817 ; PWR6-NEXT: subc 6, 3, 5
23818 ; PWR6-NEXT: rldicl 4, 4, 8, 56
23819 ; PWR6-NEXT: subfe 3, 3, 3
23820 ; PWR6-NEXT: subc 5, 4, 5
23821 ; PWR6-NEXT: subfe 4, 4, 4
23824 ; PWR7-LABEL: ult_46_v2i64:
23826 ; PWR7-NEXT: addi 3, 1, -32
23827 ; PWR7-NEXT: li 5, 0
23828 ; PWR7-NEXT: li 6, -1
23829 ; PWR7-NEXT: stxvd2x 34, 0, 3
23830 ; PWR7-NEXT: ld 3, -24(1)
23831 ; PWR7-NEXT: ld 4, -32(1)
23832 ; PWR7-NEXT: popcntd 3, 3
23833 ; PWR7-NEXT: popcntd 4, 4
23834 ; PWR7-NEXT: cmpldi 3, 46
23835 ; PWR7-NEXT: isellt 3, 6, 5
23836 ; PWR7-NEXT: cmpldi 4, 46
23837 ; PWR7-NEXT: isellt 4, 6, 5
23838 ; PWR7-NEXT: std 3, -8(1)
23839 ; PWR7-NEXT: addi 3, 1, -16
23840 ; PWR7-NEXT: std 4, -16(1)
23841 ; PWR7-NEXT: lxvd2x 34, 0, 3
23844 ; PWR8-LABEL: ult_46_v2i64:
23846 ; PWR8-NEXT: addis 3, 2, .LCPI189_0@toc@ha
23847 ; PWR8-NEXT: vpopcntd 2, 2
23848 ; PWR8-NEXT: addi 3, 3, .LCPI189_0@toc@l
23849 ; PWR8-NEXT: lxvd2x 35, 0, 3
23850 ; PWR8-NEXT: vcmpgtud 2, 3, 2
23853 ; PWR9-LABEL: ult_46_v2i64:
23855 ; PWR9-NEXT: addis 3, 2, .LCPI189_0@toc@ha
23856 ; PWR9-NEXT: vpopcntd 2, 2
23857 ; PWR9-NEXT: addi 3, 3, .LCPI189_0@toc@l
23858 ; PWR9-NEXT: lxv 35, 0(3)
23859 ; PWR9-NEXT: vcmpgtud 2, 3, 2
23861 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
23862 %3 = icmp ult <2 x i64> %2, <i64 46, i64 46>
23863 %4 = sext <2 x i1> %3 to <2 x i64>
23867 define <2 x i64> @ugt_46_v2i64(<2 x i64> %0) {
23868 ; PWR5-LABEL: ugt_46_v2i64:
23870 ; PWR5-NEXT: lis 5, 21845
23871 ; PWR5-NEXT: lis 6, 13107
23872 ; PWR5-NEXT: ori 5, 5, 21845
23873 ; PWR5-NEXT: rotldi 8, 4, 63
23874 ; PWR5-NEXT: rotldi 9, 3, 63
23875 ; PWR5-NEXT: rldimi 5, 5, 32, 0
23876 ; PWR5-NEXT: and 8, 8, 5
23877 ; PWR5-NEXT: and 5, 9, 5
23878 ; PWR5-NEXT: ori 6, 6, 13107
23879 ; PWR5-NEXT: sub 3, 3, 5
23880 ; PWR5-NEXT: rldimi 6, 6, 32, 0
23881 ; PWR5-NEXT: sub 4, 4, 8
23882 ; PWR5-NEXT: and 8, 3, 6
23883 ; PWR5-NEXT: rotldi 3, 3, 62
23884 ; PWR5-NEXT: and 3, 3, 6
23885 ; PWR5-NEXT: lis 7, 3855
23886 ; PWR5-NEXT: and 5, 4, 6
23887 ; PWR5-NEXT: rotldi 4, 4, 62
23888 ; PWR5-NEXT: add 3, 8, 3
23889 ; PWR5-NEXT: lis 9, 257
23890 ; PWR5-NEXT: ori 7, 7, 3855
23891 ; PWR5-NEXT: and 4, 4, 6
23892 ; PWR5-NEXT: rldicl 6, 3, 60, 4
23893 ; PWR5-NEXT: ori 9, 9, 257
23894 ; PWR5-NEXT: rldimi 7, 7, 32, 0
23895 ; PWR5-NEXT: add 4, 5, 4
23896 ; PWR5-NEXT: add 3, 3, 6
23897 ; PWR5-NEXT: rldimi 9, 9, 32, 0
23898 ; PWR5-NEXT: rldicl 5, 4, 60, 4
23899 ; PWR5-NEXT: and 3, 3, 7
23900 ; PWR5-NEXT: add 4, 4, 5
23901 ; PWR5-NEXT: mulld 3, 3, 9
23902 ; PWR5-NEXT: and 4, 4, 7
23903 ; PWR5-NEXT: rldicl 3, 3, 8, 56
23904 ; PWR5-NEXT: mulld 4, 4, 9
23905 ; PWR5-NEXT: li 5, 46
23906 ; PWR5-NEXT: subfic 3, 3, 46
23907 ; PWR5-NEXT: rldicl 4, 4, 8, 56
23908 ; PWR5-NEXT: subfe 3, 5, 5
23909 ; PWR5-NEXT: subfic 4, 4, 46
23910 ; PWR5-NEXT: subfe 4, 5, 5
23913 ; PWR6-LABEL: ugt_46_v2i64:
23915 ; PWR6-NEXT: lis 5, 21845
23916 ; PWR6-NEXT: lis 6, 13107
23917 ; PWR6-NEXT: ori 5, 5, 21845
23918 ; PWR6-NEXT: rotldi 8, 4, 63
23919 ; PWR6-NEXT: rotldi 9, 3, 63
23920 ; PWR6-NEXT: rldimi 5, 5, 32, 0
23921 ; PWR6-NEXT: and 8, 8, 5
23922 ; PWR6-NEXT: and 5, 9, 5
23923 ; PWR6-NEXT: ori 6, 6, 13107
23924 ; PWR6-NEXT: sub 3, 3, 5
23925 ; PWR6-NEXT: rldimi 6, 6, 32, 0
23926 ; PWR6-NEXT: sub 4, 4, 8
23927 ; PWR6-NEXT: and 8, 3, 6
23928 ; PWR6-NEXT: rotldi 3, 3, 62
23929 ; PWR6-NEXT: and 3, 3, 6
23930 ; PWR6-NEXT: lis 7, 3855
23931 ; PWR6-NEXT: and 5, 4, 6
23932 ; PWR6-NEXT: rotldi 4, 4, 62
23933 ; PWR6-NEXT: add 3, 8, 3
23934 ; PWR6-NEXT: lis 9, 257
23935 ; PWR6-NEXT: ori 7, 7, 3855
23936 ; PWR6-NEXT: and 4, 4, 6
23937 ; PWR6-NEXT: rldicl 6, 3, 60, 4
23938 ; PWR6-NEXT: ori 9, 9, 257
23939 ; PWR6-NEXT: rldimi 7, 7, 32, 0
23940 ; PWR6-NEXT: add 4, 5, 4
23941 ; PWR6-NEXT: add 3, 3, 6
23942 ; PWR6-NEXT: rldimi 9, 9, 32, 0
23943 ; PWR6-NEXT: rldicl 5, 4, 60, 4
23944 ; PWR6-NEXT: and 3, 3, 7
23945 ; PWR6-NEXT: add 4, 4, 5
23946 ; PWR6-NEXT: mulld 3, 3, 9
23947 ; PWR6-NEXT: and 4, 4, 7
23948 ; PWR6-NEXT: rldicl 3, 3, 8, 56
23949 ; PWR6-NEXT: mulld 4, 4, 9
23950 ; PWR6-NEXT: li 5, 46
23951 ; PWR6-NEXT: subfic 3, 3, 46
23952 ; PWR6-NEXT: rldicl 4, 4, 8, 56
23953 ; PWR6-NEXT: subfe 3, 5, 5
23954 ; PWR6-NEXT: subfic 4, 4, 46
23955 ; PWR6-NEXT: subfe 4, 5, 5
23958 ; PWR7-LABEL: ugt_46_v2i64:
23960 ; PWR7-NEXT: addi 3, 1, -32
23961 ; PWR7-NEXT: li 5, 0
23962 ; PWR7-NEXT: li 6, -1
23963 ; PWR7-NEXT: stxvd2x 34, 0, 3
23964 ; PWR7-NEXT: ld 3, -24(1)
23965 ; PWR7-NEXT: ld 4, -32(1)
23966 ; PWR7-NEXT: popcntd 3, 3
23967 ; PWR7-NEXT: popcntd 4, 4
23968 ; PWR7-NEXT: cmpldi 3, 46
23969 ; PWR7-NEXT: iselgt 3, 6, 5
23970 ; PWR7-NEXT: cmpldi 4, 46
23971 ; PWR7-NEXT: iselgt 4, 6, 5
23972 ; PWR7-NEXT: std 3, -8(1)
23973 ; PWR7-NEXT: addi 3, 1, -16
23974 ; PWR7-NEXT: std 4, -16(1)
23975 ; PWR7-NEXT: lxvd2x 34, 0, 3
23978 ; PWR8-LABEL: ugt_46_v2i64:
23980 ; PWR8-NEXT: addis 3, 2, .LCPI190_0@toc@ha
23981 ; PWR8-NEXT: vpopcntd 2, 2
23982 ; PWR8-NEXT: addi 3, 3, .LCPI190_0@toc@l
23983 ; PWR8-NEXT: lxvd2x 35, 0, 3
23984 ; PWR8-NEXT: vcmpgtud 2, 2, 3
23987 ; PWR9-LABEL: ugt_46_v2i64:
23989 ; PWR9-NEXT: addis 3, 2, .LCPI190_0@toc@ha
23990 ; PWR9-NEXT: vpopcntd 2, 2
23991 ; PWR9-NEXT: addi 3, 3, .LCPI190_0@toc@l
23992 ; PWR9-NEXT: lxv 35, 0(3)
23993 ; PWR9-NEXT: vcmpgtud 2, 2, 3
23995 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
23996 %3 = icmp ugt <2 x i64> %2, <i64 46, i64 46>
23997 %4 = sext <2 x i1> %3 to <2 x i64>
24001 define <2 x i64> @ult_47_v2i64(<2 x i64> %0) {
24002 ; PWR5-LABEL: ult_47_v2i64:
24004 ; PWR5-NEXT: lis 5, 21845
24005 ; PWR5-NEXT: lis 6, 13107
24006 ; PWR5-NEXT: ori 5, 5, 21845
24007 ; PWR5-NEXT: rotldi 8, 4, 63
24008 ; PWR5-NEXT: rotldi 9, 3, 63
24009 ; PWR5-NEXT: rldimi 5, 5, 32, 0
24010 ; PWR5-NEXT: and 8, 8, 5
24011 ; PWR5-NEXT: and 5, 9, 5
24012 ; PWR5-NEXT: ori 6, 6, 13107
24013 ; PWR5-NEXT: sub 3, 3, 5
24014 ; PWR5-NEXT: rldimi 6, 6, 32, 0
24015 ; PWR5-NEXT: sub 4, 4, 8
24016 ; PWR5-NEXT: and 8, 3, 6
24017 ; PWR5-NEXT: rotldi 3, 3, 62
24018 ; PWR5-NEXT: and 3, 3, 6
24019 ; PWR5-NEXT: lis 7, 3855
24020 ; PWR5-NEXT: and 5, 4, 6
24021 ; PWR5-NEXT: rotldi 4, 4, 62
24022 ; PWR5-NEXT: add 3, 8, 3
24023 ; PWR5-NEXT: lis 9, 257
24024 ; PWR5-NEXT: ori 7, 7, 3855
24025 ; PWR5-NEXT: and 4, 4, 6
24026 ; PWR5-NEXT: rldicl 6, 3, 60, 4
24027 ; PWR5-NEXT: ori 9, 9, 257
24028 ; PWR5-NEXT: rldimi 7, 7, 32, 0
24029 ; PWR5-NEXT: add 4, 5, 4
24030 ; PWR5-NEXT: add 3, 3, 6
24031 ; PWR5-NEXT: rldimi 9, 9, 32, 0
24032 ; PWR5-NEXT: rldicl 5, 4, 60, 4
24033 ; PWR5-NEXT: and 3, 3, 7
24034 ; PWR5-NEXT: add 4, 4, 5
24035 ; PWR5-NEXT: mulld 3, 3, 9
24036 ; PWR5-NEXT: and 4, 4, 7
24037 ; PWR5-NEXT: rldicl 3, 3, 8, 56
24038 ; PWR5-NEXT: li 5, 47
24039 ; PWR5-NEXT: mulld 4, 4, 9
24040 ; PWR5-NEXT: subc 6, 3, 5
24041 ; PWR5-NEXT: rldicl 4, 4, 8, 56
24042 ; PWR5-NEXT: subfe 3, 3, 3
24043 ; PWR5-NEXT: subc 5, 4, 5
24044 ; PWR5-NEXT: subfe 4, 4, 4
24047 ; PWR6-LABEL: ult_47_v2i64:
24049 ; PWR6-NEXT: lis 5, 21845
24050 ; PWR6-NEXT: lis 6, 13107
24051 ; PWR6-NEXT: ori 5, 5, 21845
24052 ; PWR6-NEXT: rotldi 8, 4, 63
24053 ; PWR6-NEXT: rotldi 9, 3, 63
24054 ; PWR6-NEXT: rldimi 5, 5, 32, 0
24055 ; PWR6-NEXT: and 8, 8, 5
24056 ; PWR6-NEXT: and 5, 9, 5
24057 ; PWR6-NEXT: ori 6, 6, 13107
24058 ; PWR6-NEXT: sub 3, 3, 5
24059 ; PWR6-NEXT: rldimi 6, 6, 32, 0
24060 ; PWR6-NEXT: sub 4, 4, 8
24061 ; PWR6-NEXT: and 8, 3, 6
24062 ; PWR6-NEXT: rotldi 3, 3, 62
24063 ; PWR6-NEXT: and 3, 3, 6
24064 ; PWR6-NEXT: lis 7, 3855
24065 ; PWR6-NEXT: and 5, 4, 6
24066 ; PWR6-NEXT: rotldi 4, 4, 62
24067 ; PWR6-NEXT: add 3, 8, 3
24068 ; PWR6-NEXT: lis 9, 257
24069 ; PWR6-NEXT: ori 7, 7, 3855
24070 ; PWR6-NEXT: and 4, 4, 6
24071 ; PWR6-NEXT: rldicl 6, 3, 60, 4
24072 ; PWR6-NEXT: ori 9, 9, 257
24073 ; PWR6-NEXT: rldimi 7, 7, 32, 0
24074 ; PWR6-NEXT: add 4, 5, 4
24075 ; PWR6-NEXT: add 3, 3, 6
24076 ; PWR6-NEXT: rldimi 9, 9, 32, 0
24077 ; PWR6-NEXT: rldicl 5, 4, 60, 4
24078 ; PWR6-NEXT: and 3, 3, 7
24079 ; PWR6-NEXT: add 4, 4, 5
24080 ; PWR6-NEXT: mulld 3, 3, 9
24081 ; PWR6-NEXT: and 4, 4, 7
24082 ; PWR6-NEXT: rldicl 3, 3, 8, 56
24083 ; PWR6-NEXT: li 5, 47
24084 ; PWR6-NEXT: mulld 4, 4, 9
24085 ; PWR6-NEXT: subc 6, 3, 5
24086 ; PWR6-NEXT: rldicl 4, 4, 8, 56
24087 ; PWR6-NEXT: subfe 3, 3, 3
24088 ; PWR6-NEXT: subc 5, 4, 5
24089 ; PWR6-NEXT: subfe 4, 4, 4
24092 ; PWR7-LABEL: ult_47_v2i64:
24094 ; PWR7-NEXT: addi 3, 1, -32
24095 ; PWR7-NEXT: li 5, 0
24096 ; PWR7-NEXT: li 6, -1
24097 ; PWR7-NEXT: stxvd2x 34, 0, 3
24098 ; PWR7-NEXT: ld 3, -24(1)
24099 ; PWR7-NEXT: ld 4, -32(1)
24100 ; PWR7-NEXT: popcntd 3, 3
24101 ; PWR7-NEXT: popcntd 4, 4
24102 ; PWR7-NEXT: cmpldi 3, 47
24103 ; PWR7-NEXT: isellt 3, 6, 5
24104 ; PWR7-NEXT: cmpldi 4, 47
24105 ; PWR7-NEXT: isellt 4, 6, 5
24106 ; PWR7-NEXT: std 3, -8(1)
24107 ; PWR7-NEXT: addi 3, 1, -16
24108 ; PWR7-NEXT: std 4, -16(1)
24109 ; PWR7-NEXT: lxvd2x 34, 0, 3
24112 ; PWR8-LABEL: ult_47_v2i64:
24114 ; PWR8-NEXT: addis 3, 2, .LCPI191_0@toc@ha
24115 ; PWR8-NEXT: vpopcntd 2, 2
24116 ; PWR8-NEXT: addi 3, 3, .LCPI191_0@toc@l
24117 ; PWR8-NEXT: lxvd2x 35, 0, 3
24118 ; PWR8-NEXT: vcmpgtud 2, 3, 2
24121 ; PWR9-LABEL: ult_47_v2i64:
24123 ; PWR9-NEXT: addis 3, 2, .LCPI191_0@toc@ha
24124 ; PWR9-NEXT: vpopcntd 2, 2
24125 ; PWR9-NEXT: addi 3, 3, .LCPI191_0@toc@l
24126 ; PWR9-NEXT: lxv 35, 0(3)
24127 ; PWR9-NEXT: vcmpgtud 2, 3, 2
24129 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
24130 %3 = icmp ult <2 x i64> %2, <i64 47, i64 47>
24131 %4 = sext <2 x i1> %3 to <2 x i64>
24135 define <2 x i64> @ugt_47_v2i64(<2 x i64> %0) {
24136 ; PWR5-LABEL: ugt_47_v2i64:
24138 ; PWR5-NEXT: lis 5, 21845
24139 ; PWR5-NEXT: lis 6, 13107
24140 ; PWR5-NEXT: ori 5, 5, 21845
24141 ; PWR5-NEXT: rotldi 8, 4, 63
24142 ; PWR5-NEXT: rotldi 9, 3, 63
24143 ; PWR5-NEXT: rldimi 5, 5, 32, 0
24144 ; PWR5-NEXT: and 8, 8, 5
24145 ; PWR5-NEXT: and 5, 9, 5
24146 ; PWR5-NEXT: ori 6, 6, 13107
24147 ; PWR5-NEXT: sub 3, 3, 5
24148 ; PWR5-NEXT: rldimi 6, 6, 32, 0
24149 ; PWR5-NEXT: sub 4, 4, 8
24150 ; PWR5-NEXT: and 8, 3, 6
24151 ; PWR5-NEXT: rotldi 3, 3, 62
24152 ; PWR5-NEXT: and 3, 3, 6
24153 ; PWR5-NEXT: lis 7, 3855
24154 ; PWR5-NEXT: and 5, 4, 6
24155 ; PWR5-NEXT: rotldi 4, 4, 62
24156 ; PWR5-NEXT: add 3, 8, 3
24157 ; PWR5-NEXT: lis 9, 257
24158 ; PWR5-NEXT: ori 7, 7, 3855
24159 ; PWR5-NEXT: and 4, 4, 6
24160 ; PWR5-NEXT: rldicl 6, 3, 60, 4
24161 ; PWR5-NEXT: ori 9, 9, 257
24162 ; PWR5-NEXT: rldimi 7, 7, 32, 0
24163 ; PWR5-NEXT: add 4, 5, 4
24164 ; PWR5-NEXT: add 3, 3, 6
24165 ; PWR5-NEXT: rldimi 9, 9, 32, 0
24166 ; PWR5-NEXT: rldicl 5, 4, 60, 4
24167 ; PWR5-NEXT: and 3, 3, 7
24168 ; PWR5-NEXT: add 4, 4, 5
24169 ; PWR5-NEXT: mulld 3, 3, 9
24170 ; PWR5-NEXT: and 4, 4, 7
24171 ; PWR5-NEXT: rldicl 3, 3, 8, 56
24172 ; PWR5-NEXT: mulld 4, 4, 9
24173 ; PWR5-NEXT: li 5, 47
24174 ; PWR5-NEXT: subfic 3, 3, 47
24175 ; PWR5-NEXT: rldicl 4, 4, 8, 56
24176 ; PWR5-NEXT: subfe 3, 5, 5
24177 ; PWR5-NEXT: subfic 4, 4, 47
24178 ; PWR5-NEXT: subfe 4, 5, 5
24181 ; PWR6-LABEL: ugt_47_v2i64:
24183 ; PWR6-NEXT: lis 5, 21845
24184 ; PWR6-NEXT: lis 6, 13107
24185 ; PWR6-NEXT: ori 5, 5, 21845
24186 ; PWR6-NEXT: rotldi 8, 4, 63
24187 ; PWR6-NEXT: rotldi 9, 3, 63
24188 ; PWR6-NEXT: rldimi 5, 5, 32, 0
24189 ; PWR6-NEXT: and 8, 8, 5
24190 ; PWR6-NEXT: and 5, 9, 5
24191 ; PWR6-NEXT: ori 6, 6, 13107
24192 ; PWR6-NEXT: sub 3, 3, 5
24193 ; PWR6-NEXT: rldimi 6, 6, 32, 0
24194 ; PWR6-NEXT: sub 4, 4, 8
24195 ; PWR6-NEXT: and 8, 3, 6
24196 ; PWR6-NEXT: rotldi 3, 3, 62
24197 ; PWR6-NEXT: and 3, 3, 6
24198 ; PWR6-NEXT: lis 7, 3855
24199 ; PWR6-NEXT: and 5, 4, 6
24200 ; PWR6-NEXT: rotldi 4, 4, 62
24201 ; PWR6-NEXT: add 3, 8, 3
24202 ; PWR6-NEXT: lis 9, 257
24203 ; PWR6-NEXT: ori 7, 7, 3855
24204 ; PWR6-NEXT: and 4, 4, 6
24205 ; PWR6-NEXT: rldicl 6, 3, 60, 4
24206 ; PWR6-NEXT: ori 9, 9, 257
24207 ; PWR6-NEXT: rldimi 7, 7, 32, 0
24208 ; PWR6-NEXT: add 4, 5, 4
24209 ; PWR6-NEXT: add 3, 3, 6
24210 ; PWR6-NEXT: rldimi 9, 9, 32, 0
24211 ; PWR6-NEXT: rldicl 5, 4, 60, 4
24212 ; PWR6-NEXT: and 3, 3, 7
24213 ; PWR6-NEXT: add 4, 4, 5
24214 ; PWR6-NEXT: mulld 3, 3, 9
24215 ; PWR6-NEXT: and 4, 4, 7
24216 ; PWR6-NEXT: rldicl 3, 3, 8, 56
24217 ; PWR6-NEXT: mulld 4, 4, 9
24218 ; PWR6-NEXT: li 5, 47
24219 ; PWR6-NEXT: subfic 3, 3, 47
24220 ; PWR6-NEXT: rldicl 4, 4, 8, 56
24221 ; PWR6-NEXT: subfe 3, 5, 5
24222 ; PWR6-NEXT: subfic 4, 4, 47
24223 ; PWR6-NEXT: subfe 4, 5, 5
24226 ; PWR7-LABEL: ugt_47_v2i64:
24228 ; PWR7-NEXT: addi 3, 1, -32
24229 ; PWR7-NEXT: li 5, 0
24230 ; PWR7-NEXT: li 6, -1
24231 ; PWR7-NEXT: stxvd2x 34, 0, 3
24232 ; PWR7-NEXT: ld 3, -24(1)
24233 ; PWR7-NEXT: ld 4, -32(1)
24234 ; PWR7-NEXT: popcntd 3, 3
24235 ; PWR7-NEXT: popcntd 4, 4
24236 ; PWR7-NEXT: cmpldi 3, 47
24237 ; PWR7-NEXT: iselgt 3, 6, 5
24238 ; PWR7-NEXT: cmpldi 4, 47
24239 ; PWR7-NEXT: iselgt 4, 6, 5
24240 ; PWR7-NEXT: std 3, -8(1)
24241 ; PWR7-NEXT: addi 3, 1, -16
24242 ; PWR7-NEXT: std 4, -16(1)
24243 ; PWR7-NEXT: lxvd2x 34, 0, 3
24246 ; PWR8-LABEL: ugt_47_v2i64:
24248 ; PWR8-NEXT: addis 3, 2, .LCPI192_0@toc@ha
24249 ; PWR8-NEXT: vpopcntd 2, 2
24250 ; PWR8-NEXT: addi 3, 3, .LCPI192_0@toc@l
24251 ; PWR8-NEXT: lxvd2x 35, 0, 3
24252 ; PWR8-NEXT: vcmpgtud 2, 2, 3
24255 ; PWR9-LABEL: ugt_47_v2i64:
24257 ; PWR9-NEXT: addis 3, 2, .LCPI192_0@toc@ha
24258 ; PWR9-NEXT: vpopcntd 2, 2
24259 ; PWR9-NEXT: addi 3, 3, .LCPI192_0@toc@l
24260 ; PWR9-NEXT: lxv 35, 0(3)
24261 ; PWR9-NEXT: vcmpgtud 2, 2, 3
24263 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
24264 %3 = icmp ugt <2 x i64> %2, <i64 47, i64 47>
24265 %4 = sext <2 x i1> %3 to <2 x i64>
24269 define <2 x i64> @ult_48_v2i64(<2 x i64> %0) {
24270 ; PWR5-LABEL: ult_48_v2i64:
24272 ; PWR5-NEXT: lis 5, 21845
24273 ; PWR5-NEXT: lis 6, 13107
24274 ; PWR5-NEXT: ori 5, 5, 21845
24275 ; PWR5-NEXT: rotldi 8, 4, 63
24276 ; PWR5-NEXT: rotldi 9, 3, 63
24277 ; PWR5-NEXT: rldimi 5, 5, 32, 0
24278 ; PWR5-NEXT: and 8, 8, 5
24279 ; PWR5-NEXT: and 5, 9, 5
24280 ; PWR5-NEXT: ori 6, 6, 13107
24281 ; PWR5-NEXT: sub 3, 3, 5
24282 ; PWR5-NEXT: rldimi 6, 6, 32, 0
24283 ; PWR5-NEXT: sub 4, 4, 8
24284 ; PWR5-NEXT: and 8, 3, 6
24285 ; PWR5-NEXT: rotldi 3, 3, 62
24286 ; PWR5-NEXT: and 3, 3, 6
24287 ; PWR5-NEXT: lis 7, 3855
24288 ; PWR5-NEXT: and 5, 4, 6
24289 ; PWR5-NEXT: rotldi 4, 4, 62
24290 ; PWR5-NEXT: add 3, 8, 3
24291 ; PWR5-NEXT: lis 9, 257
24292 ; PWR5-NEXT: ori 7, 7, 3855
24293 ; PWR5-NEXT: and 4, 4, 6
24294 ; PWR5-NEXT: rldicl 6, 3, 60, 4
24295 ; PWR5-NEXT: ori 9, 9, 257
24296 ; PWR5-NEXT: rldimi 7, 7, 32, 0
24297 ; PWR5-NEXT: add 4, 5, 4
24298 ; PWR5-NEXT: add 3, 3, 6
24299 ; PWR5-NEXT: rldimi 9, 9, 32, 0
24300 ; PWR5-NEXT: rldicl 5, 4, 60, 4
24301 ; PWR5-NEXT: and 3, 3, 7
24302 ; PWR5-NEXT: add 4, 4, 5
24303 ; PWR5-NEXT: mulld 3, 3, 9
24304 ; PWR5-NEXT: and 4, 4, 7
24305 ; PWR5-NEXT: rldicl 3, 3, 8, 56
24306 ; PWR5-NEXT: li 5, 48
24307 ; PWR5-NEXT: mulld 4, 4, 9
24308 ; PWR5-NEXT: subc 6, 3, 5
24309 ; PWR5-NEXT: rldicl 4, 4, 8, 56
24310 ; PWR5-NEXT: subfe 3, 3, 3
24311 ; PWR5-NEXT: subc 5, 4, 5
24312 ; PWR5-NEXT: subfe 4, 4, 4
24315 ; PWR6-LABEL: ult_48_v2i64:
24317 ; PWR6-NEXT: lis 5, 21845
24318 ; PWR6-NEXT: lis 6, 13107
24319 ; PWR6-NEXT: ori 5, 5, 21845
24320 ; PWR6-NEXT: rotldi 8, 4, 63
24321 ; PWR6-NEXT: rotldi 9, 3, 63
24322 ; PWR6-NEXT: rldimi 5, 5, 32, 0
24323 ; PWR6-NEXT: and 8, 8, 5
24324 ; PWR6-NEXT: and 5, 9, 5
24325 ; PWR6-NEXT: ori 6, 6, 13107
24326 ; PWR6-NEXT: sub 3, 3, 5
24327 ; PWR6-NEXT: rldimi 6, 6, 32, 0
24328 ; PWR6-NEXT: sub 4, 4, 8
24329 ; PWR6-NEXT: and 8, 3, 6
24330 ; PWR6-NEXT: rotldi 3, 3, 62
24331 ; PWR6-NEXT: and 3, 3, 6
24332 ; PWR6-NEXT: lis 7, 3855
24333 ; PWR6-NEXT: and 5, 4, 6
24334 ; PWR6-NEXT: rotldi 4, 4, 62
24335 ; PWR6-NEXT: add 3, 8, 3
24336 ; PWR6-NEXT: lis 9, 257
24337 ; PWR6-NEXT: ori 7, 7, 3855
24338 ; PWR6-NEXT: and 4, 4, 6
24339 ; PWR6-NEXT: rldicl 6, 3, 60, 4
24340 ; PWR6-NEXT: ori 9, 9, 257
24341 ; PWR6-NEXT: rldimi 7, 7, 32, 0
24342 ; PWR6-NEXT: add 4, 5, 4
24343 ; PWR6-NEXT: add 3, 3, 6
24344 ; PWR6-NEXT: rldimi 9, 9, 32, 0
24345 ; PWR6-NEXT: rldicl 5, 4, 60, 4
24346 ; PWR6-NEXT: and 3, 3, 7
24347 ; PWR6-NEXT: add 4, 4, 5
24348 ; PWR6-NEXT: mulld 3, 3, 9
24349 ; PWR6-NEXT: and 4, 4, 7
24350 ; PWR6-NEXT: rldicl 3, 3, 8, 56
24351 ; PWR6-NEXT: li 5, 48
24352 ; PWR6-NEXT: mulld 4, 4, 9
24353 ; PWR6-NEXT: subc 6, 3, 5
24354 ; PWR6-NEXT: rldicl 4, 4, 8, 56
24355 ; PWR6-NEXT: subfe 3, 3, 3
24356 ; PWR6-NEXT: subc 5, 4, 5
24357 ; PWR6-NEXT: subfe 4, 4, 4
24360 ; PWR7-LABEL: ult_48_v2i64:
24362 ; PWR7-NEXT: addi 3, 1, -32
24363 ; PWR7-NEXT: li 5, 0
24364 ; PWR7-NEXT: li 6, -1
24365 ; PWR7-NEXT: stxvd2x 34, 0, 3
24366 ; PWR7-NEXT: ld 3, -24(1)
24367 ; PWR7-NEXT: ld 4, -32(1)
24368 ; PWR7-NEXT: popcntd 3, 3
24369 ; PWR7-NEXT: popcntd 4, 4
24370 ; PWR7-NEXT: cmpldi 3, 48
24371 ; PWR7-NEXT: isellt 3, 6, 5
24372 ; PWR7-NEXT: cmpldi 4, 48
24373 ; PWR7-NEXT: isellt 4, 6, 5
24374 ; PWR7-NEXT: std 3, -8(1)
24375 ; PWR7-NEXT: addi 3, 1, -16
24376 ; PWR7-NEXT: std 4, -16(1)
24377 ; PWR7-NEXT: lxvd2x 34, 0, 3
24380 ; PWR8-LABEL: ult_48_v2i64:
24382 ; PWR8-NEXT: addis 3, 2, .LCPI193_0@toc@ha
24383 ; PWR8-NEXT: vpopcntd 2, 2
24384 ; PWR8-NEXT: addi 3, 3, .LCPI193_0@toc@l
24385 ; PWR8-NEXT: lxvd2x 35, 0, 3
24386 ; PWR8-NEXT: vcmpgtud 2, 3, 2
24389 ; PWR9-LABEL: ult_48_v2i64:
24391 ; PWR9-NEXT: addis 3, 2, .LCPI193_0@toc@ha
24392 ; PWR9-NEXT: vpopcntd 2, 2
24393 ; PWR9-NEXT: addi 3, 3, .LCPI193_0@toc@l
24394 ; PWR9-NEXT: lxv 35, 0(3)
24395 ; PWR9-NEXT: vcmpgtud 2, 3, 2
24397 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
24398 %3 = icmp ult <2 x i64> %2, <i64 48, i64 48>
24399 %4 = sext <2 x i1> %3 to <2 x i64>
24403 define <2 x i64> @ugt_48_v2i64(<2 x i64> %0) {
24404 ; PWR5-LABEL: ugt_48_v2i64:
24406 ; PWR5-NEXT: lis 5, 21845
24407 ; PWR5-NEXT: lis 6, 13107
24408 ; PWR5-NEXT: ori 5, 5, 21845
24409 ; PWR5-NEXT: rotldi 8, 4, 63
24410 ; PWR5-NEXT: rotldi 9, 3, 63
24411 ; PWR5-NEXT: rldimi 5, 5, 32, 0
24412 ; PWR5-NEXT: and 8, 8, 5
24413 ; PWR5-NEXT: and 5, 9, 5
24414 ; PWR5-NEXT: ori 6, 6, 13107
24415 ; PWR5-NEXT: sub 3, 3, 5
24416 ; PWR5-NEXT: rldimi 6, 6, 32, 0
24417 ; PWR5-NEXT: sub 4, 4, 8
24418 ; PWR5-NEXT: and 8, 3, 6
24419 ; PWR5-NEXT: rotldi 3, 3, 62
24420 ; PWR5-NEXT: and 3, 3, 6
24421 ; PWR5-NEXT: lis 7, 3855
24422 ; PWR5-NEXT: and 5, 4, 6
24423 ; PWR5-NEXT: rotldi 4, 4, 62
24424 ; PWR5-NEXT: add 3, 8, 3
24425 ; PWR5-NEXT: lis 9, 257
24426 ; PWR5-NEXT: ori 7, 7, 3855
24427 ; PWR5-NEXT: and 4, 4, 6
24428 ; PWR5-NEXT: rldicl 6, 3, 60, 4
24429 ; PWR5-NEXT: ori 9, 9, 257
24430 ; PWR5-NEXT: rldimi 7, 7, 32, 0
24431 ; PWR5-NEXT: add 4, 5, 4
24432 ; PWR5-NEXT: add 3, 3, 6
24433 ; PWR5-NEXT: rldimi 9, 9, 32, 0
24434 ; PWR5-NEXT: rldicl 5, 4, 60, 4
24435 ; PWR5-NEXT: and 3, 3, 7
24436 ; PWR5-NEXT: add 4, 4, 5
24437 ; PWR5-NEXT: mulld 3, 3, 9
24438 ; PWR5-NEXT: and 4, 4, 7
24439 ; PWR5-NEXT: rldicl 3, 3, 8, 56
24440 ; PWR5-NEXT: mulld 4, 4, 9
24441 ; PWR5-NEXT: li 5, 48
24442 ; PWR5-NEXT: subfic 3, 3, 48
24443 ; PWR5-NEXT: rldicl 4, 4, 8, 56
24444 ; PWR5-NEXT: subfe 3, 5, 5
24445 ; PWR5-NEXT: subfic 4, 4, 48
24446 ; PWR5-NEXT: subfe 4, 5, 5
24449 ; PWR6-LABEL: ugt_48_v2i64:
24451 ; PWR6-NEXT: lis 5, 21845
24452 ; PWR6-NEXT: lis 6, 13107
24453 ; PWR6-NEXT: ori 5, 5, 21845
24454 ; PWR6-NEXT: rotldi 8, 4, 63
24455 ; PWR6-NEXT: rotldi 9, 3, 63
24456 ; PWR6-NEXT: rldimi 5, 5, 32, 0
24457 ; PWR6-NEXT: and 8, 8, 5
24458 ; PWR6-NEXT: and 5, 9, 5
24459 ; PWR6-NEXT: ori 6, 6, 13107
24460 ; PWR6-NEXT: sub 3, 3, 5
24461 ; PWR6-NEXT: rldimi 6, 6, 32, 0
24462 ; PWR6-NEXT: sub 4, 4, 8
24463 ; PWR6-NEXT: and 8, 3, 6
24464 ; PWR6-NEXT: rotldi 3, 3, 62
24465 ; PWR6-NEXT: and 3, 3, 6
24466 ; PWR6-NEXT: lis 7, 3855
24467 ; PWR6-NEXT: and 5, 4, 6
24468 ; PWR6-NEXT: rotldi 4, 4, 62
24469 ; PWR6-NEXT: add 3, 8, 3
24470 ; PWR6-NEXT: lis 9, 257
24471 ; PWR6-NEXT: ori 7, 7, 3855
24472 ; PWR6-NEXT: and 4, 4, 6
24473 ; PWR6-NEXT: rldicl 6, 3, 60, 4
24474 ; PWR6-NEXT: ori 9, 9, 257
24475 ; PWR6-NEXT: rldimi 7, 7, 32, 0
24476 ; PWR6-NEXT: add 4, 5, 4
24477 ; PWR6-NEXT: add 3, 3, 6
24478 ; PWR6-NEXT: rldimi 9, 9, 32, 0
24479 ; PWR6-NEXT: rldicl 5, 4, 60, 4
24480 ; PWR6-NEXT: and 3, 3, 7
24481 ; PWR6-NEXT: add 4, 4, 5
24482 ; PWR6-NEXT: mulld 3, 3, 9
24483 ; PWR6-NEXT: and 4, 4, 7
24484 ; PWR6-NEXT: rldicl 3, 3, 8, 56
24485 ; PWR6-NEXT: mulld 4, 4, 9
24486 ; PWR6-NEXT: li 5, 48
24487 ; PWR6-NEXT: subfic 3, 3, 48
24488 ; PWR6-NEXT: rldicl 4, 4, 8, 56
24489 ; PWR6-NEXT: subfe 3, 5, 5
24490 ; PWR6-NEXT: subfic 4, 4, 48
24491 ; PWR6-NEXT: subfe 4, 5, 5
24494 ; PWR7-LABEL: ugt_48_v2i64:
24496 ; PWR7-NEXT: addi 3, 1, -32
24497 ; PWR7-NEXT: li 5, 0
24498 ; PWR7-NEXT: li 6, -1
24499 ; PWR7-NEXT: stxvd2x 34, 0, 3
24500 ; PWR7-NEXT: ld 3, -24(1)
24501 ; PWR7-NEXT: ld 4, -32(1)
24502 ; PWR7-NEXT: popcntd 3, 3
24503 ; PWR7-NEXT: popcntd 4, 4
24504 ; PWR7-NEXT: cmpldi 3, 48
24505 ; PWR7-NEXT: iselgt 3, 6, 5
24506 ; PWR7-NEXT: cmpldi 4, 48
24507 ; PWR7-NEXT: iselgt 4, 6, 5
24508 ; PWR7-NEXT: std 3, -8(1)
24509 ; PWR7-NEXT: addi 3, 1, -16
24510 ; PWR7-NEXT: std 4, -16(1)
24511 ; PWR7-NEXT: lxvd2x 34, 0, 3
24514 ; PWR8-LABEL: ugt_48_v2i64:
24516 ; PWR8-NEXT: addis 3, 2, .LCPI194_0@toc@ha
24517 ; PWR8-NEXT: vpopcntd 2, 2
24518 ; PWR8-NEXT: addi 3, 3, .LCPI194_0@toc@l
24519 ; PWR8-NEXT: lxvd2x 35, 0, 3
24520 ; PWR8-NEXT: vcmpgtud 2, 2, 3
24523 ; PWR9-LABEL: ugt_48_v2i64:
24525 ; PWR9-NEXT: addis 3, 2, .LCPI194_0@toc@ha
24526 ; PWR9-NEXT: vpopcntd 2, 2
24527 ; PWR9-NEXT: addi 3, 3, .LCPI194_0@toc@l
24528 ; PWR9-NEXT: lxv 35, 0(3)
24529 ; PWR9-NEXT: vcmpgtud 2, 2, 3
24531 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
24532 %3 = icmp ugt <2 x i64> %2, <i64 48, i64 48>
24533 %4 = sext <2 x i1> %3 to <2 x i64>
24537 define <2 x i64> @ult_49_v2i64(<2 x i64> %0) {
24538 ; PWR5-LABEL: ult_49_v2i64:
24540 ; PWR5-NEXT: lis 5, 21845
24541 ; PWR5-NEXT: lis 6, 13107
24542 ; PWR5-NEXT: ori 5, 5, 21845
24543 ; PWR5-NEXT: rotldi 8, 4, 63
24544 ; PWR5-NEXT: rotldi 9, 3, 63
24545 ; PWR5-NEXT: rldimi 5, 5, 32, 0
24546 ; PWR5-NEXT: and 8, 8, 5
24547 ; PWR5-NEXT: and 5, 9, 5
24548 ; PWR5-NEXT: ori 6, 6, 13107
24549 ; PWR5-NEXT: sub 3, 3, 5
24550 ; PWR5-NEXT: rldimi 6, 6, 32, 0
24551 ; PWR5-NEXT: sub 4, 4, 8
24552 ; PWR5-NEXT: and 8, 3, 6
24553 ; PWR5-NEXT: rotldi 3, 3, 62
24554 ; PWR5-NEXT: and 3, 3, 6
24555 ; PWR5-NEXT: lis 7, 3855
24556 ; PWR5-NEXT: and 5, 4, 6
24557 ; PWR5-NEXT: rotldi 4, 4, 62
24558 ; PWR5-NEXT: add 3, 8, 3
24559 ; PWR5-NEXT: lis 9, 257
24560 ; PWR5-NEXT: ori 7, 7, 3855
24561 ; PWR5-NEXT: and 4, 4, 6
24562 ; PWR5-NEXT: rldicl 6, 3, 60, 4
24563 ; PWR5-NEXT: ori 9, 9, 257
24564 ; PWR5-NEXT: rldimi 7, 7, 32, 0
24565 ; PWR5-NEXT: add 4, 5, 4
24566 ; PWR5-NEXT: add 3, 3, 6
24567 ; PWR5-NEXT: rldimi 9, 9, 32, 0
24568 ; PWR5-NEXT: rldicl 5, 4, 60, 4
24569 ; PWR5-NEXT: and 3, 3, 7
24570 ; PWR5-NEXT: add 4, 4, 5
24571 ; PWR5-NEXT: mulld 3, 3, 9
24572 ; PWR5-NEXT: and 4, 4, 7
24573 ; PWR5-NEXT: rldicl 3, 3, 8, 56
24574 ; PWR5-NEXT: li 5, 49
24575 ; PWR5-NEXT: mulld 4, 4, 9
24576 ; PWR5-NEXT: subc 6, 3, 5
24577 ; PWR5-NEXT: rldicl 4, 4, 8, 56
24578 ; PWR5-NEXT: subfe 3, 3, 3
24579 ; PWR5-NEXT: subc 5, 4, 5
24580 ; PWR5-NEXT: subfe 4, 4, 4
24583 ; PWR6-LABEL: ult_49_v2i64:
24585 ; PWR6-NEXT: lis 5, 21845
24586 ; PWR6-NEXT: lis 6, 13107
24587 ; PWR6-NEXT: ori 5, 5, 21845
24588 ; PWR6-NEXT: rotldi 8, 4, 63
24589 ; PWR6-NEXT: rotldi 9, 3, 63
24590 ; PWR6-NEXT: rldimi 5, 5, 32, 0
24591 ; PWR6-NEXT: and 8, 8, 5
24592 ; PWR6-NEXT: and 5, 9, 5
24593 ; PWR6-NEXT: ori 6, 6, 13107
24594 ; PWR6-NEXT: sub 3, 3, 5
24595 ; PWR6-NEXT: rldimi 6, 6, 32, 0
24596 ; PWR6-NEXT: sub 4, 4, 8
24597 ; PWR6-NEXT: and 8, 3, 6
24598 ; PWR6-NEXT: rotldi 3, 3, 62
24599 ; PWR6-NEXT: and 3, 3, 6
24600 ; PWR6-NEXT: lis 7, 3855
24601 ; PWR6-NEXT: and 5, 4, 6
24602 ; PWR6-NEXT: rotldi 4, 4, 62
24603 ; PWR6-NEXT: add 3, 8, 3
24604 ; PWR6-NEXT: lis 9, 257
24605 ; PWR6-NEXT: ori 7, 7, 3855
24606 ; PWR6-NEXT: and 4, 4, 6
24607 ; PWR6-NEXT: rldicl 6, 3, 60, 4
24608 ; PWR6-NEXT: ori 9, 9, 257
24609 ; PWR6-NEXT: rldimi 7, 7, 32, 0
24610 ; PWR6-NEXT: add 4, 5, 4
24611 ; PWR6-NEXT: add 3, 3, 6
24612 ; PWR6-NEXT: rldimi 9, 9, 32, 0
24613 ; PWR6-NEXT: rldicl 5, 4, 60, 4
24614 ; PWR6-NEXT: and 3, 3, 7
24615 ; PWR6-NEXT: add 4, 4, 5
24616 ; PWR6-NEXT: mulld 3, 3, 9
24617 ; PWR6-NEXT: and 4, 4, 7
24618 ; PWR6-NEXT: rldicl 3, 3, 8, 56
24619 ; PWR6-NEXT: li 5, 49
24620 ; PWR6-NEXT: mulld 4, 4, 9
24621 ; PWR6-NEXT: subc 6, 3, 5
24622 ; PWR6-NEXT: rldicl 4, 4, 8, 56
24623 ; PWR6-NEXT: subfe 3, 3, 3
24624 ; PWR6-NEXT: subc 5, 4, 5
24625 ; PWR6-NEXT: subfe 4, 4, 4
24628 ; PWR7-LABEL: ult_49_v2i64:
24630 ; PWR7-NEXT: addi 3, 1, -32
24631 ; PWR7-NEXT: li 5, 0
24632 ; PWR7-NEXT: li 6, -1
24633 ; PWR7-NEXT: stxvd2x 34, 0, 3
24634 ; PWR7-NEXT: ld 3, -24(1)
24635 ; PWR7-NEXT: ld 4, -32(1)
24636 ; PWR7-NEXT: popcntd 3, 3
24637 ; PWR7-NEXT: popcntd 4, 4
24638 ; PWR7-NEXT: cmpldi 3, 49
24639 ; PWR7-NEXT: isellt 3, 6, 5
24640 ; PWR7-NEXT: cmpldi 4, 49
24641 ; PWR7-NEXT: isellt 4, 6, 5
24642 ; PWR7-NEXT: std 3, -8(1)
24643 ; PWR7-NEXT: addi 3, 1, -16
24644 ; PWR7-NEXT: std 4, -16(1)
24645 ; PWR7-NEXT: lxvd2x 34, 0, 3
24648 ; PWR8-LABEL: ult_49_v2i64:
24650 ; PWR8-NEXT: addis 3, 2, .LCPI195_0@toc@ha
24651 ; PWR8-NEXT: vpopcntd 2, 2
24652 ; PWR8-NEXT: addi 3, 3, .LCPI195_0@toc@l
24653 ; PWR8-NEXT: lxvd2x 35, 0, 3
24654 ; PWR8-NEXT: vcmpgtud 2, 3, 2
24657 ; PWR9-LABEL: ult_49_v2i64:
24659 ; PWR9-NEXT: addis 3, 2, .LCPI195_0@toc@ha
24660 ; PWR9-NEXT: vpopcntd 2, 2
24661 ; PWR9-NEXT: addi 3, 3, .LCPI195_0@toc@l
24662 ; PWR9-NEXT: lxv 35, 0(3)
24663 ; PWR9-NEXT: vcmpgtud 2, 3, 2
24665 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
24666 %3 = icmp ult <2 x i64> %2, <i64 49, i64 49>
24667 %4 = sext <2 x i1> %3 to <2 x i64>
24671 define <2 x i64> @ugt_49_v2i64(<2 x i64> %0) {
24672 ; PWR5-LABEL: ugt_49_v2i64:
24674 ; PWR5-NEXT: lis 5, 21845
24675 ; PWR5-NEXT: lis 6, 13107
24676 ; PWR5-NEXT: ori 5, 5, 21845
24677 ; PWR5-NEXT: rotldi 8, 4, 63
24678 ; PWR5-NEXT: rotldi 9, 3, 63
24679 ; PWR5-NEXT: rldimi 5, 5, 32, 0
24680 ; PWR5-NEXT: and 8, 8, 5
24681 ; PWR5-NEXT: and 5, 9, 5
24682 ; PWR5-NEXT: ori 6, 6, 13107
24683 ; PWR5-NEXT: sub 3, 3, 5
24684 ; PWR5-NEXT: rldimi 6, 6, 32, 0
24685 ; PWR5-NEXT: sub 4, 4, 8
24686 ; PWR5-NEXT: and 8, 3, 6
24687 ; PWR5-NEXT: rotldi 3, 3, 62
24688 ; PWR5-NEXT: and 3, 3, 6
24689 ; PWR5-NEXT: lis 7, 3855
24690 ; PWR5-NEXT: and 5, 4, 6
24691 ; PWR5-NEXT: rotldi 4, 4, 62
24692 ; PWR5-NEXT: add 3, 8, 3
24693 ; PWR5-NEXT: lis 9, 257
24694 ; PWR5-NEXT: ori 7, 7, 3855
24695 ; PWR5-NEXT: and 4, 4, 6
24696 ; PWR5-NEXT: rldicl 6, 3, 60, 4
24697 ; PWR5-NEXT: ori 9, 9, 257
24698 ; PWR5-NEXT: rldimi 7, 7, 32, 0
24699 ; PWR5-NEXT: add 4, 5, 4
24700 ; PWR5-NEXT: add 3, 3, 6
24701 ; PWR5-NEXT: rldimi 9, 9, 32, 0
24702 ; PWR5-NEXT: rldicl 5, 4, 60, 4
24703 ; PWR5-NEXT: and 3, 3, 7
24704 ; PWR5-NEXT: add 4, 4, 5
24705 ; PWR5-NEXT: mulld 3, 3, 9
24706 ; PWR5-NEXT: and 4, 4, 7
24707 ; PWR5-NEXT: rldicl 3, 3, 8, 56
24708 ; PWR5-NEXT: mulld 4, 4, 9
24709 ; PWR5-NEXT: li 5, 49
24710 ; PWR5-NEXT: subfic 3, 3, 49
24711 ; PWR5-NEXT: rldicl 4, 4, 8, 56
24712 ; PWR5-NEXT: subfe 3, 5, 5
24713 ; PWR5-NEXT: subfic 4, 4, 49
24714 ; PWR5-NEXT: subfe 4, 5, 5
24717 ; PWR6-LABEL: ugt_49_v2i64:
24719 ; PWR6-NEXT: lis 5, 21845
24720 ; PWR6-NEXT: lis 6, 13107
24721 ; PWR6-NEXT: ori 5, 5, 21845
24722 ; PWR6-NEXT: rotldi 8, 4, 63
24723 ; PWR6-NEXT: rotldi 9, 3, 63
24724 ; PWR6-NEXT: rldimi 5, 5, 32, 0
24725 ; PWR6-NEXT: and 8, 8, 5
24726 ; PWR6-NEXT: and 5, 9, 5
24727 ; PWR6-NEXT: ori 6, 6, 13107
24728 ; PWR6-NEXT: sub 3, 3, 5
24729 ; PWR6-NEXT: rldimi 6, 6, 32, 0
24730 ; PWR6-NEXT: sub 4, 4, 8
24731 ; PWR6-NEXT: and 8, 3, 6
24732 ; PWR6-NEXT: rotldi 3, 3, 62
24733 ; PWR6-NEXT: and 3, 3, 6
24734 ; PWR6-NEXT: lis 7, 3855
24735 ; PWR6-NEXT: and 5, 4, 6
24736 ; PWR6-NEXT: rotldi 4, 4, 62
24737 ; PWR6-NEXT: add 3, 8, 3
24738 ; PWR6-NEXT: lis 9, 257
24739 ; PWR6-NEXT: ori 7, 7, 3855
24740 ; PWR6-NEXT: and 4, 4, 6
24741 ; PWR6-NEXT: rldicl 6, 3, 60, 4
24742 ; PWR6-NEXT: ori 9, 9, 257
24743 ; PWR6-NEXT: rldimi 7, 7, 32, 0
24744 ; PWR6-NEXT: add 4, 5, 4
24745 ; PWR6-NEXT: add 3, 3, 6
24746 ; PWR6-NEXT: rldimi 9, 9, 32, 0
24747 ; PWR6-NEXT: rldicl 5, 4, 60, 4
24748 ; PWR6-NEXT: and 3, 3, 7
24749 ; PWR6-NEXT: add 4, 4, 5
24750 ; PWR6-NEXT: mulld 3, 3, 9
24751 ; PWR6-NEXT: and 4, 4, 7
24752 ; PWR6-NEXT: rldicl 3, 3, 8, 56
24753 ; PWR6-NEXT: mulld 4, 4, 9
24754 ; PWR6-NEXT: li 5, 49
24755 ; PWR6-NEXT: subfic 3, 3, 49
24756 ; PWR6-NEXT: rldicl 4, 4, 8, 56
24757 ; PWR6-NEXT: subfe 3, 5, 5
24758 ; PWR6-NEXT: subfic 4, 4, 49
24759 ; PWR6-NEXT: subfe 4, 5, 5
24762 ; PWR7-LABEL: ugt_49_v2i64:
24764 ; PWR7-NEXT: addi 3, 1, -32
24765 ; PWR7-NEXT: li 5, 0
24766 ; PWR7-NEXT: li 6, -1
24767 ; PWR7-NEXT: stxvd2x 34, 0, 3
24768 ; PWR7-NEXT: ld 3, -24(1)
24769 ; PWR7-NEXT: ld 4, -32(1)
24770 ; PWR7-NEXT: popcntd 3, 3
24771 ; PWR7-NEXT: popcntd 4, 4
24772 ; PWR7-NEXT: cmpldi 3, 49
24773 ; PWR7-NEXT: iselgt 3, 6, 5
24774 ; PWR7-NEXT: cmpldi 4, 49
24775 ; PWR7-NEXT: iselgt 4, 6, 5
24776 ; PWR7-NEXT: std 3, -8(1)
24777 ; PWR7-NEXT: addi 3, 1, -16
24778 ; PWR7-NEXT: std 4, -16(1)
24779 ; PWR7-NEXT: lxvd2x 34, 0, 3
24782 ; PWR8-LABEL: ugt_49_v2i64:
24784 ; PWR8-NEXT: addis 3, 2, .LCPI196_0@toc@ha
24785 ; PWR8-NEXT: vpopcntd 2, 2
24786 ; PWR8-NEXT: addi 3, 3, .LCPI196_0@toc@l
24787 ; PWR8-NEXT: lxvd2x 35, 0, 3
24788 ; PWR8-NEXT: vcmpgtud 2, 2, 3
24791 ; PWR9-LABEL: ugt_49_v2i64:
24793 ; PWR9-NEXT: addis 3, 2, .LCPI196_0@toc@ha
24794 ; PWR9-NEXT: vpopcntd 2, 2
24795 ; PWR9-NEXT: addi 3, 3, .LCPI196_0@toc@l
24796 ; PWR9-NEXT: lxv 35, 0(3)
24797 ; PWR9-NEXT: vcmpgtud 2, 2, 3
24799 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
24800 %3 = icmp ugt <2 x i64> %2, <i64 49, i64 49>
24801 %4 = sext <2 x i1> %3 to <2 x i64>
24805 define <2 x i64> @ult_50_v2i64(<2 x i64> %0) {
24806 ; PWR5-LABEL: ult_50_v2i64:
24808 ; PWR5-NEXT: lis 5, 21845
24809 ; PWR5-NEXT: lis 6, 13107
24810 ; PWR5-NEXT: ori 5, 5, 21845
24811 ; PWR5-NEXT: rotldi 8, 4, 63
24812 ; PWR5-NEXT: rotldi 9, 3, 63
24813 ; PWR5-NEXT: rldimi 5, 5, 32, 0
24814 ; PWR5-NEXT: and 8, 8, 5
24815 ; PWR5-NEXT: and 5, 9, 5
24816 ; PWR5-NEXT: ori 6, 6, 13107
24817 ; PWR5-NEXT: sub 3, 3, 5
24818 ; PWR5-NEXT: rldimi 6, 6, 32, 0
24819 ; PWR5-NEXT: sub 4, 4, 8
24820 ; PWR5-NEXT: and 8, 3, 6
24821 ; PWR5-NEXT: rotldi 3, 3, 62
24822 ; PWR5-NEXT: and 3, 3, 6
24823 ; PWR5-NEXT: lis 7, 3855
24824 ; PWR5-NEXT: and 5, 4, 6
24825 ; PWR5-NEXT: rotldi 4, 4, 62
24826 ; PWR5-NEXT: add 3, 8, 3
24827 ; PWR5-NEXT: lis 9, 257
24828 ; PWR5-NEXT: ori 7, 7, 3855
24829 ; PWR5-NEXT: and 4, 4, 6
24830 ; PWR5-NEXT: rldicl 6, 3, 60, 4
24831 ; PWR5-NEXT: ori 9, 9, 257
24832 ; PWR5-NEXT: rldimi 7, 7, 32, 0
24833 ; PWR5-NEXT: add 4, 5, 4
24834 ; PWR5-NEXT: add 3, 3, 6
24835 ; PWR5-NEXT: rldimi 9, 9, 32, 0
24836 ; PWR5-NEXT: rldicl 5, 4, 60, 4
24837 ; PWR5-NEXT: and 3, 3, 7
24838 ; PWR5-NEXT: add 4, 4, 5
24839 ; PWR5-NEXT: mulld 3, 3, 9
24840 ; PWR5-NEXT: and 4, 4, 7
24841 ; PWR5-NEXT: rldicl 3, 3, 8, 56
24842 ; PWR5-NEXT: li 5, 50
24843 ; PWR5-NEXT: mulld 4, 4, 9
24844 ; PWR5-NEXT: subc 6, 3, 5
24845 ; PWR5-NEXT: rldicl 4, 4, 8, 56
24846 ; PWR5-NEXT: subfe 3, 3, 3
24847 ; PWR5-NEXT: subc 5, 4, 5
24848 ; PWR5-NEXT: subfe 4, 4, 4
24851 ; PWR6-LABEL: ult_50_v2i64:
24853 ; PWR6-NEXT: lis 5, 21845
24854 ; PWR6-NEXT: lis 6, 13107
24855 ; PWR6-NEXT: ori 5, 5, 21845
24856 ; PWR6-NEXT: rotldi 8, 4, 63
24857 ; PWR6-NEXT: rotldi 9, 3, 63
24858 ; PWR6-NEXT: rldimi 5, 5, 32, 0
24859 ; PWR6-NEXT: and 8, 8, 5
24860 ; PWR6-NEXT: and 5, 9, 5
24861 ; PWR6-NEXT: ori 6, 6, 13107
24862 ; PWR6-NEXT: sub 3, 3, 5
24863 ; PWR6-NEXT: rldimi 6, 6, 32, 0
24864 ; PWR6-NEXT: sub 4, 4, 8
24865 ; PWR6-NEXT: and 8, 3, 6
24866 ; PWR6-NEXT: rotldi 3, 3, 62
24867 ; PWR6-NEXT: and 3, 3, 6
24868 ; PWR6-NEXT: lis 7, 3855
24869 ; PWR6-NEXT: and 5, 4, 6
24870 ; PWR6-NEXT: rotldi 4, 4, 62
24871 ; PWR6-NEXT: add 3, 8, 3
24872 ; PWR6-NEXT: lis 9, 257
24873 ; PWR6-NEXT: ori 7, 7, 3855
24874 ; PWR6-NEXT: and 4, 4, 6
24875 ; PWR6-NEXT: rldicl 6, 3, 60, 4
24876 ; PWR6-NEXT: ori 9, 9, 257
24877 ; PWR6-NEXT: rldimi 7, 7, 32, 0
24878 ; PWR6-NEXT: add 4, 5, 4
24879 ; PWR6-NEXT: add 3, 3, 6
24880 ; PWR6-NEXT: rldimi 9, 9, 32, 0
24881 ; PWR6-NEXT: rldicl 5, 4, 60, 4
24882 ; PWR6-NEXT: and 3, 3, 7
24883 ; PWR6-NEXT: add 4, 4, 5
24884 ; PWR6-NEXT: mulld 3, 3, 9
24885 ; PWR6-NEXT: and 4, 4, 7
24886 ; PWR6-NEXT: rldicl 3, 3, 8, 56
24887 ; PWR6-NEXT: li 5, 50
24888 ; PWR6-NEXT: mulld 4, 4, 9
24889 ; PWR6-NEXT: subc 6, 3, 5
24890 ; PWR6-NEXT: rldicl 4, 4, 8, 56
24891 ; PWR6-NEXT: subfe 3, 3, 3
24892 ; PWR6-NEXT: subc 5, 4, 5
24893 ; PWR6-NEXT: subfe 4, 4, 4
24896 ; PWR7-LABEL: ult_50_v2i64:
24898 ; PWR7-NEXT: addi 3, 1, -32
24899 ; PWR7-NEXT: li 5, 0
24900 ; PWR7-NEXT: li 6, -1
24901 ; PWR7-NEXT: stxvd2x 34, 0, 3
24902 ; PWR7-NEXT: ld 3, -24(1)
24903 ; PWR7-NEXT: ld 4, -32(1)
24904 ; PWR7-NEXT: popcntd 3, 3
24905 ; PWR7-NEXT: popcntd 4, 4
24906 ; PWR7-NEXT: cmpldi 3, 50
24907 ; PWR7-NEXT: isellt 3, 6, 5
24908 ; PWR7-NEXT: cmpldi 4, 50
24909 ; PWR7-NEXT: isellt 4, 6, 5
24910 ; PWR7-NEXT: std 3, -8(1)
24911 ; PWR7-NEXT: addi 3, 1, -16
24912 ; PWR7-NEXT: std 4, -16(1)
24913 ; PWR7-NEXT: lxvd2x 34, 0, 3
24916 ; PWR8-LABEL: ult_50_v2i64:
24918 ; PWR8-NEXT: addis 3, 2, .LCPI197_0@toc@ha
24919 ; PWR8-NEXT: vpopcntd 2, 2
24920 ; PWR8-NEXT: addi 3, 3, .LCPI197_0@toc@l
24921 ; PWR8-NEXT: lxvd2x 35, 0, 3
24922 ; PWR8-NEXT: vcmpgtud 2, 3, 2
24925 ; PWR9-LABEL: ult_50_v2i64:
24927 ; PWR9-NEXT: addis 3, 2, .LCPI197_0@toc@ha
24928 ; PWR9-NEXT: vpopcntd 2, 2
24929 ; PWR9-NEXT: addi 3, 3, .LCPI197_0@toc@l
24930 ; PWR9-NEXT: lxv 35, 0(3)
24931 ; PWR9-NEXT: vcmpgtud 2, 3, 2
24933 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
24934 %3 = icmp ult <2 x i64> %2, <i64 50, i64 50>
24935 %4 = sext <2 x i1> %3 to <2 x i64>
24939 define <2 x i64> @ugt_50_v2i64(<2 x i64> %0) {
24940 ; PWR5-LABEL: ugt_50_v2i64:
24942 ; PWR5-NEXT: lis 5, 21845
24943 ; PWR5-NEXT: lis 6, 13107
24944 ; PWR5-NEXT: ori 5, 5, 21845
24945 ; PWR5-NEXT: rotldi 8, 4, 63
24946 ; PWR5-NEXT: rotldi 9, 3, 63
24947 ; PWR5-NEXT: rldimi 5, 5, 32, 0
24948 ; PWR5-NEXT: and 8, 8, 5
24949 ; PWR5-NEXT: and 5, 9, 5
24950 ; PWR5-NEXT: ori 6, 6, 13107
24951 ; PWR5-NEXT: sub 3, 3, 5
24952 ; PWR5-NEXT: rldimi 6, 6, 32, 0
24953 ; PWR5-NEXT: sub 4, 4, 8
24954 ; PWR5-NEXT: and 8, 3, 6
24955 ; PWR5-NEXT: rotldi 3, 3, 62
24956 ; PWR5-NEXT: and 3, 3, 6
24957 ; PWR5-NEXT: lis 7, 3855
24958 ; PWR5-NEXT: and 5, 4, 6
24959 ; PWR5-NEXT: rotldi 4, 4, 62
24960 ; PWR5-NEXT: add 3, 8, 3
24961 ; PWR5-NEXT: lis 9, 257
24962 ; PWR5-NEXT: ori 7, 7, 3855
24963 ; PWR5-NEXT: and 4, 4, 6
24964 ; PWR5-NEXT: rldicl 6, 3, 60, 4
24965 ; PWR5-NEXT: ori 9, 9, 257
24966 ; PWR5-NEXT: rldimi 7, 7, 32, 0
24967 ; PWR5-NEXT: add 4, 5, 4
24968 ; PWR5-NEXT: add 3, 3, 6
24969 ; PWR5-NEXT: rldimi 9, 9, 32, 0
24970 ; PWR5-NEXT: rldicl 5, 4, 60, 4
24971 ; PWR5-NEXT: and 3, 3, 7
24972 ; PWR5-NEXT: add 4, 4, 5
24973 ; PWR5-NEXT: mulld 3, 3, 9
24974 ; PWR5-NEXT: and 4, 4, 7
24975 ; PWR5-NEXT: rldicl 3, 3, 8, 56
24976 ; PWR5-NEXT: mulld 4, 4, 9
24977 ; PWR5-NEXT: li 5, 50
24978 ; PWR5-NEXT: subfic 3, 3, 50
24979 ; PWR5-NEXT: rldicl 4, 4, 8, 56
24980 ; PWR5-NEXT: subfe 3, 5, 5
24981 ; PWR5-NEXT: subfic 4, 4, 50
24982 ; PWR5-NEXT: subfe 4, 5, 5
24985 ; PWR6-LABEL: ugt_50_v2i64:
24987 ; PWR6-NEXT: lis 5, 21845
24988 ; PWR6-NEXT: lis 6, 13107
24989 ; PWR6-NEXT: ori 5, 5, 21845
24990 ; PWR6-NEXT: rotldi 8, 4, 63
24991 ; PWR6-NEXT: rotldi 9, 3, 63
24992 ; PWR6-NEXT: rldimi 5, 5, 32, 0
24993 ; PWR6-NEXT: and 8, 8, 5
24994 ; PWR6-NEXT: and 5, 9, 5
24995 ; PWR6-NEXT: ori 6, 6, 13107
24996 ; PWR6-NEXT: sub 3, 3, 5
24997 ; PWR6-NEXT: rldimi 6, 6, 32, 0
24998 ; PWR6-NEXT: sub 4, 4, 8
24999 ; PWR6-NEXT: and 8, 3, 6
25000 ; PWR6-NEXT: rotldi 3, 3, 62
25001 ; PWR6-NEXT: and 3, 3, 6
25002 ; PWR6-NEXT: lis 7, 3855
25003 ; PWR6-NEXT: and 5, 4, 6
25004 ; PWR6-NEXT: rotldi 4, 4, 62
25005 ; PWR6-NEXT: add 3, 8, 3
25006 ; PWR6-NEXT: lis 9, 257
25007 ; PWR6-NEXT: ori 7, 7, 3855
25008 ; PWR6-NEXT: and 4, 4, 6
25009 ; PWR6-NEXT: rldicl 6, 3, 60, 4
25010 ; PWR6-NEXT: ori 9, 9, 257
25011 ; PWR6-NEXT: rldimi 7, 7, 32, 0
25012 ; PWR6-NEXT: add 4, 5, 4
25013 ; PWR6-NEXT: add 3, 3, 6
25014 ; PWR6-NEXT: rldimi 9, 9, 32, 0
25015 ; PWR6-NEXT: rldicl 5, 4, 60, 4
25016 ; PWR6-NEXT: and 3, 3, 7
25017 ; PWR6-NEXT: add 4, 4, 5
25018 ; PWR6-NEXT: mulld 3, 3, 9
25019 ; PWR6-NEXT: and 4, 4, 7
25020 ; PWR6-NEXT: rldicl 3, 3, 8, 56
25021 ; PWR6-NEXT: mulld 4, 4, 9
25022 ; PWR6-NEXT: li 5, 50
25023 ; PWR6-NEXT: subfic 3, 3, 50
25024 ; PWR6-NEXT: rldicl 4, 4, 8, 56
25025 ; PWR6-NEXT: subfe 3, 5, 5
25026 ; PWR6-NEXT: subfic 4, 4, 50
25027 ; PWR6-NEXT: subfe 4, 5, 5
25030 ; PWR7-LABEL: ugt_50_v2i64:
25032 ; PWR7-NEXT: addi 3, 1, -32
25033 ; PWR7-NEXT: li 5, 0
25034 ; PWR7-NEXT: li 6, -1
25035 ; PWR7-NEXT: stxvd2x 34, 0, 3
25036 ; PWR7-NEXT: ld 3, -24(1)
25037 ; PWR7-NEXT: ld 4, -32(1)
25038 ; PWR7-NEXT: popcntd 3, 3
25039 ; PWR7-NEXT: popcntd 4, 4
25040 ; PWR7-NEXT: cmpldi 3, 50
25041 ; PWR7-NEXT: iselgt 3, 6, 5
25042 ; PWR7-NEXT: cmpldi 4, 50
25043 ; PWR7-NEXT: iselgt 4, 6, 5
25044 ; PWR7-NEXT: std 3, -8(1)
25045 ; PWR7-NEXT: addi 3, 1, -16
25046 ; PWR7-NEXT: std 4, -16(1)
25047 ; PWR7-NEXT: lxvd2x 34, 0, 3
25050 ; PWR8-LABEL: ugt_50_v2i64:
25052 ; PWR8-NEXT: addis 3, 2, .LCPI198_0@toc@ha
25053 ; PWR8-NEXT: vpopcntd 2, 2
25054 ; PWR8-NEXT: addi 3, 3, .LCPI198_0@toc@l
25055 ; PWR8-NEXT: lxvd2x 35, 0, 3
25056 ; PWR8-NEXT: vcmpgtud 2, 2, 3
25059 ; PWR9-LABEL: ugt_50_v2i64:
25061 ; PWR9-NEXT: addis 3, 2, .LCPI198_0@toc@ha
25062 ; PWR9-NEXT: vpopcntd 2, 2
25063 ; PWR9-NEXT: addi 3, 3, .LCPI198_0@toc@l
25064 ; PWR9-NEXT: lxv 35, 0(3)
25065 ; PWR9-NEXT: vcmpgtud 2, 2, 3
25067 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
25068 %3 = icmp ugt <2 x i64> %2, <i64 50, i64 50>
25069 %4 = sext <2 x i1> %3 to <2 x i64>
25073 define <2 x i64> @ult_51_v2i64(<2 x i64> %0) {
25074 ; PWR5-LABEL: ult_51_v2i64:
25076 ; PWR5-NEXT: lis 5, 21845
25077 ; PWR5-NEXT: lis 6, 13107
25078 ; PWR5-NEXT: ori 5, 5, 21845
25079 ; PWR5-NEXT: rotldi 8, 4, 63
25080 ; PWR5-NEXT: rotldi 9, 3, 63
25081 ; PWR5-NEXT: rldimi 5, 5, 32, 0
25082 ; PWR5-NEXT: and 8, 8, 5
25083 ; PWR5-NEXT: and 5, 9, 5
25084 ; PWR5-NEXT: ori 6, 6, 13107
25085 ; PWR5-NEXT: sub 3, 3, 5
25086 ; PWR5-NEXT: rldimi 6, 6, 32, 0
25087 ; PWR5-NEXT: sub 4, 4, 8
25088 ; PWR5-NEXT: and 8, 3, 6
25089 ; PWR5-NEXT: rotldi 3, 3, 62
25090 ; PWR5-NEXT: and 3, 3, 6
25091 ; PWR5-NEXT: lis 7, 3855
25092 ; PWR5-NEXT: and 5, 4, 6
25093 ; PWR5-NEXT: rotldi 4, 4, 62
25094 ; PWR5-NEXT: add 3, 8, 3
25095 ; PWR5-NEXT: lis 9, 257
25096 ; PWR5-NEXT: ori 7, 7, 3855
25097 ; PWR5-NEXT: and 4, 4, 6
25098 ; PWR5-NEXT: rldicl 6, 3, 60, 4
25099 ; PWR5-NEXT: ori 9, 9, 257
25100 ; PWR5-NEXT: rldimi 7, 7, 32, 0
25101 ; PWR5-NEXT: add 4, 5, 4
25102 ; PWR5-NEXT: add 3, 3, 6
25103 ; PWR5-NEXT: rldimi 9, 9, 32, 0
25104 ; PWR5-NEXT: rldicl 5, 4, 60, 4
25105 ; PWR5-NEXT: and 3, 3, 7
25106 ; PWR5-NEXT: add 4, 4, 5
25107 ; PWR5-NEXT: mulld 3, 3, 9
25108 ; PWR5-NEXT: and 4, 4, 7
25109 ; PWR5-NEXT: rldicl 3, 3, 8, 56
25110 ; PWR5-NEXT: li 5, 51
25111 ; PWR5-NEXT: mulld 4, 4, 9
25112 ; PWR5-NEXT: subc 6, 3, 5
25113 ; PWR5-NEXT: rldicl 4, 4, 8, 56
25114 ; PWR5-NEXT: subfe 3, 3, 3
25115 ; PWR5-NEXT: subc 5, 4, 5
25116 ; PWR5-NEXT: subfe 4, 4, 4
25119 ; PWR6-LABEL: ult_51_v2i64:
25121 ; PWR6-NEXT: lis 5, 21845
25122 ; PWR6-NEXT: lis 6, 13107
25123 ; PWR6-NEXT: ori 5, 5, 21845
25124 ; PWR6-NEXT: rotldi 8, 4, 63
25125 ; PWR6-NEXT: rotldi 9, 3, 63
25126 ; PWR6-NEXT: rldimi 5, 5, 32, 0
25127 ; PWR6-NEXT: and 8, 8, 5
25128 ; PWR6-NEXT: and 5, 9, 5
25129 ; PWR6-NEXT: ori 6, 6, 13107
25130 ; PWR6-NEXT: sub 3, 3, 5
25131 ; PWR6-NEXT: rldimi 6, 6, 32, 0
25132 ; PWR6-NEXT: sub 4, 4, 8
25133 ; PWR6-NEXT: and 8, 3, 6
25134 ; PWR6-NEXT: rotldi 3, 3, 62
25135 ; PWR6-NEXT: and 3, 3, 6
25136 ; PWR6-NEXT: lis 7, 3855
25137 ; PWR6-NEXT: and 5, 4, 6
25138 ; PWR6-NEXT: rotldi 4, 4, 62
25139 ; PWR6-NEXT: add 3, 8, 3
25140 ; PWR6-NEXT: lis 9, 257
25141 ; PWR6-NEXT: ori 7, 7, 3855
25142 ; PWR6-NEXT: and 4, 4, 6
25143 ; PWR6-NEXT: rldicl 6, 3, 60, 4
25144 ; PWR6-NEXT: ori 9, 9, 257
25145 ; PWR6-NEXT: rldimi 7, 7, 32, 0
25146 ; PWR6-NEXT: add 4, 5, 4
25147 ; PWR6-NEXT: add 3, 3, 6
25148 ; PWR6-NEXT: rldimi 9, 9, 32, 0
25149 ; PWR6-NEXT: rldicl 5, 4, 60, 4
25150 ; PWR6-NEXT: and 3, 3, 7
25151 ; PWR6-NEXT: add 4, 4, 5
25152 ; PWR6-NEXT: mulld 3, 3, 9
25153 ; PWR6-NEXT: and 4, 4, 7
25154 ; PWR6-NEXT: rldicl 3, 3, 8, 56
25155 ; PWR6-NEXT: li 5, 51
25156 ; PWR6-NEXT: mulld 4, 4, 9
25157 ; PWR6-NEXT: subc 6, 3, 5
25158 ; PWR6-NEXT: rldicl 4, 4, 8, 56
25159 ; PWR6-NEXT: subfe 3, 3, 3
25160 ; PWR6-NEXT: subc 5, 4, 5
25161 ; PWR6-NEXT: subfe 4, 4, 4
25164 ; PWR7-LABEL: ult_51_v2i64:
25166 ; PWR7-NEXT: addi 3, 1, -32
25167 ; PWR7-NEXT: li 5, 0
25168 ; PWR7-NEXT: li 6, -1
25169 ; PWR7-NEXT: stxvd2x 34, 0, 3
25170 ; PWR7-NEXT: ld 3, -24(1)
25171 ; PWR7-NEXT: ld 4, -32(1)
25172 ; PWR7-NEXT: popcntd 3, 3
25173 ; PWR7-NEXT: popcntd 4, 4
25174 ; PWR7-NEXT: cmpldi 3, 51
25175 ; PWR7-NEXT: isellt 3, 6, 5
25176 ; PWR7-NEXT: cmpldi 4, 51
25177 ; PWR7-NEXT: isellt 4, 6, 5
25178 ; PWR7-NEXT: std 3, -8(1)
25179 ; PWR7-NEXT: addi 3, 1, -16
25180 ; PWR7-NEXT: std 4, -16(1)
25181 ; PWR7-NEXT: lxvd2x 34, 0, 3
25184 ; PWR8-LABEL: ult_51_v2i64:
25186 ; PWR8-NEXT: addis 3, 2, .LCPI199_0@toc@ha
25187 ; PWR8-NEXT: vpopcntd 2, 2
25188 ; PWR8-NEXT: addi 3, 3, .LCPI199_0@toc@l
25189 ; PWR8-NEXT: lxvd2x 35, 0, 3
25190 ; PWR8-NEXT: vcmpgtud 2, 3, 2
25193 ; PWR9-LABEL: ult_51_v2i64:
25195 ; PWR9-NEXT: addis 3, 2, .LCPI199_0@toc@ha
25196 ; PWR9-NEXT: vpopcntd 2, 2
25197 ; PWR9-NEXT: addi 3, 3, .LCPI199_0@toc@l
25198 ; PWR9-NEXT: lxv 35, 0(3)
25199 ; PWR9-NEXT: vcmpgtud 2, 3, 2
25201 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
25202 %3 = icmp ult <2 x i64> %2, <i64 51, i64 51>
25203 %4 = sext <2 x i1> %3 to <2 x i64>
25207 define <2 x i64> @ugt_51_v2i64(<2 x i64> %0) {
25208 ; PWR5-LABEL: ugt_51_v2i64:
25210 ; PWR5-NEXT: lis 5, 21845
25211 ; PWR5-NEXT: lis 6, 13107
25212 ; PWR5-NEXT: ori 5, 5, 21845
25213 ; PWR5-NEXT: rotldi 8, 4, 63
25214 ; PWR5-NEXT: rotldi 9, 3, 63
25215 ; PWR5-NEXT: rldimi 5, 5, 32, 0
25216 ; PWR5-NEXT: and 8, 8, 5
25217 ; PWR5-NEXT: and 5, 9, 5
25218 ; PWR5-NEXT: ori 6, 6, 13107
25219 ; PWR5-NEXT: sub 3, 3, 5
25220 ; PWR5-NEXT: rldimi 6, 6, 32, 0
25221 ; PWR5-NEXT: sub 4, 4, 8
25222 ; PWR5-NEXT: and 8, 3, 6
25223 ; PWR5-NEXT: rotldi 3, 3, 62
25224 ; PWR5-NEXT: and 3, 3, 6
25225 ; PWR5-NEXT: lis 7, 3855
25226 ; PWR5-NEXT: and 5, 4, 6
25227 ; PWR5-NEXT: rotldi 4, 4, 62
25228 ; PWR5-NEXT: add 3, 8, 3
25229 ; PWR5-NEXT: lis 9, 257
25230 ; PWR5-NEXT: ori 7, 7, 3855
25231 ; PWR5-NEXT: and 4, 4, 6
25232 ; PWR5-NEXT: rldicl 6, 3, 60, 4
25233 ; PWR5-NEXT: ori 9, 9, 257
25234 ; PWR5-NEXT: rldimi 7, 7, 32, 0
25235 ; PWR5-NEXT: add 4, 5, 4
25236 ; PWR5-NEXT: add 3, 3, 6
25237 ; PWR5-NEXT: rldimi 9, 9, 32, 0
25238 ; PWR5-NEXT: rldicl 5, 4, 60, 4
25239 ; PWR5-NEXT: and 3, 3, 7
25240 ; PWR5-NEXT: add 4, 4, 5
25241 ; PWR5-NEXT: mulld 3, 3, 9
25242 ; PWR5-NEXT: and 4, 4, 7
25243 ; PWR5-NEXT: rldicl 3, 3, 8, 56
25244 ; PWR5-NEXT: mulld 4, 4, 9
25245 ; PWR5-NEXT: li 5, 51
25246 ; PWR5-NEXT: subfic 3, 3, 51
25247 ; PWR5-NEXT: rldicl 4, 4, 8, 56
25248 ; PWR5-NEXT: subfe 3, 5, 5
25249 ; PWR5-NEXT: subfic 4, 4, 51
25250 ; PWR5-NEXT: subfe 4, 5, 5
25253 ; PWR6-LABEL: ugt_51_v2i64:
25255 ; PWR6-NEXT: lis 5, 21845
25256 ; PWR6-NEXT: lis 6, 13107
25257 ; PWR6-NEXT: ori 5, 5, 21845
25258 ; PWR6-NEXT: rotldi 8, 4, 63
25259 ; PWR6-NEXT: rotldi 9, 3, 63
25260 ; PWR6-NEXT: rldimi 5, 5, 32, 0
25261 ; PWR6-NEXT: and 8, 8, 5
25262 ; PWR6-NEXT: and 5, 9, 5
25263 ; PWR6-NEXT: ori 6, 6, 13107
25264 ; PWR6-NEXT: sub 3, 3, 5
25265 ; PWR6-NEXT: rldimi 6, 6, 32, 0
25266 ; PWR6-NEXT: sub 4, 4, 8
25267 ; PWR6-NEXT: and 8, 3, 6
25268 ; PWR6-NEXT: rotldi 3, 3, 62
25269 ; PWR6-NEXT: and 3, 3, 6
25270 ; PWR6-NEXT: lis 7, 3855
25271 ; PWR6-NEXT: and 5, 4, 6
25272 ; PWR6-NEXT: rotldi 4, 4, 62
25273 ; PWR6-NEXT: add 3, 8, 3
25274 ; PWR6-NEXT: lis 9, 257
25275 ; PWR6-NEXT: ori 7, 7, 3855
25276 ; PWR6-NEXT: and 4, 4, 6
25277 ; PWR6-NEXT: rldicl 6, 3, 60, 4
25278 ; PWR6-NEXT: ori 9, 9, 257
25279 ; PWR6-NEXT: rldimi 7, 7, 32, 0
25280 ; PWR6-NEXT: add 4, 5, 4
25281 ; PWR6-NEXT: add 3, 3, 6
25282 ; PWR6-NEXT: rldimi 9, 9, 32, 0
25283 ; PWR6-NEXT: rldicl 5, 4, 60, 4
25284 ; PWR6-NEXT: and 3, 3, 7
25285 ; PWR6-NEXT: add 4, 4, 5
25286 ; PWR6-NEXT: mulld 3, 3, 9
25287 ; PWR6-NEXT: and 4, 4, 7
25288 ; PWR6-NEXT: rldicl 3, 3, 8, 56
25289 ; PWR6-NEXT: mulld 4, 4, 9
25290 ; PWR6-NEXT: li 5, 51
25291 ; PWR6-NEXT: subfic 3, 3, 51
25292 ; PWR6-NEXT: rldicl 4, 4, 8, 56
25293 ; PWR6-NEXT: subfe 3, 5, 5
25294 ; PWR6-NEXT: subfic 4, 4, 51
25295 ; PWR6-NEXT: subfe 4, 5, 5
25298 ; PWR7-LABEL: ugt_51_v2i64:
25300 ; PWR7-NEXT: addi 3, 1, -32
25301 ; PWR7-NEXT: li 5, 0
25302 ; PWR7-NEXT: li 6, -1
25303 ; PWR7-NEXT: stxvd2x 34, 0, 3
25304 ; PWR7-NEXT: ld 3, -24(1)
25305 ; PWR7-NEXT: ld 4, -32(1)
25306 ; PWR7-NEXT: popcntd 3, 3
25307 ; PWR7-NEXT: popcntd 4, 4
25308 ; PWR7-NEXT: cmpldi 3, 51
25309 ; PWR7-NEXT: iselgt 3, 6, 5
25310 ; PWR7-NEXT: cmpldi 4, 51
25311 ; PWR7-NEXT: iselgt 4, 6, 5
25312 ; PWR7-NEXT: std 3, -8(1)
25313 ; PWR7-NEXT: addi 3, 1, -16
25314 ; PWR7-NEXT: std 4, -16(1)
25315 ; PWR7-NEXT: lxvd2x 34, 0, 3
25318 ; PWR8-LABEL: ugt_51_v2i64:
25320 ; PWR8-NEXT: addis 3, 2, .LCPI200_0@toc@ha
25321 ; PWR8-NEXT: vpopcntd 2, 2
25322 ; PWR8-NEXT: addi 3, 3, .LCPI200_0@toc@l
25323 ; PWR8-NEXT: lxvd2x 35, 0, 3
25324 ; PWR8-NEXT: vcmpgtud 2, 2, 3
25327 ; PWR9-LABEL: ugt_51_v2i64:
25329 ; PWR9-NEXT: addis 3, 2, .LCPI200_0@toc@ha
25330 ; PWR9-NEXT: vpopcntd 2, 2
25331 ; PWR9-NEXT: addi 3, 3, .LCPI200_0@toc@l
25332 ; PWR9-NEXT: lxv 35, 0(3)
25333 ; PWR9-NEXT: vcmpgtud 2, 2, 3
25335 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
25336 %3 = icmp ugt <2 x i64> %2, <i64 51, i64 51>
25337 %4 = sext <2 x i1> %3 to <2 x i64>
25341 define <2 x i64> @ult_52_v2i64(<2 x i64> %0) {
25342 ; PWR5-LABEL: ult_52_v2i64:
25344 ; PWR5-NEXT: lis 5, 21845
25345 ; PWR5-NEXT: lis 6, 13107
25346 ; PWR5-NEXT: ori 5, 5, 21845
25347 ; PWR5-NEXT: rotldi 8, 4, 63
25348 ; PWR5-NEXT: rotldi 9, 3, 63
25349 ; PWR5-NEXT: rldimi 5, 5, 32, 0
25350 ; PWR5-NEXT: and 8, 8, 5
25351 ; PWR5-NEXT: and 5, 9, 5
25352 ; PWR5-NEXT: ori 6, 6, 13107
25353 ; PWR5-NEXT: sub 3, 3, 5
25354 ; PWR5-NEXT: rldimi 6, 6, 32, 0
25355 ; PWR5-NEXT: sub 4, 4, 8
25356 ; PWR5-NEXT: and 8, 3, 6
25357 ; PWR5-NEXT: rotldi 3, 3, 62
25358 ; PWR5-NEXT: and 3, 3, 6
25359 ; PWR5-NEXT: lis 7, 3855
25360 ; PWR5-NEXT: and 5, 4, 6
25361 ; PWR5-NEXT: rotldi 4, 4, 62
25362 ; PWR5-NEXT: add 3, 8, 3
25363 ; PWR5-NEXT: lis 9, 257
25364 ; PWR5-NEXT: ori 7, 7, 3855
25365 ; PWR5-NEXT: and 4, 4, 6
25366 ; PWR5-NEXT: rldicl 6, 3, 60, 4
25367 ; PWR5-NEXT: ori 9, 9, 257
25368 ; PWR5-NEXT: rldimi 7, 7, 32, 0
25369 ; PWR5-NEXT: add 4, 5, 4
25370 ; PWR5-NEXT: add 3, 3, 6
25371 ; PWR5-NEXT: rldimi 9, 9, 32, 0
25372 ; PWR5-NEXT: rldicl 5, 4, 60, 4
25373 ; PWR5-NEXT: and 3, 3, 7
25374 ; PWR5-NEXT: add 4, 4, 5
25375 ; PWR5-NEXT: mulld 3, 3, 9
25376 ; PWR5-NEXT: and 4, 4, 7
25377 ; PWR5-NEXT: rldicl 3, 3, 8, 56
25378 ; PWR5-NEXT: li 5, 52
25379 ; PWR5-NEXT: mulld 4, 4, 9
25380 ; PWR5-NEXT: subc 6, 3, 5
25381 ; PWR5-NEXT: rldicl 4, 4, 8, 56
25382 ; PWR5-NEXT: subfe 3, 3, 3
25383 ; PWR5-NEXT: subc 5, 4, 5
25384 ; PWR5-NEXT: subfe 4, 4, 4
25387 ; PWR6-LABEL: ult_52_v2i64:
25389 ; PWR6-NEXT: lis 5, 21845
25390 ; PWR6-NEXT: lis 6, 13107
25391 ; PWR6-NEXT: ori 5, 5, 21845
25392 ; PWR6-NEXT: rotldi 8, 4, 63
25393 ; PWR6-NEXT: rotldi 9, 3, 63
25394 ; PWR6-NEXT: rldimi 5, 5, 32, 0
25395 ; PWR6-NEXT: and 8, 8, 5
25396 ; PWR6-NEXT: and 5, 9, 5
25397 ; PWR6-NEXT: ori 6, 6, 13107
25398 ; PWR6-NEXT: sub 3, 3, 5
25399 ; PWR6-NEXT: rldimi 6, 6, 32, 0
25400 ; PWR6-NEXT: sub 4, 4, 8
25401 ; PWR6-NEXT: and 8, 3, 6
25402 ; PWR6-NEXT: rotldi 3, 3, 62
25403 ; PWR6-NEXT: and 3, 3, 6
25404 ; PWR6-NEXT: lis 7, 3855
25405 ; PWR6-NEXT: and 5, 4, 6
25406 ; PWR6-NEXT: rotldi 4, 4, 62
25407 ; PWR6-NEXT: add 3, 8, 3
25408 ; PWR6-NEXT: lis 9, 257
25409 ; PWR6-NEXT: ori 7, 7, 3855
25410 ; PWR6-NEXT: and 4, 4, 6
25411 ; PWR6-NEXT: rldicl 6, 3, 60, 4
25412 ; PWR6-NEXT: ori 9, 9, 257
25413 ; PWR6-NEXT: rldimi 7, 7, 32, 0
25414 ; PWR6-NEXT: add 4, 5, 4
25415 ; PWR6-NEXT: add 3, 3, 6
25416 ; PWR6-NEXT: rldimi 9, 9, 32, 0
25417 ; PWR6-NEXT: rldicl 5, 4, 60, 4
25418 ; PWR6-NEXT: and 3, 3, 7
25419 ; PWR6-NEXT: add 4, 4, 5
25420 ; PWR6-NEXT: mulld 3, 3, 9
25421 ; PWR6-NEXT: and 4, 4, 7
25422 ; PWR6-NEXT: rldicl 3, 3, 8, 56
25423 ; PWR6-NEXT: li 5, 52
25424 ; PWR6-NEXT: mulld 4, 4, 9
25425 ; PWR6-NEXT: subc 6, 3, 5
25426 ; PWR6-NEXT: rldicl 4, 4, 8, 56
25427 ; PWR6-NEXT: subfe 3, 3, 3
25428 ; PWR6-NEXT: subc 5, 4, 5
25429 ; PWR6-NEXT: subfe 4, 4, 4
25432 ; PWR7-LABEL: ult_52_v2i64:
25434 ; PWR7-NEXT: addi 3, 1, -32
25435 ; PWR7-NEXT: li 5, 0
25436 ; PWR7-NEXT: li 6, -1
25437 ; PWR7-NEXT: stxvd2x 34, 0, 3
25438 ; PWR7-NEXT: ld 3, -24(1)
25439 ; PWR7-NEXT: ld 4, -32(1)
25440 ; PWR7-NEXT: popcntd 3, 3
25441 ; PWR7-NEXT: popcntd 4, 4
25442 ; PWR7-NEXT: cmpldi 3, 52
25443 ; PWR7-NEXT: isellt 3, 6, 5
25444 ; PWR7-NEXT: cmpldi 4, 52
25445 ; PWR7-NEXT: isellt 4, 6, 5
25446 ; PWR7-NEXT: std 3, -8(1)
25447 ; PWR7-NEXT: addi 3, 1, -16
25448 ; PWR7-NEXT: std 4, -16(1)
25449 ; PWR7-NEXT: lxvd2x 34, 0, 3
25452 ; PWR8-LABEL: ult_52_v2i64:
25454 ; PWR8-NEXT: addis 3, 2, .LCPI201_0@toc@ha
25455 ; PWR8-NEXT: vpopcntd 2, 2
25456 ; PWR8-NEXT: addi 3, 3, .LCPI201_0@toc@l
25457 ; PWR8-NEXT: lxvd2x 35, 0, 3
25458 ; PWR8-NEXT: vcmpgtud 2, 3, 2
25461 ; PWR9-LABEL: ult_52_v2i64:
25463 ; PWR9-NEXT: addis 3, 2, .LCPI201_0@toc@ha
25464 ; PWR9-NEXT: vpopcntd 2, 2
25465 ; PWR9-NEXT: addi 3, 3, .LCPI201_0@toc@l
25466 ; PWR9-NEXT: lxv 35, 0(3)
25467 ; PWR9-NEXT: vcmpgtud 2, 3, 2
25469 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
25470 %3 = icmp ult <2 x i64> %2, <i64 52, i64 52>
25471 %4 = sext <2 x i1> %3 to <2 x i64>
25475 define <2 x i64> @ugt_52_v2i64(<2 x i64> %0) {
25476 ; PWR5-LABEL: ugt_52_v2i64:
25478 ; PWR5-NEXT: lis 5, 21845
25479 ; PWR5-NEXT: lis 6, 13107
25480 ; PWR5-NEXT: ori 5, 5, 21845
25481 ; PWR5-NEXT: rotldi 8, 4, 63
25482 ; PWR5-NEXT: rotldi 9, 3, 63
25483 ; PWR5-NEXT: rldimi 5, 5, 32, 0
25484 ; PWR5-NEXT: and 8, 8, 5
25485 ; PWR5-NEXT: and 5, 9, 5
25486 ; PWR5-NEXT: ori 6, 6, 13107
25487 ; PWR5-NEXT: sub 3, 3, 5
25488 ; PWR5-NEXT: rldimi 6, 6, 32, 0
25489 ; PWR5-NEXT: sub 4, 4, 8
25490 ; PWR5-NEXT: and 8, 3, 6
25491 ; PWR5-NEXT: rotldi 3, 3, 62
25492 ; PWR5-NEXT: and 3, 3, 6
25493 ; PWR5-NEXT: lis 7, 3855
25494 ; PWR5-NEXT: and 5, 4, 6
25495 ; PWR5-NEXT: rotldi 4, 4, 62
25496 ; PWR5-NEXT: add 3, 8, 3
25497 ; PWR5-NEXT: lis 9, 257
25498 ; PWR5-NEXT: ori 7, 7, 3855
25499 ; PWR5-NEXT: and 4, 4, 6
25500 ; PWR5-NEXT: rldicl 6, 3, 60, 4
25501 ; PWR5-NEXT: ori 9, 9, 257
25502 ; PWR5-NEXT: rldimi 7, 7, 32, 0
25503 ; PWR5-NEXT: add 4, 5, 4
25504 ; PWR5-NEXT: add 3, 3, 6
25505 ; PWR5-NEXT: rldimi 9, 9, 32, 0
25506 ; PWR5-NEXT: rldicl 5, 4, 60, 4
25507 ; PWR5-NEXT: and 3, 3, 7
25508 ; PWR5-NEXT: add 4, 4, 5
25509 ; PWR5-NEXT: mulld 3, 3, 9
25510 ; PWR5-NEXT: and 4, 4, 7
25511 ; PWR5-NEXT: rldicl 3, 3, 8, 56
25512 ; PWR5-NEXT: mulld 4, 4, 9
25513 ; PWR5-NEXT: li 5, 52
25514 ; PWR5-NEXT: subfic 3, 3, 52
25515 ; PWR5-NEXT: rldicl 4, 4, 8, 56
25516 ; PWR5-NEXT: subfe 3, 5, 5
25517 ; PWR5-NEXT: subfic 4, 4, 52
25518 ; PWR5-NEXT: subfe 4, 5, 5
25521 ; PWR6-LABEL: ugt_52_v2i64:
25523 ; PWR6-NEXT: lis 5, 21845
25524 ; PWR6-NEXT: lis 6, 13107
25525 ; PWR6-NEXT: ori 5, 5, 21845
25526 ; PWR6-NEXT: rotldi 8, 4, 63
25527 ; PWR6-NEXT: rotldi 9, 3, 63
25528 ; PWR6-NEXT: rldimi 5, 5, 32, 0
25529 ; PWR6-NEXT: and 8, 8, 5
25530 ; PWR6-NEXT: and 5, 9, 5
25531 ; PWR6-NEXT: ori 6, 6, 13107
25532 ; PWR6-NEXT: sub 3, 3, 5
25533 ; PWR6-NEXT: rldimi 6, 6, 32, 0
25534 ; PWR6-NEXT: sub 4, 4, 8
25535 ; PWR6-NEXT: and 8, 3, 6
25536 ; PWR6-NEXT: rotldi 3, 3, 62
25537 ; PWR6-NEXT: and 3, 3, 6
25538 ; PWR6-NEXT: lis 7, 3855
25539 ; PWR6-NEXT: and 5, 4, 6
25540 ; PWR6-NEXT: rotldi 4, 4, 62
25541 ; PWR6-NEXT: add 3, 8, 3
25542 ; PWR6-NEXT: lis 9, 257
25543 ; PWR6-NEXT: ori 7, 7, 3855
25544 ; PWR6-NEXT: and 4, 4, 6
25545 ; PWR6-NEXT: rldicl 6, 3, 60, 4
25546 ; PWR6-NEXT: ori 9, 9, 257
25547 ; PWR6-NEXT: rldimi 7, 7, 32, 0
25548 ; PWR6-NEXT: add 4, 5, 4
25549 ; PWR6-NEXT: add 3, 3, 6
25550 ; PWR6-NEXT: rldimi 9, 9, 32, 0
25551 ; PWR6-NEXT: rldicl 5, 4, 60, 4
25552 ; PWR6-NEXT: and 3, 3, 7
25553 ; PWR6-NEXT: add 4, 4, 5
25554 ; PWR6-NEXT: mulld 3, 3, 9
25555 ; PWR6-NEXT: and 4, 4, 7
25556 ; PWR6-NEXT: rldicl 3, 3, 8, 56
25557 ; PWR6-NEXT: mulld 4, 4, 9
25558 ; PWR6-NEXT: li 5, 52
25559 ; PWR6-NEXT: subfic 3, 3, 52
25560 ; PWR6-NEXT: rldicl 4, 4, 8, 56
25561 ; PWR6-NEXT: subfe 3, 5, 5
25562 ; PWR6-NEXT: subfic 4, 4, 52
25563 ; PWR6-NEXT: subfe 4, 5, 5
25566 ; PWR7-LABEL: ugt_52_v2i64:
25568 ; PWR7-NEXT: addi 3, 1, -32
25569 ; PWR7-NEXT: li 5, 0
25570 ; PWR7-NEXT: li 6, -1
25571 ; PWR7-NEXT: stxvd2x 34, 0, 3
25572 ; PWR7-NEXT: ld 3, -24(1)
25573 ; PWR7-NEXT: ld 4, -32(1)
25574 ; PWR7-NEXT: popcntd 3, 3
25575 ; PWR7-NEXT: popcntd 4, 4
25576 ; PWR7-NEXT: cmpldi 3, 52
25577 ; PWR7-NEXT: iselgt 3, 6, 5
25578 ; PWR7-NEXT: cmpldi 4, 52
25579 ; PWR7-NEXT: iselgt 4, 6, 5
25580 ; PWR7-NEXT: std 3, -8(1)
25581 ; PWR7-NEXT: addi 3, 1, -16
25582 ; PWR7-NEXT: std 4, -16(1)
25583 ; PWR7-NEXT: lxvd2x 34, 0, 3
25586 ; PWR8-LABEL: ugt_52_v2i64:
25588 ; PWR8-NEXT: addis 3, 2, .LCPI202_0@toc@ha
25589 ; PWR8-NEXT: vpopcntd 2, 2
25590 ; PWR8-NEXT: addi 3, 3, .LCPI202_0@toc@l
25591 ; PWR8-NEXT: lxvd2x 35, 0, 3
25592 ; PWR8-NEXT: vcmpgtud 2, 2, 3
25595 ; PWR9-LABEL: ugt_52_v2i64:
25597 ; PWR9-NEXT: addis 3, 2, .LCPI202_0@toc@ha
25598 ; PWR9-NEXT: vpopcntd 2, 2
25599 ; PWR9-NEXT: addi 3, 3, .LCPI202_0@toc@l
25600 ; PWR9-NEXT: lxv 35, 0(3)
25601 ; PWR9-NEXT: vcmpgtud 2, 2, 3
25603 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
25604 %3 = icmp ugt <2 x i64> %2, <i64 52, i64 52>
25605 %4 = sext <2 x i1> %3 to <2 x i64>
25609 define <2 x i64> @ult_53_v2i64(<2 x i64> %0) {
25610 ; PWR5-LABEL: ult_53_v2i64:
25612 ; PWR5-NEXT: lis 5, 21845
25613 ; PWR5-NEXT: lis 6, 13107
25614 ; PWR5-NEXT: ori 5, 5, 21845
25615 ; PWR5-NEXT: rotldi 8, 4, 63
25616 ; PWR5-NEXT: rotldi 9, 3, 63
25617 ; PWR5-NEXT: rldimi 5, 5, 32, 0
25618 ; PWR5-NEXT: and 8, 8, 5
25619 ; PWR5-NEXT: and 5, 9, 5
25620 ; PWR5-NEXT: ori 6, 6, 13107
25621 ; PWR5-NEXT: sub 3, 3, 5
25622 ; PWR5-NEXT: rldimi 6, 6, 32, 0
25623 ; PWR5-NEXT: sub 4, 4, 8
25624 ; PWR5-NEXT: and 8, 3, 6
25625 ; PWR5-NEXT: rotldi 3, 3, 62
25626 ; PWR5-NEXT: and 3, 3, 6
25627 ; PWR5-NEXT: lis 7, 3855
25628 ; PWR5-NEXT: and 5, 4, 6
25629 ; PWR5-NEXT: rotldi 4, 4, 62
25630 ; PWR5-NEXT: add 3, 8, 3
25631 ; PWR5-NEXT: lis 9, 257
25632 ; PWR5-NEXT: ori 7, 7, 3855
25633 ; PWR5-NEXT: and 4, 4, 6
25634 ; PWR5-NEXT: rldicl 6, 3, 60, 4
25635 ; PWR5-NEXT: ori 9, 9, 257
25636 ; PWR5-NEXT: rldimi 7, 7, 32, 0
25637 ; PWR5-NEXT: add 4, 5, 4
25638 ; PWR5-NEXT: add 3, 3, 6
25639 ; PWR5-NEXT: rldimi 9, 9, 32, 0
25640 ; PWR5-NEXT: rldicl 5, 4, 60, 4
25641 ; PWR5-NEXT: and 3, 3, 7
25642 ; PWR5-NEXT: add 4, 4, 5
25643 ; PWR5-NEXT: mulld 3, 3, 9
25644 ; PWR5-NEXT: and 4, 4, 7
25645 ; PWR5-NEXT: rldicl 3, 3, 8, 56
25646 ; PWR5-NEXT: li 5, 53
25647 ; PWR5-NEXT: mulld 4, 4, 9
25648 ; PWR5-NEXT: subc 6, 3, 5
25649 ; PWR5-NEXT: rldicl 4, 4, 8, 56
25650 ; PWR5-NEXT: subfe 3, 3, 3
25651 ; PWR5-NEXT: subc 5, 4, 5
25652 ; PWR5-NEXT: subfe 4, 4, 4
25655 ; PWR6-LABEL: ult_53_v2i64:
25657 ; PWR6-NEXT: lis 5, 21845
25658 ; PWR6-NEXT: lis 6, 13107
25659 ; PWR6-NEXT: ori 5, 5, 21845
25660 ; PWR6-NEXT: rotldi 8, 4, 63
25661 ; PWR6-NEXT: rotldi 9, 3, 63
25662 ; PWR6-NEXT: rldimi 5, 5, 32, 0
25663 ; PWR6-NEXT: and 8, 8, 5
25664 ; PWR6-NEXT: and 5, 9, 5
25665 ; PWR6-NEXT: ori 6, 6, 13107
25666 ; PWR6-NEXT: sub 3, 3, 5
25667 ; PWR6-NEXT: rldimi 6, 6, 32, 0
25668 ; PWR6-NEXT: sub 4, 4, 8
25669 ; PWR6-NEXT: and 8, 3, 6
25670 ; PWR6-NEXT: rotldi 3, 3, 62
25671 ; PWR6-NEXT: and 3, 3, 6
25672 ; PWR6-NEXT: lis 7, 3855
25673 ; PWR6-NEXT: and 5, 4, 6
25674 ; PWR6-NEXT: rotldi 4, 4, 62
25675 ; PWR6-NEXT: add 3, 8, 3
25676 ; PWR6-NEXT: lis 9, 257
25677 ; PWR6-NEXT: ori 7, 7, 3855
25678 ; PWR6-NEXT: and 4, 4, 6
25679 ; PWR6-NEXT: rldicl 6, 3, 60, 4
25680 ; PWR6-NEXT: ori 9, 9, 257
25681 ; PWR6-NEXT: rldimi 7, 7, 32, 0
25682 ; PWR6-NEXT: add 4, 5, 4
25683 ; PWR6-NEXT: add 3, 3, 6
25684 ; PWR6-NEXT: rldimi 9, 9, 32, 0
25685 ; PWR6-NEXT: rldicl 5, 4, 60, 4
25686 ; PWR6-NEXT: and 3, 3, 7
25687 ; PWR6-NEXT: add 4, 4, 5
25688 ; PWR6-NEXT: mulld 3, 3, 9
25689 ; PWR6-NEXT: and 4, 4, 7
25690 ; PWR6-NEXT: rldicl 3, 3, 8, 56
25691 ; PWR6-NEXT: li 5, 53
25692 ; PWR6-NEXT: mulld 4, 4, 9
25693 ; PWR6-NEXT: subc 6, 3, 5
25694 ; PWR6-NEXT: rldicl 4, 4, 8, 56
25695 ; PWR6-NEXT: subfe 3, 3, 3
25696 ; PWR6-NEXT: subc 5, 4, 5
25697 ; PWR6-NEXT: subfe 4, 4, 4
25700 ; PWR7-LABEL: ult_53_v2i64:
25702 ; PWR7-NEXT: addi 3, 1, -32
25703 ; PWR7-NEXT: li 5, 0
25704 ; PWR7-NEXT: li 6, -1
25705 ; PWR7-NEXT: stxvd2x 34, 0, 3
25706 ; PWR7-NEXT: ld 3, -24(1)
25707 ; PWR7-NEXT: ld 4, -32(1)
25708 ; PWR7-NEXT: popcntd 3, 3
25709 ; PWR7-NEXT: popcntd 4, 4
25710 ; PWR7-NEXT: cmpldi 3, 53
25711 ; PWR7-NEXT: isellt 3, 6, 5
25712 ; PWR7-NEXT: cmpldi 4, 53
25713 ; PWR7-NEXT: isellt 4, 6, 5
25714 ; PWR7-NEXT: std 3, -8(1)
25715 ; PWR7-NEXT: addi 3, 1, -16
25716 ; PWR7-NEXT: std 4, -16(1)
25717 ; PWR7-NEXT: lxvd2x 34, 0, 3
25720 ; PWR8-LABEL: ult_53_v2i64:
25722 ; PWR8-NEXT: addis 3, 2, .LCPI203_0@toc@ha
25723 ; PWR8-NEXT: vpopcntd 2, 2
25724 ; PWR8-NEXT: addi 3, 3, .LCPI203_0@toc@l
25725 ; PWR8-NEXT: lxvd2x 35, 0, 3
25726 ; PWR8-NEXT: vcmpgtud 2, 3, 2
25729 ; PWR9-LABEL: ult_53_v2i64:
25731 ; PWR9-NEXT: addis 3, 2, .LCPI203_0@toc@ha
25732 ; PWR9-NEXT: vpopcntd 2, 2
25733 ; PWR9-NEXT: addi 3, 3, .LCPI203_0@toc@l
25734 ; PWR9-NEXT: lxv 35, 0(3)
25735 ; PWR9-NEXT: vcmpgtud 2, 3, 2
25737 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
25738 %3 = icmp ult <2 x i64> %2, <i64 53, i64 53>
25739 %4 = sext <2 x i1> %3 to <2 x i64>
25743 define <2 x i64> @ugt_53_v2i64(<2 x i64> %0) {
25744 ; PWR5-LABEL: ugt_53_v2i64:
25746 ; PWR5-NEXT: lis 5, 21845
25747 ; PWR5-NEXT: lis 6, 13107
25748 ; PWR5-NEXT: ori 5, 5, 21845
25749 ; PWR5-NEXT: rotldi 8, 4, 63
25750 ; PWR5-NEXT: rotldi 9, 3, 63
25751 ; PWR5-NEXT: rldimi 5, 5, 32, 0
25752 ; PWR5-NEXT: and 8, 8, 5
25753 ; PWR5-NEXT: and 5, 9, 5
25754 ; PWR5-NEXT: ori 6, 6, 13107
25755 ; PWR5-NEXT: sub 3, 3, 5
25756 ; PWR5-NEXT: rldimi 6, 6, 32, 0
25757 ; PWR5-NEXT: sub 4, 4, 8
25758 ; PWR5-NEXT: and 8, 3, 6
25759 ; PWR5-NEXT: rotldi 3, 3, 62
25760 ; PWR5-NEXT: and 3, 3, 6
25761 ; PWR5-NEXT: lis 7, 3855
25762 ; PWR5-NEXT: and 5, 4, 6
25763 ; PWR5-NEXT: rotldi 4, 4, 62
25764 ; PWR5-NEXT: add 3, 8, 3
25765 ; PWR5-NEXT: lis 9, 257
25766 ; PWR5-NEXT: ori 7, 7, 3855
25767 ; PWR5-NEXT: and 4, 4, 6
25768 ; PWR5-NEXT: rldicl 6, 3, 60, 4
25769 ; PWR5-NEXT: ori 9, 9, 257
25770 ; PWR5-NEXT: rldimi 7, 7, 32, 0
25771 ; PWR5-NEXT: add 4, 5, 4
25772 ; PWR5-NEXT: add 3, 3, 6
25773 ; PWR5-NEXT: rldimi 9, 9, 32, 0
25774 ; PWR5-NEXT: rldicl 5, 4, 60, 4
25775 ; PWR5-NEXT: and 3, 3, 7
25776 ; PWR5-NEXT: add 4, 4, 5
25777 ; PWR5-NEXT: mulld 3, 3, 9
25778 ; PWR5-NEXT: and 4, 4, 7
25779 ; PWR5-NEXT: rldicl 3, 3, 8, 56
25780 ; PWR5-NEXT: mulld 4, 4, 9
25781 ; PWR5-NEXT: li 5, 53
25782 ; PWR5-NEXT: subfic 3, 3, 53
25783 ; PWR5-NEXT: rldicl 4, 4, 8, 56
25784 ; PWR5-NEXT: subfe 3, 5, 5
25785 ; PWR5-NEXT: subfic 4, 4, 53
25786 ; PWR5-NEXT: subfe 4, 5, 5
25789 ; PWR6-LABEL: ugt_53_v2i64:
25791 ; PWR6-NEXT: lis 5, 21845
25792 ; PWR6-NEXT: lis 6, 13107
25793 ; PWR6-NEXT: ori 5, 5, 21845
25794 ; PWR6-NEXT: rotldi 8, 4, 63
25795 ; PWR6-NEXT: rotldi 9, 3, 63
25796 ; PWR6-NEXT: rldimi 5, 5, 32, 0
25797 ; PWR6-NEXT: and 8, 8, 5
25798 ; PWR6-NEXT: and 5, 9, 5
25799 ; PWR6-NEXT: ori 6, 6, 13107
25800 ; PWR6-NEXT: sub 3, 3, 5
25801 ; PWR6-NEXT: rldimi 6, 6, 32, 0
25802 ; PWR6-NEXT: sub 4, 4, 8
25803 ; PWR6-NEXT: and 8, 3, 6
25804 ; PWR6-NEXT: rotldi 3, 3, 62
25805 ; PWR6-NEXT: and 3, 3, 6
25806 ; PWR6-NEXT: lis 7, 3855
25807 ; PWR6-NEXT: and 5, 4, 6
25808 ; PWR6-NEXT: rotldi 4, 4, 62
25809 ; PWR6-NEXT: add 3, 8, 3
25810 ; PWR6-NEXT: lis 9, 257
25811 ; PWR6-NEXT: ori 7, 7, 3855
25812 ; PWR6-NEXT: and 4, 4, 6
25813 ; PWR6-NEXT: rldicl 6, 3, 60, 4
25814 ; PWR6-NEXT: ori 9, 9, 257
25815 ; PWR6-NEXT: rldimi 7, 7, 32, 0
25816 ; PWR6-NEXT: add 4, 5, 4
25817 ; PWR6-NEXT: add 3, 3, 6
25818 ; PWR6-NEXT: rldimi 9, 9, 32, 0
25819 ; PWR6-NEXT: rldicl 5, 4, 60, 4
25820 ; PWR6-NEXT: and 3, 3, 7
25821 ; PWR6-NEXT: add 4, 4, 5
25822 ; PWR6-NEXT: mulld 3, 3, 9
25823 ; PWR6-NEXT: and 4, 4, 7
25824 ; PWR6-NEXT: rldicl 3, 3, 8, 56
25825 ; PWR6-NEXT: mulld 4, 4, 9
25826 ; PWR6-NEXT: li 5, 53
25827 ; PWR6-NEXT: subfic 3, 3, 53
25828 ; PWR6-NEXT: rldicl 4, 4, 8, 56
25829 ; PWR6-NEXT: subfe 3, 5, 5
25830 ; PWR6-NEXT: subfic 4, 4, 53
25831 ; PWR6-NEXT: subfe 4, 5, 5
25834 ; PWR7-LABEL: ugt_53_v2i64:
25836 ; PWR7-NEXT: addi 3, 1, -32
25837 ; PWR7-NEXT: li 5, 0
25838 ; PWR7-NEXT: li 6, -1
25839 ; PWR7-NEXT: stxvd2x 34, 0, 3
25840 ; PWR7-NEXT: ld 3, -24(1)
25841 ; PWR7-NEXT: ld 4, -32(1)
25842 ; PWR7-NEXT: popcntd 3, 3
25843 ; PWR7-NEXT: popcntd 4, 4
25844 ; PWR7-NEXT: cmpldi 3, 53
25845 ; PWR7-NEXT: iselgt 3, 6, 5
25846 ; PWR7-NEXT: cmpldi 4, 53
25847 ; PWR7-NEXT: iselgt 4, 6, 5
25848 ; PWR7-NEXT: std 3, -8(1)
25849 ; PWR7-NEXT: addi 3, 1, -16
25850 ; PWR7-NEXT: std 4, -16(1)
25851 ; PWR7-NEXT: lxvd2x 34, 0, 3
25854 ; PWR8-LABEL: ugt_53_v2i64:
25856 ; PWR8-NEXT: addis 3, 2, .LCPI204_0@toc@ha
25857 ; PWR8-NEXT: vpopcntd 2, 2
25858 ; PWR8-NEXT: addi 3, 3, .LCPI204_0@toc@l
25859 ; PWR8-NEXT: lxvd2x 35, 0, 3
25860 ; PWR8-NEXT: vcmpgtud 2, 2, 3
25863 ; PWR9-LABEL: ugt_53_v2i64:
25865 ; PWR9-NEXT: addis 3, 2, .LCPI204_0@toc@ha
25866 ; PWR9-NEXT: vpopcntd 2, 2
25867 ; PWR9-NEXT: addi 3, 3, .LCPI204_0@toc@l
25868 ; PWR9-NEXT: lxv 35, 0(3)
25869 ; PWR9-NEXT: vcmpgtud 2, 2, 3
25871 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
25872 %3 = icmp ugt <2 x i64> %2, <i64 53, i64 53>
25873 %4 = sext <2 x i1> %3 to <2 x i64>
25877 define <2 x i64> @ult_54_v2i64(<2 x i64> %0) {
25878 ; PWR5-LABEL: ult_54_v2i64:
25880 ; PWR5-NEXT: lis 5, 21845
25881 ; PWR5-NEXT: lis 6, 13107
25882 ; PWR5-NEXT: ori 5, 5, 21845
25883 ; PWR5-NEXT: rotldi 8, 4, 63
25884 ; PWR5-NEXT: rotldi 9, 3, 63
25885 ; PWR5-NEXT: rldimi 5, 5, 32, 0
25886 ; PWR5-NEXT: and 8, 8, 5
25887 ; PWR5-NEXT: and 5, 9, 5
25888 ; PWR5-NEXT: ori 6, 6, 13107
25889 ; PWR5-NEXT: sub 3, 3, 5
25890 ; PWR5-NEXT: rldimi 6, 6, 32, 0
25891 ; PWR5-NEXT: sub 4, 4, 8
25892 ; PWR5-NEXT: and 8, 3, 6
25893 ; PWR5-NEXT: rotldi 3, 3, 62
25894 ; PWR5-NEXT: and 3, 3, 6
25895 ; PWR5-NEXT: lis 7, 3855
25896 ; PWR5-NEXT: and 5, 4, 6
25897 ; PWR5-NEXT: rotldi 4, 4, 62
25898 ; PWR5-NEXT: add 3, 8, 3
25899 ; PWR5-NEXT: lis 9, 257
25900 ; PWR5-NEXT: ori 7, 7, 3855
25901 ; PWR5-NEXT: and 4, 4, 6
25902 ; PWR5-NEXT: rldicl 6, 3, 60, 4
25903 ; PWR5-NEXT: ori 9, 9, 257
25904 ; PWR5-NEXT: rldimi 7, 7, 32, 0
25905 ; PWR5-NEXT: add 4, 5, 4
25906 ; PWR5-NEXT: add 3, 3, 6
25907 ; PWR5-NEXT: rldimi 9, 9, 32, 0
25908 ; PWR5-NEXT: rldicl 5, 4, 60, 4
25909 ; PWR5-NEXT: and 3, 3, 7
25910 ; PWR5-NEXT: add 4, 4, 5
25911 ; PWR5-NEXT: mulld 3, 3, 9
25912 ; PWR5-NEXT: and 4, 4, 7
25913 ; PWR5-NEXT: rldicl 3, 3, 8, 56
25914 ; PWR5-NEXT: li 5, 54
25915 ; PWR5-NEXT: mulld 4, 4, 9
25916 ; PWR5-NEXT: subc 6, 3, 5
25917 ; PWR5-NEXT: rldicl 4, 4, 8, 56
25918 ; PWR5-NEXT: subfe 3, 3, 3
25919 ; PWR5-NEXT: subc 5, 4, 5
25920 ; PWR5-NEXT: subfe 4, 4, 4
25923 ; PWR6-LABEL: ult_54_v2i64:
25925 ; PWR6-NEXT: lis 5, 21845
25926 ; PWR6-NEXT: lis 6, 13107
25927 ; PWR6-NEXT: ori 5, 5, 21845
25928 ; PWR6-NEXT: rotldi 8, 4, 63
25929 ; PWR6-NEXT: rotldi 9, 3, 63
25930 ; PWR6-NEXT: rldimi 5, 5, 32, 0
25931 ; PWR6-NEXT: and 8, 8, 5
25932 ; PWR6-NEXT: and 5, 9, 5
25933 ; PWR6-NEXT: ori 6, 6, 13107
25934 ; PWR6-NEXT: sub 3, 3, 5
25935 ; PWR6-NEXT: rldimi 6, 6, 32, 0
25936 ; PWR6-NEXT: sub 4, 4, 8
25937 ; PWR6-NEXT: and 8, 3, 6
25938 ; PWR6-NEXT: rotldi 3, 3, 62
25939 ; PWR6-NEXT: and 3, 3, 6
25940 ; PWR6-NEXT: lis 7, 3855
25941 ; PWR6-NEXT: and 5, 4, 6
25942 ; PWR6-NEXT: rotldi 4, 4, 62
25943 ; PWR6-NEXT: add 3, 8, 3
25944 ; PWR6-NEXT: lis 9, 257
25945 ; PWR6-NEXT: ori 7, 7, 3855
25946 ; PWR6-NEXT: and 4, 4, 6
25947 ; PWR6-NEXT: rldicl 6, 3, 60, 4
25948 ; PWR6-NEXT: ori 9, 9, 257
25949 ; PWR6-NEXT: rldimi 7, 7, 32, 0
25950 ; PWR6-NEXT: add 4, 5, 4
25951 ; PWR6-NEXT: add 3, 3, 6
25952 ; PWR6-NEXT: rldimi 9, 9, 32, 0
25953 ; PWR6-NEXT: rldicl 5, 4, 60, 4
25954 ; PWR6-NEXT: and 3, 3, 7
25955 ; PWR6-NEXT: add 4, 4, 5
25956 ; PWR6-NEXT: mulld 3, 3, 9
25957 ; PWR6-NEXT: and 4, 4, 7
25958 ; PWR6-NEXT: rldicl 3, 3, 8, 56
25959 ; PWR6-NEXT: li 5, 54
25960 ; PWR6-NEXT: mulld 4, 4, 9
25961 ; PWR6-NEXT: subc 6, 3, 5
25962 ; PWR6-NEXT: rldicl 4, 4, 8, 56
25963 ; PWR6-NEXT: subfe 3, 3, 3
25964 ; PWR6-NEXT: subc 5, 4, 5
25965 ; PWR6-NEXT: subfe 4, 4, 4
25968 ; PWR7-LABEL: ult_54_v2i64:
25970 ; PWR7-NEXT: addi 3, 1, -32
25971 ; PWR7-NEXT: li 5, 0
25972 ; PWR7-NEXT: li 6, -1
25973 ; PWR7-NEXT: stxvd2x 34, 0, 3
25974 ; PWR7-NEXT: ld 3, -24(1)
25975 ; PWR7-NEXT: ld 4, -32(1)
25976 ; PWR7-NEXT: popcntd 3, 3
25977 ; PWR7-NEXT: popcntd 4, 4
25978 ; PWR7-NEXT: cmpldi 3, 54
25979 ; PWR7-NEXT: isellt 3, 6, 5
25980 ; PWR7-NEXT: cmpldi 4, 54
25981 ; PWR7-NEXT: isellt 4, 6, 5
25982 ; PWR7-NEXT: std 3, -8(1)
25983 ; PWR7-NEXT: addi 3, 1, -16
25984 ; PWR7-NEXT: std 4, -16(1)
25985 ; PWR7-NEXT: lxvd2x 34, 0, 3
25988 ; PWR8-LABEL: ult_54_v2i64:
25990 ; PWR8-NEXT: addis 3, 2, .LCPI205_0@toc@ha
25991 ; PWR8-NEXT: vpopcntd 2, 2
25992 ; PWR8-NEXT: addi 3, 3, .LCPI205_0@toc@l
25993 ; PWR8-NEXT: lxvd2x 35, 0, 3
25994 ; PWR8-NEXT: vcmpgtud 2, 3, 2
25997 ; PWR9-LABEL: ult_54_v2i64:
25999 ; PWR9-NEXT: addis 3, 2, .LCPI205_0@toc@ha
26000 ; PWR9-NEXT: vpopcntd 2, 2
26001 ; PWR9-NEXT: addi 3, 3, .LCPI205_0@toc@l
26002 ; PWR9-NEXT: lxv 35, 0(3)
26003 ; PWR9-NEXT: vcmpgtud 2, 3, 2
26005 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
26006 %3 = icmp ult <2 x i64> %2, <i64 54, i64 54>
26007 %4 = sext <2 x i1> %3 to <2 x i64>
26011 define <2 x i64> @ugt_54_v2i64(<2 x i64> %0) {
26012 ; PWR5-LABEL: ugt_54_v2i64:
26014 ; PWR5-NEXT: lis 5, 21845
26015 ; PWR5-NEXT: lis 6, 13107
26016 ; PWR5-NEXT: ori 5, 5, 21845
26017 ; PWR5-NEXT: rotldi 8, 4, 63
26018 ; PWR5-NEXT: rotldi 9, 3, 63
26019 ; PWR5-NEXT: rldimi 5, 5, 32, 0
26020 ; PWR5-NEXT: and 8, 8, 5
26021 ; PWR5-NEXT: and 5, 9, 5
26022 ; PWR5-NEXT: ori 6, 6, 13107
26023 ; PWR5-NEXT: sub 3, 3, 5
26024 ; PWR5-NEXT: rldimi 6, 6, 32, 0
26025 ; PWR5-NEXT: sub 4, 4, 8
26026 ; PWR5-NEXT: and 8, 3, 6
26027 ; PWR5-NEXT: rotldi 3, 3, 62
26028 ; PWR5-NEXT: and 3, 3, 6
26029 ; PWR5-NEXT: lis 7, 3855
26030 ; PWR5-NEXT: and 5, 4, 6
26031 ; PWR5-NEXT: rotldi 4, 4, 62
26032 ; PWR5-NEXT: add 3, 8, 3
26033 ; PWR5-NEXT: lis 9, 257
26034 ; PWR5-NEXT: ori 7, 7, 3855
26035 ; PWR5-NEXT: and 4, 4, 6
26036 ; PWR5-NEXT: rldicl 6, 3, 60, 4
26037 ; PWR5-NEXT: ori 9, 9, 257
26038 ; PWR5-NEXT: rldimi 7, 7, 32, 0
26039 ; PWR5-NEXT: add 4, 5, 4
26040 ; PWR5-NEXT: add 3, 3, 6
26041 ; PWR5-NEXT: rldimi 9, 9, 32, 0
26042 ; PWR5-NEXT: rldicl 5, 4, 60, 4
26043 ; PWR5-NEXT: and 3, 3, 7
26044 ; PWR5-NEXT: add 4, 4, 5
26045 ; PWR5-NEXT: mulld 3, 3, 9
26046 ; PWR5-NEXT: and 4, 4, 7
26047 ; PWR5-NEXT: rldicl 3, 3, 8, 56
26048 ; PWR5-NEXT: mulld 4, 4, 9
26049 ; PWR5-NEXT: li 5, 54
26050 ; PWR5-NEXT: subfic 3, 3, 54
26051 ; PWR5-NEXT: rldicl 4, 4, 8, 56
26052 ; PWR5-NEXT: subfe 3, 5, 5
26053 ; PWR5-NEXT: subfic 4, 4, 54
26054 ; PWR5-NEXT: subfe 4, 5, 5
26057 ; PWR6-LABEL: ugt_54_v2i64:
26059 ; PWR6-NEXT: lis 5, 21845
26060 ; PWR6-NEXT: lis 6, 13107
26061 ; PWR6-NEXT: ori 5, 5, 21845
26062 ; PWR6-NEXT: rotldi 8, 4, 63
26063 ; PWR6-NEXT: rotldi 9, 3, 63
26064 ; PWR6-NEXT: rldimi 5, 5, 32, 0
26065 ; PWR6-NEXT: and 8, 8, 5
26066 ; PWR6-NEXT: and 5, 9, 5
26067 ; PWR6-NEXT: ori 6, 6, 13107
26068 ; PWR6-NEXT: sub 3, 3, 5
26069 ; PWR6-NEXT: rldimi 6, 6, 32, 0
26070 ; PWR6-NEXT: sub 4, 4, 8
26071 ; PWR6-NEXT: and 8, 3, 6
26072 ; PWR6-NEXT: rotldi 3, 3, 62
26073 ; PWR6-NEXT: and 3, 3, 6
26074 ; PWR6-NEXT: lis 7, 3855
26075 ; PWR6-NEXT: and 5, 4, 6
26076 ; PWR6-NEXT: rotldi 4, 4, 62
26077 ; PWR6-NEXT: add 3, 8, 3
26078 ; PWR6-NEXT: lis 9, 257
26079 ; PWR6-NEXT: ori 7, 7, 3855
26080 ; PWR6-NEXT: and 4, 4, 6
26081 ; PWR6-NEXT: rldicl 6, 3, 60, 4
26082 ; PWR6-NEXT: ori 9, 9, 257
26083 ; PWR6-NEXT: rldimi 7, 7, 32, 0
26084 ; PWR6-NEXT: add 4, 5, 4
26085 ; PWR6-NEXT: add 3, 3, 6
26086 ; PWR6-NEXT: rldimi 9, 9, 32, 0
26087 ; PWR6-NEXT: rldicl 5, 4, 60, 4
26088 ; PWR6-NEXT: and 3, 3, 7
26089 ; PWR6-NEXT: add 4, 4, 5
26090 ; PWR6-NEXT: mulld 3, 3, 9
26091 ; PWR6-NEXT: and 4, 4, 7
26092 ; PWR6-NEXT: rldicl 3, 3, 8, 56
26093 ; PWR6-NEXT: mulld 4, 4, 9
26094 ; PWR6-NEXT: li 5, 54
26095 ; PWR6-NEXT: subfic 3, 3, 54
26096 ; PWR6-NEXT: rldicl 4, 4, 8, 56
26097 ; PWR6-NEXT: subfe 3, 5, 5
26098 ; PWR6-NEXT: subfic 4, 4, 54
26099 ; PWR6-NEXT: subfe 4, 5, 5
26102 ; PWR7-LABEL: ugt_54_v2i64:
26104 ; PWR7-NEXT: addi 3, 1, -32
26105 ; PWR7-NEXT: li 5, 0
26106 ; PWR7-NEXT: li 6, -1
26107 ; PWR7-NEXT: stxvd2x 34, 0, 3
26108 ; PWR7-NEXT: ld 3, -24(1)
26109 ; PWR7-NEXT: ld 4, -32(1)
26110 ; PWR7-NEXT: popcntd 3, 3
26111 ; PWR7-NEXT: popcntd 4, 4
26112 ; PWR7-NEXT: cmpldi 3, 54
26113 ; PWR7-NEXT: iselgt 3, 6, 5
26114 ; PWR7-NEXT: cmpldi 4, 54
26115 ; PWR7-NEXT: iselgt 4, 6, 5
26116 ; PWR7-NEXT: std 3, -8(1)
26117 ; PWR7-NEXT: addi 3, 1, -16
26118 ; PWR7-NEXT: std 4, -16(1)
26119 ; PWR7-NEXT: lxvd2x 34, 0, 3
26122 ; PWR8-LABEL: ugt_54_v2i64:
26124 ; PWR8-NEXT: addis 3, 2, .LCPI206_0@toc@ha
26125 ; PWR8-NEXT: vpopcntd 2, 2
26126 ; PWR8-NEXT: addi 3, 3, .LCPI206_0@toc@l
26127 ; PWR8-NEXT: lxvd2x 35, 0, 3
26128 ; PWR8-NEXT: vcmpgtud 2, 2, 3
26131 ; PWR9-LABEL: ugt_54_v2i64:
26133 ; PWR9-NEXT: addis 3, 2, .LCPI206_0@toc@ha
26134 ; PWR9-NEXT: vpopcntd 2, 2
26135 ; PWR9-NEXT: addi 3, 3, .LCPI206_0@toc@l
26136 ; PWR9-NEXT: lxv 35, 0(3)
26137 ; PWR9-NEXT: vcmpgtud 2, 2, 3
26139 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
26140 %3 = icmp ugt <2 x i64> %2, <i64 54, i64 54>
26141 %4 = sext <2 x i1> %3 to <2 x i64>
26145 define <2 x i64> @ult_55_v2i64(<2 x i64> %0) {
26146 ; PWR5-LABEL: ult_55_v2i64:
26148 ; PWR5-NEXT: lis 5, 21845
26149 ; PWR5-NEXT: lis 6, 13107
26150 ; PWR5-NEXT: ori 5, 5, 21845
26151 ; PWR5-NEXT: rotldi 8, 4, 63
26152 ; PWR5-NEXT: rotldi 9, 3, 63
26153 ; PWR5-NEXT: rldimi 5, 5, 32, 0
26154 ; PWR5-NEXT: and 8, 8, 5
26155 ; PWR5-NEXT: and 5, 9, 5
26156 ; PWR5-NEXT: ori 6, 6, 13107
26157 ; PWR5-NEXT: sub 3, 3, 5
26158 ; PWR5-NEXT: rldimi 6, 6, 32, 0
26159 ; PWR5-NEXT: sub 4, 4, 8
26160 ; PWR5-NEXT: and 8, 3, 6
26161 ; PWR5-NEXT: rotldi 3, 3, 62
26162 ; PWR5-NEXT: and 3, 3, 6
26163 ; PWR5-NEXT: lis 7, 3855
26164 ; PWR5-NEXT: and 5, 4, 6
26165 ; PWR5-NEXT: rotldi 4, 4, 62
26166 ; PWR5-NEXT: add 3, 8, 3
26167 ; PWR5-NEXT: lis 9, 257
26168 ; PWR5-NEXT: ori 7, 7, 3855
26169 ; PWR5-NEXT: and 4, 4, 6
26170 ; PWR5-NEXT: rldicl 6, 3, 60, 4
26171 ; PWR5-NEXT: ori 9, 9, 257
26172 ; PWR5-NEXT: rldimi 7, 7, 32, 0
26173 ; PWR5-NEXT: add 4, 5, 4
26174 ; PWR5-NEXT: add 3, 3, 6
26175 ; PWR5-NEXT: rldimi 9, 9, 32, 0
26176 ; PWR5-NEXT: rldicl 5, 4, 60, 4
26177 ; PWR5-NEXT: and 3, 3, 7
26178 ; PWR5-NEXT: add 4, 4, 5
26179 ; PWR5-NEXT: mulld 3, 3, 9
26180 ; PWR5-NEXT: and 4, 4, 7
26181 ; PWR5-NEXT: rldicl 3, 3, 8, 56
26182 ; PWR5-NEXT: li 5, 55
26183 ; PWR5-NEXT: mulld 4, 4, 9
26184 ; PWR5-NEXT: subc 6, 3, 5
26185 ; PWR5-NEXT: rldicl 4, 4, 8, 56
26186 ; PWR5-NEXT: subfe 3, 3, 3
26187 ; PWR5-NEXT: subc 5, 4, 5
26188 ; PWR5-NEXT: subfe 4, 4, 4
26191 ; PWR6-LABEL: ult_55_v2i64:
26193 ; PWR6-NEXT: lis 5, 21845
26194 ; PWR6-NEXT: lis 6, 13107
26195 ; PWR6-NEXT: ori 5, 5, 21845
26196 ; PWR6-NEXT: rotldi 8, 4, 63
26197 ; PWR6-NEXT: rotldi 9, 3, 63
26198 ; PWR6-NEXT: rldimi 5, 5, 32, 0
26199 ; PWR6-NEXT: and 8, 8, 5
26200 ; PWR6-NEXT: and 5, 9, 5
26201 ; PWR6-NEXT: ori 6, 6, 13107
26202 ; PWR6-NEXT: sub 3, 3, 5
26203 ; PWR6-NEXT: rldimi 6, 6, 32, 0
26204 ; PWR6-NEXT: sub 4, 4, 8
26205 ; PWR6-NEXT: and 8, 3, 6
26206 ; PWR6-NEXT: rotldi 3, 3, 62
26207 ; PWR6-NEXT: and 3, 3, 6
26208 ; PWR6-NEXT: lis 7, 3855
26209 ; PWR6-NEXT: and 5, 4, 6
26210 ; PWR6-NEXT: rotldi 4, 4, 62
26211 ; PWR6-NEXT: add 3, 8, 3
26212 ; PWR6-NEXT: lis 9, 257
26213 ; PWR6-NEXT: ori 7, 7, 3855
26214 ; PWR6-NEXT: and 4, 4, 6
26215 ; PWR6-NEXT: rldicl 6, 3, 60, 4
26216 ; PWR6-NEXT: ori 9, 9, 257
26217 ; PWR6-NEXT: rldimi 7, 7, 32, 0
26218 ; PWR6-NEXT: add 4, 5, 4
26219 ; PWR6-NEXT: add 3, 3, 6
26220 ; PWR6-NEXT: rldimi 9, 9, 32, 0
26221 ; PWR6-NEXT: rldicl 5, 4, 60, 4
26222 ; PWR6-NEXT: and 3, 3, 7
26223 ; PWR6-NEXT: add 4, 4, 5
26224 ; PWR6-NEXT: mulld 3, 3, 9
26225 ; PWR6-NEXT: and 4, 4, 7
26226 ; PWR6-NEXT: rldicl 3, 3, 8, 56
26227 ; PWR6-NEXT: li 5, 55
26228 ; PWR6-NEXT: mulld 4, 4, 9
26229 ; PWR6-NEXT: subc 6, 3, 5
26230 ; PWR6-NEXT: rldicl 4, 4, 8, 56
26231 ; PWR6-NEXT: subfe 3, 3, 3
26232 ; PWR6-NEXT: subc 5, 4, 5
26233 ; PWR6-NEXT: subfe 4, 4, 4
26236 ; PWR7-LABEL: ult_55_v2i64:
26238 ; PWR7-NEXT: addi 3, 1, -32
26239 ; PWR7-NEXT: li 5, 0
26240 ; PWR7-NEXT: li 6, -1
26241 ; PWR7-NEXT: stxvd2x 34, 0, 3
26242 ; PWR7-NEXT: ld 3, -24(1)
26243 ; PWR7-NEXT: ld 4, -32(1)
26244 ; PWR7-NEXT: popcntd 3, 3
26245 ; PWR7-NEXT: popcntd 4, 4
26246 ; PWR7-NEXT: cmpldi 3, 55
26247 ; PWR7-NEXT: isellt 3, 6, 5
26248 ; PWR7-NEXT: cmpldi 4, 55
26249 ; PWR7-NEXT: isellt 4, 6, 5
26250 ; PWR7-NEXT: std 3, -8(1)
26251 ; PWR7-NEXT: addi 3, 1, -16
26252 ; PWR7-NEXT: std 4, -16(1)
26253 ; PWR7-NEXT: lxvd2x 34, 0, 3
26256 ; PWR8-LABEL: ult_55_v2i64:
26258 ; PWR8-NEXT: addis 3, 2, .LCPI207_0@toc@ha
26259 ; PWR8-NEXT: vpopcntd 2, 2
26260 ; PWR8-NEXT: addi 3, 3, .LCPI207_0@toc@l
26261 ; PWR8-NEXT: lxvd2x 35, 0, 3
26262 ; PWR8-NEXT: vcmpgtud 2, 3, 2
26265 ; PWR9-LABEL: ult_55_v2i64:
26267 ; PWR9-NEXT: addis 3, 2, .LCPI207_0@toc@ha
26268 ; PWR9-NEXT: vpopcntd 2, 2
26269 ; PWR9-NEXT: addi 3, 3, .LCPI207_0@toc@l
26270 ; PWR9-NEXT: lxv 35, 0(3)
26271 ; PWR9-NEXT: vcmpgtud 2, 3, 2
26273 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
26274 %3 = icmp ult <2 x i64> %2, <i64 55, i64 55>
26275 %4 = sext <2 x i1> %3 to <2 x i64>
26279 define <2 x i64> @ugt_55_v2i64(<2 x i64> %0) {
26280 ; PWR5-LABEL: ugt_55_v2i64:
26282 ; PWR5-NEXT: lis 5, 21845
26283 ; PWR5-NEXT: lis 6, 13107
26284 ; PWR5-NEXT: ori 5, 5, 21845
26285 ; PWR5-NEXT: rotldi 8, 4, 63
26286 ; PWR5-NEXT: rotldi 9, 3, 63
26287 ; PWR5-NEXT: rldimi 5, 5, 32, 0
26288 ; PWR5-NEXT: and 8, 8, 5
26289 ; PWR5-NEXT: and 5, 9, 5
26290 ; PWR5-NEXT: ori 6, 6, 13107
26291 ; PWR5-NEXT: sub 3, 3, 5
26292 ; PWR5-NEXT: rldimi 6, 6, 32, 0
26293 ; PWR5-NEXT: sub 4, 4, 8
26294 ; PWR5-NEXT: and 8, 3, 6
26295 ; PWR5-NEXT: rotldi 3, 3, 62
26296 ; PWR5-NEXT: and 3, 3, 6
26297 ; PWR5-NEXT: lis 7, 3855
26298 ; PWR5-NEXT: and 5, 4, 6
26299 ; PWR5-NEXT: rotldi 4, 4, 62
26300 ; PWR5-NEXT: add 3, 8, 3
26301 ; PWR5-NEXT: lis 9, 257
26302 ; PWR5-NEXT: ori 7, 7, 3855
26303 ; PWR5-NEXT: and 4, 4, 6
26304 ; PWR5-NEXT: rldicl 6, 3, 60, 4
26305 ; PWR5-NEXT: ori 9, 9, 257
26306 ; PWR5-NEXT: rldimi 7, 7, 32, 0
26307 ; PWR5-NEXT: add 4, 5, 4
26308 ; PWR5-NEXT: add 3, 3, 6
26309 ; PWR5-NEXT: rldimi 9, 9, 32, 0
26310 ; PWR5-NEXT: rldicl 5, 4, 60, 4
26311 ; PWR5-NEXT: and 3, 3, 7
26312 ; PWR5-NEXT: add 4, 4, 5
26313 ; PWR5-NEXT: mulld 3, 3, 9
26314 ; PWR5-NEXT: and 4, 4, 7
26315 ; PWR5-NEXT: rldicl 3, 3, 8, 56
26316 ; PWR5-NEXT: mulld 4, 4, 9
26317 ; PWR5-NEXT: li 5, 55
26318 ; PWR5-NEXT: subfic 3, 3, 55
26319 ; PWR5-NEXT: rldicl 4, 4, 8, 56
26320 ; PWR5-NEXT: subfe 3, 5, 5
26321 ; PWR5-NEXT: subfic 4, 4, 55
26322 ; PWR5-NEXT: subfe 4, 5, 5
26325 ; PWR6-LABEL: ugt_55_v2i64:
26327 ; PWR6-NEXT: lis 5, 21845
26328 ; PWR6-NEXT: lis 6, 13107
26329 ; PWR6-NEXT: ori 5, 5, 21845
26330 ; PWR6-NEXT: rotldi 8, 4, 63
26331 ; PWR6-NEXT: rotldi 9, 3, 63
26332 ; PWR6-NEXT: rldimi 5, 5, 32, 0
26333 ; PWR6-NEXT: and 8, 8, 5
26334 ; PWR6-NEXT: and 5, 9, 5
26335 ; PWR6-NEXT: ori 6, 6, 13107
26336 ; PWR6-NEXT: sub 3, 3, 5
26337 ; PWR6-NEXT: rldimi 6, 6, 32, 0
26338 ; PWR6-NEXT: sub 4, 4, 8
26339 ; PWR6-NEXT: and 8, 3, 6
26340 ; PWR6-NEXT: rotldi 3, 3, 62
26341 ; PWR6-NEXT: and 3, 3, 6
26342 ; PWR6-NEXT: lis 7, 3855
26343 ; PWR6-NEXT: and 5, 4, 6
26344 ; PWR6-NEXT: rotldi 4, 4, 62
26345 ; PWR6-NEXT: add 3, 8, 3
26346 ; PWR6-NEXT: lis 9, 257
26347 ; PWR6-NEXT: ori 7, 7, 3855
26348 ; PWR6-NEXT: and 4, 4, 6
26349 ; PWR6-NEXT: rldicl 6, 3, 60, 4
26350 ; PWR6-NEXT: ori 9, 9, 257
26351 ; PWR6-NEXT: rldimi 7, 7, 32, 0
26352 ; PWR6-NEXT: add 4, 5, 4
26353 ; PWR6-NEXT: add 3, 3, 6
26354 ; PWR6-NEXT: rldimi 9, 9, 32, 0
26355 ; PWR6-NEXT: rldicl 5, 4, 60, 4
26356 ; PWR6-NEXT: and 3, 3, 7
26357 ; PWR6-NEXT: add 4, 4, 5
26358 ; PWR6-NEXT: mulld 3, 3, 9
26359 ; PWR6-NEXT: and 4, 4, 7
26360 ; PWR6-NEXT: rldicl 3, 3, 8, 56
26361 ; PWR6-NEXT: mulld 4, 4, 9
26362 ; PWR6-NEXT: li 5, 55
26363 ; PWR6-NEXT: subfic 3, 3, 55
26364 ; PWR6-NEXT: rldicl 4, 4, 8, 56
26365 ; PWR6-NEXT: subfe 3, 5, 5
26366 ; PWR6-NEXT: subfic 4, 4, 55
26367 ; PWR6-NEXT: subfe 4, 5, 5
26370 ; PWR7-LABEL: ugt_55_v2i64:
26372 ; PWR7-NEXT: addi 3, 1, -32
26373 ; PWR7-NEXT: li 5, 0
26374 ; PWR7-NEXT: li 6, -1
26375 ; PWR7-NEXT: stxvd2x 34, 0, 3
26376 ; PWR7-NEXT: ld 3, -24(1)
26377 ; PWR7-NEXT: ld 4, -32(1)
26378 ; PWR7-NEXT: popcntd 3, 3
26379 ; PWR7-NEXT: popcntd 4, 4
26380 ; PWR7-NEXT: cmpldi 3, 55
26381 ; PWR7-NEXT: iselgt 3, 6, 5
26382 ; PWR7-NEXT: cmpldi 4, 55
26383 ; PWR7-NEXT: iselgt 4, 6, 5
26384 ; PWR7-NEXT: std 3, -8(1)
26385 ; PWR7-NEXT: addi 3, 1, -16
26386 ; PWR7-NEXT: std 4, -16(1)
26387 ; PWR7-NEXT: lxvd2x 34, 0, 3
26390 ; PWR8-LABEL: ugt_55_v2i64:
26392 ; PWR8-NEXT: addis 3, 2, .LCPI208_0@toc@ha
26393 ; PWR8-NEXT: vpopcntd 2, 2
26394 ; PWR8-NEXT: addi 3, 3, .LCPI208_0@toc@l
26395 ; PWR8-NEXT: lxvd2x 35, 0, 3
26396 ; PWR8-NEXT: vcmpgtud 2, 2, 3
26399 ; PWR9-LABEL: ugt_55_v2i64:
26401 ; PWR9-NEXT: addis 3, 2, .LCPI208_0@toc@ha
26402 ; PWR9-NEXT: vpopcntd 2, 2
26403 ; PWR9-NEXT: addi 3, 3, .LCPI208_0@toc@l
26404 ; PWR9-NEXT: lxv 35, 0(3)
26405 ; PWR9-NEXT: vcmpgtud 2, 2, 3
26407 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
26408 %3 = icmp ugt <2 x i64> %2, <i64 55, i64 55>
26409 %4 = sext <2 x i1> %3 to <2 x i64>
26413 define <2 x i64> @ult_56_v2i64(<2 x i64> %0) {
26414 ; PWR5-LABEL: ult_56_v2i64:
26416 ; PWR5-NEXT: lis 5, 21845
26417 ; PWR5-NEXT: lis 6, 13107
26418 ; PWR5-NEXT: ori 5, 5, 21845
26419 ; PWR5-NEXT: rotldi 8, 4, 63
26420 ; PWR5-NEXT: rotldi 9, 3, 63
26421 ; PWR5-NEXT: rldimi 5, 5, 32, 0
26422 ; PWR5-NEXT: and 8, 8, 5
26423 ; PWR5-NEXT: and 5, 9, 5
26424 ; PWR5-NEXT: ori 6, 6, 13107
26425 ; PWR5-NEXT: sub 3, 3, 5
26426 ; PWR5-NEXT: rldimi 6, 6, 32, 0
26427 ; PWR5-NEXT: sub 4, 4, 8
26428 ; PWR5-NEXT: and 8, 3, 6
26429 ; PWR5-NEXT: rotldi 3, 3, 62
26430 ; PWR5-NEXT: and 3, 3, 6
26431 ; PWR5-NEXT: lis 7, 3855
26432 ; PWR5-NEXT: and 5, 4, 6
26433 ; PWR5-NEXT: rotldi 4, 4, 62
26434 ; PWR5-NEXT: add 3, 8, 3
26435 ; PWR5-NEXT: lis 9, 257
26436 ; PWR5-NEXT: ori 7, 7, 3855
26437 ; PWR5-NEXT: and 4, 4, 6
26438 ; PWR5-NEXT: rldicl 6, 3, 60, 4
26439 ; PWR5-NEXT: ori 9, 9, 257
26440 ; PWR5-NEXT: rldimi 7, 7, 32, 0
26441 ; PWR5-NEXT: add 4, 5, 4
26442 ; PWR5-NEXT: add 3, 3, 6
26443 ; PWR5-NEXT: rldimi 9, 9, 32, 0
26444 ; PWR5-NEXT: rldicl 5, 4, 60, 4
26445 ; PWR5-NEXT: and 3, 3, 7
26446 ; PWR5-NEXT: add 4, 4, 5
26447 ; PWR5-NEXT: mulld 3, 3, 9
26448 ; PWR5-NEXT: and 4, 4, 7
26449 ; PWR5-NEXT: rldicl 3, 3, 8, 56
26450 ; PWR5-NEXT: li 5, 56
26451 ; PWR5-NEXT: mulld 4, 4, 9
26452 ; PWR5-NEXT: subc 6, 3, 5
26453 ; PWR5-NEXT: rldicl 4, 4, 8, 56
26454 ; PWR5-NEXT: subfe 3, 3, 3
26455 ; PWR5-NEXT: subc 5, 4, 5
26456 ; PWR5-NEXT: subfe 4, 4, 4
26459 ; PWR6-LABEL: ult_56_v2i64:
26461 ; PWR6-NEXT: lis 5, 21845
26462 ; PWR6-NEXT: lis 6, 13107
26463 ; PWR6-NEXT: ori 5, 5, 21845
26464 ; PWR6-NEXT: rotldi 8, 4, 63
26465 ; PWR6-NEXT: rotldi 9, 3, 63
26466 ; PWR6-NEXT: rldimi 5, 5, 32, 0
26467 ; PWR6-NEXT: and 8, 8, 5
26468 ; PWR6-NEXT: and 5, 9, 5
26469 ; PWR6-NEXT: ori 6, 6, 13107
26470 ; PWR6-NEXT: sub 3, 3, 5
26471 ; PWR6-NEXT: rldimi 6, 6, 32, 0
26472 ; PWR6-NEXT: sub 4, 4, 8
26473 ; PWR6-NEXT: and 8, 3, 6
26474 ; PWR6-NEXT: rotldi 3, 3, 62
26475 ; PWR6-NEXT: and 3, 3, 6
26476 ; PWR6-NEXT: lis 7, 3855
26477 ; PWR6-NEXT: and 5, 4, 6
26478 ; PWR6-NEXT: rotldi 4, 4, 62
26479 ; PWR6-NEXT: add 3, 8, 3
26480 ; PWR6-NEXT: lis 9, 257
26481 ; PWR6-NEXT: ori 7, 7, 3855
26482 ; PWR6-NEXT: and 4, 4, 6
26483 ; PWR6-NEXT: rldicl 6, 3, 60, 4
26484 ; PWR6-NEXT: ori 9, 9, 257
26485 ; PWR6-NEXT: rldimi 7, 7, 32, 0
26486 ; PWR6-NEXT: add 4, 5, 4
26487 ; PWR6-NEXT: add 3, 3, 6
26488 ; PWR6-NEXT: rldimi 9, 9, 32, 0
26489 ; PWR6-NEXT: rldicl 5, 4, 60, 4
26490 ; PWR6-NEXT: and 3, 3, 7
26491 ; PWR6-NEXT: add 4, 4, 5
26492 ; PWR6-NEXT: mulld 3, 3, 9
26493 ; PWR6-NEXT: and 4, 4, 7
26494 ; PWR6-NEXT: rldicl 3, 3, 8, 56
26495 ; PWR6-NEXT: li 5, 56
26496 ; PWR6-NEXT: mulld 4, 4, 9
26497 ; PWR6-NEXT: subc 6, 3, 5
26498 ; PWR6-NEXT: rldicl 4, 4, 8, 56
26499 ; PWR6-NEXT: subfe 3, 3, 3
26500 ; PWR6-NEXT: subc 5, 4, 5
26501 ; PWR6-NEXT: subfe 4, 4, 4
26504 ; PWR7-LABEL: ult_56_v2i64:
26506 ; PWR7-NEXT: addi 3, 1, -32
26507 ; PWR7-NEXT: li 5, 0
26508 ; PWR7-NEXT: li 6, -1
26509 ; PWR7-NEXT: stxvd2x 34, 0, 3
26510 ; PWR7-NEXT: ld 3, -24(1)
26511 ; PWR7-NEXT: ld 4, -32(1)
26512 ; PWR7-NEXT: popcntd 3, 3
26513 ; PWR7-NEXT: popcntd 4, 4
26514 ; PWR7-NEXT: cmpldi 3, 56
26515 ; PWR7-NEXT: isellt 3, 6, 5
26516 ; PWR7-NEXT: cmpldi 4, 56
26517 ; PWR7-NEXT: isellt 4, 6, 5
26518 ; PWR7-NEXT: std 3, -8(1)
26519 ; PWR7-NEXT: addi 3, 1, -16
26520 ; PWR7-NEXT: std 4, -16(1)
26521 ; PWR7-NEXT: lxvd2x 34, 0, 3
26524 ; PWR8-LABEL: ult_56_v2i64:
26526 ; PWR8-NEXT: addis 3, 2, .LCPI209_0@toc@ha
26527 ; PWR8-NEXT: vpopcntd 2, 2
26528 ; PWR8-NEXT: addi 3, 3, .LCPI209_0@toc@l
26529 ; PWR8-NEXT: lxvd2x 35, 0, 3
26530 ; PWR8-NEXT: vcmpgtud 2, 3, 2
26533 ; PWR9-LABEL: ult_56_v2i64:
26535 ; PWR9-NEXT: addis 3, 2, .LCPI209_0@toc@ha
26536 ; PWR9-NEXT: vpopcntd 2, 2
26537 ; PWR9-NEXT: addi 3, 3, .LCPI209_0@toc@l
26538 ; PWR9-NEXT: lxv 35, 0(3)
26539 ; PWR9-NEXT: vcmpgtud 2, 3, 2
26541 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
26542 %3 = icmp ult <2 x i64> %2, <i64 56, i64 56>
26543 %4 = sext <2 x i1> %3 to <2 x i64>
26547 define <2 x i64> @ugt_56_v2i64(<2 x i64> %0) {
26548 ; PWR5-LABEL: ugt_56_v2i64:
26550 ; PWR5-NEXT: lis 5, 21845
26551 ; PWR5-NEXT: lis 6, 13107
26552 ; PWR5-NEXT: ori 5, 5, 21845
26553 ; PWR5-NEXT: rotldi 8, 4, 63
26554 ; PWR5-NEXT: rotldi 9, 3, 63
26555 ; PWR5-NEXT: rldimi 5, 5, 32, 0
26556 ; PWR5-NEXT: and 8, 8, 5
26557 ; PWR5-NEXT: and 5, 9, 5
26558 ; PWR5-NEXT: ori 6, 6, 13107
26559 ; PWR5-NEXT: sub 3, 3, 5
26560 ; PWR5-NEXT: rldimi 6, 6, 32, 0
26561 ; PWR5-NEXT: sub 4, 4, 8
26562 ; PWR5-NEXT: and 8, 3, 6
26563 ; PWR5-NEXT: rotldi 3, 3, 62
26564 ; PWR5-NEXT: and 3, 3, 6
26565 ; PWR5-NEXT: lis 7, 3855
26566 ; PWR5-NEXT: and 5, 4, 6
26567 ; PWR5-NEXT: rotldi 4, 4, 62
26568 ; PWR5-NEXT: add 3, 8, 3
26569 ; PWR5-NEXT: lis 9, 257
26570 ; PWR5-NEXT: ori 7, 7, 3855
26571 ; PWR5-NEXT: and 4, 4, 6
26572 ; PWR5-NEXT: rldicl 6, 3, 60, 4
26573 ; PWR5-NEXT: ori 9, 9, 257
26574 ; PWR5-NEXT: rldimi 7, 7, 32, 0
26575 ; PWR5-NEXT: add 4, 5, 4
26576 ; PWR5-NEXT: add 3, 3, 6
26577 ; PWR5-NEXT: rldimi 9, 9, 32, 0
26578 ; PWR5-NEXT: rldicl 5, 4, 60, 4
26579 ; PWR5-NEXT: and 3, 3, 7
26580 ; PWR5-NEXT: add 4, 4, 5
26581 ; PWR5-NEXT: mulld 3, 3, 9
26582 ; PWR5-NEXT: and 4, 4, 7
26583 ; PWR5-NEXT: rldicl 3, 3, 8, 56
26584 ; PWR5-NEXT: mulld 4, 4, 9
26585 ; PWR5-NEXT: li 5, 56
26586 ; PWR5-NEXT: subfic 3, 3, 56
26587 ; PWR5-NEXT: rldicl 4, 4, 8, 56
26588 ; PWR5-NEXT: subfe 3, 5, 5
26589 ; PWR5-NEXT: subfic 4, 4, 56
26590 ; PWR5-NEXT: subfe 4, 5, 5
26593 ; PWR6-LABEL: ugt_56_v2i64:
26595 ; PWR6-NEXT: lis 5, 21845
26596 ; PWR6-NEXT: lis 6, 13107
26597 ; PWR6-NEXT: ori 5, 5, 21845
26598 ; PWR6-NEXT: rotldi 8, 4, 63
26599 ; PWR6-NEXT: rotldi 9, 3, 63
26600 ; PWR6-NEXT: rldimi 5, 5, 32, 0
26601 ; PWR6-NEXT: and 8, 8, 5
26602 ; PWR6-NEXT: and 5, 9, 5
26603 ; PWR6-NEXT: ori 6, 6, 13107
26604 ; PWR6-NEXT: sub 3, 3, 5
26605 ; PWR6-NEXT: rldimi 6, 6, 32, 0
26606 ; PWR6-NEXT: sub 4, 4, 8
26607 ; PWR6-NEXT: and 8, 3, 6
26608 ; PWR6-NEXT: rotldi 3, 3, 62
26609 ; PWR6-NEXT: and 3, 3, 6
26610 ; PWR6-NEXT: lis 7, 3855
26611 ; PWR6-NEXT: and 5, 4, 6
26612 ; PWR6-NEXT: rotldi 4, 4, 62
26613 ; PWR6-NEXT: add 3, 8, 3
26614 ; PWR6-NEXT: lis 9, 257
26615 ; PWR6-NEXT: ori 7, 7, 3855
26616 ; PWR6-NEXT: and 4, 4, 6
26617 ; PWR6-NEXT: rldicl 6, 3, 60, 4
26618 ; PWR6-NEXT: ori 9, 9, 257
26619 ; PWR6-NEXT: rldimi 7, 7, 32, 0
26620 ; PWR6-NEXT: add 4, 5, 4
26621 ; PWR6-NEXT: add 3, 3, 6
26622 ; PWR6-NEXT: rldimi 9, 9, 32, 0
26623 ; PWR6-NEXT: rldicl 5, 4, 60, 4
26624 ; PWR6-NEXT: and 3, 3, 7
26625 ; PWR6-NEXT: add 4, 4, 5
26626 ; PWR6-NEXT: mulld 3, 3, 9
26627 ; PWR6-NEXT: and 4, 4, 7
26628 ; PWR6-NEXT: rldicl 3, 3, 8, 56
26629 ; PWR6-NEXT: mulld 4, 4, 9
26630 ; PWR6-NEXT: li 5, 56
26631 ; PWR6-NEXT: subfic 3, 3, 56
26632 ; PWR6-NEXT: rldicl 4, 4, 8, 56
26633 ; PWR6-NEXT: subfe 3, 5, 5
26634 ; PWR6-NEXT: subfic 4, 4, 56
26635 ; PWR6-NEXT: subfe 4, 5, 5
26638 ; PWR7-LABEL: ugt_56_v2i64:
26640 ; PWR7-NEXT: addi 3, 1, -32
26641 ; PWR7-NEXT: li 5, 0
26642 ; PWR7-NEXT: li 6, -1
26643 ; PWR7-NEXT: stxvd2x 34, 0, 3
26644 ; PWR7-NEXT: ld 3, -24(1)
26645 ; PWR7-NEXT: ld 4, -32(1)
26646 ; PWR7-NEXT: popcntd 3, 3
26647 ; PWR7-NEXT: popcntd 4, 4
26648 ; PWR7-NEXT: cmpldi 3, 56
26649 ; PWR7-NEXT: iselgt 3, 6, 5
26650 ; PWR7-NEXT: cmpldi 4, 56
26651 ; PWR7-NEXT: iselgt 4, 6, 5
26652 ; PWR7-NEXT: std 3, -8(1)
26653 ; PWR7-NEXT: addi 3, 1, -16
26654 ; PWR7-NEXT: std 4, -16(1)
26655 ; PWR7-NEXT: lxvd2x 34, 0, 3
26658 ; PWR8-LABEL: ugt_56_v2i64:
26660 ; PWR8-NEXT: addis 3, 2, .LCPI210_0@toc@ha
26661 ; PWR8-NEXT: vpopcntd 2, 2
26662 ; PWR8-NEXT: addi 3, 3, .LCPI210_0@toc@l
26663 ; PWR8-NEXT: lxvd2x 35, 0, 3
26664 ; PWR8-NEXT: vcmpgtud 2, 2, 3
26667 ; PWR9-LABEL: ugt_56_v2i64:
26669 ; PWR9-NEXT: addis 3, 2, .LCPI210_0@toc@ha
26670 ; PWR9-NEXT: vpopcntd 2, 2
26671 ; PWR9-NEXT: addi 3, 3, .LCPI210_0@toc@l
26672 ; PWR9-NEXT: lxv 35, 0(3)
26673 ; PWR9-NEXT: vcmpgtud 2, 2, 3
26675 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
26676 %3 = icmp ugt <2 x i64> %2, <i64 56, i64 56>
26677 %4 = sext <2 x i1> %3 to <2 x i64>
26681 define <2 x i64> @ult_57_v2i64(<2 x i64> %0) {
26682 ; PWR5-LABEL: ult_57_v2i64:
26684 ; PWR5-NEXT: lis 5, 21845
26685 ; PWR5-NEXT: lis 6, 13107
26686 ; PWR5-NEXT: ori 5, 5, 21845
26687 ; PWR5-NEXT: rotldi 8, 4, 63
26688 ; PWR5-NEXT: rotldi 9, 3, 63
26689 ; PWR5-NEXT: rldimi 5, 5, 32, 0
26690 ; PWR5-NEXT: and 8, 8, 5
26691 ; PWR5-NEXT: and 5, 9, 5
26692 ; PWR5-NEXT: ori 6, 6, 13107
26693 ; PWR5-NEXT: sub 3, 3, 5
26694 ; PWR5-NEXT: rldimi 6, 6, 32, 0
26695 ; PWR5-NEXT: sub 4, 4, 8
26696 ; PWR5-NEXT: and 8, 3, 6
26697 ; PWR5-NEXT: rotldi 3, 3, 62
26698 ; PWR5-NEXT: and 3, 3, 6
26699 ; PWR5-NEXT: lis 7, 3855
26700 ; PWR5-NEXT: and 5, 4, 6
26701 ; PWR5-NEXT: rotldi 4, 4, 62
26702 ; PWR5-NEXT: add 3, 8, 3
26703 ; PWR5-NEXT: lis 9, 257
26704 ; PWR5-NEXT: ori 7, 7, 3855
26705 ; PWR5-NEXT: and 4, 4, 6
26706 ; PWR5-NEXT: rldicl 6, 3, 60, 4
26707 ; PWR5-NEXT: ori 9, 9, 257
26708 ; PWR5-NEXT: rldimi 7, 7, 32, 0
26709 ; PWR5-NEXT: add 4, 5, 4
26710 ; PWR5-NEXT: add 3, 3, 6
26711 ; PWR5-NEXT: rldimi 9, 9, 32, 0
26712 ; PWR5-NEXT: rldicl 5, 4, 60, 4
26713 ; PWR5-NEXT: and 3, 3, 7
26714 ; PWR5-NEXT: add 4, 4, 5
26715 ; PWR5-NEXT: mulld 3, 3, 9
26716 ; PWR5-NEXT: and 4, 4, 7
26717 ; PWR5-NEXT: rldicl 3, 3, 8, 56
26718 ; PWR5-NEXT: li 5, 57
26719 ; PWR5-NEXT: mulld 4, 4, 9
26720 ; PWR5-NEXT: subc 6, 3, 5
26721 ; PWR5-NEXT: rldicl 4, 4, 8, 56
26722 ; PWR5-NEXT: subfe 3, 3, 3
26723 ; PWR5-NEXT: subc 5, 4, 5
26724 ; PWR5-NEXT: subfe 4, 4, 4
26727 ; PWR6-LABEL: ult_57_v2i64:
26729 ; PWR6-NEXT: lis 5, 21845
26730 ; PWR6-NEXT: lis 6, 13107
26731 ; PWR6-NEXT: ori 5, 5, 21845
26732 ; PWR6-NEXT: rotldi 8, 4, 63
26733 ; PWR6-NEXT: rotldi 9, 3, 63
26734 ; PWR6-NEXT: rldimi 5, 5, 32, 0
26735 ; PWR6-NEXT: and 8, 8, 5
26736 ; PWR6-NEXT: and 5, 9, 5
26737 ; PWR6-NEXT: ori 6, 6, 13107
26738 ; PWR6-NEXT: sub 3, 3, 5
26739 ; PWR6-NEXT: rldimi 6, 6, 32, 0
26740 ; PWR6-NEXT: sub 4, 4, 8
26741 ; PWR6-NEXT: and 8, 3, 6
26742 ; PWR6-NEXT: rotldi 3, 3, 62
26743 ; PWR6-NEXT: and 3, 3, 6
26744 ; PWR6-NEXT: lis 7, 3855
26745 ; PWR6-NEXT: and 5, 4, 6
26746 ; PWR6-NEXT: rotldi 4, 4, 62
26747 ; PWR6-NEXT: add 3, 8, 3
26748 ; PWR6-NEXT: lis 9, 257
26749 ; PWR6-NEXT: ori 7, 7, 3855
26750 ; PWR6-NEXT: and 4, 4, 6
26751 ; PWR6-NEXT: rldicl 6, 3, 60, 4
26752 ; PWR6-NEXT: ori 9, 9, 257
26753 ; PWR6-NEXT: rldimi 7, 7, 32, 0
26754 ; PWR6-NEXT: add 4, 5, 4
26755 ; PWR6-NEXT: add 3, 3, 6
26756 ; PWR6-NEXT: rldimi 9, 9, 32, 0
26757 ; PWR6-NEXT: rldicl 5, 4, 60, 4
26758 ; PWR6-NEXT: and 3, 3, 7
26759 ; PWR6-NEXT: add 4, 4, 5
26760 ; PWR6-NEXT: mulld 3, 3, 9
26761 ; PWR6-NEXT: and 4, 4, 7
26762 ; PWR6-NEXT: rldicl 3, 3, 8, 56
26763 ; PWR6-NEXT: li 5, 57
26764 ; PWR6-NEXT: mulld 4, 4, 9
26765 ; PWR6-NEXT: subc 6, 3, 5
26766 ; PWR6-NEXT: rldicl 4, 4, 8, 56
26767 ; PWR6-NEXT: subfe 3, 3, 3
26768 ; PWR6-NEXT: subc 5, 4, 5
26769 ; PWR6-NEXT: subfe 4, 4, 4
26772 ; PWR7-LABEL: ult_57_v2i64:
26774 ; PWR7-NEXT: addi 3, 1, -32
26775 ; PWR7-NEXT: li 5, 0
26776 ; PWR7-NEXT: li 6, -1
26777 ; PWR7-NEXT: stxvd2x 34, 0, 3
26778 ; PWR7-NEXT: ld 3, -24(1)
26779 ; PWR7-NEXT: ld 4, -32(1)
26780 ; PWR7-NEXT: popcntd 3, 3
26781 ; PWR7-NEXT: popcntd 4, 4
26782 ; PWR7-NEXT: cmpldi 3, 57
26783 ; PWR7-NEXT: isellt 3, 6, 5
26784 ; PWR7-NEXT: cmpldi 4, 57
26785 ; PWR7-NEXT: isellt 4, 6, 5
26786 ; PWR7-NEXT: std 3, -8(1)
26787 ; PWR7-NEXT: addi 3, 1, -16
26788 ; PWR7-NEXT: std 4, -16(1)
26789 ; PWR7-NEXT: lxvd2x 34, 0, 3
26792 ; PWR8-LABEL: ult_57_v2i64:
26794 ; PWR8-NEXT: addis 3, 2, .LCPI211_0@toc@ha
26795 ; PWR8-NEXT: vpopcntd 2, 2
26796 ; PWR8-NEXT: addi 3, 3, .LCPI211_0@toc@l
26797 ; PWR8-NEXT: lxvd2x 35, 0, 3
26798 ; PWR8-NEXT: vcmpgtud 2, 3, 2
26801 ; PWR9-LABEL: ult_57_v2i64:
26803 ; PWR9-NEXT: addis 3, 2, .LCPI211_0@toc@ha
26804 ; PWR9-NEXT: vpopcntd 2, 2
26805 ; PWR9-NEXT: addi 3, 3, .LCPI211_0@toc@l
26806 ; PWR9-NEXT: lxv 35, 0(3)
26807 ; PWR9-NEXT: vcmpgtud 2, 3, 2
26809 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
26810 %3 = icmp ult <2 x i64> %2, <i64 57, i64 57>
26811 %4 = sext <2 x i1> %3 to <2 x i64>
26815 define <2 x i64> @ugt_57_v2i64(<2 x i64> %0) {
26816 ; PWR5-LABEL: ugt_57_v2i64:
26818 ; PWR5-NEXT: lis 5, 21845
26819 ; PWR5-NEXT: lis 6, 13107
26820 ; PWR5-NEXT: ori 5, 5, 21845
26821 ; PWR5-NEXT: rotldi 8, 4, 63
26822 ; PWR5-NEXT: rotldi 9, 3, 63
26823 ; PWR5-NEXT: rldimi 5, 5, 32, 0
26824 ; PWR5-NEXT: and 8, 8, 5
26825 ; PWR5-NEXT: and 5, 9, 5
26826 ; PWR5-NEXT: ori 6, 6, 13107
26827 ; PWR5-NEXT: sub 3, 3, 5
26828 ; PWR5-NEXT: rldimi 6, 6, 32, 0
26829 ; PWR5-NEXT: sub 4, 4, 8
26830 ; PWR5-NEXT: and 8, 3, 6
26831 ; PWR5-NEXT: rotldi 3, 3, 62
26832 ; PWR5-NEXT: and 3, 3, 6
26833 ; PWR5-NEXT: lis 7, 3855
26834 ; PWR5-NEXT: and 5, 4, 6
26835 ; PWR5-NEXT: rotldi 4, 4, 62
26836 ; PWR5-NEXT: add 3, 8, 3
26837 ; PWR5-NEXT: lis 9, 257
26838 ; PWR5-NEXT: ori 7, 7, 3855
26839 ; PWR5-NEXT: and 4, 4, 6
26840 ; PWR5-NEXT: rldicl 6, 3, 60, 4
26841 ; PWR5-NEXT: ori 9, 9, 257
26842 ; PWR5-NEXT: rldimi 7, 7, 32, 0
26843 ; PWR5-NEXT: add 4, 5, 4
26844 ; PWR5-NEXT: add 3, 3, 6
26845 ; PWR5-NEXT: rldimi 9, 9, 32, 0
26846 ; PWR5-NEXT: rldicl 5, 4, 60, 4
26847 ; PWR5-NEXT: and 3, 3, 7
26848 ; PWR5-NEXT: add 4, 4, 5
26849 ; PWR5-NEXT: mulld 3, 3, 9
26850 ; PWR5-NEXT: and 4, 4, 7
26851 ; PWR5-NEXT: rldicl 3, 3, 8, 56
26852 ; PWR5-NEXT: mulld 4, 4, 9
26853 ; PWR5-NEXT: li 5, 57
26854 ; PWR5-NEXT: subfic 3, 3, 57
26855 ; PWR5-NEXT: rldicl 4, 4, 8, 56
26856 ; PWR5-NEXT: subfe 3, 5, 5
26857 ; PWR5-NEXT: subfic 4, 4, 57
26858 ; PWR5-NEXT: subfe 4, 5, 5
26861 ; PWR6-LABEL: ugt_57_v2i64:
26863 ; PWR6-NEXT: lis 5, 21845
26864 ; PWR6-NEXT: lis 6, 13107
26865 ; PWR6-NEXT: ori 5, 5, 21845
26866 ; PWR6-NEXT: rotldi 8, 4, 63
26867 ; PWR6-NEXT: rotldi 9, 3, 63
26868 ; PWR6-NEXT: rldimi 5, 5, 32, 0
26869 ; PWR6-NEXT: and 8, 8, 5
26870 ; PWR6-NEXT: and 5, 9, 5
26871 ; PWR6-NEXT: ori 6, 6, 13107
26872 ; PWR6-NEXT: sub 3, 3, 5
26873 ; PWR6-NEXT: rldimi 6, 6, 32, 0
26874 ; PWR6-NEXT: sub 4, 4, 8
26875 ; PWR6-NEXT: and 8, 3, 6
26876 ; PWR6-NEXT: rotldi 3, 3, 62
26877 ; PWR6-NEXT: and 3, 3, 6
26878 ; PWR6-NEXT: lis 7, 3855
26879 ; PWR6-NEXT: and 5, 4, 6
26880 ; PWR6-NEXT: rotldi 4, 4, 62
26881 ; PWR6-NEXT: add 3, 8, 3
26882 ; PWR6-NEXT: lis 9, 257
26883 ; PWR6-NEXT: ori 7, 7, 3855
26884 ; PWR6-NEXT: and 4, 4, 6
26885 ; PWR6-NEXT: rldicl 6, 3, 60, 4
26886 ; PWR6-NEXT: ori 9, 9, 257
26887 ; PWR6-NEXT: rldimi 7, 7, 32, 0
26888 ; PWR6-NEXT: add 4, 5, 4
26889 ; PWR6-NEXT: add 3, 3, 6
26890 ; PWR6-NEXT: rldimi 9, 9, 32, 0
26891 ; PWR6-NEXT: rldicl 5, 4, 60, 4
26892 ; PWR6-NEXT: and 3, 3, 7
26893 ; PWR6-NEXT: add 4, 4, 5
26894 ; PWR6-NEXT: mulld 3, 3, 9
26895 ; PWR6-NEXT: and 4, 4, 7
26896 ; PWR6-NEXT: rldicl 3, 3, 8, 56
26897 ; PWR6-NEXT: mulld 4, 4, 9
26898 ; PWR6-NEXT: li 5, 57
26899 ; PWR6-NEXT: subfic 3, 3, 57
26900 ; PWR6-NEXT: rldicl 4, 4, 8, 56
26901 ; PWR6-NEXT: subfe 3, 5, 5
26902 ; PWR6-NEXT: subfic 4, 4, 57
26903 ; PWR6-NEXT: subfe 4, 5, 5
26906 ; PWR7-LABEL: ugt_57_v2i64:
26908 ; PWR7-NEXT: addi 3, 1, -32
26909 ; PWR7-NEXT: li 5, 0
26910 ; PWR7-NEXT: li 6, -1
26911 ; PWR7-NEXT: stxvd2x 34, 0, 3
26912 ; PWR7-NEXT: ld 3, -24(1)
26913 ; PWR7-NEXT: ld 4, -32(1)
26914 ; PWR7-NEXT: popcntd 3, 3
26915 ; PWR7-NEXT: popcntd 4, 4
26916 ; PWR7-NEXT: cmpldi 3, 57
26917 ; PWR7-NEXT: iselgt 3, 6, 5
26918 ; PWR7-NEXT: cmpldi 4, 57
26919 ; PWR7-NEXT: iselgt 4, 6, 5
26920 ; PWR7-NEXT: std 3, -8(1)
26921 ; PWR7-NEXT: addi 3, 1, -16
26922 ; PWR7-NEXT: std 4, -16(1)
26923 ; PWR7-NEXT: lxvd2x 34, 0, 3
26926 ; PWR8-LABEL: ugt_57_v2i64:
26928 ; PWR8-NEXT: addis 3, 2, .LCPI212_0@toc@ha
26929 ; PWR8-NEXT: vpopcntd 2, 2
26930 ; PWR8-NEXT: addi 3, 3, .LCPI212_0@toc@l
26931 ; PWR8-NEXT: lxvd2x 35, 0, 3
26932 ; PWR8-NEXT: vcmpgtud 2, 2, 3
26935 ; PWR9-LABEL: ugt_57_v2i64:
26937 ; PWR9-NEXT: addis 3, 2, .LCPI212_0@toc@ha
26938 ; PWR9-NEXT: vpopcntd 2, 2
26939 ; PWR9-NEXT: addi 3, 3, .LCPI212_0@toc@l
26940 ; PWR9-NEXT: lxv 35, 0(3)
26941 ; PWR9-NEXT: vcmpgtud 2, 2, 3
26943 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
26944 %3 = icmp ugt <2 x i64> %2, <i64 57, i64 57>
26945 %4 = sext <2 x i1> %3 to <2 x i64>
26949 define <2 x i64> @ult_58_v2i64(<2 x i64> %0) {
26950 ; PWR5-LABEL: ult_58_v2i64:
26952 ; PWR5-NEXT: lis 5, 21845
26953 ; PWR5-NEXT: lis 6, 13107
26954 ; PWR5-NEXT: ori 5, 5, 21845
26955 ; PWR5-NEXT: rotldi 8, 4, 63
26956 ; PWR5-NEXT: rotldi 9, 3, 63
26957 ; PWR5-NEXT: rldimi 5, 5, 32, 0
26958 ; PWR5-NEXT: and 8, 8, 5
26959 ; PWR5-NEXT: and 5, 9, 5
26960 ; PWR5-NEXT: ori 6, 6, 13107
26961 ; PWR5-NEXT: sub 3, 3, 5
26962 ; PWR5-NEXT: rldimi 6, 6, 32, 0
26963 ; PWR5-NEXT: sub 4, 4, 8
26964 ; PWR5-NEXT: and 8, 3, 6
26965 ; PWR5-NEXT: rotldi 3, 3, 62
26966 ; PWR5-NEXT: and 3, 3, 6
26967 ; PWR5-NEXT: lis 7, 3855
26968 ; PWR5-NEXT: and 5, 4, 6
26969 ; PWR5-NEXT: rotldi 4, 4, 62
26970 ; PWR5-NEXT: add 3, 8, 3
26971 ; PWR5-NEXT: lis 9, 257
26972 ; PWR5-NEXT: ori 7, 7, 3855
26973 ; PWR5-NEXT: and 4, 4, 6
26974 ; PWR5-NEXT: rldicl 6, 3, 60, 4
26975 ; PWR5-NEXT: ori 9, 9, 257
26976 ; PWR5-NEXT: rldimi 7, 7, 32, 0
26977 ; PWR5-NEXT: add 4, 5, 4
26978 ; PWR5-NEXT: add 3, 3, 6
26979 ; PWR5-NEXT: rldimi 9, 9, 32, 0
26980 ; PWR5-NEXT: rldicl 5, 4, 60, 4
26981 ; PWR5-NEXT: and 3, 3, 7
26982 ; PWR5-NEXT: add 4, 4, 5
26983 ; PWR5-NEXT: mulld 3, 3, 9
26984 ; PWR5-NEXT: and 4, 4, 7
26985 ; PWR5-NEXT: rldicl 3, 3, 8, 56
26986 ; PWR5-NEXT: li 5, 58
26987 ; PWR5-NEXT: mulld 4, 4, 9
26988 ; PWR5-NEXT: subc 6, 3, 5
26989 ; PWR5-NEXT: rldicl 4, 4, 8, 56
26990 ; PWR5-NEXT: subfe 3, 3, 3
26991 ; PWR5-NEXT: subc 5, 4, 5
26992 ; PWR5-NEXT: subfe 4, 4, 4
26995 ; PWR6-LABEL: ult_58_v2i64:
26997 ; PWR6-NEXT: lis 5, 21845
26998 ; PWR6-NEXT: lis 6, 13107
26999 ; PWR6-NEXT: ori 5, 5, 21845
27000 ; PWR6-NEXT: rotldi 8, 4, 63
27001 ; PWR6-NEXT: rotldi 9, 3, 63
27002 ; PWR6-NEXT: rldimi 5, 5, 32, 0
27003 ; PWR6-NEXT: and 8, 8, 5
27004 ; PWR6-NEXT: and 5, 9, 5
27005 ; PWR6-NEXT: ori 6, 6, 13107
27006 ; PWR6-NEXT: sub 3, 3, 5
27007 ; PWR6-NEXT: rldimi 6, 6, 32, 0
27008 ; PWR6-NEXT: sub 4, 4, 8
27009 ; PWR6-NEXT: and 8, 3, 6
27010 ; PWR6-NEXT: rotldi 3, 3, 62
27011 ; PWR6-NEXT: and 3, 3, 6
27012 ; PWR6-NEXT: lis 7, 3855
27013 ; PWR6-NEXT: and 5, 4, 6
27014 ; PWR6-NEXT: rotldi 4, 4, 62
27015 ; PWR6-NEXT: add 3, 8, 3
27016 ; PWR6-NEXT: lis 9, 257
27017 ; PWR6-NEXT: ori 7, 7, 3855
27018 ; PWR6-NEXT: and 4, 4, 6
27019 ; PWR6-NEXT: rldicl 6, 3, 60, 4
27020 ; PWR6-NEXT: ori 9, 9, 257
27021 ; PWR6-NEXT: rldimi 7, 7, 32, 0
27022 ; PWR6-NEXT: add 4, 5, 4
27023 ; PWR6-NEXT: add 3, 3, 6
27024 ; PWR6-NEXT: rldimi 9, 9, 32, 0
27025 ; PWR6-NEXT: rldicl 5, 4, 60, 4
27026 ; PWR6-NEXT: and 3, 3, 7
27027 ; PWR6-NEXT: add 4, 4, 5
27028 ; PWR6-NEXT: mulld 3, 3, 9
27029 ; PWR6-NEXT: and 4, 4, 7
27030 ; PWR6-NEXT: rldicl 3, 3, 8, 56
27031 ; PWR6-NEXT: li 5, 58
27032 ; PWR6-NEXT: mulld 4, 4, 9
27033 ; PWR6-NEXT: subc 6, 3, 5
27034 ; PWR6-NEXT: rldicl 4, 4, 8, 56
27035 ; PWR6-NEXT: subfe 3, 3, 3
27036 ; PWR6-NEXT: subc 5, 4, 5
27037 ; PWR6-NEXT: subfe 4, 4, 4
27040 ; PWR7-LABEL: ult_58_v2i64:
27042 ; PWR7-NEXT: addi 3, 1, -32
27043 ; PWR7-NEXT: li 5, 0
27044 ; PWR7-NEXT: li 6, -1
27045 ; PWR7-NEXT: stxvd2x 34, 0, 3
27046 ; PWR7-NEXT: ld 3, -24(1)
27047 ; PWR7-NEXT: ld 4, -32(1)
27048 ; PWR7-NEXT: popcntd 3, 3
27049 ; PWR7-NEXT: popcntd 4, 4
27050 ; PWR7-NEXT: cmpldi 3, 58
27051 ; PWR7-NEXT: isellt 3, 6, 5
27052 ; PWR7-NEXT: cmpldi 4, 58
27053 ; PWR7-NEXT: isellt 4, 6, 5
27054 ; PWR7-NEXT: std 3, -8(1)
27055 ; PWR7-NEXT: addi 3, 1, -16
27056 ; PWR7-NEXT: std 4, -16(1)
27057 ; PWR7-NEXT: lxvd2x 34, 0, 3
27060 ; PWR8-LABEL: ult_58_v2i64:
27062 ; PWR8-NEXT: addis 3, 2, .LCPI213_0@toc@ha
27063 ; PWR8-NEXT: vpopcntd 2, 2
27064 ; PWR8-NEXT: addi 3, 3, .LCPI213_0@toc@l
27065 ; PWR8-NEXT: lxvd2x 35, 0, 3
27066 ; PWR8-NEXT: vcmpgtud 2, 3, 2
27069 ; PWR9-LABEL: ult_58_v2i64:
27071 ; PWR9-NEXT: addis 3, 2, .LCPI213_0@toc@ha
27072 ; PWR9-NEXT: vpopcntd 2, 2
27073 ; PWR9-NEXT: addi 3, 3, .LCPI213_0@toc@l
27074 ; PWR9-NEXT: lxv 35, 0(3)
27075 ; PWR9-NEXT: vcmpgtud 2, 3, 2
27077 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
27078 %3 = icmp ult <2 x i64> %2, <i64 58, i64 58>
27079 %4 = sext <2 x i1> %3 to <2 x i64>
27083 define <2 x i64> @ugt_58_v2i64(<2 x i64> %0) {
27084 ; PWR5-LABEL: ugt_58_v2i64:
27086 ; PWR5-NEXT: lis 5, 21845
27087 ; PWR5-NEXT: lis 6, 13107
27088 ; PWR5-NEXT: ori 5, 5, 21845
27089 ; PWR5-NEXT: rotldi 8, 4, 63
27090 ; PWR5-NEXT: rotldi 9, 3, 63
27091 ; PWR5-NEXT: rldimi 5, 5, 32, 0
27092 ; PWR5-NEXT: and 8, 8, 5
27093 ; PWR5-NEXT: and 5, 9, 5
27094 ; PWR5-NEXT: ori 6, 6, 13107
27095 ; PWR5-NEXT: sub 3, 3, 5
27096 ; PWR5-NEXT: rldimi 6, 6, 32, 0
27097 ; PWR5-NEXT: sub 4, 4, 8
27098 ; PWR5-NEXT: and 8, 3, 6
27099 ; PWR5-NEXT: rotldi 3, 3, 62
27100 ; PWR5-NEXT: and 3, 3, 6
27101 ; PWR5-NEXT: lis 7, 3855
27102 ; PWR5-NEXT: and 5, 4, 6
27103 ; PWR5-NEXT: rotldi 4, 4, 62
27104 ; PWR5-NEXT: add 3, 8, 3
27105 ; PWR5-NEXT: lis 9, 257
27106 ; PWR5-NEXT: ori 7, 7, 3855
27107 ; PWR5-NEXT: and 4, 4, 6
27108 ; PWR5-NEXT: rldicl 6, 3, 60, 4
27109 ; PWR5-NEXT: ori 9, 9, 257
27110 ; PWR5-NEXT: rldimi 7, 7, 32, 0
27111 ; PWR5-NEXT: add 4, 5, 4
27112 ; PWR5-NEXT: add 3, 3, 6
27113 ; PWR5-NEXT: rldimi 9, 9, 32, 0
27114 ; PWR5-NEXT: rldicl 5, 4, 60, 4
27115 ; PWR5-NEXT: and 3, 3, 7
27116 ; PWR5-NEXT: add 4, 4, 5
27117 ; PWR5-NEXT: mulld 3, 3, 9
27118 ; PWR5-NEXT: and 4, 4, 7
27119 ; PWR5-NEXT: rldicl 3, 3, 8, 56
27120 ; PWR5-NEXT: mulld 4, 4, 9
27121 ; PWR5-NEXT: li 5, 58
27122 ; PWR5-NEXT: subfic 3, 3, 58
27123 ; PWR5-NEXT: rldicl 4, 4, 8, 56
27124 ; PWR5-NEXT: subfe 3, 5, 5
27125 ; PWR5-NEXT: subfic 4, 4, 58
27126 ; PWR5-NEXT: subfe 4, 5, 5
27129 ; PWR6-LABEL: ugt_58_v2i64:
27131 ; PWR6-NEXT: lis 5, 21845
27132 ; PWR6-NEXT: lis 6, 13107
27133 ; PWR6-NEXT: ori 5, 5, 21845
27134 ; PWR6-NEXT: rotldi 8, 4, 63
27135 ; PWR6-NEXT: rotldi 9, 3, 63
27136 ; PWR6-NEXT: rldimi 5, 5, 32, 0
27137 ; PWR6-NEXT: and 8, 8, 5
27138 ; PWR6-NEXT: and 5, 9, 5
27139 ; PWR6-NEXT: ori 6, 6, 13107
27140 ; PWR6-NEXT: sub 3, 3, 5
27141 ; PWR6-NEXT: rldimi 6, 6, 32, 0
27142 ; PWR6-NEXT: sub 4, 4, 8
27143 ; PWR6-NEXT: and 8, 3, 6
27144 ; PWR6-NEXT: rotldi 3, 3, 62
27145 ; PWR6-NEXT: and 3, 3, 6
27146 ; PWR6-NEXT: lis 7, 3855
27147 ; PWR6-NEXT: and 5, 4, 6
27148 ; PWR6-NEXT: rotldi 4, 4, 62
27149 ; PWR6-NEXT: add 3, 8, 3
27150 ; PWR6-NEXT: lis 9, 257
27151 ; PWR6-NEXT: ori 7, 7, 3855
27152 ; PWR6-NEXT: and 4, 4, 6
27153 ; PWR6-NEXT: rldicl 6, 3, 60, 4
27154 ; PWR6-NEXT: ori 9, 9, 257
27155 ; PWR6-NEXT: rldimi 7, 7, 32, 0
27156 ; PWR6-NEXT: add 4, 5, 4
27157 ; PWR6-NEXT: add 3, 3, 6
27158 ; PWR6-NEXT: rldimi 9, 9, 32, 0
27159 ; PWR6-NEXT: rldicl 5, 4, 60, 4
27160 ; PWR6-NEXT: and 3, 3, 7
27161 ; PWR6-NEXT: add 4, 4, 5
27162 ; PWR6-NEXT: mulld 3, 3, 9
27163 ; PWR6-NEXT: and 4, 4, 7
27164 ; PWR6-NEXT: rldicl 3, 3, 8, 56
27165 ; PWR6-NEXT: mulld 4, 4, 9
27166 ; PWR6-NEXT: li 5, 58
27167 ; PWR6-NEXT: subfic 3, 3, 58
27168 ; PWR6-NEXT: rldicl 4, 4, 8, 56
27169 ; PWR6-NEXT: subfe 3, 5, 5
27170 ; PWR6-NEXT: subfic 4, 4, 58
27171 ; PWR6-NEXT: subfe 4, 5, 5
27174 ; PWR7-LABEL: ugt_58_v2i64:
27176 ; PWR7-NEXT: addi 3, 1, -32
27177 ; PWR7-NEXT: li 5, 0
27178 ; PWR7-NEXT: li 6, -1
27179 ; PWR7-NEXT: stxvd2x 34, 0, 3
27180 ; PWR7-NEXT: ld 3, -24(1)
27181 ; PWR7-NEXT: ld 4, -32(1)
27182 ; PWR7-NEXT: popcntd 3, 3
27183 ; PWR7-NEXT: popcntd 4, 4
27184 ; PWR7-NEXT: cmpldi 3, 58
27185 ; PWR7-NEXT: iselgt 3, 6, 5
27186 ; PWR7-NEXT: cmpldi 4, 58
27187 ; PWR7-NEXT: iselgt 4, 6, 5
27188 ; PWR7-NEXT: std 3, -8(1)
27189 ; PWR7-NEXT: addi 3, 1, -16
27190 ; PWR7-NEXT: std 4, -16(1)
27191 ; PWR7-NEXT: lxvd2x 34, 0, 3
27194 ; PWR8-LABEL: ugt_58_v2i64:
27196 ; PWR8-NEXT: addis 3, 2, .LCPI214_0@toc@ha
27197 ; PWR8-NEXT: vpopcntd 2, 2
27198 ; PWR8-NEXT: addi 3, 3, .LCPI214_0@toc@l
27199 ; PWR8-NEXT: lxvd2x 35, 0, 3
27200 ; PWR8-NEXT: vcmpgtud 2, 2, 3
27203 ; PWR9-LABEL: ugt_58_v2i64:
27205 ; PWR9-NEXT: addis 3, 2, .LCPI214_0@toc@ha
27206 ; PWR9-NEXT: vpopcntd 2, 2
27207 ; PWR9-NEXT: addi 3, 3, .LCPI214_0@toc@l
27208 ; PWR9-NEXT: lxv 35, 0(3)
27209 ; PWR9-NEXT: vcmpgtud 2, 2, 3
27211 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
27212 %3 = icmp ugt <2 x i64> %2, <i64 58, i64 58>
27213 %4 = sext <2 x i1> %3 to <2 x i64>
27217 define <2 x i64> @ult_59_v2i64(<2 x i64> %0) {
27218 ; PWR5-LABEL: ult_59_v2i64:
27220 ; PWR5-NEXT: lis 5, 21845
27221 ; PWR5-NEXT: lis 6, 13107
27222 ; PWR5-NEXT: ori 5, 5, 21845
27223 ; PWR5-NEXT: rotldi 8, 4, 63
27224 ; PWR5-NEXT: rotldi 9, 3, 63
27225 ; PWR5-NEXT: rldimi 5, 5, 32, 0
27226 ; PWR5-NEXT: and 8, 8, 5
27227 ; PWR5-NEXT: and 5, 9, 5
27228 ; PWR5-NEXT: ori 6, 6, 13107
27229 ; PWR5-NEXT: sub 3, 3, 5
27230 ; PWR5-NEXT: rldimi 6, 6, 32, 0
27231 ; PWR5-NEXT: sub 4, 4, 8
27232 ; PWR5-NEXT: and 8, 3, 6
27233 ; PWR5-NEXT: rotldi 3, 3, 62
27234 ; PWR5-NEXT: and 3, 3, 6
27235 ; PWR5-NEXT: lis 7, 3855
27236 ; PWR5-NEXT: and 5, 4, 6
27237 ; PWR5-NEXT: rotldi 4, 4, 62
27238 ; PWR5-NEXT: add 3, 8, 3
27239 ; PWR5-NEXT: lis 9, 257
27240 ; PWR5-NEXT: ori 7, 7, 3855
27241 ; PWR5-NEXT: and 4, 4, 6
27242 ; PWR5-NEXT: rldicl 6, 3, 60, 4
27243 ; PWR5-NEXT: ori 9, 9, 257
27244 ; PWR5-NEXT: rldimi 7, 7, 32, 0
27245 ; PWR5-NEXT: add 4, 5, 4
27246 ; PWR5-NEXT: add 3, 3, 6
27247 ; PWR5-NEXT: rldimi 9, 9, 32, 0
27248 ; PWR5-NEXT: rldicl 5, 4, 60, 4
27249 ; PWR5-NEXT: and 3, 3, 7
27250 ; PWR5-NEXT: add 4, 4, 5
27251 ; PWR5-NEXT: mulld 3, 3, 9
27252 ; PWR5-NEXT: and 4, 4, 7
27253 ; PWR5-NEXT: rldicl 3, 3, 8, 56
27254 ; PWR5-NEXT: li 5, 59
27255 ; PWR5-NEXT: mulld 4, 4, 9
27256 ; PWR5-NEXT: subc 6, 3, 5
27257 ; PWR5-NEXT: rldicl 4, 4, 8, 56
27258 ; PWR5-NEXT: subfe 3, 3, 3
27259 ; PWR5-NEXT: subc 5, 4, 5
27260 ; PWR5-NEXT: subfe 4, 4, 4
27263 ; PWR6-LABEL: ult_59_v2i64:
27265 ; PWR6-NEXT: lis 5, 21845
27266 ; PWR6-NEXT: lis 6, 13107
27267 ; PWR6-NEXT: ori 5, 5, 21845
27268 ; PWR6-NEXT: rotldi 8, 4, 63
27269 ; PWR6-NEXT: rotldi 9, 3, 63
27270 ; PWR6-NEXT: rldimi 5, 5, 32, 0
27271 ; PWR6-NEXT: and 8, 8, 5
27272 ; PWR6-NEXT: and 5, 9, 5
27273 ; PWR6-NEXT: ori 6, 6, 13107
27274 ; PWR6-NEXT: sub 3, 3, 5
27275 ; PWR6-NEXT: rldimi 6, 6, 32, 0
27276 ; PWR6-NEXT: sub 4, 4, 8
27277 ; PWR6-NEXT: and 8, 3, 6
27278 ; PWR6-NEXT: rotldi 3, 3, 62
27279 ; PWR6-NEXT: and 3, 3, 6
27280 ; PWR6-NEXT: lis 7, 3855
27281 ; PWR6-NEXT: and 5, 4, 6
27282 ; PWR6-NEXT: rotldi 4, 4, 62
27283 ; PWR6-NEXT: add 3, 8, 3
27284 ; PWR6-NEXT: lis 9, 257
27285 ; PWR6-NEXT: ori 7, 7, 3855
27286 ; PWR6-NEXT: and 4, 4, 6
27287 ; PWR6-NEXT: rldicl 6, 3, 60, 4
27288 ; PWR6-NEXT: ori 9, 9, 257
27289 ; PWR6-NEXT: rldimi 7, 7, 32, 0
27290 ; PWR6-NEXT: add 4, 5, 4
27291 ; PWR6-NEXT: add 3, 3, 6
27292 ; PWR6-NEXT: rldimi 9, 9, 32, 0
27293 ; PWR6-NEXT: rldicl 5, 4, 60, 4
27294 ; PWR6-NEXT: and 3, 3, 7
27295 ; PWR6-NEXT: add 4, 4, 5
27296 ; PWR6-NEXT: mulld 3, 3, 9
27297 ; PWR6-NEXT: and 4, 4, 7
27298 ; PWR6-NEXT: rldicl 3, 3, 8, 56
27299 ; PWR6-NEXT: li 5, 59
27300 ; PWR6-NEXT: mulld 4, 4, 9
27301 ; PWR6-NEXT: subc 6, 3, 5
27302 ; PWR6-NEXT: rldicl 4, 4, 8, 56
27303 ; PWR6-NEXT: subfe 3, 3, 3
27304 ; PWR6-NEXT: subc 5, 4, 5
27305 ; PWR6-NEXT: subfe 4, 4, 4
27308 ; PWR7-LABEL: ult_59_v2i64:
27310 ; PWR7-NEXT: addi 3, 1, -32
27311 ; PWR7-NEXT: li 5, 0
27312 ; PWR7-NEXT: li 6, -1
27313 ; PWR7-NEXT: stxvd2x 34, 0, 3
27314 ; PWR7-NEXT: ld 3, -24(1)
27315 ; PWR7-NEXT: ld 4, -32(1)
27316 ; PWR7-NEXT: popcntd 3, 3
27317 ; PWR7-NEXT: popcntd 4, 4
27318 ; PWR7-NEXT: cmpldi 3, 59
27319 ; PWR7-NEXT: isellt 3, 6, 5
27320 ; PWR7-NEXT: cmpldi 4, 59
27321 ; PWR7-NEXT: isellt 4, 6, 5
27322 ; PWR7-NEXT: std 3, -8(1)
27323 ; PWR7-NEXT: addi 3, 1, -16
27324 ; PWR7-NEXT: std 4, -16(1)
27325 ; PWR7-NEXT: lxvd2x 34, 0, 3
27328 ; PWR8-LABEL: ult_59_v2i64:
27330 ; PWR8-NEXT: addis 3, 2, .LCPI215_0@toc@ha
27331 ; PWR8-NEXT: vpopcntd 2, 2
27332 ; PWR8-NEXT: addi 3, 3, .LCPI215_0@toc@l
27333 ; PWR8-NEXT: lxvd2x 35, 0, 3
27334 ; PWR8-NEXT: vcmpgtud 2, 3, 2
27337 ; PWR9-LABEL: ult_59_v2i64:
27339 ; PWR9-NEXT: addis 3, 2, .LCPI215_0@toc@ha
27340 ; PWR9-NEXT: vpopcntd 2, 2
27341 ; PWR9-NEXT: addi 3, 3, .LCPI215_0@toc@l
27342 ; PWR9-NEXT: lxv 35, 0(3)
27343 ; PWR9-NEXT: vcmpgtud 2, 3, 2
27345 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
27346 %3 = icmp ult <2 x i64> %2, <i64 59, i64 59>
27347 %4 = sext <2 x i1> %3 to <2 x i64>
27351 define <2 x i64> @ugt_59_v2i64(<2 x i64> %0) {
27352 ; PWR5-LABEL: ugt_59_v2i64:
27354 ; PWR5-NEXT: lis 5, 21845
27355 ; PWR5-NEXT: lis 6, 13107
27356 ; PWR5-NEXT: ori 5, 5, 21845
27357 ; PWR5-NEXT: rotldi 8, 4, 63
27358 ; PWR5-NEXT: rotldi 9, 3, 63
27359 ; PWR5-NEXT: rldimi 5, 5, 32, 0
27360 ; PWR5-NEXT: and 8, 8, 5
27361 ; PWR5-NEXT: and 5, 9, 5
27362 ; PWR5-NEXT: ori 6, 6, 13107
27363 ; PWR5-NEXT: sub 3, 3, 5
27364 ; PWR5-NEXT: rldimi 6, 6, 32, 0
27365 ; PWR5-NEXT: sub 4, 4, 8
27366 ; PWR5-NEXT: and 8, 3, 6
27367 ; PWR5-NEXT: rotldi 3, 3, 62
27368 ; PWR5-NEXT: and 3, 3, 6
27369 ; PWR5-NEXT: lis 7, 3855
27370 ; PWR5-NEXT: and 5, 4, 6
27371 ; PWR5-NEXT: rotldi 4, 4, 62
27372 ; PWR5-NEXT: add 3, 8, 3
27373 ; PWR5-NEXT: lis 9, 257
27374 ; PWR5-NEXT: ori 7, 7, 3855
27375 ; PWR5-NEXT: and 4, 4, 6
27376 ; PWR5-NEXT: rldicl 6, 3, 60, 4
27377 ; PWR5-NEXT: ori 9, 9, 257
27378 ; PWR5-NEXT: rldimi 7, 7, 32, 0
27379 ; PWR5-NEXT: add 4, 5, 4
27380 ; PWR5-NEXT: add 3, 3, 6
27381 ; PWR5-NEXT: rldimi 9, 9, 32, 0
27382 ; PWR5-NEXT: rldicl 5, 4, 60, 4
27383 ; PWR5-NEXT: and 3, 3, 7
27384 ; PWR5-NEXT: add 4, 4, 5
27385 ; PWR5-NEXT: mulld 3, 3, 9
27386 ; PWR5-NEXT: and 4, 4, 7
27387 ; PWR5-NEXT: rldicl 3, 3, 8, 56
27388 ; PWR5-NEXT: mulld 4, 4, 9
27389 ; PWR5-NEXT: li 5, 59
27390 ; PWR5-NEXT: subfic 3, 3, 59
27391 ; PWR5-NEXT: rldicl 4, 4, 8, 56
27392 ; PWR5-NEXT: subfe 3, 5, 5
27393 ; PWR5-NEXT: subfic 4, 4, 59
27394 ; PWR5-NEXT: subfe 4, 5, 5
27397 ; PWR6-LABEL: ugt_59_v2i64:
27399 ; PWR6-NEXT: lis 5, 21845
27400 ; PWR6-NEXT: lis 6, 13107
27401 ; PWR6-NEXT: ori 5, 5, 21845
27402 ; PWR6-NEXT: rotldi 8, 4, 63
27403 ; PWR6-NEXT: rotldi 9, 3, 63
27404 ; PWR6-NEXT: rldimi 5, 5, 32, 0
27405 ; PWR6-NEXT: and 8, 8, 5
27406 ; PWR6-NEXT: and 5, 9, 5
27407 ; PWR6-NEXT: ori 6, 6, 13107
27408 ; PWR6-NEXT: sub 3, 3, 5
27409 ; PWR6-NEXT: rldimi 6, 6, 32, 0
27410 ; PWR6-NEXT: sub 4, 4, 8
27411 ; PWR6-NEXT: and 8, 3, 6
27412 ; PWR6-NEXT: rotldi 3, 3, 62
27413 ; PWR6-NEXT: and 3, 3, 6
27414 ; PWR6-NEXT: lis 7, 3855
27415 ; PWR6-NEXT: and 5, 4, 6
27416 ; PWR6-NEXT: rotldi 4, 4, 62
27417 ; PWR6-NEXT: add 3, 8, 3
27418 ; PWR6-NEXT: lis 9, 257
27419 ; PWR6-NEXT: ori 7, 7, 3855
27420 ; PWR6-NEXT: and 4, 4, 6
27421 ; PWR6-NEXT: rldicl 6, 3, 60, 4
27422 ; PWR6-NEXT: ori 9, 9, 257
27423 ; PWR6-NEXT: rldimi 7, 7, 32, 0
27424 ; PWR6-NEXT: add 4, 5, 4
27425 ; PWR6-NEXT: add 3, 3, 6
27426 ; PWR6-NEXT: rldimi 9, 9, 32, 0
27427 ; PWR6-NEXT: rldicl 5, 4, 60, 4
27428 ; PWR6-NEXT: and 3, 3, 7
27429 ; PWR6-NEXT: add 4, 4, 5
27430 ; PWR6-NEXT: mulld 3, 3, 9
27431 ; PWR6-NEXT: and 4, 4, 7
27432 ; PWR6-NEXT: rldicl 3, 3, 8, 56
27433 ; PWR6-NEXT: mulld 4, 4, 9
27434 ; PWR6-NEXT: li 5, 59
27435 ; PWR6-NEXT: subfic 3, 3, 59
27436 ; PWR6-NEXT: rldicl 4, 4, 8, 56
27437 ; PWR6-NEXT: subfe 3, 5, 5
27438 ; PWR6-NEXT: subfic 4, 4, 59
27439 ; PWR6-NEXT: subfe 4, 5, 5
27442 ; PWR7-LABEL: ugt_59_v2i64:
27444 ; PWR7-NEXT: addi 3, 1, -32
27445 ; PWR7-NEXT: li 5, 0
27446 ; PWR7-NEXT: li 6, -1
27447 ; PWR7-NEXT: stxvd2x 34, 0, 3
27448 ; PWR7-NEXT: ld 3, -24(1)
27449 ; PWR7-NEXT: ld 4, -32(1)
27450 ; PWR7-NEXT: popcntd 3, 3
27451 ; PWR7-NEXT: popcntd 4, 4
27452 ; PWR7-NEXT: cmpldi 3, 59
27453 ; PWR7-NEXT: iselgt 3, 6, 5
27454 ; PWR7-NEXT: cmpldi 4, 59
27455 ; PWR7-NEXT: iselgt 4, 6, 5
27456 ; PWR7-NEXT: std 3, -8(1)
27457 ; PWR7-NEXT: addi 3, 1, -16
27458 ; PWR7-NEXT: std 4, -16(1)
27459 ; PWR7-NEXT: lxvd2x 34, 0, 3
27462 ; PWR8-LABEL: ugt_59_v2i64:
27464 ; PWR8-NEXT: addis 3, 2, .LCPI216_0@toc@ha
27465 ; PWR8-NEXT: vpopcntd 2, 2
27466 ; PWR8-NEXT: addi 3, 3, .LCPI216_0@toc@l
27467 ; PWR8-NEXT: lxvd2x 35, 0, 3
27468 ; PWR8-NEXT: vcmpgtud 2, 2, 3
27471 ; PWR9-LABEL: ugt_59_v2i64:
27473 ; PWR9-NEXT: addis 3, 2, .LCPI216_0@toc@ha
27474 ; PWR9-NEXT: vpopcntd 2, 2
27475 ; PWR9-NEXT: addi 3, 3, .LCPI216_0@toc@l
27476 ; PWR9-NEXT: lxv 35, 0(3)
27477 ; PWR9-NEXT: vcmpgtud 2, 2, 3
27479 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
27480 %3 = icmp ugt <2 x i64> %2, <i64 59, i64 59>
27481 %4 = sext <2 x i1> %3 to <2 x i64>
27485 define <2 x i64> @ult_60_v2i64(<2 x i64> %0) {
27486 ; PWR5-LABEL: ult_60_v2i64:
27488 ; PWR5-NEXT: lis 5, 21845
27489 ; PWR5-NEXT: lis 6, 13107
27490 ; PWR5-NEXT: ori 5, 5, 21845
27491 ; PWR5-NEXT: rotldi 8, 4, 63
27492 ; PWR5-NEXT: rotldi 9, 3, 63
27493 ; PWR5-NEXT: rldimi 5, 5, 32, 0
27494 ; PWR5-NEXT: and 8, 8, 5
27495 ; PWR5-NEXT: and 5, 9, 5
27496 ; PWR5-NEXT: ori 6, 6, 13107
27497 ; PWR5-NEXT: sub 3, 3, 5
27498 ; PWR5-NEXT: rldimi 6, 6, 32, 0
27499 ; PWR5-NEXT: sub 4, 4, 8
27500 ; PWR5-NEXT: and 8, 3, 6
27501 ; PWR5-NEXT: rotldi 3, 3, 62
27502 ; PWR5-NEXT: and 3, 3, 6
27503 ; PWR5-NEXT: lis 7, 3855
27504 ; PWR5-NEXT: and 5, 4, 6
27505 ; PWR5-NEXT: rotldi 4, 4, 62
27506 ; PWR5-NEXT: add 3, 8, 3
27507 ; PWR5-NEXT: lis 9, 257
27508 ; PWR5-NEXT: ori 7, 7, 3855
27509 ; PWR5-NEXT: and 4, 4, 6
27510 ; PWR5-NEXT: rldicl 6, 3, 60, 4
27511 ; PWR5-NEXT: ori 9, 9, 257
27512 ; PWR5-NEXT: rldimi 7, 7, 32, 0
27513 ; PWR5-NEXT: add 4, 5, 4
27514 ; PWR5-NEXT: add 3, 3, 6
27515 ; PWR5-NEXT: rldimi 9, 9, 32, 0
27516 ; PWR5-NEXT: rldicl 5, 4, 60, 4
27517 ; PWR5-NEXT: and 3, 3, 7
27518 ; PWR5-NEXT: add 4, 4, 5
27519 ; PWR5-NEXT: mulld 3, 3, 9
27520 ; PWR5-NEXT: and 4, 4, 7
27521 ; PWR5-NEXT: rldicl 3, 3, 8, 56
27522 ; PWR5-NEXT: li 5, 60
27523 ; PWR5-NEXT: mulld 4, 4, 9
27524 ; PWR5-NEXT: subc 6, 3, 5
27525 ; PWR5-NEXT: rldicl 4, 4, 8, 56
27526 ; PWR5-NEXT: subfe 3, 3, 3
27527 ; PWR5-NEXT: subc 5, 4, 5
27528 ; PWR5-NEXT: subfe 4, 4, 4
27531 ; PWR6-LABEL: ult_60_v2i64:
27533 ; PWR6-NEXT: lis 5, 21845
27534 ; PWR6-NEXT: lis 6, 13107
27535 ; PWR6-NEXT: ori 5, 5, 21845
27536 ; PWR6-NEXT: rotldi 8, 4, 63
27537 ; PWR6-NEXT: rotldi 9, 3, 63
27538 ; PWR6-NEXT: rldimi 5, 5, 32, 0
27539 ; PWR6-NEXT: and 8, 8, 5
27540 ; PWR6-NEXT: and 5, 9, 5
27541 ; PWR6-NEXT: ori 6, 6, 13107
27542 ; PWR6-NEXT: sub 3, 3, 5
27543 ; PWR6-NEXT: rldimi 6, 6, 32, 0
27544 ; PWR6-NEXT: sub 4, 4, 8
27545 ; PWR6-NEXT: and 8, 3, 6
27546 ; PWR6-NEXT: rotldi 3, 3, 62
27547 ; PWR6-NEXT: and 3, 3, 6
27548 ; PWR6-NEXT: lis 7, 3855
27549 ; PWR6-NEXT: and 5, 4, 6
27550 ; PWR6-NEXT: rotldi 4, 4, 62
27551 ; PWR6-NEXT: add 3, 8, 3
27552 ; PWR6-NEXT: lis 9, 257
27553 ; PWR6-NEXT: ori 7, 7, 3855
27554 ; PWR6-NEXT: and 4, 4, 6
27555 ; PWR6-NEXT: rldicl 6, 3, 60, 4
27556 ; PWR6-NEXT: ori 9, 9, 257
27557 ; PWR6-NEXT: rldimi 7, 7, 32, 0
27558 ; PWR6-NEXT: add 4, 5, 4
27559 ; PWR6-NEXT: add 3, 3, 6
27560 ; PWR6-NEXT: rldimi 9, 9, 32, 0
27561 ; PWR6-NEXT: rldicl 5, 4, 60, 4
27562 ; PWR6-NEXT: and 3, 3, 7
27563 ; PWR6-NEXT: add 4, 4, 5
27564 ; PWR6-NEXT: mulld 3, 3, 9
27565 ; PWR6-NEXT: and 4, 4, 7
27566 ; PWR6-NEXT: rldicl 3, 3, 8, 56
27567 ; PWR6-NEXT: li 5, 60
27568 ; PWR6-NEXT: mulld 4, 4, 9
27569 ; PWR6-NEXT: subc 6, 3, 5
27570 ; PWR6-NEXT: rldicl 4, 4, 8, 56
27571 ; PWR6-NEXT: subfe 3, 3, 3
27572 ; PWR6-NEXT: subc 5, 4, 5
27573 ; PWR6-NEXT: subfe 4, 4, 4
27576 ; PWR7-LABEL: ult_60_v2i64:
27578 ; PWR7-NEXT: addi 3, 1, -32
27579 ; PWR7-NEXT: li 5, 0
27580 ; PWR7-NEXT: li 6, -1
27581 ; PWR7-NEXT: stxvd2x 34, 0, 3
27582 ; PWR7-NEXT: ld 3, -24(1)
27583 ; PWR7-NEXT: ld 4, -32(1)
27584 ; PWR7-NEXT: popcntd 3, 3
27585 ; PWR7-NEXT: popcntd 4, 4
27586 ; PWR7-NEXT: cmpldi 3, 60
27587 ; PWR7-NEXT: isellt 3, 6, 5
27588 ; PWR7-NEXT: cmpldi 4, 60
27589 ; PWR7-NEXT: isellt 4, 6, 5
27590 ; PWR7-NEXT: std 3, -8(1)
27591 ; PWR7-NEXT: addi 3, 1, -16
27592 ; PWR7-NEXT: std 4, -16(1)
27593 ; PWR7-NEXT: lxvd2x 34, 0, 3
27596 ; PWR8-LABEL: ult_60_v2i64:
27598 ; PWR8-NEXT: addis 3, 2, .LCPI217_0@toc@ha
27599 ; PWR8-NEXT: vpopcntd 2, 2
27600 ; PWR8-NEXT: addi 3, 3, .LCPI217_0@toc@l
27601 ; PWR8-NEXT: lxvd2x 35, 0, 3
27602 ; PWR8-NEXT: vcmpgtud 2, 3, 2
27605 ; PWR9-LABEL: ult_60_v2i64:
27607 ; PWR9-NEXT: addis 3, 2, .LCPI217_0@toc@ha
27608 ; PWR9-NEXT: vpopcntd 2, 2
27609 ; PWR9-NEXT: addi 3, 3, .LCPI217_0@toc@l
27610 ; PWR9-NEXT: lxv 35, 0(3)
27611 ; PWR9-NEXT: vcmpgtud 2, 3, 2
27613 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
27614 %3 = icmp ult <2 x i64> %2, <i64 60, i64 60>
27615 %4 = sext <2 x i1> %3 to <2 x i64>
27619 define <2 x i64> @ugt_60_v2i64(<2 x i64> %0) {
27620 ; PWR5-LABEL: ugt_60_v2i64:
27622 ; PWR5-NEXT: lis 5, 21845
27623 ; PWR5-NEXT: lis 6, 13107
27624 ; PWR5-NEXT: ori 5, 5, 21845
27625 ; PWR5-NEXT: rotldi 8, 4, 63
27626 ; PWR5-NEXT: rotldi 9, 3, 63
27627 ; PWR5-NEXT: rldimi 5, 5, 32, 0
27628 ; PWR5-NEXT: and 8, 8, 5
27629 ; PWR5-NEXT: and 5, 9, 5
27630 ; PWR5-NEXT: ori 6, 6, 13107
27631 ; PWR5-NEXT: sub 3, 3, 5
27632 ; PWR5-NEXT: rldimi 6, 6, 32, 0
27633 ; PWR5-NEXT: sub 4, 4, 8
27634 ; PWR5-NEXT: and 8, 3, 6
27635 ; PWR5-NEXT: rotldi 3, 3, 62
27636 ; PWR5-NEXT: and 3, 3, 6
27637 ; PWR5-NEXT: lis 7, 3855
27638 ; PWR5-NEXT: and 5, 4, 6
27639 ; PWR5-NEXT: rotldi 4, 4, 62
27640 ; PWR5-NEXT: add 3, 8, 3
27641 ; PWR5-NEXT: lis 9, 257
27642 ; PWR5-NEXT: ori 7, 7, 3855
27643 ; PWR5-NEXT: and 4, 4, 6
27644 ; PWR5-NEXT: rldicl 6, 3, 60, 4
27645 ; PWR5-NEXT: ori 9, 9, 257
27646 ; PWR5-NEXT: rldimi 7, 7, 32, 0
27647 ; PWR5-NEXT: add 4, 5, 4
27648 ; PWR5-NEXT: add 3, 3, 6
27649 ; PWR5-NEXT: rldimi 9, 9, 32, 0
27650 ; PWR5-NEXT: rldicl 5, 4, 60, 4
27651 ; PWR5-NEXT: and 3, 3, 7
27652 ; PWR5-NEXT: add 4, 4, 5
27653 ; PWR5-NEXT: mulld 3, 3, 9
27654 ; PWR5-NEXT: and 4, 4, 7
27655 ; PWR5-NEXT: rldicl 3, 3, 8, 56
27656 ; PWR5-NEXT: mulld 4, 4, 9
27657 ; PWR5-NEXT: li 5, 60
27658 ; PWR5-NEXT: subfic 3, 3, 60
27659 ; PWR5-NEXT: rldicl 4, 4, 8, 56
27660 ; PWR5-NEXT: subfe 3, 5, 5
27661 ; PWR5-NEXT: subfic 4, 4, 60
27662 ; PWR5-NEXT: subfe 4, 5, 5
27665 ; PWR6-LABEL: ugt_60_v2i64:
27667 ; PWR6-NEXT: lis 5, 21845
27668 ; PWR6-NEXT: lis 6, 13107
27669 ; PWR6-NEXT: ori 5, 5, 21845
27670 ; PWR6-NEXT: rotldi 8, 4, 63
27671 ; PWR6-NEXT: rotldi 9, 3, 63
27672 ; PWR6-NEXT: rldimi 5, 5, 32, 0
27673 ; PWR6-NEXT: and 8, 8, 5
27674 ; PWR6-NEXT: and 5, 9, 5
27675 ; PWR6-NEXT: ori 6, 6, 13107
27676 ; PWR6-NEXT: sub 3, 3, 5
27677 ; PWR6-NEXT: rldimi 6, 6, 32, 0
27678 ; PWR6-NEXT: sub 4, 4, 8
27679 ; PWR6-NEXT: and 8, 3, 6
27680 ; PWR6-NEXT: rotldi 3, 3, 62
27681 ; PWR6-NEXT: and 3, 3, 6
27682 ; PWR6-NEXT: lis 7, 3855
27683 ; PWR6-NEXT: and 5, 4, 6
27684 ; PWR6-NEXT: rotldi 4, 4, 62
27685 ; PWR6-NEXT: add 3, 8, 3
27686 ; PWR6-NEXT: lis 9, 257
27687 ; PWR6-NEXT: ori 7, 7, 3855
27688 ; PWR6-NEXT: and 4, 4, 6
27689 ; PWR6-NEXT: rldicl 6, 3, 60, 4
27690 ; PWR6-NEXT: ori 9, 9, 257
27691 ; PWR6-NEXT: rldimi 7, 7, 32, 0
27692 ; PWR6-NEXT: add 4, 5, 4
27693 ; PWR6-NEXT: add 3, 3, 6
27694 ; PWR6-NEXT: rldimi 9, 9, 32, 0
27695 ; PWR6-NEXT: rldicl 5, 4, 60, 4
27696 ; PWR6-NEXT: and 3, 3, 7
27697 ; PWR6-NEXT: add 4, 4, 5
27698 ; PWR6-NEXT: mulld 3, 3, 9
27699 ; PWR6-NEXT: and 4, 4, 7
27700 ; PWR6-NEXT: rldicl 3, 3, 8, 56
27701 ; PWR6-NEXT: mulld 4, 4, 9
27702 ; PWR6-NEXT: li 5, 60
27703 ; PWR6-NEXT: subfic 3, 3, 60
27704 ; PWR6-NEXT: rldicl 4, 4, 8, 56
27705 ; PWR6-NEXT: subfe 3, 5, 5
27706 ; PWR6-NEXT: subfic 4, 4, 60
27707 ; PWR6-NEXT: subfe 4, 5, 5
27710 ; PWR7-LABEL: ugt_60_v2i64:
27712 ; PWR7-NEXT: addi 3, 1, -32
27713 ; PWR7-NEXT: li 5, 0
27714 ; PWR7-NEXT: li 6, -1
27715 ; PWR7-NEXT: stxvd2x 34, 0, 3
27716 ; PWR7-NEXT: ld 3, -24(1)
27717 ; PWR7-NEXT: ld 4, -32(1)
27718 ; PWR7-NEXT: popcntd 3, 3
27719 ; PWR7-NEXT: popcntd 4, 4
27720 ; PWR7-NEXT: cmpldi 3, 60
27721 ; PWR7-NEXT: iselgt 3, 6, 5
27722 ; PWR7-NEXT: cmpldi 4, 60
27723 ; PWR7-NEXT: iselgt 4, 6, 5
27724 ; PWR7-NEXT: std 3, -8(1)
27725 ; PWR7-NEXT: addi 3, 1, -16
27726 ; PWR7-NEXT: std 4, -16(1)
27727 ; PWR7-NEXT: lxvd2x 34, 0, 3
27730 ; PWR8-LABEL: ugt_60_v2i64:
27732 ; PWR8-NEXT: addis 3, 2, .LCPI218_0@toc@ha
27733 ; PWR8-NEXT: vpopcntd 2, 2
27734 ; PWR8-NEXT: addi 3, 3, .LCPI218_0@toc@l
27735 ; PWR8-NEXT: lxvd2x 35, 0, 3
27736 ; PWR8-NEXT: vcmpgtud 2, 2, 3
27739 ; PWR9-LABEL: ugt_60_v2i64:
27741 ; PWR9-NEXT: addis 3, 2, .LCPI218_0@toc@ha
27742 ; PWR9-NEXT: vpopcntd 2, 2
27743 ; PWR9-NEXT: addi 3, 3, .LCPI218_0@toc@l
27744 ; PWR9-NEXT: lxv 35, 0(3)
27745 ; PWR9-NEXT: vcmpgtud 2, 2, 3
27747 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
27748 %3 = icmp ugt <2 x i64> %2, <i64 60, i64 60>
27749 %4 = sext <2 x i1> %3 to <2 x i64>
27753 define <2 x i64> @ult_61_v2i64(<2 x i64> %0) {
27754 ; PWR5-LABEL: ult_61_v2i64:
27756 ; PWR5-NEXT: lis 5, 21845
27757 ; PWR5-NEXT: lis 6, 13107
27758 ; PWR5-NEXT: ori 5, 5, 21845
27759 ; PWR5-NEXT: rotldi 8, 4, 63
27760 ; PWR5-NEXT: rotldi 9, 3, 63
27761 ; PWR5-NEXT: rldimi 5, 5, 32, 0
27762 ; PWR5-NEXT: and 8, 8, 5
27763 ; PWR5-NEXT: and 5, 9, 5
27764 ; PWR5-NEXT: ori 6, 6, 13107
27765 ; PWR5-NEXT: sub 3, 3, 5
27766 ; PWR5-NEXT: rldimi 6, 6, 32, 0
27767 ; PWR5-NEXT: sub 4, 4, 8
27768 ; PWR5-NEXT: and 8, 3, 6
27769 ; PWR5-NEXT: rotldi 3, 3, 62
27770 ; PWR5-NEXT: and 3, 3, 6
27771 ; PWR5-NEXT: lis 7, 3855
27772 ; PWR5-NEXT: and 5, 4, 6
27773 ; PWR5-NEXT: rotldi 4, 4, 62
27774 ; PWR5-NEXT: add 3, 8, 3
27775 ; PWR5-NEXT: lis 9, 257
27776 ; PWR5-NEXT: ori 7, 7, 3855
27777 ; PWR5-NEXT: and 4, 4, 6
27778 ; PWR5-NEXT: rldicl 6, 3, 60, 4
27779 ; PWR5-NEXT: ori 9, 9, 257
27780 ; PWR5-NEXT: rldimi 7, 7, 32, 0
27781 ; PWR5-NEXT: add 4, 5, 4
27782 ; PWR5-NEXT: add 3, 3, 6
27783 ; PWR5-NEXT: rldimi 9, 9, 32, 0
27784 ; PWR5-NEXT: rldicl 5, 4, 60, 4
27785 ; PWR5-NEXT: and 3, 3, 7
27786 ; PWR5-NEXT: add 4, 4, 5
27787 ; PWR5-NEXT: mulld 3, 3, 9
27788 ; PWR5-NEXT: and 4, 4, 7
27789 ; PWR5-NEXT: rldicl 3, 3, 8, 56
27790 ; PWR5-NEXT: li 5, 61
27791 ; PWR5-NEXT: mulld 4, 4, 9
27792 ; PWR5-NEXT: subc 6, 3, 5
27793 ; PWR5-NEXT: rldicl 4, 4, 8, 56
27794 ; PWR5-NEXT: subfe 3, 3, 3
27795 ; PWR5-NEXT: subc 5, 4, 5
27796 ; PWR5-NEXT: subfe 4, 4, 4
27799 ; PWR6-LABEL: ult_61_v2i64:
27801 ; PWR6-NEXT: lis 5, 21845
27802 ; PWR6-NEXT: lis 6, 13107
27803 ; PWR6-NEXT: ori 5, 5, 21845
27804 ; PWR6-NEXT: rotldi 8, 4, 63
27805 ; PWR6-NEXT: rotldi 9, 3, 63
27806 ; PWR6-NEXT: rldimi 5, 5, 32, 0
27807 ; PWR6-NEXT: and 8, 8, 5
27808 ; PWR6-NEXT: and 5, 9, 5
27809 ; PWR6-NEXT: ori 6, 6, 13107
27810 ; PWR6-NEXT: sub 3, 3, 5
27811 ; PWR6-NEXT: rldimi 6, 6, 32, 0
27812 ; PWR6-NEXT: sub 4, 4, 8
27813 ; PWR6-NEXT: and 8, 3, 6
27814 ; PWR6-NEXT: rotldi 3, 3, 62
27815 ; PWR6-NEXT: and 3, 3, 6
27816 ; PWR6-NEXT: lis 7, 3855
27817 ; PWR6-NEXT: and 5, 4, 6
27818 ; PWR6-NEXT: rotldi 4, 4, 62
27819 ; PWR6-NEXT: add 3, 8, 3
27820 ; PWR6-NEXT: lis 9, 257
27821 ; PWR6-NEXT: ori 7, 7, 3855
27822 ; PWR6-NEXT: and 4, 4, 6
27823 ; PWR6-NEXT: rldicl 6, 3, 60, 4
27824 ; PWR6-NEXT: ori 9, 9, 257
27825 ; PWR6-NEXT: rldimi 7, 7, 32, 0
27826 ; PWR6-NEXT: add 4, 5, 4
27827 ; PWR6-NEXT: add 3, 3, 6
27828 ; PWR6-NEXT: rldimi 9, 9, 32, 0
27829 ; PWR6-NEXT: rldicl 5, 4, 60, 4
27830 ; PWR6-NEXT: and 3, 3, 7
27831 ; PWR6-NEXT: add 4, 4, 5
27832 ; PWR6-NEXT: mulld 3, 3, 9
27833 ; PWR6-NEXT: and 4, 4, 7
27834 ; PWR6-NEXT: rldicl 3, 3, 8, 56
27835 ; PWR6-NEXT: li 5, 61
27836 ; PWR6-NEXT: mulld 4, 4, 9
27837 ; PWR6-NEXT: subc 6, 3, 5
27838 ; PWR6-NEXT: rldicl 4, 4, 8, 56
27839 ; PWR6-NEXT: subfe 3, 3, 3
27840 ; PWR6-NEXT: subc 5, 4, 5
27841 ; PWR6-NEXT: subfe 4, 4, 4
27844 ; PWR7-LABEL: ult_61_v2i64:
27846 ; PWR7-NEXT: addi 3, 1, -32
27847 ; PWR7-NEXT: li 5, 0
27848 ; PWR7-NEXT: li 6, -1
27849 ; PWR7-NEXT: stxvd2x 34, 0, 3
27850 ; PWR7-NEXT: ld 3, -24(1)
27851 ; PWR7-NEXT: ld 4, -32(1)
27852 ; PWR7-NEXT: popcntd 3, 3
27853 ; PWR7-NEXT: popcntd 4, 4
27854 ; PWR7-NEXT: cmpldi 3, 61
27855 ; PWR7-NEXT: isellt 3, 6, 5
27856 ; PWR7-NEXT: cmpldi 4, 61
27857 ; PWR7-NEXT: isellt 4, 6, 5
27858 ; PWR7-NEXT: std 3, -8(1)
27859 ; PWR7-NEXT: addi 3, 1, -16
27860 ; PWR7-NEXT: std 4, -16(1)
27861 ; PWR7-NEXT: lxvd2x 34, 0, 3
27864 ; PWR8-LABEL: ult_61_v2i64:
27866 ; PWR8-NEXT: addis 3, 2, .LCPI219_0@toc@ha
27867 ; PWR8-NEXT: vpopcntd 2, 2
27868 ; PWR8-NEXT: addi 3, 3, .LCPI219_0@toc@l
27869 ; PWR8-NEXT: lxvd2x 35, 0, 3
27870 ; PWR8-NEXT: vcmpgtud 2, 3, 2
27873 ; PWR9-LABEL: ult_61_v2i64:
27875 ; PWR9-NEXT: addis 3, 2, .LCPI219_0@toc@ha
27876 ; PWR9-NEXT: vpopcntd 2, 2
27877 ; PWR9-NEXT: addi 3, 3, .LCPI219_0@toc@l
27878 ; PWR9-NEXT: lxv 35, 0(3)
27879 ; PWR9-NEXT: vcmpgtud 2, 3, 2
27881 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
27882 %3 = icmp ult <2 x i64> %2, <i64 61, i64 61>
27883 %4 = sext <2 x i1> %3 to <2 x i64>
27887 define <2 x i64> @ugt_61_v2i64(<2 x i64> %0) {
27888 ; PWR5-LABEL: ugt_61_v2i64:
27890 ; PWR5-NEXT: lis 5, 21845
27891 ; PWR5-NEXT: lis 6, 13107
27892 ; PWR5-NEXT: ori 5, 5, 21845
27893 ; PWR5-NEXT: rotldi 8, 4, 63
27894 ; PWR5-NEXT: rotldi 9, 3, 63
27895 ; PWR5-NEXT: rldimi 5, 5, 32, 0
27896 ; PWR5-NEXT: and 8, 8, 5
27897 ; PWR5-NEXT: and 5, 9, 5
27898 ; PWR5-NEXT: ori 6, 6, 13107
27899 ; PWR5-NEXT: sub 3, 3, 5
27900 ; PWR5-NEXT: rldimi 6, 6, 32, 0
27901 ; PWR5-NEXT: sub 4, 4, 8
27902 ; PWR5-NEXT: and 8, 3, 6
27903 ; PWR5-NEXT: rotldi 3, 3, 62
27904 ; PWR5-NEXT: and 3, 3, 6
27905 ; PWR5-NEXT: lis 7, 3855
27906 ; PWR5-NEXT: and 5, 4, 6
27907 ; PWR5-NEXT: rotldi 4, 4, 62
27908 ; PWR5-NEXT: add 3, 8, 3
27909 ; PWR5-NEXT: lis 9, 257
27910 ; PWR5-NEXT: ori 7, 7, 3855
27911 ; PWR5-NEXT: and 4, 4, 6
27912 ; PWR5-NEXT: rldicl 6, 3, 60, 4
27913 ; PWR5-NEXT: ori 9, 9, 257
27914 ; PWR5-NEXT: rldimi 7, 7, 32, 0
27915 ; PWR5-NEXT: add 4, 5, 4
27916 ; PWR5-NEXT: add 3, 3, 6
27917 ; PWR5-NEXT: rldimi 9, 9, 32, 0
27918 ; PWR5-NEXT: rldicl 5, 4, 60, 4
27919 ; PWR5-NEXT: and 3, 3, 7
27920 ; PWR5-NEXT: add 4, 4, 5
27921 ; PWR5-NEXT: mulld 3, 3, 9
27922 ; PWR5-NEXT: and 4, 4, 7
27923 ; PWR5-NEXT: rldicl 3, 3, 8, 56
27924 ; PWR5-NEXT: mulld 4, 4, 9
27925 ; PWR5-NEXT: li 5, 61
27926 ; PWR5-NEXT: subfic 3, 3, 61
27927 ; PWR5-NEXT: rldicl 4, 4, 8, 56
27928 ; PWR5-NEXT: subfe 3, 5, 5
27929 ; PWR5-NEXT: subfic 4, 4, 61
27930 ; PWR5-NEXT: subfe 4, 5, 5
27933 ; PWR6-LABEL: ugt_61_v2i64:
27935 ; PWR6-NEXT: lis 5, 21845
27936 ; PWR6-NEXT: lis 6, 13107
27937 ; PWR6-NEXT: ori 5, 5, 21845
27938 ; PWR6-NEXT: rotldi 8, 4, 63
27939 ; PWR6-NEXT: rotldi 9, 3, 63
27940 ; PWR6-NEXT: rldimi 5, 5, 32, 0
27941 ; PWR6-NEXT: and 8, 8, 5
27942 ; PWR6-NEXT: and 5, 9, 5
27943 ; PWR6-NEXT: ori 6, 6, 13107
27944 ; PWR6-NEXT: sub 3, 3, 5
27945 ; PWR6-NEXT: rldimi 6, 6, 32, 0
27946 ; PWR6-NEXT: sub 4, 4, 8
27947 ; PWR6-NEXT: and 8, 3, 6
27948 ; PWR6-NEXT: rotldi 3, 3, 62
27949 ; PWR6-NEXT: and 3, 3, 6
27950 ; PWR6-NEXT: lis 7, 3855
27951 ; PWR6-NEXT: and 5, 4, 6
27952 ; PWR6-NEXT: rotldi 4, 4, 62
27953 ; PWR6-NEXT: add 3, 8, 3
27954 ; PWR6-NEXT: lis 9, 257
27955 ; PWR6-NEXT: ori 7, 7, 3855
27956 ; PWR6-NEXT: and 4, 4, 6
27957 ; PWR6-NEXT: rldicl 6, 3, 60, 4
27958 ; PWR6-NEXT: ori 9, 9, 257
27959 ; PWR6-NEXT: rldimi 7, 7, 32, 0
27960 ; PWR6-NEXT: add 4, 5, 4
27961 ; PWR6-NEXT: add 3, 3, 6
27962 ; PWR6-NEXT: rldimi 9, 9, 32, 0
27963 ; PWR6-NEXT: rldicl 5, 4, 60, 4
27964 ; PWR6-NEXT: and 3, 3, 7
27965 ; PWR6-NEXT: add 4, 4, 5
27966 ; PWR6-NEXT: mulld 3, 3, 9
27967 ; PWR6-NEXT: and 4, 4, 7
27968 ; PWR6-NEXT: rldicl 3, 3, 8, 56
27969 ; PWR6-NEXT: mulld 4, 4, 9
27970 ; PWR6-NEXT: li 5, 61
27971 ; PWR6-NEXT: subfic 3, 3, 61
27972 ; PWR6-NEXT: rldicl 4, 4, 8, 56
27973 ; PWR6-NEXT: subfe 3, 5, 5
27974 ; PWR6-NEXT: subfic 4, 4, 61
27975 ; PWR6-NEXT: subfe 4, 5, 5
27978 ; PWR7-LABEL: ugt_61_v2i64:
27980 ; PWR7-NEXT: addi 3, 1, -32
27981 ; PWR7-NEXT: li 5, 0
27982 ; PWR7-NEXT: li 6, -1
27983 ; PWR7-NEXT: stxvd2x 34, 0, 3
27984 ; PWR7-NEXT: ld 3, -24(1)
27985 ; PWR7-NEXT: ld 4, -32(1)
27986 ; PWR7-NEXT: popcntd 3, 3
27987 ; PWR7-NEXT: popcntd 4, 4
27988 ; PWR7-NEXT: cmpldi 3, 61
27989 ; PWR7-NEXT: iselgt 3, 6, 5
27990 ; PWR7-NEXT: cmpldi 4, 61
27991 ; PWR7-NEXT: iselgt 4, 6, 5
27992 ; PWR7-NEXT: std 3, -8(1)
27993 ; PWR7-NEXT: addi 3, 1, -16
27994 ; PWR7-NEXT: std 4, -16(1)
27995 ; PWR7-NEXT: lxvd2x 34, 0, 3
27998 ; PWR8-LABEL: ugt_61_v2i64:
28000 ; PWR8-NEXT: addis 3, 2, .LCPI220_0@toc@ha
28001 ; PWR8-NEXT: vpopcntd 2, 2
28002 ; PWR8-NEXT: addi 3, 3, .LCPI220_0@toc@l
28003 ; PWR8-NEXT: lxvd2x 35, 0, 3
28004 ; PWR8-NEXT: vcmpgtud 2, 2, 3
28007 ; PWR9-LABEL: ugt_61_v2i64:
28009 ; PWR9-NEXT: addis 3, 2, .LCPI220_0@toc@ha
28010 ; PWR9-NEXT: vpopcntd 2, 2
28011 ; PWR9-NEXT: addi 3, 3, .LCPI220_0@toc@l
28012 ; PWR9-NEXT: lxv 35, 0(3)
28013 ; PWR9-NEXT: vcmpgtud 2, 2, 3
28015 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
28016 %3 = icmp ugt <2 x i64> %2, <i64 61, i64 61>
28017 %4 = sext <2 x i1> %3 to <2 x i64>
28021 define <2 x i64> @ult_62_v2i64(<2 x i64> %0) {
28022 ; PWR5-LABEL: ult_62_v2i64:
28024 ; PWR5-NEXT: lis 5, 21845
28025 ; PWR5-NEXT: lis 6, 13107
28026 ; PWR5-NEXT: ori 5, 5, 21845
28027 ; PWR5-NEXT: rotldi 8, 4, 63
28028 ; PWR5-NEXT: rotldi 9, 3, 63
28029 ; PWR5-NEXT: rldimi 5, 5, 32, 0
28030 ; PWR5-NEXT: and 8, 8, 5
28031 ; PWR5-NEXT: and 5, 9, 5
28032 ; PWR5-NEXT: ori 6, 6, 13107
28033 ; PWR5-NEXT: sub 3, 3, 5
28034 ; PWR5-NEXT: rldimi 6, 6, 32, 0
28035 ; PWR5-NEXT: sub 4, 4, 8
28036 ; PWR5-NEXT: and 8, 3, 6
28037 ; PWR5-NEXT: rotldi 3, 3, 62
28038 ; PWR5-NEXT: and 3, 3, 6
28039 ; PWR5-NEXT: lis 7, 3855
28040 ; PWR5-NEXT: and 5, 4, 6
28041 ; PWR5-NEXT: rotldi 4, 4, 62
28042 ; PWR5-NEXT: add 3, 8, 3
28043 ; PWR5-NEXT: lis 9, 257
28044 ; PWR5-NEXT: ori 7, 7, 3855
28045 ; PWR5-NEXT: and 4, 4, 6
28046 ; PWR5-NEXT: rldicl 6, 3, 60, 4
28047 ; PWR5-NEXT: ori 9, 9, 257
28048 ; PWR5-NEXT: rldimi 7, 7, 32, 0
28049 ; PWR5-NEXT: add 4, 5, 4
28050 ; PWR5-NEXT: add 3, 3, 6
28051 ; PWR5-NEXT: rldimi 9, 9, 32, 0
28052 ; PWR5-NEXT: rldicl 5, 4, 60, 4
28053 ; PWR5-NEXT: and 3, 3, 7
28054 ; PWR5-NEXT: add 4, 4, 5
28055 ; PWR5-NEXT: mulld 3, 3, 9
28056 ; PWR5-NEXT: and 4, 4, 7
28057 ; PWR5-NEXT: rldicl 3, 3, 8, 56
28058 ; PWR5-NEXT: li 5, 62
28059 ; PWR5-NEXT: mulld 4, 4, 9
28060 ; PWR5-NEXT: subc 6, 3, 5
28061 ; PWR5-NEXT: rldicl 4, 4, 8, 56
28062 ; PWR5-NEXT: subfe 3, 3, 3
28063 ; PWR5-NEXT: subc 5, 4, 5
28064 ; PWR5-NEXT: subfe 4, 4, 4
28067 ; PWR6-LABEL: ult_62_v2i64:
28069 ; PWR6-NEXT: lis 5, 21845
28070 ; PWR6-NEXT: lis 6, 13107
28071 ; PWR6-NEXT: ori 5, 5, 21845
28072 ; PWR6-NEXT: rotldi 8, 4, 63
28073 ; PWR6-NEXT: rotldi 9, 3, 63
28074 ; PWR6-NEXT: rldimi 5, 5, 32, 0
28075 ; PWR6-NEXT: and 8, 8, 5
28076 ; PWR6-NEXT: and 5, 9, 5
28077 ; PWR6-NEXT: ori 6, 6, 13107
28078 ; PWR6-NEXT: sub 3, 3, 5
28079 ; PWR6-NEXT: rldimi 6, 6, 32, 0
28080 ; PWR6-NEXT: sub 4, 4, 8
28081 ; PWR6-NEXT: and 8, 3, 6
28082 ; PWR6-NEXT: rotldi 3, 3, 62
28083 ; PWR6-NEXT: and 3, 3, 6
28084 ; PWR6-NEXT: lis 7, 3855
28085 ; PWR6-NEXT: and 5, 4, 6
28086 ; PWR6-NEXT: rotldi 4, 4, 62
28087 ; PWR6-NEXT: add 3, 8, 3
28088 ; PWR6-NEXT: lis 9, 257
28089 ; PWR6-NEXT: ori 7, 7, 3855
28090 ; PWR6-NEXT: and 4, 4, 6
28091 ; PWR6-NEXT: rldicl 6, 3, 60, 4
28092 ; PWR6-NEXT: ori 9, 9, 257
28093 ; PWR6-NEXT: rldimi 7, 7, 32, 0
28094 ; PWR6-NEXT: add 4, 5, 4
28095 ; PWR6-NEXT: add 3, 3, 6
28096 ; PWR6-NEXT: rldimi 9, 9, 32, 0
28097 ; PWR6-NEXT: rldicl 5, 4, 60, 4
28098 ; PWR6-NEXT: and 3, 3, 7
28099 ; PWR6-NEXT: add 4, 4, 5
28100 ; PWR6-NEXT: mulld 3, 3, 9
28101 ; PWR6-NEXT: and 4, 4, 7
28102 ; PWR6-NEXT: rldicl 3, 3, 8, 56
28103 ; PWR6-NEXT: li 5, 62
28104 ; PWR6-NEXT: mulld 4, 4, 9
28105 ; PWR6-NEXT: subc 6, 3, 5
28106 ; PWR6-NEXT: rldicl 4, 4, 8, 56
28107 ; PWR6-NEXT: subfe 3, 3, 3
28108 ; PWR6-NEXT: subc 5, 4, 5
28109 ; PWR6-NEXT: subfe 4, 4, 4
28112 ; PWR7-LABEL: ult_62_v2i64:
28114 ; PWR7-NEXT: addi 3, 1, -32
28115 ; PWR7-NEXT: li 5, 0
28116 ; PWR7-NEXT: li 6, -1
28117 ; PWR7-NEXT: stxvd2x 34, 0, 3
28118 ; PWR7-NEXT: ld 3, -24(1)
28119 ; PWR7-NEXT: ld 4, -32(1)
28120 ; PWR7-NEXT: popcntd 3, 3
28121 ; PWR7-NEXT: popcntd 4, 4
28122 ; PWR7-NEXT: cmpldi 3, 62
28123 ; PWR7-NEXT: isellt 3, 6, 5
28124 ; PWR7-NEXT: cmpldi 4, 62
28125 ; PWR7-NEXT: isellt 4, 6, 5
28126 ; PWR7-NEXT: std 3, -8(1)
28127 ; PWR7-NEXT: addi 3, 1, -16
28128 ; PWR7-NEXT: std 4, -16(1)
28129 ; PWR7-NEXT: lxvd2x 34, 0, 3
28132 ; PWR8-LABEL: ult_62_v2i64:
28134 ; PWR8-NEXT: addis 3, 2, .LCPI221_0@toc@ha
28135 ; PWR8-NEXT: vpopcntd 2, 2
28136 ; PWR8-NEXT: addi 3, 3, .LCPI221_0@toc@l
28137 ; PWR8-NEXT: lxvd2x 35, 0, 3
28138 ; PWR8-NEXT: vcmpgtud 2, 3, 2
28141 ; PWR9-LABEL: ult_62_v2i64:
28143 ; PWR9-NEXT: addis 3, 2, .LCPI221_0@toc@ha
28144 ; PWR9-NEXT: vpopcntd 2, 2
28145 ; PWR9-NEXT: addi 3, 3, .LCPI221_0@toc@l
28146 ; PWR9-NEXT: lxv 35, 0(3)
28147 ; PWR9-NEXT: vcmpgtud 2, 3, 2
28149 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
28150 %3 = icmp ult <2 x i64> %2, <i64 62, i64 62>
28151 %4 = sext <2 x i1> %3 to <2 x i64>
28155 define <2 x i64> @ugt_62_v2i64(<2 x i64> %0) {
28156 ; PWR5-LABEL: ugt_62_v2i64:
28158 ; PWR5-NEXT: lis 5, 21845
28159 ; PWR5-NEXT: lis 6, 13107
28160 ; PWR5-NEXT: ori 5, 5, 21845
28161 ; PWR5-NEXT: rotldi 8, 4, 63
28162 ; PWR5-NEXT: rotldi 9, 3, 63
28163 ; PWR5-NEXT: rldimi 5, 5, 32, 0
28164 ; PWR5-NEXT: and 8, 8, 5
28165 ; PWR5-NEXT: and 5, 9, 5
28166 ; PWR5-NEXT: ori 6, 6, 13107
28167 ; PWR5-NEXT: sub 3, 3, 5
28168 ; PWR5-NEXT: rldimi 6, 6, 32, 0
28169 ; PWR5-NEXT: sub 4, 4, 8
28170 ; PWR5-NEXT: and 8, 3, 6
28171 ; PWR5-NEXT: rotldi 3, 3, 62
28172 ; PWR5-NEXT: and 3, 3, 6
28173 ; PWR5-NEXT: lis 7, 3855
28174 ; PWR5-NEXT: and 5, 4, 6
28175 ; PWR5-NEXT: rotldi 4, 4, 62
28176 ; PWR5-NEXT: add 3, 8, 3
28177 ; PWR5-NEXT: lis 9, 257
28178 ; PWR5-NEXT: ori 7, 7, 3855
28179 ; PWR5-NEXT: and 4, 4, 6
28180 ; PWR5-NEXT: rldicl 6, 3, 60, 4
28181 ; PWR5-NEXT: ori 9, 9, 257
28182 ; PWR5-NEXT: rldimi 7, 7, 32, 0
28183 ; PWR5-NEXT: add 4, 5, 4
28184 ; PWR5-NEXT: add 3, 3, 6
28185 ; PWR5-NEXT: rldimi 9, 9, 32, 0
28186 ; PWR5-NEXT: rldicl 5, 4, 60, 4
28187 ; PWR5-NEXT: and 3, 3, 7
28188 ; PWR5-NEXT: add 4, 4, 5
28189 ; PWR5-NEXT: mulld 3, 3, 9
28190 ; PWR5-NEXT: and 4, 4, 7
28191 ; PWR5-NEXT: rldicl 3, 3, 8, 56
28192 ; PWR5-NEXT: mulld 4, 4, 9
28193 ; PWR5-NEXT: li 5, 62
28194 ; PWR5-NEXT: subfic 3, 3, 62
28195 ; PWR5-NEXT: rldicl 4, 4, 8, 56
28196 ; PWR5-NEXT: subfe 3, 5, 5
28197 ; PWR5-NEXT: subfic 4, 4, 62
28198 ; PWR5-NEXT: subfe 4, 5, 5
28201 ; PWR6-LABEL: ugt_62_v2i64:
28203 ; PWR6-NEXT: lis 5, 21845
28204 ; PWR6-NEXT: lis 6, 13107
28205 ; PWR6-NEXT: ori 5, 5, 21845
28206 ; PWR6-NEXT: rotldi 8, 4, 63
28207 ; PWR6-NEXT: rotldi 9, 3, 63
28208 ; PWR6-NEXT: rldimi 5, 5, 32, 0
28209 ; PWR6-NEXT: and 8, 8, 5
28210 ; PWR6-NEXT: and 5, 9, 5
28211 ; PWR6-NEXT: ori 6, 6, 13107
28212 ; PWR6-NEXT: sub 3, 3, 5
28213 ; PWR6-NEXT: rldimi 6, 6, 32, 0
28214 ; PWR6-NEXT: sub 4, 4, 8
28215 ; PWR6-NEXT: and 8, 3, 6
28216 ; PWR6-NEXT: rotldi 3, 3, 62
28217 ; PWR6-NEXT: and 3, 3, 6
28218 ; PWR6-NEXT: lis 7, 3855
28219 ; PWR6-NEXT: and 5, 4, 6
28220 ; PWR6-NEXT: rotldi 4, 4, 62
28221 ; PWR6-NEXT: add 3, 8, 3
28222 ; PWR6-NEXT: lis 9, 257
28223 ; PWR6-NEXT: ori 7, 7, 3855
28224 ; PWR6-NEXT: and 4, 4, 6
28225 ; PWR6-NEXT: rldicl 6, 3, 60, 4
28226 ; PWR6-NEXT: ori 9, 9, 257
28227 ; PWR6-NEXT: rldimi 7, 7, 32, 0
28228 ; PWR6-NEXT: add 4, 5, 4
28229 ; PWR6-NEXT: add 3, 3, 6
28230 ; PWR6-NEXT: rldimi 9, 9, 32, 0
28231 ; PWR6-NEXT: rldicl 5, 4, 60, 4
28232 ; PWR6-NEXT: and 3, 3, 7
28233 ; PWR6-NEXT: add 4, 4, 5
28234 ; PWR6-NEXT: mulld 3, 3, 9
28235 ; PWR6-NEXT: and 4, 4, 7
28236 ; PWR6-NEXT: rldicl 3, 3, 8, 56
28237 ; PWR6-NEXT: mulld 4, 4, 9
28238 ; PWR6-NEXT: li 5, 62
28239 ; PWR6-NEXT: subfic 3, 3, 62
28240 ; PWR6-NEXT: rldicl 4, 4, 8, 56
28241 ; PWR6-NEXT: subfe 3, 5, 5
28242 ; PWR6-NEXT: subfic 4, 4, 62
28243 ; PWR6-NEXT: subfe 4, 5, 5
28246 ; PWR7-LABEL: ugt_62_v2i64:
28248 ; PWR7-NEXT: addi 3, 1, -32
28249 ; PWR7-NEXT: li 5, 0
28250 ; PWR7-NEXT: li 6, -1
28251 ; PWR7-NEXT: stxvd2x 34, 0, 3
28252 ; PWR7-NEXT: ld 3, -24(1)
28253 ; PWR7-NEXT: ld 4, -32(1)
28254 ; PWR7-NEXT: popcntd 3, 3
28255 ; PWR7-NEXT: popcntd 4, 4
28256 ; PWR7-NEXT: cmpldi 3, 62
28257 ; PWR7-NEXT: iselgt 3, 6, 5
28258 ; PWR7-NEXT: cmpldi 4, 62
28259 ; PWR7-NEXT: iselgt 4, 6, 5
28260 ; PWR7-NEXT: std 3, -8(1)
28261 ; PWR7-NEXT: addi 3, 1, -16
28262 ; PWR7-NEXT: std 4, -16(1)
28263 ; PWR7-NEXT: lxvd2x 34, 0, 3
28266 ; PWR8-LABEL: ugt_62_v2i64:
28268 ; PWR8-NEXT: addis 3, 2, .LCPI222_0@toc@ha
28269 ; PWR8-NEXT: vpopcntd 2, 2
28270 ; PWR8-NEXT: addi 3, 3, .LCPI222_0@toc@l
28271 ; PWR8-NEXT: lxvd2x 35, 0, 3
28272 ; PWR8-NEXT: vcmpgtud 2, 2, 3
28275 ; PWR9-LABEL: ugt_62_v2i64:
28277 ; PWR9-NEXT: addis 3, 2, .LCPI222_0@toc@ha
28278 ; PWR9-NEXT: vpopcntd 2, 2
28279 ; PWR9-NEXT: addi 3, 3, .LCPI222_0@toc@l
28280 ; PWR9-NEXT: lxv 35, 0(3)
28281 ; PWR9-NEXT: vcmpgtud 2, 2, 3
28283 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
28284 %3 = icmp ugt <2 x i64> %2, <i64 62, i64 62>
28285 %4 = sext <2 x i1> %3 to <2 x i64>
28289 define <2 x i64> @ult_63_v2i64(<2 x i64> %0) {
28290 ; PWR5-LABEL: ult_63_v2i64:
28292 ; PWR5-NEXT: lis 5, 21845
28293 ; PWR5-NEXT: lis 6, 13107
28294 ; PWR5-NEXT: ori 5, 5, 21845
28295 ; PWR5-NEXT: rotldi 8, 4, 63
28296 ; PWR5-NEXT: rotldi 9, 3, 63
28297 ; PWR5-NEXT: rldimi 5, 5, 32, 0
28298 ; PWR5-NEXT: and 8, 8, 5
28299 ; PWR5-NEXT: and 5, 9, 5
28300 ; PWR5-NEXT: ori 6, 6, 13107
28301 ; PWR5-NEXT: sub 3, 3, 5
28302 ; PWR5-NEXT: rldimi 6, 6, 32, 0
28303 ; PWR5-NEXT: sub 4, 4, 8
28304 ; PWR5-NEXT: and 8, 3, 6
28305 ; PWR5-NEXT: rotldi 3, 3, 62
28306 ; PWR5-NEXT: and 3, 3, 6
28307 ; PWR5-NEXT: lis 7, 3855
28308 ; PWR5-NEXT: and 5, 4, 6
28309 ; PWR5-NEXT: rotldi 4, 4, 62
28310 ; PWR5-NEXT: add 3, 8, 3
28311 ; PWR5-NEXT: lis 9, 257
28312 ; PWR5-NEXT: ori 7, 7, 3855
28313 ; PWR5-NEXT: and 4, 4, 6
28314 ; PWR5-NEXT: rldicl 6, 3, 60, 4
28315 ; PWR5-NEXT: ori 9, 9, 257
28316 ; PWR5-NEXT: rldimi 7, 7, 32, 0
28317 ; PWR5-NEXT: add 4, 5, 4
28318 ; PWR5-NEXT: add 3, 3, 6
28319 ; PWR5-NEXT: rldimi 9, 9, 32, 0
28320 ; PWR5-NEXT: rldicl 5, 4, 60, 4
28321 ; PWR5-NEXT: and 3, 3, 7
28322 ; PWR5-NEXT: add 4, 4, 5
28323 ; PWR5-NEXT: mulld 3, 3, 9
28324 ; PWR5-NEXT: and 4, 4, 7
28325 ; PWR5-NEXT: rldicl 3, 3, 8, 56
28326 ; PWR5-NEXT: li 5, 63
28327 ; PWR5-NEXT: mulld 4, 4, 9
28328 ; PWR5-NEXT: subc 6, 3, 5
28329 ; PWR5-NEXT: rldicl 4, 4, 8, 56
28330 ; PWR5-NEXT: subfe 3, 3, 3
28331 ; PWR5-NEXT: subc 5, 4, 5
28332 ; PWR5-NEXT: subfe 4, 4, 4
28335 ; PWR6-LABEL: ult_63_v2i64:
28337 ; PWR6-NEXT: lis 5, 21845
28338 ; PWR6-NEXT: lis 6, 13107
28339 ; PWR6-NEXT: ori 5, 5, 21845
28340 ; PWR6-NEXT: rotldi 8, 4, 63
28341 ; PWR6-NEXT: rotldi 9, 3, 63
28342 ; PWR6-NEXT: rldimi 5, 5, 32, 0
28343 ; PWR6-NEXT: and 8, 8, 5
28344 ; PWR6-NEXT: and 5, 9, 5
28345 ; PWR6-NEXT: ori 6, 6, 13107
28346 ; PWR6-NEXT: sub 3, 3, 5
28347 ; PWR6-NEXT: rldimi 6, 6, 32, 0
28348 ; PWR6-NEXT: sub 4, 4, 8
28349 ; PWR6-NEXT: and 8, 3, 6
28350 ; PWR6-NEXT: rotldi 3, 3, 62
28351 ; PWR6-NEXT: and 3, 3, 6
28352 ; PWR6-NEXT: lis 7, 3855
28353 ; PWR6-NEXT: and 5, 4, 6
28354 ; PWR6-NEXT: rotldi 4, 4, 62
28355 ; PWR6-NEXT: add 3, 8, 3
28356 ; PWR6-NEXT: lis 9, 257
28357 ; PWR6-NEXT: ori 7, 7, 3855
28358 ; PWR6-NEXT: and 4, 4, 6
28359 ; PWR6-NEXT: rldicl 6, 3, 60, 4
28360 ; PWR6-NEXT: ori 9, 9, 257
28361 ; PWR6-NEXT: rldimi 7, 7, 32, 0
28362 ; PWR6-NEXT: add 4, 5, 4
28363 ; PWR6-NEXT: add 3, 3, 6
28364 ; PWR6-NEXT: rldimi 9, 9, 32, 0
28365 ; PWR6-NEXT: rldicl 5, 4, 60, 4
28366 ; PWR6-NEXT: and 3, 3, 7
28367 ; PWR6-NEXT: add 4, 4, 5
28368 ; PWR6-NEXT: mulld 3, 3, 9
28369 ; PWR6-NEXT: and 4, 4, 7
28370 ; PWR6-NEXT: rldicl 3, 3, 8, 56
28371 ; PWR6-NEXT: li 5, 63
28372 ; PWR6-NEXT: mulld 4, 4, 9
28373 ; PWR6-NEXT: subc 6, 3, 5
28374 ; PWR6-NEXT: rldicl 4, 4, 8, 56
28375 ; PWR6-NEXT: subfe 3, 3, 3
28376 ; PWR6-NEXT: subc 5, 4, 5
28377 ; PWR6-NEXT: subfe 4, 4, 4
28380 ; PWR7-LABEL: ult_63_v2i64:
28382 ; PWR7-NEXT: addi 3, 1, -32
28383 ; PWR7-NEXT: li 5, 0
28384 ; PWR7-NEXT: li 6, -1
28385 ; PWR7-NEXT: stxvd2x 34, 0, 3
28386 ; PWR7-NEXT: ld 3, -24(1)
28387 ; PWR7-NEXT: ld 4, -32(1)
28388 ; PWR7-NEXT: popcntd 3, 3
28389 ; PWR7-NEXT: popcntd 4, 4
28390 ; PWR7-NEXT: cmpldi 3, 63
28391 ; PWR7-NEXT: isellt 3, 6, 5
28392 ; PWR7-NEXT: cmpldi 4, 63
28393 ; PWR7-NEXT: isellt 4, 6, 5
28394 ; PWR7-NEXT: std 3, -8(1)
28395 ; PWR7-NEXT: addi 3, 1, -16
28396 ; PWR7-NEXT: std 4, -16(1)
28397 ; PWR7-NEXT: lxvd2x 34, 0, 3
28400 ; PWR8-LABEL: ult_63_v2i64:
28402 ; PWR8-NEXT: addis 3, 2, .LCPI223_0@toc@ha
28403 ; PWR8-NEXT: vpopcntd 2, 2
28404 ; PWR8-NEXT: addi 3, 3, .LCPI223_0@toc@l
28405 ; PWR8-NEXT: lxvd2x 35, 0, 3
28406 ; PWR8-NEXT: vcmpgtud 2, 3, 2
28409 ; PWR9-LABEL: ult_63_v2i64:
28411 ; PWR9-NEXT: addis 3, 2, .LCPI223_0@toc@ha
28412 ; PWR9-NEXT: vpopcntd 2, 2
28413 ; PWR9-NEXT: addi 3, 3, .LCPI223_0@toc@l
28414 ; PWR9-NEXT: lxv 35, 0(3)
28415 ; PWR9-NEXT: vcmpgtud 2, 3, 2
28417 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
28418 %3 = icmp ult <2 x i64> %2, <i64 63, i64 63>
28419 %4 = sext <2 x i1> %3 to <2 x i64>
28423 declare <16 x i8> @llvm.ctpop.v16i8(<16 x i8>)
28424 declare <8 x i16> @llvm.ctpop.v8i16(<8 x i16>)
28425 declare <4 x i32> @llvm.ctpop.v4i32(<4 x i32>)
28426 declare <2 x i64> @llvm.ctpop.v2i64(<2 x i64>)