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: addi 3, 3, .LCPI2_1@toc@l
167 ; PWR7-NEXT: vsrb 3, 2, 3
168 ; PWR7-NEXT: vspltisb 0, 15
169 ; PWR7-NEXT: xxland 35, 35, 0
170 ; PWR7-NEXT: lxvw4x 0, 0, 3
171 ; PWR7-NEXT: vsububm 2, 2, 3
172 ; PWR7-NEXT: xxland 35, 34, 0
173 ; PWR7-NEXT: vsrb 2, 2, 4
174 ; PWR7-NEXT: xxland 34, 34, 0
175 ; PWR7-NEXT: vaddubm 2, 3, 2
176 ; PWR7-NEXT: vsrb 3, 2, 5
177 ; PWR7-NEXT: vaddubm 2, 2, 3
178 ; PWR7-NEXT: xxland 34, 34, 32
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: vspltisb 5, 4
263 ; PWR7-NEXT: addi 3, 3, .LCPI3_1@toc@l
264 ; PWR7-NEXT: vsrb 3, 2, 3
265 ; PWR7-NEXT: vspltisb 0, 15
266 ; PWR7-NEXT: vspltisb 1, 3
267 ; PWR7-NEXT: xxland 35, 35, 0
268 ; PWR7-NEXT: lxvw4x 0, 0, 3
269 ; PWR7-NEXT: vsububm 2, 2, 3
270 ; PWR7-NEXT: vsrb 3, 2, 4
271 ; PWR7-NEXT: xxland 34, 34, 0
272 ; PWR7-NEXT: xxland 35, 35, 0
273 ; PWR7-NEXT: vaddubm 2, 2, 3
274 ; PWR7-NEXT: vsrb 3, 2, 5
275 ; PWR7-NEXT: vaddubm 2, 2, 3
276 ; PWR7-NEXT: xxland 34, 34, 32
277 ; PWR7-NEXT: vcmpgtub 2, 1, 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: vspltisb 5, 4
361 ; PWR7-NEXT: addi 3, 3, .LCPI4_1@toc@l
362 ; PWR7-NEXT: vsrb 3, 2, 3
363 ; PWR7-NEXT: vspltisb 0, 15
364 ; PWR7-NEXT: vspltisb 1, 3
365 ; PWR7-NEXT: xxland 35, 35, 0
366 ; PWR7-NEXT: lxvw4x 0, 0, 3
367 ; PWR7-NEXT: vsububm 2, 2, 3
368 ; PWR7-NEXT: vsrb 3, 2, 4
369 ; PWR7-NEXT: xxland 34, 34, 0
370 ; PWR7-NEXT: xxland 35, 35, 0
371 ; PWR7-NEXT: vaddubm 2, 2, 3
372 ; PWR7-NEXT: vsrb 3, 2, 5
373 ; PWR7-NEXT: vaddubm 2, 2, 3
374 ; PWR7-NEXT: xxland 34, 34, 32
375 ; PWR7-NEXT: vcmpgtub 2, 2, 1
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, 4
457 ; PWR7-NEXT: addi 3, 3, .LCPI5_1@toc@l
458 ; PWR7-NEXT: vsrb 3, 2, 3
459 ; PWR7-NEXT: vspltisb 0, 15
460 ; PWR7-NEXT: xxland 35, 35, 0
461 ; PWR7-NEXT: lxvw4x 0, 0, 3
462 ; PWR7-NEXT: vsububm 2, 2, 3
463 ; PWR7-NEXT: vsrb 3, 2, 4
464 ; PWR7-NEXT: xxland 34, 34, 0
465 ; PWR7-NEXT: xxland 35, 35, 0
466 ; PWR7-NEXT: vaddubm 2, 2, 3
467 ; PWR7-NEXT: vsrb 3, 2, 5
468 ; PWR7-NEXT: vaddubm 2, 2, 3
469 ; PWR7-NEXT: xxland 34, 34, 32
470 ; PWR7-NEXT: vcmpgtub 2, 5, 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, 4
552 ; PWR7-NEXT: addi 3, 3, .LCPI6_1@toc@l
553 ; PWR7-NEXT: vsrb 3, 2, 3
554 ; PWR7-NEXT: vspltisb 0, 15
555 ; PWR7-NEXT: xxland 35, 35, 0
556 ; PWR7-NEXT: lxvw4x 0, 0, 3
557 ; PWR7-NEXT: vsububm 2, 2, 3
558 ; PWR7-NEXT: vsrb 3, 2, 4
559 ; PWR7-NEXT: xxland 34, 34, 0
560 ; PWR7-NEXT: xxland 35, 35, 0
561 ; PWR7-NEXT: vaddubm 2, 2, 3
562 ; PWR7-NEXT: vsrb 3, 2, 5
563 ; PWR7-NEXT: vaddubm 2, 2, 3
564 ; PWR7-NEXT: xxland 34, 34, 32
565 ; PWR7-NEXT: vcmpgtub 2, 2, 5
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: vspltisb 5, 4
649 ; PWR7-NEXT: addi 3, 3, .LCPI7_1@toc@l
650 ; PWR7-NEXT: vsrb 3, 2, 3
651 ; PWR7-NEXT: vspltisb 0, 15
652 ; PWR7-NEXT: vspltisb 1, 5
653 ; PWR7-NEXT: xxland 35, 35, 0
654 ; PWR7-NEXT: lxvw4x 0, 0, 3
655 ; PWR7-NEXT: vsububm 2, 2, 3
656 ; PWR7-NEXT: vsrb 3, 2, 4
657 ; PWR7-NEXT: xxland 34, 34, 0
658 ; PWR7-NEXT: xxland 35, 35, 0
659 ; PWR7-NEXT: vaddubm 2, 2, 3
660 ; PWR7-NEXT: vsrb 3, 2, 5
661 ; PWR7-NEXT: vaddubm 2, 2, 3
662 ; PWR7-NEXT: xxland 34, 34, 32
663 ; PWR7-NEXT: vcmpgtub 2, 1, 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: vspltisb 5, 4
747 ; PWR7-NEXT: addi 3, 3, .LCPI8_1@toc@l
748 ; PWR7-NEXT: vsrb 3, 2, 3
749 ; PWR7-NEXT: vspltisb 0, 15
750 ; PWR7-NEXT: vspltisb 1, 5
751 ; PWR7-NEXT: xxland 35, 35, 0
752 ; PWR7-NEXT: lxvw4x 0, 0, 3
753 ; PWR7-NEXT: vsububm 2, 2, 3
754 ; PWR7-NEXT: vsrb 3, 2, 4
755 ; PWR7-NEXT: xxland 34, 34, 0
756 ; PWR7-NEXT: xxland 35, 35, 0
757 ; PWR7-NEXT: vaddubm 2, 2, 3
758 ; PWR7-NEXT: vsrb 3, 2, 5
759 ; PWR7-NEXT: vaddubm 2, 2, 3
760 ; PWR7-NEXT: xxland 34, 34, 32
761 ; PWR7-NEXT: vcmpgtub 2, 2, 1
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: vspltisb 5, 4
845 ; PWR7-NEXT: addi 3, 3, .LCPI9_1@toc@l
846 ; PWR7-NEXT: vsrb 3, 2, 3
847 ; PWR7-NEXT: vspltisb 0, 15
848 ; PWR7-NEXT: vspltisb 1, 6
849 ; PWR7-NEXT: xxland 35, 35, 0
850 ; PWR7-NEXT: lxvw4x 0, 0, 3
851 ; PWR7-NEXT: vsububm 2, 2, 3
852 ; PWR7-NEXT: vsrb 3, 2, 4
853 ; PWR7-NEXT: xxland 34, 34, 0
854 ; PWR7-NEXT: xxland 35, 35, 0
855 ; PWR7-NEXT: vaddubm 2, 2, 3
856 ; PWR7-NEXT: vsrb 3, 2, 5
857 ; PWR7-NEXT: vaddubm 2, 2, 3
858 ; PWR7-NEXT: xxland 34, 34, 32
859 ; PWR7-NEXT: vcmpgtub 2, 1, 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: vspltisb 5, 4
943 ; PWR7-NEXT: addi 3, 3, .LCPI10_1@toc@l
944 ; PWR7-NEXT: vsrb 3, 2, 3
945 ; PWR7-NEXT: vspltisb 0, 15
946 ; PWR7-NEXT: vspltisb 1, 6
947 ; PWR7-NEXT: xxland 35, 35, 0
948 ; PWR7-NEXT: lxvw4x 0, 0, 3
949 ; PWR7-NEXT: vsububm 2, 2, 3
950 ; PWR7-NEXT: vsrb 3, 2, 4
951 ; PWR7-NEXT: xxland 34, 34, 0
952 ; PWR7-NEXT: xxland 35, 35, 0
953 ; PWR7-NEXT: vaddubm 2, 2, 3
954 ; PWR7-NEXT: vsrb 3, 2, 5
955 ; PWR7-NEXT: vaddubm 2, 2, 3
956 ; PWR7-NEXT: xxland 34, 34, 32
957 ; PWR7-NEXT: vcmpgtub 2, 2, 1
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: vspltisb 5, 4
1041 ; PWR7-NEXT: addi 3, 3, .LCPI11_1@toc@l
1042 ; PWR7-NEXT: vsrb 3, 2, 3
1043 ; PWR7-NEXT: vspltisb 0, 15
1044 ; PWR7-NEXT: vspltisb 1, 7
1045 ; PWR7-NEXT: xxland 35, 35, 0
1046 ; PWR7-NEXT: lxvw4x 0, 0, 3
1047 ; PWR7-NEXT: vsububm 2, 2, 3
1048 ; PWR7-NEXT: vsrb 3, 2, 4
1049 ; PWR7-NEXT: xxland 34, 34, 0
1050 ; PWR7-NEXT: xxland 35, 35, 0
1051 ; PWR7-NEXT: vaddubm 2, 2, 3
1052 ; PWR7-NEXT: vsrb 3, 2, 5
1053 ; PWR7-NEXT: vaddubm 2, 2, 3
1054 ; PWR7-NEXT: xxland 34, 34, 32
1055 ; PWR7-NEXT: vcmpgtub 2, 1, 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: addi 3, 3, .LCPI14_1@toc@l
1245 ; PWR7-NEXT: vsrh 3, 2, 3
1246 ; PWR7-NEXT: vspltisb 0, 15
1247 ; PWR7-NEXT: vspltisb 1, 1
1248 ; PWR7-NEXT: vspltish 6, 8
1249 ; PWR7-NEXT: xxland 35, 35, 0
1250 ; PWR7-NEXT: lxvw4x 0, 0, 3
1251 ; PWR7-NEXT: vsubuhm 2, 2, 3
1252 ; PWR7-NEXT: xxland 35, 34, 0
1253 ; PWR7-NEXT: vsrh 2, 2, 4
1254 ; PWR7-NEXT: xxland 34, 34, 0
1255 ; PWR7-NEXT: vadduhm 2, 3, 2
1256 ; PWR7-NEXT: vsrh 3, 2, 5
1257 ; PWR7-NEXT: vadduhm 2, 2, 3
1258 ; PWR7-NEXT: vxor 3, 3, 3
1259 ; PWR7-NEXT: xxland 34, 34, 32
1260 ; PWR7-NEXT: vmladduhm 2, 2, 1, 3
1261 ; PWR7-NEXT: vsrh 2, 2, 6
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: vspltish 5, 4
1356 ; PWR7-NEXT: addi 3, 3, .LCPI15_1@toc@l
1357 ; PWR7-NEXT: vsrh 3, 2, 3
1358 ; PWR7-NEXT: vspltisb 0, 15
1359 ; PWR7-NEXT: vspltisb 1, 1
1360 ; PWR7-NEXT: vspltish 6, 8
1361 ; PWR7-NEXT: vspltish 7, 3
1362 ; PWR7-NEXT: xxland 35, 35, 0
1363 ; PWR7-NEXT: lxvw4x 0, 0, 3
1364 ; PWR7-NEXT: vsubuhm 2, 2, 3
1365 ; PWR7-NEXT: vsrh 3, 2, 4
1366 ; PWR7-NEXT: xxland 34, 34, 0
1367 ; PWR7-NEXT: xxland 35, 35, 0
1368 ; PWR7-NEXT: vadduhm 2, 2, 3
1369 ; PWR7-NEXT: vsrh 3, 2, 5
1370 ; PWR7-NEXT: vadduhm 2, 2, 3
1371 ; PWR7-NEXT: vxor 3, 3, 3
1372 ; PWR7-NEXT: xxland 34, 34, 32
1373 ; PWR7-NEXT: vmladduhm 2, 2, 1, 3
1374 ; PWR7-NEXT: vsrh 2, 2, 6
1375 ; PWR7-NEXT: vcmpgtuh 2, 7, 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: vspltish 5, 4
1469 ; PWR7-NEXT: addi 3, 3, .LCPI16_1@toc@l
1470 ; PWR7-NEXT: vsrh 3, 2, 3
1471 ; PWR7-NEXT: vspltisb 0, 15
1472 ; PWR7-NEXT: vspltisb 1, 1
1473 ; PWR7-NEXT: vspltish 6, 8
1474 ; PWR7-NEXT: vspltish 7, 3
1475 ; PWR7-NEXT: xxland 35, 35, 0
1476 ; PWR7-NEXT: lxvw4x 0, 0, 3
1477 ; PWR7-NEXT: vsubuhm 2, 2, 3
1478 ; PWR7-NEXT: vsrh 3, 2, 4
1479 ; PWR7-NEXT: xxland 34, 34, 0
1480 ; PWR7-NEXT: xxland 35, 35, 0
1481 ; PWR7-NEXT: vadduhm 2, 2, 3
1482 ; PWR7-NEXT: vsrh 3, 2, 5
1483 ; PWR7-NEXT: vadduhm 2, 2, 3
1484 ; PWR7-NEXT: vxor 3, 3, 3
1485 ; PWR7-NEXT: xxland 34, 34, 32
1486 ; PWR7-NEXT: vmladduhm 2, 2, 1, 3
1487 ; PWR7-NEXT: vsrh 2, 2, 6
1488 ; PWR7-NEXT: vcmpgtuh 2, 2, 7
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: addi 3, 3, .LCPI17_0@toc@l
1576 ; PWR7-NEXT: vspltish 4, 2
1577 ; PWR7-NEXT: lxvw4x 0, 0, 3
1578 ; PWR7-NEXT: addis 3, 2, .LCPI17_1@toc@ha
1579 ; PWR7-NEXT: vspltish 5, 4
1580 ; PWR7-NEXT: addi 3, 3, .LCPI17_1@toc@l
1581 ; PWR7-NEXT: vsrh 3, 2, 3
1582 ; PWR7-NEXT: vspltisb 0, 15
1583 ; PWR7-NEXT: vspltisb 1, 1
1584 ; PWR7-NEXT: vspltish 6, 8
1585 ; PWR7-NEXT: xxland 35, 35, 0
1586 ; PWR7-NEXT: lxvw4x 0, 0, 3
1587 ; PWR7-NEXT: vsubuhm 2, 2, 3
1588 ; PWR7-NEXT: vsrh 3, 2, 4
1589 ; PWR7-NEXT: xxland 34, 34, 0
1590 ; PWR7-NEXT: xxland 35, 35, 0
1591 ; PWR7-NEXT: vadduhm 2, 2, 3
1592 ; PWR7-NEXT: vsrh 3, 2, 5
1593 ; PWR7-NEXT: vadduhm 2, 2, 3
1594 ; PWR7-NEXT: vxor 3, 3, 3
1595 ; PWR7-NEXT: xxland 34, 34, 32
1596 ; PWR7-NEXT: vmladduhm 2, 2, 1, 3
1597 ; PWR7-NEXT: vsrh 2, 2, 6
1598 ; PWR7-NEXT: vcmpgtuh 2, 5, 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: addi 3, 3, .LCPI18_0@toc@l
1686 ; PWR7-NEXT: vspltish 4, 2
1687 ; PWR7-NEXT: lxvw4x 0, 0, 3
1688 ; PWR7-NEXT: addis 3, 2, .LCPI18_1@toc@ha
1689 ; PWR7-NEXT: vspltish 5, 4
1690 ; PWR7-NEXT: addi 3, 3, .LCPI18_1@toc@l
1691 ; PWR7-NEXT: vsrh 3, 2, 3
1692 ; PWR7-NEXT: vspltisb 0, 15
1693 ; PWR7-NEXT: vspltisb 1, 1
1694 ; PWR7-NEXT: vspltish 6, 8
1695 ; PWR7-NEXT: xxland 35, 35, 0
1696 ; PWR7-NEXT: lxvw4x 0, 0, 3
1697 ; PWR7-NEXT: vsubuhm 2, 2, 3
1698 ; PWR7-NEXT: vsrh 3, 2, 4
1699 ; PWR7-NEXT: xxland 34, 34, 0
1700 ; PWR7-NEXT: xxland 35, 35, 0
1701 ; PWR7-NEXT: vadduhm 2, 2, 3
1702 ; PWR7-NEXT: vsrh 3, 2, 5
1703 ; PWR7-NEXT: vadduhm 2, 2, 3
1704 ; PWR7-NEXT: vxor 3, 3, 3
1705 ; PWR7-NEXT: xxland 34, 34, 32
1706 ; PWR7-NEXT: vmladduhm 2, 2, 1, 3
1707 ; PWR7-NEXT: vsrh 2, 2, 6
1708 ; PWR7-NEXT: vcmpgtuh 2, 2, 5
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: vspltish 5, 4
1802 ; PWR7-NEXT: addi 3, 3, .LCPI19_1@toc@l
1803 ; PWR7-NEXT: vsrh 3, 2, 3
1804 ; PWR7-NEXT: vspltisb 0, 15
1805 ; PWR7-NEXT: vspltisb 1, 1
1806 ; PWR7-NEXT: vspltish 6, 8
1807 ; PWR7-NEXT: vspltish 7, 5
1808 ; PWR7-NEXT: xxland 35, 35, 0
1809 ; PWR7-NEXT: lxvw4x 0, 0, 3
1810 ; PWR7-NEXT: vsubuhm 2, 2, 3
1811 ; PWR7-NEXT: vsrh 3, 2, 4
1812 ; PWR7-NEXT: xxland 34, 34, 0
1813 ; PWR7-NEXT: xxland 35, 35, 0
1814 ; PWR7-NEXT: vadduhm 2, 2, 3
1815 ; PWR7-NEXT: vsrh 3, 2, 5
1816 ; PWR7-NEXT: vadduhm 2, 2, 3
1817 ; PWR7-NEXT: vxor 3, 3, 3
1818 ; PWR7-NEXT: xxland 34, 34, 32
1819 ; PWR7-NEXT: vmladduhm 2, 2, 1, 3
1820 ; PWR7-NEXT: vsrh 2, 2, 6
1821 ; PWR7-NEXT: vcmpgtuh 2, 7, 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: vspltish 5, 4
1915 ; PWR7-NEXT: addi 3, 3, .LCPI20_1@toc@l
1916 ; PWR7-NEXT: vsrh 3, 2, 3
1917 ; PWR7-NEXT: vspltisb 0, 15
1918 ; PWR7-NEXT: vspltisb 1, 1
1919 ; PWR7-NEXT: vspltish 6, 8
1920 ; PWR7-NEXT: vspltish 7, 5
1921 ; PWR7-NEXT: xxland 35, 35, 0
1922 ; PWR7-NEXT: lxvw4x 0, 0, 3
1923 ; PWR7-NEXT: vsubuhm 2, 2, 3
1924 ; PWR7-NEXT: vsrh 3, 2, 4
1925 ; PWR7-NEXT: xxland 34, 34, 0
1926 ; PWR7-NEXT: xxland 35, 35, 0
1927 ; PWR7-NEXT: vadduhm 2, 2, 3
1928 ; PWR7-NEXT: vsrh 3, 2, 5
1929 ; PWR7-NEXT: vadduhm 2, 2, 3
1930 ; PWR7-NEXT: vxor 3, 3, 3
1931 ; PWR7-NEXT: xxland 34, 34, 32
1932 ; PWR7-NEXT: vmladduhm 2, 2, 1, 3
1933 ; PWR7-NEXT: vsrh 2, 2, 6
1934 ; PWR7-NEXT: vcmpgtuh 2, 2, 7
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: vspltish 5, 4
2028 ; PWR7-NEXT: addi 3, 3, .LCPI21_1@toc@l
2029 ; PWR7-NEXT: vsrh 3, 2, 3
2030 ; PWR7-NEXT: vspltisb 0, 15
2031 ; PWR7-NEXT: vspltisb 1, 1
2032 ; PWR7-NEXT: vspltish 6, 8
2033 ; PWR7-NEXT: vspltish 7, 6
2034 ; PWR7-NEXT: xxland 35, 35, 0
2035 ; PWR7-NEXT: lxvw4x 0, 0, 3
2036 ; PWR7-NEXT: vsubuhm 2, 2, 3
2037 ; PWR7-NEXT: vsrh 3, 2, 4
2038 ; PWR7-NEXT: xxland 34, 34, 0
2039 ; PWR7-NEXT: xxland 35, 35, 0
2040 ; PWR7-NEXT: vadduhm 2, 2, 3
2041 ; PWR7-NEXT: vsrh 3, 2, 5
2042 ; PWR7-NEXT: vadduhm 2, 2, 3
2043 ; PWR7-NEXT: vxor 3, 3, 3
2044 ; PWR7-NEXT: xxland 34, 34, 32
2045 ; PWR7-NEXT: vmladduhm 2, 2, 1, 3
2046 ; PWR7-NEXT: vsrh 2, 2, 6
2047 ; PWR7-NEXT: vcmpgtuh 2, 7, 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: vspltish 5, 4
2141 ; PWR7-NEXT: addi 3, 3, .LCPI22_1@toc@l
2142 ; PWR7-NEXT: vsrh 3, 2, 3
2143 ; PWR7-NEXT: vspltisb 0, 15
2144 ; PWR7-NEXT: vspltisb 1, 1
2145 ; PWR7-NEXT: vspltish 6, 8
2146 ; PWR7-NEXT: vspltish 7, 6
2147 ; PWR7-NEXT: xxland 35, 35, 0
2148 ; PWR7-NEXT: lxvw4x 0, 0, 3
2149 ; PWR7-NEXT: vsubuhm 2, 2, 3
2150 ; PWR7-NEXT: vsrh 3, 2, 4
2151 ; PWR7-NEXT: xxland 34, 34, 0
2152 ; PWR7-NEXT: xxland 35, 35, 0
2153 ; PWR7-NEXT: vadduhm 2, 2, 3
2154 ; PWR7-NEXT: vsrh 3, 2, 5
2155 ; PWR7-NEXT: vadduhm 2, 2, 3
2156 ; PWR7-NEXT: vxor 3, 3, 3
2157 ; PWR7-NEXT: xxland 34, 34, 32
2158 ; PWR7-NEXT: vmladduhm 2, 2, 1, 3
2159 ; PWR7-NEXT: vsrh 2, 2, 6
2160 ; PWR7-NEXT: vcmpgtuh 2, 2, 7
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: vspltish 5, 4
2254 ; PWR7-NEXT: addi 3, 3, .LCPI23_1@toc@l
2255 ; PWR7-NEXT: vsrh 3, 2, 3
2256 ; PWR7-NEXT: vspltisb 0, 15
2257 ; PWR7-NEXT: vspltisb 1, 1
2258 ; PWR7-NEXT: vspltish 6, 8
2259 ; PWR7-NEXT: vspltish 7, 7
2260 ; PWR7-NEXT: xxland 35, 35, 0
2261 ; PWR7-NEXT: lxvw4x 0, 0, 3
2262 ; PWR7-NEXT: vsubuhm 2, 2, 3
2263 ; PWR7-NEXT: vsrh 3, 2, 4
2264 ; PWR7-NEXT: xxland 34, 34, 0
2265 ; PWR7-NEXT: xxland 35, 35, 0
2266 ; PWR7-NEXT: vadduhm 2, 2, 3
2267 ; PWR7-NEXT: vsrh 3, 2, 5
2268 ; PWR7-NEXT: vadduhm 2, 2, 3
2269 ; PWR7-NEXT: vxor 3, 3, 3
2270 ; PWR7-NEXT: xxland 34, 34, 32
2271 ; PWR7-NEXT: vmladduhm 2, 2, 1, 3
2272 ; PWR7-NEXT: vsrh 2, 2, 6
2273 ; PWR7-NEXT: vcmpgtuh 2, 7, 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: vspltish 5, 4
2367 ; PWR7-NEXT: addi 3, 3, .LCPI24_1@toc@l
2368 ; PWR7-NEXT: vsrh 3, 2, 3
2369 ; PWR7-NEXT: vspltisb 0, 15
2370 ; PWR7-NEXT: vspltisb 1, 1
2371 ; PWR7-NEXT: vspltish 6, 8
2372 ; PWR7-NEXT: vspltish 7, 7
2373 ; PWR7-NEXT: xxland 35, 35, 0
2374 ; PWR7-NEXT: lxvw4x 0, 0, 3
2375 ; PWR7-NEXT: vsubuhm 2, 2, 3
2376 ; PWR7-NEXT: vsrh 3, 2, 4
2377 ; PWR7-NEXT: xxland 34, 34, 0
2378 ; PWR7-NEXT: xxland 35, 35, 0
2379 ; PWR7-NEXT: vadduhm 2, 2, 3
2380 ; PWR7-NEXT: vsrh 3, 2, 5
2381 ; PWR7-NEXT: vadduhm 2, 2, 3
2382 ; PWR7-NEXT: vxor 3, 3, 3
2383 ; PWR7-NEXT: xxland 34, 34, 32
2384 ; PWR7-NEXT: vmladduhm 2, 2, 1, 3
2385 ; PWR7-NEXT: vsrh 2, 2, 6
2386 ; PWR7-NEXT: vcmpgtuh 2, 2, 7
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: vspltish 5, 4
2478 ; PWR7-NEXT: addi 3, 3, .LCPI25_1@toc@l
2479 ; PWR7-NEXT: vsrh 3, 2, 3
2480 ; PWR7-NEXT: vspltisb 0, 15
2481 ; PWR7-NEXT: vspltisb 1, 1
2482 ; PWR7-NEXT: vspltish 6, 8
2483 ; PWR7-NEXT: xxland 35, 35, 0
2484 ; PWR7-NEXT: lxvw4x 0, 0, 3
2485 ; PWR7-NEXT: vsubuhm 2, 2, 3
2486 ; PWR7-NEXT: vsrh 3, 2, 4
2487 ; PWR7-NEXT: xxland 34, 34, 0
2488 ; PWR7-NEXT: xxland 35, 35, 0
2489 ; PWR7-NEXT: vadduhm 2, 2, 3
2490 ; PWR7-NEXT: vsrh 3, 2, 5
2491 ; PWR7-NEXT: vadduhm 2, 2, 3
2492 ; PWR7-NEXT: vxor 3, 3, 3
2493 ; PWR7-NEXT: xxland 34, 34, 32
2494 ; PWR7-NEXT: vmladduhm 2, 2, 1, 3
2495 ; PWR7-NEXT: vsrh 2, 2, 6
2496 ; PWR7-NEXT: vcmpgtuh 2, 6, 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: vspltish 5, 4
2588 ; PWR7-NEXT: addi 3, 3, .LCPI26_1@toc@l
2589 ; PWR7-NEXT: vsrh 3, 2, 3
2590 ; PWR7-NEXT: vspltisb 0, 15
2591 ; PWR7-NEXT: vspltisb 1, 1
2592 ; PWR7-NEXT: vspltish 6, 8
2593 ; PWR7-NEXT: xxland 35, 35, 0
2594 ; PWR7-NEXT: lxvw4x 0, 0, 3
2595 ; PWR7-NEXT: vsubuhm 2, 2, 3
2596 ; PWR7-NEXT: vsrh 3, 2, 4
2597 ; PWR7-NEXT: xxland 34, 34, 0
2598 ; PWR7-NEXT: xxland 35, 35, 0
2599 ; PWR7-NEXT: vadduhm 2, 2, 3
2600 ; PWR7-NEXT: vsrh 3, 2, 5
2601 ; PWR7-NEXT: vadduhm 2, 2, 3
2602 ; PWR7-NEXT: vxor 3, 3, 3
2603 ; PWR7-NEXT: xxland 34, 34, 32
2604 ; PWR7-NEXT: vmladduhm 2, 2, 1, 3
2605 ; PWR7-NEXT: vsrh 2, 2, 6
2606 ; PWR7-NEXT: vcmpgtuh 2, 2, 6
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: vspltish 5, 4
2700 ; PWR7-NEXT: addi 3, 3, .LCPI27_1@toc@l
2701 ; PWR7-NEXT: vsrh 3, 2, 3
2702 ; PWR7-NEXT: vspltisb 0, 15
2703 ; PWR7-NEXT: vspltisb 1, 1
2704 ; PWR7-NEXT: vspltish 6, 8
2705 ; PWR7-NEXT: vspltish 7, 9
2706 ; PWR7-NEXT: xxland 35, 35, 0
2707 ; PWR7-NEXT: lxvw4x 0, 0, 3
2708 ; PWR7-NEXT: vsubuhm 2, 2, 3
2709 ; PWR7-NEXT: vsrh 3, 2, 4
2710 ; PWR7-NEXT: xxland 34, 34, 0
2711 ; PWR7-NEXT: xxland 35, 35, 0
2712 ; PWR7-NEXT: vadduhm 2, 2, 3
2713 ; PWR7-NEXT: vsrh 3, 2, 5
2714 ; PWR7-NEXT: vadduhm 2, 2, 3
2715 ; PWR7-NEXT: vxor 3, 3, 3
2716 ; PWR7-NEXT: xxland 34, 34, 32
2717 ; PWR7-NEXT: vmladduhm 2, 2, 1, 3
2718 ; PWR7-NEXT: vsrh 2, 2, 6
2719 ; PWR7-NEXT: vcmpgtuh 2, 7, 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: vspltish 5, 4
2813 ; PWR7-NEXT: addi 3, 3, .LCPI28_1@toc@l
2814 ; PWR7-NEXT: vsrh 3, 2, 3
2815 ; PWR7-NEXT: vspltisb 0, 15
2816 ; PWR7-NEXT: vspltisb 1, 1
2817 ; PWR7-NEXT: vspltish 6, 8
2818 ; PWR7-NEXT: vspltish 7, 9
2819 ; PWR7-NEXT: xxland 35, 35, 0
2820 ; PWR7-NEXT: lxvw4x 0, 0, 3
2821 ; PWR7-NEXT: vsubuhm 2, 2, 3
2822 ; PWR7-NEXT: vsrh 3, 2, 4
2823 ; PWR7-NEXT: xxland 34, 34, 0
2824 ; PWR7-NEXT: xxland 35, 35, 0
2825 ; PWR7-NEXT: vadduhm 2, 2, 3
2826 ; PWR7-NEXT: vsrh 3, 2, 5
2827 ; PWR7-NEXT: vadduhm 2, 2, 3
2828 ; PWR7-NEXT: vxor 3, 3, 3
2829 ; PWR7-NEXT: xxland 34, 34, 32
2830 ; PWR7-NEXT: vmladduhm 2, 2, 1, 3
2831 ; PWR7-NEXT: vsrh 2, 2, 6
2832 ; PWR7-NEXT: vcmpgtuh 2, 2, 7
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: vspltish 5, 4
2926 ; PWR7-NEXT: addi 3, 3, .LCPI29_1@toc@l
2927 ; PWR7-NEXT: vsrh 3, 2, 3
2928 ; PWR7-NEXT: vspltisb 0, 15
2929 ; PWR7-NEXT: vspltisb 1, 1
2930 ; PWR7-NEXT: vspltish 6, 8
2931 ; PWR7-NEXT: vspltish 7, 10
2932 ; PWR7-NEXT: xxland 35, 35, 0
2933 ; PWR7-NEXT: lxvw4x 0, 0, 3
2934 ; PWR7-NEXT: vsubuhm 2, 2, 3
2935 ; PWR7-NEXT: vsrh 3, 2, 4
2936 ; PWR7-NEXT: xxland 34, 34, 0
2937 ; PWR7-NEXT: xxland 35, 35, 0
2938 ; PWR7-NEXT: vadduhm 2, 2, 3
2939 ; PWR7-NEXT: vsrh 3, 2, 5
2940 ; PWR7-NEXT: vadduhm 2, 2, 3
2941 ; PWR7-NEXT: vxor 3, 3, 3
2942 ; PWR7-NEXT: xxland 34, 34, 32
2943 ; PWR7-NEXT: vmladduhm 2, 2, 1, 3
2944 ; PWR7-NEXT: vsrh 2, 2, 6
2945 ; PWR7-NEXT: vcmpgtuh 2, 7, 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: vspltish 5, 4
3039 ; PWR7-NEXT: addi 3, 3, .LCPI30_1@toc@l
3040 ; PWR7-NEXT: vsrh 3, 2, 3
3041 ; PWR7-NEXT: vspltisb 0, 15
3042 ; PWR7-NEXT: vspltisb 1, 1
3043 ; PWR7-NEXT: vspltish 6, 8
3044 ; PWR7-NEXT: vspltish 7, 10
3045 ; PWR7-NEXT: xxland 35, 35, 0
3046 ; PWR7-NEXT: lxvw4x 0, 0, 3
3047 ; PWR7-NEXT: vsubuhm 2, 2, 3
3048 ; PWR7-NEXT: vsrh 3, 2, 4
3049 ; PWR7-NEXT: xxland 34, 34, 0
3050 ; PWR7-NEXT: xxland 35, 35, 0
3051 ; PWR7-NEXT: vadduhm 2, 2, 3
3052 ; PWR7-NEXT: vsrh 3, 2, 5
3053 ; PWR7-NEXT: vadduhm 2, 2, 3
3054 ; PWR7-NEXT: vxor 3, 3, 3
3055 ; PWR7-NEXT: xxland 34, 34, 32
3056 ; PWR7-NEXT: vmladduhm 2, 2, 1, 3
3057 ; PWR7-NEXT: vsrh 2, 2, 6
3058 ; PWR7-NEXT: vcmpgtuh 2, 2, 7
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: vspltish 5, 4
3152 ; PWR7-NEXT: addi 3, 3, .LCPI31_1@toc@l
3153 ; PWR7-NEXT: vsrh 3, 2, 3
3154 ; PWR7-NEXT: vspltisb 0, 15
3155 ; PWR7-NEXT: vspltisb 1, 1
3156 ; PWR7-NEXT: vspltish 6, 8
3157 ; PWR7-NEXT: vspltish 7, 11
3158 ; PWR7-NEXT: xxland 35, 35, 0
3159 ; PWR7-NEXT: lxvw4x 0, 0, 3
3160 ; PWR7-NEXT: vsubuhm 2, 2, 3
3161 ; PWR7-NEXT: vsrh 3, 2, 4
3162 ; PWR7-NEXT: xxland 34, 34, 0
3163 ; PWR7-NEXT: xxland 35, 35, 0
3164 ; PWR7-NEXT: vadduhm 2, 2, 3
3165 ; PWR7-NEXT: vsrh 3, 2, 5
3166 ; PWR7-NEXT: vadduhm 2, 2, 3
3167 ; PWR7-NEXT: vxor 3, 3, 3
3168 ; PWR7-NEXT: xxland 34, 34, 32
3169 ; PWR7-NEXT: vmladduhm 2, 2, 1, 3
3170 ; PWR7-NEXT: vsrh 2, 2, 6
3171 ; PWR7-NEXT: vcmpgtuh 2, 7, 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: vspltish 5, 4
3265 ; PWR7-NEXT: addi 3, 3, .LCPI32_1@toc@l
3266 ; PWR7-NEXT: vsrh 3, 2, 3
3267 ; PWR7-NEXT: vspltisb 0, 15
3268 ; PWR7-NEXT: vspltisb 1, 1
3269 ; PWR7-NEXT: vspltish 6, 8
3270 ; PWR7-NEXT: vspltish 7, 11
3271 ; PWR7-NEXT: xxland 35, 35, 0
3272 ; PWR7-NEXT: lxvw4x 0, 0, 3
3273 ; PWR7-NEXT: vsubuhm 2, 2, 3
3274 ; PWR7-NEXT: vsrh 3, 2, 4
3275 ; PWR7-NEXT: xxland 34, 34, 0
3276 ; PWR7-NEXT: xxland 35, 35, 0
3277 ; PWR7-NEXT: vadduhm 2, 2, 3
3278 ; PWR7-NEXT: vsrh 3, 2, 5
3279 ; PWR7-NEXT: vadduhm 2, 2, 3
3280 ; PWR7-NEXT: vxor 3, 3, 3
3281 ; PWR7-NEXT: xxland 34, 34, 32
3282 ; PWR7-NEXT: vmladduhm 2, 2, 1, 3
3283 ; PWR7-NEXT: vsrh 2, 2, 6
3284 ; PWR7-NEXT: vcmpgtuh 2, 2, 7
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: vspltish 5, 4
3378 ; PWR7-NEXT: addi 3, 3, .LCPI33_1@toc@l
3379 ; PWR7-NEXT: vsrh 3, 2, 3
3380 ; PWR7-NEXT: vspltisb 0, 15
3381 ; PWR7-NEXT: vspltisb 1, 1
3382 ; PWR7-NEXT: vspltish 6, 8
3383 ; PWR7-NEXT: vspltish 7, 12
3384 ; PWR7-NEXT: xxland 35, 35, 0
3385 ; PWR7-NEXT: lxvw4x 0, 0, 3
3386 ; PWR7-NEXT: vsubuhm 2, 2, 3
3387 ; PWR7-NEXT: vsrh 3, 2, 4
3388 ; PWR7-NEXT: xxland 34, 34, 0
3389 ; PWR7-NEXT: xxland 35, 35, 0
3390 ; PWR7-NEXT: vadduhm 2, 2, 3
3391 ; PWR7-NEXT: vsrh 3, 2, 5
3392 ; PWR7-NEXT: vadduhm 2, 2, 3
3393 ; PWR7-NEXT: vxor 3, 3, 3
3394 ; PWR7-NEXT: xxland 34, 34, 32
3395 ; PWR7-NEXT: vmladduhm 2, 2, 1, 3
3396 ; PWR7-NEXT: vsrh 2, 2, 6
3397 ; PWR7-NEXT: vcmpgtuh 2, 7, 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: vspltish 5, 4
3491 ; PWR7-NEXT: addi 3, 3, .LCPI34_1@toc@l
3492 ; PWR7-NEXT: vsrh 3, 2, 3
3493 ; PWR7-NEXT: vspltisb 0, 15
3494 ; PWR7-NEXT: vspltisb 1, 1
3495 ; PWR7-NEXT: vspltish 6, 8
3496 ; PWR7-NEXT: vspltish 7, 12
3497 ; PWR7-NEXT: xxland 35, 35, 0
3498 ; PWR7-NEXT: lxvw4x 0, 0, 3
3499 ; PWR7-NEXT: vsubuhm 2, 2, 3
3500 ; PWR7-NEXT: vsrh 3, 2, 4
3501 ; PWR7-NEXT: xxland 34, 34, 0
3502 ; PWR7-NEXT: xxland 35, 35, 0
3503 ; PWR7-NEXT: vadduhm 2, 2, 3
3504 ; PWR7-NEXT: vsrh 3, 2, 5
3505 ; PWR7-NEXT: vadduhm 2, 2, 3
3506 ; PWR7-NEXT: vxor 3, 3, 3
3507 ; PWR7-NEXT: xxland 34, 34, 32
3508 ; PWR7-NEXT: vmladduhm 2, 2, 1, 3
3509 ; PWR7-NEXT: vsrh 2, 2, 6
3510 ; PWR7-NEXT: vcmpgtuh 2, 2, 7
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: vspltish 5, 4
3604 ; PWR7-NEXT: addi 3, 3, .LCPI35_1@toc@l
3605 ; PWR7-NEXT: vsrh 3, 2, 3
3606 ; PWR7-NEXT: vspltisb 0, 15
3607 ; PWR7-NEXT: vspltisb 1, 1
3608 ; PWR7-NEXT: vspltish 6, 8
3609 ; PWR7-NEXT: vspltish 7, 13
3610 ; PWR7-NEXT: xxland 35, 35, 0
3611 ; PWR7-NEXT: lxvw4x 0, 0, 3
3612 ; PWR7-NEXT: vsubuhm 2, 2, 3
3613 ; PWR7-NEXT: vsrh 3, 2, 4
3614 ; PWR7-NEXT: xxland 34, 34, 0
3615 ; PWR7-NEXT: xxland 35, 35, 0
3616 ; PWR7-NEXT: vadduhm 2, 2, 3
3617 ; PWR7-NEXT: vsrh 3, 2, 5
3618 ; PWR7-NEXT: vadduhm 2, 2, 3
3619 ; PWR7-NEXT: vxor 3, 3, 3
3620 ; PWR7-NEXT: xxland 34, 34, 32
3621 ; PWR7-NEXT: vmladduhm 2, 2, 1, 3
3622 ; PWR7-NEXT: vsrh 2, 2, 6
3623 ; PWR7-NEXT: vcmpgtuh 2, 7, 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: vspltish 5, 4
3717 ; PWR7-NEXT: addi 3, 3, .LCPI36_1@toc@l
3718 ; PWR7-NEXT: vsrh 3, 2, 3
3719 ; PWR7-NEXT: vspltisb 0, 15
3720 ; PWR7-NEXT: vspltisb 1, 1
3721 ; PWR7-NEXT: vspltish 6, 8
3722 ; PWR7-NEXT: vspltish 7, 13
3723 ; PWR7-NEXT: xxland 35, 35, 0
3724 ; PWR7-NEXT: lxvw4x 0, 0, 3
3725 ; PWR7-NEXT: vsubuhm 2, 2, 3
3726 ; PWR7-NEXT: vsrh 3, 2, 4
3727 ; PWR7-NEXT: xxland 34, 34, 0
3728 ; PWR7-NEXT: xxland 35, 35, 0
3729 ; PWR7-NEXT: vadduhm 2, 2, 3
3730 ; PWR7-NEXT: vsrh 3, 2, 5
3731 ; PWR7-NEXT: vadduhm 2, 2, 3
3732 ; PWR7-NEXT: vxor 3, 3, 3
3733 ; PWR7-NEXT: xxland 34, 34, 32
3734 ; PWR7-NEXT: vmladduhm 2, 2, 1, 3
3735 ; PWR7-NEXT: vsrh 2, 2, 6
3736 ; PWR7-NEXT: vcmpgtuh 2, 2, 7
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: vspltish 5, 4
3830 ; PWR7-NEXT: addi 3, 3, .LCPI37_1@toc@l
3831 ; PWR7-NEXT: vsrh 3, 2, 3
3832 ; PWR7-NEXT: vspltisb 0, 15
3833 ; PWR7-NEXT: vspltisb 1, 1
3834 ; PWR7-NEXT: vspltish 6, 8
3835 ; PWR7-NEXT: vspltish 7, 14
3836 ; PWR7-NEXT: xxland 35, 35, 0
3837 ; PWR7-NEXT: lxvw4x 0, 0, 3
3838 ; PWR7-NEXT: vsubuhm 2, 2, 3
3839 ; PWR7-NEXT: vsrh 3, 2, 4
3840 ; PWR7-NEXT: xxland 34, 34, 0
3841 ; PWR7-NEXT: xxland 35, 35, 0
3842 ; PWR7-NEXT: vadduhm 2, 2, 3
3843 ; PWR7-NEXT: vsrh 3, 2, 5
3844 ; PWR7-NEXT: vadduhm 2, 2, 3
3845 ; PWR7-NEXT: vxor 3, 3, 3
3846 ; PWR7-NEXT: xxland 34, 34, 32
3847 ; PWR7-NEXT: vmladduhm 2, 2, 1, 3
3848 ; PWR7-NEXT: vsrh 2, 2, 6
3849 ; PWR7-NEXT: vcmpgtuh 2, 7, 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: vspltish 5, 4
3943 ; PWR7-NEXT: addi 3, 3, .LCPI38_1@toc@l
3944 ; PWR7-NEXT: vsrh 3, 2, 3
3945 ; PWR7-NEXT: vspltisb 0, 15
3946 ; PWR7-NEXT: vspltisb 1, 1
3947 ; PWR7-NEXT: vspltish 6, 8
3948 ; PWR7-NEXT: vspltish 7, 14
3949 ; PWR7-NEXT: xxland 35, 35, 0
3950 ; PWR7-NEXT: lxvw4x 0, 0, 3
3951 ; PWR7-NEXT: vsubuhm 2, 2, 3
3952 ; PWR7-NEXT: vsrh 3, 2, 4
3953 ; PWR7-NEXT: xxland 34, 34, 0
3954 ; PWR7-NEXT: xxland 35, 35, 0
3955 ; PWR7-NEXT: vadduhm 2, 2, 3
3956 ; PWR7-NEXT: vsrh 3, 2, 5
3957 ; PWR7-NEXT: vadduhm 2, 2, 3
3958 ; PWR7-NEXT: vxor 3, 3, 3
3959 ; PWR7-NEXT: xxland 34, 34, 32
3960 ; PWR7-NEXT: vmladduhm 2, 2, 1, 3
3961 ; PWR7-NEXT: vsrh 2, 2, 6
3962 ; PWR7-NEXT: vcmpgtuh 2, 2, 7
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: vspltish 5, 4
4056 ; PWR7-NEXT: addi 3, 3, .LCPI39_1@toc@l
4057 ; PWR7-NEXT: vsrh 3, 2, 3
4058 ; PWR7-NEXT: vspltisb 0, 15
4059 ; PWR7-NEXT: vspltisb 1, 1
4060 ; PWR7-NEXT: vspltish 6, 8
4061 ; PWR7-NEXT: vspltish 7, 15
4062 ; PWR7-NEXT: xxland 35, 35, 0
4063 ; PWR7-NEXT: lxvw4x 0, 0, 3
4064 ; PWR7-NEXT: vsubuhm 2, 2, 3
4065 ; PWR7-NEXT: vsrh 3, 2, 4
4066 ; PWR7-NEXT: xxland 34, 34, 0
4067 ; PWR7-NEXT: xxland 35, 35, 0
4068 ; PWR7-NEXT: vadduhm 2, 2, 3
4069 ; PWR7-NEXT: vsrh 3, 2, 5
4070 ; PWR7-NEXT: vadduhm 2, 2, 3
4071 ; PWR7-NEXT: vxor 3, 3, 3
4072 ; PWR7-NEXT: xxland 34, 34, 32
4073 ; PWR7-NEXT: vmladduhm 2, 2, 1, 3
4074 ; PWR7-NEXT: vsrh 2, 2, 6
4075 ; PWR7-NEXT: vcmpgtuh 2, 7, 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: addi 3, 3, .LCPI42_1@toc@l
4277 ; PWR7-NEXT: vsrw 3, 2, 3
4278 ; PWR7-NEXT: vspltisb 0, 15
4279 ; PWR7-NEXT: vspltisb 1, 1
4280 ; PWR7-NEXT: vspltisw 6, -16
4281 ; PWR7-NEXT: vspltisw 7, 12
4282 ; PWR7-NEXT: xxland 35, 35, 0
4283 ; PWR7-NEXT: lxvw4x 0, 0, 3
4284 ; PWR7-NEXT: vsubuwm 2, 2, 3
4285 ; PWR7-NEXT: xxland 35, 34, 0
4286 ; PWR7-NEXT: vsrw 2, 2, 4
4287 ; PWR7-NEXT: xxland 34, 34, 0
4288 ; PWR7-NEXT: vadduwm 2, 3, 2
4289 ; PWR7-NEXT: vsrw 3, 2, 5
4290 ; PWR7-NEXT: xxlxor 37, 37, 37
4291 ; PWR7-NEXT: vadduwm 2, 2, 3
4292 ; PWR7-NEXT: vrlw 3, 1, 6
4293 ; PWR7-NEXT: xxland 34, 34, 32
4294 ; PWR7-NEXT: vmsumuhm 3, 2, 3, 5
4295 ; PWR7-NEXT: vmulouh 2, 2, 1
4296 ; PWR7-NEXT: vslw 3, 3, 6
4297 ; PWR7-NEXT: vadduwm 2, 2, 3
4298 ; PWR7-NEXT: vadduwm 3, 7, 7
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, 4
4406 ; PWR7-NEXT: addi 3, 3, .LCPI43_1@toc@l
4407 ; PWR7-NEXT: vsrw 3, 2, 3
4408 ; PWR7-NEXT: vspltisb 0, 15
4409 ; PWR7-NEXT: vspltisb 1, 1
4410 ; PWR7-NEXT: vspltisw 6, -16
4411 ; PWR7-NEXT: vspltisw 7, 12
4412 ; PWR7-NEXT: xxland 35, 35, 0
4413 ; PWR7-NEXT: lxvw4x 0, 0, 3
4414 ; PWR7-NEXT: vsubuwm 2, 2, 3
4415 ; PWR7-NEXT: vsrw 3, 2, 4
4416 ; PWR7-NEXT: xxland 34, 34, 0
4417 ; PWR7-NEXT: xxland 35, 35, 0
4418 ; PWR7-NEXT: vadduwm 2, 2, 3
4419 ; PWR7-NEXT: vsrw 3, 2, 5
4420 ; PWR7-NEXT: xxlxor 37, 37, 37
4421 ; PWR7-NEXT: vadduwm 2, 2, 3
4422 ; PWR7-NEXT: vrlw 3, 1, 6
4423 ; PWR7-NEXT: xxland 34, 34, 32
4424 ; PWR7-NEXT: vmsumuhm 3, 2, 3, 5
4425 ; PWR7-NEXT: vmulouh 2, 2, 1
4426 ; PWR7-NEXT: vslw 3, 3, 6
4427 ; PWR7-NEXT: vadduwm 2, 2, 3
4428 ; PWR7-NEXT: vadduwm 3, 7, 7
4429 ; PWR7-NEXT: vspltisw 4, 3
4430 ; PWR7-NEXT: vsrw 2, 2, 3
4431 ; PWR7-NEXT: vcmpgtuw 2, 4, 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, 4
4537 ; PWR7-NEXT: addi 3, 3, .LCPI44_1@toc@l
4538 ; PWR7-NEXT: vsrw 3, 2, 3
4539 ; PWR7-NEXT: vspltisb 0, 15
4540 ; PWR7-NEXT: vspltisb 1, 1
4541 ; PWR7-NEXT: vspltisw 6, -16
4542 ; PWR7-NEXT: vspltisw 7, 12
4543 ; PWR7-NEXT: xxland 35, 35, 0
4544 ; PWR7-NEXT: lxvw4x 0, 0, 3
4545 ; PWR7-NEXT: vsubuwm 2, 2, 3
4546 ; PWR7-NEXT: vsrw 3, 2, 4
4547 ; PWR7-NEXT: xxland 34, 34, 0
4548 ; PWR7-NEXT: xxland 35, 35, 0
4549 ; PWR7-NEXT: vadduwm 2, 2, 3
4550 ; PWR7-NEXT: vsrw 3, 2, 5
4551 ; PWR7-NEXT: xxlxor 37, 37, 37
4552 ; PWR7-NEXT: vadduwm 2, 2, 3
4553 ; PWR7-NEXT: vrlw 3, 1, 6
4554 ; PWR7-NEXT: xxland 34, 34, 32
4555 ; PWR7-NEXT: vmsumuhm 3, 2, 3, 5
4556 ; PWR7-NEXT: vmulouh 2, 2, 1
4557 ; PWR7-NEXT: vslw 3, 3, 6
4558 ; PWR7-NEXT: vadduwm 2, 2, 3
4559 ; PWR7-NEXT: vadduwm 3, 7, 7
4560 ; PWR7-NEXT: vspltisw 4, 3
4561 ; PWR7-NEXT: vsrw 2, 2, 3
4562 ; PWR7-NEXT: vcmpgtuw 2, 2, 4
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: vspltisw 5, 4
4666 ; PWR7-NEXT: addi 3, 3, .LCPI45_1@toc@l
4667 ; PWR7-NEXT: vsrw 3, 2, 3
4668 ; PWR7-NEXT: vspltisb 0, 15
4669 ; PWR7-NEXT: vspltisb 1, 1
4670 ; PWR7-NEXT: vspltisw 6, -16
4671 ; PWR7-NEXT: vspltisw 7, 12
4672 ; PWR7-NEXT: xxland 35, 35, 0
4673 ; PWR7-NEXT: lxvw4x 0, 0, 3
4674 ; PWR7-NEXT: vsubuwm 2, 2, 3
4675 ; PWR7-NEXT: vsrw 3, 2, 4
4676 ; PWR7-NEXT: xxland 34, 34, 0
4677 ; PWR7-NEXT: xxlxor 36, 36, 36
4678 ; PWR7-NEXT: xxland 35, 35, 0
4679 ; PWR7-NEXT: vadduwm 2, 2, 3
4680 ; PWR7-NEXT: vsrw 3, 2, 5
4681 ; PWR7-NEXT: vadduwm 2, 2, 3
4682 ; PWR7-NEXT: vrlw 3, 1, 6
4683 ; PWR7-NEXT: xxland 34, 34, 32
4684 ; PWR7-NEXT: vmsumuhm 3, 2, 3, 4
4685 ; PWR7-NEXT: vmulouh 2, 2, 1
4686 ; PWR7-NEXT: vslw 3, 3, 6
4687 ; PWR7-NEXT: vadduwm 2, 2, 3
4688 ; PWR7-NEXT: vadduwm 3, 7, 7
4689 ; PWR7-NEXT: vsrw 2, 2, 3
4690 ; PWR7-NEXT: vcmpgtuw 2, 5, 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: vspltisw 5, 4
4794 ; PWR7-NEXT: addi 3, 3, .LCPI46_1@toc@l
4795 ; PWR7-NEXT: vsrw 3, 2, 3
4796 ; PWR7-NEXT: vspltisb 0, 15
4797 ; PWR7-NEXT: vspltisb 1, 1
4798 ; PWR7-NEXT: vspltisw 6, -16
4799 ; PWR7-NEXT: vspltisw 7, 12
4800 ; PWR7-NEXT: xxland 35, 35, 0
4801 ; PWR7-NEXT: lxvw4x 0, 0, 3
4802 ; PWR7-NEXT: vsubuwm 2, 2, 3
4803 ; PWR7-NEXT: vsrw 3, 2, 4
4804 ; PWR7-NEXT: xxland 34, 34, 0
4805 ; PWR7-NEXT: xxlxor 36, 36, 36
4806 ; PWR7-NEXT: xxland 35, 35, 0
4807 ; PWR7-NEXT: vadduwm 2, 2, 3
4808 ; PWR7-NEXT: vsrw 3, 2, 5
4809 ; PWR7-NEXT: vadduwm 2, 2, 3
4810 ; PWR7-NEXT: vrlw 3, 1, 6
4811 ; PWR7-NEXT: xxland 34, 34, 32
4812 ; PWR7-NEXT: vmsumuhm 3, 2, 3, 4
4813 ; PWR7-NEXT: vmulouh 2, 2, 1
4814 ; PWR7-NEXT: vslw 3, 3, 6
4815 ; PWR7-NEXT: vadduwm 2, 2, 3
4816 ; PWR7-NEXT: vadduwm 3, 7, 7
4817 ; PWR7-NEXT: vsrw 2, 2, 3
4818 ; PWR7-NEXT: vcmpgtuw 2, 2, 5
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, 4
4924 ; PWR7-NEXT: addi 3, 3, .LCPI47_1@toc@l
4925 ; PWR7-NEXT: vsrw 3, 2, 3
4926 ; PWR7-NEXT: vspltisb 0, 15
4927 ; PWR7-NEXT: vspltisb 1, 1
4928 ; PWR7-NEXT: vspltisw 6, -16
4929 ; PWR7-NEXT: vspltisw 7, 12
4930 ; PWR7-NEXT: xxland 35, 35, 0
4931 ; PWR7-NEXT: lxvw4x 0, 0, 3
4932 ; PWR7-NEXT: vsubuwm 2, 2, 3
4933 ; PWR7-NEXT: vsrw 3, 2, 4
4934 ; PWR7-NEXT: xxland 34, 34, 0
4935 ; PWR7-NEXT: xxland 35, 35, 0
4936 ; PWR7-NEXT: vadduwm 2, 2, 3
4937 ; PWR7-NEXT: vsrw 3, 2, 5
4938 ; PWR7-NEXT: xxlxor 37, 37, 37
4939 ; PWR7-NEXT: vadduwm 2, 2, 3
4940 ; PWR7-NEXT: vrlw 3, 1, 6
4941 ; PWR7-NEXT: xxland 34, 34, 32
4942 ; PWR7-NEXT: vmsumuhm 3, 2, 3, 5
4943 ; PWR7-NEXT: vmulouh 2, 2, 1
4944 ; PWR7-NEXT: vslw 3, 3, 6
4945 ; PWR7-NEXT: vadduwm 2, 2, 3
4946 ; PWR7-NEXT: vadduwm 3, 7, 7
4947 ; PWR7-NEXT: vspltisw 4, 5
4948 ; PWR7-NEXT: vsrw 2, 2, 3
4949 ; PWR7-NEXT: vcmpgtuw 2, 4, 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, 4
5055 ; PWR7-NEXT: addi 3, 3, .LCPI48_1@toc@l
5056 ; PWR7-NEXT: vsrw 3, 2, 3
5057 ; PWR7-NEXT: vspltisb 0, 15
5058 ; PWR7-NEXT: vspltisb 1, 1
5059 ; PWR7-NEXT: vspltisw 6, -16
5060 ; PWR7-NEXT: vspltisw 7, 12
5061 ; PWR7-NEXT: xxland 35, 35, 0
5062 ; PWR7-NEXT: lxvw4x 0, 0, 3
5063 ; PWR7-NEXT: vsubuwm 2, 2, 3
5064 ; PWR7-NEXT: vsrw 3, 2, 4
5065 ; PWR7-NEXT: xxland 34, 34, 0
5066 ; PWR7-NEXT: xxland 35, 35, 0
5067 ; PWR7-NEXT: vadduwm 2, 2, 3
5068 ; PWR7-NEXT: vsrw 3, 2, 5
5069 ; PWR7-NEXT: xxlxor 37, 37, 37
5070 ; PWR7-NEXT: vadduwm 2, 2, 3
5071 ; PWR7-NEXT: vrlw 3, 1, 6
5072 ; PWR7-NEXT: xxland 34, 34, 32
5073 ; PWR7-NEXT: vmsumuhm 3, 2, 3, 5
5074 ; PWR7-NEXT: vmulouh 2, 2, 1
5075 ; PWR7-NEXT: vslw 3, 3, 6
5076 ; PWR7-NEXT: vadduwm 2, 2, 3
5077 ; PWR7-NEXT: vadduwm 3, 7, 7
5078 ; PWR7-NEXT: vspltisw 4, 5
5079 ; PWR7-NEXT: vsrw 2, 2, 3
5080 ; PWR7-NEXT: vcmpgtuw 2, 2, 4
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, 4
5186 ; PWR7-NEXT: addi 3, 3, .LCPI49_1@toc@l
5187 ; PWR7-NEXT: vsrw 3, 2, 3
5188 ; PWR7-NEXT: vspltisb 0, 15
5189 ; PWR7-NEXT: vspltisb 1, 1
5190 ; PWR7-NEXT: vspltisw 6, -16
5191 ; PWR7-NEXT: vspltisw 7, 12
5192 ; PWR7-NEXT: xxland 35, 35, 0
5193 ; PWR7-NEXT: lxvw4x 0, 0, 3
5194 ; PWR7-NEXT: vsubuwm 2, 2, 3
5195 ; PWR7-NEXT: vsrw 3, 2, 4
5196 ; PWR7-NEXT: xxland 34, 34, 0
5197 ; PWR7-NEXT: xxland 35, 35, 0
5198 ; PWR7-NEXT: vadduwm 2, 2, 3
5199 ; PWR7-NEXT: vsrw 3, 2, 5
5200 ; PWR7-NEXT: xxlxor 37, 37, 37
5201 ; PWR7-NEXT: vadduwm 2, 2, 3
5202 ; PWR7-NEXT: vrlw 3, 1, 6
5203 ; PWR7-NEXT: xxland 34, 34, 32
5204 ; PWR7-NEXT: vmsumuhm 3, 2, 3, 5
5205 ; PWR7-NEXT: vmulouh 2, 2, 1
5206 ; PWR7-NEXT: vslw 3, 3, 6
5207 ; PWR7-NEXT: vadduwm 2, 2, 3
5208 ; PWR7-NEXT: vadduwm 3, 7, 7
5209 ; PWR7-NEXT: vspltisw 4, 6
5210 ; PWR7-NEXT: vsrw 2, 2, 3
5211 ; PWR7-NEXT: vcmpgtuw 2, 4, 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, 4
5317 ; PWR7-NEXT: addi 3, 3, .LCPI50_1@toc@l
5318 ; PWR7-NEXT: vsrw 3, 2, 3
5319 ; PWR7-NEXT: vspltisb 0, 15
5320 ; PWR7-NEXT: vspltisb 1, 1
5321 ; PWR7-NEXT: vspltisw 6, -16
5322 ; PWR7-NEXT: vspltisw 7, 12
5323 ; PWR7-NEXT: xxland 35, 35, 0
5324 ; PWR7-NEXT: lxvw4x 0, 0, 3
5325 ; PWR7-NEXT: vsubuwm 2, 2, 3
5326 ; PWR7-NEXT: vsrw 3, 2, 4
5327 ; PWR7-NEXT: xxland 34, 34, 0
5328 ; PWR7-NEXT: xxland 35, 35, 0
5329 ; PWR7-NEXT: vadduwm 2, 2, 3
5330 ; PWR7-NEXT: vsrw 3, 2, 5
5331 ; PWR7-NEXT: xxlxor 37, 37, 37
5332 ; PWR7-NEXT: vadduwm 2, 2, 3
5333 ; PWR7-NEXT: vrlw 3, 1, 6
5334 ; PWR7-NEXT: xxland 34, 34, 32
5335 ; PWR7-NEXT: vmsumuhm 3, 2, 3, 5
5336 ; PWR7-NEXT: vmulouh 2, 2, 1
5337 ; PWR7-NEXT: vslw 3, 3, 6
5338 ; PWR7-NEXT: vadduwm 2, 2, 3
5339 ; PWR7-NEXT: vadduwm 3, 7, 7
5340 ; PWR7-NEXT: vspltisw 4, 6
5341 ; PWR7-NEXT: vsrw 2, 2, 3
5342 ; PWR7-NEXT: vcmpgtuw 2, 2, 4
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, 4
5448 ; PWR7-NEXT: addi 3, 3, .LCPI51_1@toc@l
5449 ; PWR7-NEXT: vsrw 3, 2, 3
5450 ; PWR7-NEXT: vspltisb 0, 15
5451 ; PWR7-NEXT: vspltisb 1, 1
5452 ; PWR7-NEXT: vspltisw 6, -16
5453 ; PWR7-NEXT: vspltisw 7, 12
5454 ; PWR7-NEXT: xxland 35, 35, 0
5455 ; PWR7-NEXT: lxvw4x 0, 0, 3
5456 ; PWR7-NEXT: vsubuwm 2, 2, 3
5457 ; PWR7-NEXT: vsrw 3, 2, 4
5458 ; PWR7-NEXT: xxland 34, 34, 0
5459 ; PWR7-NEXT: xxland 35, 35, 0
5460 ; PWR7-NEXT: vadduwm 2, 2, 3
5461 ; PWR7-NEXT: vsrw 3, 2, 5
5462 ; PWR7-NEXT: xxlxor 37, 37, 37
5463 ; PWR7-NEXT: vadduwm 2, 2, 3
5464 ; PWR7-NEXT: vrlw 3, 1, 6
5465 ; PWR7-NEXT: xxland 34, 34, 32
5466 ; PWR7-NEXT: vmsumuhm 3, 2, 3, 5
5467 ; PWR7-NEXT: vmulouh 2, 2, 1
5468 ; PWR7-NEXT: vslw 3, 3, 6
5469 ; PWR7-NEXT: vadduwm 2, 2, 3
5470 ; PWR7-NEXT: vadduwm 3, 7, 7
5471 ; PWR7-NEXT: vspltisw 4, 7
5472 ; PWR7-NEXT: vsrw 2, 2, 3
5473 ; PWR7-NEXT: vcmpgtuw 2, 4, 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, 4
5579 ; PWR7-NEXT: addi 3, 3, .LCPI52_1@toc@l
5580 ; PWR7-NEXT: vsrw 3, 2, 3
5581 ; PWR7-NEXT: vspltisb 0, 15
5582 ; PWR7-NEXT: vspltisb 1, 1
5583 ; PWR7-NEXT: vspltisw 6, -16
5584 ; PWR7-NEXT: vspltisw 7, 12
5585 ; PWR7-NEXT: xxland 35, 35, 0
5586 ; PWR7-NEXT: lxvw4x 0, 0, 3
5587 ; PWR7-NEXT: vsubuwm 2, 2, 3
5588 ; PWR7-NEXT: vsrw 3, 2, 4
5589 ; PWR7-NEXT: xxland 34, 34, 0
5590 ; PWR7-NEXT: xxland 35, 35, 0
5591 ; PWR7-NEXT: vadduwm 2, 2, 3
5592 ; PWR7-NEXT: vsrw 3, 2, 5
5593 ; PWR7-NEXT: xxlxor 37, 37, 37
5594 ; PWR7-NEXT: vadduwm 2, 2, 3
5595 ; PWR7-NEXT: vrlw 3, 1, 6
5596 ; PWR7-NEXT: xxland 34, 34, 32
5597 ; PWR7-NEXT: vmsumuhm 3, 2, 3, 5
5598 ; PWR7-NEXT: vmulouh 2, 2, 1
5599 ; PWR7-NEXT: vslw 3, 3, 6
5600 ; PWR7-NEXT: vadduwm 2, 2, 3
5601 ; PWR7-NEXT: vadduwm 3, 7, 7
5602 ; PWR7-NEXT: vspltisw 4, 7
5603 ; PWR7-NEXT: vsrw 2, 2, 3
5604 ; PWR7-NEXT: vcmpgtuw 2, 2, 4
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, 4
5710 ; PWR7-NEXT: addi 3, 3, .LCPI53_1@toc@l
5711 ; PWR7-NEXT: vsrw 3, 2, 3
5712 ; PWR7-NEXT: vspltisb 0, 15
5713 ; PWR7-NEXT: vspltisb 1, 1
5714 ; PWR7-NEXT: vspltisw 6, -16
5715 ; PWR7-NEXT: vspltisw 7, 12
5716 ; PWR7-NEXT: xxland 35, 35, 0
5717 ; PWR7-NEXT: lxvw4x 0, 0, 3
5718 ; PWR7-NEXT: vsubuwm 2, 2, 3
5719 ; PWR7-NEXT: vsrw 3, 2, 4
5720 ; PWR7-NEXT: xxland 34, 34, 0
5721 ; PWR7-NEXT: xxland 35, 35, 0
5722 ; PWR7-NEXT: vadduwm 2, 2, 3
5723 ; PWR7-NEXT: vsrw 3, 2, 5
5724 ; PWR7-NEXT: xxlxor 37, 37, 37
5725 ; PWR7-NEXT: vadduwm 2, 2, 3
5726 ; PWR7-NEXT: vrlw 3, 1, 6
5727 ; PWR7-NEXT: xxland 34, 34, 32
5728 ; PWR7-NEXT: vmsumuhm 3, 2, 3, 5
5729 ; PWR7-NEXT: vmulouh 2, 2, 1
5730 ; PWR7-NEXT: vslw 3, 3, 6
5731 ; PWR7-NEXT: vadduwm 2, 2, 3
5732 ; PWR7-NEXT: vadduwm 3, 7, 7
5733 ; PWR7-NEXT: vspltisw 4, 8
5734 ; PWR7-NEXT: vsrw 2, 2, 3
5735 ; PWR7-NEXT: vcmpgtuw 2, 4, 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, 4
5841 ; PWR7-NEXT: addi 3, 3, .LCPI54_1@toc@l
5842 ; PWR7-NEXT: vsrw 3, 2, 3
5843 ; PWR7-NEXT: vspltisb 0, 15
5844 ; PWR7-NEXT: vspltisb 1, 1
5845 ; PWR7-NEXT: vspltisw 6, -16
5846 ; PWR7-NEXT: vspltisw 7, 12
5847 ; PWR7-NEXT: xxland 35, 35, 0
5848 ; PWR7-NEXT: lxvw4x 0, 0, 3
5849 ; PWR7-NEXT: vsubuwm 2, 2, 3
5850 ; PWR7-NEXT: vsrw 3, 2, 4
5851 ; PWR7-NEXT: xxland 34, 34, 0
5852 ; PWR7-NEXT: xxland 35, 35, 0
5853 ; PWR7-NEXT: vadduwm 2, 2, 3
5854 ; PWR7-NEXT: vsrw 3, 2, 5
5855 ; PWR7-NEXT: xxlxor 37, 37, 37
5856 ; PWR7-NEXT: vadduwm 2, 2, 3
5857 ; PWR7-NEXT: vrlw 3, 1, 6
5858 ; PWR7-NEXT: xxland 34, 34, 32
5859 ; PWR7-NEXT: vmsumuhm 3, 2, 3, 5
5860 ; PWR7-NEXT: vmulouh 2, 2, 1
5861 ; PWR7-NEXT: vslw 3, 3, 6
5862 ; PWR7-NEXT: vadduwm 2, 2, 3
5863 ; PWR7-NEXT: vadduwm 3, 7, 7
5864 ; PWR7-NEXT: vspltisw 4, 8
5865 ; PWR7-NEXT: vsrw 2, 2, 3
5866 ; PWR7-NEXT: vcmpgtuw 2, 2, 4
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, 4
5972 ; PWR7-NEXT: addi 3, 3, .LCPI55_1@toc@l
5973 ; PWR7-NEXT: vsrw 3, 2, 3
5974 ; PWR7-NEXT: vspltisb 0, 15
5975 ; PWR7-NEXT: vspltisb 1, 1
5976 ; PWR7-NEXT: vspltisw 6, -16
5977 ; PWR7-NEXT: vspltisw 7, 12
5978 ; PWR7-NEXT: xxland 35, 35, 0
5979 ; PWR7-NEXT: lxvw4x 0, 0, 3
5980 ; PWR7-NEXT: vsubuwm 2, 2, 3
5981 ; PWR7-NEXT: vsrw 3, 2, 4
5982 ; PWR7-NEXT: xxland 34, 34, 0
5983 ; PWR7-NEXT: xxland 35, 35, 0
5984 ; PWR7-NEXT: vadduwm 2, 2, 3
5985 ; PWR7-NEXT: vsrw 3, 2, 5
5986 ; PWR7-NEXT: xxlxor 37, 37, 37
5987 ; PWR7-NEXT: vadduwm 2, 2, 3
5988 ; PWR7-NEXT: vrlw 3, 1, 6
5989 ; PWR7-NEXT: xxland 34, 34, 32
5990 ; PWR7-NEXT: vmsumuhm 3, 2, 3, 5
5991 ; PWR7-NEXT: vmulouh 2, 2, 1
5992 ; PWR7-NEXT: vslw 3, 3, 6
5993 ; PWR7-NEXT: vadduwm 2, 2, 3
5994 ; PWR7-NEXT: vadduwm 3, 7, 7
5995 ; PWR7-NEXT: vspltisw 4, 9
5996 ; PWR7-NEXT: vsrw 2, 2, 3
5997 ; PWR7-NEXT: vcmpgtuw 2, 4, 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, 4
6103 ; PWR7-NEXT: addi 3, 3, .LCPI56_1@toc@l
6104 ; PWR7-NEXT: vsrw 3, 2, 3
6105 ; PWR7-NEXT: vspltisb 0, 15
6106 ; PWR7-NEXT: vspltisb 1, 1
6107 ; PWR7-NEXT: vspltisw 6, -16
6108 ; PWR7-NEXT: vspltisw 7, 12
6109 ; PWR7-NEXT: xxland 35, 35, 0
6110 ; PWR7-NEXT: lxvw4x 0, 0, 3
6111 ; PWR7-NEXT: vsubuwm 2, 2, 3
6112 ; PWR7-NEXT: vsrw 3, 2, 4
6113 ; PWR7-NEXT: xxland 34, 34, 0
6114 ; PWR7-NEXT: xxland 35, 35, 0
6115 ; PWR7-NEXT: vadduwm 2, 2, 3
6116 ; PWR7-NEXT: vsrw 3, 2, 5
6117 ; PWR7-NEXT: xxlxor 37, 37, 37
6118 ; PWR7-NEXT: vadduwm 2, 2, 3
6119 ; PWR7-NEXT: vrlw 3, 1, 6
6120 ; PWR7-NEXT: xxland 34, 34, 32
6121 ; PWR7-NEXT: vmsumuhm 3, 2, 3, 5
6122 ; PWR7-NEXT: vmulouh 2, 2, 1
6123 ; PWR7-NEXT: vslw 3, 3, 6
6124 ; PWR7-NEXT: vadduwm 2, 2, 3
6125 ; PWR7-NEXT: vadduwm 3, 7, 7
6126 ; PWR7-NEXT: vspltisw 4, 9
6127 ; PWR7-NEXT: vsrw 2, 2, 3
6128 ; PWR7-NEXT: vcmpgtuw 2, 2, 4
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, 4
6234 ; PWR7-NEXT: addi 3, 3, .LCPI57_1@toc@l
6235 ; PWR7-NEXT: vsrw 3, 2, 3
6236 ; PWR7-NEXT: vspltisb 0, 15
6237 ; PWR7-NEXT: vspltisb 1, 1
6238 ; PWR7-NEXT: vspltisw 6, -16
6239 ; PWR7-NEXT: vspltisw 7, 12
6240 ; PWR7-NEXT: xxland 35, 35, 0
6241 ; PWR7-NEXT: lxvw4x 0, 0, 3
6242 ; PWR7-NEXT: vsubuwm 2, 2, 3
6243 ; PWR7-NEXT: vsrw 3, 2, 4
6244 ; PWR7-NEXT: xxland 34, 34, 0
6245 ; PWR7-NEXT: xxland 35, 35, 0
6246 ; PWR7-NEXT: vadduwm 2, 2, 3
6247 ; PWR7-NEXT: vsrw 3, 2, 5
6248 ; PWR7-NEXT: xxlxor 37, 37, 37
6249 ; PWR7-NEXT: vadduwm 2, 2, 3
6250 ; PWR7-NEXT: vrlw 3, 1, 6
6251 ; PWR7-NEXT: xxland 34, 34, 32
6252 ; PWR7-NEXT: vmsumuhm 3, 2, 3, 5
6253 ; PWR7-NEXT: vmulouh 2, 2, 1
6254 ; PWR7-NEXT: vslw 3, 3, 6
6255 ; PWR7-NEXT: vadduwm 2, 2, 3
6256 ; PWR7-NEXT: vadduwm 3, 7, 7
6257 ; PWR7-NEXT: vspltisw 4, 10
6258 ; PWR7-NEXT: vsrw 2, 2, 3
6259 ; PWR7-NEXT: vcmpgtuw 2, 4, 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, 4
6365 ; PWR7-NEXT: addi 3, 3, .LCPI58_1@toc@l
6366 ; PWR7-NEXT: vsrw 3, 2, 3
6367 ; PWR7-NEXT: vspltisb 0, 15
6368 ; PWR7-NEXT: vspltisb 1, 1
6369 ; PWR7-NEXT: vspltisw 6, -16
6370 ; PWR7-NEXT: vspltisw 7, 12
6371 ; PWR7-NEXT: xxland 35, 35, 0
6372 ; PWR7-NEXT: lxvw4x 0, 0, 3
6373 ; PWR7-NEXT: vsubuwm 2, 2, 3
6374 ; PWR7-NEXT: vsrw 3, 2, 4
6375 ; PWR7-NEXT: xxland 34, 34, 0
6376 ; PWR7-NEXT: xxland 35, 35, 0
6377 ; PWR7-NEXT: vadduwm 2, 2, 3
6378 ; PWR7-NEXT: vsrw 3, 2, 5
6379 ; PWR7-NEXT: xxlxor 37, 37, 37
6380 ; PWR7-NEXT: vadduwm 2, 2, 3
6381 ; PWR7-NEXT: vrlw 3, 1, 6
6382 ; PWR7-NEXT: xxland 34, 34, 32
6383 ; PWR7-NEXT: vmsumuhm 3, 2, 3, 5
6384 ; PWR7-NEXT: vmulouh 2, 2, 1
6385 ; PWR7-NEXT: vslw 3, 3, 6
6386 ; PWR7-NEXT: vadduwm 2, 2, 3
6387 ; PWR7-NEXT: vadduwm 3, 7, 7
6388 ; PWR7-NEXT: vspltisw 4, 10
6389 ; PWR7-NEXT: vsrw 2, 2, 3
6390 ; PWR7-NEXT: vcmpgtuw 2, 2, 4
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, 4
6496 ; PWR7-NEXT: addi 3, 3, .LCPI59_1@toc@l
6497 ; PWR7-NEXT: vsrw 3, 2, 3
6498 ; PWR7-NEXT: vspltisb 0, 15
6499 ; PWR7-NEXT: vspltisb 1, 1
6500 ; PWR7-NEXT: vspltisw 6, -16
6501 ; PWR7-NEXT: vspltisw 7, 12
6502 ; PWR7-NEXT: xxland 35, 35, 0
6503 ; PWR7-NEXT: lxvw4x 0, 0, 3
6504 ; PWR7-NEXT: vsubuwm 2, 2, 3
6505 ; PWR7-NEXT: vsrw 3, 2, 4
6506 ; PWR7-NEXT: xxland 34, 34, 0
6507 ; PWR7-NEXT: xxland 35, 35, 0
6508 ; PWR7-NEXT: vadduwm 2, 2, 3
6509 ; PWR7-NEXT: vsrw 3, 2, 5
6510 ; PWR7-NEXT: xxlxor 37, 37, 37
6511 ; PWR7-NEXT: vadduwm 2, 2, 3
6512 ; PWR7-NEXT: vrlw 3, 1, 6
6513 ; PWR7-NEXT: xxland 34, 34, 32
6514 ; PWR7-NEXT: vmsumuhm 3, 2, 3, 5
6515 ; PWR7-NEXT: vmulouh 2, 2, 1
6516 ; PWR7-NEXT: vslw 3, 3, 6
6517 ; PWR7-NEXT: vadduwm 2, 2, 3
6518 ; PWR7-NEXT: vadduwm 3, 7, 7
6519 ; PWR7-NEXT: vspltisw 4, 11
6520 ; PWR7-NEXT: vsrw 2, 2, 3
6521 ; PWR7-NEXT: vcmpgtuw 2, 4, 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, 4
6627 ; PWR7-NEXT: addi 3, 3, .LCPI60_1@toc@l
6628 ; PWR7-NEXT: vsrw 3, 2, 3
6629 ; PWR7-NEXT: vspltisb 0, 15
6630 ; PWR7-NEXT: vspltisb 1, 1
6631 ; PWR7-NEXT: vspltisw 6, -16
6632 ; PWR7-NEXT: vspltisw 7, 12
6633 ; PWR7-NEXT: xxland 35, 35, 0
6634 ; PWR7-NEXT: lxvw4x 0, 0, 3
6635 ; PWR7-NEXT: vsubuwm 2, 2, 3
6636 ; PWR7-NEXT: vsrw 3, 2, 4
6637 ; PWR7-NEXT: xxland 34, 34, 0
6638 ; PWR7-NEXT: xxland 35, 35, 0
6639 ; PWR7-NEXT: vadduwm 2, 2, 3
6640 ; PWR7-NEXT: vsrw 3, 2, 5
6641 ; PWR7-NEXT: xxlxor 37, 37, 37
6642 ; PWR7-NEXT: vadduwm 2, 2, 3
6643 ; PWR7-NEXT: vrlw 3, 1, 6
6644 ; PWR7-NEXT: xxland 34, 34, 32
6645 ; PWR7-NEXT: vmsumuhm 3, 2, 3, 5
6646 ; PWR7-NEXT: vmulouh 2, 2, 1
6647 ; PWR7-NEXT: vslw 3, 3, 6
6648 ; PWR7-NEXT: vadduwm 2, 2, 3
6649 ; PWR7-NEXT: vadduwm 3, 7, 7
6650 ; PWR7-NEXT: vspltisw 4, 11
6651 ; PWR7-NEXT: vsrw 2, 2, 3
6652 ; PWR7-NEXT: vcmpgtuw 2, 2, 4
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, 4
6756 ; PWR7-NEXT: addi 3, 3, .LCPI61_1@toc@l
6757 ; PWR7-NEXT: vsrw 3, 2, 3
6758 ; PWR7-NEXT: vspltisb 0, 15
6759 ; PWR7-NEXT: vspltisb 1, 1
6760 ; PWR7-NEXT: vspltisw 6, -16
6761 ; PWR7-NEXT: vspltisw 7, 12
6762 ; PWR7-NEXT: xxland 35, 35, 0
6763 ; PWR7-NEXT: lxvw4x 0, 0, 3
6764 ; PWR7-NEXT: vsubuwm 2, 2, 3
6765 ; PWR7-NEXT: vsrw 3, 2, 4
6766 ; PWR7-NEXT: xxland 34, 34, 0
6767 ; PWR7-NEXT: xxlxor 36, 36, 36
6768 ; PWR7-NEXT: xxland 35, 35, 0
6769 ; PWR7-NEXT: vadduwm 2, 2, 3
6770 ; PWR7-NEXT: vsrw 3, 2, 5
6771 ; PWR7-NEXT: vadduwm 2, 2, 3
6772 ; PWR7-NEXT: vrlw 3, 1, 6
6773 ; PWR7-NEXT: xxland 34, 34, 32
6774 ; PWR7-NEXT: vmsumuhm 3, 2, 3, 4
6775 ; PWR7-NEXT: vmulouh 2, 2, 1
6776 ; PWR7-NEXT: vslw 3, 3, 6
6777 ; PWR7-NEXT: vadduwm 2, 2, 3
6778 ; PWR7-NEXT: vadduwm 3, 7, 7
6779 ; PWR7-NEXT: vsrw 2, 2, 3
6780 ; PWR7-NEXT: vcmpgtuw 2, 7, 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, 4
6884 ; PWR7-NEXT: addi 3, 3, .LCPI62_1@toc@l
6885 ; PWR7-NEXT: vsrw 3, 2, 3
6886 ; PWR7-NEXT: vspltisb 0, 15
6887 ; PWR7-NEXT: vspltisb 1, 1
6888 ; PWR7-NEXT: vspltisw 6, -16
6889 ; PWR7-NEXT: vspltisw 7, 12
6890 ; PWR7-NEXT: xxland 35, 35, 0
6891 ; PWR7-NEXT: lxvw4x 0, 0, 3
6892 ; PWR7-NEXT: vsubuwm 2, 2, 3
6893 ; PWR7-NEXT: vsrw 3, 2, 4
6894 ; PWR7-NEXT: xxland 34, 34, 0
6895 ; PWR7-NEXT: xxlxor 36, 36, 36
6896 ; PWR7-NEXT: xxland 35, 35, 0
6897 ; PWR7-NEXT: vadduwm 2, 2, 3
6898 ; PWR7-NEXT: vsrw 3, 2, 5
6899 ; PWR7-NEXT: vadduwm 2, 2, 3
6900 ; PWR7-NEXT: vrlw 3, 1, 6
6901 ; PWR7-NEXT: xxland 34, 34, 32
6902 ; PWR7-NEXT: vmsumuhm 3, 2, 3, 4
6903 ; PWR7-NEXT: vmulouh 2, 2, 1
6904 ; PWR7-NEXT: vslw 3, 3, 6
6905 ; PWR7-NEXT: vadduwm 2, 2, 3
6906 ; PWR7-NEXT: vadduwm 3, 7, 7
6907 ; PWR7-NEXT: vsrw 2, 2, 3
6908 ; PWR7-NEXT: vcmpgtuw 2, 2, 7
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, 4
7014 ; PWR7-NEXT: addi 3, 3, .LCPI63_1@toc@l
7015 ; PWR7-NEXT: vsrw 3, 2, 3
7016 ; PWR7-NEXT: vspltisb 0, 15
7017 ; PWR7-NEXT: vspltisb 1, 1
7018 ; PWR7-NEXT: vspltisw 6, -16
7019 ; PWR7-NEXT: vspltisw 7, 12
7020 ; PWR7-NEXT: xxland 35, 35, 0
7021 ; PWR7-NEXT: lxvw4x 0, 0, 3
7022 ; PWR7-NEXT: vsubuwm 2, 2, 3
7023 ; PWR7-NEXT: vsrw 3, 2, 4
7024 ; PWR7-NEXT: xxland 34, 34, 0
7025 ; PWR7-NEXT: xxland 35, 35, 0
7026 ; PWR7-NEXT: vadduwm 2, 2, 3
7027 ; PWR7-NEXT: vsrw 3, 2, 5
7028 ; PWR7-NEXT: xxlxor 37, 37, 37
7029 ; PWR7-NEXT: vadduwm 2, 2, 3
7030 ; PWR7-NEXT: vrlw 3, 1, 6
7031 ; PWR7-NEXT: xxland 34, 34, 32
7032 ; PWR7-NEXT: vmsumuhm 3, 2, 3, 5
7033 ; PWR7-NEXT: vmulouh 2, 2, 1
7034 ; PWR7-NEXT: vslw 3, 3, 6
7035 ; PWR7-NEXT: vadduwm 2, 2, 3
7036 ; PWR7-NEXT: vadduwm 3, 7, 7
7037 ; PWR7-NEXT: vspltisw 4, 13
7038 ; PWR7-NEXT: vsrw 2, 2, 3
7039 ; PWR7-NEXT: vcmpgtuw 2, 4, 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, 4
7145 ; PWR7-NEXT: addi 3, 3, .LCPI64_1@toc@l
7146 ; PWR7-NEXT: vsrw 3, 2, 3
7147 ; PWR7-NEXT: vspltisb 0, 15
7148 ; PWR7-NEXT: vspltisb 1, 1
7149 ; PWR7-NEXT: vspltisw 6, -16
7150 ; PWR7-NEXT: vspltisw 7, 12
7151 ; PWR7-NEXT: xxland 35, 35, 0
7152 ; PWR7-NEXT: lxvw4x 0, 0, 3
7153 ; PWR7-NEXT: vsubuwm 2, 2, 3
7154 ; PWR7-NEXT: vsrw 3, 2, 4
7155 ; PWR7-NEXT: xxland 34, 34, 0
7156 ; PWR7-NEXT: xxland 35, 35, 0
7157 ; PWR7-NEXT: vadduwm 2, 2, 3
7158 ; PWR7-NEXT: vsrw 3, 2, 5
7159 ; PWR7-NEXT: xxlxor 37, 37, 37
7160 ; PWR7-NEXT: vadduwm 2, 2, 3
7161 ; PWR7-NEXT: vrlw 3, 1, 6
7162 ; PWR7-NEXT: xxland 34, 34, 32
7163 ; PWR7-NEXT: vmsumuhm 3, 2, 3, 5
7164 ; PWR7-NEXT: vmulouh 2, 2, 1
7165 ; PWR7-NEXT: vslw 3, 3, 6
7166 ; PWR7-NEXT: vadduwm 2, 2, 3
7167 ; PWR7-NEXT: vadduwm 3, 7, 7
7168 ; PWR7-NEXT: vspltisw 4, 13
7169 ; PWR7-NEXT: vsrw 2, 2, 3
7170 ; PWR7-NEXT: vcmpgtuw 2, 2, 4
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, 4
7276 ; PWR7-NEXT: addi 3, 3, .LCPI65_1@toc@l
7277 ; PWR7-NEXT: vsrw 3, 2, 3
7278 ; PWR7-NEXT: vspltisb 0, 15
7279 ; PWR7-NEXT: vspltisb 1, 1
7280 ; PWR7-NEXT: vspltisw 6, -16
7281 ; PWR7-NEXT: vspltisw 7, 12
7282 ; PWR7-NEXT: xxland 35, 35, 0
7283 ; PWR7-NEXT: lxvw4x 0, 0, 3
7284 ; PWR7-NEXT: vsubuwm 2, 2, 3
7285 ; PWR7-NEXT: vsrw 3, 2, 4
7286 ; PWR7-NEXT: xxland 34, 34, 0
7287 ; PWR7-NEXT: xxland 35, 35, 0
7288 ; PWR7-NEXT: vadduwm 2, 2, 3
7289 ; PWR7-NEXT: vsrw 3, 2, 5
7290 ; PWR7-NEXT: xxlxor 37, 37, 37
7291 ; PWR7-NEXT: vadduwm 2, 2, 3
7292 ; PWR7-NEXT: vrlw 3, 1, 6
7293 ; PWR7-NEXT: xxland 34, 34, 32
7294 ; PWR7-NEXT: vmsumuhm 3, 2, 3, 5
7295 ; PWR7-NEXT: vmulouh 2, 2, 1
7296 ; PWR7-NEXT: vslw 3, 3, 6
7297 ; PWR7-NEXT: vadduwm 2, 2, 3
7298 ; PWR7-NEXT: vadduwm 3, 7, 7
7299 ; PWR7-NEXT: vspltisw 4, 14
7300 ; PWR7-NEXT: vsrw 2, 2, 3
7301 ; PWR7-NEXT: vcmpgtuw 2, 4, 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, 4
7407 ; PWR7-NEXT: addi 3, 3, .LCPI66_1@toc@l
7408 ; PWR7-NEXT: vsrw 3, 2, 3
7409 ; PWR7-NEXT: vspltisb 0, 15
7410 ; PWR7-NEXT: vspltisb 1, 1
7411 ; PWR7-NEXT: vspltisw 6, -16
7412 ; PWR7-NEXT: vspltisw 7, 12
7413 ; PWR7-NEXT: xxland 35, 35, 0
7414 ; PWR7-NEXT: lxvw4x 0, 0, 3
7415 ; PWR7-NEXT: vsubuwm 2, 2, 3
7416 ; PWR7-NEXT: vsrw 3, 2, 4
7417 ; PWR7-NEXT: xxland 34, 34, 0
7418 ; PWR7-NEXT: xxland 35, 35, 0
7419 ; PWR7-NEXT: vadduwm 2, 2, 3
7420 ; PWR7-NEXT: vsrw 3, 2, 5
7421 ; PWR7-NEXT: xxlxor 37, 37, 37
7422 ; PWR7-NEXT: vadduwm 2, 2, 3
7423 ; PWR7-NEXT: vrlw 3, 1, 6
7424 ; PWR7-NEXT: xxland 34, 34, 32
7425 ; PWR7-NEXT: vmsumuhm 3, 2, 3, 5
7426 ; PWR7-NEXT: vmulouh 2, 2, 1
7427 ; PWR7-NEXT: vslw 3, 3, 6
7428 ; PWR7-NEXT: vadduwm 2, 2, 3
7429 ; PWR7-NEXT: vadduwm 3, 7, 7
7430 ; PWR7-NEXT: vspltisw 4, 14
7431 ; PWR7-NEXT: vsrw 2, 2, 3
7432 ; PWR7-NEXT: vcmpgtuw 2, 2, 4
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, 4
7538 ; PWR7-NEXT: addi 3, 3, .LCPI67_1@toc@l
7539 ; PWR7-NEXT: vsrw 3, 2, 3
7540 ; PWR7-NEXT: vspltisb 0, 15
7541 ; PWR7-NEXT: vspltisb 1, 1
7542 ; PWR7-NEXT: vspltisw 6, -16
7543 ; PWR7-NEXT: vspltisw 7, 12
7544 ; PWR7-NEXT: xxland 35, 35, 0
7545 ; PWR7-NEXT: lxvw4x 0, 0, 3
7546 ; PWR7-NEXT: vsubuwm 2, 2, 3
7547 ; PWR7-NEXT: vsrw 3, 2, 4
7548 ; PWR7-NEXT: xxland 34, 34, 0
7549 ; PWR7-NEXT: xxland 35, 35, 0
7550 ; PWR7-NEXT: vadduwm 2, 2, 3
7551 ; PWR7-NEXT: vsrw 3, 2, 5
7552 ; PWR7-NEXT: xxlxor 37, 37, 37
7553 ; PWR7-NEXT: vadduwm 2, 2, 3
7554 ; PWR7-NEXT: vrlw 3, 1, 6
7555 ; PWR7-NEXT: xxland 34, 34, 32
7556 ; PWR7-NEXT: vmsumuhm 3, 2, 3, 5
7557 ; PWR7-NEXT: vmulouh 2, 2, 1
7558 ; PWR7-NEXT: vslw 3, 3, 6
7559 ; PWR7-NEXT: vadduwm 2, 2, 3
7560 ; PWR7-NEXT: vadduwm 3, 7, 7
7561 ; PWR7-NEXT: vspltisw 4, 15
7562 ; PWR7-NEXT: vsrw 2, 2, 3
7563 ; PWR7-NEXT: vcmpgtuw 2, 4, 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, 4
7669 ; PWR7-NEXT: addi 3, 3, .LCPI68_1@toc@l
7670 ; PWR7-NEXT: vsrw 3, 2, 3
7671 ; PWR7-NEXT: vspltisb 0, 15
7672 ; PWR7-NEXT: vspltisb 1, 1
7673 ; PWR7-NEXT: vspltisw 6, -16
7674 ; PWR7-NEXT: vspltisw 7, 12
7675 ; PWR7-NEXT: xxland 35, 35, 0
7676 ; PWR7-NEXT: lxvw4x 0, 0, 3
7677 ; PWR7-NEXT: vsubuwm 2, 2, 3
7678 ; PWR7-NEXT: vsrw 3, 2, 4
7679 ; PWR7-NEXT: xxland 34, 34, 0
7680 ; PWR7-NEXT: xxland 35, 35, 0
7681 ; PWR7-NEXT: vadduwm 2, 2, 3
7682 ; PWR7-NEXT: vsrw 3, 2, 5
7683 ; PWR7-NEXT: xxlxor 37, 37, 37
7684 ; PWR7-NEXT: vadduwm 2, 2, 3
7685 ; PWR7-NEXT: vrlw 3, 1, 6
7686 ; PWR7-NEXT: xxland 34, 34, 32
7687 ; PWR7-NEXT: vmsumuhm 3, 2, 3, 5
7688 ; PWR7-NEXT: vmulouh 2, 2, 1
7689 ; PWR7-NEXT: vslw 3, 3, 6
7690 ; PWR7-NEXT: vadduwm 2, 2, 3
7691 ; PWR7-NEXT: vadduwm 3, 7, 7
7692 ; PWR7-NEXT: vspltisw 4, 15
7693 ; PWR7-NEXT: vsrw 2, 2, 3
7694 ; PWR7-NEXT: vcmpgtuw 2, 2, 4
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, 4
7802 ; PWR7-NEXT: addi 3, 3, .LCPI69_1@toc@l
7803 ; PWR7-NEXT: vsrw 3, 2, 3
7804 ; PWR7-NEXT: vspltisb 0, 15
7805 ; PWR7-NEXT: vspltisb 1, 1
7806 ; PWR7-NEXT: vspltisw 6, -16
7807 ; PWR7-NEXT: vspltisw 7, 12
7808 ; PWR7-NEXT: vspltisw 8, 8
7809 ; PWR7-NEXT: xxland 35, 35, 0
7810 ; PWR7-NEXT: lxvw4x 0, 0, 3
7811 ; PWR7-NEXT: vsubuwm 2, 2, 3
7812 ; PWR7-NEXT: vsrw 3, 2, 4
7813 ; PWR7-NEXT: xxland 34, 34, 0
7814 ; PWR7-NEXT: xxlxor 36, 36, 36
7815 ; PWR7-NEXT: xxland 35, 35, 0
7816 ; PWR7-NEXT: vadduwm 2, 2, 3
7817 ; PWR7-NEXT: vsrw 3, 2, 5
7818 ; PWR7-NEXT: vadduwm 2, 2, 3
7819 ; PWR7-NEXT: vrlw 3, 1, 6
7820 ; PWR7-NEXT: xxland 34, 34, 32
7821 ; PWR7-NEXT: vmsumuhm 3, 2, 3, 4
7822 ; PWR7-NEXT: vmulouh 2, 2, 1
7823 ; PWR7-NEXT: vslw 3, 3, 6
7824 ; PWR7-NEXT: vadduwm 2, 2, 3
7825 ; PWR7-NEXT: vadduwm 3, 7, 7
7826 ; PWR7-NEXT: vsrw 2, 2, 3
7827 ; PWR7-NEXT: vadduwm 3, 8, 8
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, 4
7938 ; PWR7-NEXT: addi 3, 3, .LCPI70_1@toc@l
7939 ; PWR7-NEXT: vsrw 3, 2, 3
7940 ; PWR7-NEXT: vspltisb 0, 15
7941 ; PWR7-NEXT: vspltisb 1, 1
7942 ; PWR7-NEXT: vspltisw 6, -16
7943 ; PWR7-NEXT: vspltisw 7, 12
7944 ; PWR7-NEXT: vspltisw 8, 8
7945 ; PWR7-NEXT: xxland 35, 35, 0
7946 ; PWR7-NEXT: lxvw4x 0, 0, 3
7947 ; PWR7-NEXT: vsubuwm 2, 2, 3
7948 ; PWR7-NEXT: vsrw 3, 2, 4
7949 ; PWR7-NEXT: xxland 34, 34, 0
7950 ; PWR7-NEXT: xxlxor 36, 36, 36
7951 ; PWR7-NEXT: xxland 35, 35, 0
7952 ; PWR7-NEXT: vadduwm 2, 2, 3
7953 ; PWR7-NEXT: vsrw 3, 2, 5
7954 ; PWR7-NEXT: vadduwm 2, 2, 3
7955 ; PWR7-NEXT: vrlw 3, 1, 6
7956 ; PWR7-NEXT: xxland 34, 34, 32
7957 ; PWR7-NEXT: vmsumuhm 3, 2, 3, 4
7958 ; PWR7-NEXT: vmulouh 2, 2, 1
7959 ; PWR7-NEXT: vslw 3, 3, 6
7960 ; PWR7-NEXT: vadduwm 2, 2, 3
7961 ; PWR7-NEXT: vadduwm 3, 7, 7
7962 ; PWR7-NEXT: vsrw 2, 2, 3
7963 ; PWR7-NEXT: vadduwm 3, 8, 8
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 4, 2
8069 ; PWR7-NEXT: lxvw4x 0, 0, 3
8070 ; PWR7-NEXT: addis 3, 2, .LCPI71_1@toc@ha
8071 ; PWR7-NEXT: vspltisw 5, 4
8072 ; PWR7-NEXT: addi 3, 3, .LCPI71_1@toc@l
8073 ; PWR7-NEXT: vsrw 8, 2, 3
8074 ; PWR7-NEXT: vspltisb 0, 15
8075 ; PWR7-NEXT: vspltisb 1, 1
8076 ; PWR7-NEXT: vspltisw 6, -16
8077 ; PWR7-NEXT: vspltisw 7, 12
8078 ; PWR7-NEXT: vsubuwm 3, 3, 6
8079 ; PWR7-NEXT: xxland 40, 40, 0
8080 ; PWR7-NEXT: lxvw4x 0, 0, 3
8081 ; PWR7-NEXT: vsubuwm 2, 2, 8
8082 ; PWR7-NEXT: vsrw 4, 2, 4
8083 ; PWR7-NEXT: xxland 34, 34, 0
8084 ; PWR7-NEXT: xxland 36, 36, 0
8085 ; PWR7-NEXT: vadduwm 2, 2, 4
8086 ; PWR7-NEXT: vsrw 4, 2, 5
8087 ; PWR7-NEXT: xxlxor 37, 37, 37
8088 ; PWR7-NEXT: vadduwm 2, 2, 4
8089 ; PWR7-NEXT: vrlw 4, 1, 6
8090 ; PWR7-NEXT: xxland 34, 34, 32
8091 ; PWR7-NEXT: vmsumuhm 4, 2, 4, 5
8092 ; PWR7-NEXT: vmulouh 2, 2, 1
8093 ; PWR7-NEXT: vslw 4, 4, 6
8094 ; PWR7-NEXT: vadduwm 2, 2, 4
8095 ; PWR7-NEXT: vadduwm 4, 7, 7
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 4, 2
8204 ; PWR7-NEXT: lxvw4x 0, 0, 3
8205 ; PWR7-NEXT: addis 3, 2, .LCPI72_1@toc@ha
8206 ; PWR7-NEXT: vspltisw 5, 4
8207 ; PWR7-NEXT: addi 3, 3, .LCPI72_1@toc@l
8208 ; PWR7-NEXT: vsrw 8, 2, 3
8209 ; PWR7-NEXT: vspltisb 0, 15
8210 ; PWR7-NEXT: vspltisb 1, 1
8211 ; PWR7-NEXT: vspltisw 6, -16
8212 ; PWR7-NEXT: vspltisw 7, 12
8213 ; PWR7-NEXT: vsubuwm 3, 3, 6
8214 ; PWR7-NEXT: xxland 40, 40, 0
8215 ; PWR7-NEXT: lxvw4x 0, 0, 3
8216 ; PWR7-NEXT: vsubuwm 2, 2, 8
8217 ; PWR7-NEXT: vsrw 4, 2, 4
8218 ; PWR7-NEXT: xxland 34, 34, 0
8219 ; PWR7-NEXT: xxland 36, 36, 0
8220 ; PWR7-NEXT: vadduwm 2, 2, 4
8221 ; PWR7-NEXT: vsrw 4, 2, 5
8222 ; PWR7-NEXT: xxlxor 37, 37, 37
8223 ; PWR7-NEXT: vadduwm 2, 2, 4
8224 ; PWR7-NEXT: vrlw 4, 1, 6
8225 ; PWR7-NEXT: xxland 34, 34, 32
8226 ; PWR7-NEXT: vmsumuhm 4, 2, 4, 5
8227 ; PWR7-NEXT: vmulouh 2, 2, 1
8228 ; PWR7-NEXT: vslw 4, 4, 6
8229 ; PWR7-NEXT: vadduwm 2, 2, 4
8230 ; PWR7-NEXT: vadduwm 4, 7, 7
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, 4
8344 ; PWR7-NEXT: addi 3, 3, .LCPI73_1@toc@l
8345 ; PWR7-NEXT: vsrw 3, 2, 3
8346 ; PWR7-NEXT: vspltisb 0, 15
8347 ; PWR7-NEXT: vspltisb 1, 1
8348 ; PWR7-NEXT: vspltisw 6, -16
8349 ; PWR7-NEXT: vspltisw 7, 12
8350 ; PWR7-NEXT: vspltisw 8, 9
8351 ; PWR7-NEXT: xxland 35, 35, 0
8352 ; PWR7-NEXT: lxvw4x 0, 0, 3
8353 ; PWR7-NEXT: vsubuwm 2, 2, 3
8354 ; PWR7-NEXT: vsrw 3, 2, 4
8355 ; PWR7-NEXT: xxland 34, 34, 0
8356 ; PWR7-NEXT: xxlxor 36, 36, 36
8357 ; PWR7-NEXT: xxland 35, 35, 0
8358 ; PWR7-NEXT: vadduwm 2, 2, 3
8359 ; PWR7-NEXT: vsrw 3, 2, 5
8360 ; PWR7-NEXT: vadduwm 2, 2, 3
8361 ; PWR7-NEXT: vrlw 3, 1, 6
8362 ; PWR7-NEXT: xxland 34, 34, 32
8363 ; PWR7-NEXT: vmsumuhm 3, 2, 3, 4
8364 ; PWR7-NEXT: vmulouh 2, 2, 1
8365 ; PWR7-NEXT: vslw 3, 3, 6
8366 ; PWR7-NEXT: vadduwm 2, 2, 3
8367 ; PWR7-NEXT: vadduwm 3, 7, 7
8368 ; PWR7-NEXT: vsrw 2, 2, 3
8369 ; PWR7-NEXT: vadduwm 3, 8, 8
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, 4
8480 ; PWR7-NEXT: addi 3, 3, .LCPI74_1@toc@l
8481 ; PWR7-NEXT: vsrw 3, 2, 3
8482 ; PWR7-NEXT: vspltisb 0, 15
8483 ; PWR7-NEXT: vspltisb 1, 1
8484 ; PWR7-NEXT: vspltisw 6, -16
8485 ; PWR7-NEXT: vspltisw 7, 12
8486 ; PWR7-NEXT: vspltisw 8, 9
8487 ; PWR7-NEXT: xxland 35, 35, 0
8488 ; PWR7-NEXT: lxvw4x 0, 0, 3
8489 ; PWR7-NEXT: vsubuwm 2, 2, 3
8490 ; PWR7-NEXT: vsrw 3, 2, 4
8491 ; PWR7-NEXT: xxland 34, 34, 0
8492 ; PWR7-NEXT: xxlxor 36, 36, 36
8493 ; PWR7-NEXT: xxland 35, 35, 0
8494 ; PWR7-NEXT: vadduwm 2, 2, 3
8495 ; PWR7-NEXT: vsrw 3, 2, 5
8496 ; PWR7-NEXT: vadduwm 2, 2, 3
8497 ; PWR7-NEXT: vrlw 3, 1, 6
8498 ; PWR7-NEXT: xxland 34, 34, 32
8499 ; PWR7-NEXT: vmsumuhm 3, 2, 3, 4
8500 ; PWR7-NEXT: vmulouh 2, 2, 1
8501 ; PWR7-NEXT: vslw 3, 3, 6
8502 ; PWR7-NEXT: vadduwm 2, 2, 3
8503 ; PWR7-NEXT: vadduwm 3, 7, 7
8504 ; PWR7-NEXT: vsrw 2, 2, 3
8505 ; PWR7-NEXT: vadduwm 3, 8, 8
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, 4
8616 ; PWR7-NEXT: addi 3, 3, .LCPI75_1@toc@l
8617 ; PWR7-NEXT: vsrw 3, 2, 3
8618 ; PWR7-NEXT: vspltisb 0, 15
8619 ; PWR7-NEXT: vspltisb 1, 1
8620 ; PWR7-NEXT: vspltisw 6, -16
8621 ; PWR7-NEXT: vspltisw 7, 12
8622 ; PWR7-NEXT: vspltisw 8, 3
8623 ; PWR7-NEXT: xxland 35, 35, 0
8624 ; PWR7-NEXT: lxvw4x 0, 0, 3
8625 ; PWR7-NEXT: vsubuwm 2, 2, 3
8626 ; PWR7-NEXT: vsrw 3, 2, 4
8627 ; PWR7-NEXT: xxland 34, 34, 0
8628 ; PWR7-NEXT: xxlxor 36, 36, 36
8629 ; PWR7-NEXT: xxland 35, 35, 0
8630 ; PWR7-NEXT: vadduwm 2, 2, 3
8631 ; PWR7-NEXT: vsrw 3, 2, 5
8632 ; PWR7-NEXT: vadduwm 2, 2, 3
8633 ; PWR7-NEXT: vrlw 3, 1, 6
8634 ; PWR7-NEXT: xxland 34, 34, 32
8635 ; PWR7-NEXT: vmsumuhm 3, 2, 3, 4
8636 ; PWR7-NEXT: vmulouh 2, 2, 1
8637 ; PWR7-NEXT: vslw 3, 3, 6
8638 ; PWR7-NEXT: vadduwm 2, 2, 3
8639 ; PWR7-NEXT: vadduwm 3, 7, 7
8640 ; PWR7-NEXT: vsrw 2, 2, 3
8641 ; PWR7-NEXT: vsubuwm 3, 8, 6
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, 4
8754 ; PWR7-NEXT: addi 3, 3, .LCPI76_1@toc@l
8755 ; PWR7-NEXT: vsrw 3, 2, 3
8756 ; PWR7-NEXT: vspltisb 0, 15
8757 ; PWR7-NEXT: vspltisb 1, 1
8758 ; PWR7-NEXT: vspltisw 6, -16
8759 ; PWR7-NEXT: vspltisw 7, 12
8760 ; PWR7-NEXT: vspltisw 8, 3
8761 ; PWR7-NEXT: xxland 35, 35, 0
8762 ; PWR7-NEXT: lxvw4x 0, 0, 3
8763 ; PWR7-NEXT: vsubuwm 2, 2, 3
8764 ; PWR7-NEXT: vsrw 3, 2, 4
8765 ; PWR7-NEXT: xxland 34, 34, 0
8766 ; PWR7-NEXT: xxlxor 36, 36, 36
8767 ; PWR7-NEXT: xxland 35, 35, 0
8768 ; PWR7-NEXT: vadduwm 2, 2, 3
8769 ; PWR7-NEXT: vsrw 3, 2, 5
8770 ; PWR7-NEXT: vadduwm 2, 2, 3
8771 ; PWR7-NEXT: vrlw 3, 1, 6
8772 ; PWR7-NEXT: xxland 34, 34, 32
8773 ; PWR7-NEXT: vmsumuhm 3, 2, 3, 4
8774 ; PWR7-NEXT: vmulouh 2, 2, 1
8775 ; PWR7-NEXT: vslw 3, 3, 6
8776 ; PWR7-NEXT: vadduwm 2, 2, 3
8777 ; PWR7-NEXT: vadduwm 3, 7, 7
8778 ; PWR7-NEXT: vsrw 2, 2, 3
8779 ; PWR7-NEXT: vsubuwm 3, 8, 6
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, 4
8892 ; PWR7-NEXT: addi 3, 3, .LCPI77_1@toc@l
8893 ; PWR7-NEXT: vsrw 3, 2, 3
8894 ; PWR7-NEXT: vspltisb 0, 15
8895 ; PWR7-NEXT: vspltisb 1, 1
8896 ; PWR7-NEXT: vspltisw 6, -16
8897 ; PWR7-NEXT: vspltisw 7, 12
8898 ; PWR7-NEXT: vspltisw 8, 10
8899 ; PWR7-NEXT: xxland 35, 35, 0
8900 ; PWR7-NEXT: lxvw4x 0, 0, 3
8901 ; PWR7-NEXT: vsubuwm 2, 2, 3
8902 ; PWR7-NEXT: vsrw 3, 2, 4
8903 ; PWR7-NEXT: xxland 34, 34, 0
8904 ; PWR7-NEXT: xxlxor 36, 36, 36
8905 ; PWR7-NEXT: xxland 35, 35, 0
8906 ; PWR7-NEXT: vadduwm 2, 2, 3
8907 ; PWR7-NEXT: vsrw 3, 2, 5
8908 ; PWR7-NEXT: vadduwm 2, 2, 3
8909 ; PWR7-NEXT: vrlw 3, 1, 6
8910 ; PWR7-NEXT: xxland 34, 34, 32
8911 ; PWR7-NEXT: vmsumuhm 3, 2, 3, 4
8912 ; PWR7-NEXT: vmulouh 2, 2, 1
8913 ; PWR7-NEXT: vslw 3, 3, 6
8914 ; PWR7-NEXT: vadduwm 2, 2, 3
8915 ; PWR7-NEXT: vadduwm 3, 7, 7
8916 ; PWR7-NEXT: vsrw 2, 2, 3
8917 ; PWR7-NEXT: vadduwm 3, 8, 8
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, 4
9028 ; PWR7-NEXT: addi 3, 3, .LCPI78_1@toc@l
9029 ; PWR7-NEXT: vsrw 3, 2, 3
9030 ; PWR7-NEXT: vspltisb 0, 15
9031 ; PWR7-NEXT: vspltisb 1, 1
9032 ; PWR7-NEXT: vspltisw 6, -16
9033 ; PWR7-NEXT: vspltisw 7, 12
9034 ; PWR7-NEXT: vspltisw 8, 10
9035 ; PWR7-NEXT: xxland 35, 35, 0
9036 ; PWR7-NEXT: lxvw4x 0, 0, 3
9037 ; PWR7-NEXT: vsubuwm 2, 2, 3
9038 ; PWR7-NEXT: vsrw 3, 2, 4
9039 ; PWR7-NEXT: xxland 34, 34, 0
9040 ; PWR7-NEXT: xxlxor 36, 36, 36
9041 ; PWR7-NEXT: xxland 35, 35, 0
9042 ; PWR7-NEXT: vadduwm 2, 2, 3
9043 ; PWR7-NEXT: vsrw 3, 2, 5
9044 ; PWR7-NEXT: vadduwm 2, 2, 3
9045 ; PWR7-NEXT: vrlw 3, 1, 6
9046 ; PWR7-NEXT: xxland 34, 34, 32
9047 ; PWR7-NEXT: vmsumuhm 3, 2, 3, 4
9048 ; PWR7-NEXT: vmulouh 2, 2, 1
9049 ; PWR7-NEXT: vslw 3, 3, 6
9050 ; PWR7-NEXT: vadduwm 2, 2, 3
9051 ; PWR7-NEXT: vadduwm 3, 7, 7
9052 ; PWR7-NEXT: vsrw 2, 2, 3
9053 ; PWR7-NEXT: vadduwm 3, 8, 8
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, 4
9164 ; PWR7-NEXT: addi 3, 3, .LCPI79_1@toc@l
9165 ; PWR7-NEXT: vsrw 3, 2, 3
9166 ; PWR7-NEXT: vspltisb 0, 15
9167 ; PWR7-NEXT: vspltisb 1, 1
9168 ; PWR7-NEXT: vspltisw 6, -16
9169 ; PWR7-NEXT: vspltisw 7, 12
9170 ; PWR7-NEXT: vspltisw 8, 5
9171 ; PWR7-NEXT: xxland 35, 35, 0
9172 ; PWR7-NEXT: lxvw4x 0, 0, 3
9173 ; PWR7-NEXT: vsubuwm 2, 2, 3
9174 ; PWR7-NEXT: vsrw 3, 2, 4
9175 ; PWR7-NEXT: xxland 34, 34, 0
9176 ; PWR7-NEXT: xxlxor 36, 36, 36
9177 ; PWR7-NEXT: xxland 35, 35, 0
9178 ; PWR7-NEXT: vadduwm 2, 2, 3
9179 ; PWR7-NEXT: vsrw 3, 2, 5
9180 ; PWR7-NEXT: vadduwm 2, 2, 3
9181 ; PWR7-NEXT: vrlw 3, 1, 6
9182 ; PWR7-NEXT: xxland 34, 34, 32
9183 ; PWR7-NEXT: vmsumuhm 3, 2, 3, 4
9184 ; PWR7-NEXT: vmulouh 2, 2, 1
9185 ; PWR7-NEXT: vslw 3, 3, 6
9186 ; PWR7-NEXT: vadduwm 2, 2, 3
9187 ; PWR7-NEXT: vadduwm 3, 7, 7
9188 ; PWR7-NEXT: vsrw 2, 2, 3
9189 ; PWR7-NEXT: vsubuwm 3, 8, 6
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, 4
9302 ; PWR7-NEXT: addi 3, 3, .LCPI80_1@toc@l
9303 ; PWR7-NEXT: vsrw 3, 2, 3
9304 ; PWR7-NEXT: vspltisb 0, 15
9305 ; PWR7-NEXT: vspltisb 1, 1
9306 ; PWR7-NEXT: vspltisw 6, -16
9307 ; PWR7-NEXT: vspltisw 7, 12
9308 ; PWR7-NEXT: vspltisw 8, 5
9309 ; PWR7-NEXT: xxland 35, 35, 0
9310 ; PWR7-NEXT: lxvw4x 0, 0, 3
9311 ; PWR7-NEXT: vsubuwm 2, 2, 3
9312 ; PWR7-NEXT: vsrw 3, 2, 4
9313 ; PWR7-NEXT: xxland 34, 34, 0
9314 ; PWR7-NEXT: xxlxor 36, 36, 36
9315 ; PWR7-NEXT: xxland 35, 35, 0
9316 ; PWR7-NEXT: vadduwm 2, 2, 3
9317 ; PWR7-NEXT: vsrw 3, 2, 5
9318 ; PWR7-NEXT: vadduwm 2, 2, 3
9319 ; PWR7-NEXT: vrlw 3, 1, 6
9320 ; PWR7-NEXT: xxland 34, 34, 32
9321 ; PWR7-NEXT: vmsumuhm 3, 2, 3, 4
9322 ; PWR7-NEXT: vmulouh 2, 2, 1
9323 ; PWR7-NEXT: vslw 3, 3, 6
9324 ; PWR7-NEXT: vadduwm 2, 2, 3
9325 ; PWR7-NEXT: vadduwm 3, 7, 7
9326 ; PWR7-NEXT: vsrw 2, 2, 3
9327 ; PWR7-NEXT: vsubuwm 3, 8, 6
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, 4
9440 ; PWR7-NEXT: addi 3, 3, .LCPI81_1@toc@l
9441 ; PWR7-NEXT: vsrw 3, 2, 3
9442 ; PWR7-NEXT: vspltisb 0, 15
9443 ; PWR7-NEXT: vspltisb 1, 1
9444 ; PWR7-NEXT: vspltisw 6, -16
9445 ; PWR7-NEXT: vspltisw 7, 12
9446 ; PWR7-NEXT: vspltisw 8, 11
9447 ; PWR7-NEXT: xxland 35, 35, 0
9448 ; PWR7-NEXT: lxvw4x 0, 0, 3
9449 ; PWR7-NEXT: vsubuwm 2, 2, 3
9450 ; PWR7-NEXT: vsrw 3, 2, 4
9451 ; PWR7-NEXT: xxland 34, 34, 0
9452 ; PWR7-NEXT: xxlxor 36, 36, 36
9453 ; PWR7-NEXT: xxland 35, 35, 0
9454 ; PWR7-NEXT: vadduwm 2, 2, 3
9455 ; PWR7-NEXT: vsrw 3, 2, 5
9456 ; PWR7-NEXT: vadduwm 2, 2, 3
9457 ; PWR7-NEXT: vrlw 3, 1, 6
9458 ; PWR7-NEXT: xxland 34, 34, 32
9459 ; PWR7-NEXT: vmsumuhm 3, 2, 3, 4
9460 ; PWR7-NEXT: vmulouh 2, 2, 1
9461 ; PWR7-NEXT: vslw 3, 3, 6
9462 ; PWR7-NEXT: vadduwm 2, 2, 3
9463 ; PWR7-NEXT: vadduwm 3, 7, 7
9464 ; PWR7-NEXT: vsrw 2, 2, 3
9465 ; PWR7-NEXT: vadduwm 3, 8, 8
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, 4
9576 ; PWR7-NEXT: addi 3, 3, .LCPI82_1@toc@l
9577 ; PWR7-NEXT: vsrw 3, 2, 3
9578 ; PWR7-NEXT: vspltisb 0, 15
9579 ; PWR7-NEXT: vspltisb 1, 1
9580 ; PWR7-NEXT: vspltisw 6, -16
9581 ; PWR7-NEXT: vspltisw 7, 12
9582 ; PWR7-NEXT: vspltisw 8, 11
9583 ; PWR7-NEXT: xxland 35, 35, 0
9584 ; PWR7-NEXT: lxvw4x 0, 0, 3
9585 ; PWR7-NEXT: vsubuwm 2, 2, 3
9586 ; PWR7-NEXT: vsrw 3, 2, 4
9587 ; PWR7-NEXT: xxland 34, 34, 0
9588 ; PWR7-NEXT: xxlxor 36, 36, 36
9589 ; PWR7-NEXT: xxland 35, 35, 0
9590 ; PWR7-NEXT: vadduwm 2, 2, 3
9591 ; PWR7-NEXT: vsrw 3, 2, 5
9592 ; PWR7-NEXT: vadduwm 2, 2, 3
9593 ; PWR7-NEXT: vrlw 3, 1, 6
9594 ; PWR7-NEXT: xxland 34, 34, 32
9595 ; PWR7-NEXT: vmsumuhm 3, 2, 3, 4
9596 ; PWR7-NEXT: vmulouh 2, 2, 1
9597 ; PWR7-NEXT: vslw 3, 3, 6
9598 ; PWR7-NEXT: vadduwm 2, 2, 3
9599 ; PWR7-NEXT: vadduwm 3, 7, 7
9600 ; PWR7-NEXT: vsrw 2, 2, 3
9601 ; PWR7-NEXT: vadduwm 3, 8, 8
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, 4
9712 ; PWR7-NEXT: addi 3, 3, .LCPI83_1@toc@l
9713 ; PWR7-NEXT: vsrw 3, 2, 3
9714 ; PWR7-NEXT: vspltisb 0, 15
9715 ; PWR7-NEXT: vspltisb 1, 1
9716 ; PWR7-NEXT: vspltisw 6, -16
9717 ; PWR7-NEXT: vspltisw 7, 12
9718 ; PWR7-NEXT: vspltisw 8, 7
9719 ; PWR7-NEXT: xxland 35, 35, 0
9720 ; PWR7-NEXT: lxvw4x 0, 0, 3
9721 ; PWR7-NEXT: vsubuwm 2, 2, 3
9722 ; PWR7-NEXT: vsrw 3, 2, 4
9723 ; PWR7-NEXT: xxland 34, 34, 0
9724 ; PWR7-NEXT: xxlxor 36, 36, 36
9725 ; PWR7-NEXT: xxland 35, 35, 0
9726 ; PWR7-NEXT: vadduwm 2, 2, 3
9727 ; PWR7-NEXT: vsrw 3, 2, 5
9728 ; PWR7-NEXT: vadduwm 2, 2, 3
9729 ; PWR7-NEXT: vrlw 3, 1, 6
9730 ; PWR7-NEXT: xxland 34, 34, 32
9731 ; PWR7-NEXT: vmsumuhm 3, 2, 3, 4
9732 ; PWR7-NEXT: vmulouh 2, 2, 1
9733 ; PWR7-NEXT: vslw 3, 3, 6
9734 ; PWR7-NEXT: vadduwm 2, 2, 3
9735 ; PWR7-NEXT: vadduwm 3, 7, 7
9736 ; PWR7-NEXT: vsrw 2, 2, 3
9737 ; PWR7-NEXT: vsubuwm 3, 8, 6
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, 4
9850 ; PWR7-NEXT: addi 3, 3, .LCPI84_1@toc@l
9851 ; PWR7-NEXT: vsrw 3, 2, 3
9852 ; PWR7-NEXT: vspltisb 0, 15
9853 ; PWR7-NEXT: vspltisb 1, 1
9854 ; PWR7-NEXT: vspltisw 6, -16
9855 ; PWR7-NEXT: vspltisw 7, 12
9856 ; PWR7-NEXT: vspltisw 8, 7
9857 ; PWR7-NEXT: xxland 35, 35, 0
9858 ; PWR7-NEXT: lxvw4x 0, 0, 3
9859 ; PWR7-NEXT: vsubuwm 2, 2, 3
9860 ; PWR7-NEXT: vsrw 3, 2, 4
9861 ; PWR7-NEXT: xxland 34, 34, 0
9862 ; PWR7-NEXT: xxlxor 36, 36, 36
9863 ; PWR7-NEXT: xxland 35, 35, 0
9864 ; PWR7-NEXT: vadduwm 2, 2, 3
9865 ; PWR7-NEXT: vsrw 3, 2, 5
9866 ; PWR7-NEXT: vadduwm 2, 2, 3
9867 ; PWR7-NEXT: vrlw 3, 1, 6
9868 ; PWR7-NEXT: xxland 34, 34, 32
9869 ; PWR7-NEXT: vmsumuhm 3, 2, 3, 4
9870 ; PWR7-NEXT: vmulouh 2, 2, 1
9871 ; PWR7-NEXT: vslw 3, 3, 6
9872 ; PWR7-NEXT: vadduwm 2, 2, 3
9873 ; PWR7-NEXT: vadduwm 3, 7, 7
9874 ; PWR7-NEXT: vsrw 2, 2, 3
9875 ; PWR7-NEXT: vsubuwm 3, 8, 6
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, 4
9984 ; PWR7-NEXT: addi 3, 3, .LCPI85_1@toc@l
9985 ; PWR7-NEXT: vsrw 3, 2, 3
9986 ; PWR7-NEXT: vspltisb 0, 15
9987 ; PWR7-NEXT: vspltisb 1, 1
9988 ; PWR7-NEXT: vspltisw 6, -16
9989 ; PWR7-NEXT: vspltisw 7, 12
9990 ; PWR7-NEXT: xxland 35, 35, 0
9991 ; PWR7-NEXT: lxvw4x 0, 0, 3
9992 ; PWR7-NEXT: vsubuwm 2, 2, 3
9993 ; PWR7-NEXT: vsrw 3, 2, 4
9994 ; PWR7-NEXT: xxland 34, 34, 0
9995 ; PWR7-NEXT: xxlxor 36, 36, 36
9996 ; PWR7-NEXT: xxland 35, 35, 0
9997 ; PWR7-NEXT: vadduwm 2, 2, 3
9998 ; PWR7-NEXT: vsrw 3, 2, 5
9999 ; PWR7-NEXT: vadduwm 2, 2, 3
10000 ; PWR7-NEXT: vrlw 3, 1, 6
10001 ; PWR7-NEXT: xxland 34, 34, 32
10002 ; PWR7-NEXT: vmsumuhm 3, 2, 3, 4
10003 ; PWR7-NEXT: vmulouh 2, 2, 1
10004 ; PWR7-NEXT: vslw 3, 3, 6
10005 ; PWR7-NEXT: vadduwm 2, 2, 3
10006 ; PWR7-NEXT: vadduwm 3, 7, 7
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, 4
10114 ; PWR7-NEXT: addi 3, 3, .LCPI86_1@toc@l
10115 ; PWR7-NEXT: vsrw 3, 2, 3
10116 ; PWR7-NEXT: vspltisb 0, 15
10117 ; PWR7-NEXT: vspltisb 1, 1
10118 ; PWR7-NEXT: vspltisw 6, -16
10119 ; PWR7-NEXT: vspltisw 7, 12
10120 ; PWR7-NEXT: xxland 35, 35, 0
10121 ; PWR7-NEXT: lxvw4x 0, 0, 3
10122 ; PWR7-NEXT: vsubuwm 2, 2, 3
10123 ; PWR7-NEXT: vsrw 3, 2, 4
10124 ; PWR7-NEXT: xxland 34, 34, 0
10125 ; PWR7-NEXT: xxlxor 36, 36, 36
10126 ; PWR7-NEXT: xxland 35, 35, 0
10127 ; PWR7-NEXT: vadduwm 2, 2, 3
10128 ; PWR7-NEXT: vsrw 3, 2, 5
10129 ; PWR7-NEXT: vadduwm 2, 2, 3
10130 ; PWR7-NEXT: vrlw 3, 1, 6
10131 ; PWR7-NEXT: xxland 34, 34, 32
10132 ; PWR7-NEXT: vmsumuhm 3, 2, 3, 4
10133 ; PWR7-NEXT: vmulouh 2, 2, 1
10134 ; PWR7-NEXT: vslw 3, 3, 6
10135 ; PWR7-NEXT: vadduwm 2, 2, 3
10136 ; PWR7-NEXT: vadduwm 3, 7, 7
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, 4
10248 ; PWR7-NEXT: addi 3, 3, .LCPI87_1@toc@l
10249 ; PWR7-NEXT: vsrw 3, 2, 3
10250 ; PWR7-NEXT: vspltisb 0, 15
10251 ; PWR7-NEXT: vspltisb 1, 1
10252 ; PWR7-NEXT: vspltisw 6, -16
10253 ; PWR7-NEXT: vspltisw 7, 12
10254 ; PWR7-NEXT: vspltisw 8, 9
10255 ; PWR7-NEXT: xxland 35, 35, 0
10256 ; PWR7-NEXT: lxvw4x 0, 0, 3
10257 ; PWR7-NEXT: vsubuwm 2, 2, 3
10258 ; PWR7-NEXT: vsrw 3, 2, 4
10259 ; PWR7-NEXT: xxland 34, 34, 0
10260 ; PWR7-NEXT: xxlxor 36, 36, 36
10261 ; PWR7-NEXT: xxland 35, 35, 0
10262 ; PWR7-NEXT: vadduwm 2, 2, 3
10263 ; PWR7-NEXT: vsrw 3, 2, 5
10264 ; PWR7-NEXT: vadduwm 2, 2, 3
10265 ; PWR7-NEXT: vrlw 3, 1, 6
10266 ; PWR7-NEXT: xxland 34, 34, 32
10267 ; PWR7-NEXT: vmsumuhm 3, 2, 3, 4
10268 ; PWR7-NEXT: vmulouh 2, 2, 1
10269 ; PWR7-NEXT: vslw 3, 3, 6
10270 ; PWR7-NEXT: vadduwm 2, 2, 3
10271 ; PWR7-NEXT: vadduwm 3, 7, 7
10272 ; PWR7-NEXT: vsrw 2, 2, 3
10273 ; PWR7-NEXT: vsubuwm 3, 8, 6
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, 4
10386 ; PWR7-NEXT: addi 3, 3, .LCPI88_1@toc@l
10387 ; PWR7-NEXT: vsrw 3, 2, 3
10388 ; PWR7-NEXT: vspltisb 0, 15
10389 ; PWR7-NEXT: vspltisb 1, 1
10390 ; PWR7-NEXT: vspltisw 6, -16
10391 ; PWR7-NEXT: vspltisw 7, 12
10392 ; PWR7-NEXT: vspltisw 8, 9
10393 ; PWR7-NEXT: xxland 35, 35, 0
10394 ; PWR7-NEXT: lxvw4x 0, 0, 3
10395 ; PWR7-NEXT: vsubuwm 2, 2, 3
10396 ; PWR7-NEXT: vsrw 3, 2, 4
10397 ; PWR7-NEXT: xxland 34, 34, 0
10398 ; PWR7-NEXT: xxlxor 36, 36, 36
10399 ; PWR7-NEXT: xxland 35, 35, 0
10400 ; PWR7-NEXT: vadduwm 2, 2, 3
10401 ; PWR7-NEXT: vsrw 3, 2, 5
10402 ; PWR7-NEXT: vadduwm 2, 2, 3
10403 ; PWR7-NEXT: vrlw 3, 1, 6
10404 ; PWR7-NEXT: xxland 34, 34, 32
10405 ; PWR7-NEXT: vmsumuhm 3, 2, 3, 4
10406 ; PWR7-NEXT: vmulouh 2, 2, 1
10407 ; PWR7-NEXT: vslw 3, 3, 6
10408 ; PWR7-NEXT: vadduwm 2, 2, 3
10409 ; PWR7-NEXT: vadduwm 3, 7, 7
10410 ; PWR7-NEXT: vsrw 2, 2, 3
10411 ; PWR7-NEXT: vsubuwm 3, 8, 6
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, 4
10524 ; PWR7-NEXT: addi 3, 3, .LCPI89_1@toc@l
10525 ; PWR7-NEXT: vsrw 3, 2, 3
10526 ; PWR7-NEXT: vspltisb 0, 15
10527 ; PWR7-NEXT: vspltisb 1, 1
10528 ; PWR7-NEXT: vspltisw 6, -16
10529 ; PWR7-NEXT: vspltisw 7, 12
10530 ; PWR7-NEXT: vspltisw 8, 13
10531 ; PWR7-NEXT: xxland 35, 35, 0
10532 ; PWR7-NEXT: lxvw4x 0, 0, 3
10533 ; PWR7-NEXT: vsubuwm 2, 2, 3
10534 ; PWR7-NEXT: vsrw 3, 2, 4
10535 ; PWR7-NEXT: xxland 34, 34, 0
10536 ; PWR7-NEXT: xxlxor 36, 36, 36
10537 ; PWR7-NEXT: xxland 35, 35, 0
10538 ; PWR7-NEXT: vadduwm 2, 2, 3
10539 ; PWR7-NEXT: vsrw 3, 2, 5
10540 ; PWR7-NEXT: vadduwm 2, 2, 3
10541 ; PWR7-NEXT: vrlw 3, 1, 6
10542 ; PWR7-NEXT: xxland 34, 34, 32
10543 ; PWR7-NEXT: vmsumuhm 3, 2, 3, 4
10544 ; PWR7-NEXT: vmulouh 2, 2, 1
10545 ; PWR7-NEXT: vslw 3, 3, 6
10546 ; PWR7-NEXT: vadduwm 2, 2, 3
10547 ; PWR7-NEXT: vadduwm 3, 7, 7
10548 ; PWR7-NEXT: vsrw 2, 2, 3
10549 ; PWR7-NEXT: vadduwm 3, 8, 8
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, 4
10660 ; PWR7-NEXT: addi 3, 3, .LCPI90_1@toc@l
10661 ; PWR7-NEXT: vsrw 3, 2, 3
10662 ; PWR7-NEXT: vspltisb 0, 15
10663 ; PWR7-NEXT: vspltisb 1, 1
10664 ; PWR7-NEXT: vspltisw 6, -16
10665 ; PWR7-NEXT: vspltisw 7, 12
10666 ; PWR7-NEXT: vspltisw 8, 13
10667 ; PWR7-NEXT: xxland 35, 35, 0
10668 ; PWR7-NEXT: lxvw4x 0, 0, 3
10669 ; PWR7-NEXT: vsubuwm 2, 2, 3
10670 ; PWR7-NEXT: vsrw 3, 2, 4
10671 ; PWR7-NEXT: xxland 34, 34, 0
10672 ; PWR7-NEXT: xxlxor 36, 36, 36
10673 ; PWR7-NEXT: xxland 35, 35, 0
10674 ; PWR7-NEXT: vadduwm 2, 2, 3
10675 ; PWR7-NEXT: vsrw 3, 2, 5
10676 ; PWR7-NEXT: vadduwm 2, 2, 3
10677 ; PWR7-NEXT: vrlw 3, 1, 6
10678 ; PWR7-NEXT: xxland 34, 34, 32
10679 ; PWR7-NEXT: vmsumuhm 3, 2, 3, 4
10680 ; PWR7-NEXT: vmulouh 2, 2, 1
10681 ; PWR7-NEXT: vslw 3, 3, 6
10682 ; PWR7-NEXT: vadduwm 2, 2, 3
10683 ; PWR7-NEXT: vadduwm 3, 7, 7
10684 ; PWR7-NEXT: vsrw 2, 2, 3
10685 ; PWR7-NEXT: vadduwm 3, 8, 8
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, 4
10796 ; PWR7-NEXT: addi 3, 3, .LCPI91_1@toc@l
10797 ; PWR7-NEXT: vsrw 3, 2, 3
10798 ; PWR7-NEXT: vspltisb 0, 15
10799 ; PWR7-NEXT: vspltisb 1, 1
10800 ; PWR7-NEXT: vspltisw 6, -16
10801 ; PWR7-NEXT: vspltisw 7, 12
10802 ; PWR7-NEXT: vspltisw 8, 11
10803 ; PWR7-NEXT: xxland 35, 35, 0
10804 ; PWR7-NEXT: lxvw4x 0, 0, 3
10805 ; PWR7-NEXT: vsubuwm 2, 2, 3
10806 ; PWR7-NEXT: vsrw 3, 2, 4
10807 ; PWR7-NEXT: xxland 34, 34, 0
10808 ; PWR7-NEXT: xxlxor 36, 36, 36
10809 ; PWR7-NEXT: xxland 35, 35, 0
10810 ; PWR7-NEXT: vadduwm 2, 2, 3
10811 ; PWR7-NEXT: vsrw 3, 2, 5
10812 ; PWR7-NEXT: vadduwm 2, 2, 3
10813 ; PWR7-NEXT: vrlw 3, 1, 6
10814 ; PWR7-NEXT: xxland 34, 34, 32
10815 ; PWR7-NEXT: vmsumuhm 3, 2, 3, 4
10816 ; PWR7-NEXT: vmulouh 2, 2, 1
10817 ; PWR7-NEXT: vslw 3, 3, 6
10818 ; PWR7-NEXT: vadduwm 2, 2, 3
10819 ; PWR7-NEXT: vadduwm 3, 7, 7
10820 ; PWR7-NEXT: vsrw 2, 2, 3
10821 ; PWR7-NEXT: vsubuwm 3, 8, 6
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, 4
10934 ; PWR7-NEXT: addi 3, 3, .LCPI92_1@toc@l
10935 ; PWR7-NEXT: vsrw 3, 2, 3
10936 ; PWR7-NEXT: vspltisb 0, 15
10937 ; PWR7-NEXT: vspltisb 1, 1
10938 ; PWR7-NEXT: vspltisw 6, -16
10939 ; PWR7-NEXT: vspltisw 7, 12
10940 ; PWR7-NEXT: vspltisw 8, 11
10941 ; PWR7-NEXT: xxland 35, 35, 0
10942 ; PWR7-NEXT: lxvw4x 0, 0, 3
10943 ; PWR7-NEXT: vsubuwm 2, 2, 3
10944 ; PWR7-NEXT: vsrw 3, 2, 4
10945 ; PWR7-NEXT: xxland 34, 34, 0
10946 ; PWR7-NEXT: xxlxor 36, 36, 36
10947 ; PWR7-NEXT: xxland 35, 35, 0
10948 ; PWR7-NEXT: vadduwm 2, 2, 3
10949 ; PWR7-NEXT: vsrw 3, 2, 5
10950 ; PWR7-NEXT: vadduwm 2, 2, 3
10951 ; PWR7-NEXT: vrlw 3, 1, 6
10952 ; PWR7-NEXT: xxland 34, 34, 32
10953 ; PWR7-NEXT: vmsumuhm 3, 2, 3, 4
10954 ; PWR7-NEXT: vmulouh 2, 2, 1
10955 ; PWR7-NEXT: vslw 3, 3, 6
10956 ; PWR7-NEXT: vadduwm 2, 2, 3
10957 ; PWR7-NEXT: vadduwm 3, 7, 7
10958 ; PWR7-NEXT: vsrw 2, 2, 3
10959 ; PWR7-NEXT: vsubuwm 3, 8, 6
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, 4
11072 ; PWR7-NEXT: addi 3, 3, .LCPI93_1@toc@l
11073 ; PWR7-NEXT: vsrw 3, 2, 3
11074 ; PWR7-NEXT: vspltisb 0, 15
11075 ; PWR7-NEXT: vspltisb 1, 1
11076 ; PWR7-NEXT: vspltisw 6, -16
11077 ; PWR7-NEXT: vspltisw 7, 12
11078 ; PWR7-NEXT: vspltisw 8, 14
11079 ; PWR7-NEXT: xxland 35, 35, 0
11080 ; PWR7-NEXT: lxvw4x 0, 0, 3
11081 ; PWR7-NEXT: vsubuwm 2, 2, 3
11082 ; PWR7-NEXT: vsrw 3, 2, 4
11083 ; PWR7-NEXT: xxland 34, 34, 0
11084 ; PWR7-NEXT: xxlxor 36, 36, 36
11085 ; PWR7-NEXT: xxland 35, 35, 0
11086 ; PWR7-NEXT: vadduwm 2, 2, 3
11087 ; PWR7-NEXT: vsrw 3, 2, 5
11088 ; PWR7-NEXT: vadduwm 2, 2, 3
11089 ; PWR7-NEXT: vrlw 3, 1, 6
11090 ; PWR7-NEXT: xxland 34, 34, 32
11091 ; PWR7-NEXT: vmsumuhm 3, 2, 3, 4
11092 ; PWR7-NEXT: vmulouh 2, 2, 1
11093 ; PWR7-NEXT: vslw 3, 3, 6
11094 ; PWR7-NEXT: vadduwm 2, 2, 3
11095 ; PWR7-NEXT: vadduwm 3, 7, 7
11096 ; PWR7-NEXT: vsrw 2, 2, 3
11097 ; PWR7-NEXT: vadduwm 3, 8, 8
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, 4
11208 ; PWR7-NEXT: addi 3, 3, .LCPI94_1@toc@l
11209 ; PWR7-NEXT: vsrw 3, 2, 3
11210 ; PWR7-NEXT: vspltisb 0, 15
11211 ; PWR7-NEXT: vspltisb 1, 1
11212 ; PWR7-NEXT: vspltisw 6, -16
11213 ; PWR7-NEXT: vspltisw 7, 12
11214 ; PWR7-NEXT: vspltisw 8, 14
11215 ; PWR7-NEXT: xxland 35, 35, 0
11216 ; PWR7-NEXT: lxvw4x 0, 0, 3
11217 ; PWR7-NEXT: vsubuwm 2, 2, 3
11218 ; PWR7-NEXT: vsrw 3, 2, 4
11219 ; PWR7-NEXT: xxland 34, 34, 0
11220 ; PWR7-NEXT: xxlxor 36, 36, 36
11221 ; PWR7-NEXT: xxland 35, 35, 0
11222 ; PWR7-NEXT: vadduwm 2, 2, 3
11223 ; PWR7-NEXT: vsrw 3, 2, 5
11224 ; PWR7-NEXT: vadduwm 2, 2, 3
11225 ; PWR7-NEXT: vrlw 3, 1, 6
11226 ; PWR7-NEXT: xxland 34, 34, 32
11227 ; PWR7-NEXT: vmsumuhm 3, 2, 3, 4
11228 ; PWR7-NEXT: vmulouh 2, 2, 1
11229 ; PWR7-NEXT: vslw 3, 3, 6
11230 ; PWR7-NEXT: vadduwm 2, 2, 3
11231 ; PWR7-NEXT: vadduwm 3, 7, 7
11232 ; PWR7-NEXT: vsrw 2, 2, 3
11233 ; PWR7-NEXT: vadduwm 3, 8, 8
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, 4
11344 ; PWR7-NEXT: addi 3, 3, .LCPI95_1@toc@l
11345 ; PWR7-NEXT: vsrw 3, 2, 3
11346 ; PWR7-NEXT: vspltisb 0, 15
11347 ; PWR7-NEXT: vspltisb 1, 1
11348 ; PWR7-NEXT: vspltisw 6, -16
11349 ; PWR7-NEXT: vspltisw 7, 12
11350 ; PWR7-NEXT: vspltisw 8, 13
11351 ; PWR7-NEXT: xxland 35, 35, 0
11352 ; PWR7-NEXT: lxvw4x 0, 0, 3
11353 ; PWR7-NEXT: vsubuwm 2, 2, 3
11354 ; PWR7-NEXT: vsrw 3, 2, 4
11355 ; PWR7-NEXT: xxland 34, 34, 0
11356 ; PWR7-NEXT: xxlxor 36, 36, 36
11357 ; PWR7-NEXT: xxland 35, 35, 0
11358 ; PWR7-NEXT: vadduwm 2, 2, 3
11359 ; PWR7-NEXT: vsrw 3, 2, 5
11360 ; PWR7-NEXT: vadduwm 2, 2, 3
11361 ; PWR7-NEXT: vrlw 3, 1, 6
11362 ; PWR7-NEXT: xxland 34, 34, 32
11363 ; PWR7-NEXT: vmsumuhm 3, 2, 3, 4
11364 ; PWR7-NEXT: vmulouh 2, 2, 1
11365 ; PWR7-NEXT: vslw 3, 3, 6
11366 ; PWR7-NEXT: vadduwm 2, 2, 3
11367 ; PWR7-NEXT: vadduwm 3, 7, 7
11368 ; PWR7-NEXT: vsrw 2, 2, 3
11369 ; PWR7-NEXT: vsubuwm 3, 8, 6
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, 4
11482 ; PWR7-NEXT: addi 3, 3, .LCPI96_1@toc@l
11483 ; PWR7-NEXT: vsrw 3, 2, 3
11484 ; PWR7-NEXT: vspltisb 0, 15
11485 ; PWR7-NEXT: vspltisb 1, 1
11486 ; PWR7-NEXT: vspltisw 6, -16
11487 ; PWR7-NEXT: vspltisw 7, 12
11488 ; PWR7-NEXT: vspltisw 8, 13
11489 ; PWR7-NEXT: xxland 35, 35, 0
11490 ; PWR7-NEXT: lxvw4x 0, 0, 3
11491 ; PWR7-NEXT: vsubuwm 2, 2, 3
11492 ; PWR7-NEXT: vsrw 3, 2, 4
11493 ; PWR7-NEXT: xxland 34, 34, 0
11494 ; PWR7-NEXT: xxlxor 36, 36, 36
11495 ; PWR7-NEXT: xxland 35, 35, 0
11496 ; PWR7-NEXT: vadduwm 2, 2, 3
11497 ; PWR7-NEXT: vsrw 3, 2, 5
11498 ; PWR7-NEXT: vadduwm 2, 2, 3
11499 ; PWR7-NEXT: vrlw 3, 1, 6
11500 ; PWR7-NEXT: xxland 34, 34, 32
11501 ; PWR7-NEXT: vmsumuhm 3, 2, 3, 4
11502 ; PWR7-NEXT: vmulouh 2, 2, 1
11503 ; PWR7-NEXT: vslw 3, 3, 6
11504 ; PWR7-NEXT: vadduwm 2, 2, 3
11505 ; PWR7-NEXT: vadduwm 3, 7, 7
11506 ; PWR7-NEXT: vsrw 2, 2, 3
11507 ; PWR7-NEXT: vsubuwm 3, 8, 6
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, 4
11620 ; PWR7-NEXT: addi 3, 3, .LCPI97_1@toc@l
11621 ; PWR7-NEXT: vsrw 3, 2, 3
11622 ; PWR7-NEXT: vspltisb 0, 15
11623 ; PWR7-NEXT: vspltisb 1, 1
11624 ; PWR7-NEXT: vspltisw 6, -16
11625 ; PWR7-NEXT: vspltisw 7, 12
11626 ; PWR7-NEXT: vspltisw 8, 15
11627 ; PWR7-NEXT: xxland 35, 35, 0
11628 ; PWR7-NEXT: lxvw4x 0, 0, 3
11629 ; PWR7-NEXT: vsubuwm 2, 2, 3
11630 ; PWR7-NEXT: vsrw 3, 2, 4
11631 ; PWR7-NEXT: xxland 34, 34, 0
11632 ; PWR7-NEXT: xxlxor 36, 36, 36
11633 ; PWR7-NEXT: xxland 35, 35, 0
11634 ; PWR7-NEXT: vadduwm 2, 2, 3
11635 ; PWR7-NEXT: vsrw 3, 2, 5
11636 ; PWR7-NEXT: vadduwm 2, 2, 3
11637 ; PWR7-NEXT: vrlw 3, 1, 6
11638 ; PWR7-NEXT: xxland 34, 34, 32
11639 ; PWR7-NEXT: vmsumuhm 3, 2, 3, 4
11640 ; PWR7-NEXT: vmulouh 2, 2, 1
11641 ; PWR7-NEXT: vslw 3, 3, 6
11642 ; PWR7-NEXT: vadduwm 2, 2, 3
11643 ; PWR7-NEXT: vadduwm 3, 7, 7
11644 ; PWR7-NEXT: vsrw 2, 2, 3
11645 ; PWR7-NEXT: vadduwm 3, 8, 8
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, 4
11756 ; PWR7-NEXT: addi 3, 3, .LCPI98_1@toc@l
11757 ; PWR7-NEXT: vsrw 3, 2, 3
11758 ; PWR7-NEXT: vspltisb 0, 15
11759 ; PWR7-NEXT: vspltisb 1, 1
11760 ; PWR7-NEXT: vspltisw 6, -16
11761 ; PWR7-NEXT: vspltisw 7, 12
11762 ; PWR7-NEXT: vspltisw 8, 15
11763 ; PWR7-NEXT: xxland 35, 35, 0
11764 ; PWR7-NEXT: lxvw4x 0, 0, 3
11765 ; PWR7-NEXT: vsubuwm 2, 2, 3
11766 ; PWR7-NEXT: vsrw 3, 2, 4
11767 ; PWR7-NEXT: xxland 34, 34, 0
11768 ; PWR7-NEXT: xxlxor 36, 36, 36
11769 ; PWR7-NEXT: xxland 35, 35, 0
11770 ; PWR7-NEXT: vadduwm 2, 2, 3
11771 ; PWR7-NEXT: vsrw 3, 2, 5
11772 ; PWR7-NEXT: vadduwm 2, 2, 3
11773 ; PWR7-NEXT: vrlw 3, 1, 6
11774 ; PWR7-NEXT: xxland 34, 34, 32
11775 ; PWR7-NEXT: vmsumuhm 3, 2, 3, 4
11776 ; PWR7-NEXT: vmulouh 2, 2, 1
11777 ; PWR7-NEXT: vslw 3, 3, 6
11778 ; PWR7-NEXT: vadduwm 2, 2, 3
11779 ; PWR7-NEXT: vadduwm 3, 7, 7
11780 ; PWR7-NEXT: vsrw 2, 2, 3
11781 ; PWR7-NEXT: vadduwm 3, 8, 8
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, 4
11892 ; PWR7-NEXT: addi 3, 3, .LCPI99_1@toc@l
11893 ; PWR7-NEXT: vsrw 3, 2, 3
11894 ; PWR7-NEXT: vspltisb 0, 15
11895 ; PWR7-NEXT: vspltisb 1, 1
11896 ; PWR7-NEXT: vspltisw 6, -16
11897 ; PWR7-NEXT: vspltisw 7, 12
11898 ; PWR7-NEXT: vspltisw 8, 15
11899 ; PWR7-NEXT: xxland 35, 35, 0
11900 ; PWR7-NEXT: lxvw4x 0, 0, 3
11901 ; PWR7-NEXT: vsubuwm 2, 2, 3
11902 ; PWR7-NEXT: vsrw 3, 2, 4
11903 ; PWR7-NEXT: xxland 34, 34, 0
11904 ; PWR7-NEXT: xxlxor 36, 36, 36
11905 ; PWR7-NEXT: xxland 35, 35, 0
11906 ; PWR7-NEXT: vadduwm 2, 2, 3
11907 ; PWR7-NEXT: vsrw 3, 2, 5
11908 ; PWR7-NEXT: vadduwm 2, 2, 3
11909 ; PWR7-NEXT: vrlw 3, 1, 6
11910 ; PWR7-NEXT: xxland 34, 34, 32
11911 ; PWR7-NEXT: vmsumuhm 3, 2, 3, 4
11912 ; PWR7-NEXT: vmulouh 2, 2, 1
11913 ; PWR7-NEXT: vslw 3, 3, 6
11914 ; PWR7-NEXT: vadduwm 2, 2, 3
11915 ; PWR7-NEXT: vadduwm 3, 7, 7
11916 ; PWR7-NEXT: vsrw 2, 2, 3
11917 ; PWR7-NEXT: vsubuwm 3, 8, 6
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: addis 3, 2, .LCPI100_0@toc@ha
11983 ; PWR7-NEXT: addi 3, 3, .LCPI100_0@toc@l
11984 ; PWR7-NEXT: xxland 34, 34, 0
11985 ; PWR7-NEXT: vcmpequw 2, 2, 3
11986 ; PWR7-NEXT: lxvw4x 35, 0, 3
11987 ; PWR7-NEXT: xxlnor 34, 34, 34
11988 ; PWR7-NEXT: vperm 3, 2, 2, 3
11989 ; PWR7-NEXT: xxlor 34, 35, 34
11992 ; PWR8-LABEL: ugt_1_v2i64:
11994 ; PWR8-NEXT: addis 3, 2, .LCPI100_0@toc@ha
11995 ; PWR8-NEXT: vpopcntd 2, 2
11996 ; PWR8-NEXT: addi 3, 3, .LCPI100_0@toc@l
11997 ; PWR8-NEXT: lxvd2x 35, 0, 3
11998 ; PWR8-NEXT: vcmpgtud 2, 2, 3
12001 ; PWR9-LABEL: ugt_1_v2i64:
12003 ; PWR9-NEXT: addis 3, 2, .LCPI100_0@toc@ha
12004 ; PWR9-NEXT: vpopcntd 2, 2
12005 ; PWR9-NEXT: addi 3, 3, .LCPI100_0@toc@l
12006 ; PWR9-NEXT: lxv 35, 0(3)
12007 ; PWR9-NEXT: vcmpgtud 2, 2, 3
12009 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
12010 %3 = icmp ugt <2 x i64> %2, <i64 1, i64 1>
12011 %4 = sext <2 x i1> %3 to <2 x i64>
12015 define <2 x i64> @ult_2_v2i64(<2 x i64> %0) {
12016 ; PWR5-LABEL: ult_2_v2i64:
12018 ; PWR5-NEXT: addi 5, 3, -1
12019 ; PWR5-NEXT: and 3, 3, 5
12020 ; PWR5-NEXT: addi 5, 4, -1
12021 ; PWR5-NEXT: addic 3, 3, -1
12022 ; PWR5-NEXT: subfe 3, 3, 3
12023 ; PWR5-NEXT: and 4, 4, 5
12024 ; PWR5-NEXT: addic 4, 4, -1
12025 ; PWR5-NEXT: subfe 4, 4, 4
12028 ; PWR6-LABEL: ult_2_v2i64:
12030 ; PWR6-NEXT: addi 5, 3, -1
12031 ; PWR6-NEXT: and 3, 3, 5
12032 ; PWR6-NEXT: addi 5, 4, -1
12033 ; PWR6-NEXT: addic 3, 3, -1
12034 ; PWR6-NEXT: subfe 3, 3, 3
12035 ; PWR6-NEXT: and 4, 4, 5
12036 ; PWR6-NEXT: addic 4, 4, -1
12037 ; PWR6-NEXT: subfe 4, 4, 4
12040 ; PWR7-LABEL: ult_2_v2i64:
12042 ; PWR7-NEXT: addi 3, 1, -32
12043 ; PWR7-NEXT: xxlxor 35, 35, 35
12044 ; PWR7-NEXT: stxvd2x 34, 0, 3
12045 ; PWR7-NEXT: ld 3, -24(1)
12046 ; PWR7-NEXT: addi 3, 3, -1
12047 ; PWR7-NEXT: std 3, -8(1)
12048 ; PWR7-NEXT: ld 3, -32(1)
12049 ; PWR7-NEXT: addi 3, 3, -1
12050 ; PWR7-NEXT: std 3, -16(1)
12051 ; PWR7-NEXT: addi 3, 1, -16
12052 ; PWR7-NEXT: lxvw4x 0, 0, 3
12053 ; PWR7-NEXT: addis 3, 2, .LCPI101_0@toc@ha
12054 ; PWR7-NEXT: addi 3, 3, .LCPI101_0@toc@l
12055 ; PWR7-NEXT: xxland 34, 34, 0
12056 ; PWR7-NEXT: vcmpequw 2, 2, 3
12057 ; PWR7-NEXT: lxvw4x 35, 0, 3
12058 ; PWR7-NEXT: vperm 3, 2, 2, 3
12059 ; PWR7-NEXT: xxland 34, 35, 34
12062 ; PWR8-LABEL: ult_2_v2i64:
12064 ; PWR8-NEXT: addis 3, 2, .LCPI101_0@toc@ha
12065 ; PWR8-NEXT: vpopcntd 2, 2
12066 ; PWR8-NEXT: addi 3, 3, .LCPI101_0@toc@l
12067 ; PWR8-NEXT: lxvd2x 35, 0, 3
12068 ; PWR8-NEXT: vcmpgtud 2, 3, 2
12071 ; PWR9-LABEL: ult_2_v2i64:
12073 ; PWR9-NEXT: addis 3, 2, .LCPI101_0@toc@ha
12074 ; PWR9-NEXT: vpopcntd 2, 2
12075 ; PWR9-NEXT: addi 3, 3, .LCPI101_0@toc@l
12076 ; PWR9-NEXT: lxv 35, 0(3)
12077 ; PWR9-NEXT: vcmpgtud 2, 3, 2
12079 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
12080 %3 = icmp ult <2 x i64> %2, <i64 2, i64 2>
12081 %4 = sext <2 x i1> %3 to <2 x i64>
12085 define <2 x i64> @ugt_2_v2i64(<2 x i64> %0) {
12086 ; PWR5-LABEL: ugt_2_v2i64:
12088 ; PWR5-NEXT: lis 5, 21845
12089 ; PWR5-NEXT: lis 6, 13107
12090 ; PWR5-NEXT: ori 5, 5, 21845
12091 ; PWR5-NEXT: rotldi 8, 4, 63
12092 ; PWR5-NEXT: rotldi 9, 3, 63
12093 ; PWR5-NEXT: rldimi 5, 5, 32, 0
12094 ; PWR5-NEXT: and 8, 8, 5
12095 ; PWR5-NEXT: and 5, 9, 5
12096 ; PWR5-NEXT: ori 6, 6, 13107
12097 ; PWR5-NEXT: sub 3, 3, 5
12098 ; PWR5-NEXT: rldimi 6, 6, 32, 0
12099 ; PWR5-NEXT: sub 4, 4, 8
12100 ; PWR5-NEXT: and 8, 3, 6
12101 ; PWR5-NEXT: rotldi 3, 3, 62
12102 ; PWR5-NEXT: and 3, 3, 6
12103 ; PWR5-NEXT: lis 7, 3855
12104 ; PWR5-NEXT: and 5, 4, 6
12105 ; PWR5-NEXT: rotldi 4, 4, 62
12106 ; PWR5-NEXT: add 3, 8, 3
12107 ; PWR5-NEXT: lis 9, 257
12108 ; PWR5-NEXT: ori 7, 7, 3855
12109 ; PWR5-NEXT: and 4, 4, 6
12110 ; PWR5-NEXT: rldicl 6, 3, 60, 4
12111 ; PWR5-NEXT: ori 9, 9, 257
12112 ; PWR5-NEXT: rldimi 7, 7, 32, 0
12113 ; PWR5-NEXT: add 4, 5, 4
12114 ; PWR5-NEXT: add 3, 3, 6
12115 ; PWR5-NEXT: rldimi 9, 9, 32, 0
12116 ; PWR5-NEXT: rldicl 5, 4, 60, 4
12117 ; PWR5-NEXT: and 3, 3, 7
12118 ; PWR5-NEXT: add 4, 4, 5
12119 ; PWR5-NEXT: mulld 3, 3, 9
12120 ; PWR5-NEXT: and 4, 4, 7
12121 ; PWR5-NEXT: rldicl 3, 3, 8, 56
12122 ; PWR5-NEXT: mulld 4, 4, 9
12123 ; PWR5-NEXT: li 5, 2
12124 ; PWR5-NEXT: subfic 3, 3, 2
12125 ; PWR5-NEXT: rldicl 4, 4, 8, 56
12126 ; PWR5-NEXT: subfe 3, 5, 5
12127 ; PWR5-NEXT: subfic 4, 4, 2
12128 ; PWR5-NEXT: subfe 4, 5, 5
12131 ; PWR6-LABEL: ugt_2_v2i64:
12133 ; PWR6-NEXT: lis 5, 21845
12134 ; PWR6-NEXT: lis 6, 13107
12135 ; PWR6-NEXT: ori 5, 5, 21845
12136 ; PWR6-NEXT: rotldi 8, 4, 63
12137 ; PWR6-NEXT: rotldi 9, 3, 63
12138 ; PWR6-NEXT: rldimi 5, 5, 32, 0
12139 ; PWR6-NEXT: and 8, 8, 5
12140 ; PWR6-NEXT: and 5, 9, 5
12141 ; PWR6-NEXT: ori 6, 6, 13107
12142 ; PWR6-NEXT: sub 3, 3, 5
12143 ; PWR6-NEXT: rldimi 6, 6, 32, 0
12144 ; PWR6-NEXT: sub 4, 4, 8
12145 ; PWR6-NEXT: and 8, 3, 6
12146 ; PWR6-NEXT: rotldi 3, 3, 62
12147 ; PWR6-NEXT: and 3, 3, 6
12148 ; PWR6-NEXT: lis 7, 3855
12149 ; PWR6-NEXT: and 5, 4, 6
12150 ; PWR6-NEXT: rotldi 4, 4, 62
12151 ; PWR6-NEXT: add 3, 8, 3
12152 ; PWR6-NEXT: lis 9, 257
12153 ; PWR6-NEXT: ori 7, 7, 3855
12154 ; PWR6-NEXT: and 4, 4, 6
12155 ; PWR6-NEXT: rldicl 6, 3, 60, 4
12156 ; PWR6-NEXT: ori 9, 9, 257
12157 ; PWR6-NEXT: rldimi 7, 7, 32, 0
12158 ; PWR6-NEXT: add 4, 5, 4
12159 ; PWR6-NEXT: add 3, 3, 6
12160 ; PWR6-NEXT: rldimi 9, 9, 32, 0
12161 ; PWR6-NEXT: rldicl 5, 4, 60, 4
12162 ; PWR6-NEXT: and 3, 3, 7
12163 ; PWR6-NEXT: add 4, 4, 5
12164 ; PWR6-NEXT: mulld 3, 3, 9
12165 ; PWR6-NEXT: and 4, 4, 7
12166 ; PWR6-NEXT: rldicl 3, 3, 8, 56
12167 ; PWR6-NEXT: mulld 4, 4, 9
12168 ; PWR6-NEXT: li 5, 2
12169 ; PWR6-NEXT: subfic 3, 3, 2
12170 ; PWR6-NEXT: rldicl 4, 4, 8, 56
12171 ; PWR6-NEXT: subfe 3, 5, 5
12172 ; PWR6-NEXT: subfic 4, 4, 2
12173 ; PWR6-NEXT: subfe 4, 5, 5
12176 ; PWR7-LABEL: ugt_2_v2i64:
12178 ; PWR7-NEXT: addi 3, 1, -32
12179 ; PWR7-NEXT: li 5, -1
12180 ; PWR7-NEXT: stxvd2x 34, 0, 3
12181 ; PWR7-NEXT: ld 4, -24(1)
12182 ; PWR7-NEXT: ld 3, -32(1)
12183 ; PWR7-NEXT: popcntd 4, 4
12184 ; PWR7-NEXT: popcntd 3, 3
12185 ; PWR7-NEXT: cmpldi 4, 2
12186 ; PWR7-NEXT: li 4, 0
12187 ; PWR7-NEXT: iselgt 6, 5, 4
12188 ; PWR7-NEXT: cmpldi 3, 2
12189 ; PWR7-NEXT: iselgt 3, 5, 4
12190 ; PWR7-NEXT: std 6, -8(1)
12191 ; PWR7-NEXT: std 3, -16(1)
12192 ; PWR7-NEXT: addi 3, 1, -16
12193 ; PWR7-NEXT: lxvd2x 34, 0, 3
12196 ; PWR8-LABEL: ugt_2_v2i64:
12198 ; PWR8-NEXT: addis 3, 2, .LCPI102_0@toc@ha
12199 ; PWR8-NEXT: vpopcntd 2, 2
12200 ; PWR8-NEXT: addi 3, 3, .LCPI102_0@toc@l
12201 ; PWR8-NEXT: lxvd2x 35, 0, 3
12202 ; PWR8-NEXT: vcmpgtud 2, 2, 3
12205 ; PWR9-LABEL: ugt_2_v2i64:
12207 ; PWR9-NEXT: addis 3, 2, .LCPI102_0@toc@ha
12208 ; PWR9-NEXT: vpopcntd 2, 2
12209 ; PWR9-NEXT: addi 3, 3, .LCPI102_0@toc@l
12210 ; PWR9-NEXT: lxv 35, 0(3)
12211 ; PWR9-NEXT: vcmpgtud 2, 2, 3
12213 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
12214 %3 = icmp ugt <2 x i64> %2, <i64 2, i64 2>
12215 %4 = sext <2 x i1> %3 to <2 x i64>
12219 define <2 x i64> @ult_3_v2i64(<2 x i64> %0) {
12220 ; PWR5-LABEL: ult_3_v2i64:
12222 ; PWR5-NEXT: lis 5, 21845
12223 ; PWR5-NEXT: lis 6, 13107
12224 ; PWR5-NEXT: ori 5, 5, 21845
12225 ; PWR5-NEXT: rotldi 8, 4, 63
12226 ; PWR5-NEXT: rotldi 9, 3, 63
12227 ; PWR5-NEXT: rldimi 5, 5, 32, 0
12228 ; PWR5-NEXT: and 8, 8, 5
12229 ; PWR5-NEXT: and 5, 9, 5
12230 ; PWR5-NEXT: ori 6, 6, 13107
12231 ; PWR5-NEXT: sub 3, 3, 5
12232 ; PWR5-NEXT: rldimi 6, 6, 32, 0
12233 ; PWR5-NEXT: sub 4, 4, 8
12234 ; PWR5-NEXT: and 8, 3, 6
12235 ; PWR5-NEXT: rotldi 3, 3, 62
12236 ; PWR5-NEXT: and 3, 3, 6
12237 ; PWR5-NEXT: lis 7, 3855
12238 ; PWR5-NEXT: and 5, 4, 6
12239 ; PWR5-NEXT: rotldi 4, 4, 62
12240 ; PWR5-NEXT: add 3, 8, 3
12241 ; PWR5-NEXT: lis 9, 257
12242 ; PWR5-NEXT: ori 7, 7, 3855
12243 ; PWR5-NEXT: and 4, 4, 6
12244 ; PWR5-NEXT: rldicl 6, 3, 60, 4
12245 ; PWR5-NEXT: ori 9, 9, 257
12246 ; PWR5-NEXT: rldimi 7, 7, 32, 0
12247 ; PWR5-NEXT: add 4, 5, 4
12248 ; PWR5-NEXT: add 3, 3, 6
12249 ; PWR5-NEXT: rldimi 9, 9, 32, 0
12250 ; PWR5-NEXT: rldicl 5, 4, 60, 4
12251 ; PWR5-NEXT: and 3, 3, 7
12252 ; PWR5-NEXT: add 4, 4, 5
12253 ; PWR5-NEXT: mulld 3, 3, 9
12254 ; PWR5-NEXT: and 4, 4, 7
12255 ; PWR5-NEXT: rldicl 3, 3, 8, 56
12256 ; PWR5-NEXT: li 5, 3
12257 ; PWR5-NEXT: mulld 4, 4, 9
12258 ; PWR5-NEXT: subc 6, 3, 5
12259 ; PWR5-NEXT: rldicl 4, 4, 8, 56
12260 ; PWR5-NEXT: subfe 3, 3, 3
12261 ; PWR5-NEXT: subc 5, 4, 5
12262 ; PWR5-NEXT: subfe 4, 4, 4
12265 ; PWR6-LABEL: ult_3_v2i64:
12267 ; PWR6-NEXT: lis 5, 21845
12268 ; PWR6-NEXT: lis 6, 13107
12269 ; PWR6-NEXT: ori 5, 5, 21845
12270 ; PWR6-NEXT: rotldi 8, 4, 63
12271 ; PWR6-NEXT: rotldi 9, 3, 63
12272 ; PWR6-NEXT: rldimi 5, 5, 32, 0
12273 ; PWR6-NEXT: and 8, 8, 5
12274 ; PWR6-NEXT: and 5, 9, 5
12275 ; PWR6-NEXT: ori 6, 6, 13107
12276 ; PWR6-NEXT: sub 3, 3, 5
12277 ; PWR6-NEXT: rldimi 6, 6, 32, 0
12278 ; PWR6-NEXT: sub 4, 4, 8
12279 ; PWR6-NEXT: and 8, 3, 6
12280 ; PWR6-NEXT: rotldi 3, 3, 62
12281 ; PWR6-NEXT: and 3, 3, 6
12282 ; PWR6-NEXT: lis 7, 3855
12283 ; PWR6-NEXT: and 5, 4, 6
12284 ; PWR6-NEXT: rotldi 4, 4, 62
12285 ; PWR6-NEXT: add 3, 8, 3
12286 ; PWR6-NEXT: lis 9, 257
12287 ; PWR6-NEXT: ori 7, 7, 3855
12288 ; PWR6-NEXT: and 4, 4, 6
12289 ; PWR6-NEXT: rldicl 6, 3, 60, 4
12290 ; PWR6-NEXT: ori 9, 9, 257
12291 ; PWR6-NEXT: rldimi 7, 7, 32, 0
12292 ; PWR6-NEXT: add 4, 5, 4
12293 ; PWR6-NEXT: add 3, 3, 6
12294 ; PWR6-NEXT: rldimi 9, 9, 32, 0
12295 ; PWR6-NEXT: rldicl 5, 4, 60, 4
12296 ; PWR6-NEXT: and 3, 3, 7
12297 ; PWR6-NEXT: add 4, 4, 5
12298 ; PWR6-NEXT: mulld 3, 3, 9
12299 ; PWR6-NEXT: and 4, 4, 7
12300 ; PWR6-NEXT: rldicl 3, 3, 8, 56
12301 ; PWR6-NEXT: li 5, 3
12302 ; PWR6-NEXT: mulld 4, 4, 9
12303 ; PWR6-NEXT: subc 6, 3, 5
12304 ; PWR6-NEXT: rldicl 4, 4, 8, 56
12305 ; PWR6-NEXT: subfe 3, 3, 3
12306 ; PWR6-NEXT: subc 5, 4, 5
12307 ; PWR6-NEXT: subfe 4, 4, 4
12310 ; PWR7-LABEL: ult_3_v2i64:
12312 ; PWR7-NEXT: addi 3, 1, -32
12313 ; PWR7-NEXT: li 5, -1
12314 ; PWR7-NEXT: stxvd2x 34, 0, 3
12315 ; PWR7-NEXT: ld 4, -24(1)
12316 ; PWR7-NEXT: ld 3, -32(1)
12317 ; PWR7-NEXT: popcntd 4, 4
12318 ; PWR7-NEXT: popcntd 3, 3
12319 ; PWR7-NEXT: cmpldi 4, 3
12320 ; PWR7-NEXT: li 4, 0
12321 ; PWR7-NEXT: isellt 6, 5, 4
12322 ; PWR7-NEXT: cmpldi 3, 3
12323 ; PWR7-NEXT: isellt 3, 5, 4
12324 ; PWR7-NEXT: std 6, -8(1)
12325 ; PWR7-NEXT: std 3, -16(1)
12326 ; PWR7-NEXT: addi 3, 1, -16
12327 ; PWR7-NEXT: lxvd2x 34, 0, 3
12330 ; PWR8-LABEL: ult_3_v2i64:
12332 ; PWR8-NEXT: addis 3, 2, .LCPI103_0@toc@ha
12333 ; PWR8-NEXT: vpopcntd 2, 2
12334 ; PWR8-NEXT: addi 3, 3, .LCPI103_0@toc@l
12335 ; PWR8-NEXT: lxvd2x 35, 0, 3
12336 ; PWR8-NEXT: vcmpgtud 2, 3, 2
12339 ; PWR9-LABEL: ult_3_v2i64:
12341 ; PWR9-NEXT: addis 3, 2, .LCPI103_0@toc@ha
12342 ; PWR9-NEXT: vpopcntd 2, 2
12343 ; PWR9-NEXT: addi 3, 3, .LCPI103_0@toc@l
12344 ; PWR9-NEXT: lxv 35, 0(3)
12345 ; PWR9-NEXT: vcmpgtud 2, 3, 2
12347 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
12348 %3 = icmp ult <2 x i64> %2, <i64 3, i64 3>
12349 %4 = sext <2 x i1> %3 to <2 x i64>
12353 define <2 x i64> @ugt_3_v2i64(<2 x i64> %0) {
12354 ; PWR5-LABEL: ugt_3_v2i64:
12356 ; PWR5-NEXT: lis 5, 21845
12357 ; PWR5-NEXT: lis 6, 13107
12358 ; PWR5-NEXT: ori 5, 5, 21845
12359 ; PWR5-NEXT: rotldi 8, 4, 63
12360 ; PWR5-NEXT: rotldi 9, 3, 63
12361 ; PWR5-NEXT: rldimi 5, 5, 32, 0
12362 ; PWR5-NEXT: and 8, 8, 5
12363 ; PWR5-NEXT: and 5, 9, 5
12364 ; PWR5-NEXT: ori 6, 6, 13107
12365 ; PWR5-NEXT: sub 3, 3, 5
12366 ; PWR5-NEXT: rldimi 6, 6, 32, 0
12367 ; PWR5-NEXT: sub 4, 4, 8
12368 ; PWR5-NEXT: and 8, 3, 6
12369 ; PWR5-NEXT: rotldi 3, 3, 62
12370 ; PWR5-NEXT: and 3, 3, 6
12371 ; PWR5-NEXT: lis 7, 3855
12372 ; PWR5-NEXT: and 5, 4, 6
12373 ; PWR5-NEXT: rotldi 4, 4, 62
12374 ; PWR5-NEXT: add 3, 8, 3
12375 ; PWR5-NEXT: lis 9, 257
12376 ; PWR5-NEXT: ori 7, 7, 3855
12377 ; PWR5-NEXT: and 4, 4, 6
12378 ; PWR5-NEXT: rldicl 6, 3, 60, 4
12379 ; PWR5-NEXT: ori 9, 9, 257
12380 ; PWR5-NEXT: rldimi 7, 7, 32, 0
12381 ; PWR5-NEXT: add 4, 5, 4
12382 ; PWR5-NEXT: add 3, 3, 6
12383 ; PWR5-NEXT: rldimi 9, 9, 32, 0
12384 ; PWR5-NEXT: rldicl 5, 4, 60, 4
12385 ; PWR5-NEXT: and 3, 3, 7
12386 ; PWR5-NEXT: add 4, 4, 5
12387 ; PWR5-NEXT: mulld 3, 3, 9
12388 ; PWR5-NEXT: and 4, 4, 7
12389 ; PWR5-NEXT: rldicl 3, 3, 8, 56
12390 ; PWR5-NEXT: mulld 4, 4, 9
12391 ; PWR5-NEXT: li 5, 3
12392 ; PWR5-NEXT: subfic 3, 3, 3
12393 ; PWR5-NEXT: rldicl 4, 4, 8, 56
12394 ; PWR5-NEXT: subfe 3, 5, 5
12395 ; PWR5-NEXT: subfic 4, 4, 3
12396 ; PWR5-NEXT: subfe 4, 5, 5
12399 ; PWR6-LABEL: ugt_3_v2i64:
12401 ; PWR6-NEXT: lis 5, 21845
12402 ; PWR6-NEXT: lis 6, 13107
12403 ; PWR6-NEXT: ori 5, 5, 21845
12404 ; PWR6-NEXT: rotldi 8, 4, 63
12405 ; PWR6-NEXT: rotldi 9, 3, 63
12406 ; PWR6-NEXT: rldimi 5, 5, 32, 0
12407 ; PWR6-NEXT: and 8, 8, 5
12408 ; PWR6-NEXT: and 5, 9, 5
12409 ; PWR6-NEXT: ori 6, 6, 13107
12410 ; PWR6-NEXT: sub 3, 3, 5
12411 ; PWR6-NEXT: rldimi 6, 6, 32, 0
12412 ; PWR6-NEXT: sub 4, 4, 8
12413 ; PWR6-NEXT: and 8, 3, 6
12414 ; PWR6-NEXT: rotldi 3, 3, 62
12415 ; PWR6-NEXT: and 3, 3, 6
12416 ; PWR6-NEXT: lis 7, 3855
12417 ; PWR6-NEXT: and 5, 4, 6
12418 ; PWR6-NEXT: rotldi 4, 4, 62
12419 ; PWR6-NEXT: add 3, 8, 3
12420 ; PWR6-NEXT: lis 9, 257
12421 ; PWR6-NEXT: ori 7, 7, 3855
12422 ; PWR6-NEXT: and 4, 4, 6
12423 ; PWR6-NEXT: rldicl 6, 3, 60, 4
12424 ; PWR6-NEXT: ori 9, 9, 257
12425 ; PWR6-NEXT: rldimi 7, 7, 32, 0
12426 ; PWR6-NEXT: add 4, 5, 4
12427 ; PWR6-NEXT: add 3, 3, 6
12428 ; PWR6-NEXT: rldimi 9, 9, 32, 0
12429 ; PWR6-NEXT: rldicl 5, 4, 60, 4
12430 ; PWR6-NEXT: and 3, 3, 7
12431 ; PWR6-NEXT: add 4, 4, 5
12432 ; PWR6-NEXT: mulld 3, 3, 9
12433 ; PWR6-NEXT: and 4, 4, 7
12434 ; PWR6-NEXT: rldicl 3, 3, 8, 56
12435 ; PWR6-NEXT: mulld 4, 4, 9
12436 ; PWR6-NEXT: li 5, 3
12437 ; PWR6-NEXT: subfic 3, 3, 3
12438 ; PWR6-NEXT: rldicl 4, 4, 8, 56
12439 ; PWR6-NEXT: subfe 3, 5, 5
12440 ; PWR6-NEXT: subfic 4, 4, 3
12441 ; PWR6-NEXT: subfe 4, 5, 5
12444 ; PWR7-LABEL: ugt_3_v2i64:
12446 ; PWR7-NEXT: addi 3, 1, -32
12447 ; PWR7-NEXT: li 5, -1
12448 ; PWR7-NEXT: stxvd2x 34, 0, 3
12449 ; PWR7-NEXT: ld 4, -24(1)
12450 ; PWR7-NEXT: ld 3, -32(1)
12451 ; PWR7-NEXT: popcntd 4, 4
12452 ; PWR7-NEXT: popcntd 3, 3
12453 ; PWR7-NEXT: cmpldi 4, 3
12454 ; PWR7-NEXT: li 4, 0
12455 ; PWR7-NEXT: iselgt 6, 5, 4
12456 ; PWR7-NEXT: cmpldi 3, 3
12457 ; PWR7-NEXT: iselgt 3, 5, 4
12458 ; PWR7-NEXT: std 6, -8(1)
12459 ; PWR7-NEXT: std 3, -16(1)
12460 ; PWR7-NEXT: addi 3, 1, -16
12461 ; PWR7-NEXT: lxvd2x 34, 0, 3
12464 ; PWR8-LABEL: ugt_3_v2i64:
12466 ; PWR8-NEXT: addis 3, 2, .LCPI104_0@toc@ha
12467 ; PWR8-NEXT: vpopcntd 2, 2
12468 ; PWR8-NEXT: addi 3, 3, .LCPI104_0@toc@l
12469 ; PWR8-NEXT: lxvd2x 35, 0, 3
12470 ; PWR8-NEXT: vcmpgtud 2, 2, 3
12473 ; PWR9-LABEL: ugt_3_v2i64:
12475 ; PWR9-NEXT: addis 3, 2, .LCPI104_0@toc@ha
12476 ; PWR9-NEXT: vpopcntd 2, 2
12477 ; PWR9-NEXT: addi 3, 3, .LCPI104_0@toc@l
12478 ; PWR9-NEXT: lxv 35, 0(3)
12479 ; PWR9-NEXT: vcmpgtud 2, 2, 3
12481 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
12482 %3 = icmp ugt <2 x i64> %2, <i64 3, i64 3>
12483 %4 = sext <2 x i1> %3 to <2 x i64>
12487 define <2 x i64> @ult_4_v2i64(<2 x i64> %0) {
12488 ; PWR5-LABEL: ult_4_v2i64:
12490 ; PWR5-NEXT: lis 5, 21845
12491 ; PWR5-NEXT: lis 6, 13107
12492 ; PWR5-NEXT: ori 5, 5, 21845
12493 ; PWR5-NEXT: rotldi 8, 4, 63
12494 ; PWR5-NEXT: rotldi 9, 3, 63
12495 ; PWR5-NEXT: rldimi 5, 5, 32, 0
12496 ; PWR5-NEXT: and 8, 8, 5
12497 ; PWR5-NEXT: and 5, 9, 5
12498 ; PWR5-NEXT: ori 6, 6, 13107
12499 ; PWR5-NEXT: sub 3, 3, 5
12500 ; PWR5-NEXT: rldimi 6, 6, 32, 0
12501 ; PWR5-NEXT: sub 4, 4, 8
12502 ; PWR5-NEXT: and 8, 3, 6
12503 ; PWR5-NEXT: rotldi 3, 3, 62
12504 ; PWR5-NEXT: and 3, 3, 6
12505 ; PWR5-NEXT: lis 7, 3855
12506 ; PWR5-NEXT: and 5, 4, 6
12507 ; PWR5-NEXT: rotldi 4, 4, 62
12508 ; PWR5-NEXT: add 3, 8, 3
12509 ; PWR5-NEXT: lis 9, 257
12510 ; PWR5-NEXT: ori 7, 7, 3855
12511 ; PWR5-NEXT: and 4, 4, 6
12512 ; PWR5-NEXT: rldicl 6, 3, 60, 4
12513 ; PWR5-NEXT: ori 9, 9, 257
12514 ; PWR5-NEXT: rldimi 7, 7, 32, 0
12515 ; PWR5-NEXT: add 4, 5, 4
12516 ; PWR5-NEXT: add 3, 3, 6
12517 ; PWR5-NEXT: rldimi 9, 9, 32, 0
12518 ; PWR5-NEXT: rldicl 5, 4, 60, 4
12519 ; PWR5-NEXT: and 3, 3, 7
12520 ; PWR5-NEXT: add 4, 4, 5
12521 ; PWR5-NEXT: mulld 3, 3, 9
12522 ; PWR5-NEXT: and 4, 4, 7
12523 ; PWR5-NEXT: rldicl 3, 3, 8, 56
12524 ; PWR5-NEXT: li 5, 4
12525 ; PWR5-NEXT: mulld 4, 4, 9
12526 ; PWR5-NEXT: subc 6, 3, 5
12527 ; PWR5-NEXT: rldicl 4, 4, 8, 56
12528 ; PWR5-NEXT: subfe 3, 3, 3
12529 ; PWR5-NEXT: subc 5, 4, 5
12530 ; PWR5-NEXT: subfe 4, 4, 4
12533 ; PWR6-LABEL: ult_4_v2i64:
12535 ; PWR6-NEXT: lis 5, 21845
12536 ; PWR6-NEXT: lis 6, 13107
12537 ; PWR6-NEXT: ori 5, 5, 21845
12538 ; PWR6-NEXT: rotldi 8, 4, 63
12539 ; PWR6-NEXT: rotldi 9, 3, 63
12540 ; PWR6-NEXT: rldimi 5, 5, 32, 0
12541 ; PWR6-NEXT: and 8, 8, 5
12542 ; PWR6-NEXT: and 5, 9, 5
12543 ; PWR6-NEXT: ori 6, 6, 13107
12544 ; PWR6-NEXT: sub 3, 3, 5
12545 ; PWR6-NEXT: rldimi 6, 6, 32, 0
12546 ; PWR6-NEXT: sub 4, 4, 8
12547 ; PWR6-NEXT: and 8, 3, 6
12548 ; PWR6-NEXT: rotldi 3, 3, 62
12549 ; PWR6-NEXT: and 3, 3, 6
12550 ; PWR6-NEXT: lis 7, 3855
12551 ; PWR6-NEXT: and 5, 4, 6
12552 ; PWR6-NEXT: rotldi 4, 4, 62
12553 ; PWR6-NEXT: add 3, 8, 3
12554 ; PWR6-NEXT: lis 9, 257
12555 ; PWR6-NEXT: ori 7, 7, 3855
12556 ; PWR6-NEXT: and 4, 4, 6
12557 ; PWR6-NEXT: rldicl 6, 3, 60, 4
12558 ; PWR6-NEXT: ori 9, 9, 257
12559 ; PWR6-NEXT: rldimi 7, 7, 32, 0
12560 ; PWR6-NEXT: add 4, 5, 4
12561 ; PWR6-NEXT: add 3, 3, 6
12562 ; PWR6-NEXT: rldimi 9, 9, 32, 0
12563 ; PWR6-NEXT: rldicl 5, 4, 60, 4
12564 ; PWR6-NEXT: and 3, 3, 7
12565 ; PWR6-NEXT: add 4, 4, 5
12566 ; PWR6-NEXT: mulld 3, 3, 9
12567 ; PWR6-NEXT: and 4, 4, 7
12568 ; PWR6-NEXT: rldicl 3, 3, 8, 56
12569 ; PWR6-NEXT: li 5, 4
12570 ; PWR6-NEXT: mulld 4, 4, 9
12571 ; PWR6-NEXT: subc 6, 3, 5
12572 ; PWR6-NEXT: rldicl 4, 4, 8, 56
12573 ; PWR6-NEXT: subfe 3, 3, 3
12574 ; PWR6-NEXT: subc 5, 4, 5
12575 ; PWR6-NEXT: subfe 4, 4, 4
12578 ; PWR7-LABEL: ult_4_v2i64:
12580 ; PWR7-NEXT: addi 3, 1, -32
12581 ; PWR7-NEXT: li 5, -1
12582 ; PWR7-NEXT: stxvd2x 34, 0, 3
12583 ; PWR7-NEXT: ld 4, -24(1)
12584 ; PWR7-NEXT: ld 3, -32(1)
12585 ; PWR7-NEXT: popcntd 4, 4
12586 ; PWR7-NEXT: popcntd 3, 3
12587 ; PWR7-NEXT: cmpldi 4, 4
12588 ; PWR7-NEXT: li 4, 0
12589 ; PWR7-NEXT: isellt 6, 5, 4
12590 ; PWR7-NEXT: cmpldi 3, 4
12591 ; PWR7-NEXT: isellt 3, 5, 4
12592 ; PWR7-NEXT: std 6, -8(1)
12593 ; PWR7-NEXT: std 3, -16(1)
12594 ; PWR7-NEXT: addi 3, 1, -16
12595 ; PWR7-NEXT: lxvd2x 34, 0, 3
12598 ; PWR8-LABEL: ult_4_v2i64:
12600 ; PWR8-NEXT: addis 3, 2, .LCPI105_0@toc@ha
12601 ; PWR8-NEXT: vpopcntd 2, 2
12602 ; PWR8-NEXT: addi 3, 3, .LCPI105_0@toc@l
12603 ; PWR8-NEXT: lxvd2x 35, 0, 3
12604 ; PWR8-NEXT: vcmpgtud 2, 3, 2
12607 ; PWR9-LABEL: ult_4_v2i64:
12609 ; PWR9-NEXT: addis 3, 2, .LCPI105_0@toc@ha
12610 ; PWR9-NEXT: vpopcntd 2, 2
12611 ; PWR9-NEXT: addi 3, 3, .LCPI105_0@toc@l
12612 ; PWR9-NEXT: lxv 35, 0(3)
12613 ; PWR9-NEXT: vcmpgtud 2, 3, 2
12615 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
12616 %3 = icmp ult <2 x i64> %2, <i64 4, i64 4>
12617 %4 = sext <2 x i1> %3 to <2 x i64>
12621 define <2 x i64> @ugt_4_v2i64(<2 x i64> %0) {
12622 ; PWR5-LABEL: ugt_4_v2i64:
12624 ; PWR5-NEXT: lis 5, 21845
12625 ; PWR5-NEXT: lis 6, 13107
12626 ; PWR5-NEXT: ori 5, 5, 21845
12627 ; PWR5-NEXT: rotldi 8, 4, 63
12628 ; PWR5-NEXT: rotldi 9, 3, 63
12629 ; PWR5-NEXT: rldimi 5, 5, 32, 0
12630 ; PWR5-NEXT: and 8, 8, 5
12631 ; PWR5-NEXT: and 5, 9, 5
12632 ; PWR5-NEXT: ori 6, 6, 13107
12633 ; PWR5-NEXT: sub 3, 3, 5
12634 ; PWR5-NEXT: rldimi 6, 6, 32, 0
12635 ; PWR5-NEXT: sub 4, 4, 8
12636 ; PWR5-NEXT: and 8, 3, 6
12637 ; PWR5-NEXT: rotldi 3, 3, 62
12638 ; PWR5-NEXT: and 3, 3, 6
12639 ; PWR5-NEXT: lis 7, 3855
12640 ; PWR5-NEXT: and 5, 4, 6
12641 ; PWR5-NEXT: rotldi 4, 4, 62
12642 ; PWR5-NEXT: add 3, 8, 3
12643 ; PWR5-NEXT: lis 9, 257
12644 ; PWR5-NEXT: ori 7, 7, 3855
12645 ; PWR5-NEXT: and 4, 4, 6
12646 ; PWR5-NEXT: rldicl 6, 3, 60, 4
12647 ; PWR5-NEXT: ori 9, 9, 257
12648 ; PWR5-NEXT: rldimi 7, 7, 32, 0
12649 ; PWR5-NEXT: add 4, 5, 4
12650 ; PWR5-NEXT: add 3, 3, 6
12651 ; PWR5-NEXT: rldimi 9, 9, 32, 0
12652 ; PWR5-NEXT: rldicl 5, 4, 60, 4
12653 ; PWR5-NEXT: and 3, 3, 7
12654 ; PWR5-NEXT: add 4, 4, 5
12655 ; PWR5-NEXT: mulld 3, 3, 9
12656 ; PWR5-NEXT: and 4, 4, 7
12657 ; PWR5-NEXT: rldicl 3, 3, 8, 56
12658 ; PWR5-NEXT: mulld 4, 4, 9
12659 ; PWR5-NEXT: li 5, 4
12660 ; PWR5-NEXT: subfic 3, 3, 4
12661 ; PWR5-NEXT: rldicl 4, 4, 8, 56
12662 ; PWR5-NEXT: subfe 3, 5, 5
12663 ; PWR5-NEXT: subfic 4, 4, 4
12664 ; PWR5-NEXT: subfe 4, 5, 5
12667 ; PWR6-LABEL: ugt_4_v2i64:
12669 ; PWR6-NEXT: lis 5, 21845
12670 ; PWR6-NEXT: lis 6, 13107
12671 ; PWR6-NEXT: ori 5, 5, 21845
12672 ; PWR6-NEXT: rotldi 8, 4, 63
12673 ; PWR6-NEXT: rotldi 9, 3, 63
12674 ; PWR6-NEXT: rldimi 5, 5, 32, 0
12675 ; PWR6-NEXT: and 8, 8, 5
12676 ; PWR6-NEXT: and 5, 9, 5
12677 ; PWR6-NEXT: ori 6, 6, 13107
12678 ; PWR6-NEXT: sub 3, 3, 5
12679 ; PWR6-NEXT: rldimi 6, 6, 32, 0
12680 ; PWR6-NEXT: sub 4, 4, 8
12681 ; PWR6-NEXT: and 8, 3, 6
12682 ; PWR6-NEXT: rotldi 3, 3, 62
12683 ; PWR6-NEXT: and 3, 3, 6
12684 ; PWR6-NEXT: lis 7, 3855
12685 ; PWR6-NEXT: and 5, 4, 6
12686 ; PWR6-NEXT: rotldi 4, 4, 62
12687 ; PWR6-NEXT: add 3, 8, 3
12688 ; PWR6-NEXT: lis 9, 257
12689 ; PWR6-NEXT: ori 7, 7, 3855
12690 ; PWR6-NEXT: and 4, 4, 6
12691 ; PWR6-NEXT: rldicl 6, 3, 60, 4
12692 ; PWR6-NEXT: ori 9, 9, 257
12693 ; PWR6-NEXT: rldimi 7, 7, 32, 0
12694 ; PWR6-NEXT: add 4, 5, 4
12695 ; PWR6-NEXT: add 3, 3, 6
12696 ; PWR6-NEXT: rldimi 9, 9, 32, 0
12697 ; PWR6-NEXT: rldicl 5, 4, 60, 4
12698 ; PWR6-NEXT: and 3, 3, 7
12699 ; PWR6-NEXT: add 4, 4, 5
12700 ; PWR6-NEXT: mulld 3, 3, 9
12701 ; PWR6-NEXT: and 4, 4, 7
12702 ; PWR6-NEXT: rldicl 3, 3, 8, 56
12703 ; PWR6-NEXT: mulld 4, 4, 9
12704 ; PWR6-NEXT: li 5, 4
12705 ; PWR6-NEXT: subfic 3, 3, 4
12706 ; PWR6-NEXT: rldicl 4, 4, 8, 56
12707 ; PWR6-NEXT: subfe 3, 5, 5
12708 ; PWR6-NEXT: subfic 4, 4, 4
12709 ; PWR6-NEXT: subfe 4, 5, 5
12712 ; PWR7-LABEL: ugt_4_v2i64:
12714 ; PWR7-NEXT: addi 3, 1, -32
12715 ; PWR7-NEXT: li 5, -1
12716 ; PWR7-NEXT: stxvd2x 34, 0, 3
12717 ; PWR7-NEXT: ld 4, -24(1)
12718 ; PWR7-NEXT: ld 3, -32(1)
12719 ; PWR7-NEXT: popcntd 4, 4
12720 ; PWR7-NEXT: popcntd 3, 3
12721 ; PWR7-NEXT: cmpldi 4, 4
12722 ; PWR7-NEXT: li 4, 0
12723 ; PWR7-NEXT: iselgt 6, 5, 4
12724 ; PWR7-NEXT: cmpldi 3, 4
12725 ; PWR7-NEXT: iselgt 3, 5, 4
12726 ; PWR7-NEXT: std 6, -8(1)
12727 ; PWR7-NEXT: std 3, -16(1)
12728 ; PWR7-NEXT: addi 3, 1, -16
12729 ; PWR7-NEXT: lxvd2x 34, 0, 3
12732 ; PWR8-LABEL: ugt_4_v2i64:
12734 ; PWR8-NEXT: addis 3, 2, .LCPI106_0@toc@ha
12735 ; PWR8-NEXT: vpopcntd 2, 2
12736 ; PWR8-NEXT: addi 3, 3, .LCPI106_0@toc@l
12737 ; PWR8-NEXT: lxvd2x 35, 0, 3
12738 ; PWR8-NEXT: vcmpgtud 2, 2, 3
12741 ; PWR9-LABEL: ugt_4_v2i64:
12743 ; PWR9-NEXT: addis 3, 2, .LCPI106_0@toc@ha
12744 ; PWR9-NEXT: vpopcntd 2, 2
12745 ; PWR9-NEXT: addi 3, 3, .LCPI106_0@toc@l
12746 ; PWR9-NEXT: lxv 35, 0(3)
12747 ; PWR9-NEXT: vcmpgtud 2, 2, 3
12749 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
12750 %3 = icmp ugt <2 x i64> %2, <i64 4, i64 4>
12751 %4 = sext <2 x i1> %3 to <2 x i64>
12755 define <2 x i64> @ult_5_v2i64(<2 x i64> %0) {
12756 ; PWR5-LABEL: ult_5_v2i64:
12758 ; PWR5-NEXT: lis 5, 21845
12759 ; PWR5-NEXT: lis 6, 13107
12760 ; PWR5-NEXT: ori 5, 5, 21845
12761 ; PWR5-NEXT: rotldi 8, 4, 63
12762 ; PWR5-NEXT: rotldi 9, 3, 63
12763 ; PWR5-NEXT: rldimi 5, 5, 32, 0
12764 ; PWR5-NEXT: and 8, 8, 5
12765 ; PWR5-NEXT: and 5, 9, 5
12766 ; PWR5-NEXT: ori 6, 6, 13107
12767 ; PWR5-NEXT: sub 3, 3, 5
12768 ; PWR5-NEXT: rldimi 6, 6, 32, 0
12769 ; PWR5-NEXT: sub 4, 4, 8
12770 ; PWR5-NEXT: and 8, 3, 6
12771 ; PWR5-NEXT: rotldi 3, 3, 62
12772 ; PWR5-NEXT: and 3, 3, 6
12773 ; PWR5-NEXT: lis 7, 3855
12774 ; PWR5-NEXT: and 5, 4, 6
12775 ; PWR5-NEXT: rotldi 4, 4, 62
12776 ; PWR5-NEXT: add 3, 8, 3
12777 ; PWR5-NEXT: lis 9, 257
12778 ; PWR5-NEXT: ori 7, 7, 3855
12779 ; PWR5-NEXT: and 4, 4, 6
12780 ; PWR5-NEXT: rldicl 6, 3, 60, 4
12781 ; PWR5-NEXT: ori 9, 9, 257
12782 ; PWR5-NEXT: rldimi 7, 7, 32, 0
12783 ; PWR5-NEXT: add 4, 5, 4
12784 ; PWR5-NEXT: add 3, 3, 6
12785 ; PWR5-NEXT: rldimi 9, 9, 32, 0
12786 ; PWR5-NEXT: rldicl 5, 4, 60, 4
12787 ; PWR5-NEXT: and 3, 3, 7
12788 ; PWR5-NEXT: add 4, 4, 5
12789 ; PWR5-NEXT: mulld 3, 3, 9
12790 ; PWR5-NEXT: and 4, 4, 7
12791 ; PWR5-NEXT: rldicl 3, 3, 8, 56
12792 ; PWR5-NEXT: li 5, 5
12793 ; PWR5-NEXT: mulld 4, 4, 9
12794 ; PWR5-NEXT: subc 6, 3, 5
12795 ; PWR5-NEXT: rldicl 4, 4, 8, 56
12796 ; PWR5-NEXT: subfe 3, 3, 3
12797 ; PWR5-NEXT: subc 5, 4, 5
12798 ; PWR5-NEXT: subfe 4, 4, 4
12801 ; PWR6-LABEL: ult_5_v2i64:
12803 ; PWR6-NEXT: lis 5, 21845
12804 ; PWR6-NEXT: lis 6, 13107
12805 ; PWR6-NEXT: ori 5, 5, 21845
12806 ; PWR6-NEXT: rotldi 8, 4, 63
12807 ; PWR6-NEXT: rotldi 9, 3, 63
12808 ; PWR6-NEXT: rldimi 5, 5, 32, 0
12809 ; PWR6-NEXT: and 8, 8, 5
12810 ; PWR6-NEXT: and 5, 9, 5
12811 ; PWR6-NEXT: ori 6, 6, 13107
12812 ; PWR6-NEXT: sub 3, 3, 5
12813 ; PWR6-NEXT: rldimi 6, 6, 32, 0
12814 ; PWR6-NEXT: sub 4, 4, 8
12815 ; PWR6-NEXT: and 8, 3, 6
12816 ; PWR6-NEXT: rotldi 3, 3, 62
12817 ; PWR6-NEXT: and 3, 3, 6
12818 ; PWR6-NEXT: lis 7, 3855
12819 ; PWR6-NEXT: and 5, 4, 6
12820 ; PWR6-NEXT: rotldi 4, 4, 62
12821 ; PWR6-NEXT: add 3, 8, 3
12822 ; PWR6-NEXT: lis 9, 257
12823 ; PWR6-NEXT: ori 7, 7, 3855
12824 ; PWR6-NEXT: and 4, 4, 6
12825 ; PWR6-NEXT: rldicl 6, 3, 60, 4
12826 ; PWR6-NEXT: ori 9, 9, 257
12827 ; PWR6-NEXT: rldimi 7, 7, 32, 0
12828 ; PWR6-NEXT: add 4, 5, 4
12829 ; PWR6-NEXT: add 3, 3, 6
12830 ; PWR6-NEXT: rldimi 9, 9, 32, 0
12831 ; PWR6-NEXT: rldicl 5, 4, 60, 4
12832 ; PWR6-NEXT: and 3, 3, 7
12833 ; PWR6-NEXT: add 4, 4, 5
12834 ; PWR6-NEXT: mulld 3, 3, 9
12835 ; PWR6-NEXT: and 4, 4, 7
12836 ; PWR6-NEXT: rldicl 3, 3, 8, 56
12837 ; PWR6-NEXT: li 5, 5
12838 ; PWR6-NEXT: mulld 4, 4, 9
12839 ; PWR6-NEXT: subc 6, 3, 5
12840 ; PWR6-NEXT: rldicl 4, 4, 8, 56
12841 ; PWR6-NEXT: subfe 3, 3, 3
12842 ; PWR6-NEXT: subc 5, 4, 5
12843 ; PWR6-NEXT: subfe 4, 4, 4
12846 ; PWR7-LABEL: ult_5_v2i64:
12848 ; PWR7-NEXT: addi 3, 1, -32
12849 ; PWR7-NEXT: li 5, -1
12850 ; PWR7-NEXT: stxvd2x 34, 0, 3
12851 ; PWR7-NEXT: ld 4, -24(1)
12852 ; PWR7-NEXT: ld 3, -32(1)
12853 ; PWR7-NEXT: popcntd 4, 4
12854 ; PWR7-NEXT: popcntd 3, 3
12855 ; PWR7-NEXT: cmpldi 4, 5
12856 ; PWR7-NEXT: li 4, 0
12857 ; PWR7-NEXT: isellt 6, 5, 4
12858 ; PWR7-NEXT: cmpldi 3, 5
12859 ; PWR7-NEXT: isellt 3, 5, 4
12860 ; PWR7-NEXT: std 6, -8(1)
12861 ; PWR7-NEXT: std 3, -16(1)
12862 ; PWR7-NEXT: addi 3, 1, -16
12863 ; PWR7-NEXT: lxvd2x 34, 0, 3
12866 ; PWR8-LABEL: ult_5_v2i64:
12868 ; PWR8-NEXT: addis 3, 2, .LCPI107_0@toc@ha
12869 ; PWR8-NEXT: vpopcntd 2, 2
12870 ; PWR8-NEXT: addi 3, 3, .LCPI107_0@toc@l
12871 ; PWR8-NEXT: lxvd2x 35, 0, 3
12872 ; PWR8-NEXT: vcmpgtud 2, 3, 2
12875 ; PWR9-LABEL: ult_5_v2i64:
12877 ; PWR9-NEXT: addis 3, 2, .LCPI107_0@toc@ha
12878 ; PWR9-NEXT: vpopcntd 2, 2
12879 ; PWR9-NEXT: addi 3, 3, .LCPI107_0@toc@l
12880 ; PWR9-NEXT: lxv 35, 0(3)
12881 ; PWR9-NEXT: vcmpgtud 2, 3, 2
12883 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
12884 %3 = icmp ult <2 x i64> %2, <i64 5, i64 5>
12885 %4 = sext <2 x i1> %3 to <2 x i64>
12889 define <2 x i64> @ugt_5_v2i64(<2 x i64> %0) {
12890 ; PWR5-LABEL: ugt_5_v2i64:
12892 ; PWR5-NEXT: lis 5, 21845
12893 ; PWR5-NEXT: lis 6, 13107
12894 ; PWR5-NEXT: ori 5, 5, 21845
12895 ; PWR5-NEXT: rotldi 8, 4, 63
12896 ; PWR5-NEXT: rotldi 9, 3, 63
12897 ; PWR5-NEXT: rldimi 5, 5, 32, 0
12898 ; PWR5-NEXT: and 8, 8, 5
12899 ; PWR5-NEXT: and 5, 9, 5
12900 ; PWR5-NEXT: ori 6, 6, 13107
12901 ; PWR5-NEXT: sub 3, 3, 5
12902 ; PWR5-NEXT: rldimi 6, 6, 32, 0
12903 ; PWR5-NEXT: sub 4, 4, 8
12904 ; PWR5-NEXT: and 8, 3, 6
12905 ; PWR5-NEXT: rotldi 3, 3, 62
12906 ; PWR5-NEXT: and 3, 3, 6
12907 ; PWR5-NEXT: lis 7, 3855
12908 ; PWR5-NEXT: and 5, 4, 6
12909 ; PWR5-NEXT: rotldi 4, 4, 62
12910 ; PWR5-NEXT: add 3, 8, 3
12911 ; PWR5-NEXT: lis 9, 257
12912 ; PWR5-NEXT: ori 7, 7, 3855
12913 ; PWR5-NEXT: and 4, 4, 6
12914 ; PWR5-NEXT: rldicl 6, 3, 60, 4
12915 ; PWR5-NEXT: ori 9, 9, 257
12916 ; PWR5-NEXT: rldimi 7, 7, 32, 0
12917 ; PWR5-NEXT: add 4, 5, 4
12918 ; PWR5-NEXT: add 3, 3, 6
12919 ; PWR5-NEXT: rldimi 9, 9, 32, 0
12920 ; PWR5-NEXT: rldicl 5, 4, 60, 4
12921 ; PWR5-NEXT: and 3, 3, 7
12922 ; PWR5-NEXT: add 4, 4, 5
12923 ; PWR5-NEXT: mulld 3, 3, 9
12924 ; PWR5-NEXT: and 4, 4, 7
12925 ; PWR5-NEXT: rldicl 3, 3, 8, 56
12926 ; PWR5-NEXT: mulld 4, 4, 9
12927 ; PWR5-NEXT: li 5, 5
12928 ; PWR5-NEXT: subfic 3, 3, 5
12929 ; PWR5-NEXT: rldicl 4, 4, 8, 56
12930 ; PWR5-NEXT: subfe 3, 5, 5
12931 ; PWR5-NEXT: subfic 4, 4, 5
12932 ; PWR5-NEXT: subfe 4, 5, 5
12935 ; PWR6-LABEL: ugt_5_v2i64:
12937 ; PWR6-NEXT: lis 5, 21845
12938 ; PWR6-NEXT: lis 6, 13107
12939 ; PWR6-NEXT: ori 5, 5, 21845
12940 ; PWR6-NEXT: rotldi 8, 4, 63
12941 ; PWR6-NEXT: rotldi 9, 3, 63
12942 ; PWR6-NEXT: rldimi 5, 5, 32, 0
12943 ; PWR6-NEXT: and 8, 8, 5
12944 ; PWR6-NEXT: and 5, 9, 5
12945 ; PWR6-NEXT: ori 6, 6, 13107
12946 ; PWR6-NEXT: sub 3, 3, 5
12947 ; PWR6-NEXT: rldimi 6, 6, 32, 0
12948 ; PWR6-NEXT: sub 4, 4, 8
12949 ; PWR6-NEXT: and 8, 3, 6
12950 ; PWR6-NEXT: rotldi 3, 3, 62
12951 ; PWR6-NEXT: and 3, 3, 6
12952 ; PWR6-NEXT: lis 7, 3855
12953 ; PWR6-NEXT: and 5, 4, 6
12954 ; PWR6-NEXT: rotldi 4, 4, 62
12955 ; PWR6-NEXT: add 3, 8, 3
12956 ; PWR6-NEXT: lis 9, 257
12957 ; PWR6-NEXT: ori 7, 7, 3855
12958 ; PWR6-NEXT: and 4, 4, 6
12959 ; PWR6-NEXT: rldicl 6, 3, 60, 4
12960 ; PWR6-NEXT: ori 9, 9, 257
12961 ; PWR6-NEXT: rldimi 7, 7, 32, 0
12962 ; PWR6-NEXT: add 4, 5, 4
12963 ; PWR6-NEXT: add 3, 3, 6
12964 ; PWR6-NEXT: rldimi 9, 9, 32, 0
12965 ; PWR6-NEXT: rldicl 5, 4, 60, 4
12966 ; PWR6-NEXT: and 3, 3, 7
12967 ; PWR6-NEXT: add 4, 4, 5
12968 ; PWR6-NEXT: mulld 3, 3, 9
12969 ; PWR6-NEXT: and 4, 4, 7
12970 ; PWR6-NEXT: rldicl 3, 3, 8, 56
12971 ; PWR6-NEXT: mulld 4, 4, 9
12972 ; PWR6-NEXT: li 5, 5
12973 ; PWR6-NEXT: subfic 3, 3, 5
12974 ; PWR6-NEXT: rldicl 4, 4, 8, 56
12975 ; PWR6-NEXT: subfe 3, 5, 5
12976 ; PWR6-NEXT: subfic 4, 4, 5
12977 ; PWR6-NEXT: subfe 4, 5, 5
12980 ; PWR7-LABEL: ugt_5_v2i64:
12982 ; PWR7-NEXT: addi 3, 1, -32
12983 ; PWR7-NEXT: li 5, -1
12984 ; PWR7-NEXT: stxvd2x 34, 0, 3
12985 ; PWR7-NEXT: ld 4, -24(1)
12986 ; PWR7-NEXT: ld 3, -32(1)
12987 ; PWR7-NEXT: popcntd 4, 4
12988 ; PWR7-NEXT: popcntd 3, 3
12989 ; PWR7-NEXT: cmpldi 4, 5
12990 ; PWR7-NEXT: li 4, 0
12991 ; PWR7-NEXT: iselgt 6, 5, 4
12992 ; PWR7-NEXT: cmpldi 3, 5
12993 ; PWR7-NEXT: iselgt 3, 5, 4
12994 ; PWR7-NEXT: std 6, -8(1)
12995 ; PWR7-NEXT: std 3, -16(1)
12996 ; PWR7-NEXT: addi 3, 1, -16
12997 ; PWR7-NEXT: lxvd2x 34, 0, 3
13000 ; PWR8-LABEL: ugt_5_v2i64:
13002 ; PWR8-NEXT: addis 3, 2, .LCPI108_0@toc@ha
13003 ; PWR8-NEXT: vpopcntd 2, 2
13004 ; PWR8-NEXT: addi 3, 3, .LCPI108_0@toc@l
13005 ; PWR8-NEXT: lxvd2x 35, 0, 3
13006 ; PWR8-NEXT: vcmpgtud 2, 2, 3
13009 ; PWR9-LABEL: ugt_5_v2i64:
13011 ; PWR9-NEXT: addis 3, 2, .LCPI108_0@toc@ha
13012 ; PWR9-NEXT: vpopcntd 2, 2
13013 ; PWR9-NEXT: addi 3, 3, .LCPI108_0@toc@l
13014 ; PWR9-NEXT: lxv 35, 0(3)
13015 ; PWR9-NEXT: vcmpgtud 2, 2, 3
13017 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
13018 %3 = icmp ugt <2 x i64> %2, <i64 5, i64 5>
13019 %4 = sext <2 x i1> %3 to <2 x i64>
13023 define <2 x i64> @ult_6_v2i64(<2 x i64> %0) {
13024 ; PWR5-LABEL: ult_6_v2i64:
13026 ; PWR5-NEXT: lis 5, 21845
13027 ; PWR5-NEXT: lis 6, 13107
13028 ; PWR5-NEXT: ori 5, 5, 21845
13029 ; PWR5-NEXT: rotldi 8, 4, 63
13030 ; PWR5-NEXT: rotldi 9, 3, 63
13031 ; PWR5-NEXT: rldimi 5, 5, 32, 0
13032 ; PWR5-NEXT: and 8, 8, 5
13033 ; PWR5-NEXT: and 5, 9, 5
13034 ; PWR5-NEXT: ori 6, 6, 13107
13035 ; PWR5-NEXT: sub 3, 3, 5
13036 ; PWR5-NEXT: rldimi 6, 6, 32, 0
13037 ; PWR5-NEXT: sub 4, 4, 8
13038 ; PWR5-NEXT: and 8, 3, 6
13039 ; PWR5-NEXT: rotldi 3, 3, 62
13040 ; PWR5-NEXT: and 3, 3, 6
13041 ; PWR5-NEXT: lis 7, 3855
13042 ; PWR5-NEXT: and 5, 4, 6
13043 ; PWR5-NEXT: rotldi 4, 4, 62
13044 ; PWR5-NEXT: add 3, 8, 3
13045 ; PWR5-NEXT: lis 9, 257
13046 ; PWR5-NEXT: ori 7, 7, 3855
13047 ; PWR5-NEXT: and 4, 4, 6
13048 ; PWR5-NEXT: rldicl 6, 3, 60, 4
13049 ; PWR5-NEXT: ori 9, 9, 257
13050 ; PWR5-NEXT: rldimi 7, 7, 32, 0
13051 ; PWR5-NEXT: add 4, 5, 4
13052 ; PWR5-NEXT: add 3, 3, 6
13053 ; PWR5-NEXT: rldimi 9, 9, 32, 0
13054 ; PWR5-NEXT: rldicl 5, 4, 60, 4
13055 ; PWR5-NEXT: and 3, 3, 7
13056 ; PWR5-NEXT: add 4, 4, 5
13057 ; PWR5-NEXT: mulld 3, 3, 9
13058 ; PWR5-NEXT: and 4, 4, 7
13059 ; PWR5-NEXT: rldicl 3, 3, 8, 56
13060 ; PWR5-NEXT: li 5, 6
13061 ; PWR5-NEXT: mulld 4, 4, 9
13062 ; PWR5-NEXT: subc 6, 3, 5
13063 ; PWR5-NEXT: rldicl 4, 4, 8, 56
13064 ; PWR5-NEXT: subfe 3, 3, 3
13065 ; PWR5-NEXT: subc 5, 4, 5
13066 ; PWR5-NEXT: subfe 4, 4, 4
13069 ; PWR6-LABEL: ult_6_v2i64:
13071 ; PWR6-NEXT: lis 5, 21845
13072 ; PWR6-NEXT: lis 6, 13107
13073 ; PWR6-NEXT: ori 5, 5, 21845
13074 ; PWR6-NEXT: rotldi 8, 4, 63
13075 ; PWR6-NEXT: rotldi 9, 3, 63
13076 ; PWR6-NEXT: rldimi 5, 5, 32, 0
13077 ; PWR6-NEXT: and 8, 8, 5
13078 ; PWR6-NEXT: and 5, 9, 5
13079 ; PWR6-NEXT: ori 6, 6, 13107
13080 ; PWR6-NEXT: sub 3, 3, 5
13081 ; PWR6-NEXT: rldimi 6, 6, 32, 0
13082 ; PWR6-NEXT: sub 4, 4, 8
13083 ; PWR6-NEXT: and 8, 3, 6
13084 ; PWR6-NEXT: rotldi 3, 3, 62
13085 ; PWR6-NEXT: and 3, 3, 6
13086 ; PWR6-NEXT: lis 7, 3855
13087 ; PWR6-NEXT: and 5, 4, 6
13088 ; PWR6-NEXT: rotldi 4, 4, 62
13089 ; PWR6-NEXT: add 3, 8, 3
13090 ; PWR6-NEXT: lis 9, 257
13091 ; PWR6-NEXT: ori 7, 7, 3855
13092 ; PWR6-NEXT: and 4, 4, 6
13093 ; PWR6-NEXT: rldicl 6, 3, 60, 4
13094 ; PWR6-NEXT: ori 9, 9, 257
13095 ; PWR6-NEXT: rldimi 7, 7, 32, 0
13096 ; PWR6-NEXT: add 4, 5, 4
13097 ; PWR6-NEXT: add 3, 3, 6
13098 ; PWR6-NEXT: rldimi 9, 9, 32, 0
13099 ; PWR6-NEXT: rldicl 5, 4, 60, 4
13100 ; PWR6-NEXT: and 3, 3, 7
13101 ; PWR6-NEXT: add 4, 4, 5
13102 ; PWR6-NEXT: mulld 3, 3, 9
13103 ; PWR6-NEXT: and 4, 4, 7
13104 ; PWR6-NEXT: rldicl 3, 3, 8, 56
13105 ; PWR6-NEXT: li 5, 6
13106 ; PWR6-NEXT: mulld 4, 4, 9
13107 ; PWR6-NEXT: subc 6, 3, 5
13108 ; PWR6-NEXT: rldicl 4, 4, 8, 56
13109 ; PWR6-NEXT: subfe 3, 3, 3
13110 ; PWR6-NEXT: subc 5, 4, 5
13111 ; PWR6-NEXT: subfe 4, 4, 4
13114 ; PWR7-LABEL: ult_6_v2i64:
13116 ; PWR7-NEXT: addi 3, 1, -32
13117 ; PWR7-NEXT: li 5, -1
13118 ; PWR7-NEXT: stxvd2x 34, 0, 3
13119 ; PWR7-NEXT: ld 4, -24(1)
13120 ; PWR7-NEXT: ld 3, -32(1)
13121 ; PWR7-NEXT: popcntd 4, 4
13122 ; PWR7-NEXT: popcntd 3, 3
13123 ; PWR7-NEXT: cmpldi 4, 6
13124 ; PWR7-NEXT: li 4, 0
13125 ; PWR7-NEXT: isellt 6, 5, 4
13126 ; PWR7-NEXT: cmpldi 3, 6
13127 ; PWR7-NEXT: isellt 3, 5, 4
13128 ; PWR7-NEXT: std 6, -8(1)
13129 ; PWR7-NEXT: std 3, -16(1)
13130 ; PWR7-NEXT: addi 3, 1, -16
13131 ; PWR7-NEXT: lxvd2x 34, 0, 3
13134 ; PWR8-LABEL: ult_6_v2i64:
13136 ; PWR8-NEXT: addis 3, 2, .LCPI109_0@toc@ha
13137 ; PWR8-NEXT: vpopcntd 2, 2
13138 ; PWR8-NEXT: addi 3, 3, .LCPI109_0@toc@l
13139 ; PWR8-NEXT: lxvd2x 35, 0, 3
13140 ; PWR8-NEXT: vcmpgtud 2, 3, 2
13143 ; PWR9-LABEL: ult_6_v2i64:
13145 ; PWR9-NEXT: addis 3, 2, .LCPI109_0@toc@ha
13146 ; PWR9-NEXT: vpopcntd 2, 2
13147 ; PWR9-NEXT: addi 3, 3, .LCPI109_0@toc@l
13148 ; PWR9-NEXT: lxv 35, 0(3)
13149 ; PWR9-NEXT: vcmpgtud 2, 3, 2
13151 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
13152 %3 = icmp ult <2 x i64> %2, <i64 6, i64 6>
13153 %4 = sext <2 x i1> %3 to <2 x i64>
13157 define <2 x i64> @ugt_6_v2i64(<2 x i64> %0) {
13158 ; PWR5-LABEL: ugt_6_v2i64:
13160 ; PWR5-NEXT: lis 5, 21845
13161 ; PWR5-NEXT: lis 6, 13107
13162 ; PWR5-NEXT: ori 5, 5, 21845
13163 ; PWR5-NEXT: rotldi 8, 4, 63
13164 ; PWR5-NEXT: rotldi 9, 3, 63
13165 ; PWR5-NEXT: rldimi 5, 5, 32, 0
13166 ; PWR5-NEXT: and 8, 8, 5
13167 ; PWR5-NEXT: and 5, 9, 5
13168 ; PWR5-NEXT: ori 6, 6, 13107
13169 ; PWR5-NEXT: sub 3, 3, 5
13170 ; PWR5-NEXT: rldimi 6, 6, 32, 0
13171 ; PWR5-NEXT: sub 4, 4, 8
13172 ; PWR5-NEXT: and 8, 3, 6
13173 ; PWR5-NEXT: rotldi 3, 3, 62
13174 ; PWR5-NEXT: and 3, 3, 6
13175 ; PWR5-NEXT: lis 7, 3855
13176 ; PWR5-NEXT: and 5, 4, 6
13177 ; PWR5-NEXT: rotldi 4, 4, 62
13178 ; PWR5-NEXT: add 3, 8, 3
13179 ; PWR5-NEXT: lis 9, 257
13180 ; PWR5-NEXT: ori 7, 7, 3855
13181 ; PWR5-NEXT: and 4, 4, 6
13182 ; PWR5-NEXT: rldicl 6, 3, 60, 4
13183 ; PWR5-NEXT: ori 9, 9, 257
13184 ; PWR5-NEXT: rldimi 7, 7, 32, 0
13185 ; PWR5-NEXT: add 4, 5, 4
13186 ; PWR5-NEXT: add 3, 3, 6
13187 ; PWR5-NEXT: rldimi 9, 9, 32, 0
13188 ; PWR5-NEXT: rldicl 5, 4, 60, 4
13189 ; PWR5-NEXT: and 3, 3, 7
13190 ; PWR5-NEXT: add 4, 4, 5
13191 ; PWR5-NEXT: mulld 3, 3, 9
13192 ; PWR5-NEXT: and 4, 4, 7
13193 ; PWR5-NEXT: rldicl 3, 3, 8, 56
13194 ; PWR5-NEXT: mulld 4, 4, 9
13195 ; PWR5-NEXT: li 5, 6
13196 ; PWR5-NEXT: subfic 3, 3, 6
13197 ; PWR5-NEXT: rldicl 4, 4, 8, 56
13198 ; PWR5-NEXT: subfe 3, 5, 5
13199 ; PWR5-NEXT: subfic 4, 4, 6
13200 ; PWR5-NEXT: subfe 4, 5, 5
13203 ; PWR6-LABEL: ugt_6_v2i64:
13205 ; PWR6-NEXT: lis 5, 21845
13206 ; PWR6-NEXT: lis 6, 13107
13207 ; PWR6-NEXT: ori 5, 5, 21845
13208 ; PWR6-NEXT: rotldi 8, 4, 63
13209 ; PWR6-NEXT: rotldi 9, 3, 63
13210 ; PWR6-NEXT: rldimi 5, 5, 32, 0
13211 ; PWR6-NEXT: and 8, 8, 5
13212 ; PWR6-NEXT: and 5, 9, 5
13213 ; PWR6-NEXT: ori 6, 6, 13107
13214 ; PWR6-NEXT: sub 3, 3, 5
13215 ; PWR6-NEXT: rldimi 6, 6, 32, 0
13216 ; PWR6-NEXT: sub 4, 4, 8
13217 ; PWR6-NEXT: and 8, 3, 6
13218 ; PWR6-NEXT: rotldi 3, 3, 62
13219 ; PWR6-NEXT: and 3, 3, 6
13220 ; PWR6-NEXT: lis 7, 3855
13221 ; PWR6-NEXT: and 5, 4, 6
13222 ; PWR6-NEXT: rotldi 4, 4, 62
13223 ; PWR6-NEXT: add 3, 8, 3
13224 ; PWR6-NEXT: lis 9, 257
13225 ; PWR6-NEXT: ori 7, 7, 3855
13226 ; PWR6-NEXT: and 4, 4, 6
13227 ; PWR6-NEXT: rldicl 6, 3, 60, 4
13228 ; PWR6-NEXT: ori 9, 9, 257
13229 ; PWR6-NEXT: rldimi 7, 7, 32, 0
13230 ; PWR6-NEXT: add 4, 5, 4
13231 ; PWR6-NEXT: add 3, 3, 6
13232 ; PWR6-NEXT: rldimi 9, 9, 32, 0
13233 ; PWR6-NEXT: rldicl 5, 4, 60, 4
13234 ; PWR6-NEXT: and 3, 3, 7
13235 ; PWR6-NEXT: add 4, 4, 5
13236 ; PWR6-NEXT: mulld 3, 3, 9
13237 ; PWR6-NEXT: and 4, 4, 7
13238 ; PWR6-NEXT: rldicl 3, 3, 8, 56
13239 ; PWR6-NEXT: mulld 4, 4, 9
13240 ; PWR6-NEXT: li 5, 6
13241 ; PWR6-NEXT: subfic 3, 3, 6
13242 ; PWR6-NEXT: rldicl 4, 4, 8, 56
13243 ; PWR6-NEXT: subfe 3, 5, 5
13244 ; PWR6-NEXT: subfic 4, 4, 6
13245 ; PWR6-NEXT: subfe 4, 5, 5
13248 ; PWR7-LABEL: ugt_6_v2i64:
13250 ; PWR7-NEXT: addi 3, 1, -32
13251 ; PWR7-NEXT: li 5, -1
13252 ; PWR7-NEXT: stxvd2x 34, 0, 3
13253 ; PWR7-NEXT: ld 4, -24(1)
13254 ; PWR7-NEXT: ld 3, -32(1)
13255 ; PWR7-NEXT: popcntd 4, 4
13256 ; PWR7-NEXT: popcntd 3, 3
13257 ; PWR7-NEXT: cmpldi 4, 6
13258 ; PWR7-NEXT: li 4, 0
13259 ; PWR7-NEXT: iselgt 6, 5, 4
13260 ; PWR7-NEXT: cmpldi 3, 6
13261 ; PWR7-NEXT: iselgt 3, 5, 4
13262 ; PWR7-NEXT: std 6, -8(1)
13263 ; PWR7-NEXT: std 3, -16(1)
13264 ; PWR7-NEXT: addi 3, 1, -16
13265 ; PWR7-NEXT: lxvd2x 34, 0, 3
13268 ; PWR8-LABEL: ugt_6_v2i64:
13270 ; PWR8-NEXT: addis 3, 2, .LCPI110_0@toc@ha
13271 ; PWR8-NEXT: vpopcntd 2, 2
13272 ; PWR8-NEXT: addi 3, 3, .LCPI110_0@toc@l
13273 ; PWR8-NEXT: lxvd2x 35, 0, 3
13274 ; PWR8-NEXT: vcmpgtud 2, 2, 3
13277 ; PWR9-LABEL: ugt_6_v2i64:
13279 ; PWR9-NEXT: addis 3, 2, .LCPI110_0@toc@ha
13280 ; PWR9-NEXT: vpopcntd 2, 2
13281 ; PWR9-NEXT: addi 3, 3, .LCPI110_0@toc@l
13282 ; PWR9-NEXT: lxv 35, 0(3)
13283 ; PWR9-NEXT: vcmpgtud 2, 2, 3
13285 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
13286 %3 = icmp ugt <2 x i64> %2, <i64 6, i64 6>
13287 %4 = sext <2 x i1> %3 to <2 x i64>
13291 define <2 x i64> @ult_7_v2i64(<2 x i64> %0) {
13292 ; PWR5-LABEL: ult_7_v2i64:
13294 ; PWR5-NEXT: lis 5, 21845
13295 ; PWR5-NEXT: lis 6, 13107
13296 ; PWR5-NEXT: ori 5, 5, 21845
13297 ; PWR5-NEXT: rotldi 8, 4, 63
13298 ; PWR5-NEXT: rotldi 9, 3, 63
13299 ; PWR5-NEXT: rldimi 5, 5, 32, 0
13300 ; PWR5-NEXT: and 8, 8, 5
13301 ; PWR5-NEXT: and 5, 9, 5
13302 ; PWR5-NEXT: ori 6, 6, 13107
13303 ; PWR5-NEXT: sub 3, 3, 5
13304 ; PWR5-NEXT: rldimi 6, 6, 32, 0
13305 ; PWR5-NEXT: sub 4, 4, 8
13306 ; PWR5-NEXT: and 8, 3, 6
13307 ; PWR5-NEXT: rotldi 3, 3, 62
13308 ; PWR5-NEXT: and 3, 3, 6
13309 ; PWR5-NEXT: lis 7, 3855
13310 ; PWR5-NEXT: and 5, 4, 6
13311 ; PWR5-NEXT: rotldi 4, 4, 62
13312 ; PWR5-NEXT: add 3, 8, 3
13313 ; PWR5-NEXT: lis 9, 257
13314 ; PWR5-NEXT: ori 7, 7, 3855
13315 ; PWR5-NEXT: and 4, 4, 6
13316 ; PWR5-NEXT: rldicl 6, 3, 60, 4
13317 ; PWR5-NEXT: ori 9, 9, 257
13318 ; PWR5-NEXT: rldimi 7, 7, 32, 0
13319 ; PWR5-NEXT: add 4, 5, 4
13320 ; PWR5-NEXT: add 3, 3, 6
13321 ; PWR5-NEXT: rldimi 9, 9, 32, 0
13322 ; PWR5-NEXT: rldicl 5, 4, 60, 4
13323 ; PWR5-NEXT: and 3, 3, 7
13324 ; PWR5-NEXT: add 4, 4, 5
13325 ; PWR5-NEXT: mulld 3, 3, 9
13326 ; PWR5-NEXT: and 4, 4, 7
13327 ; PWR5-NEXT: rldicl 3, 3, 8, 56
13328 ; PWR5-NEXT: li 5, 7
13329 ; PWR5-NEXT: mulld 4, 4, 9
13330 ; PWR5-NEXT: subc 6, 3, 5
13331 ; PWR5-NEXT: rldicl 4, 4, 8, 56
13332 ; PWR5-NEXT: subfe 3, 3, 3
13333 ; PWR5-NEXT: subc 5, 4, 5
13334 ; PWR5-NEXT: subfe 4, 4, 4
13337 ; PWR6-LABEL: ult_7_v2i64:
13339 ; PWR6-NEXT: lis 5, 21845
13340 ; PWR6-NEXT: lis 6, 13107
13341 ; PWR6-NEXT: ori 5, 5, 21845
13342 ; PWR6-NEXT: rotldi 8, 4, 63
13343 ; PWR6-NEXT: rotldi 9, 3, 63
13344 ; PWR6-NEXT: rldimi 5, 5, 32, 0
13345 ; PWR6-NEXT: and 8, 8, 5
13346 ; PWR6-NEXT: and 5, 9, 5
13347 ; PWR6-NEXT: ori 6, 6, 13107
13348 ; PWR6-NEXT: sub 3, 3, 5
13349 ; PWR6-NEXT: rldimi 6, 6, 32, 0
13350 ; PWR6-NEXT: sub 4, 4, 8
13351 ; PWR6-NEXT: and 8, 3, 6
13352 ; PWR6-NEXT: rotldi 3, 3, 62
13353 ; PWR6-NEXT: and 3, 3, 6
13354 ; PWR6-NEXT: lis 7, 3855
13355 ; PWR6-NEXT: and 5, 4, 6
13356 ; PWR6-NEXT: rotldi 4, 4, 62
13357 ; PWR6-NEXT: add 3, 8, 3
13358 ; PWR6-NEXT: lis 9, 257
13359 ; PWR6-NEXT: ori 7, 7, 3855
13360 ; PWR6-NEXT: and 4, 4, 6
13361 ; PWR6-NEXT: rldicl 6, 3, 60, 4
13362 ; PWR6-NEXT: ori 9, 9, 257
13363 ; PWR6-NEXT: rldimi 7, 7, 32, 0
13364 ; PWR6-NEXT: add 4, 5, 4
13365 ; PWR6-NEXT: add 3, 3, 6
13366 ; PWR6-NEXT: rldimi 9, 9, 32, 0
13367 ; PWR6-NEXT: rldicl 5, 4, 60, 4
13368 ; PWR6-NEXT: and 3, 3, 7
13369 ; PWR6-NEXT: add 4, 4, 5
13370 ; PWR6-NEXT: mulld 3, 3, 9
13371 ; PWR6-NEXT: and 4, 4, 7
13372 ; PWR6-NEXT: rldicl 3, 3, 8, 56
13373 ; PWR6-NEXT: li 5, 7
13374 ; PWR6-NEXT: mulld 4, 4, 9
13375 ; PWR6-NEXT: subc 6, 3, 5
13376 ; PWR6-NEXT: rldicl 4, 4, 8, 56
13377 ; PWR6-NEXT: subfe 3, 3, 3
13378 ; PWR6-NEXT: subc 5, 4, 5
13379 ; PWR6-NEXT: subfe 4, 4, 4
13382 ; PWR7-LABEL: ult_7_v2i64:
13384 ; PWR7-NEXT: addi 3, 1, -32
13385 ; PWR7-NEXT: li 5, -1
13386 ; PWR7-NEXT: stxvd2x 34, 0, 3
13387 ; PWR7-NEXT: ld 4, -24(1)
13388 ; PWR7-NEXT: ld 3, -32(1)
13389 ; PWR7-NEXT: popcntd 4, 4
13390 ; PWR7-NEXT: popcntd 3, 3
13391 ; PWR7-NEXT: cmpldi 4, 7
13392 ; PWR7-NEXT: li 4, 0
13393 ; PWR7-NEXT: isellt 6, 5, 4
13394 ; PWR7-NEXT: cmpldi 3, 7
13395 ; PWR7-NEXT: isellt 3, 5, 4
13396 ; PWR7-NEXT: std 6, -8(1)
13397 ; PWR7-NEXT: std 3, -16(1)
13398 ; PWR7-NEXT: addi 3, 1, -16
13399 ; PWR7-NEXT: lxvd2x 34, 0, 3
13402 ; PWR8-LABEL: ult_7_v2i64:
13404 ; PWR8-NEXT: addis 3, 2, .LCPI111_0@toc@ha
13405 ; PWR8-NEXT: vpopcntd 2, 2
13406 ; PWR8-NEXT: addi 3, 3, .LCPI111_0@toc@l
13407 ; PWR8-NEXT: lxvd2x 35, 0, 3
13408 ; PWR8-NEXT: vcmpgtud 2, 3, 2
13411 ; PWR9-LABEL: ult_7_v2i64:
13413 ; PWR9-NEXT: addis 3, 2, .LCPI111_0@toc@ha
13414 ; PWR9-NEXT: vpopcntd 2, 2
13415 ; PWR9-NEXT: addi 3, 3, .LCPI111_0@toc@l
13416 ; PWR9-NEXT: lxv 35, 0(3)
13417 ; PWR9-NEXT: vcmpgtud 2, 3, 2
13419 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
13420 %3 = icmp ult <2 x i64> %2, <i64 7, i64 7>
13421 %4 = sext <2 x i1> %3 to <2 x i64>
13425 define <2 x i64> @ugt_7_v2i64(<2 x i64> %0) {
13426 ; PWR5-LABEL: ugt_7_v2i64:
13428 ; PWR5-NEXT: lis 5, 21845
13429 ; PWR5-NEXT: lis 6, 13107
13430 ; PWR5-NEXT: ori 5, 5, 21845
13431 ; PWR5-NEXT: rotldi 8, 4, 63
13432 ; PWR5-NEXT: rotldi 9, 3, 63
13433 ; PWR5-NEXT: rldimi 5, 5, 32, 0
13434 ; PWR5-NEXT: and 8, 8, 5
13435 ; PWR5-NEXT: and 5, 9, 5
13436 ; PWR5-NEXT: ori 6, 6, 13107
13437 ; PWR5-NEXT: sub 3, 3, 5
13438 ; PWR5-NEXT: rldimi 6, 6, 32, 0
13439 ; PWR5-NEXT: sub 4, 4, 8
13440 ; PWR5-NEXT: and 8, 3, 6
13441 ; PWR5-NEXT: rotldi 3, 3, 62
13442 ; PWR5-NEXT: and 3, 3, 6
13443 ; PWR5-NEXT: lis 7, 3855
13444 ; PWR5-NEXT: and 5, 4, 6
13445 ; PWR5-NEXT: rotldi 4, 4, 62
13446 ; PWR5-NEXT: add 3, 8, 3
13447 ; PWR5-NEXT: lis 9, 257
13448 ; PWR5-NEXT: ori 7, 7, 3855
13449 ; PWR5-NEXT: and 4, 4, 6
13450 ; PWR5-NEXT: rldicl 6, 3, 60, 4
13451 ; PWR5-NEXT: ori 9, 9, 257
13452 ; PWR5-NEXT: rldimi 7, 7, 32, 0
13453 ; PWR5-NEXT: add 4, 5, 4
13454 ; PWR5-NEXT: add 3, 3, 6
13455 ; PWR5-NEXT: rldimi 9, 9, 32, 0
13456 ; PWR5-NEXT: rldicl 5, 4, 60, 4
13457 ; PWR5-NEXT: and 3, 3, 7
13458 ; PWR5-NEXT: add 4, 4, 5
13459 ; PWR5-NEXT: mulld 3, 3, 9
13460 ; PWR5-NEXT: and 4, 4, 7
13461 ; PWR5-NEXT: rldicl 3, 3, 8, 56
13462 ; PWR5-NEXT: mulld 4, 4, 9
13463 ; PWR5-NEXT: li 5, 7
13464 ; PWR5-NEXT: subfic 3, 3, 7
13465 ; PWR5-NEXT: rldicl 4, 4, 8, 56
13466 ; PWR5-NEXT: subfe 3, 5, 5
13467 ; PWR5-NEXT: subfic 4, 4, 7
13468 ; PWR5-NEXT: subfe 4, 5, 5
13471 ; PWR6-LABEL: ugt_7_v2i64:
13473 ; PWR6-NEXT: lis 5, 21845
13474 ; PWR6-NEXT: lis 6, 13107
13475 ; PWR6-NEXT: ori 5, 5, 21845
13476 ; PWR6-NEXT: rotldi 8, 4, 63
13477 ; PWR6-NEXT: rotldi 9, 3, 63
13478 ; PWR6-NEXT: rldimi 5, 5, 32, 0
13479 ; PWR6-NEXT: and 8, 8, 5
13480 ; PWR6-NEXT: and 5, 9, 5
13481 ; PWR6-NEXT: ori 6, 6, 13107
13482 ; PWR6-NEXT: sub 3, 3, 5
13483 ; PWR6-NEXT: rldimi 6, 6, 32, 0
13484 ; PWR6-NEXT: sub 4, 4, 8
13485 ; PWR6-NEXT: and 8, 3, 6
13486 ; PWR6-NEXT: rotldi 3, 3, 62
13487 ; PWR6-NEXT: and 3, 3, 6
13488 ; PWR6-NEXT: lis 7, 3855
13489 ; PWR6-NEXT: and 5, 4, 6
13490 ; PWR6-NEXT: rotldi 4, 4, 62
13491 ; PWR6-NEXT: add 3, 8, 3
13492 ; PWR6-NEXT: lis 9, 257
13493 ; PWR6-NEXT: ori 7, 7, 3855
13494 ; PWR6-NEXT: and 4, 4, 6
13495 ; PWR6-NEXT: rldicl 6, 3, 60, 4
13496 ; PWR6-NEXT: ori 9, 9, 257
13497 ; PWR6-NEXT: rldimi 7, 7, 32, 0
13498 ; PWR6-NEXT: add 4, 5, 4
13499 ; PWR6-NEXT: add 3, 3, 6
13500 ; PWR6-NEXT: rldimi 9, 9, 32, 0
13501 ; PWR6-NEXT: rldicl 5, 4, 60, 4
13502 ; PWR6-NEXT: and 3, 3, 7
13503 ; PWR6-NEXT: add 4, 4, 5
13504 ; PWR6-NEXT: mulld 3, 3, 9
13505 ; PWR6-NEXT: and 4, 4, 7
13506 ; PWR6-NEXT: rldicl 3, 3, 8, 56
13507 ; PWR6-NEXT: mulld 4, 4, 9
13508 ; PWR6-NEXT: li 5, 7
13509 ; PWR6-NEXT: subfic 3, 3, 7
13510 ; PWR6-NEXT: rldicl 4, 4, 8, 56
13511 ; PWR6-NEXT: subfe 3, 5, 5
13512 ; PWR6-NEXT: subfic 4, 4, 7
13513 ; PWR6-NEXT: subfe 4, 5, 5
13516 ; PWR7-LABEL: ugt_7_v2i64:
13518 ; PWR7-NEXT: addi 3, 1, -32
13519 ; PWR7-NEXT: li 5, -1
13520 ; PWR7-NEXT: stxvd2x 34, 0, 3
13521 ; PWR7-NEXT: ld 4, -24(1)
13522 ; PWR7-NEXT: ld 3, -32(1)
13523 ; PWR7-NEXT: popcntd 4, 4
13524 ; PWR7-NEXT: popcntd 3, 3
13525 ; PWR7-NEXT: cmpldi 4, 7
13526 ; PWR7-NEXT: li 4, 0
13527 ; PWR7-NEXT: iselgt 6, 5, 4
13528 ; PWR7-NEXT: cmpldi 3, 7
13529 ; PWR7-NEXT: iselgt 3, 5, 4
13530 ; PWR7-NEXT: std 6, -8(1)
13531 ; PWR7-NEXT: std 3, -16(1)
13532 ; PWR7-NEXT: addi 3, 1, -16
13533 ; PWR7-NEXT: lxvd2x 34, 0, 3
13536 ; PWR8-LABEL: ugt_7_v2i64:
13538 ; PWR8-NEXT: addis 3, 2, .LCPI112_0@toc@ha
13539 ; PWR8-NEXT: vpopcntd 2, 2
13540 ; PWR8-NEXT: addi 3, 3, .LCPI112_0@toc@l
13541 ; PWR8-NEXT: lxvd2x 35, 0, 3
13542 ; PWR8-NEXT: vcmpgtud 2, 2, 3
13545 ; PWR9-LABEL: ugt_7_v2i64:
13547 ; PWR9-NEXT: addis 3, 2, .LCPI112_0@toc@ha
13548 ; PWR9-NEXT: vpopcntd 2, 2
13549 ; PWR9-NEXT: addi 3, 3, .LCPI112_0@toc@l
13550 ; PWR9-NEXT: lxv 35, 0(3)
13551 ; PWR9-NEXT: vcmpgtud 2, 2, 3
13553 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
13554 %3 = icmp ugt <2 x i64> %2, <i64 7, i64 7>
13555 %4 = sext <2 x i1> %3 to <2 x i64>
13559 define <2 x i64> @ult_8_v2i64(<2 x i64> %0) {
13560 ; PWR5-LABEL: ult_8_v2i64:
13562 ; PWR5-NEXT: lis 5, 21845
13563 ; PWR5-NEXT: lis 6, 13107
13564 ; PWR5-NEXT: ori 5, 5, 21845
13565 ; PWR5-NEXT: rotldi 8, 4, 63
13566 ; PWR5-NEXT: rotldi 9, 3, 63
13567 ; PWR5-NEXT: rldimi 5, 5, 32, 0
13568 ; PWR5-NEXT: and 8, 8, 5
13569 ; PWR5-NEXT: and 5, 9, 5
13570 ; PWR5-NEXT: ori 6, 6, 13107
13571 ; PWR5-NEXT: sub 3, 3, 5
13572 ; PWR5-NEXT: rldimi 6, 6, 32, 0
13573 ; PWR5-NEXT: sub 4, 4, 8
13574 ; PWR5-NEXT: and 8, 3, 6
13575 ; PWR5-NEXT: rotldi 3, 3, 62
13576 ; PWR5-NEXT: and 3, 3, 6
13577 ; PWR5-NEXT: lis 7, 3855
13578 ; PWR5-NEXT: and 5, 4, 6
13579 ; PWR5-NEXT: rotldi 4, 4, 62
13580 ; PWR5-NEXT: add 3, 8, 3
13581 ; PWR5-NEXT: lis 9, 257
13582 ; PWR5-NEXT: ori 7, 7, 3855
13583 ; PWR5-NEXT: and 4, 4, 6
13584 ; PWR5-NEXT: rldicl 6, 3, 60, 4
13585 ; PWR5-NEXT: ori 9, 9, 257
13586 ; PWR5-NEXT: rldimi 7, 7, 32, 0
13587 ; PWR5-NEXT: add 4, 5, 4
13588 ; PWR5-NEXT: add 3, 3, 6
13589 ; PWR5-NEXT: rldimi 9, 9, 32, 0
13590 ; PWR5-NEXT: rldicl 5, 4, 60, 4
13591 ; PWR5-NEXT: and 3, 3, 7
13592 ; PWR5-NEXT: add 4, 4, 5
13593 ; PWR5-NEXT: mulld 3, 3, 9
13594 ; PWR5-NEXT: and 4, 4, 7
13595 ; PWR5-NEXT: rldicl 3, 3, 8, 56
13596 ; PWR5-NEXT: li 5, 8
13597 ; PWR5-NEXT: mulld 4, 4, 9
13598 ; PWR5-NEXT: subc 6, 3, 5
13599 ; PWR5-NEXT: rldicl 4, 4, 8, 56
13600 ; PWR5-NEXT: subfe 3, 3, 3
13601 ; PWR5-NEXT: subc 5, 4, 5
13602 ; PWR5-NEXT: subfe 4, 4, 4
13605 ; PWR6-LABEL: ult_8_v2i64:
13607 ; PWR6-NEXT: lis 5, 21845
13608 ; PWR6-NEXT: lis 6, 13107
13609 ; PWR6-NEXT: ori 5, 5, 21845
13610 ; PWR6-NEXT: rotldi 8, 4, 63
13611 ; PWR6-NEXT: rotldi 9, 3, 63
13612 ; PWR6-NEXT: rldimi 5, 5, 32, 0
13613 ; PWR6-NEXT: and 8, 8, 5
13614 ; PWR6-NEXT: and 5, 9, 5
13615 ; PWR6-NEXT: ori 6, 6, 13107
13616 ; PWR6-NEXT: sub 3, 3, 5
13617 ; PWR6-NEXT: rldimi 6, 6, 32, 0
13618 ; PWR6-NEXT: sub 4, 4, 8
13619 ; PWR6-NEXT: and 8, 3, 6
13620 ; PWR6-NEXT: rotldi 3, 3, 62
13621 ; PWR6-NEXT: and 3, 3, 6
13622 ; PWR6-NEXT: lis 7, 3855
13623 ; PWR6-NEXT: and 5, 4, 6
13624 ; PWR6-NEXT: rotldi 4, 4, 62
13625 ; PWR6-NEXT: add 3, 8, 3
13626 ; PWR6-NEXT: lis 9, 257
13627 ; PWR6-NEXT: ori 7, 7, 3855
13628 ; PWR6-NEXT: and 4, 4, 6
13629 ; PWR6-NEXT: rldicl 6, 3, 60, 4
13630 ; PWR6-NEXT: ori 9, 9, 257
13631 ; PWR6-NEXT: rldimi 7, 7, 32, 0
13632 ; PWR6-NEXT: add 4, 5, 4
13633 ; PWR6-NEXT: add 3, 3, 6
13634 ; PWR6-NEXT: rldimi 9, 9, 32, 0
13635 ; PWR6-NEXT: rldicl 5, 4, 60, 4
13636 ; PWR6-NEXT: and 3, 3, 7
13637 ; PWR6-NEXT: add 4, 4, 5
13638 ; PWR6-NEXT: mulld 3, 3, 9
13639 ; PWR6-NEXT: and 4, 4, 7
13640 ; PWR6-NEXT: rldicl 3, 3, 8, 56
13641 ; PWR6-NEXT: li 5, 8
13642 ; PWR6-NEXT: mulld 4, 4, 9
13643 ; PWR6-NEXT: subc 6, 3, 5
13644 ; PWR6-NEXT: rldicl 4, 4, 8, 56
13645 ; PWR6-NEXT: subfe 3, 3, 3
13646 ; PWR6-NEXT: subc 5, 4, 5
13647 ; PWR6-NEXT: subfe 4, 4, 4
13650 ; PWR7-LABEL: ult_8_v2i64:
13652 ; PWR7-NEXT: addi 3, 1, -32
13653 ; PWR7-NEXT: li 5, -1
13654 ; PWR7-NEXT: stxvd2x 34, 0, 3
13655 ; PWR7-NEXT: ld 4, -24(1)
13656 ; PWR7-NEXT: ld 3, -32(1)
13657 ; PWR7-NEXT: popcntd 4, 4
13658 ; PWR7-NEXT: popcntd 3, 3
13659 ; PWR7-NEXT: cmpldi 4, 8
13660 ; PWR7-NEXT: li 4, 0
13661 ; PWR7-NEXT: isellt 6, 5, 4
13662 ; PWR7-NEXT: cmpldi 3, 8
13663 ; PWR7-NEXT: isellt 3, 5, 4
13664 ; PWR7-NEXT: std 6, -8(1)
13665 ; PWR7-NEXT: std 3, -16(1)
13666 ; PWR7-NEXT: addi 3, 1, -16
13667 ; PWR7-NEXT: lxvd2x 34, 0, 3
13670 ; PWR8-LABEL: ult_8_v2i64:
13672 ; PWR8-NEXT: addis 3, 2, .LCPI113_0@toc@ha
13673 ; PWR8-NEXT: vpopcntd 2, 2
13674 ; PWR8-NEXT: addi 3, 3, .LCPI113_0@toc@l
13675 ; PWR8-NEXT: lxvd2x 35, 0, 3
13676 ; PWR8-NEXT: vcmpgtud 2, 3, 2
13679 ; PWR9-LABEL: ult_8_v2i64:
13681 ; PWR9-NEXT: addis 3, 2, .LCPI113_0@toc@ha
13682 ; PWR9-NEXT: vpopcntd 2, 2
13683 ; PWR9-NEXT: addi 3, 3, .LCPI113_0@toc@l
13684 ; PWR9-NEXT: lxv 35, 0(3)
13685 ; PWR9-NEXT: vcmpgtud 2, 3, 2
13687 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
13688 %3 = icmp ult <2 x i64> %2, <i64 8, i64 8>
13689 %4 = sext <2 x i1> %3 to <2 x i64>
13693 define <2 x i64> @ugt_8_v2i64(<2 x i64> %0) {
13694 ; PWR5-LABEL: ugt_8_v2i64:
13696 ; PWR5-NEXT: lis 5, 21845
13697 ; PWR5-NEXT: lis 6, 13107
13698 ; PWR5-NEXT: ori 5, 5, 21845
13699 ; PWR5-NEXT: rotldi 8, 4, 63
13700 ; PWR5-NEXT: rotldi 9, 3, 63
13701 ; PWR5-NEXT: rldimi 5, 5, 32, 0
13702 ; PWR5-NEXT: and 8, 8, 5
13703 ; PWR5-NEXT: and 5, 9, 5
13704 ; PWR5-NEXT: ori 6, 6, 13107
13705 ; PWR5-NEXT: sub 3, 3, 5
13706 ; PWR5-NEXT: rldimi 6, 6, 32, 0
13707 ; PWR5-NEXT: sub 4, 4, 8
13708 ; PWR5-NEXT: and 8, 3, 6
13709 ; PWR5-NEXT: rotldi 3, 3, 62
13710 ; PWR5-NEXT: and 3, 3, 6
13711 ; PWR5-NEXT: lis 7, 3855
13712 ; PWR5-NEXT: and 5, 4, 6
13713 ; PWR5-NEXT: rotldi 4, 4, 62
13714 ; PWR5-NEXT: add 3, 8, 3
13715 ; PWR5-NEXT: lis 9, 257
13716 ; PWR5-NEXT: ori 7, 7, 3855
13717 ; PWR5-NEXT: and 4, 4, 6
13718 ; PWR5-NEXT: rldicl 6, 3, 60, 4
13719 ; PWR5-NEXT: ori 9, 9, 257
13720 ; PWR5-NEXT: rldimi 7, 7, 32, 0
13721 ; PWR5-NEXT: add 4, 5, 4
13722 ; PWR5-NEXT: add 3, 3, 6
13723 ; PWR5-NEXT: rldimi 9, 9, 32, 0
13724 ; PWR5-NEXT: rldicl 5, 4, 60, 4
13725 ; PWR5-NEXT: and 3, 3, 7
13726 ; PWR5-NEXT: add 4, 4, 5
13727 ; PWR5-NEXT: mulld 3, 3, 9
13728 ; PWR5-NEXT: and 4, 4, 7
13729 ; PWR5-NEXT: rldicl 3, 3, 8, 56
13730 ; PWR5-NEXT: mulld 4, 4, 9
13731 ; PWR5-NEXT: li 5, 8
13732 ; PWR5-NEXT: subfic 3, 3, 8
13733 ; PWR5-NEXT: rldicl 4, 4, 8, 56
13734 ; PWR5-NEXT: subfe 3, 5, 5
13735 ; PWR5-NEXT: subfic 4, 4, 8
13736 ; PWR5-NEXT: subfe 4, 5, 5
13739 ; PWR6-LABEL: ugt_8_v2i64:
13741 ; PWR6-NEXT: lis 5, 21845
13742 ; PWR6-NEXT: lis 6, 13107
13743 ; PWR6-NEXT: ori 5, 5, 21845
13744 ; PWR6-NEXT: rotldi 8, 4, 63
13745 ; PWR6-NEXT: rotldi 9, 3, 63
13746 ; PWR6-NEXT: rldimi 5, 5, 32, 0
13747 ; PWR6-NEXT: and 8, 8, 5
13748 ; PWR6-NEXT: and 5, 9, 5
13749 ; PWR6-NEXT: ori 6, 6, 13107
13750 ; PWR6-NEXT: sub 3, 3, 5
13751 ; PWR6-NEXT: rldimi 6, 6, 32, 0
13752 ; PWR6-NEXT: sub 4, 4, 8
13753 ; PWR6-NEXT: and 8, 3, 6
13754 ; PWR6-NEXT: rotldi 3, 3, 62
13755 ; PWR6-NEXT: and 3, 3, 6
13756 ; PWR6-NEXT: lis 7, 3855
13757 ; PWR6-NEXT: and 5, 4, 6
13758 ; PWR6-NEXT: rotldi 4, 4, 62
13759 ; PWR6-NEXT: add 3, 8, 3
13760 ; PWR6-NEXT: lis 9, 257
13761 ; PWR6-NEXT: ori 7, 7, 3855
13762 ; PWR6-NEXT: and 4, 4, 6
13763 ; PWR6-NEXT: rldicl 6, 3, 60, 4
13764 ; PWR6-NEXT: ori 9, 9, 257
13765 ; PWR6-NEXT: rldimi 7, 7, 32, 0
13766 ; PWR6-NEXT: add 4, 5, 4
13767 ; PWR6-NEXT: add 3, 3, 6
13768 ; PWR6-NEXT: rldimi 9, 9, 32, 0
13769 ; PWR6-NEXT: rldicl 5, 4, 60, 4
13770 ; PWR6-NEXT: and 3, 3, 7
13771 ; PWR6-NEXT: add 4, 4, 5
13772 ; PWR6-NEXT: mulld 3, 3, 9
13773 ; PWR6-NEXT: and 4, 4, 7
13774 ; PWR6-NEXT: rldicl 3, 3, 8, 56
13775 ; PWR6-NEXT: mulld 4, 4, 9
13776 ; PWR6-NEXT: li 5, 8
13777 ; PWR6-NEXT: subfic 3, 3, 8
13778 ; PWR6-NEXT: rldicl 4, 4, 8, 56
13779 ; PWR6-NEXT: subfe 3, 5, 5
13780 ; PWR6-NEXT: subfic 4, 4, 8
13781 ; PWR6-NEXT: subfe 4, 5, 5
13784 ; PWR7-LABEL: ugt_8_v2i64:
13786 ; PWR7-NEXT: addi 3, 1, -32
13787 ; PWR7-NEXT: li 5, -1
13788 ; PWR7-NEXT: stxvd2x 34, 0, 3
13789 ; PWR7-NEXT: ld 4, -24(1)
13790 ; PWR7-NEXT: ld 3, -32(1)
13791 ; PWR7-NEXT: popcntd 4, 4
13792 ; PWR7-NEXT: popcntd 3, 3
13793 ; PWR7-NEXT: cmpldi 4, 8
13794 ; PWR7-NEXT: li 4, 0
13795 ; PWR7-NEXT: iselgt 6, 5, 4
13796 ; PWR7-NEXT: cmpldi 3, 8
13797 ; PWR7-NEXT: iselgt 3, 5, 4
13798 ; PWR7-NEXT: std 6, -8(1)
13799 ; PWR7-NEXT: std 3, -16(1)
13800 ; PWR7-NEXT: addi 3, 1, -16
13801 ; PWR7-NEXT: lxvd2x 34, 0, 3
13804 ; PWR8-LABEL: ugt_8_v2i64:
13806 ; PWR8-NEXT: addis 3, 2, .LCPI114_0@toc@ha
13807 ; PWR8-NEXT: vpopcntd 2, 2
13808 ; PWR8-NEXT: addi 3, 3, .LCPI114_0@toc@l
13809 ; PWR8-NEXT: lxvd2x 35, 0, 3
13810 ; PWR8-NEXT: vcmpgtud 2, 2, 3
13813 ; PWR9-LABEL: ugt_8_v2i64:
13815 ; PWR9-NEXT: addis 3, 2, .LCPI114_0@toc@ha
13816 ; PWR9-NEXT: vpopcntd 2, 2
13817 ; PWR9-NEXT: addi 3, 3, .LCPI114_0@toc@l
13818 ; PWR9-NEXT: lxv 35, 0(3)
13819 ; PWR9-NEXT: vcmpgtud 2, 2, 3
13821 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
13822 %3 = icmp ugt <2 x i64> %2, <i64 8, i64 8>
13823 %4 = sext <2 x i1> %3 to <2 x i64>
13827 define <2 x i64> @ult_9_v2i64(<2 x i64> %0) {
13828 ; PWR5-LABEL: ult_9_v2i64:
13830 ; PWR5-NEXT: lis 5, 21845
13831 ; PWR5-NEXT: lis 6, 13107
13832 ; PWR5-NEXT: ori 5, 5, 21845
13833 ; PWR5-NEXT: rotldi 8, 4, 63
13834 ; PWR5-NEXT: rotldi 9, 3, 63
13835 ; PWR5-NEXT: rldimi 5, 5, 32, 0
13836 ; PWR5-NEXT: and 8, 8, 5
13837 ; PWR5-NEXT: and 5, 9, 5
13838 ; PWR5-NEXT: ori 6, 6, 13107
13839 ; PWR5-NEXT: sub 3, 3, 5
13840 ; PWR5-NEXT: rldimi 6, 6, 32, 0
13841 ; PWR5-NEXT: sub 4, 4, 8
13842 ; PWR5-NEXT: and 8, 3, 6
13843 ; PWR5-NEXT: rotldi 3, 3, 62
13844 ; PWR5-NEXT: and 3, 3, 6
13845 ; PWR5-NEXT: lis 7, 3855
13846 ; PWR5-NEXT: and 5, 4, 6
13847 ; PWR5-NEXT: rotldi 4, 4, 62
13848 ; PWR5-NEXT: add 3, 8, 3
13849 ; PWR5-NEXT: lis 9, 257
13850 ; PWR5-NEXT: ori 7, 7, 3855
13851 ; PWR5-NEXT: and 4, 4, 6
13852 ; PWR5-NEXT: rldicl 6, 3, 60, 4
13853 ; PWR5-NEXT: ori 9, 9, 257
13854 ; PWR5-NEXT: rldimi 7, 7, 32, 0
13855 ; PWR5-NEXT: add 4, 5, 4
13856 ; PWR5-NEXT: add 3, 3, 6
13857 ; PWR5-NEXT: rldimi 9, 9, 32, 0
13858 ; PWR5-NEXT: rldicl 5, 4, 60, 4
13859 ; PWR5-NEXT: and 3, 3, 7
13860 ; PWR5-NEXT: add 4, 4, 5
13861 ; PWR5-NEXT: mulld 3, 3, 9
13862 ; PWR5-NEXT: and 4, 4, 7
13863 ; PWR5-NEXT: rldicl 3, 3, 8, 56
13864 ; PWR5-NEXT: li 5, 9
13865 ; PWR5-NEXT: mulld 4, 4, 9
13866 ; PWR5-NEXT: subc 6, 3, 5
13867 ; PWR5-NEXT: rldicl 4, 4, 8, 56
13868 ; PWR5-NEXT: subfe 3, 3, 3
13869 ; PWR5-NEXT: subc 5, 4, 5
13870 ; PWR5-NEXT: subfe 4, 4, 4
13873 ; PWR6-LABEL: ult_9_v2i64:
13875 ; PWR6-NEXT: lis 5, 21845
13876 ; PWR6-NEXT: lis 6, 13107
13877 ; PWR6-NEXT: ori 5, 5, 21845
13878 ; PWR6-NEXT: rotldi 8, 4, 63
13879 ; PWR6-NEXT: rotldi 9, 3, 63
13880 ; PWR6-NEXT: rldimi 5, 5, 32, 0
13881 ; PWR6-NEXT: and 8, 8, 5
13882 ; PWR6-NEXT: and 5, 9, 5
13883 ; PWR6-NEXT: ori 6, 6, 13107
13884 ; PWR6-NEXT: sub 3, 3, 5
13885 ; PWR6-NEXT: rldimi 6, 6, 32, 0
13886 ; PWR6-NEXT: sub 4, 4, 8
13887 ; PWR6-NEXT: and 8, 3, 6
13888 ; PWR6-NEXT: rotldi 3, 3, 62
13889 ; PWR6-NEXT: and 3, 3, 6
13890 ; PWR6-NEXT: lis 7, 3855
13891 ; PWR6-NEXT: and 5, 4, 6
13892 ; PWR6-NEXT: rotldi 4, 4, 62
13893 ; PWR6-NEXT: add 3, 8, 3
13894 ; PWR6-NEXT: lis 9, 257
13895 ; PWR6-NEXT: ori 7, 7, 3855
13896 ; PWR6-NEXT: and 4, 4, 6
13897 ; PWR6-NEXT: rldicl 6, 3, 60, 4
13898 ; PWR6-NEXT: ori 9, 9, 257
13899 ; PWR6-NEXT: rldimi 7, 7, 32, 0
13900 ; PWR6-NEXT: add 4, 5, 4
13901 ; PWR6-NEXT: add 3, 3, 6
13902 ; PWR6-NEXT: rldimi 9, 9, 32, 0
13903 ; PWR6-NEXT: rldicl 5, 4, 60, 4
13904 ; PWR6-NEXT: and 3, 3, 7
13905 ; PWR6-NEXT: add 4, 4, 5
13906 ; PWR6-NEXT: mulld 3, 3, 9
13907 ; PWR6-NEXT: and 4, 4, 7
13908 ; PWR6-NEXT: rldicl 3, 3, 8, 56
13909 ; PWR6-NEXT: li 5, 9
13910 ; PWR6-NEXT: mulld 4, 4, 9
13911 ; PWR6-NEXT: subc 6, 3, 5
13912 ; PWR6-NEXT: rldicl 4, 4, 8, 56
13913 ; PWR6-NEXT: subfe 3, 3, 3
13914 ; PWR6-NEXT: subc 5, 4, 5
13915 ; PWR6-NEXT: subfe 4, 4, 4
13918 ; PWR7-LABEL: ult_9_v2i64:
13920 ; PWR7-NEXT: addi 3, 1, -32
13921 ; PWR7-NEXT: li 5, -1
13922 ; PWR7-NEXT: stxvd2x 34, 0, 3
13923 ; PWR7-NEXT: ld 4, -24(1)
13924 ; PWR7-NEXT: ld 3, -32(1)
13925 ; PWR7-NEXT: popcntd 4, 4
13926 ; PWR7-NEXT: popcntd 3, 3
13927 ; PWR7-NEXT: cmpldi 4, 9
13928 ; PWR7-NEXT: li 4, 0
13929 ; PWR7-NEXT: isellt 6, 5, 4
13930 ; PWR7-NEXT: cmpldi 3, 9
13931 ; PWR7-NEXT: isellt 3, 5, 4
13932 ; PWR7-NEXT: std 6, -8(1)
13933 ; PWR7-NEXT: std 3, -16(1)
13934 ; PWR7-NEXT: addi 3, 1, -16
13935 ; PWR7-NEXT: lxvd2x 34, 0, 3
13938 ; PWR8-LABEL: ult_9_v2i64:
13940 ; PWR8-NEXT: addis 3, 2, .LCPI115_0@toc@ha
13941 ; PWR8-NEXT: vpopcntd 2, 2
13942 ; PWR8-NEXT: addi 3, 3, .LCPI115_0@toc@l
13943 ; PWR8-NEXT: lxvd2x 35, 0, 3
13944 ; PWR8-NEXT: vcmpgtud 2, 3, 2
13947 ; PWR9-LABEL: ult_9_v2i64:
13949 ; PWR9-NEXT: addis 3, 2, .LCPI115_0@toc@ha
13950 ; PWR9-NEXT: vpopcntd 2, 2
13951 ; PWR9-NEXT: addi 3, 3, .LCPI115_0@toc@l
13952 ; PWR9-NEXT: lxv 35, 0(3)
13953 ; PWR9-NEXT: vcmpgtud 2, 3, 2
13955 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
13956 %3 = icmp ult <2 x i64> %2, <i64 9, i64 9>
13957 %4 = sext <2 x i1> %3 to <2 x i64>
13961 define <2 x i64> @ugt_9_v2i64(<2 x i64> %0) {
13962 ; PWR5-LABEL: ugt_9_v2i64:
13964 ; PWR5-NEXT: lis 5, 21845
13965 ; PWR5-NEXT: lis 6, 13107
13966 ; PWR5-NEXT: ori 5, 5, 21845
13967 ; PWR5-NEXT: rotldi 8, 4, 63
13968 ; PWR5-NEXT: rotldi 9, 3, 63
13969 ; PWR5-NEXT: rldimi 5, 5, 32, 0
13970 ; PWR5-NEXT: and 8, 8, 5
13971 ; PWR5-NEXT: and 5, 9, 5
13972 ; PWR5-NEXT: ori 6, 6, 13107
13973 ; PWR5-NEXT: sub 3, 3, 5
13974 ; PWR5-NEXT: rldimi 6, 6, 32, 0
13975 ; PWR5-NEXT: sub 4, 4, 8
13976 ; PWR5-NEXT: and 8, 3, 6
13977 ; PWR5-NEXT: rotldi 3, 3, 62
13978 ; PWR5-NEXT: and 3, 3, 6
13979 ; PWR5-NEXT: lis 7, 3855
13980 ; PWR5-NEXT: and 5, 4, 6
13981 ; PWR5-NEXT: rotldi 4, 4, 62
13982 ; PWR5-NEXT: add 3, 8, 3
13983 ; PWR5-NEXT: lis 9, 257
13984 ; PWR5-NEXT: ori 7, 7, 3855
13985 ; PWR5-NEXT: and 4, 4, 6
13986 ; PWR5-NEXT: rldicl 6, 3, 60, 4
13987 ; PWR5-NEXT: ori 9, 9, 257
13988 ; PWR5-NEXT: rldimi 7, 7, 32, 0
13989 ; PWR5-NEXT: add 4, 5, 4
13990 ; PWR5-NEXT: add 3, 3, 6
13991 ; PWR5-NEXT: rldimi 9, 9, 32, 0
13992 ; PWR5-NEXT: rldicl 5, 4, 60, 4
13993 ; PWR5-NEXT: and 3, 3, 7
13994 ; PWR5-NEXT: add 4, 4, 5
13995 ; PWR5-NEXT: mulld 3, 3, 9
13996 ; PWR5-NEXT: and 4, 4, 7
13997 ; PWR5-NEXT: rldicl 3, 3, 8, 56
13998 ; PWR5-NEXT: mulld 4, 4, 9
13999 ; PWR5-NEXT: li 5, 9
14000 ; PWR5-NEXT: subfic 3, 3, 9
14001 ; PWR5-NEXT: rldicl 4, 4, 8, 56
14002 ; PWR5-NEXT: subfe 3, 5, 5
14003 ; PWR5-NEXT: subfic 4, 4, 9
14004 ; PWR5-NEXT: subfe 4, 5, 5
14007 ; PWR6-LABEL: ugt_9_v2i64:
14009 ; PWR6-NEXT: lis 5, 21845
14010 ; PWR6-NEXT: lis 6, 13107
14011 ; PWR6-NEXT: ori 5, 5, 21845
14012 ; PWR6-NEXT: rotldi 8, 4, 63
14013 ; PWR6-NEXT: rotldi 9, 3, 63
14014 ; PWR6-NEXT: rldimi 5, 5, 32, 0
14015 ; PWR6-NEXT: and 8, 8, 5
14016 ; PWR6-NEXT: and 5, 9, 5
14017 ; PWR6-NEXT: ori 6, 6, 13107
14018 ; PWR6-NEXT: sub 3, 3, 5
14019 ; PWR6-NEXT: rldimi 6, 6, 32, 0
14020 ; PWR6-NEXT: sub 4, 4, 8
14021 ; PWR6-NEXT: and 8, 3, 6
14022 ; PWR6-NEXT: rotldi 3, 3, 62
14023 ; PWR6-NEXT: and 3, 3, 6
14024 ; PWR6-NEXT: lis 7, 3855
14025 ; PWR6-NEXT: and 5, 4, 6
14026 ; PWR6-NEXT: rotldi 4, 4, 62
14027 ; PWR6-NEXT: add 3, 8, 3
14028 ; PWR6-NEXT: lis 9, 257
14029 ; PWR6-NEXT: ori 7, 7, 3855
14030 ; PWR6-NEXT: and 4, 4, 6
14031 ; PWR6-NEXT: rldicl 6, 3, 60, 4
14032 ; PWR6-NEXT: ori 9, 9, 257
14033 ; PWR6-NEXT: rldimi 7, 7, 32, 0
14034 ; PWR6-NEXT: add 4, 5, 4
14035 ; PWR6-NEXT: add 3, 3, 6
14036 ; PWR6-NEXT: rldimi 9, 9, 32, 0
14037 ; PWR6-NEXT: rldicl 5, 4, 60, 4
14038 ; PWR6-NEXT: and 3, 3, 7
14039 ; PWR6-NEXT: add 4, 4, 5
14040 ; PWR6-NEXT: mulld 3, 3, 9
14041 ; PWR6-NEXT: and 4, 4, 7
14042 ; PWR6-NEXT: rldicl 3, 3, 8, 56
14043 ; PWR6-NEXT: mulld 4, 4, 9
14044 ; PWR6-NEXT: li 5, 9
14045 ; PWR6-NEXT: subfic 3, 3, 9
14046 ; PWR6-NEXT: rldicl 4, 4, 8, 56
14047 ; PWR6-NEXT: subfe 3, 5, 5
14048 ; PWR6-NEXT: subfic 4, 4, 9
14049 ; PWR6-NEXT: subfe 4, 5, 5
14052 ; PWR7-LABEL: ugt_9_v2i64:
14054 ; PWR7-NEXT: addi 3, 1, -32
14055 ; PWR7-NEXT: li 5, -1
14056 ; PWR7-NEXT: stxvd2x 34, 0, 3
14057 ; PWR7-NEXT: ld 4, -24(1)
14058 ; PWR7-NEXT: ld 3, -32(1)
14059 ; PWR7-NEXT: popcntd 4, 4
14060 ; PWR7-NEXT: popcntd 3, 3
14061 ; PWR7-NEXT: cmpldi 4, 9
14062 ; PWR7-NEXT: li 4, 0
14063 ; PWR7-NEXT: iselgt 6, 5, 4
14064 ; PWR7-NEXT: cmpldi 3, 9
14065 ; PWR7-NEXT: iselgt 3, 5, 4
14066 ; PWR7-NEXT: std 6, -8(1)
14067 ; PWR7-NEXT: std 3, -16(1)
14068 ; PWR7-NEXT: addi 3, 1, -16
14069 ; PWR7-NEXT: lxvd2x 34, 0, 3
14072 ; PWR8-LABEL: ugt_9_v2i64:
14074 ; PWR8-NEXT: addis 3, 2, .LCPI116_0@toc@ha
14075 ; PWR8-NEXT: vpopcntd 2, 2
14076 ; PWR8-NEXT: addi 3, 3, .LCPI116_0@toc@l
14077 ; PWR8-NEXT: lxvd2x 35, 0, 3
14078 ; PWR8-NEXT: vcmpgtud 2, 2, 3
14081 ; PWR9-LABEL: ugt_9_v2i64:
14083 ; PWR9-NEXT: addis 3, 2, .LCPI116_0@toc@ha
14084 ; PWR9-NEXT: vpopcntd 2, 2
14085 ; PWR9-NEXT: addi 3, 3, .LCPI116_0@toc@l
14086 ; PWR9-NEXT: lxv 35, 0(3)
14087 ; PWR9-NEXT: vcmpgtud 2, 2, 3
14089 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
14090 %3 = icmp ugt <2 x i64> %2, <i64 9, i64 9>
14091 %4 = sext <2 x i1> %3 to <2 x i64>
14095 define <2 x i64> @ult_10_v2i64(<2 x i64> %0) {
14096 ; PWR5-LABEL: ult_10_v2i64:
14098 ; PWR5-NEXT: lis 5, 21845
14099 ; PWR5-NEXT: lis 6, 13107
14100 ; PWR5-NEXT: ori 5, 5, 21845
14101 ; PWR5-NEXT: rotldi 8, 4, 63
14102 ; PWR5-NEXT: rotldi 9, 3, 63
14103 ; PWR5-NEXT: rldimi 5, 5, 32, 0
14104 ; PWR5-NEXT: and 8, 8, 5
14105 ; PWR5-NEXT: and 5, 9, 5
14106 ; PWR5-NEXT: ori 6, 6, 13107
14107 ; PWR5-NEXT: sub 3, 3, 5
14108 ; PWR5-NEXT: rldimi 6, 6, 32, 0
14109 ; PWR5-NEXT: sub 4, 4, 8
14110 ; PWR5-NEXT: and 8, 3, 6
14111 ; PWR5-NEXT: rotldi 3, 3, 62
14112 ; PWR5-NEXT: and 3, 3, 6
14113 ; PWR5-NEXT: lis 7, 3855
14114 ; PWR5-NEXT: and 5, 4, 6
14115 ; PWR5-NEXT: rotldi 4, 4, 62
14116 ; PWR5-NEXT: add 3, 8, 3
14117 ; PWR5-NEXT: lis 9, 257
14118 ; PWR5-NEXT: ori 7, 7, 3855
14119 ; PWR5-NEXT: and 4, 4, 6
14120 ; PWR5-NEXT: rldicl 6, 3, 60, 4
14121 ; PWR5-NEXT: ori 9, 9, 257
14122 ; PWR5-NEXT: rldimi 7, 7, 32, 0
14123 ; PWR5-NEXT: add 4, 5, 4
14124 ; PWR5-NEXT: add 3, 3, 6
14125 ; PWR5-NEXT: rldimi 9, 9, 32, 0
14126 ; PWR5-NEXT: rldicl 5, 4, 60, 4
14127 ; PWR5-NEXT: and 3, 3, 7
14128 ; PWR5-NEXT: add 4, 4, 5
14129 ; PWR5-NEXT: mulld 3, 3, 9
14130 ; PWR5-NEXT: and 4, 4, 7
14131 ; PWR5-NEXT: rldicl 3, 3, 8, 56
14132 ; PWR5-NEXT: li 5, 10
14133 ; PWR5-NEXT: mulld 4, 4, 9
14134 ; PWR5-NEXT: subc 6, 3, 5
14135 ; PWR5-NEXT: rldicl 4, 4, 8, 56
14136 ; PWR5-NEXT: subfe 3, 3, 3
14137 ; PWR5-NEXT: subc 5, 4, 5
14138 ; PWR5-NEXT: subfe 4, 4, 4
14141 ; PWR6-LABEL: ult_10_v2i64:
14143 ; PWR6-NEXT: lis 5, 21845
14144 ; PWR6-NEXT: lis 6, 13107
14145 ; PWR6-NEXT: ori 5, 5, 21845
14146 ; PWR6-NEXT: rotldi 8, 4, 63
14147 ; PWR6-NEXT: rotldi 9, 3, 63
14148 ; PWR6-NEXT: rldimi 5, 5, 32, 0
14149 ; PWR6-NEXT: and 8, 8, 5
14150 ; PWR6-NEXT: and 5, 9, 5
14151 ; PWR6-NEXT: ori 6, 6, 13107
14152 ; PWR6-NEXT: sub 3, 3, 5
14153 ; PWR6-NEXT: rldimi 6, 6, 32, 0
14154 ; PWR6-NEXT: sub 4, 4, 8
14155 ; PWR6-NEXT: and 8, 3, 6
14156 ; PWR6-NEXT: rotldi 3, 3, 62
14157 ; PWR6-NEXT: and 3, 3, 6
14158 ; PWR6-NEXT: lis 7, 3855
14159 ; PWR6-NEXT: and 5, 4, 6
14160 ; PWR6-NEXT: rotldi 4, 4, 62
14161 ; PWR6-NEXT: add 3, 8, 3
14162 ; PWR6-NEXT: lis 9, 257
14163 ; PWR6-NEXT: ori 7, 7, 3855
14164 ; PWR6-NEXT: and 4, 4, 6
14165 ; PWR6-NEXT: rldicl 6, 3, 60, 4
14166 ; PWR6-NEXT: ori 9, 9, 257
14167 ; PWR6-NEXT: rldimi 7, 7, 32, 0
14168 ; PWR6-NEXT: add 4, 5, 4
14169 ; PWR6-NEXT: add 3, 3, 6
14170 ; PWR6-NEXT: rldimi 9, 9, 32, 0
14171 ; PWR6-NEXT: rldicl 5, 4, 60, 4
14172 ; PWR6-NEXT: and 3, 3, 7
14173 ; PWR6-NEXT: add 4, 4, 5
14174 ; PWR6-NEXT: mulld 3, 3, 9
14175 ; PWR6-NEXT: and 4, 4, 7
14176 ; PWR6-NEXT: rldicl 3, 3, 8, 56
14177 ; PWR6-NEXT: li 5, 10
14178 ; PWR6-NEXT: mulld 4, 4, 9
14179 ; PWR6-NEXT: subc 6, 3, 5
14180 ; PWR6-NEXT: rldicl 4, 4, 8, 56
14181 ; PWR6-NEXT: subfe 3, 3, 3
14182 ; PWR6-NEXT: subc 5, 4, 5
14183 ; PWR6-NEXT: subfe 4, 4, 4
14186 ; PWR7-LABEL: ult_10_v2i64:
14188 ; PWR7-NEXT: addi 3, 1, -32
14189 ; PWR7-NEXT: li 5, -1
14190 ; PWR7-NEXT: stxvd2x 34, 0, 3
14191 ; PWR7-NEXT: ld 4, -24(1)
14192 ; PWR7-NEXT: ld 3, -32(1)
14193 ; PWR7-NEXT: popcntd 4, 4
14194 ; PWR7-NEXT: popcntd 3, 3
14195 ; PWR7-NEXT: cmpldi 4, 10
14196 ; PWR7-NEXT: li 4, 0
14197 ; PWR7-NEXT: isellt 6, 5, 4
14198 ; PWR7-NEXT: cmpldi 3, 10
14199 ; PWR7-NEXT: isellt 3, 5, 4
14200 ; PWR7-NEXT: std 6, -8(1)
14201 ; PWR7-NEXT: std 3, -16(1)
14202 ; PWR7-NEXT: addi 3, 1, -16
14203 ; PWR7-NEXT: lxvd2x 34, 0, 3
14206 ; PWR8-LABEL: ult_10_v2i64:
14208 ; PWR8-NEXT: addis 3, 2, .LCPI117_0@toc@ha
14209 ; PWR8-NEXT: vpopcntd 2, 2
14210 ; PWR8-NEXT: addi 3, 3, .LCPI117_0@toc@l
14211 ; PWR8-NEXT: lxvd2x 35, 0, 3
14212 ; PWR8-NEXT: vcmpgtud 2, 3, 2
14215 ; PWR9-LABEL: ult_10_v2i64:
14217 ; PWR9-NEXT: addis 3, 2, .LCPI117_0@toc@ha
14218 ; PWR9-NEXT: vpopcntd 2, 2
14219 ; PWR9-NEXT: addi 3, 3, .LCPI117_0@toc@l
14220 ; PWR9-NEXT: lxv 35, 0(3)
14221 ; PWR9-NEXT: vcmpgtud 2, 3, 2
14223 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
14224 %3 = icmp ult <2 x i64> %2, <i64 10, i64 10>
14225 %4 = sext <2 x i1> %3 to <2 x i64>
14229 define <2 x i64> @ugt_10_v2i64(<2 x i64> %0) {
14230 ; PWR5-LABEL: ugt_10_v2i64:
14232 ; PWR5-NEXT: lis 5, 21845
14233 ; PWR5-NEXT: lis 6, 13107
14234 ; PWR5-NEXT: ori 5, 5, 21845
14235 ; PWR5-NEXT: rotldi 8, 4, 63
14236 ; PWR5-NEXT: rotldi 9, 3, 63
14237 ; PWR5-NEXT: rldimi 5, 5, 32, 0
14238 ; PWR5-NEXT: and 8, 8, 5
14239 ; PWR5-NEXT: and 5, 9, 5
14240 ; PWR5-NEXT: ori 6, 6, 13107
14241 ; PWR5-NEXT: sub 3, 3, 5
14242 ; PWR5-NEXT: rldimi 6, 6, 32, 0
14243 ; PWR5-NEXT: sub 4, 4, 8
14244 ; PWR5-NEXT: and 8, 3, 6
14245 ; PWR5-NEXT: rotldi 3, 3, 62
14246 ; PWR5-NEXT: and 3, 3, 6
14247 ; PWR5-NEXT: lis 7, 3855
14248 ; PWR5-NEXT: and 5, 4, 6
14249 ; PWR5-NEXT: rotldi 4, 4, 62
14250 ; PWR5-NEXT: add 3, 8, 3
14251 ; PWR5-NEXT: lis 9, 257
14252 ; PWR5-NEXT: ori 7, 7, 3855
14253 ; PWR5-NEXT: and 4, 4, 6
14254 ; PWR5-NEXT: rldicl 6, 3, 60, 4
14255 ; PWR5-NEXT: ori 9, 9, 257
14256 ; PWR5-NEXT: rldimi 7, 7, 32, 0
14257 ; PWR5-NEXT: add 4, 5, 4
14258 ; PWR5-NEXT: add 3, 3, 6
14259 ; PWR5-NEXT: rldimi 9, 9, 32, 0
14260 ; PWR5-NEXT: rldicl 5, 4, 60, 4
14261 ; PWR5-NEXT: and 3, 3, 7
14262 ; PWR5-NEXT: add 4, 4, 5
14263 ; PWR5-NEXT: mulld 3, 3, 9
14264 ; PWR5-NEXT: and 4, 4, 7
14265 ; PWR5-NEXT: rldicl 3, 3, 8, 56
14266 ; PWR5-NEXT: mulld 4, 4, 9
14267 ; PWR5-NEXT: li 5, 10
14268 ; PWR5-NEXT: subfic 3, 3, 10
14269 ; PWR5-NEXT: rldicl 4, 4, 8, 56
14270 ; PWR5-NEXT: subfe 3, 5, 5
14271 ; PWR5-NEXT: subfic 4, 4, 10
14272 ; PWR5-NEXT: subfe 4, 5, 5
14275 ; PWR6-LABEL: ugt_10_v2i64:
14277 ; PWR6-NEXT: lis 5, 21845
14278 ; PWR6-NEXT: lis 6, 13107
14279 ; PWR6-NEXT: ori 5, 5, 21845
14280 ; PWR6-NEXT: rotldi 8, 4, 63
14281 ; PWR6-NEXT: rotldi 9, 3, 63
14282 ; PWR6-NEXT: rldimi 5, 5, 32, 0
14283 ; PWR6-NEXT: and 8, 8, 5
14284 ; PWR6-NEXT: and 5, 9, 5
14285 ; PWR6-NEXT: ori 6, 6, 13107
14286 ; PWR6-NEXT: sub 3, 3, 5
14287 ; PWR6-NEXT: rldimi 6, 6, 32, 0
14288 ; PWR6-NEXT: sub 4, 4, 8
14289 ; PWR6-NEXT: and 8, 3, 6
14290 ; PWR6-NEXT: rotldi 3, 3, 62
14291 ; PWR6-NEXT: and 3, 3, 6
14292 ; PWR6-NEXT: lis 7, 3855
14293 ; PWR6-NEXT: and 5, 4, 6
14294 ; PWR6-NEXT: rotldi 4, 4, 62
14295 ; PWR6-NEXT: add 3, 8, 3
14296 ; PWR6-NEXT: lis 9, 257
14297 ; PWR6-NEXT: ori 7, 7, 3855
14298 ; PWR6-NEXT: and 4, 4, 6
14299 ; PWR6-NEXT: rldicl 6, 3, 60, 4
14300 ; PWR6-NEXT: ori 9, 9, 257
14301 ; PWR6-NEXT: rldimi 7, 7, 32, 0
14302 ; PWR6-NEXT: add 4, 5, 4
14303 ; PWR6-NEXT: add 3, 3, 6
14304 ; PWR6-NEXT: rldimi 9, 9, 32, 0
14305 ; PWR6-NEXT: rldicl 5, 4, 60, 4
14306 ; PWR6-NEXT: and 3, 3, 7
14307 ; PWR6-NEXT: add 4, 4, 5
14308 ; PWR6-NEXT: mulld 3, 3, 9
14309 ; PWR6-NEXT: and 4, 4, 7
14310 ; PWR6-NEXT: rldicl 3, 3, 8, 56
14311 ; PWR6-NEXT: mulld 4, 4, 9
14312 ; PWR6-NEXT: li 5, 10
14313 ; PWR6-NEXT: subfic 3, 3, 10
14314 ; PWR6-NEXT: rldicl 4, 4, 8, 56
14315 ; PWR6-NEXT: subfe 3, 5, 5
14316 ; PWR6-NEXT: subfic 4, 4, 10
14317 ; PWR6-NEXT: subfe 4, 5, 5
14320 ; PWR7-LABEL: ugt_10_v2i64:
14322 ; PWR7-NEXT: addi 3, 1, -32
14323 ; PWR7-NEXT: li 5, -1
14324 ; PWR7-NEXT: stxvd2x 34, 0, 3
14325 ; PWR7-NEXT: ld 4, -24(1)
14326 ; PWR7-NEXT: ld 3, -32(1)
14327 ; PWR7-NEXT: popcntd 4, 4
14328 ; PWR7-NEXT: popcntd 3, 3
14329 ; PWR7-NEXT: cmpldi 4, 10
14330 ; PWR7-NEXT: li 4, 0
14331 ; PWR7-NEXT: iselgt 6, 5, 4
14332 ; PWR7-NEXT: cmpldi 3, 10
14333 ; PWR7-NEXT: iselgt 3, 5, 4
14334 ; PWR7-NEXT: std 6, -8(1)
14335 ; PWR7-NEXT: std 3, -16(1)
14336 ; PWR7-NEXT: addi 3, 1, -16
14337 ; PWR7-NEXT: lxvd2x 34, 0, 3
14340 ; PWR8-LABEL: ugt_10_v2i64:
14342 ; PWR8-NEXT: addis 3, 2, .LCPI118_0@toc@ha
14343 ; PWR8-NEXT: vpopcntd 2, 2
14344 ; PWR8-NEXT: addi 3, 3, .LCPI118_0@toc@l
14345 ; PWR8-NEXT: lxvd2x 35, 0, 3
14346 ; PWR8-NEXT: vcmpgtud 2, 2, 3
14349 ; PWR9-LABEL: ugt_10_v2i64:
14351 ; PWR9-NEXT: addis 3, 2, .LCPI118_0@toc@ha
14352 ; PWR9-NEXT: vpopcntd 2, 2
14353 ; PWR9-NEXT: addi 3, 3, .LCPI118_0@toc@l
14354 ; PWR9-NEXT: lxv 35, 0(3)
14355 ; PWR9-NEXT: vcmpgtud 2, 2, 3
14357 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
14358 %3 = icmp ugt <2 x i64> %2, <i64 10, i64 10>
14359 %4 = sext <2 x i1> %3 to <2 x i64>
14363 define <2 x i64> @ult_11_v2i64(<2 x i64> %0) {
14364 ; PWR5-LABEL: ult_11_v2i64:
14366 ; PWR5-NEXT: lis 5, 21845
14367 ; PWR5-NEXT: lis 6, 13107
14368 ; PWR5-NEXT: ori 5, 5, 21845
14369 ; PWR5-NEXT: rotldi 8, 4, 63
14370 ; PWR5-NEXT: rotldi 9, 3, 63
14371 ; PWR5-NEXT: rldimi 5, 5, 32, 0
14372 ; PWR5-NEXT: and 8, 8, 5
14373 ; PWR5-NEXT: and 5, 9, 5
14374 ; PWR5-NEXT: ori 6, 6, 13107
14375 ; PWR5-NEXT: sub 3, 3, 5
14376 ; PWR5-NEXT: rldimi 6, 6, 32, 0
14377 ; PWR5-NEXT: sub 4, 4, 8
14378 ; PWR5-NEXT: and 8, 3, 6
14379 ; PWR5-NEXT: rotldi 3, 3, 62
14380 ; PWR5-NEXT: and 3, 3, 6
14381 ; PWR5-NEXT: lis 7, 3855
14382 ; PWR5-NEXT: and 5, 4, 6
14383 ; PWR5-NEXT: rotldi 4, 4, 62
14384 ; PWR5-NEXT: add 3, 8, 3
14385 ; PWR5-NEXT: lis 9, 257
14386 ; PWR5-NEXT: ori 7, 7, 3855
14387 ; PWR5-NEXT: and 4, 4, 6
14388 ; PWR5-NEXT: rldicl 6, 3, 60, 4
14389 ; PWR5-NEXT: ori 9, 9, 257
14390 ; PWR5-NEXT: rldimi 7, 7, 32, 0
14391 ; PWR5-NEXT: add 4, 5, 4
14392 ; PWR5-NEXT: add 3, 3, 6
14393 ; PWR5-NEXT: rldimi 9, 9, 32, 0
14394 ; PWR5-NEXT: rldicl 5, 4, 60, 4
14395 ; PWR5-NEXT: and 3, 3, 7
14396 ; PWR5-NEXT: add 4, 4, 5
14397 ; PWR5-NEXT: mulld 3, 3, 9
14398 ; PWR5-NEXT: and 4, 4, 7
14399 ; PWR5-NEXT: rldicl 3, 3, 8, 56
14400 ; PWR5-NEXT: li 5, 11
14401 ; PWR5-NEXT: mulld 4, 4, 9
14402 ; PWR5-NEXT: subc 6, 3, 5
14403 ; PWR5-NEXT: rldicl 4, 4, 8, 56
14404 ; PWR5-NEXT: subfe 3, 3, 3
14405 ; PWR5-NEXT: subc 5, 4, 5
14406 ; PWR5-NEXT: subfe 4, 4, 4
14409 ; PWR6-LABEL: ult_11_v2i64:
14411 ; PWR6-NEXT: lis 5, 21845
14412 ; PWR6-NEXT: lis 6, 13107
14413 ; PWR6-NEXT: ori 5, 5, 21845
14414 ; PWR6-NEXT: rotldi 8, 4, 63
14415 ; PWR6-NEXT: rotldi 9, 3, 63
14416 ; PWR6-NEXT: rldimi 5, 5, 32, 0
14417 ; PWR6-NEXT: and 8, 8, 5
14418 ; PWR6-NEXT: and 5, 9, 5
14419 ; PWR6-NEXT: ori 6, 6, 13107
14420 ; PWR6-NEXT: sub 3, 3, 5
14421 ; PWR6-NEXT: rldimi 6, 6, 32, 0
14422 ; PWR6-NEXT: sub 4, 4, 8
14423 ; PWR6-NEXT: and 8, 3, 6
14424 ; PWR6-NEXT: rotldi 3, 3, 62
14425 ; PWR6-NEXT: and 3, 3, 6
14426 ; PWR6-NEXT: lis 7, 3855
14427 ; PWR6-NEXT: and 5, 4, 6
14428 ; PWR6-NEXT: rotldi 4, 4, 62
14429 ; PWR6-NEXT: add 3, 8, 3
14430 ; PWR6-NEXT: lis 9, 257
14431 ; PWR6-NEXT: ori 7, 7, 3855
14432 ; PWR6-NEXT: and 4, 4, 6
14433 ; PWR6-NEXT: rldicl 6, 3, 60, 4
14434 ; PWR6-NEXT: ori 9, 9, 257
14435 ; PWR6-NEXT: rldimi 7, 7, 32, 0
14436 ; PWR6-NEXT: add 4, 5, 4
14437 ; PWR6-NEXT: add 3, 3, 6
14438 ; PWR6-NEXT: rldimi 9, 9, 32, 0
14439 ; PWR6-NEXT: rldicl 5, 4, 60, 4
14440 ; PWR6-NEXT: and 3, 3, 7
14441 ; PWR6-NEXT: add 4, 4, 5
14442 ; PWR6-NEXT: mulld 3, 3, 9
14443 ; PWR6-NEXT: and 4, 4, 7
14444 ; PWR6-NEXT: rldicl 3, 3, 8, 56
14445 ; PWR6-NEXT: li 5, 11
14446 ; PWR6-NEXT: mulld 4, 4, 9
14447 ; PWR6-NEXT: subc 6, 3, 5
14448 ; PWR6-NEXT: rldicl 4, 4, 8, 56
14449 ; PWR6-NEXT: subfe 3, 3, 3
14450 ; PWR6-NEXT: subc 5, 4, 5
14451 ; PWR6-NEXT: subfe 4, 4, 4
14454 ; PWR7-LABEL: ult_11_v2i64:
14456 ; PWR7-NEXT: addi 3, 1, -32
14457 ; PWR7-NEXT: li 5, -1
14458 ; PWR7-NEXT: stxvd2x 34, 0, 3
14459 ; PWR7-NEXT: ld 4, -24(1)
14460 ; PWR7-NEXT: ld 3, -32(1)
14461 ; PWR7-NEXT: popcntd 4, 4
14462 ; PWR7-NEXT: popcntd 3, 3
14463 ; PWR7-NEXT: cmpldi 4, 11
14464 ; PWR7-NEXT: li 4, 0
14465 ; PWR7-NEXT: isellt 6, 5, 4
14466 ; PWR7-NEXT: cmpldi 3, 11
14467 ; PWR7-NEXT: isellt 3, 5, 4
14468 ; PWR7-NEXT: std 6, -8(1)
14469 ; PWR7-NEXT: std 3, -16(1)
14470 ; PWR7-NEXT: addi 3, 1, -16
14471 ; PWR7-NEXT: lxvd2x 34, 0, 3
14474 ; PWR8-LABEL: ult_11_v2i64:
14476 ; PWR8-NEXT: addis 3, 2, .LCPI119_0@toc@ha
14477 ; PWR8-NEXT: vpopcntd 2, 2
14478 ; PWR8-NEXT: addi 3, 3, .LCPI119_0@toc@l
14479 ; PWR8-NEXT: lxvd2x 35, 0, 3
14480 ; PWR8-NEXT: vcmpgtud 2, 3, 2
14483 ; PWR9-LABEL: ult_11_v2i64:
14485 ; PWR9-NEXT: addis 3, 2, .LCPI119_0@toc@ha
14486 ; PWR9-NEXT: vpopcntd 2, 2
14487 ; PWR9-NEXT: addi 3, 3, .LCPI119_0@toc@l
14488 ; PWR9-NEXT: lxv 35, 0(3)
14489 ; PWR9-NEXT: vcmpgtud 2, 3, 2
14491 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
14492 %3 = icmp ult <2 x i64> %2, <i64 11, i64 11>
14493 %4 = sext <2 x i1> %3 to <2 x i64>
14497 define <2 x i64> @ugt_11_v2i64(<2 x i64> %0) {
14498 ; PWR5-LABEL: ugt_11_v2i64:
14500 ; PWR5-NEXT: lis 5, 21845
14501 ; PWR5-NEXT: lis 6, 13107
14502 ; PWR5-NEXT: ori 5, 5, 21845
14503 ; PWR5-NEXT: rotldi 8, 4, 63
14504 ; PWR5-NEXT: rotldi 9, 3, 63
14505 ; PWR5-NEXT: rldimi 5, 5, 32, 0
14506 ; PWR5-NEXT: and 8, 8, 5
14507 ; PWR5-NEXT: and 5, 9, 5
14508 ; PWR5-NEXT: ori 6, 6, 13107
14509 ; PWR5-NEXT: sub 3, 3, 5
14510 ; PWR5-NEXT: rldimi 6, 6, 32, 0
14511 ; PWR5-NEXT: sub 4, 4, 8
14512 ; PWR5-NEXT: and 8, 3, 6
14513 ; PWR5-NEXT: rotldi 3, 3, 62
14514 ; PWR5-NEXT: and 3, 3, 6
14515 ; PWR5-NEXT: lis 7, 3855
14516 ; PWR5-NEXT: and 5, 4, 6
14517 ; PWR5-NEXT: rotldi 4, 4, 62
14518 ; PWR5-NEXT: add 3, 8, 3
14519 ; PWR5-NEXT: lis 9, 257
14520 ; PWR5-NEXT: ori 7, 7, 3855
14521 ; PWR5-NEXT: and 4, 4, 6
14522 ; PWR5-NEXT: rldicl 6, 3, 60, 4
14523 ; PWR5-NEXT: ori 9, 9, 257
14524 ; PWR5-NEXT: rldimi 7, 7, 32, 0
14525 ; PWR5-NEXT: add 4, 5, 4
14526 ; PWR5-NEXT: add 3, 3, 6
14527 ; PWR5-NEXT: rldimi 9, 9, 32, 0
14528 ; PWR5-NEXT: rldicl 5, 4, 60, 4
14529 ; PWR5-NEXT: and 3, 3, 7
14530 ; PWR5-NEXT: add 4, 4, 5
14531 ; PWR5-NEXT: mulld 3, 3, 9
14532 ; PWR5-NEXT: and 4, 4, 7
14533 ; PWR5-NEXT: rldicl 3, 3, 8, 56
14534 ; PWR5-NEXT: mulld 4, 4, 9
14535 ; PWR5-NEXT: li 5, 11
14536 ; PWR5-NEXT: subfic 3, 3, 11
14537 ; PWR5-NEXT: rldicl 4, 4, 8, 56
14538 ; PWR5-NEXT: subfe 3, 5, 5
14539 ; PWR5-NEXT: subfic 4, 4, 11
14540 ; PWR5-NEXT: subfe 4, 5, 5
14543 ; PWR6-LABEL: ugt_11_v2i64:
14545 ; PWR6-NEXT: lis 5, 21845
14546 ; PWR6-NEXT: lis 6, 13107
14547 ; PWR6-NEXT: ori 5, 5, 21845
14548 ; PWR6-NEXT: rotldi 8, 4, 63
14549 ; PWR6-NEXT: rotldi 9, 3, 63
14550 ; PWR6-NEXT: rldimi 5, 5, 32, 0
14551 ; PWR6-NEXT: and 8, 8, 5
14552 ; PWR6-NEXT: and 5, 9, 5
14553 ; PWR6-NEXT: ori 6, 6, 13107
14554 ; PWR6-NEXT: sub 3, 3, 5
14555 ; PWR6-NEXT: rldimi 6, 6, 32, 0
14556 ; PWR6-NEXT: sub 4, 4, 8
14557 ; PWR6-NEXT: and 8, 3, 6
14558 ; PWR6-NEXT: rotldi 3, 3, 62
14559 ; PWR6-NEXT: and 3, 3, 6
14560 ; PWR6-NEXT: lis 7, 3855
14561 ; PWR6-NEXT: and 5, 4, 6
14562 ; PWR6-NEXT: rotldi 4, 4, 62
14563 ; PWR6-NEXT: add 3, 8, 3
14564 ; PWR6-NEXT: lis 9, 257
14565 ; PWR6-NEXT: ori 7, 7, 3855
14566 ; PWR6-NEXT: and 4, 4, 6
14567 ; PWR6-NEXT: rldicl 6, 3, 60, 4
14568 ; PWR6-NEXT: ori 9, 9, 257
14569 ; PWR6-NEXT: rldimi 7, 7, 32, 0
14570 ; PWR6-NEXT: add 4, 5, 4
14571 ; PWR6-NEXT: add 3, 3, 6
14572 ; PWR6-NEXT: rldimi 9, 9, 32, 0
14573 ; PWR6-NEXT: rldicl 5, 4, 60, 4
14574 ; PWR6-NEXT: and 3, 3, 7
14575 ; PWR6-NEXT: add 4, 4, 5
14576 ; PWR6-NEXT: mulld 3, 3, 9
14577 ; PWR6-NEXT: and 4, 4, 7
14578 ; PWR6-NEXT: rldicl 3, 3, 8, 56
14579 ; PWR6-NEXT: mulld 4, 4, 9
14580 ; PWR6-NEXT: li 5, 11
14581 ; PWR6-NEXT: subfic 3, 3, 11
14582 ; PWR6-NEXT: rldicl 4, 4, 8, 56
14583 ; PWR6-NEXT: subfe 3, 5, 5
14584 ; PWR6-NEXT: subfic 4, 4, 11
14585 ; PWR6-NEXT: subfe 4, 5, 5
14588 ; PWR7-LABEL: ugt_11_v2i64:
14590 ; PWR7-NEXT: addi 3, 1, -32
14591 ; PWR7-NEXT: li 5, -1
14592 ; PWR7-NEXT: stxvd2x 34, 0, 3
14593 ; PWR7-NEXT: ld 4, -24(1)
14594 ; PWR7-NEXT: ld 3, -32(1)
14595 ; PWR7-NEXT: popcntd 4, 4
14596 ; PWR7-NEXT: popcntd 3, 3
14597 ; PWR7-NEXT: cmpldi 4, 11
14598 ; PWR7-NEXT: li 4, 0
14599 ; PWR7-NEXT: iselgt 6, 5, 4
14600 ; PWR7-NEXT: cmpldi 3, 11
14601 ; PWR7-NEXT: iselgt 3, 5, 4
14602 ; PWR7-NEXT: std 6, -8(1)
14603 ; PWR7-NEXT: std 3, -16(1)
14604 ; PWR7-NEXT: addi 3, 1, -16
14605 ; PWR7-NEXT: lxvd2x 34, 0, 3
14608 ; PWR8-LABEL: ugt_11_v2i64:
14610 ; PWR8-NEXT: addis 3, 2, .LCPI120_0@toc@ha
14611 ; PWR8-NEXT: vpopcntd 2, 2
14612 ; PWR8-NEXT: addi 3, 3, .LCPI120_0@toc@l
14613 ; PWR8-NEXT: lxvd2x 35, 0, 3
14614 ; PWR8-NEXT: vcmpgtud 2, 2, 3
14617 ; PWR9-LABEL: ugt_11_v2i64:
14619 ; PWR9-NEXT: addis 3, 2, .LCPI120_0@toc@ha
14620 ; PWR9-NEXT: vpopcntd 2, 2
14621 ; PWR9-NEXT: addi 3, 3, .LCPI120_0@toc@l
14622 ; PWR9-NEXT: lxv 35, 0(3)
14623 ; PWR9-NEXT: vcmpgtud 2, 2, 3
14625 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
14626 %3 = icmp ugt <2 x i64> %2, <i64 11, i64 11>
14627 %4 = sext <2 x i1> %3 to <2 x i64>
14631 define <2 x i64> @ult_12_v2i64(<2 x i64> %0) {
14632 ; PWR5-LABEL: ult_12_v2i64:
14634 ; PWR5-NEXT: lis 5, 21845
14635 ; PWR5-NEXT: lis 6, 13107
14636 ; PWR5-NEXT: ori 5, 5, 21845
14637 ; PWR5-NEXT: rotldi 8, 4, 63
14638 ; PWR5-NEXT: rotldi 9, 3, 63
14639 ; PWR5-NEXT: rldimi 5, 5, 32, 0
14640 ; PWR5-NEXT: and 8, 8, 5
14641 ; PWR5-NEXT: and 5, 9, 5
14642 ; PWR5-NEXT: ori 6, 6, 13107
14643 ; PWR5-NEXT: sub 3, 3, 5
14644 ; PWR5-NEXT: rldimi 6, 6, 32, 0
14645 ; PWR5-NEXT: sub 4, 4, 8
14646 ; PWR5-NEXT: and 8, 3, 6
14647 ; PWR5-NEXT: rotldi 3, 3, 62
14648 ; PWR5-NEXT: and 3, 3, 6
14649 ; PWR5-NEXT: lis 7, 3855
14650 ; PWR5-NEXT: and 5, 4, 6
14651 ; PWR5-NEXT: rotldi 4, 4, 62
14652 ; PWR5-NEXT: add 3, 8, 3
14653 ; PWR5-NEXT: lis 9, 257
14654 ; PWR5-NEXT: ori 7, 7, 3855
14655 ; PWR5-NEXT: and 4, 4, 6
14656 ; PWR5-NEXT: rldicl 6, 3, 60, 4
14657 ; PWR5-NEXT: ori 9, 9, 257
14658 ; PWR5-NEXT: rldimi 7, 7, 32, 0
14659 ; PWR5-NEXT: add 4, 5, 4
14660 ; PWR5-NEXT: add 3, 3, 6
14661 ; PWR5-NEXT: rldimi 9, 9, 32, 0
14662 ; PWR5-NEXT: rldicl 5, 4, 60, 4
14663 ; PWR5-NEXT: and 3, 3, 7
14664 ; PWR5-NEXT: add 4, 4, 5
14665 ; PWR5-NEXT: mulld 3, 3, 9
14666 ; PWR5-NEXT: and 4, 4, 7
14667 ; PWR5-NEXT: rldicl 3, 3, 8, 56
14668 ; PWR5-NEXT: li 5, 12
14669 ; PWR5-NEXT: mulld 4, 4, 9
14670 ; PWR5-NEXT: subc 6, 3, 5
14671 ; PWR5-NEXT: rldicl 4, 4, 8, 56
14672 ; PWR5-NEXT: subfe 3, 3, 3
14673 ; PWR5-NEXT: subc 5, 4, 5
14674 ; PWR5-NEXT: subfe 4, 4, 4
14677 ; PWR6-LABEL: ult_12_v2i64:
14679 ; PWR6-NEXT: lis 5, 21845
14680 ; PWR6-NEXT: lis 6, 13107
14681 ; PWR6-NEXT: ori 5, 5, 21845
14682 ; PWR6-NEXT: rotldi 8, 4, 63
14683 ; PWR6-NEXT: rotldi 9, 3, 63
14684 ; PWR6-NEXT: rldimi 5, 5, 32, 0
14685 ; PWR6-NEXT: and 8, 8, 5
14686 ; PWR6-NEXT: and 5, 9, 5
14687 ; PWR6-NEXT: ori 6, 6, 13107
14688 ; PWR6-NEXT: sub 3, 3, 5
14689 ; PWR6-NEXT: rldimi 6, 6, 32, 0
14690 ; PWR6-NEXT: sub 4, 4, 8
14691 ; PWR6-NEXT: and 8, 3, 6
14692 ; PWR6-NEXT: rotldi 3, 3, 62
14693 ; PWR6-NEXT: and 3, 3, 6
14694 ; PWR6-NEXT: lis 7, 3855
14695 ; PWR6-NEXT: and 5, 4, 6
14696 ; PWR6-NEXT: rotldi 4, 4, 62
14697 ; PWR6-NEXT: add 3, 8, 3
14698 ; PWR6-NEXT: lis 9, 257
14699 ; PWR6-NEXT: ori 7, 7, 3855
14700 ; PWR6-NEXT: and 4, 4, 6
14701 ; PWR6-NEXT: rldicl 6, 3, 60, 4
14702 ; PWR6-NEXT: ori 9, 9, 257
14703 ; PWR6-NEXT: rldimi 7, 7, 32, 0
14704 ; PWR6-NEXT: add 4, 5, 4
14705 ; PWR6-NEXT: add 3, 3, 6
14706 ; PWR6-NEXT: rldimi 9, 9, 32, 0
14707 ; PWR6-NEXT: rldicl 5, 4, 60, 4
14708 ; PWR6-NEXT: and 3, 3, 7
14709 ; PWR6-NEXT: add 4, 4, 5
14710 ; PWR6-NEXT: mulld 3, 3, 9
14711 ; PWR6-NEXT: and 4, 4, 7
14712 ; PWR6-NEXT: rldicl 3, 3, 8, 56
14713 ; PWR6-NEXT: li 5, 12
14714 ; PWR6-NEXT: mulld 4, 4, 9
14715 ; PWR6-NEXT: subc 6, 3, 5
14716 ; PWR6-NEXT: rldicl 4, 4, 8, 56
14717 ; PWR6-NEXT: subfe 3, 3, 3
14718 ; PWR6-NEXT: subc 5, 4, 5
14719 ; PWR6-NEXT: subfe 4, 4, 4
14722 ; PWR7-LABEL: ult_12_v2i64:
14724 ; PWR7-NEXT: addi 3, 1, -32
14725 ; PWR7-NEXT: li 5, -1
14726 ; PWR7-NEXT: stxvd2x 34, 0, 3
14727 ; PWR7-NEXT: ld 4, -24(1)
14728 ; PWR7-NEXT: ld 3, -32(1)
14729 ; PWR7-NEXT: popcntd 4, 4
14730 ; PWR7-NEXT: popcntd 3, 3
14731 ; PWR7-NEXT: cmpldi 4, 12
14732 ; PWR7-NEXT: li 4, 0
14733 ; PWR7-NEXT: isellt 6, 5, 4
14734 ; PWR7-NEXT: cmpldi 3, 12
14735 ; PWR7-NEXT: isellt 3, 5, 4
14736 ; PWR7-NEXT: std 6, -8(1)
14737 ; PWR7-NEXT: std 3, -16(1)
14738 ; PWR7-NEXT: addi 3, 1, -16
14739 ; PWR7-NEXT: lxvd2x 34, 0, 3
14742 ; PWR8-LABEL: ult_12_v2i64:
14744 ; PWR8-NEXT: addis 3, 2, .LCPI121_0@toc@ha
14745 ; PWR8-NEXT: vpopcntd 2, 2
14746 ; PWR8-NEXT: addi 3, 3, .LCPI121_0@toc@l
14747 ; PWR8-NEXT: lxvd2x 35, 0, 3
14748 ; PWR8-NEXT: vcmpgtud 2, 3, 2
14751 ; PWR9-LABEL: ult_12_v2i64:
14753 ; PWR9-NEXT: addis 3, 2, .LCPI121_0@toc@ha
14754 ; PWR9-NEXT: vpopcntd 2, 2
14755 ; PWR9-NEXT: addi 3, 3, .LCPI121_0@toc@l
14756 ; PWR9-NEXT: lxv 35, 0(3)
14757 ; PWR9-NEXT: vcmpgtud 2, 3, 2
14759 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
14760 %3 = icmp ult <2 x i64> %2, <i64 12, i64 12>
14761 %4 = sext <2 x i1> %3 to <2 x i64>
14765 define <2 x i64> @ugt_12_v2i64(<2 x i64> %0) {
14766 ; PWR5-LABEL: ugt_12_v2i64:
14768 ; PWR5-NEXT: lis 5, 21845
14769 ; PWR5-NEXT: lis 6, 13107
14770 ; PWR5-NEXT: ori 5, 5, 21845
14771 ; PWR5-NEXT: rotldi 8, 4, 63
14772 ; PWR5-NEXT: rotldi 9, 3, 63
14773 ; PWR5-NEXT: rldimi 5, 5, 32, 0
14774 ; PWR5-NEXT: and 8, 8, 5
14775 ; PWR5-NEXT: and 5, 9, 5
14776 ; PWR5-NEXT: ori 6, 6, 13107
14777 ; PWR5-NEXT: sub 3, 3, 5
14778 ; PWR5-NEXT: rldimi 6, 6, 32, 0
14779 ; PWR5-NEXT: sub 4, 4, 8
14780 ; PWR5-NEXT: and 8, 3, 6
14781 ; PWR5-NEXT: rotldi 3, 3, 62
14782 ; PWR5-NEXT: and 3, 3, 6
14783 ; PWR5-NEXT: lis 7, 3855
14784 ; PWR5-NEXT: and 5, 4, 6
14785 ; PWR5-NEXT: rotldi 4, 4, 62
14786 ; PWR5-NEXT: add 3, 8, 3
14787 ; PWR5-NEXT: lis 9, 257
14788 ; PWR5-NEXT: ori 7, 7, 3855
14789 ; PWR5-NEXT: and 4, 4, 6
14790 ; PWR5-NEXT: rldicl 6, 3, 60, 4
14791 ; PWR5-NEXT: ori 9, 9, 257
14792 ; PWR5-NEXT: rldimi 7, 7, 32, 0
14793 ; PWR5-NEXT: add 4, 5, 4
14794 ; PWR5-NEXT: add 3, 3, 6
14795 ; PWR5-NEXT: rldimi 9, 9, 32, 0
14796 ; PWR5-NEXT: rldicl 5, 4, 60, 4
14797 ; PWR5-NEXT: and 3, 3, 7
14798 ; PWR5-NEXT: add 4, 4, 5
14799 ; PWR5-NEXT: mulld 3, 3, 9
14800 ; PWR5-NEXT: and 4, 4, 7
14801 ; PWR5-NEXT: rldicl 3, 3, 8, 56
14802 ; PWR5-NEXT: mulld 4, 4, 9
14803 ; PWR5-NEXT: li 5, 12
14804 ; PWR5-NEXT: subfic 3, 3, 12
14805 ; PWR5-NEXT: rldicl 4, 4, 8, 56
14806 ; PWR5-NEXT: subfe 3, 5, 5
14807 ; PWR5-NEXT: subfic 4, 4, 12
14808 ; PWR5-NEXT: subfe 4, 5, 5
14811 ; PWR6-LABEL: ugt_12_v2i64:
14813 ; PWR6-NEXT: lis 5, 21845
14814 ; PWR6-NEXT: lis 6, 13107
14815 ; PWR6-NEXT: ori 5, 5, 21845
14816 ; PWR6-NEXT: rotldi 8, 4, 63
14817 ; PWR6-NEXT: rotldi 9, 3, 63
14818 ; PWR6-NEXT: rldimi 5, 5, 32, 0
14819 ; PWR6-NEXT: and 8, 8, 5
14820 ; PWR6-NEXT: and 5, 9, 5
14821 ; PWR6-NEXT: ori 6, 6, 13107
14822 ; PWR6-NEXT: sub 3, 3, 5
14823 ; PWR6-NEXT: rldimi 6, 6, 32, 0
14824 ; PWR6-NEXT: sub 4, 4, 8
14825 ; PWR6-NEXT: and 8, 3, 6
14826 ; PWR6-NEXT: rotldi 3, 3, 62
14827 ; PWR6-NEXT: and 3, 3, 6
14828 ; PWR6-NEXT: lis 7, 3855
14829 ; PWR6-NEXT: and 5, 4, 6
14830 ; PWR6-NEXT: rotldi 4, 4, 62
14831 ; PWR6-NEXT: add 3, 8, 3
14832 ; PWR6-NEXT: lis 9, 257
14833 ; PWR6-NEXT: ori 7, 7, 3855
14834 ; PWR6-NEXT: and 4, 4, 6
14835 ; PWR6-NEXT: rldicl 6, 3, 60, 4
14836 ; PWR6-NEXT: ori 9, 9, 257
14837 ; PWR6-NEXT: rldimi 7, 7, 32, 0
14838 ; PWR6-NEXT: add 4, 5, 4
14839 ; PWR6-NEXT: add 3, 3, 6
14840 ; PWR6-NEXT: rldimi 9, 9, 32, 0
14841 ; PWR6-NEXT: rldicl 5, 4, 60, 4
14842 ; PWR6-NEXT: and 3, 3, 7
14843 ; PWR6-NEXT: add 4, 4, 5
14844 ; PWR6-NEXT: mulld 3, 3, 9
14845 ; PWR6-NEXT: and 4, 4, 7
14846 ; PWR6-NEXT: rldicl 3, 3, 8, 56
14847 ; PWR6-NEXT: mulld 4, 4, 9
14848 ; PWR6-NEXT: li 5, 12
14849 ; PWR6-NEXT: subfic 3, 3, 12
14850 ; PWR6-NEXT: rldicl 4, 4, 8, 56
14851 ; PWR6-NEXT: subfe 3, 5, 5
14852 ; PWR6-NEXT: subfic 4, 4, 12
14853 ; PWR6-NEXT: subfe 4, 5, 5
14856 ; PWR7-LABEL: ugt_12_v2i64:
14858 ; PWR7-NEXT: addi 3, 1, -32
14859 ; PWR7-NEXT: li 5, -1
14860 ; PWR7-NEXT: stxvd2x 34, 0, 3
14861 ; PWR7-NEXT: ld 4, -24(1)
14862 ; PWR7-NEXT: ld 3, -32(1)
14863 ; PWR7-NEXT: popcntd 4, 4
14864 ; PWR7-NEXT: popcntd 3, 3
14865 ; PWR7-NEXT: cmpldi 4, 12
14866 ; PWR7-NEXT: li 4, 0
14867 ; PWR7-NEXT: iselgt 6, 5, 4
14868 ; PWR7-NEXT: cmpldi 3, 12
14869 ; PWR7-NEXT: iselgt 3, 5, 4
14870 ; PWR7-NEXT: std 6, -8(1)
14871 ; PWR7-NEXT: std 3, -16(1)
14872 ; PWR7-NEXT: addi 3, 1, -16
14873 ; PWR7-NEXT: lxvd2x 34, 0, 3
14876 ; PWR8-LABEL: ugt_12_v2i64:
14878 ; PWR8-NEXT: addis 3, 2, .LCPI122_0@toc@ha
14879 ; PWR8-NEXT: vpopcntd 2, 2
14880 ; PWR8-NEXT: addi 3, 3, .LCPI122_0@toc@l
14881 ; PWR8-NEXT: lxvd2x 35, 0, 3
14882 ; PWR8-NEXT: vcmpgtud 2, 2, 3
14885 ; PWR9-LABEL: ugt_12_v2i64:
14887 ; PWR9-NEXT: addis 3, 2, .LCPI122_0@toc@ha
14888 ; PWR9-NEXT: vpopcntd 2, 2
14889 ; PWR9-NEXT: addi 3, 3, .LCPI122_0@toc@l
14890 ; PWR9-NEXT: lxv 35, 0(3)
14891 ; PWR9-NEXT: vcmpgtud 2, 2, 3
14893 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
14894 %3 = icmp ugt <2 x i64> %2, <i64 12, i64 12>
14895 %4 = sext <2 x i1> %3 to <2 x i64>
14899 define <2 x i64> @ult_13_v2i64(<2 x i64> %0) {
14900 ; PWR5-LABEL: ult_13_v2i64:
14902 ; PWR5-NEXT: lis 5, 21845
14903 ; PWR5-NEXT: lis 6, 13107
14904 ; PWR5-NEXT: ori 5, 5, 21845
14905 ; PWR5-NEXT: rotldi 8, 4, 63
14906 ; PWR5-NEXT: rotldi 9, 3, 63
14907 ; PWR5-NEXT: rldimi 5, 5, 32, 0
14908 ; PWR5-NEXT: and 8, 8, 5
14909 ; PWR5-NEXT: and 5, 9, 5
14910 ; PWR5-NEXT: ori 6, 6, 13107
14911 ; PWR5-NEXT: sub 3, 3, 5
14912 ; PWR5-NEXT: rldimi 6, 6, 32, 0
14913 ; PWR5-NEXT: sub 4, 4, 8
14914 ; PWR5-NEXT: and 8, 3, 6
14915 ; PWR5-NEXT: rotldi 3, 3, 62
14916 ; PWR5-NEXT: and 3, 3, 6
14917 ; PWR5-NEXT: lis 7, 3855
14918 ; PWR5-NEXT: and 5, 4, 6
14919 ; PWR5-NEXT: rotldi 4, 4, 62
14920 ; PWR5-NEXT: add 3, 8, 3
14921 ; PWR5-NEXT: lis 9, 257
14922 ; PWR5-NEXT: ori 7, 7, 3855
14923 ; PWR5-NEXT: and 4, 4, 6
14924 ; PWR5-NEXT: rldicl 6, 3, 60, 4
14925 ; PWR5-NEXT: ori 9, 9, 257
14926 ; PWR5-NEXT: rldimi 7, 7, 32, 0
14927 ; PWR5-NEXT: add 4, 5, 4
14928 ; PWR5-NEXT: add 3, 3, 6
14929 ; PWR5-NEXT: rldimi 9, 9, 32, 0
14930 ; PWR5-NEXT: rldicl 5, 4, 60, 4
14931 ; PWR5-NEXT: and 3, 3, 7
14932 ; PWR5-NEXT: add 4, 4, 5
14933 ; PWR5-NEXT: mulld 3, 3, 9
14934 ; PWR5-NEXT: and 4, 4, 7
14935 ; PWR5-NEXT: rldicl 3, 3, 8, 56
14936 ; PWR5-NEXT: li 5, 13
14937 ; PWR5-NEXT: mulld 4, 4, 9
14938 ; PWR5-NEXT: subc 6, 3, 5
14939 ; PWR5-NEXT: rldicl 4, 4, 8, 56
14940 ; PWR5-NEXT: subfe 3, 3, 3
14941 ; PWR5-NEXT: subc 5, 4, 5
14942 ; PWR5-NEXT: subfe 4, 4, 4
14945 ; PWR6-LABEL: ult_13_v2i64:
14947 ; PWR6-NEXT: lis 5, 21845
14948 ; PWR6-NEXT: lis 6, 13107
14949 ; PWR6-NEXT: ori 5, 5, 21845
14950 ; PWR6-NEXT: rotldi 8, 4, 63
14951 ; PWR6-NEXT: rotldi 9, 3, 63
14952 ; PWR6-NEXT: rldimi 5, 5, 32, 0
14953 ; PWR6-NEXT: and 8, 8, 5
14954 ; PWR6-NEXT: and 5, 9, 5
14955 ; PWR6-NEXT: ori 6, 6, 13107
14956 ; PWR6-NEXT: sub 3, 3, 5
14957 ; PWR6-NEXT: rldimi 6, 6, 32, 0
14958 ; PWR6-NEXT: sub 4, 4, 8
14959 ; PWR6-NEXT: and 8, 3, 6
14960 ; PWR6-NEXT: rotldi 3, 3, 62
14961 ; PWR6-NEXT: and 3, 3, 6
14962 ; PWR6-NEXT: lis 7, 3855
14963 ; PWR6-NEXT: and 5, 4, 6
14964 ; PWR6-NEXT: rotldi 4, 4, 62
14965 ; PWR6-NEXT: add 3, 8, 3
14966 ; PWR6-NEXT: lis 9, 257
14967 ; PWR6-NEXT: ori 7, 7, 3855
14968 ; PWR6-NEXT: and 4, 4, 6
14969 ; PWR6-NEXT: rldicl 6, 3, 60, 4
14970 ; PWR6-NEXT: ori 9, 9, 257
14971 ; PWR6-NEXT: rldimi 7, 7, 32, 0
14972 ; PWR6-NEXT: add 4, 5, 4
14973 ; PWR6-NEXT: add 3, 3, 6
14974 ; PWR6-NEXT: rldimi 9, 9, 32, 0
14975 ; PWR6-NEXT: rldicl 5, 4, 60, 4
14976 ; PWR6-NEXT: and 3, 3, 7
14977 ; PWR6-NEXT: add 4, 4, 5
14978 ; PWR6-NEXT: mulld 3, 3, 9
14979 ; PWR6-NEXT: and 4, 4, 7
14980 ; PWR6-NEXT: rldicl 3, 3, 8, 56
14981 ; PWR6-NEXT: li 5, 13
14982 ; PWR6-NEXT: mulld 4, 4, 9
14983 ; PWR6-NEXT: subc 6, 3, 5
14984 ; PWR6-NEXT: rldicl 4, 4, 8, 56
14985 ; PWR6-NEXT: subfe 3, 3, 3
14986 ; PWR6-NEXT: subc 5, 4, 5
14987 ; PWR6-NEXT: subfe 4, 4, 4
14990 ; PWR7-LABEL: ult_13_v2i64:
14992 ; PWR7-NEXT: addi 3, 1, -32
14993 ; PWR7-NEXT: li 5, -1
14994 ; PWR7-NEXT: stxvd2x 34, 0, 3
14995 ; PWR7-NEXT: ld 4, -24(1)
14996 ; PWR7-NEXT: ld 3, -32(1)
14997 ; PWR7-NEXT: popcntd 4, 4
14998 ; PWR7-NEXT: popcntd 3, 3
14999 ; PWR7-NEXT: cmpldi 4, 13
15000 ; PWR7-NEXT: li 4, 0
15001 ; PWR7-NEXT: isellt 6, 5, 4
15002 ; PWR7-NEXT: cmpldi 3, 13
15003 ; PWR7-NEXT: isellt 3, 5, 4
15004 ; PWR7-NEXT: std 6, -8(1)
15005 ; PWR7-NEXT: std 3, -16(1)
15006 ; PWR7-NEXT: addi 3, 1, -16
15007 ; PWR7-NEXT: lxvd2x 34, 0, 3
15010 ; PWR8-LABEL: ult_13_v2i64:
15012 ; PWR8-NEXT: addis 3, 2, .LCPI123_0@toc@ha
15013 ; PWR8-NEXT: vpopcntd 2, 2
15014 ; PWR8-NEXT: addi 3, 3, .LCPI123_0@toc@l
15015 ; PWR8-NEXT: lxvd2x 35, 0, 3
15016 ; PWR8-NEXT: vcmpgtud 2, 3, 2
15019 ; PWR9-LABEL: ult_13_v2i64:
15021 ; PWR9-NEXT: addis 3, 2, .LCPI123_0@toc@ha
15022 ; PWR9-NEXT: vpopcntd 2, 2
15023 ; PWR9-NEXT: addi 3, 3, .LCPI123_0@toc@l
15024 ; PWR9-NEXT: lxv 35, 0(3)
15025 ; PWR9-NEXT: vcmpgtud 2, 3, 2
15027 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
15028 %3 = icmp ult <2 x i64> %2, <i64 13, i64 13>
15029 %4 = sext <2 x i1> %3 to <2 x i64>
15033 define <2 x i64> @ugt_13_v2i64(<2 x i64> %0) {
15034 ; PWR5-LABEL: ugt_13_v2i64:
15036 ; PWR5-NEXT: lis 5, 21845
15037 ; PWR5-NEXT: lis 6, 13107
15038 ; PWR5-NEXT: ori 5, 5, 21845
15039 ; PWR5-NEXT: rotldi 8, 4, 63
15040 ; PWR5-NEXT: rotldi 9, 3, 63
15041 ; PWR5-NEXT: rldimi 5, 5, 32, 0
15042 ; PWR5-NEXT: and 8, 8, 5
15043 ; PWR5-NEXT: and 5, 9, 5
15044 ; PWR5-NEXT: ori 6, 6, 13107
15045 ; PWR5-NEXT: sub 3, 3, 5
15046 ; PWR5-NEXT: rldimi 6, 6, 32, 0
15047 ; PWR5-NEXT: sub 4, 4, 8
15048 ; PWR5-NEXT: and 8, 3, 6
15049 ; PWR5-NEXT: rotldi 3, 3, 62
15050 ; PWR5-NEXT: and 3, 3, 6
15051 ; PWR5-NEXT: lis 7, 3855
15052 ; PWR5-NEXT: and 5, 4, 6
15053 ; PWR5-NEXT: rotldi 4, 4, 62
15054 ; PWR5-NEXT: add 3, 8, 3
15055 ; PWR5-NEXT: lis 9, 257
15056 ; PWR5-NEXT: ori 7, 7, 3855
15057 ; PWR5-NEXT: and 4, 4, 6
15058 ; PWR5-NEXT: rldicl 6, 3, 60, 4
15059 ; PWR5-NEXT: ori 9, 9, 257
15060 ; PWR5-NEXT: rldimi 7, 7, 32, 0
15061 ; PWR5-NEXT: add 4, 5, 4
15062 ; PWR5-NEXT: add 3, 3, 6
15063 ; PWR5-NEXT: rldimi 9, 9, 32, 0
15064 ; PWR5-NEXT: rldicl 5, 4, 60, 4
15065 ; PWR5-NEXT: and 3, 3, 7
15066 ; PWR5-NEXT: add 4, 4, 5
15067 ; PWR5-NEXT: mulld 3, 3, 9
15068 ; PWR5-NEXT: and 4, 4, 7
15069 ; PWR5-NEXT: rldicl 3, 3, 8, 56
15070 ; PWR5-NEXT: mulld 4, 4, 9
15071 ; PWR5-NEXT: li 5, 13
15072 ; PWR5-NEXT: subfic 3, 3, 13
15073 ; PWR5-NEXT: rldicl 4, 4, 8, 56
15074 ; PWR5-NEXT: subfe 3, 5, 5
15075 ; PWR5-NEXT: subfic 4, 4, 13
15076 ; PWR5-NEXT: subfe 4, 5, 5
15079 ; PWR6-LABEL: ugt_13_v2i64:
15081 ; PWR6-NEXT: lis 5, 21845
15082 ; PWR6-NEXT: lis 6, 13107
15083 ; PWR6-NEXT: ori 5, 5, 21845
15084 ; PWR6-NEXT: rotldi 8, 4, 63
15085 ; PWR6-NEXT: rotldi 9, 3, 63
15086 ; PWR6-NEXT: rldimi 5, 5, 32, 0
15087 ; PWR6-NEXT: and 8, 8, 5
15088 ; PWR6-NEXT: and 5, 9, 5
15089 ; PWR6-NEXT: ori 6, 6, 13107
15090 ; PWR6-NEXT: sub 3, 3, 5
15091 ; PWR6-NEXT: rldimi 6, 6, 32, 0
15092 ; PWR6-NEXT: sub 4, 4, 8
15093 ; PWR6-NEXT: and 8, 3, 6
15094 ; PWR6-NEXT: rotldi 3, 3, 62
15095 ; PWR6-NEXT: and 3, 3, 6
15096 ; PWR6-NEXT: lis 7, 3855
15097 ; PWR6-NEXT: and 5, 4, 6
15098 ; PWR6-NEXT: rotldi 4, 4, 62
15099 ; PWR6-NEXT: add 3, 8, 3
15100 ; PWR6-NEXT: lis 9, 257
15101 ; PWR6-NEXT: ori 7, 7, 3855
15102 ; PWR6-NEXT: and 4, 4, 6
15103 ; PWR6-NEXT: rldicl 6, 3, 60, 4
15104 ; PWR6-NEXT: ori 9, 9, 257
15105 ; PWR6-NEXT: rldimi 7, 7, 32, 0
15106 ; PWR6-NEXT: add 4, 5, 4
15107 ; PWR6-NEXT: add 3, 3, 6
15108 ; PWR6-NEXT: rldimi 9, 9, 32, 0
15109 ; PWR6-NEXT: rldicl 5, 4, 60, 4
15110 ; PWR6-NEXT: and 3, 3, 7
15111 ; PWR6-NEXT: add 4, 4, 5
15112 ; PWR6-NEXT: mulld 3, 3, 9
15113 ; PWR6-NEXT: and 4, 4, 7
15114 ; PWR6-NEXT: rldicl 3, 3, 8, 56
15115 ; PWR6-NEXT: mulld 4, 4, 9
15116 ; PWR6-NEXT: li 5, 13
15117 ; PWR6-NEXT: subfic 3, 3, 13
15118 ; PWR6-NEXT: rldicl 4, 4, 8, 56
15119 ; PWR6-NEXT: subfe 3, 5, 5
15120 ; PWR6-NEXT: subfic 4, 4, 13
15121 ; PWR6-NEXT: subfe 4, 5, 5
15124 ; PWR7-LABEL: ugt_13_v2i64:
15126 ; PWR7-NEXT: addi 3, 1, -32
15127 ; PWR7-NEXT: li 5, -1
15128 ; PWR7-NEXT: stxvd2x 34, 0, 3
15129 ; PWR7-NEXT: ld 4, -24(1)
15130 ; PWR7-NEXT: ld 3, -32(1)
15131 ; PWR7-NEXT: popcntd 4, 4
15132 ; PWR7-NEXT: popcntd 3, 3
15133 ; PWR7-NEXT: cmpldi 4, 13
15134 ; PWR7-NEXT: li 4, 0
15135 ; PWR7-NEXT: iselgt 6, 5, 4
15136 ; PWR7-NEXT: cmpldi 3, 13
15137 ; PWR7-NEXT: iselgt 3, 5, 4
15138 ; PWR7-NEXT: std 6, -8(1)
15139 ; PWR7-NEXT: std 3, -16(1)
15140 ; PWR7-NEXT: addi 3, 1, -16
15141 ; PWR7-NEXT: lxvd2x 34, 0, 3
15144 ; PWR8-LABEL: ugt_13_v2i64:
15146 ; PWR8-NEXT: addis 3, 2, .LCPI124_0@toc@ha
15147 ; PWR8-NEXT: vpopcntd 2, 2
15148 ; PWR8-NEXT: addi 3, 3, .LCPI124_0@toc@l
15149 ; PWR8-NEXT: lxvd2x 35, 0, 3
15150 ; PWR8-NEXT: vcmpgtud 2, 2, 3
15153 ; PWR9-LABEL: ugt_13_v2i64:
15155 ; PWR9-NEXT: addis 3, 2, .LCPI124_0@toc@ha
15156 ; PWR9-NEXT: vpopcntd 2, 2
15157 ; PWR9-NEXT: addi 3, 3, .LCPI124_0@toc@l
15158 ; PWR9-NEXT: lxv 35, 0(3)
15159 ; PWR9-NEXT: vcmpgtud 2, 2, 3
15161 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
15162 %3 = icmp ugt <2 x i64> %2, <i64 13, i64 13>
15163 %4 = sext <2 x i1> %3 to <2 x i64>
15167 define <2 x i64> @ult_14_v2i64(<2 x i64> %0) {
15168 ; PWR5-LABEL: ult_14_v2i64:
15170 ; PWR5-NEXT: lis 5, 21845
15171 ; PWR5-NEXT: lis 6, 13107
15172 ; PWR5-NEXT: ori 5, 5, 21845
15173 ; PWR5-NEXT: rotldi 8, 4, 63
15174 ; PWR5-NEXT: rotldi 9, 3, 63
15175 ; PWR5-NEXT: rldimi 5, 5, 32, 0
15176 ; PWR5-NEXT: and 8, 8, 5
15177 ; PWR5-NEXT: and 5, 9, 5
15178 ; PWR5-NEXT: ori 6, 6, 13107
15179 ; PWR5-NEXT: sub 3, 3, 5
15180 ; PWR5-NEXT: rldimi 6, 6, 32, 0
15181 ; PWR5-NEXT: sub 4, 4, 8
15182 ; PWR5-NEXT: and 8, 3, 6
15183 ; PWR5-NEXT: rotldi 3, 3, 62
15184 ; PWR5-NEXT: and 3, 3, 6
15185 ; PWR5-NEXT: lis 7, 3855
15186 ; PWR5-NEXT: and 5, 4, 6
15187 ; PWR5-NEXT: rotldi 4, 4, 62
15188 ; PWR5-NEXT: add 3, 8, 3
15189 ; PWR5-NEXT: lis 9, 257
15190 ; PWR5-NEXT: ori 7, 7, 3855
15191 ; PWR5-NEXT: and 4, 4, 6
15192 ; PWR5-NEXT: rldicl 6, 3, 60, 4
15193 ; PWR5-NEXT: ori 9, 9, 257
15194 ; PWR5-NEXT: rldimi 7, 7, 32, 0
15195 ; PWR5-NEXT: add 4, 5, 4
15196 ; PWR5-NEXT: add 3, 3, 6
15197 ; PWR5-NEXT: rldimi 9, 9, 32, 0
15198 ; PWR5-NEXT: rldicl 5, 4, 60, 4
15199 ; PWR5-NEXT: and 3, 3, 7
15200 ; PWR5-NEXT: add 4, 4, 5
15201 ; PWR5-NEXT: mulld 3, 3, 9
15202 ; PWR5-NEXT: and 4, 4, 7
15203 ; PWR5-NEXT: rldicl 3, 3, 8, 56
15204 ; PWR5-NEXT: li 5, 14
15205 ; PWR5-NEXT: mulld 4, 4, 9
15206 ; PWR5-NEXT: subc 6, 3, 5
15207 ; PWR5-NEXT: rldicl 4, 4, 8, 56
15208 ; PWR5-NEXT: subfe 3, 3, 3
15209 ; PWR5-NEXT: subc 5, 4, 5
15210 ; PWR5-NEXT: subfe 4, 4, 4
15213 ; PWR6-LABEL: ult_14_v2i64:
15215 ; PWR6-NEXT: lis 5, 21845
15216 ; PWR6-NEXT: lis 6, 13107
15217 ; PWR6-NEXT: ori 5, 5, 21845
15218 ; PWR6-NEXT: rotldi 8, 4, 63
15219 ; PWR6-NEXT: rotldi 9, 3, 63
15220 ; PWR6-NEXT: rldimi 5, 5, 32, 0
15221 ; PWR6-NEXT: and 8, 8, 5
15222 ; PWR6-NEXT: and 5, 9, 5
15223 ; PWR6-NEXT: ori 6, 6, 13107
15224 ; PWR6-NEXT: sub 3, 3, 5
15225 ; PWR6-NEXT: rldimi 6, 6, 32, 0
15226 ; PWR6-NEXT: sub 4, 4, 8
15227 ; PWR6-NEXT: and 8, 3, 6
15228 ; PWR6-NEXT: rotldi 3, 3, 62
15229 ; PWR6-NEXT: and 3, 3, 6
15230 ; PWR6-NEXT: lis 7, 3855
15231 ; PWR6-NEXT: and 5, 4, 6
15232 ; PWR6-NEXT: rotldi 4, 4, 62
15233 ; PWR6-NEXT: add 3, 8, 3
15234 ; PWR6-NEXT: lis 9, 257
15235 ; PWR6-NEXT: ori 7, 7, 3855
15236 ; PWR6-NEXT: and 4, 4, 6
15237 ; PWR6-NEXT: rldicl 6, 3, 60, 4
15238 ; PWR6-NEXT: ori 9, 9, 257
15239 ; PWR6-NEXT: rldimi 7, 7, 32, 0
15240 ; PWR6-NEXT: add 4, 5, 4
15241 ; PWR6-NEXT: add 3, 3, 6
15242 ; PWR6-NEXT: rldimi 9, 9, 32, 0
15243 ; PWR6-NEXT: rldicl 5, 4, 60, 4
15244 ; PWR6-NEXT: and 3, 3, 7
15245 ; PWR6-NEXT: add 4, 4, 5
15246 ; PWR6-NEXT: mulld 3, 3, 9
15247 ; PWR6-NEXT: and 4, 4, 7
15248 ; PWR6-NEXT: rldicl 3, 3, 8, 56
15249 ; PWR6-NEXT: li 5, 14
15250 ; PWR6-NEXT: mulld 4, 4, 9
15251 ; PWR6-NEXT: subc 6, 3, 5
15252 ; PWR6-NEXT: rldicl 4, 4, 8, 56
15253 ; PWR6-NEXT: subfe 3, 3, 3
15254 ; PWR6-NEXT: subc 5, 4, 5
15255 ; PWR6-NEXT: subfe 4, 4, 4
15258 ; PWR7-LABEL: ult_14_v2i64:
15260 ; PWR7-NEXT: addi 3, 1, -32
15261 ; PWR7-NEXT: li 5, -1
15262 ; PWR7-NEXT: stxvd2x 34, 0, 3
15263 ; PWR7-NEXT: ld 4, -24(1)
15264 ; PWR7-NEXT: ld 3, -32(1)
15265 ; PWR7-NEXT: popcntd 4, 4
15266 ; PWR7-NEXT: popcntd 3, 3
15267 ; PWR7-NEXT: cmpldi 4, 14
15268 ; PWR7-NEXT: li 4, 0
15269 ; PWR7-NEXT: isellt 6, 5, 4
15270 ; PWR7-NEXT: cmpldi 3, 14
15271 ; PWR7-NEXT: isellt 3, 5, 4
15272 ; PWR7-NEXT: std 6, -8(1)
15273 ; PWR7-NEXT: std 3, -16(1)
15274 ; PWR7-NEXT: addi 3, 1, -16
15275 ; PWR7-NEXT: lxvd2x 34, 0, 3
15278 ; PWR8-LABEL: ult_14_v2i64:
15280 ; PWR8-NEXT: addis 3, 2, .LCPI125_0@toc@ha
15281 ; PWR8-NEXT: vpopcntd 2, 2
15282 ; PWR8-NEXT: addi 3, 3, .LCPI125_0@toc@l
15283 ; PWR8-NEXT: lxvd2x 35, 0, 3
15284 ; PWR8-NEXT: vcmpgtud 2, 3, 2
15287 ; PWR9-LABEL: ult_14_v2i64:
15289 ; PWR9-NEXT: addis 3, 2, .LCPI125_0@toc@ha
15290 ; PWR9-NEXT: vpopcntd 2, 2
15291 ; PWR9-NEXT: addi 3, 3, .LCPI125_0@toc@l
15292 ; PWR9-NEXT: lxv 35, 0(3)
15293 ; PWR9-NEXT: vcmpgtud 2, 3, 2
15295 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
15296 %3 = icmp ult <2 x i64> %2, <i64 14, i64 14>
15297 %4 = sext <2 x i1> %3 to <2 x i64>
15301 define <2 x i64> @ugt_14_v2i64(<2 x i64> %0) {
15302 ; PWR5-LABEL: ugt_14_v2i64:
15304 ; PWR5-NEXT: lis 5, 21845
15305 ; PWR5-NEXT: lis 6, 13107
15306 ; PWR5-NEXT: ori 5, 5, 21845
15307 ; PWR5-NEXT: rotldi 8, 4, 63
15308 ; PWR5-NEXT: rotldi 9, 3, 63
15309 ; PWR5-NEXT: rldimi 5, 5, 32, 0
15310 ; PWR5-NEXT: and 8, 8, 5
15311 ; PWR5-NEXT: and 5, 9, 5
15312 ; PWR5-NEXT: ori 6, 6, 13107
15313 ; PWR5-NEXT: sub 3, 3, 5
15314 ; PWR5-NEXT: rldimi 6, 6, 32, 0
15315 ; PWR5-NEXT: sub 4, 4, 8
15316 ; PWR5-NEXT: and 8, 3, 6
15317 ; PWR5-NEXT: rotldi 3, 3, 62
15318 ; PWR5-NEXT: and 3, 3, 6
15319 ; PWR5-NEXT: lis 7, 3855
15320 ; PWR5-NEXT: and 5, 4, 6
15321 ; PWR5-NEXT: rotldi 4, 4, 62
15322 ; PWR5-NEXT: add 3, 8, 3
15323 ; PWR5-NEXT: lis 9, 257
15324 ; PWR5-NEXT: ori 7, 7, 3855
15325 ; PWR5-NEXT: and 4, 4, 6
15326 ; PWR5-NEXT: rldicl 6, 3, 60, 4
15327 ; PWR5-NEXT: ori 9, 9, 257
15328 ; PWR5-NEXT: rldimi 7, 7, 32, 0
15329 ; PWR5-NEXT: add 4, 5, 4
15330 ; PWR5-NEXT: add 3, 3, 6
15331 ; PWR5-NEXT: rldimi 9, 9, 32, 0
15332 ; PWR5-NEXT: rldicl 5, 4, 60, 4
15333 ; PWR5-NEXT: and 3, 3, 7
15334 ; PWR5-NEXT: add 4, 4, 5
15335 ; PWR5-NEXT: mulld 3, 3, 9
15336 ; PWR5-NEXT: and 4, 4, 7
15337 ; PWR5-NEXT: rldicl 3, 3, 8, 56
15338 ; PWR5-NEXT: mulld 4, 4, 9
15339 ; PWR5-NEXT: li 5, 14
15340 ; PWR5-NEXT: subfic 3, 3, 14
15341 ; PWR5-NEXT: rldicl 4, 4, 8, 56
15342 ; PWR5-NEXT: subfe 3, 5, 5
15343 ; PWR5-NEXT: subfic 4, 4, 14
15344 ; PWR5-NEXT: subfe 4, 5, 5
15347 ; PWR6-LABEL: ugt_14_v2i64:
15349 ; PWR6-NEXT: lis 5, 21845
15350 ; PWR6-NEXT: lis 6, 13107
15351 ; PWR6-NEXT: ori 5, 5, 21845
15352 ; PWR6-NEXT: rotldi 8, 4, 63
15353 ; PWR6-NEXT: rotldi 9, 3, 63
15354 ; PWR6-NEXT: rldimi 5, 5, 32, 0
15355 ; PWR6-NEXT: and 8, 8, 5
15356 ; PWR6-NEXT: and 5, 9, 5
15357 ; PWR6-NEXT: ori 6, 6, 13107
15358 ; PWR6-NEXT: sub 3, 3, 5
15359 ; PWR6-NEXT: rldimi 6, 6, 32, 0
15360 ; PWR6-NEXT: sub 4, 4, 8
15361 ; PWR6-NEXT: and 8, 3, 6
15362 ; PWR6-NEXT: rotldi 3, 3, 62
15363 ; PWR6-NEXT: and 3, 3, 6
15364 ; PWR6-NEXT: lis 7, 3855
15365 ; PWR6-NEXT: and 5, 4, 6
15366 ; PWR6-NEXT: rotldi 4, 4, 62
15367 ; PWR6-NEXT: add 3, 8, 3
15368 ; PWR6-NEXT: lis 9, 257
15369 ; PWR6-NEXT: ori 7, 7, 3855
15370 ; PWR6-NEXT: and 4, 4, 6
15371 ; PWR6-NEXT: rldicl 6, 3, 60, 4
15372 ; PWR6-NEXT: ori 9, 9, 257
15373 ; PWR6-NEXT: rldimi 7, 7, 32, 0
15374 ; PWR6-NEXT: add 4, 5, 4
15375 ; PWR6-NEXT: add 3, 3, 6
15376 ; PWR6-NEXT: rldimi 9, 9, 32, 0
15377 ; PWR6-NEXT: rldicl 5, 4, 60, 4
15378 ; PWR6-NEXT: and 3, 3, 7
15379 ; PWR6-NEXT: add 4, 4, 5
15380 ; PWR6-NEXT: mulld 3, 3, 9
15381 ; PWR6-NEXT: and 4, 4, 7
15382 ; PWR6-NEXT: rldicl 3, 3, 8, 56
15383 ; PWR6-NEXT: mulld 4, 4, 9
15384 ; PWR6-NEXT: li 5, 14
15385 ; PWR6-NEXT: subfic 3, 3, 14
15386 ; PWR6-NEXT: rldicl 4, 4, 8, 56
15387 ; PWR6-NEXT: subfe 3, 5, 5
15388 ; PWR6-NEXT: subfic 4, 4, 14
15389 ; PWR6-NEXT: subfe 4, 5, 5
15392 ; PWR7-LABEL: ugt_14_v2i64:
15394 ; PWR7-NEXT: addi 3, 1, -32
15395 ; PWR7-NEXT: li 5, -1
15396 ; PWR7-NEXT: stxvd2x 34, 0, 3
15397 ; PWR7-NEXT: ld 4, -24(1)
15398 ; PWR7-NEXT: ld 3, -32(1)
15399 ; PWR7-NEXT: popcntd 4, 4
15400 ; PWR7-NEXT: popcntd 3, 3
15401 ; PWR7-NEXT: cmpldi 4, 14
15402 ; PWR7-NEXT: li 4, 0
15403 ; PWR7-NEXT: iselgt 6, 5, 4
15404 ; PWR7-NEXT: cmpldi 3, 14
15405 ; PWR7-NEXT: iselgt 3, 5, 4
15406 ; PWR7-NEXT: std 6, -8(1)
15407 ; PWR7-NEXT: std 3, -16(1)
15408 ; PWR7-NEXT: addi 3, 1, -16
15409 ; PWR7-NEXT: lxvd2x 34, 0, 3
15412 ; PWR8-LABEL: ugt_14_v2i64:
15414 ; PWR8-NEXT: addis 3, 2, .LCPI126_0@toc@ha
15415 ; PWR8-NEXT: vpopcntd 2, 2
15416 ; PWR8-NEXT: addi 3, 3, .LCPI126_0@toc@l
15417 ; PWR8-NEXT: lxvd2x 35, 0, 3
15418 ; PWR8-NEXT: vcmpgtud 2, 2, 3
15421 ; PWR9-LABEL: ugt_14_v2i64:
15423 ; PWR9-NEXT: addis 3, 2, .LCPI126_0@toc@ha
15424 ; PWR9-NEXT: vpopcntd 2, 2
15425 ; PWR9-NEXT: addi 3, 3, .LCPI126_0@toc@l
15426 ; PWR9-NEXT: lxv 35, 0(3)
15427 ; PWR9-NEXT: vcmpgtud 2, 2, 3
15429 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
15430 %3 = icmp ugt <2 x i64> %2, <i64 14, i64 14>
15431 %4 = sext <2 x i1> %3 to <2 x i64>
15435 define <2 x i64> @ult_15_v2i64(<2 x i64> %0) {
15436 ; PWR5-LABEL: ult_15_v2i64:
15438 ; PWR5-NEXT: lis 5, 21845
15439 ; PWR5-NEXT: lis 6, 13107
15440 ; PWR5-NEXT: ori 5, 5, 21845
15441 ; PWR5-NEXT: rotldi 8, 4, 63
15442 ; PWR5-NEXT: rotldi 9, 3, 63
15443 ; PWR5-NEXT: rldimi 5, 5, 32, 0
15444 ; PWR5-NEXT: and 8, 8, 5
15445 ; PWR5-NEXT: and 5, 9, 5
15446 ; PWR5-NEXT: ori 6, 6, 13107
15447 ; PWR5-NEXT: sub 3, 3, 5
15448 ; PWR5-NEXT: rldimi 6, 6, 32, 0
15449 ; PWR5-NEXT: sub 4, 4, 8
15450 ; PWR5-NEXT: and 8, 3, 6
15451 ; PWR5-NEXT: rotldi 3, 3, 62
15452 ; PWR5-NEXT: and 3, 3, 6
15453 ; PWR5-NEXT: lis 7, 3855
15454 ; PWR5-NEXT: and 5, 4, 6
15455 ; PWR5-NEXT: rotldi 4, 4, 62
15456 ; PWR5-NEXT: add 3, 8, 3
15457 ; PWR5-NEXT: lis 9, 257
15458 ; PWR5-NEXT: ori 7, 7, 3855
15459 ; PWR5-NEXT: and 4, 4, 6
15460 ; PWR5-NEXT: rldicl 6, 3, 60, 4
15461 ; PWR5-NEXT: ori 9, 9, 257
15462 ; PWR5-NEXT: rldimi 7, 7, 32, 0
15463 ; PWR5-NEXT: add 4, 5, 4
15464 ; PWR5-NEXT: add 3, 3, 6
15465 ; PWR5-NEXT: rldimi 9, 9, 32, 0
15466 ; PWR5-NEXT: rldicl 5, 4, 60, 4
15467 ; PWR5-NEXT: and 3, 3, 7
15468 ; PWR5-NEXT: add 4, 4, 5
15469 ; PWR5-NEXT: mulld 3, 3, 9
15470 ; PWR5-NEXT: and 4, 4, 7
15471 ; PWR5-NEXT: rldicl 3, 3, 8, 56
15472 ; PWR5-NEXT: li 5, 15
15473 ; PWR5-NEXT: mulld 4, 4, 9
15474 ; PWR5-NEXT: subc 6, 3, 5
15475 ; PWR5-NEXT: rldicl 4, 4, 8, 56
15476 ; PWR5-NEXT: subfe 3, 3, 3
15477 ; PWR5-NEXT: subc 5, 4, 5
15478 ; PWR5-NEXT: subfe 4, 4, 4
15481 ; PWR6-LABEL: ult_15_v2i64:
15483 ; PWR6-NEXT: lis 5, 21845
15484 ; PWR6-NEXT: lis 6, 13107
15485 ; PWR6-NEXT: ori 5, 5, 21845
15486 ; PWR6-NEXT: rotldi 8, 4, 63
15487 ; PWR6-NEXT: rotldi 9, 3, 63
15488 ; PWR6-NEXT: rldimi 5, 5, 32, 0
15489 ; PWR6-NEXT: and 8, 8, 5
15490 ; PWR6-NEXT: and 5, 9, 5
15491 ; PWR6-NEXT: ori 6, 6, 13107
15492 ; PWR6-NEXT: sub 3, 3, 5
15493 ; PWR6-NEXT: rldimi 6, 6, 32, 0
15494 ; PWR6-NEXT: sub 4, 4, 8
15495 ; PWR6-NEXT: and 8, 3, 6
15496 ; PWR6-NEXT: rotldi 3, 3, 62
15497 ; PWR6-NEXT: and 3, 3, 6
15498 ; PWR6-NEXT: lis 7, 3855
15499 ; PWR6-NEXT: and 5, 4, 6
15500 ; PWR6-NEXT: rotldi 4, 4, 62
15501 ; PWR6-NEXT: add 3, 8, 3
15502 ; PWR6-NEXT: lis 9, 257
15503 ; PWR6-NEXT: ori 7, 7, 3855
15504 ; PWR6-NEXT: and 4, 4, 6
15505 ; PWR6-NEXT: rldicl 6, 3, 60, 4
15506 ; PWR6-NEXT: ori 9, 9, 257
15507 ; PWR6-NEXT: rldimi 7, 7, 32, 0
15508 ; PWR6-NEXT: add 4, 5, 4
15509 ; PWR6-NEXT: add 3, 3, 6
15510 ; PWR6-NEXT: rldimi 9, 9, 32, 0
15511 ; PWR6-NEXT: rldicl 5, 4, 60, 4
15512 ; PWR6-NEXT: and 3, 3, 7
15513 ; PWR6-NEXT: add 4, 4, 5
15514 ; PWR6-NEXT: mulld 3, 3, 9
15515 ; PWR6-NEXT: and 4, 4, 7
15516 ; PWR6-NEXT: rldicl 3, 3, 8, 56
15517 ; PWR6-NEXT: li 5, 15
15518 ; PWR6-NEXT: mulld 4, 4, 9
15519 ; PWR6-NEXT: subc 6, 3, 5
15520 ; PWR6-NEXT: rldicl 4, 4, 8, 56
15521 ; PWR6-NEXT: subfe 3, 3, 3
15522 ; PWR6-NEXT: subc 5, 4, 5
15523 ; PWR6-NEXT: subfe 4, 4, 4
15526 ; PWR7-LABEL: ult_15_v2i64:
15528 ; PWR7-NEXT: addi 3, 1, -32
15529 ; PWR7-NEXT: li 5, -1
15530 ; PWR7-NEXT: stxvd2x 34, 0, 3
15531 ; PWR7-NEXT: ld 4, -24(1)
15532 ; PWR7-NEXT: ld 3, -32(1)
15533 ; PWR7-NEXT: popcntd 4, 4
15534 ; PWR7-NEXT: popcntd 3, 3
15535 ; PWR7-NEXT: cmpldi 4, 15
15536 ; PWR7-NEXT: li 4, 0
15537 ; PWR7-NEXT: isellt 6, 5, 4
15538 ; PWR7-NEXT: cmpldi 3, 15
15539 ; PWR7-NEXT: isellt 3, 5, 4
15540 ; PWR7-NEXT: std 6, -8(1)
15541 ; PWR7-NEXT: std 3, -16(1)
15542 ; PWR7-NEXT: addi 3, 1, -16
15543 ; PWR7-NEXT: lxvd2x 34, 0, 3
15546 ; PWR8-LABEL: ult_15_v2i64:
15548 ; PWR8-NEXT: addis 3, 2, .LCPI127_0@toc@ha
15549 ; PWR8-NEXT: vpopcntd 2, 2
15550 ; PWR8-NEXT: addi 3, 3, .LCPI127_0@toc@l
15551 ; PWR8-NEXT: lxvd2x 35, 0, 3
15552 ; PWR8-NEXT: vcmpgtud 2, 3, 2
15555 ; PWR9-LABEL: ult_15_v2i64:
15557 ; PWR9-NEXT: addis 3, 2, .LCPI127_0@toc@ha
15558 ; PWR9-NEXT: vpopcntd 2, 2
15559 ; PWR9-NEXT: addi 3, 3, .LCPI127_0@toc@l
15560 ; PWR9-NEXT: lxv 35, 0(3)
15561 ; PWR9-NEXT: vcmpgtud 2, 3, 2
15563 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
15564 %3 = icmp ult <2 x i64> %2, <i64 15, i64 15>
15565 %4 = sext <2 x i1> %3 to <2 x i64>
15569 define <2 x i64> @ugt_15_v2i64(<2 x i64> %0) {
15570 ; PWR5-LABEL: ugt_15_v2i64:
15572 ; PWR5-NEXT: lis 5, 21845
15573 ; PWR5-NEXT: lis 6, 13107
15574 ; PWR5-NEXT: ori 5, 5, 21845
15575 ; PWR5-NEXT: rotldi 8, 4, 63
15576 ; PWR5-NEXT: rotldi 9, 3, 63
15577 ; PWR5-NEXT: rldimi 5, 5, 32, 0
15578 ; PWR5-NEXT: and 8, 8, 5
15579 ; PWR5-NEXT: and 5, 9, 5
15580 ; PWR5-NEXT: ori 6, 6, 13107
15581 ; PWR5-NEXT: sub 3, 3, 5
15582 ; PWR5-NEXT: rldimi 6, 6, 32, 0
15583 ; PWR5-NEXT: sub 4, 4, 8
15584 ; PWR5-NEXT: and 8, 3, 6
15585 ; PWR5-NEXT: rotldi 3, 3, 62
15586 ; PWR5-NEXT: and 3, 3, 6
15587 ; PWR5-NEXT: lis 7, 3855
15588 ; PWR5-NEXT: and 5, 4, 6
15589 ; PWR5-NEXT: rotldi 4, 4, 62
15590 ; PWR5-NEXT: add 3, 8, 3
15591 ; PWR5-NEXT: lis 9, 257
15592 ; PWR5-NEXT: ori 7, 7, 3855
15593 ; PWR5-NEXT: and 4, 4, 6
15594 ; PWR5-NEXT: rldicl 6, 3, 60, 4
15595 ; PWR5-NEXT: ori 9, 9, 257
15596 ; PWR5-NEXT: rldimi 7, 7, 32, 0
15597 ; PWR5-NEXT: add 4, 5, 4
15598 ; PWR5-NEXT: add 3, 3, 6
15599 ; PWR5-NEXT: rldimi 9, 9, 32, 0
15600 ; PWR5-NEXT: rldicl 5, 4, 60, 4
15601 ; PWR5-NEXT: and 3, 3, 7
15602 ; PWR5-NEXT: add 4, 4, 5
15603 ; PWR5-NEXT: mulld 3, 3, 9
15604 ; PWR5-NEXT: and 4, 4, 7
15605 ; PWR5-NEXT: rldicl 3, 3, 8, 56
15606 ; PWR5-NEXT: mulld 4, 4, 9
15607 ; PWR5-NEXT: li 5, 15
15608 ; PWR5-NEXT: subfic 3, 3, 15
15609 ; PWR5-NEXT: rldicl 4, 4, 8, 56
15610 ; PWR5-NEXT: subfe 3, 5, 5
15611 ; PWR5-NEXT: subfic 4, 4, 15
15612 ; PWR5-NEXT: subfe 4, 5, 5
15615 ; PWR6-LABEL: ugt_15_v2i64:
15617 ; PWR6-NEXT: lis 5, 21845
15618 ; PWR6-NEXT: lis 6, 13107
15619 ; PWR6-NEXT: ori 5, 5, 21845
15620 ; PWR6-NEXT: rotldi 8, 4, 63
15621 ; PWR6-NEXT: rotldi 9, 3, 63
15622 ; PWR6-NEXT: rldimi 5, 5, 32, 0
15623 ; PWR6-NEXT: and 8, 8, 5
15624 ; PWR6-NEXT: and 5, 9, 5
15625 ; PWR6-NEXT: ori 6, 6, 13107
15626 ; PWR6-NEXT: sub 3, 3, 5
15627 ; PWR6-NEXT: rldimi 6, 6, 32, 0
15628 ; PWR6-NEXT: sub 4, 4, 8
15629 ; PWR6-NEXT: and 8, 3, 6
15630 ; PWR6-NEXT: rotldi 3, 3, 62
15631 ; PWR6-NEXT: and 3, 3, 6
15632 ; PWR6-NEXT: lis 7, 3855
15633 ; PWR6-NEXT: and 5, 4, 6
15634 ; PWR6-NEXT: rotldi 4, 4, 62
15635 ; PWR6-NEXT: add 3, 8, 3
15636 ; PWR6-NEXT: lis 9, 257
15637 ; PWR6-NEXT: ori 7, 7, 3855
15638 ; PWR6-NEXT: and 4, 4, 6
15639 ; PWR6-NEXT: rldicl 6, 3, 60, 4
15640 ; PWR6-NEXT: ori 9, 9, 257
15641 ; PWR6-NEXT: rldimi 7, 7, 32, 0
15642 ; PWR6-NEXT: add 4, 5, 4
15643 ; PWR6-NEXT: add 3, 3, 6
15644 ; PWR6-NEXT: rldimi 9, 9, 32, 0
15645 ; PWR6-NEXT: rldicl 5, 4, 60, 4
15646 ; PWR6-NEXT: and 3, 3, 7
15647 ; PWR6-NEXT: add 4, 4, 5
15648 ; PWR6-NEXT: mulld 3, 3, 9
15649 ; PWR6-NEXT: and 4, 4, 7
15650 ; PWR6-NEXT: rldicl 3, 3, 8, 56
15651 ; PWR6-NEXT: mulld 4, 4, 9
15652 ; PWR6-NEXT: li 5, 15
15653 ; PWR6-NEXT: subfic 3, 3, 15
15654 ; PWR6-NEXT: rldicl 4, 4, 8, 56
15655 ; PWR6-NEXT: subfe 3, 5, 5
15656 ; PWR6-NEXT: subfic 4, 4, 15
15657 ; PWR6-NEXT: subfe 4, 5, 5
15660 ; PWR7-LABEL: ugt_15_v2i64:
15662 ; PWR7-NEXT: addi 3, 1, -32
15663 ; PWR7-NEXT: li 5, -1
15664 ; PWR7-NEXT: stxvd2x 34, 0, 3
15665 ; PWR7-NEXT: ld 4, -24(1)
15666 ; PWR7-NEXT: ld 3, -32(1)
15667 ; PWR7-NEXT: popcntd 4, 4
15668 ; PWR7-NEXT: popcntd 3, 3
15669 ; PWR7-NEXT: cmpldi 4, 15
15670 ; PWR7-NEXT: li 4, 0
15671 ; PWR7-NEXT: iselgt 6, 5, 4
15672 ; PWR7-NEXT: cmpldi 3, 15
15673 ; PWR7-NEXT: iselgt 3, 5, 4
15674 ; PWR7-NEXT: std 6, -8(1)
15675 ; PWR7-NEXT: std 3, -16(1)
15676 ; PWR7-NEXT: addi 3, 1, -16
15677 ; PWR7-NEXT: lxvd2x 34, 0, 3
15680 ; PWR8-LABEL: ugt_15_v2i64:
15682 ; PWR8-NEXT: addis 3, 2, .LCPI128_0@toc@ha
15683 ; PWR8-NEXT: vpopcntd 2, 2
15684 ; PWR8-NEXT: addi 3, 3, .LCPI128_0@toc@l
15685 ; PWR8-NEXT: lxvd2x 35, 0, 3
15686 ; PWR8-NEXT: vcmpgtud 2, 2, 3
15689 ; PWR9-LABEL: ugt_15_v2i64:
15691 ; PWR9-NEXT: addis 3, 2, .LCPI128_0@toc@ha
15692 ; PWR9-NEXT: vpopcntd 2, 2
15693 ; PWR9-NEXT: addi 3, 3, .LCPI128_0@toc@l
15694 ; PWR9-NEXT: lxv 35, 0(3)
15695 ; PWR9-NEXT: vcmpgtud 2, 2, 3
15697 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
15698 %3 = icmp ugt <2 x i64> %2, <i64 15, i64 15>
15699 %4 = sext <2 x i1> %3 to <2 x i64>
15703 define <2 x i64> @ult_16_v2i64(<2 x i64> %0) {
15704 ; PWR5-LABEL: ult_16_v2i64:
15706 ; PWR5-NEXT: lis 5, 21845
15707 ; PWR5-NEXT: lis 6, 13107
15708 ; PWR5-NEXT: ori 5, 5, 21845
15709 ; PWR5-NEXT: rotldi 8, 4, 63
15710 ; PWR5-NEXT: rotldi 9, 3, 63
15711 ; PWR5-NEXT: rldimi 5, 5, 32, 0
15712 ; PWR5-NEXT: and 8, 8, 5
15713 ; PWR5-NEXT: and 5, 9, 5
15714 ; PWR5-NEXT: ori 6, 6, 13107
15715 ; PWR5-NEXT: sub 3, 3, 5
15716 ; PWR5-NEXT: rldimi 6, 6, 32, 0
15717 ; PWR5-NEXT: sub 4, 4, 8
15718 ; PWR5-NEXT: and 8, 3, 6
15719 ; PWR5-NEXT: rotldi 3, 3, 62
15720 ; PWR5-NEXT: and 3, 3, 6
15721 ; PWR5-NEXT: lis 7, 3855
15722 ; PWR5-NEXT: and 5, 4, 6
15723 ; PWR5-NEXT: rotldi 4, 4, 62
15724 ; PWR5-NEXT: add 3, 8, 3
15725 ; PWR5-NEXT: lis 9, 257
15726 ; PWR5-NEXT: ori 7, 7, 3855
15727 ; PWR5-NEXT: and 4, 4, 6
15728 ; PWR5-NEXT: rldicl 6, 3, 60, 4
15729 ; PWR5-NEXT: ori 9, 9, 257
15730 ; PWR5-NEXT: rldimi 7, 7, 32, 0
15731 ; PWR5-NEXT: add 4, 5, 4
15732 ; PWR5-NEXT: add 3, 3, 6
15733 ; PWR5-NEXT: rldimi 9, 9, 32, 0
15734 ; PWR5-NEXT: rldicl 5, 4, 60, 4
15735 ; PWR5-NEXT: and 3, 3, 7
15736 ; PWR5-NEXT: add 4, 4, 5
15737 ; PWR5-NEXT: mulld 3, 3, 9
15738 ; PWR5-NEXT: and 4, 4, 7
15739 ; PWR5-NEXT: rldicl 3, 3, 8, 56
15740 ; PWR5-NEXT: li 5, 16
15741 ; PWR5-NEXT: mulld 4, 4, 9
15742 ; PWR5-NEXT: subc 6, 3, 5
15743 ; PWR5-NEXT: rldicl 4, 4, 8, 56
15744 ; PWR5-NEXT: subfe 3, 3, 3
15745 ; PWR5-NEXT: subc 5, 4, 5
15746 ; PWR5-NEXT: subfe 4, 4, 4
15749 ; PWR6-LABEL: ult_16_v2i64:
15751 ; PWR6-NEXT: lis 5, 21845
15752 ; PWR6-NEXT: lis 6, 13107
15753 ; PWR6-NEXT: ori 5, 5, 21845
15754 ; PWR6-NEXT: rotldi 8, 4, 63
15755 ; PWR6-NEXT: rotldi 9, 3, 63
15756 ; PWR6-NEXT: rldimi 5, 5, 32, 0
15757 ; PWR6-NEXT: and 8, 8, 5
15758 ; PWR6-NEXT: and 5, 9, 5
15759 ; PWR6-NEXT: ori 6, 6, 13107
15760 ; PWR6-NEXT: sub 3, 3, 5
15761 ; PWR6-NEXT: rldimi 6, 6, 32, 0
15762 ; PWR6-NEXT: sub 4, 4, 8
15763 ; PWR6-NEXT: and 8, 3, 6
15764 ; PWR6-NEXT: rotldi 3, 3, 62
15765 ; PWR6-NEXT: and 3, 3, 6
15766 ; PWR6-NEXT: lis 7, 3855
15767 ; PWR6-NEXT: and 5, 4, 6
15768 ; PWR6-NEXT: rotldi 4, 4, 62
15769 ; PWR6-NEXT: add 3, 8, 3
15770 ; PWR6-NEXT: lis 9, 257
15771 ; PWR6-NEXT: ori 7, 7, 3855
15772 ; PWR6-NEXT: and 4, 4, 6
15773 ; PWR6-NEXT: rldicl 6, 3, 60, 4
15774 ; PWR6-NEXT: ori 9, 9, 257
15775 ; PWR6-NEXT: rldimi 7, 7, 32, 0
15776 ; PWR6-NEXT: add 4, 5, 4
15777 ; PWR6-NEXT: add 3, 3, 6
15778 ; PWR6-NEXT: rldimi 9, 9, 32, 0
15779 ; PWR6-NEXT: rldicl 5, 4, 60, 4
15780 ; PWR6-NEXT: and 3, 3, 7
15781 ; PWR6-NEXT: add 4, 4, 5
15782 ; PWR6-NEXT: mulld 3, 3, 9
15783 ; PWR6-NEXT: and 4, 4, 7
15784 ; PWR6-NEXT: rldicl 3, 3, 8, 56
15785 ; PWR6-NEXT: li 5, 16
15786 ; PWR6-NEXT: mulld 4, 4, 9
15787 ; PWR6-NEXT: subc 6, 3, 5
15788 ; PWR6-NEXT: rldicl 4, 4, 8, 56
15789 ; PWR6-NEXT: subfe 3, 3, 3
15790 ; PWR6-NEXT: subc 5, 4, 5
15791 ; PWR6-NEXT: subfe 4, 4, 4
15794 ; PWR7-LABEL: ult_16_v2i64:
15796 ; PWR7-NEXT: addi 3, 1, -32
15797 ; PWR7-NEXT: li 5, -1
15798 ; PWR7-NEXT: stxvd2x 34, 0, 3
15799 ; PWR7-NEXT: ld 4, -24(1)
15800 ; PWR7-NEXT: ld 3, -32(1)
15801 ; PWR7-NEXT: popcntd 4, 4
15802 ; PWR7-NEXT: popcntd 3, 3
15803 ; PWR7-NEXT: cmpldi 4, 16
15804 ; PWR7-NEXT: li 4, 0
15805 ; PWR7-NEXT: isellt 6, 5, 4
15806 ; PWR7-NEXT: cmpldi 3, 16
15807 ; PWR7-NEXT: isellt 3, 5, 4
15808 ; PWR7-NEXT: std 6, -8(1)
15809 ; PWR7-NEXT: std 3, -16(1)
15810 ; PWR7-NEXT: addi 3, 1, -16
15811 ; PWR7-NEXT: lxvd2x 34, 0, 3
15814 ; PWR8-LABEL: ult_16_v2i64:
15816 ; PWR8-NEXT: addis 3, 2, .LCPI129_0@toc@ha
15817 ; PWR8-NEXT: vpopcntd 2, 2
15818 ; PWR8-NEXT: addi 3, 3, .LCPI129_0@toc@l
15819 ; PWR8-NEXT: lxvd2x 35, 0, 3
15820 ; PWR8-NEXT: vcmpgtud 2, 3, 2
15823 ; PWR9-LABEL: ult_16_v2i64:
15825 ; PWR9-NEXT: addis 3, 2, .LCPI129_0@toc@ha
15826 ; PWR9-NEXT: vpopcntd 2, 2
15827 ; PWR9-NEXT: addi 3, 3, .LCPI129_0@toc@l
15828 ; PWR9-NEXT: lxv 35, 0(3)
15829 ; PWR9-NEXT: vcmpgtud 2, 3, 2
15831 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
15832 %3 = icmp ult <2 x i64> %2, <i64 16, i64 16>
15833 %4 = sext <2 x i1> %3 to <2 x i64>
15837 define <2 x i64> @ugt_16_v2i64(<2 x i64> %0) {
15838 ; PWR5-LABEL: ugt_16_v2i64:
15840 ; PWR5-NEXT: lis 5, 21845
15841 ; PWR5-NEXT: lis 6, 13107
15842 ; PWR5-NEXT: ori 5, 5, 21845
15843 ; PWR5-NEXT: rotldi 8, 4, 63
15844 ; PWR5-NEXT: rotldi 9, 3, 63
15845 ; PWR5-NEXT: rldimi 5, 5, 32, 0
15846 ; PWR5-NEXT: and 8, 8, 5
15847 ; PWR5-NEXT: and 5, 9, 5
15848 ; PWR5-NEXT: ori 6, 6, 13107
15849 ; PWR5-NEXT: sub 3, 3, 5
15850 ; PWR5-NEXT: rldimi 6, 6, 32, 0
15851 ; PWR5-NEXT: sub 4, 4, 8
15852 ; PWR5-NEXT: and 8, 3, 6
15853 ; PWR5-NEXT: rotldi 3, 3, 62
15854 ; PWR5-NEXT: and 3, 3, 6
15855 ; PWR5-NEXT: lis 7, 3855
15856 ; PWR5-NEXT: and 5, 4, 6
15857 ; PWR5-NEXT: rotldi 4, 4, 62
15858 ; PWR5-NEXT: add 3, 8, 3
15859 ; PWR5-NEXT: lis 9, 257
15860 ; PWR5-NEXT: ori 7, 7, 3855
15861 ; PWR5-NEXT: and 4, 4, 6
15862 ; PWR5-NEXT: rldicl 6, 3, 60, 4
15863 ; PWR5-NEXT: ori 9, 9, 257
15864 ; PWR5-NEXT: rldimi 7, 7, 32, 0
15865 ; PWR5-NEXT: add 4, 5, 4
15866 ; PWR5-NEXT: add 3, 3, 6
15867 ; PWR5-NEXT: rldimi 9, 9, 32, 0
15868 ; PWR5-NEXT: rldicl 5, 4, 60, 4
15869 ; PWR5-NEXT: and 3, 3, 7
15870 ; PWR5-NEXT: add 4, 4, 5
15871 ; PWR5-NEXT: mulld 3, 3, 9
15872 ; PWR5-NEXT: and 4, 4, 7
15873 ; PWR5-NEXT: rldicl 3, 3, 8, 56
15874 ; PWR5-NEXT: mulld 4, 4, 9
15875 ; PWR5-NEXT: li 5, 16
15876 ; PWR5-NEXT: subfic 3, 3, 16
15877 ; PWR5-NEXT: rldicl 4, 4, 8, 56
15878 ; PWR5-NEXT: subfe 3, 5, 5
15879 ; PWR5-NEXT: subfic 4, 4, 16
15880 ; PWR5-NEXT: subfe 4, 5, 5
15883 ; PWR6-LABEL: ugt_16_v2i64:
15885 ; PWR6-NEXT: lis 5, 21845
15886 ; PWR6-NEXT: lis 6, 13107
15887 ; PWR6-NEXT: ori 5, 5, 21845
15888 ; PWR6-NEXT: rotldi 8, 4, 63
15889 ; PWR6-NEXT: rotldi 9, 3, 63
15890 ; PWR6-NEXT: rldimi 5, 5, 32, 0
15891 ; PWR6-NEXT: and 8, 8, 5
15892 ; PWR6-NEXT: and 5, 9, 5
15893 ; PWR6-NEXT: ori 6, 6, 13107
15894 ; PWR6-NEXT: sub 3, 3, 5
15895 ; PWR6-NEXT: rldimi 6, 6, 32, 0
15896 ; PWR6-NEXT: sub 4, 4, 8
15897 ; PWR6-NEXT: and 8, 3, 6
15898 ; PWR6-NEXT: rotldi 3, 3, 62
15899 ; PWR6-NEXT: and 3, 3, 6
15900 ; PWR6-NEXT: lis 7, 3855
15901 ; PWR6-NEXT: and 5, 4, 6
15902 ; PWR6-NEXT: rotldi 4, 4, 62
15903 ; PWR6-NEXT: add 3, 8, 3
15904 ; PWR6-NEXT: lis 9, 257
15905 ; PWR6-NEXT: ori 7, 7, 3855
15906 ; PWR6-NEXT: and 4, 4, 6
15907 ; PWR6-NEXT: rldicl 6, 3, 60, 4
15908 ; PWR6-NEXT: ori 9, 9, 257
15909 ; PWR6-NEXT: rldimi 7, 7, 32, 0
15910 ; PWR6-NEXT: add 4, 5, 4
15911 ; PWR6-NEXT: add 3, 3, 6
15912 ; PWR6-NEXT: rldimi 9, 9, 32, 0
15913 ; PWR6-NEXT: rldicl 5, 4, 60, 4
15914 ; PWR6-NEXT: and 3, 3, 7
15915 ; PWR6-NEXT: add 4, 4, 5
15916 ; PWR6-NEXT: mulld 3, 3, 9
15917 ; PWR6-NEXT: and 4, 4, 7
15918 ; PWR6-NEXT: rldicl 3, 3, 8, 56
15919 ; PWR6-NEXT: mulld 4, 4, 9
15920 ; PWR6-NEXT: li 5, 16
15921 ; PWR6-NEXT: subfic 3, 3, 16
15922 ; PWR6-NEXT: rldicl 4, 4, 8, 56
15923 ; PWR6-NEXT: subfe 3, 5, 5
15924 ; PWR6-NEXT: subfic 4, 4, 16
15925 ; PWR6-NEXT: subfe 4, 5, 5
15928 ; PWR7-LABEL: ugt_16_v2i64:
15930 ; PWR7-NEXT: addi 3, 1, -32
15931 ; PWR7-NEXT: li 5, -1
15932 ; PWR7-NEXT: stxvd2x 34, 0, 3
15933 ; PWR7-NEXT: ld 4, -24(1)
15934 ; PWR7-NEXT: ld 3, -32(1)
15935 ; PWR7-NEXT: popcntd 4, 4
15936 ; PWR7-NEXT: popcntd 3, 3
15937 ; PWR7-NEXT: cmpldi 4, 16
15938 ; PWR7-NEXT: li 4, 0
15939 ; PWR7-NEXT: iselgt 6, 5, 4
15940 ; PWR7-NEXT: cmpldi 3, 16
15941 ; PWR7-NEXT: iselgt 3, 5, 4
15942 ; PWR7-NEXT: std 6, -8(1)
15943 ; PWR7-NEXT: std 3, -16(1)
15944 ; PWR7-NEXT: addi 3, 1, -16
15945 ; PWR7-NEXT: lxvd2x 34, 0, 3
15948 ; PWR8-LABEL: ugt_16_v2i64:
15950 ; PWR8-NEXT: addis 3, 2, .LCPI130_0@toc@ha
15951 ; PWR8-NEXT: vpopcntd 2, 2
15952 ; PWR8-NEXT: addi 3, 3, .LCPI130_0@toc@l
15953 ; PWR8-NEXT: lxvd2x 35, 0, 3
15954 ; PWR8-NEXT: vcmpgtud 2, 2, 3
15957 ; PWR9-LABEL: ugt_16_v2i64:
15959 ; PWR9-NEXT: addis 3, 2, .LCPI130_0@toc@ha
15960 ; PWR9-NEXT: vpopcntd 2, 2
15961 ; PWR9-NEXT: addi 3, 3, .LCPI130_0@toc@l
15962 ; PWR9-NEXT: lxv 35, 0(3)
15963 ; PWR9-NEXT: vcmpgtud 2, 2, 3
15965 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
15966 %3 = icmp ugt <2 x i64> %2, <i64 16, i64 16>
15967 %4 = sext <2 x i1> %3 to <2 x i64>
15971 define <2 x i64> @ult_17_v2i64(<2 x i64> %0) {
15972 ; PWR5-LABEL: ult_17_v2i64:
15974 ; PWR5-NEXT: lis 5, 21845
15975 ; PWR5-NEXT: lis 6, 13107
15976 ; PWR5-NEXT: ori 5, 5, 21845
15977 ; PWR5-NEXT: rotldi 8, 4, 63
15978 ; PWR5-NEXT: rotldi 9, 3, 63
15979 ; PWR5-NEXT: rldimi 5, 5, 32, 0
15980 ; PWR5-NEXT: and 8, 8, 5
15981 ; PWR5-NEXT: and 5, 9, 5
15982 ; PWR5-NEXT: ori 6, 6, 13107
15983 ; PWR5-NEXT: sub 3, 3, 5
15984 ; PWR5-NEXT: rldimi 6, 6, 32, 0
15985 ; PWR5-NEXT: sub 4, 4, 8
15986 ; PWR5-NEXT: and 8, 3, 6
15987 ; PWR5-NEXT: rotldi 3, 3, 62
15988 ; PWR5-NEXT: and 3, 3, 6
15989 ; PWR5-NEXT: lis 7, 3855
15990 ; PWR5-NEXT: and 5, 4, 6
15991 ; PWR5-NEXT: rotldi 4, 4, 62
15992 ; PWR5-NEXT: add 3, 8, 3
15993 ; PWR5-NEXT: lis 9, 257
15994 ; PWR5-NEXT: ori 7, 7, 3855
15995 ; PWR5-NEXT: and 4, 4, 6
15996 ; PWR5-NEXT: rldicl 6, 3, 60, 4
15997 ; PWR5-NEXT: ori 9, 9, 257
15998 ; PWR5-NEXT: rldimi 7, 7, 32, 0
15999 ; PWR5-NEXT: add 4, 5, 4
16000 ; PWR5-NEXT: add 3, 3, 6
16001 ; PWR5-NEXT: rldimi 9, 9, 32, 0
16002 ; PWR5-NEXT: rldicl 5, 4, 60, 4
16003 ; PWR5-NEXT: and 3, 3, 7
16004 ; PWR5-NEXT: add 4, 4, 5
16005 ; PWR5-NEXT: mulld 3, 3, 9
16006 ; PWR5-NEXT: and 4, 4, 7
16007 ; PWR5-NEXT: rldicl 3, 3, 8, 56
16008 ; PWR5-NEXT: li 5, 17
16009 ; PWR5-NEXT: mulld 4, 4, 9
16010 ; PWR5-NEXT: subc 6, 3, 5
16011 ; PWR5-NEXT: rldicl 4, 4, 8, 56
16012 ; PWR5-NEXT: subfe 3, 3, 3
16013 ; PWR5-NEXT: subc 5, 4, 5
16014 ; PWR5-NEXT: subfe 4, 4, 4
16017 ; PWR6-LABEL: ult_17_v2i64:
16019 ; PWR6-NEXT: lis 5, 21845
16020 ; PWR6-NEXT: lis 6, 13107
16021 ; PWR6-NEXT: ori 5, 5, 21845
16022 ; PWR6-NEXT: rotldi 8, 4, 63
16023 ; PWR6-NEXT: rotldi 9, 3, 63
16024 ; PWR6-NEXT: rldimi 5, 5, 32, 0
16025 ; PWR6-NEXT: and 8, 8, 5
16026 ; PWR6-NEXT: and 5, 9, 5
16027 ; PWR6-NEXT: ori 6, 6, 13107
16028 ; PWR6-NEXT: sub 3, 3, 5
16029 ; PWR6-NEXT: rldimi 6, 6, 32, 0
16030 ; PWR6-NEXT: sub 4, 4, 8
16031 ; PWR6-NEXT: and 8, 3, 6
16032 ; PWR6-NEXT: rotldi 3, 3, 62
16033 ; PWR6-NEXT: and 3, 3, 6
16034 ; PWR6-NEXT: lis 7, 3855
16035 ; PWR6-NEXT: and 5, 4, 6
16036 ; PWR6-NEXT: rotldi 4, 4, 62
16037 ; PWR6-NEXT: add 3, 8, 3
16038 ; PWR6-NEXT: lis 9, 257
16039 ; PWR6-NEXT: ori 7, 7, 3855
16040 ; PWR6-NEXT: and 4, 4, 6
16041 ; PWR6-NEXT: rldicl 6, 3, 60, 4
16042 ; PWR6-NEXT: ori 9, 9, 257
16043 ; PWR6-NEXT: rldimi 7, 7, 32, 0
16044 ; PWR6-NEXT: add 4, 5, 4
16045 ; PWR6-NEXT: add 3, 3, 6
16046 ; PWR6-NEXT: rldimi 9, 9, 32, 0
16047 ; PWR6-NEXT: rldicl 5, 4, 60, 4
16048 ; PWR6-NEXT: and 3, 3, 7
16049 ; PWR6-NEXT: add 4, 4, 5
16050 ; PWR6-NEXT: mulld 3, 3, 9
16051 ; PWR6-NEXT: and 4, 4, 7
16052 ; PWR6-NEXT: rldicl 3, 3, 8, 56
16053 ; PWR6-NEXT: li 5, 17
16054 ; PWR6-NEXT: mulld 4, 4, 9
16055 ; PWR6-NEXT: subc 6, 3, 5
16056 ; PWR6-NEXT: rldicl 4, 4, 8, 56
16057 ; PWR6-NEXT: subfe 3, 3, 3
16058 ; PWR6-NEXT: subc 5, 4, 5
16059 ; PWR6-NEXT: subfe 4, 4, 4
16062 ; PWR7-LABEL: ult_17_v2i64:
16064 ; PWR7-NEXT: addi 3, 1, -32
16065 ; PWR7-NEXT: li 5, -1
16066 ; PWR7-NEXT: stxvd2x 34, 0, 3
16067 ; PWR7-NEXT: ld 4, -24(1)
16068 ; PWR7-NEXT: ld 3, -32(1)
16069 ; PWR7-NEXT: popcntd 4, 4
16070 ; PWR7-NEXT: popcntd 3, 3
16071 ; PWR7-NEXT: cmpldi 4, 17
16072 ; PWR7-NEXT: li 4, 0
16073 ; PWR7-NEXT: isellt 6, 5, 4
16074 ; PWR7-NEXT: cmpldi 3, 17
16075 ; PWR7-NEXT: isellt 3, 5, 4
16076 ; PWR7-NEXT: std 6, -8(1)
16077 ; PWR7-NEXT: std 3, -16(1)
16078 ; PWR7-NEXT: addi 3, 1, -16
16079 ; PWR7-NEXT: lxvd2x 34, 0, 3
16082 ; PWR8-LABEL: ult_17_v2i64:
16084 ; PWR8-NEXT: addis 3, 2, .LCPI131_0@toc@ha
16085 ; PWR8-NEXT: vpopcntd 2, 2
16086 ; PWR8-NEXT: addi 3, 3, .LCPI131_0@toc@l
16087 ; PWR8-NEXT: lxvd2x 35, 0, 3
16088 ; PWR8-NEXT: vcmpgtud 2, 3, 2
16091 ; PWR9-LABEL: ult_17_v2i64:
16093 ; PWR9-NEXT: addis 3, 2, .LCPI131_0@toc@ha
16094 ; PWR9-NEXT: vpopcntd 2, 2
16095 ; PWR9-NEXT: addi 3, 3, .LCPI131_0@toc@l
16096 ; PWR9-NEXT: lxv 35, 0(3)
16097 ; PWR9-NEXT: vcmpgtud 2, 3, 2
16099 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
16100 %3 = icmp ult <2 x i64> %2, <i64 17, i64 17>
16101 %4 = sext <2 x i1> %3 to <2 x i64>
16105 define <2 x i64> @ugt_17_v2i64(<2 x i64> %0) {
16106 ; PWR5-LABEL: ugt_17_v2i64:
16108 ; PWR5-NEXT: lis 5, 21845
16109 ; PWR5-NEXT: lis 6, 13107
16110 ; PWR5-NEXT: ori 5, 5, 21845
16111 ; PWR5-NEXT: rotldi 8, 4, 63
16112 ; PWR5-NEXT: rotldi 9, 3, 63
16113 ; PWR5-NEXT: rldimi 5, 5, 32, 0
16114 ; PWR5-NEXT: and 8, 8, 5
16115 ; PWR5-NEXT: and 5, 9, 5
16116 ; PWR5-NEXT: ori 6, 6, 13107
16117 ; PWR5-NEXT: sub 3, 3, 5
16118 ; PWR5-NEXT: rldimi 6, 6, 32, 0
16119 ; PWR5-NEXT: sub 4, 4, 8
16120 ; PWR5-NEXT: and 8, 3, 6
16121 ; PWR5-NEXT: rotldi 3, 3, 62
16122 ; PWR5-NEXT: and 3, 3, 6
16123 ; PWR5-NEXT: lis 7, 3855
16124 ; PWR5-NEXT: and 5, 4, 6
16125 ; PWR5-NEXT: rotldi 4, 4, 62
16126 ; PWR5-NEXT: add 3, 8, 3
16127 ; PWR5-NEXT: lis 9, 257
16128 ; PWR5-NEXT: ori 7, 7, 3855
16129 ; PWR5-NEXT: and 4, 4, 6
16130 ; PWR5-NEXT: rldicl 6, 3, 60, 4
16131 ; PWR5-NEXT: ori 9, 9, 257
16132 ; PWR5-NEXT: rldimi 7, 7, 32, 0
16133 ; PWR5-NEXT: add 4, 5, 4
16134 ; PWR5-NEXT: add 3, 3, 6
16135 ; PWR5-NEXT: rldimi 9, 9, 32, 0
16136 ; PWR5-NEXT: rldicl 5, 4, 60, 4
16137 ; PWR5-NEXT: and 3, 3, 7
16138 ; PWR5-NEXT: add 4, 4, 5
16139 ; PWR5-NEXT: mulld 3, 3, 9
16140 ; PWR5-NEXT: and 4, 4, 7
16141 ; PWR5-NEXT: rldicl 3, 3, 8, 56
16142 ; PWR5-NEXT: mulld 4, 4, 9
16143 ; PWR5-NEXT: li 5, 17
16144 ; PWR5-NEXT: subfic 3, 3, 17
16145 ; PWR5-NEXT: rldicl 4, 4, 8, 56
16146 ; PWR5-NEXT: subfe 3, 5, 5
16147 ; PWR5-NEXT: subfic 4, 4, 17
16148 ; PWR5-NEXT: subfe 4, 5, 5
16151 ; PWR6-LABEL: ugt_17_v2i64:
16153 ; PWR6-NEXT: lis 5, 21845
16154 ; PWR6-NEXT: lis 6, 13107
16155 ; PWR6-NEXT: ori 5, 5, 21845
16156 ; PWR6-NEXT: rotldi 8, 4, 63
16157 ; PWR6-NEXT: rotldi 9, 3, 63
16158 ; PWR6-NEXT: rldimi 5, 5, 32, 0
16159 ; PWR6-NEXT: and 8, 8, 5
16160 ; PWR6-NEXT: and 5, 9, 5
16161 ; PWR6-NEXT: ori 6, 6, 13107
16162 ; PWR6-NEXT: sub 3, 3, 5
16163 ; PWR6-NEXT: rldimi 6, 6, 32, 0
16164 ; PWR6-NEXT: sub 4, 4, 8
16165 ; PWR6-NEXT: and 8, 3, 6
16166 ; PWR6-NEXT: rotldi 3, 3, 62
16167 ; PWR6-NEXT: and 3, 3, 6
16168 ; PWR6-NEXT: lis 7, 3855
16169 ; PWR6-NEXT: and 5, 4, 6
16170 ; PWR6-NEXT: rotldi 4, 4, 62
16171 ; PWR6-NEXT: add 3, 8, 3
16172 ; PWR6-NEXT: lis 9, 257
16173 ; PWR6-NEXT: ori 7, 7, 3855
16174 ; PWR6-NEXT: and 4, 4, 6
16175 ; PWR6-NEXT: rldicl 6, 3, 60, 4
16176 ; PWR6-NEXT: ori 9, 9, 257
16177 ; PWR6-NEXT: rldimi 7, 7, 32, 0
16178 ; PWR6-NEXT: add 4, 5, 4
16179 ; PWR6-NEXT: add 3, 3, 6
16180 ; PWR6-NEXT: rldimi 9, 9, 32, 0
16181 ; PWR6-NEXT: rldicl 5, 4, 60, 4
16182 ; PWR6-NEXT: and 3, 3, 7
16183 ; PWR6-NEXT: add 4, 4, 5
16184 ; PWR6-NEXT: mulld 3, 3, 9
16185 ; PWR6-NEXT: and 4, 4, 7
16186 ; PWR6-NEXT: rldicl 3, 3, 8, 56
16187 ; PWR6-NEXT: mulld 4, 4, 9
16188 ; PWR6-NEXT: li 5, 17
16189 ; PWR6-NEXT: subfic 3, 3, 17
16190 ; PWR6-NEXT: rldicl 4, 4, 8, 56
16191 ; PWR6-NEXT: subfe 3, 5, 5
16192 ; PWR6-NEXT: subfic 4, 4, 17
16193 ; PWR6-NEXT: subfe 4, 5, 5
16196 ; PWR7-LABEL: ugt_17_v2i64:
16198 ; PWR7-NEXT: addi 3, 1, -32
16199 ; PWR7-NEXT: li 5, -1
16200 ; PWR7-NEXT: stxvd2x 34, 0, 3
16201 ; PWR7-NEXT: ld 4, -24(1)
16202 ; PWR7-NEXT: ld 3, -32(1)
16203 ; PWR7-NEXT: popcntd 4, 4
16204 ; PWR7-NEXT: popcntd 3, 3
16205 ; PWR7-NEXT: cmpldi 4, 17
16206 ; PWR7-NEXT: li 4, 0
16207 ; PWR7-NEXT: iselgt 6, 5, 4
16208 ; PWR7-NEXT: cmpldi 3, 17
16209 ; PWR7-NEXT: iselgt 3, 5, 4
16210 ; PWR7-NEXT: std 6, -8(1)
16211 ; PWR7-NEXT: std 3, -16(1)
16212 ; PWR7-NEXT: addi 3, 1, -16
16213 ; PWR7-NEXT: lxvd2x 34, 0, 3
16216 ; PWR8-LABEL: ugt_17_v2i64:
16218 ; PWR8-NEXT: addis 3, 2, .LCPI132_0@toc@ha
16219 ; PWR8-NEXT: vpopcntd 2, 2
16220 ; PWR8-NEXT: addi 3, 3, .LCPI132_0@toc@l
16221 ; PWR8-NEXT: lxvd2x 35, 0, 3
16222 ; PWR8-NEXT: vcmpgtud 2, 2, 3
16225 ; PWR9-LABEL: ugt_17_v2i64:
16227 ; PWR9-NEXT: addis 3, 2, .LCPI132_0@toc@ha
16228 ; PWR9-NEXT: vpopcntd 2, 2
16229 ; PWR9-NEXT: addi 3, 3, .LCPI132_0@toc@l
16230 ; PWR9-NEXT: lxv 35, 0(3)
16231 ; PWR9-NEXT: vcmpgtud 2, 2, 3
16233 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
16234 %3 = icmp ugt <2 x i64> %2, <i64 17, i64 17>
16235 %4 = sext <2 x i1> %3 to <2 x i64>
16239 define <2 x i64> @ult_18_v2i64(<2 x i64> %0) {
16240 ; PWR5-LABEL: ult_18_v2i64:
16242 ; PWR5-NEXT: lis 5, 21845
16243 ; PWR5-NEXT: lis 6, 13107
16244 ; PWR5-NEXT: ori 5, 5, 21845
16245 ; PWR5-NEXT: rotldi 8, 4, 63
16246 ; PWR5-NEXT: rotldi 9, 3, 63
16247 ; PWR5-NEXT: rldimi 5, 5, 32, 0
16248 ; PWR5-NEXT: and 8, 8, 5
16249 ; PWR5-NEXT: and 5, 9, 5
16250 ; PWR5-NEXT: ori 6, 6, 13107
16251 ; PWR5-NEXT: sub 3, 3, 5
16252 ; PWR5-NEXT: rldimi 6, 6, 32, 0
16253 ; PWR5-NEXT: sub 4, 4, 8
16254 ; PWR5-NEXT: and 8, 3, 6
16255 ; PWR5-NEXT: rotldi 3, 3, 62
16256 ; PWR5-NEXT: and 3, 3, 6
16257 ; PWR5-NEXT: lis 7, 3855
16258 ; PWR5-NEXT: and 5, 4, 6
16259 ; PWR5-NEXT: rotldi 4, 4, 62
16260 ; PWR5-NEXT: add 3, 8, 3
16261 ; PWR5-NEXT: lis 9, 257
16262 ; PWR5-NEXT: ori 7, 7, 3855
16263 ; PWR5-NEXT: and 4, 4, 6
16264 ; PWR5-NEXT: rldicl 6, 3, 60, 4
16265 ; PWR5-NEXT: ori 9, 9, 257
16266 ; PWR5-NEXT: rldimi 7, 7, 32, 0
16267 ; PWR5-NEXT: add 4, 5, 4
16268 ; PWR5-NEXT: add 3, 3, 6
16269 ; PWR5-NEXT: rldimi 9, 9, 32, 0
16270 ; PWR5-NEXT: rldicl 5, 4, 60, 4
16271 ; PWR5-NEXT: and 3, 3, 7
16272 ; PWR5-NEXT: add 4, 4, 5
16273 ; PWR5-NEXT: mulld 3, 3, 9
16274 ; PWR5-NEXT: and 4, 4, 7
16275 ; PWR5-NEXT: rldicl 3, 3, 8, 56
16276 ; PWR5-NEXT: li 5, 18
16277 ; PWR5-NEXT: mulld 4, 4, 9
16278 ; PWR5-NEXT: subc 6, 3, 5
16279 ; PWR5-NEXT: rldicl 4, 4, 8, 56
16280 ; PWR5-NEXT: subfe 3, 3, 3
16281 ; PWR5-NEXT: subc 5, 4, 5
16282 ; PWR5-NEXT: subfe 4, 4, 4
16285 ; PWR6-LABEL: ult_18_v2i64:
16287 ; PWR6-NEXT: lis 5, 21845
16288 ; PWR6-NEXT: lis 6, 13107
16289 ; PWR6-NEXT: ori 5, 5, 21845
16290 ; PWR6-NEXT: rotldi 8, 4, 63
16291 ; PWR6-NEXT: rotldi 9, 3, 63
16292 ; PWR6-NEXT: rldimi 5, 5, 32, 0
16293 ; PWR6-NEXT: and 8, 8, 5
16294 ; PWR6-NEXT: and 5, 9, 5
16295 ; PWR6-NEXT: ori 6, 6, 13107
16296 ; PWR6-NEXT: sub 3, 3, 5
16297 ; PWR6-NEXT: rldimi 6, 6, 32, 0
16298 ; PWR6-NEXT: sub 4, 4, 8
16299 ; PWR6-NEXT: and 8, 3, 6
16300 ; PWR6-NEXT: rotldi 3, 3, 62
16301 ; PWR6-NEXT: and 3, 3, 6
16302 ; PWR6-NEXT: lis 7, 3855
16303 ; PWR6-NEXT: and 5, 4, 6
16304 ; PWR6-NEXT: rotldi 4, 4, 62
16305 ; PWR6-NEXT: add 3, 8, 3
16306 ; PWR6-NEXT: lis 9, 257
16307 ; PWR6-NEXT: ori 7, 7, 3855
16308 ; PWR6-NEXT: and 4, 4, 6
16309 ; PWR6-NEXT: rldicl 6, 3, 60, 4
16310 ; PWR6-NEXT: ori 9, 9, 257
16311 ; PWR6-NEXT: rldimi 7, 7, 32, 0
16312 ; PWR6-NEXT: add 4, 5, 4
16313 ; PWR6-NEXT: add 3, 3, 6
16314 ; PWR6-NEXT: rldimi 9, 9, 32, 0
16315 ; PWR6-NEXT: rldicl 5, 4, 60, 4
16316 ; PWR6-NEXT: and 3, 3, 7
16317 ; PWR6-NEXT: add 4, 4, 5
16318 ; PWR6-NEXT: mulld 3, 3, 9
16319 ; PWR6-NEXT: and 4, 4, 7
16320 ; PWR6-NEXT: rldicl 3, 3, 8, 56
16321 ; PWR6-NEXT: li 5, 18
16322 ; PWR6-NEXT: mulld 4, 4, 9
16323 ; PWR6-NEXT: subc 6, 3, 5
16324 ; PWR6-NEXT: rldicl 4, 4, 8, 56
16325 ; PWR6-NEXT: subfe 3, 3, 3
16326 ; PWR6-NEXT: subc 5, 4, 5
16327 ; PWR6-NEXT: subfe 4, 4, 4
16330 ; PWR7-LABEL: ult_18_v2i64:
16332 ; PWR7-NEXT: addi 3, 1, -32
16333 ; PWR7-NEXT: li 5, -1
16334 ; PWR7-NEXT: stxvd2x 34, 0, 3
16335 ; PWR7-NEXT: ld 4, -24(1)
16336 ; PWR7-NEXT: ld 3, -32(1)
16337 ; PWR7-NEXT: popcntd 4, 4
16338 ; PWR7-NEXT: popcntd 3, 3
16339 ; PWR7-NEXT: cmpldi 4, 18
16340 ; PWR7-NEXT: li 4, 0
16341 ; PWR7-NEXT: isellt 6, 5, 4
16342 ; PWR7-NEXT: cmpldi 3, 18
16343 ; PWR7-NEXT: isellt 3, 5, 4
16344 ; PWR7-NEXT: std 6, -8(1)
16345 ; PWR7-NEXT: std 3, -16(1)
16346 ; PWR7-NEXT: addi 3, 1, -16
16347 ; PWR7-NEXT: lxvd2x 34, 0, 3
16350 ; PWR8-LABEL: ult_18_v2i64:
16352 ; PWR8-NEXT: addis 3, 2, .LCPI133_0@toc@ha
16353 ; PWR8-NEXT: vpopcntd 2, 2
16354 ; PWR8-NEXT: addi 3, 3, .LCPI133_0@toc@l
16355 ; PWR8-NEXT: lxvd2x 35, 0, 3
16356 ; PWR8-NEXT: vcmpgtud 2, 3, 2
16359 ; PWR9-LABEL: ult_18_v2i64:
16361 ; PWR9-NEXT: addis 3, 2, .LCPI133_0@toc@ha
16362 ; PWR9-NEXT: vpopcntd 2, 2
16363 ; PWR9-NEXT: addi 3, 3, .LCPI133_0@toc@l
16364 ; PWR9-NEXT: lxv 35, 0(3)
16365 ; PWR9-NEXT: vcmpgtud 2, 3, 2
16367 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
16368 %3 = icmp ult <2 x i64> %2, <i64 18, i64 18>
16369 %4 = sext <2 x i1> %3 to <2 x i64>
16373 define <2 x i64> @ugt_18_v2i64(<2 x i64> %0) {
16374 ; PWR5-LABEL: ugt_18_v2i64:
16376 ; PWR5-NEXT: lis 5, 21845
16377 ; PWR5-NEXT: lis 6, 13107
16378 ; PWR5-NEXT: ori 5, 5, 21845
16379 ; PWR5-NEXT: rotldi 8, 4, 63
16380 ; PWR5-NEXT: rotldi 9, 3, 63
16381 ; PWR5-NEXT: rldimi 5, 5, 32, 0
16382 ; PWR5-NEXT: and 8, 8, 5
16383 ; PWR5-NEXT: and 5, 9, 5
16384 ; PWR5-NEXT: ori 6, 6, 13107
16385 ; PWR5-NEXT: sub 3, 3, 5
16386 ; PWR5-NEXT: rldimi 6, 6, 32, 0
16387 ; PWR5-NEXT: sub 4, 4, 8
16388 ; PWR5-NEXT: and 8, 3, 6
16389 ; PWR5-NEXT: rotldi 3, 3, 62
16390 ; PWR5-NEXT: and 3, 3, 6
16391 ; PWR5-NEXT: lis 7, 3855
16392 ; PWR5-NEXT: and 5, 4, 6
16393 ; PWR5-NEXT: rotldi 4, 4, 62
16394 ; PWR5-NEXT: add 3, 8, 3
16395 ; PWR5-NEXT: lis 9, 257
16396 ; PWR5-NEXT: ori 7, 7, 3855
16397 ; PWR5-NEXT: and 4, 4, 6
16398 ; PWR5-NEXT: rldicl 6, 3, 60, 4
16399 ; PWR5-NEXT: ori 9, 9, 257
16400 ; PWR5-NEXT: rldimi 7, 7, 32, 0
16401 ; PWR5-NEXT: add 4, 5, 4
16402 ; PWR5-NEXT: add 3, 3, 6
16403 ; PWR5-NEXT: rldimi 9, 9, 32, 0
16404 ; PWR5-NEXT: rldicl 5, 4, 60, 4
16405 ; PWR5-NEXT: and 3, 3, 7
16406 ; PWR5-NEXT: add 4, 4, 5
16407 ; PWR5-NEXT: mulld 3, 3, 9
16408 ; PWR5-NEXT: and 4, 4, 7
16409 ; PWR5-NEXT: rldicl 3, 3, 8, 56
16410 ; PWR5-NEXT: mulld 4, 4, 9
16411 ; PWR5-NEXT: li 5, 18
16412 ; PWR5-NEXT: subfic 3, 3, 18
16413 ; PWR5-NEXT: rldicl 4, 4, 8, 56
16414 ; PWR5-NEXT: subfe 3, 5, 5
16415 ; PWR5-NEXT: subfic 4, 4, 18
16416 ; PWR5-NEXT: subfe 4, 5, 5
16419 ; PWR6-LABEL: ugt_18_v2i64:
16421 ; PWR6-NEXT: lis 5, 21845
16422 ; PWR6-NEXT: lis 6, 13107
16423 ; PWR6-NEXT: ori 5, 5, 21845
16424 ; PWR6-NEXT: rotldi 8, 4, 63
16425 ; PWR6-NEXT: rotldi 9, 3, 63
16426 ; PWR6-NEXT: rldimi 5, 5, 32, 0
16427 ; PWR6-NEXT: and 8, 8, 5
16428 ; PWR6-NEXT: and 5, 9, 5
16429 ; PWR6-NEXT: ori 6, 6, 13107
16430 ; PWR6-NEXT: sub 3, 3, 5
16431 ; PWR6-NEXT: rldimi 6, 6, 32, 0
16432 ; PWR6-NEXT: sub 4, 4, 8
16433 ; PWR6-NEXT: and 8, 3, 6
16434 ; PWR6-NEXT: rotldi 3, 3, 62
16435 ; PWR6-NEXT: and 3, 3, 6
16436 ; PWR6-NEXT: lis 7, 3855
16437 ; PWR6-NEXT: and 5, 4, 6
16438 ; PWR6-NEXT: rotldi 4, 4, 62
16439 ; PWR6-NEXT: add 3, 8, 3
16440 ; PWR6-NEXT: lis 9, 257
16441 ; PWR6-NEXT: ori 7, 7, 3855
16442 ; PWR6-NEXT: and 4, 4, 6
16443 ; PWR6-NEXT: rldicl 6, 3, 60, 4
16444 ; PWR6-NEXT: ori 9, 9, 257
16445 ; PWR6-NEXT: rldimi 7, 7, 32, 0
16446 ; PWR6-NEXT: add 4, 5, 4
16447 ; PWR6-NEXT: add 3, 3, 6
16448 ; PWR6-NEXT: rldimi 9, 9, 32, 0
16449 ; PWR6-NEXT: rldicl 5, 4, 60, 4
16450 ; PWR6-NEXT: and 3, 3, 7
16451 ; PWR6-NEXT: add 4, 4, 5
16452 ; PWR6-NEXT: mulld 3, 3, 9
16453 ; PWR6-NEXT: and 4, 4, 7
16454 ; PWR6-NEXT: rldicl 3, 3, 8, 56
16455 ; PWR6-NEXT: mulld 4, 4, 9
16456 ; PWR6-NEXT: li 5, 18
16457 ; PWR6-NEXT: subfic 3, 3, 18
16458 ; PWR6-NEXT: rldicl 4, 4, 8, 56
16459 ; PWR6-NEXT: subfe 3, 5, 5
16460 ; PWR6-NEXT: subfic 4, 4, 18
16461 ; PWR6-NEXT: subfe 4, 5, 5
16464 ; PWR7-LABEL: ugt_18_v2i64:
16466 ; PWR7-NEXT: addi 3, 1, -32
16467 ; PWR7-NEXT: li 5, -1
16468 ; PWR7-NEXT: stxvd2x 34, 0, 3
16469 ; PWR7-NEXT: ld 4, -24(1)
16470 ; PWR7-NEXT: ld 3, -32(1)
16471 ; PWR7-NEXT: popcntd 4, 4
16472 ; PWR7-NEXT: popcntd 3, 3
16473 ; PWR7-NEXT: cmpldi 4, 18
16474 ; PWR7-NEXT: li 4, 0
16475 ; PWR7-NEXT: iselgt 6, 5, 4
16476 ; PWR7-NEXT: cmpldi 3, 18
16477 ; PWR7-NEXT: iselgt 3, 5, 4
16478 ; PWR7-NEXT: std 6, -8(1)
16479 ; PWR7-NEXT: std 3, -16(1)
16480 ; PWR7-NEXT: addi 3, 1, -16
16481 ; PWR7-NEXT: lxvd2x 34, 0, 3
16484 ; PWR8-LABEL: ugt_18_v2i64:
16486 ; PWR8-NEXT: addis 3, 2, .LCPI134_0@toc@ha
16487 ; PWR8-NEXT: vpopcntd 2, 2
16488 ; PWR8-NEXT: addi 3, 3, .LCPI134_0@toc@l
16489 ; PWR8-NEXT: lxvd2x 35, 0, 3
16490 ; PWR8-NEXT: vcmpgtud 2, 2, 3
16493 ; PWR9-LABEL: ugt_18_v2i64:
16495 ; PWR9-NEXT: addis 3, 2, .LCPI134_0@toc@ha
16496 ; PWR9-NEXT: vpopcntd 2, 2
16497 ; PWR9-NEXT: addi 3, 3, .LCPI134_0@toc@l
16498 ; PWR9-NEXT: lxv 35, 0(3)
16499 ; PWR9-NEXT: vcmpgtud 2, 2, 3
16501 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
16502 %3 = icmp ugt <2 x i64> %2, <i64 18, i64 18>
16503 %4 = sext <2 x i1> %3 to <2 x i64>
16507 define <2 x i64> @ult_19_v2i64(<2 x i64> %0) {
16508 ; PWR5-LABEL: ult_19_v2i64:
16510 ; PWR5-NEXT: lis 5, 21845
16511 ; PWR5-NEXT: lis 6, 13107
16512 ; PWR5-NEXT: ori 5, 5, 21845
16513 ; PWR5-NEXT: rotldi 8, 4, 63
16514 ; PWR5-NEXT: rotldi 9, 3, 63
16515 ; PWR5-NEXT: rldimi 5, 5, 32, 0
16516 ; PWR5-NEXT: and 8, 8, 5
16517 ; PWR5-NEXT: and 5, 9, 5
16518 ; PWR5-NEXT: ori 6, 6, 13107
16519 ; PWR5-NEXT: sub 3, 3, 5
16520 ; PWR5-NEXT: rldimi 6, 6, 32, 0
16521 ; PWR5-NEXT: sub 4, 4, 8
16522 ; PWR5-NEXT: and 8, 3, 6
16523 ; PWR5-NEXT: rotldi 3, 3, 62
16524 ; PWR5-NEXT: and 3, 3, 6
16525 ; PWR5-NEXT: lis 7, 3855
16526 ; PWR5-NEXT: and 5, 4, 6
16527 ; PWR5-NEXT: rotldi 4, 4, 62
16528 ; PWR5-NEXT: add 3, 8, 3
16529 ; PWR5-NEXT: lis 9, 257
16530 ; PWR5-NEXT: ori 7, 7, 3855
16531 ; PWR5-NEXT: and 4, 4, 6
16532 ; PWR5-NEXT: rldicl 6, 3, 60, 4
16533 ; PWR5-NEXT: ori 9, 9, 257
16534 ; PWR5-NEXT: rldimi 7, 7, 32, 0
16535 ; PWR5-NEXT: add 4, 5, 4
16536 ; PWR5-NEXT: add 3, 3, 6
16537 ; PWR5-NEXT: rldimi 9, 9, 32, 0
16538 ; PWR5-NEXT: rldicl 5, 4, 60, 4
16539 ; PWR5-NEXT: and 3, 3, 7
16540 ; PWR5-NEXT: add 4, 4, 5
16541 ; PWR5-NEXT: mulld 3, 3, 9
16542 ; PWR5-NEXT: and 4, 4, 7
16543 ; PWR5-NEXT: rldicl 3, 3, 8, 56
16544 ; PWR5-NEXT: li 5, 19
16545 ; PWR5-NEXT: mulld 4, 4, 9
16546 ; PWR5-NEXT: subc 6, 3, 5
16547 ; PWR5-NEXT: rldicl 4, 4, 8, 56
16548 ; PWR5-NEXT: subfe 3, 3, 3
16549 ; PWR5-NEXT: subc 5, 4, 5
16550 ; PWR5-NEXT: subfe 4, 4, 4
16553 ; PWR6-LABEL: ult_19_v2i64:
16555 ; PWR6-NEXT: lis 5, 21845
16556 ; PWR6-NEXT: lis 6, 13107
16557 ; PWR6-NEXT: ori 5, 5, 21845
16558 ; PWR6-NEXT: rotldi 8, 4, 63
16559 ; PWR6-NEXT: rotldi 9, 3, 63
16560 ; PWR6-NEXT: rldimi 5, 5, 32, 0
16561 ; PWR6-NEXT: and 8, 8, 5
16562 ; PWR6-NEXT: and 5, 9, 5
16563 ; PWR6-NEXT: ori 6, 6, 13107
16564 ; PWR6-NEXT: sub 3, 3, 5
16565 ; PWR6-NEXT: rldimi 6, 6, 32, 0
16566 ; PWR6-NEXT: sub 4, 4, 8
16567 ; PWR6-NEXT: and 8, 3, 6
16568 ; PWR6-NEXT: rotldi 3, 3, 62
16569 ; PWR6-NEXT: and 3, 3, 6
16570 ; PWR6-NEXT: lis 7, 3855
16571 ; PWR6-NEXT: and 5, 4, 6
16572 ; PWR6-NEXT: rotldi 4, 4, 62
16573 ; PWR6-NEXT: add 3, 8, 3
16574 ; PWR6-NEXT: lis 9, 257
16575 ; PWR6-NEXT: ori 7, 7, 3855
16576 ; PWR6-NEXT: and 4, 4, 6
16577 ; PWR6-NEXT: rldicl 6, 3, 60, 4
16578 ; PWR6-NEXT: ori 9, 9, 257
16579 ; PWR6-NEXT: rldimi 7, 7, 32, 0
16580 ; PWR6-NEXT: add 4, 5, 4
16581 ; PWR6-NEXT: add 3, 3, 6
16582 ; PWR6-NEXT: rldimi 9, 9, 32, 0
16583 ; PWR6-NEXT: rldicl 5, 4, 60, 4
16584 ; PWR6-NEXT: and 3, 3, 7
16585 ; PWR6-NEXT: add 4, 4, 5
16586 ; PWR6-NEXT: mulld 3, 3, 9
16587 ; PWR6-NEXT: and 4, 4, 7
16588 ; PWR6-NEXT: rldicl 3, 3, 8, 56
16589 ; PWR6-NEXT: li 5, 19
16590 ; PWR6-NEXT: mulld 4, 4, 9
16591 ; PWR6-NEXT: subc 6, 3, 5
16592 ; PWR6-NEXT: rldicl 4, 4, 8, 56
16593 ; PWR6-NEXT: subfe 3, 3, 3
16594 ; PWR6-NEXT: subc 5, 4, 5
16595 ; PWR6-NEXT: subfe 4, 4, 4
16598 ; PWR7-LABEL: ult_19_v2i64:
16600 ; PWR7-NEXT: addi 3, 1, -32
16601 ; PWR7-NEXT: li 5, -1
16602 ; PWR7-NEXT: stxvd2x 34, 0, 3
16603 ; PWR7-NEXT: ld 4, -24(1)
16604 ; PWR7-NEXT: ld 3, -32(1)
16605 ; PWR7-NEXT: popcntd 4, 4
16606 ; PWR7-NEXT: popcntd 3, 3
16607 ; PWR7-NEXT: cmpldi 4, 19
16608 ; PWR7-NEXT: li 4, 0
16609 ; PWR7-NEXT: isellt 6, 5, 4
16610 ; PWR7-NEXT: cmpldi 3, 19
16611 ; PWR7-NEXT: isellt 3, 5, 4
16612 ; PWR7-NEXT: std 6, -8(1)
16613 ; PWR7-NEXT: std 3, -16(1)
16614 ; PWR7-NEXT: addi 3, 1, -16
16615 ; PWR7-NEXT: lxvd2x 34, 0, 3
16618 ; PWR8-LABEL: ult_19_v2i64:
16620 ; PWR8-NEXT: addis 3, 2, .LCPI135_0@toc@ha
16621 ; PWR8-NEXT: vpopcntd 2, 2
16622 ; PWR8-NEXT: addi 3, 3, .LCPI135_0@toc@l
16623 ; PWR8-NEXT: lxvd2x 35, 0, 3
16624 ; PWR8-NEXT: vcmpgtud 2, 3, 2
16627 ; PWR9-LABEL: ult_19_v2i64:
16629 ; PWR9-NEXT: addis 3, 2, .LCPI135_0@toc@ha
16630 ; PWR9-NEXT: vpopcntd 2, 2
16631 ; PWR9-NEXT: addi 3, 3, .LCPI135_0@toc@l
16632 ; PWR9-NEXT: lxv 35, 0(3)
16633 ; PWR9-NEXT: vcmpgtud 2, 3, 2
16635 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
16636 %3 = icmp ult <2 x i64> %2, <i64 19, i64 19>
16637 %4 = sext <2 x i1> %3 to <2 x i64>
16641 define <2 x i64> @ugt_19_v2i64(<2 x i64> %0) {
16642 ; PWR5-LABEL: ugt_19_v2i64:
16644 ; PWR5-NEXT: lis 5, 21845
16645 ; PWR5-NEXT: lis 6, 13107
16646 ; PWR5-NEXT: ori 5, 5, 21845
16647 ; PWR5-NEXT: rotldi 8, 4, 63
16648 ; PWR5-NEXT: rotldi 9, 3, 63
16649 ; PWR5-NEXT: rldimi 5, 5, 32, 0
16650 ; PWR5-NEXT: and 8, 8, 5
16651 ; PWR5-NEXT: and 5, 9, 5
16652 ; PWR5-NEXT: ori 6, 6, 13107
16653 ; PWR5-NEXT: sub 3, 3, 5
16654 ; PWR5-NEXT: rldimi 6, 6, 32, 0
16655 ; PWR5-NEXT: sub 4, 4, 8
16656 ; PWR5-NEXT: and 8, 3, 6
16657 ; PWR5-NEXT: rotldi 3, 3, 62
16658 ; PWR5-NEXT: and 3, 3, 6
16659 ; PWR5-NEXT: lis 7, 3855
16660 ; PWR5-NEXT: and 5, 4, 6
16661 ; PWR5-NEXT: rotldi 4, 4, 62
16662 ; PWR5-NEXT: add 3, 8, 3
16663 ; PWR5-NEXT: lis 9, 257
16664 ; PWR5-NEXT: ori 7, 7, 3855
16665 ; PWR5-NEXT: and 4, 4, 6
16666 ; PWR5-NEXT: rldicl 6, 3, 60, 4
16667 ; PWR5-NEXT: ori 9, 9, 257
16668 ; PWR5-NEXT: rldimi 7, 7, 32, 0
16669 ; PWR5-NEXT: add 4, 5, 4
16670 ; PWR5-NEXT: add 3, 3, 6
16671 ; PWR5-NEXT: rldimi 9, 9, 32, 0
16672 ; PWR5-NEXT: rldicl 5, 4, 60, 4
16673 ; PWR5-NEXT: and 3, 3, 7
16674 ; PWR5-NEXT: add 4, 4, 5
16675 ; PWR5-NEXT: mulld 3, 3, 9
16676 ; PWR5-NEXT: and 4, 4, 7
16677 ; PWR5-NEXT: rldicl 3, 3, 8, 56
16678 ; PWR5-NEXT: mulld 4, 4, 9
16679 ; PWR5-NEXT: li 5, 19
16680 ; PWR5-NEXT: subfic 3, 3, 19
16681 ; PWR5-NEXT: rldicl 4, 4, 8, 56
16682 ; PWR5-NEXT: subfe 3, 5, 5
16683 ; PWR5-NEXT: subfic 4, 4, 19
16684 ; PWR5-NEXT: subfe 4, 5, 5
16687 ; PWR6-LABEL: ugt_19_v2i64:
16689 ; PWR6-NEXT: lis 5, 21845
16690 ; PWR6-NEXT: lis 6, 13107
16691 ; PWR6-NEXT: ori 5, 5, 21845
16692 ; PWR6-NEXT: rotldi 8, 4, 63
16693 ; PWR6-NEXT: rotldi 9, 3, 63
16694 ; PWR6-NEXT: rldimi 5, 5, 32, 0
16695 ; PWR6-NEXT: and 8, 8, 5
16696 ; PWR6-NEXT: and 5, 9, 5
16697 ; PWR6-NEXT: ori 6, 6, 13107
16698 ; PWR6-NEXT: sub 3, 3, 5
16699 ; PWR6-NEXT: rldimi 6, 6, 32, 0
16700 ; PWR6-NEXT: sub 4, 4, 8
16701 ; PWR6-NEXT: and 8, 3, 6
16702 ; PWR6-NEXT: rotldi 3, 3, 62
16703 ; PWR6-NEXT: and 3, 3, 6
16704 ; PWR6-NEXT: lis 7, 3855
16705 ; PWR6-NEXT: and 5, 4, 6
16706 ; PWR6-NEXT: rotldi 4, 4, 62
16707 ; PWR6-NEXT: add 3, 8, 3
16708 ; PWR6-NEXT: lis 9, 257
16709 ; PWR6-NEXT: ori 7, 7, 3855
16710 ; PWR6-NEXT: and 4, 4, 6
16711 ; PWR6-NEXT: rldicl 6, 3, 60, 4
16712 ; PWR6-NEXT: ori 9, 9, 257
16713 ; PWR6-NEXT: rldimi 7, 7, 32, 0
16714 ; PWR6-NEXT: add 4, 5, 4
16715 ; PWR6-NEXT: add 3, 3, 6
16716 ; PWR6-NEXT: rldimi 9, 9, 32, 0
16717 ; PWR6-NEXT: rldicl 5, 4, 60, 4
16718 ; PWR6-NEXT: and 3, 3, 7
16719 ; PWR6-NEXT: add 4, 4, 5
16720 ; PWR6-NEXT: mulld 3, 3, 9
16721 ; PWR6-NEXT: and 4, 4, 7
16722 ; PWR6-NEXT: rldicl 3, 3, 8, 56
16723 ; PWR6-NEXT: mulld 4, 4, 9
16724 ; PWR6-NEXT: li 5, 19
16725 ; PWR6-NEXT: subfic 3, 3, 19
16726 ; PWR6-NEXT: rldicl 4, 4, 8, 56
16727 ; PWR6-NEXT: subfe 3, 5, 5
16728 ; PWR6-NEXT: subfic 4, 4, 19
16729 ; PWR6-NEXT: subfe 4, 5, 5
16732 ; PWR7-LABEL: ugt_19_v2i64:
16734 ; PWR7-NEXT: addi 3, 1, -32
16735 ; PWR7-NEXT: li 5, -1
16736 ; PWR7-NEXT: stxvd2x 34, 0, 3
16737 ; PWR7-NEXT: ld 4, -24(1)
16738 ; PWR7-NEXT: ld 3, -32(1)
16739 ; PWR7-NEXT: popcntd 4, 4
16740 ; PWR7-NEXT: popcntd 3, 3
16741 ; PWR7-NEXT: cmpldi 4, 19
16742 ; PWR7-NEXT: li 4, 0
16743 ; PWR7-NEXT: iselgt 6, 5, 4
16744 ; PWR7-NEXT: cmpldi 3, 19
16745 ; PWR7-NEXT: iselgt 3, 5, 4
16746 ; PWR7-NEXT: std 6, -8(1)
16747 ; PWR7-NEXT: std 3, -16(1)
16748 ; PWR7-NEXT: addi 3, 1, -16
16749 ; PWR7-NEXT: lxvd2x 34, 0, 3
16752 ; PWR8-LABEL: ugt_19_v2i64:
16754 ; PWR8-NEXT: addis 3, 2, .LCPI136_0@toc@ha
16755 ; PWR8-NEXT: vpopcntd 2, 2
16756 ; PWR8-NEXT: addi 3, 3, .LCPI136_0@toc@l
16757 ; PWR8-NEXT: lxvd2x 35, 0, 3
16758 ; PWR8-NEXT: vcmpgtud 2, 2, 3
16761 ; PWR9-LABEL: ugt_19_v2i64:
16763 ; PWR9-NEXT: addis 3, 2, .LCPI136_0@toc@ha
16764 ; PWR9-NEXT: vpopcntd 2, 2
16765 ; PWR9-NEXT: addi 3, 3, .LCPI136_0@toc@l
16766 ; PWR9-NEXT: lxv 35, 0(3)
16767 ; PWR9-NEXT: vcmpgtud 2, 2, 3
16769 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
16770 %3 = icmp ugt <2 x i64> %2, <i64 19, i64 19>
16771 %4 = sext <2 x i1> %3 to <2 x i64>
16775 define <2 x i64> @ult_20_v2i64(<2 x i64> %0) {
16776 ; PWR5-LABEL: ult_20_v2i64:
16778 ; PWR5-NEXT: lis 5, 21845
16779 ; PWR5-NEXT: lis 6, 13107
16780 ; PWR5-NEXT: ori 5, 5, 21845
16781 ; PWR5-NEXT: rotldi 8, 4, 63
16782 ; PWR5-NEXT: rotldi 9, 3, 63
16783 ; PWR5-NEXT: rldimi 5, 5, 32, 0
16784 ; PWR5-NEXT: and 8, 8, 5
16785 ; PWR5-NEXT: and 5, 9, 5
16786 ; PWR5-NEXT: ori 6, 6, 13107
16787 ; PWR5-NEXT: sub 3, 3, 5
16788 ; PWR5-NEXT: rldimi 6, 6, 32, 0
16789 ; PWR5-NEXT: sub 4, 4, 8
16790 ; PWR5-NEXT: and 8, 3, 6
16791 ; PWR5-NEXT: rotldi 3, 3, 62
16792 ; PWR5-NEXT: and 3, 3, 6
16793 ; PWR5-NEXT: lis 7, 3855
16794 ; PWR5-NEXT: and 5, 4, 6
16795 ; PWR5-NEXT: rotldi 4, 4, 62
16796 ; PWR5-NEXT: add 3, 8, 3
16797 ; PWR5-NEXT: lis 9, 257
16798 ; PWR5-NEXT: ori 7, 7, 3855
16799 ; PWR5-NEXT: and 4, 4, 6
16800 ; PWR5-NEXT: rldicl 6, 3, 60, 4
16801 ; PWR5-NEXT: ori 9, 9, 257
16802 ; PWR5-NEXT: rldimi 7, 7, 32, 0
16803 ; PWR5-NEXT: add 4, 5, 4
16804 ; PWR5-NEXT: add 3, 3, 6
16805 ; PWR5-NEXT: rldimi 9, 9, 32, 0
16806 ; PWR5-NEXT: rldicl 5, 4, 60, 4
16807 ; PWR5-NEXT: and 3, 3, 7
16808 ; PWR5-NEXT: add 4, 4, 5
16809 ; PWR5-NEXT: mulld 3, 3, 9
16810 ; PWR5-NEXT: and 4, 4, 7
16811 ; PWR5-NEXT: rldicl 3, 3, 8, 56
16812 ; PWR5-NEXT: li 5, 20
16813 ; PWR5-NEXT: mulld 4, 4, 9
16814 ; PWR5-NEXT: subc 6, 3, 5
16815 ; PWR5-NEXT: rldicl 4, 4, 8, 56
16816 ; PWR5-NEXT: subfe 3, 3, 3
16817 ; PWR5-NEXT: subc 5, 4, 5
16818 ; PWR5-NEXT: subfe 4, 4, 4
16821 ; PWR6-LABEL: ult_20_v2i64:
16823 ; PWR6-NEXT: lis 5, 21845
16824 ; PWR6-NEXT: lis 6, 13107
16825 ; PWR6-NEXT: ori 5, 5, 21845
16826 ; PWR6-NEXT: rotldi 8, 4, 63
16827 ; PWR6-NEXT: rotldi 9, 3, 63
16828 ; PWR6-NEXT: rldimi 5, 5, 32, 0
16829 ; PWR6-NEXT: and 8, 8, 5
16830 ; PWR6-NEXT: and 5, 9, 5
16831 ; PWR6-NEXT: ori 6, 6, 13107
16832 ; PWR6-NEXT: sub 3, 3, 5
16833 ; PWR6-NEXT: rldimi 6, 6, 32, 0
16834 ; PWR6-NEXT: sub 4, 4, 8
16835 ; PWR6-NEXT: and 8, 3, 6
16836 ; PWR6-NEXT: rotldi 3, 3, 62
16837 ; PWR6-NEXT: and 3, 3, 6
16838 ; PWR6-NEXT: lis 7, 3855
16839 ; PWR6-NEXT: and 5, 4, 6
16840 ; PWR6-NEXT: rotldi 4, 4, 62
16841 ; PWR6-NEXT: add 3, 8, 3
16842 ; PWR6-NEXT: lis 9, 257
16843 ; PWR6-NEXT: ori 7, 7, 3855
16844 ; PWR6-NEXT: and 4, 4, 6
16845 ; PWR6-NEXT: rldicl 6, 3, 60, 4
16846 ; PWR6-NEXT: ori 9, 9, 257
16847 ; PWR6-NEXT: rldimi 7, 7, 32, 0
16848 ; PWR6-NEXT: add 4, 5, 4
16849 ; PWR6-NEXT: add 3, 3, 6
16850 ; PWR6-NEXT: rldimi 9, 9, 32, 0
16851 ; PWR6-NEXT: rldicl 5, 4, 60, 4
16852 ; PWR6-NEXT: and 3, 3, 7
16853 ; PWR6-NEXT: add 4, 4, 5
16854 ; PWR6-NEXT: mulld 3, 3, 9
16855 ; PWR6-NEXT: and 4, 4, 7
16856 ; PWR6-NEXT: rldicl 3, 3, 8, 56
16857 ; PWR6-NEXT: li 5, 20
16858 ; PWR6-NEXT: mulld 4, 4, 9
16859 ; PWR6-NEXT: subc 6, 3, 5
16860 ; PWR6-NEXT: rldicl 4, 4, 8, 56
16861 ; PWR6-NEXT: subfe 3, 3, 3
16862 ; PWR6-NEXT: subc 5, 4, 5
16863 ; PWR6-NEXT: subfe 4, 4, 4
16866 ; PWR7-LABEL: ult_20_v2i64:
16868 ; PWR7-NEXT: addi 3, 1, -32
16869 ; PWR7-NEXT: li 5, -1
16870 ; PWR7-NEXT: stxvd2x 34, 0, 3
16871 ; PWR7-NEXT: ld 4, -24(1)
16872 ; PWR7-NEXT: ld 3, -32(1)
16873 ; PWR7-NEXT: popcntd 4, 4
16874 ; PWR7-NEXT: popcntd 3, 3
16875 ; PWR7-NEXT: cmpldi 4, 20
16876 ; PWR7-NEXT: li 4, 0
16877 ; PWR7-NEXT: isellt 6, 5, 4
16878 ; PWR7-NEXT: cmpldi 3, 20
16879 ; PWR7-NEXT: isellt 3, 5, 4
16880 ; PWR7-NEXT: std 6, -8(1)
16881 ; PWR7-NEXT: std 3, -16(1)
16882 ; PWR7-NEXT: addi 3, 1, -16
16883 ; PWR7-NEXT: lxvd2x 34, 0, 3
16886 ; PWR8-LABEL: ult_20_v2i64:
16888 ; PWR8-NEXT: addis 3, 2, .LCPI137_0@toc@ha
16889 ; PWR8-NEXT: vpopcntd 2, 2
16890 ; PWR8-NEXT: addi 3, 3, .LCPI137_0@toc@l
16891 ; PWR8-NEXT: lxvd2x 35, 0, 3
16892 ; PWR8-NEXT: vcmpgtud 2, 3, 2
16895 ; PWR9-LABEL: ult_20_v2i64:
16897 ; PWR9-NEXT: addis 3, 2, .LCPI137_0@toc@ha
16898 ; PWR9-NEXT: vpopcntd 2, 2
16899 ; PWR9-NEXT: addi 3, 3, .LCPI137_0@toc@l
16900 ; PWR9-NEXT: lxv 35, 0(3)
16901 ; PWR9-NEXT: vcmpgtud 2, 3, 2
16903 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
16904 %3 = icmp ult <2 x i64> %2, <i64 20, i64 20>
16905 %4 = sext <2 x i1> %3 to <2 x i64>
16909 define <2 x i64> @ugt_20_v2i64(<2 x i64> %0) {
16910 ; PWR5-LABEL: ugt_20_v2i64:
16912 ; PWR5-NEXT: lis 5, 21845
16913 ; PWR5-NEXT: lis 6, 13107
16914 ; PWR5-NEXT: ori 5, 5, 21845
16915 ; PWR5-NEXT: rotldi 8, 4, 63
16916 ; PWR5-NEXT: rotldi 9, 3, 63
16917 ; PWR5-NEXT: rldimi 5, 5, 32, 0
16918 ; PWR5-NEXT: and 8, 8, 5
16919 ; PWR5-NEXT: and 5, 9, 5
16920 ; PWR5-NEXT: ori 6, 6, 13107
16921 ; PWR5-NEXT: sub 3, 3, 5
16922 ; PWR5-NEXT: rldimi 6, 6, 32, 0
16923 ; PWR5-NEXT: sub 4, 4, 8
16924 ; PWR5-NEXT: and 8, 3, 6
16925 ; PWR5-NEXT: rotldi 3, 3, 62
16926 ; PWR5-NEXT: and 3, 3, 6
16927 ; PWR5-NEXT: lis 7, 3855
16928 ; PWR5-NEXT: and 5, 4, 6
16929 ; PWR5-NEXT: rotldi 4, 4, 62
16930 ; PWR5-NEXT: add 3, 8, 3
16931 ; PWR5-NEXT: lis 9, 257
16932 ; PWR5-NEXT: ori 7, 7, 3855
16933 ; PWR5-NEXT: and 4, 4, 6
16934 ; PWR5-NEXT: rldicl 6, 3, 60, 4
16935 ; PWR5-NEXT: ori 9, 9, 257
16936 ; PWR5-NEXT: rldimi 7, 7, 32, 0
16937 ; PWR5-NEXT: add 4, 5, 4
16938 ; PWR5-NEXT: add 3, 3, 6
16939 ; PWR5-NEXT: rldimi 9, 9, 32, 0
16940 ; PWR5-NEXT: rldicl 5, 4, 60, 4
16941 ; PWR5-NEXT: and 3, 3, 7
16942 ; PWR5-NEXT: add 4, 4, 5
16943 ; PWR5-NEXT: mulld 3, 3, 9
16944 ; PWR5-NEXT: and 4, 4, 7
16945 ; PWR5-NEXT: rldicl 3, 3, 8, 56
16946 ; PWR5-NEXT: mulld 4, 4, 9
16947 ; PWR5-NEXT: li 5, 20
16948 ; PWR5-NEXT: subfic 3, 3, 20
16949 ; PWR5-NEXT: rldicl 4, 4, 8, 56
16950 ; PWR5-NEXT: subfe 3, 5, 5
16951 ; PWR5-NEXT: subfic 4, 4, 20
16952 ; PWR5-NEXT: subfe 4, 5, 5
16955 ; PWR6-LABEL: ugt_20_v2i64:
16957 ; PWR6-NEXT: lis 5, 21845
16958 ; PWR6-NEXT: lis 6, 13107
16959 ; PWR6-NEXT: ori 5, 5, 21845
16960 ; PWR6-NEXT: rotldi 8, 4, 63
16961 ; PWR6-NEXT: rotldi 9, 3, 63
16962 ; PWR6-NEXT: rldimi 5, 5, 32, 0
16963 ; PWR6-NEXT: and 8, 8, 5
16964 ; PWR6-NEXT: and 5, 9, 5
16965 ; PWR6-NEXT: ori 6, 6, 13107
16966 ; PWR6-NEXT: sub 3, 3, 5
16967 ; PWR6-NEXT: rldimi 6, 6, 32, 0
16968 ; PWR6-NEXT: sub 4, 4, 8
16969 ; PWR6-NEXT: and 8, 3, 6
16970 ; PWR6-NEXT: rotldi 3, 3, 62
16971 ; PWR6-NEXT: and 3, 3, 6
16972 ; PWR6-NEXT: lis 7, 3855
16973 ; PWR6-NEXT: and 5, 4, 6
16974 ; PWR6-NEXT: rotldi 4, 4, 62
16975 ; PWR6-NEXT: add 3, 8, 3
16976 ; PWR6-NEXT: lis 9, 257
16977 ; PWR6-NEXT: ori 7, 7, 3855
16978 ; PWR6-NEXT: and 4, 4, 6
16979 ; PWR6-NEXT: rldicl 6, 3, 60, 4
16980 ; PWR6-NEXT: ori 9, 9, 257
16981 ; PWR6-NEXT: rldimi 7, 7, 32, 0
16982 ; PWR6-NEXT: add 4, 5, 4
16983 ; PWR6-NEXT: add 3, 3, 6
16984 ; PWR6-NEXT: rldimi 9, 9, 32, 0
16985 ; PWR6-NEXT: rldicl 5, 4, 60, 4
16986 ; PWR6-NEXT: and 3, 3, 7
16987 ; PWR6-NEXT: add 4, 4, 5
16988 ; PWR6-NEXT: mulld 3, 3, 9
16989 ; PWR6-NEXT: and 4, 4, 7
16990 ; PWR6-NEXT: rldicl 3, 3, 8, 56
16991 ; PWR6-NEXT: mulld 4, 4, 9
16992 ; PWR6-NEXT: li 5, 20
16993 ; PWR6-NEXT: subfic 3, 3, 20
16994 ; PWR6-NEXT: rldicl 4, 4, 8, 56
16995 ; PWR6-NEXT: subfe 3, 5, 5
16996 ; PWR6-NEXT: subfic 4, 4, 20
16997 ; PWR6-NEXT: subfe 4, 5, 5
17000 ; PWR7-LABEL: ugt_20_v2i64:
17002 ; PWR7-NEXT: addi 3, 1, -32
17003 ; PWR7-NEXT: li 5, -1
17004 ; PWR7-NEXT: stxvd2x 34, 0, 3
17005 ; PWR7-NEXT: ld 4, -24(1)
17006 ; PWR7-NEXT: ld 3, -32(1)
17007 ; PWR7-NEXT: popcntd 4, 4
17008 ; PWR7-NEXT: popcntd 3, 3
17009 ; PWR7-NEXT: cmpldi 4, 20
17010 ; PWR7-NEXT: li 4, 0
17011 ; PWR7-NEXT: iselgt 6, 5, 4
17012 ; PWR7-NEXT: cmpldi 3, 20
17013 ; PWR7-NEXT: iselgt 3, 5, 4
17014 ; PWR7-NEXT: std 6, -8(1)
17015 ; PWR7-NEXT: std 3, -16(1)
17016 ; PWR7-NEXT: addi 3, 1, -16
17017 ; PWR7-NEXT: lxvd2x 34, 0, 3
17020 ; PWR8-LABEL: ugt_20_v2i64:
17022 ; PWR8-NEXT: addis 3, 2, .LCPI138_0@toc@ha
17023 ; PWR8-NEXT: vpopcntd 2, 2
17024 ; PWR8-NEXT: addi 3, 3, .LCPI138_0@toc@l
17025 ; PWR8-NEXT: lxvd2x 35, 0, 3
17026 ; PWR8-NEXT: vcmpgtud 2, 2, 3
17029 ; PWR9-LABEL: ugt_20_v2i64:
17031 ; PWR9-NEXT: addis 3, 2, .LCPI138_0@toc@ha
17032 ; PWR9-NEXT: vpopcntd 2, 2
17033 ; PWR9-NEXT: addi 3, 3, .LCPI138_0@toc@l
17034 ; PWR9-NEXT: lxv 35, 0(3)
17035 ; PWR9-NEXT: vcmpgtud 2, 2, 3
17037 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
17038 %3 = icmp ugt <2 x i64> %2, <i64 20, i64 20>
17039 %4 = sext <2 x i1> %3 to <2 x i64>
17043 define <2 x i64> @ult_21_v2i64(<2 x i64> %0) {
17044 ; PWR5-LABEL: ult_21_v2i64:
17046 ; PWR5-NEXT: lis 5, 21845
17047 ; PWR5-NEXT: lis 6, 13107
17048 ; PWR5-NEXT: ori 5, 5, 21845
17049 ; PWR5-NEXT: rotldi 8, 4, 63
17050 ; PWR5-NEXT: rotldi 9, 3, 63
17051 ; PWR5-NEXT: rldimi 5, 5, 32, 0
17052 ; PWR5-NEXT: and 8, 8, 5
17053 ; PWR5-NEXT: and 5, 9, 5
17054 ; PWR5-NEXT: ori 6, 6, 13107
17055 ; PWR5-NEXT: sub 3, 3, 5
17056 ; PWR5-NEXT: rldimi 6, 6, 32, 0
17057 ; PWR5-NEXT: sub 4, 4, 8
17058 ; PWR5-NEXT: and 8, 3, 6
17059 ; PWR5-NEXT: rotldi 3, 3, 62
17060 ; PWR5-NEXT: and 3, 3, 6
17061 ; PWR5-NEXT: lis 7, 3855
17062 ; PWR5-NEXT: and 5, 4, 6
17063 ; PWR5-NEXT: rotldi 4, 4, 62
17064 ; PWR5-NEXT: add 3, 8, 3
17065 ; PWR5-NEXT: lis 9, 257
17066 ; PWR5-NEXT: ori 7, 7, 3855
17067 ; PWR5-NEXT: and 4, 4, 6
17068 ; PWR5-NEXT: rldicl 6, 3, 60, 4
17069 ; PWR5-NEXT: ori 9, 9, 257
17070 ; PWR5-NEXT: rldimi 7, 7, 32, 0
17071 ; PWR5-NEXT: add 4, 5, 4
17072 ; PWR5-NEXT: add 3, 3, 6
17073 ; PWR5-NEXT: rldimi 9, 9, 32, 0
17074 ; PWR5-NEXT: rldicl 5, 4, 60, 4
17075 ; PWR5-NEXT: and 3, 3, 7
17076 ; PWR5-NEXT: add 4, 4, 5
17077 ; PWR5-NEXT: mulld 3, 3, 9
17078 ; PWR5-NEXT: and 4, 4, 7
17079 ; PWR5-NEXT: rldicl 3, 3, 8, 56
17080 ; PWR5-NEXT: li 5, 21
17081 ; PWR5-NEXT: mulld 4, 4, 9
17082 ; PWR5-NEXT: subc 6, 3, 5
17083 ; PWR5-NEXT: rldicl 4, 4, 8, 56
17084 ; PWR5-NEXT: subfe 3, 3, 3
17085 ; PWR5-NEXT: subc 5, 4, 5
17086 ; PWR5-NEXT: subfe 4, 4, 4
17089 ; PWR6-LABEL: ult_21_v2i64:
17091 ; PWR6-NEXT: lis 5, 21845
17092 ; PWR6-NEXT: lis 6, 13107
17093 ; PWR6-NEXT: ori 5, 5, 21845
17094 ; PWR6-NEXT: rotldi 8, 4, 63
17095 ; PWR6-NEXT: rotldi 9, 3, 63
17096 ; PWR6-NEXT: rldimi 5, 5, 32, 0
17097 ; PWR6-NEXT: and 8, 8, 5
17098 ; PWR6-NEXT: and 5, 9, 5
17099 ; PWR6-NEXT: ori 6, 6, 13107
17100 ; PWR6-NEXT: sub 3, 3, 5
17101 ; PWR6-NEXT: rldimi 6, 6, 32, 0
17102 ; PWR6-NEXT: sub 4, 4, 8
17103 ; PWR6-NEXT: and 8, 3, 6
17104 ; PWR6-NEXT: rotldi 3, 3, 62
17105 ; PWR6-NEXT: and 3, 3, 6
17106 ; PWR6-NEXT: lis 7, 3855
17107 ; PWR6-NEXT: and 5, 4, 6
17108 ; PWR6-NEXT: rotldi 4, 4, 62
17109 ; PWR6-NEXT: add 3, 8, 3
17110 ; PWR6-NEXT: lis 9, 257
17111 ; PWR6-NEXT: ori 7, 7, 3855
17112 ; PWR6-NEXT: and 4, 4, 6
17113 ; PWR6-NEXT: rldicl 6, 3, 60, 4
17114 ; PWR6-NEXT: ori 9, 9, 257
17115 ; PWR6-NEXT: rldimi 7, 7, 32, 0
17116 ; PWR6-NEXT: add 4, 5, 4
17117 ; PWR6-NEXT: add 3, 3, 6
17118 ; PWR6-NEXT: rldimi 9, 9, 32, 0
17119 ; PWR6-NEXT: rldicl 5, 4, 60, 4
17120 ; PWR6-NEXT: and 3, 3, 7
17121 ; PWR6-NEXT: add 4, 4, 5
17122 ; PWR6-NEXT: mulld 3, 3, 9
17123 ; PWR6-NEXT: and 4, 4, 7
17124 ; PWR6-NEXT: rldicl 3, 3, 8, 56
17125 ; PWR6-NEXT: li 5, 21
17126 ; PWR6-NEXT: mulld 4, 4, 9
17127 ; PWR6-NEXT: subc 6, 3, 5
17128 ; PWR6-NEXT: rldicl 4, 4, 8, 56
17129 ; PWR6-NEXT: subfe 3, 3, 3
17130 ; PWR6-NEXT: subc 5, 4, 5
17131 ; PWR6-NEXT: subfe 4, 4, 4
17134 ; PWR7-LABEL: ult_21_v2i64:
17136 ; PWR7-NEXT: addi 3, 1, -32
17137 ; PWR7-NEXT: li 5, -1
17138 ; PWR7-NEXT: stxvd2x 34, 0, 3
17139 ; PWR7-NEXT: ld 4, -24(1)
17140 ; PWR7-NEXT: ld 3, -32(1)
17141 ; PWR7-NEXT: popcntd 4, 4
17142 ; PWR7-NEXT: popcntd 3, 3
17143 ; PWR7-NEXT: cmpldi 4, 21
17144 ; PWR7-NEXT: li 4, 0
17145 ; PWR7-NEXT: isellt 6, 5, 4
17146 ; PWR7-NEXT: cmpldi 3, 21
17147 ; PWR7-NEXT: isellt 3, 5, 4
17148 ; PWR7-NEXT: std 6, -8(1)
17149 ; PWR7-NEXT: std 3, -16(1)
17150 ; PWR7-NEXT: addi 3, 1, -16
17151 ; PWR7-NEXT: lxvd2x 34, 0, 3
17154 ; PWR8-LABEL: ult_21_v2i64:
17156 ; PWR8-NEXT: addis 3, 2, .LCPI139_0@toc@ha
17157 ; PWR8-NEXT: vpopcntd 2, 2
17158 ; PWR8-NEXT: addi 3, 3, .LCPI139_0@toc@l
17159 ; PWR8-NEXT: lxvd2x 35, 0, 3
17160 ; PWR8-NEXT: vcmpgtud 2, 3, 2
17163 ; PWR9-LABEL: ult_21_v2i64:
17165 ; PWR9-NEXT: addis 3, 2, .LCPI139_0@toc@ha
17166 ; PWR9-NEXT: vpopcntd 2, 2
17167 ; PWR9-NEXT: addi 3, 3, .LCPI139_0@toc@l
17168 ; PWR9-NEXT: lxv 35, 0(3)
17169 ; PWR9-NEXT: vcmpgtud 2, 3, 2
17171 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
17172 %3 = icmp ult <2 x i64> %2, <i64 21, i64 21>
17173 %4 = sext <2 x i1> %3 to <2 x i64>
17177 define <2 x i64> @ugt_21_v2i64(<2 x i64> %0) {
17178 ; PWR5-LABEL: ugt_21_v2i64:
17180 ; PWR5-NEXT: lis 5, 21845
17181 ; PWR5-NEXT: lis 6, 13107
17182 ; PWR5-NEXT: ori 5, 5, 21845
17183 ; PWR5-NEXT: rotldi 8, 4, 63
17184 ; PWR5-NEXT: rotldi 9, 3, 63
17185 ; PWR5-NEXT: rldimi 5, 5, 32, 0
17186 ; PWR5-NEXT: and 8, 8, 5
17187 ; PWR5-NEXT: and 5, 9, 5
17188 ; PWR5-NEXT: ori 6, 6, 13107
17189 ; PWR5-NEXT: sub 3, 3, 5
17190 ; PWR5-NEXT: rldimi 6, 6, 32, 0
17191 ; PWR5-NEXT: sub 4, 4, 8
17192 ; PWR5-NEXT: and 8, 3, 6
17193 ; PWR5-NEXT: rotldi 3, 3, 62
17194 ; PWR5-NEXT: and 3, 3, 6
17195 ; PWR5-NEXT: lis 7, 3855
17196 ; PWR5-NEXT: and 5, 4, 6
17197 ; PWR5-NEXT: rotldi 4, 4, 62
17198 ; PWR5-NEXT: add 3, 8, 3
17199 ; PWR5-NEXT: lis 9, 257
17200 ; PWR5-NEXT: ori 7, 7, 3855
17201 ; PWR5-NEXT: and 4, 4, 6
17202 ; PWR5-NEXT: rldicl 6, 3, 60, 4
17203 ; PWR5-NEXT: ori 9, 9, 257
17204 ; PWR5-NEXT: rldimi 7, 7, 32, 0
17205 ; PWR5-NEXT: add 4, 5, 4
17206 ; PWR5-NEXT: add 3, 3, 6
17207 ; PWR5-NEXT: rldimi 9, 9, 32, 0
17208 ; PWR5-NEXT: rldicl 5, 4, 60, 4
17209 ; PWR5-NEXT: and 3, 3, 7
17210 ; PWR5-NEXT: add 4, 4, 5
17211 ; PWR5-NEXT: mulld 3, 3, 9
17212 ; PWR5-NEXT: and 4, 4, 7
17213 ; PWR5-NEXT: rldicl 3, 3, 8, 56
17214 ; PWR5-NEXT: mulld 4, 4, 9
17215 ; PWR5-NEXT: li 5, 21
17216 ; PWR5-NEXT: subfic 3, 3, 21
17217 ; PWR5-NEXT: rldicl 4, 4, 8, 56
17218 ; PWR5-NEXT: subfe 3, 5, 5
17219 ; PWR5-NEXT: subfic 4, 4, 21
17220 ; PWR5-NEXT: subfe 4, 5, 5
17223 ; PWR6-LABEL: ugt_21_v2i64:
17225 ; PWR6-NEXT: lis 5, 21845
17226 ; PWR6-NEXT: lis 6, 13107
17227 ; PWR6-NEXT: ori 5, 5, 21845
17228 ; PWR6-NEXT: rotldi 8, 4, 63
17229 ; PWR6-NEXT: rotldi 9, 3, 63
17230 ; PWR6-NEXT: rldimi 5, 5, 32, 0
17231 ; PWR6-NEXT: and 8, 8, 5
17232 ; PWR6-NEXT: and 5, 9, 5
17233 ; PWR6-NEXT: ori 6, 6, 13107
17234 ; PWR6-NEXT: sub 3, 3, 5
17235 ; PWR6-NEXT: rldimi 6, 6, 32, 0
17236 ; PWR6-NEXT: sub 4, 4, 8
17237 ; PWR6-NEXT: and 8, 3, 6
17238 ; PWR6-NEXT: rotldi 3, 3, 62
17239 ; PWR6-NEXT: and 3, 3, 6
17240 ; PWR6-NEXT: lis 7, 3855
17241 ; PWR6-NEXT: and 5, 4, 6
17242 ; PWR6-NEXT: rotldi 4, 4, 62
17243 ; PWR6-NEXT: add 3, 8, 3
17244 ; PWR6-NEXT: lis 9, 257
17245 ; PWR6-NEXT: ori 7, 7, 3855
17246 ; PWR6-NEXT: and 4, 4, 6
17247 ; PWR6-NEXT: rldicl 6, 3, 60, 4
17248 ; PWR6-NEXT: ori 9, 9, 257
17249 ; PWR6-NEXT: rldimi 7, 7, 32, 0
17250 ; PWR6-NEXT: add 4, 5, 4
17251 ; PWR6-NEXT: add 3, 3, 6
17252 ; PWR6-NEXT: rldimi 9, 9, 32, 0
17253 ; PWR6-NEXT: rldicl 5, 4, 60, 4
17254 ; PWR6-NEXT: and 3, 3, 7
17255 ; PWR6-NEXT: add 4, 4, 5
17256 ; PWR6-NEXT: mulld 3, 3, 9
17257 ; PWR6-NEXT: and 4, 4, 7
17258 ; PWR6-NEXT: rldicl 3, 3, 8, 56
17259 ; PWR6-NEXT: mulld 4, 4, 9
17260 ; PWR6-NEXT: li 5, 21
17261 ; PWR6-NEXT: subfic 3, 3, 21
17262 ; PWR6-NEXT: rldicl 4, 4, 8, 56
17263 ; PWR6-NEXT: subfe 3, 5, 5
17264 ; PWR6-NEXT: subfic 4, 4, 21
17265 ; PWR6-NEXT: subfe 4, 5, 5
17268 ; PWR7-LABEL: ugt_21_v2i64:
17270 ; PWR7-NEXT: addi 3, 1, -32
17271 ; PWR7-NEXT: li 5, -1
17272 ; PWR7-NEXT: stxvd2x 34, 0, 3
17273 ; PWR7-NEXT: ld 4, -24(1)
17274 ; PWR7-NEXT: ld 3, -32(1)
17275 ; PWR7-NEXT: popcntd 4, 4
17276 ; PWR7-NEXT: popcntd 3, 3
17277 ; PWR7-NEXT: cmpldi 4, 21
17278 ; PWR7-NEXT: li 4, 0
17279 ; PWR7-NEXT: iselgt 6, 5, 4
17280 ; PWR7-NEXT: cmpldi 3, 21
17281 ; PWR7-NEXT: iselgt 3, 5, 4
17282 ; PWR7-NEXT: std 6, -8(1)
17283 ; PWR7-NEXT: std 3, -16(1)
17284 ; PWR7-NEXT: addi 3, 1, -16
17285 ; PWR7-NEXT: lxvd2x 34, 0, 3
17288 ; PWR8-LABEL: ugt_21_v2i64:
17290 ; PWR8-NEXT: addis 3, 2, .LCPI140_0@toc@ha
17291 ; PWR8-NEXT: vpopcntd 2, 2
17292 ; PWR8-NEXT: addi 3, 3, .LCPI140_0@toc@l
17293 ; PWR8-NEXT: lxvd2x 35, 0, 3
17294 ; PWR8-NEXT: vcmpgtud 2, 2, 3
17297 ; PWR9-LABEL: ugt_21_v2i64:
17299 ; PWR9-NEXT: addis 3, 2, .LCPI140_0@toc@ha
17300 ; PWR9-NEXT: vpopcntd 2, 2
17301 ; PWR9-NEXT: addi 3, 3, .LCPI140_0@toc@l
17302 ; PWR9-NEXT: lxv 35, 0(3)
17303 ; PWR9-NEXT: vcmpgtud 2, 2, 3
17305 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
17306 %3 = icmp ugt <2 x i64> %2, <i64 21, i64 21>
17307 %4 = sext <2 x i1> %3 to <2 x i64>
17311 define <2 x i64> @ult_22_v2i64(<2 x i64> %0) {
17312 ; PWR5-LABEL: ult_22_v2i64:
17314 ; PWR5-NEXT: lis 5, 21845
17315 ; PWR5-NEXT: lis 6, 13107
17316 ; PWR5-NEXT: ori 5, 5, 21845
17317 ; PWR5-NEXT: rotldi 8, 4, 63
17318 ; PWR5-NEXT: rotldi 9, 3, 63
17319 ; PWR5-NEXT: rldimi 5, 5, 32, 0
17320 ; PWR5-NEXT: and 8, 8, 5
17321 ; PWR5-NEXT: and 5, 9, 5
17322 ; PWR5-NEXT: ori 6, 6, 13107
17323 ; PWR5-NEXT: sub 3, 3, 5
17324 ; PWR5-NEXT: rldimi 6, 6, 32, 0
17325 ; PWR5-NEXT: sub 4, 4, 8
17326 ; PWR5-NEXT: and 8, 3, 6
17327 ; PWR5-NEXT: rotldi 3, 3, 62
17328 ; PWR5-NEXT: and 3, 3, 6
17329 ; PWR5-NEXT: lis 7, 3855
17330 ; PWR5-NEXT: and 5, 4, 6
17331 ; PWR5-NEXT: rotldi 4, 4, 62
17332 ; PWR5-NEXT: add 3, 8, 3
17333 ; PWR5-NEXT: lis 9, 257
17334 ; PWR5-NEXT: ori 7, 7, 3855
17335 ; PWR5-NEXT: and 4, 4, 6
17336 ; PWR5-NEXT: rldicl 6, 3, 60, 4
17337 ; PWR5-NEXT: ori 9, 9, 257
17338 ; PWR5-NEXT: rldimi 7, 7, 32, 0
17339 ; PWR5-NEXT: add 4, 5, 4
17340 ; PWR5-NEXT: add 3, 3, 6
17341 ; PWR5-NEXT: rldimi 9, 9, 32, 0
17342 ; PWR5-NEXT: rldicl 5, 4, 60, 4
17343 ; PWR5-NEXT: and 3, 3, 7
17344 ; PWR5-NEXT: add 4, 4, 5
17345 ; PWR5-NEXT: mulld 3, 3, 9
17346 ; PWR5-NEXT: and 4, 4, 7
17347 ; PWR5-NEXT: rldicl 3, 3, 8, 56
17348 ; PWR5-NEXT: li 5, 22
17349 ; PWR5-NEXT: mulld 4, 4, 9
17350 ; PWR5-NEXT: subc 6, 3, 5
17351 ; PWR5-NEXT: rldicl 4, 4, 8, 56
17352 ; PWR5-NEXT: subfe 3, 3, 3
17353 ; PWR5-NEXT: subc 5, 4, 5
17354 ; PWR5-NEXT: subfe 4, 4, 4
17357 ; PWR6-LABEL: ult_22_v2i64:
17359 ; PWR6-NEXT: lis 5, 21845
17360 ; PWR6-NEXT: lis 6, 13107
17361 ; PWR6-NEXT: ori 5, 5, 21845
17362 ; PWR6-NEXT: rotldi 8, 4, 63
17363 ; PWR6-NEXT: rotldi 9, 3, 63
17364 ; PWR6-NEXT: rldimi 5, 5, 32, 0
17365 ; PWR6-NEXT: and 8, 8, 5
17366 ; PWR6-NEXT: and 5, 9, 5
17367 ; PWR6-NEXT: ori 6, 6, 13107
17368 ; PWR6-NEXT: sub 3, 3, 5
17369 ; PWR6-NEXT: rldimi 6, 6, 32, 0
17370 ; PWR6-NEXT: sub 4, 4, 8
17371 ; PWR6-NEXT: and 8, 3, 6
17372 ; PWR6-NEXT: rotldi 3, 3, 62
17373 ; PWR6-NEXT: and 3, 3, 6
17374 ; PWR6-NEXT: lis 7, 3855
17375 ; PWR6-NEXT: and 5, 4, 6
17376 ; PWR6-NEXT: rotldi 4, 4, 62
17377 ; PWR6-NEXT: add 3, 8, 3
17378 ; PWR6-NEXT: lis 9, 257
17379 ; PWR6-NEXT: ori 7, 7, 3855
17380 ; PWR6-NEXT: and 4, 4, 6
17381 ; PWR6-NEXT: rldicl 6, 3, 60, 4
17382 ; PWR6-NEXT: ori 9, 9, 257
17383 ; PWR6-NEXT: rldimi 7, 7, 32, 0
17384 ; PWR6-NEXT: add 4, 5, 4
17385 ; PWR6-NEXT: add 3, 3, 6
17386 ; PWR6-NEXT: rldimi 9, 9, 32, 0
17387 ; PWR6-NEXT: rldicl 5, 4, 60, 4
17388 ; PWR6-NEXT: and 3, 3, 7
17389 ; PWR6-NEXT: add 4, 4, 5
17390 ; PWR6-NEXT: mulld 3, 3, 9
17391 ; PWR6-NEXT: and 4, 4, 7
17392 ; PWR6-NEXT: rldicl 3, 3, 8, 56
17393 ; PWR6-NEXT: li 5, 22
17394 ; PWR6-NEXT: mulld 4, 4, 9
17395 ; PWR6-NEXT: subc 6, 3, 5
17396 ; PWR6-NEXT: rldicl 4, 4, 8, 56
17397 ; PWR6-NEXT: subfe 3, 3, 3
17398 ; PWR6-NEXT: subc 5, 4, 5
17399 ; PWR6-NEXT: subfe 4, 4, 4
17402 ; PWR7-LABEL: ult_22_v2i64:
17404 ; PWR7-NEXT: addi 3, 1, -32
17405 ; PWR7-NEXT: li 5, -1
17406 ; PWR7-NEXT: stxvd2x 34, 0, 3
17407 ; PWR7-NEXT: ld 4, -24(1)
17408 ; PWR7-NEXT: ld 3, -32(1)
17409 ; PWR7-NEXT: popcntd 4, 4
17410 ; PWR7-NEXT: popcntd 3, 3
17411 ; PWR7-NEXT: cmpldi 4, 22
17412 ; PWR7-NEXT: li 4, 0
17413 ; PWR7-NEXT: isellt 6, 5, 4
17414 ; PWR7-NEXT: cmpldi 3, 22
17415 ; PWR7-NEXT: isellt 3, 5, 4
17416 ; PWR7-NEXT: std 6, -8(1)
17417 ; PWR7-NEXT: std 3, -16(1)
17418 ; PWR7-NEXT: addi 3, 1, -16
17419 ; PWR7-NEXT: lxvd2x 34, 0, 3
17422 ; PWR8-LABEL: ult_22_v2i64:
17424 ; PWR8-NEXT: addis 3, 2, .LCPI141_0@toc@ha
17425 ; PWR8-NEXT: vpopcntd 2, 2
17426 ; PWR8-NEXT: addi 3, 3, .LCPI141_0@toc@l
17427 ; PWR8-NEXT: lxvd2x 35, 0, 3
17428 ; PWR8-NEXT: vcmpgtud 2, 3, 2
17431 ; PWR9-LABEL: ult_22_v2i64:
17433 ; PWR9-NEXT: addis 3, 2, .LCPI141_0@toc@ha
17434 ; PWR9-NEXT: vpopcntd 2, 2
17435 ; PWR9-NEXT: addi 3, 3, .LCPI141_0@toc@l
17436 ; PWR9-NEXT: lxv 35, 0(3)
17437 ; PWR9-NEXT: vcmpgtud 2, 3, 2
17439 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
17440 %3 = icmp ult <2 x i64> %2, <i64 22, i64 22>
17441 %4 = sext <2 x i1> %3 to <2 x i64>
17445 define <2 x i64> @ugt_22_v2i64(<2 x i64> %0) {
17446 ; PWR5-LABEL: ugt_22_v2i64:
17448 ; PWR5-NEXT: lis 5, 21845
17449 ; PWR5-NEXT: lis 6, 13107
17450 ; PWR5-NEXT: ori 5, 5, 21845
17451 ; PWR5-NEXT: rotldi 8, 4, 63
17452 ; PWR5-NEXT: rotldi 9, 3, 63
17453 ; PWR5-NEXT: rldimi 5, 5, 32, 0
17454 ; PWR5-NEXT: and 8, 8, 5
17455 ; PWR5-NEXT: and 5, 9, 5
17456 ; PWR5-NEXT: ori 6, 6, 13107
17457 ; PWR5-NEXT: sub 3, 3, 5
17458 ; PWR5-NEXT: rldimi 6, 6, 32, 0
17459 ; PWR5-NEXT: sub 4, 4, 8
17460 ; PWR5-NEXT: and 8, 3, 6
17461 ; PWR5-NEXT: rotldi 3, 3, 62
17462 ; PWR5-NEXT: and 3, 3, 6
17463 ; PWR5-NEXT: lis 7, 3855
17464 ; PWR5-NEXT: and 5, 4, 6
17465 ; PWR5-NEXT: rotldi 4, 4, 62
17466 ; PWR5-NEXT: add 3, 8, 3
17467 ; PWR5-NEXT: lis 9, 257
17468 ; PWR5-NEXT: ori 7, 7, 3855
17469 ; PWR5-NEXT: and 4, 4, 6
17470 ; PWR5-NEXT: rldicl 6, 3, 60, 4
17471 ; PWR5-NEXT: ori 9, 9, 257
17472 ; PWR5-NEXT: rldimi 7, 7, 32, 0
17473 ; PWR5-NEXT: add 4, 5, 4
17474 ; PWR5-NEXT: add 3, 3, 6
17475 ; PWR5-NEXT: rldimi 9, 9, 32, 0
17476 ; PWR5-NEXT: rldicl 5, 4, 60, 4
17477 ; PWR5-NEXT: and 3, 3, 7
17478 ; PWR5-NEXT: add 4, 4, 5
17479 ; PWR5-NEXT: mulld 3, 3, 9
17480 ; PWR5-NEXT: and 4, 4, 7
17481 ; PWR5-NEXT: rldicl 3, 3, 8, 56
17482 ; PWR5-NEXT: mulld 4, 4, 9
17483 ; PWR5-NEXT: li 5, 22
17484 ; PWR5-NEXT: subfic 3, 3, 22
17485 ; PWR5-NEXT: rldicl 4, 4, 8, 56
17486 ; PWR5-NEXT: subfe 3, 5, 5
17487 ; PWR5-NEXT: subfic 4, 4, 22
17488 ; PWR5-NEXT: subfe 4, 5, 5
17491 ; PWR6-LABEL: ugt_22_v2i64:
17493 ; PWR6-NEXT: lis 5, 21845
17494 ; PWR6-NEXT: lis 6, 13107
17495 ; PWR6-NEXT: ori 5, 5, 21845
17496 ; PWR6-NEXT: rotldi 8, 4, 63
17497 ; PWR6-NEXT: rotldi 9, 3, 63
17498 ; PWR6-NEXT: rldimi 5, 5, 32, 0
17499 ; PWR6-NEXT: and 8, 8, 5
17500 ; PWR6-NEXT: and 5, 9, 5
17501 ; PWR6-NEXT: ori 6, 6, 13107
17502 ; PWR6-NEXT: sub 3, 3, 5
17503 ; PWR6-NEXT: rldimi 6, 6, 32, 0
17504 ; PWR6-NEXT: sub 4, 4, 8
17505 ; PWR6-NEXT: and 8, 3, 6
17506 ; PWR6-NEXT: rotldi 3, 3, 62
17507 ; PWR6-NEXT: and 3, 3, 6
17508 ; PWR6-NEXT: lis 7, 3855
17509 ; PWR6-NEXT: and 5, 4, 6
17510 ; PWR6-NEXT: rotldi 4, 4, 62
17511 ; PWR6-NEXT: add 3, 8, 3
17512 ; PWR6-NEXT: lis 9, 257
17513 ; PWR6-NEXT: ori 7, 7, 3855
17514 ; PWR6-NEXT: and 4, 4, 6
17515 ; PWR6-NEXT: rldicl 6, 3, 60, 4
17516 ; PWR6-NEXT: ori 9, 9, 257
17517 ; PWR6-NEXT: rldimi 7, 7, 32, 0
17518 ; PWR6-NEXT: add 4, 5, 4
17519 ; PWR6-NEXT: add 3, 3, 6
17520 ; PWR6-NEXT: rldimi 9, 9, 32, 0
17521 ; PWR6-NEXT: rldicl 5, 4, 60, 4
17522 ; PWR6-NEXT: and 3, 3, 7
17523 ; PWR6-NEXT: add 4, 4, 5
17524 ; PWR6-NEXT: mulld 3, 3, 9
17525 ; PWR6-NEXT: and 4, 4, 7
17526 ; PWR6-NEXT: rldicl 3, 3, 8, 56
17527 ; PWR6-NEXT: mulld 4, 4, 9
17528 ; PWR6-NEXT: li 5, 22
17529 ; PWR6-NEXT: subfic 3, 3, 22
17530 ; PWR6-NEXT: rldicl 4, 4, 8, 56
17531 ; PWR6-NEXT: subfe 3, 5, 5
17532 ; PWR6-NEXT: subfic 4, 4, 22
17533 ; PWR6-NEXT: subfe 4, 5, 5
17536 ; PWR7-LABEL: ugt_22_v2i64:
17538 ; PWR7-NEXT: addi 3, 1, -32
17539 ; PWR7-NEXT: li 5, -1
17540 ; PWR7-NEXT: stxvd2x 34, 0, 3
17541 ; PWR7-NEXT: ld 4, -24(1)
17542 ; PWR7-NEXT: ld 3, -32(1)
17543 ; PWR7-NEXT: popcntd 4, 4
17544 ; PWR7-NEXT: popcntd 3, 3
17545 ; PWR7-NEXT: cmpldi 4, 22
17546 ; PWR7-NEXT: li 4, 0
17547 ; PWR7-NEXT: iselgt 6, 5, 4
17548 ; PWR7-NEXT: cmpldi 3, 22
17549 ; PWR7-NEXT: iselgt 3, 5, 4
17550 ; PWR7-NEXT: std 6, -8(1)
17551 ; PWR7-NEXT: std 3, -16(1)
17552 ; PWR7-NEXT: addi 3, 1, -16
17553 ; PWR7-NEXT: lxvd2x 34, 0, 3
17556 ; PWR8-LABEL: ugt_22_v2i64:
17558 ; PWR8-NEXT: addis 3, 2, .LCPI142_0@toc@ha
17559 ; PWR8-NEXT: vpopcntd 2, 2
17560 ; PWR8-NEXT: addi 3, 3, .LCPI142_0@toc@l
17561 ; PWR8-NEXT: lxvd2x 35, 0, 3
17562 ; PWR8-NEXT: vcmpgtud 2, 2, 3
17565 ; PWR9-LABEL: ugt_22_v2i64:
17567 ; PWR9-NEXT: addis 3, 2, .LCPI142_0@toc@ha
17568 ; PWR9-NEXT: vpopcntd 2, 2
17569 ; PWR9-NEXT: addi 3, 3, .LCPI142_0@toc@l
17570 ; PWR9-NEXT: lxv 35, 0(3)
17571 ; PWR9-NEXT: vcmpgtud 2, 2, 3
17573 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
17574 %3 = icmp ugt <2 x i64> %2, <i64 22, i64 22>
17575 %4 = sext <2 x i1> %3 to <2 x i64>
17579 define <2 x i64> @ult_23_v2i64(<2 x i64> %0) {
17580 ; PWR5-LABEL: ult_23_v2i64:
17582 ; PWR5-NEXT: lis 5, 21845
17583 ; PWR5-NEXT: lis 6, 13107
17584 ; PWR5-NEXT: ori 5, 5, 21845
17585 ; PWR5-NEXT: rotldi 8, 4, 63
17586 ; PWR5-NEXT: rotldi 9, 3, 63
17587 ; PWR5-NEXT: rldimi 5, 5, 32, 0
17588 ; PWR5-NEXT: and 8, 8, 5
17589 ; PWR5-NEXT: and 5, 9, 5
17590 ; PWR5-NEXT: ori 6, 6, 13107
17591 ; PWR5-NEXT: sub 3, 3, 5
17592 ; PWR5-NEXT: rldimi 6, 6, 32, 0
17593 ; PWR5-NEXT: sub 4, 4, 8
17594 ; PWR5-NEXT: and 8, 3, 6
17595 ; PWR5-NEXT: rotldi 3, 3, 62
17596 ; PWR5-NEXT: and 3, 3, 6
17597 ; PWR5-NEXT: lis 7, 3855
17598 ; PWR5-NEXT: and 5, 4, 6
17599 ; PWR5-NEXT: rotldi 4, 4, 62
17600 ; PWR5-NEXT: add 3, 8, 3
17601 ; PWR5-NEXT: lis 9, 257
17602 ; PWR5-NEXT: ori 7, 7, 3855
17603 ; PWR5-NEXT: and 4, 4, 6
17604 ; PWR5-NEXT: rldicl 6, 3, 60, 4
17605 ; PWR5-NEXT: ori 9, 9, 257
17606 ; PWR5-NEXT: rldimi 7, 7, 32, 0
17607 ; PWR5-NEXT: add 4, 5, 4
17608 ; PWR5-NEXT: add 3, 3, 6
17609 ; PWR5-NEXT: rldimi 9, 9, 32, 0
17610 ; PWR5-NEXT: rldicl 5, 4, 60, 4
17611 ; PWR5-NEXT: and 3, 3, 7
17612 ; PWR5-NEXT: add 4, 4, 5
17613 ; PWR5-NEXT: mulld 3, 3, 9
17614 ; PWR5-NEXT: and 4, 4, 7
17615 ; PWR5-NEXT: rldicl 3, 3, 8, 56
17616 ; PWR5-NEXT: li 5, 23
17617 ; PWR5-NEXT: mulld 4, 4, 9
17618 ; PWR5-NEXT: subc 6, 3, 5
17619 ; PWR5-NEXT: rldicl 4, 4, 8, 56
17620 ; PWR5-NEXT: subfe 3, 3, 3
17621 ; PWR5-NEXT: subc 5, 4, 5
17622 ; PWR5-NEXT: subfe 4, 4, 4
17625 ; PWR6-LABEL: ult_23_v2i64:
17627 ; PWR6-NEXT: lis 5, 21845
17628 ; PWR6-NEXT: lis 6, 13107
17629 ; PWR6-NEXT: ori 5, 5, 21845
17630 ; PWR6-NEXT: rotldi 8, 4, 63
17631 ; PWR6-NEXT: rotldi 9, 3, 63
17632 ; PWR6-NEXT: rldimi 5, 5, 32, 0
17633 ; PWR6-NEXT: and 8, 8, 5
17634 ; PWR6-NEXT: and 5, 9, 5
17635 ; PWR6-NEXT: ori 6, 6, 13107
17636 ; PWR6-NEXT: sub 3, 3, 5
17637 ; PWR6-NEXT: rldimi 6, 6, 32, 0
17638 ; PWR6-NEXT: sub 4, 4, 8
17639 ; PWR6-NEXT: and 8, 3, 6
17640 ; PWR6-NEXT: rotldi 3, 3, 62
17641 ; PWR6-NEXT: and 3, 3, 6
17642 ; PWR6-NEXT: lis 7, 3855
17643 ; PWR6-NEXT: and 5, 4, 6
17644 ; PWR6-NEXT: rotldi 4, 4, 62
17645 ; PWR6-NEXT: add 3, 8, 3
17646 ; PWR6-NEXT: lis 9, 257
17647 ; PWR6-NEXT: ori 7, 7, 3855
17648 ; PWR6-NEXT: and 4, 4, 6
17649 ; PWR6-NEXT: rldicl 6, 3, 60, 4
17650 ; PWR6-NEXT: ori 9, 9, 257
17651 ; PWR6-NEXT: rldimi 7, 7, 32, 0
17652 ; PWR6-NEXT: add 4, 5, 4
17653 ; PWR6-NEXT: add 3, 3, 6
17654 ; PWR6-NEXT: rldimi 9, 9, 32, 0
17655 ; PWR6-NEXT: rldicl 5, 4, 60, 4
17656 ; PWR6-NEXT: and 3, 3, 7
17657 ; PWR6-NEXT: add 4, 4, 5
17658 ; PWR6-NEXT: mulld 3, 3, 9
17659 ; PWR6-NEXT: and 4, 4, 7
17660 ; PWR6-NEXT: rldicl 3, 3, 8, 56
17661 ; PWR6-NEXT: li 5, 23
17662 ; PWR6-NEXT: mulld 4, 4, 9
17663 ; PWR6-NEXT: subc 6, 3, 5
17664 ; PWR6-NEXT: rldicl 4, 4, 8, 56
17665 ; PWR6-NEXT: subfe 3, 3, 3
17666 ; PWR6-NEXT: subc 5, 4, 5
17667 ; PWR6-NEXT: subfe 4, 4, 4
17670 ; PWR7-LABEL: ult_23_v2i64:
17672 ; PWR7-NEXT: addi 3, 1, -32
17673 ; PWR7-NEXT: li 5, -1
17674 ; PWR7-NEXT: stxvd2x 34, 0, 3
17675 ; PWR7-NEXT: ld 4, -24(1)
17676 ; PWR7-NEXT: ld 3, -32(1)
17677 ; PWR7-NEXT: popcntd 4, 4
17678 ; PWR7-NEXT: popcntd 3, 3
17679 ; PWR7-NEXT: cmpldi 4, 23
17680 ; PWR7-NEXT: li 4, 0
17681 ; PWR7-NEXT: isellt 6, 5, 4
17682 ; PWR7-NEXT: cmpldi 3, 23
17683 ; PWR7-NEXT: isellt 3, 5, 4
17684 ; PWR7-NEXT: std 6, -8(1)
17685 ; PWR7-NEXT: std 3, -16(1)
17686 ; PWR7-NEXT: addi 3, 1, -16
17687 ; PWR7-NEXT: lxvd2x 34, 0, 3
17690 ; PWR8-LABEL: ult_23_v2i64:
17692 ; PWR8-NEXT: addis 3, 2, .LCPI143_0@toc@ha
17693 ; PWR8-NEXT: vpopcntd 2, 2
17694 ; PWR8-NEXT: addi 3, 3, .LCPI143_0@toc@l
17695 ; PWR8-NEXT: lxvd2x 35, 0, 3
17696 ; PWR8-NEXT: vcmpgtud 2, 3, 2
17699 ; PWR9-LABEL: ult_23_v2i64:
17701 ; PWR9-NEXT: addis 3, 2, .LCPI143_0@toc@ha
17702 ; PWR9-NEXT: vpopcntd 2, 2
17703 ; PWR9-NEXT: addi 3, 3, .LCPI143_0@toc@l
17704 ; PWR9-NEXT: lxv 35, 0(3)
17705 ; PWR9-NEXT: vcmpgtud 2, 3, 2
17707 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
17708 %3 = icmp ult <2 x i64> %2, <i64 23, i64 23>
17709 %4 = sext <2 x i1> %3 to <2 x i64>
17713 define <2 x i64> @ugt_23_v2i64(<2 x i64> %0) {
17714 ; PWR5-LABEL: ugt_23_v2i64:
17716 ; PWR5-NEXT: lis 5, 21845
17717 ; PWR5-NEXT: lis 6, 13107
17718 ; PWR5-NEXT: ori 5, 5, 21845
17719 ; PWR5-NEXT: rotldi 8, 4, 63
17720 ; PWR5-NEXT: rotldi 9, 3, 63
17721 ; PWR5-NEXT: rldimi 5, 5, 32, 0
17722 ; PWR5-NEXT: and 8, 8, 5
17723 ; PWR5-NEXT: and 5, 9, 5
17724 ; PWR5-NEXT: ori 6, 6, 13107
17725 ; PWR5-NEXT: sub 3, 3, 5
17726 ; PWR5-NEXT: rldimi 6, 6, 32, 0
17727 ; PWR5-NEXT: sub 4, 4, 8
17728 ; PWR5-NEXT: and 8, 3, 6
17729 ; PWR5-NEXT: rotldi 3, 3, 62
17730 ; PWR5-NEXT: and 3, 3, 6
17731 ; PWR5-NEXT: lis 7, 3855
17732 ; PWR5-NEXT: and 5, 4, 6
17733 ; PWR5-NEXT: rotldi 4, 4, 62
17734 ; PWR5-NEXT: add 3, 8, 3
17735 ; PWR5-NEXT: lis 9, 257
17736 ; PWR5-NEXT: ori 7, 7, 3855
17737 ; PWR5-NEXT: and 4, 4, 6
17738 ; PWR5-NEXT: rldicl 6, 3, 60, 4
17739 ; PWR5-NEXT: ori 9, 9, 257
17740 ; PWR5-NEXT: rldimi 7, 7, 32, 0
17741 ; PWR5-NEXT: add 4, 5, 4
17742 ; PWR5-NEXT: add 3, 3, 6
17743 ; PWR5-NEXT: rldimi 9, 9, 32, 0
17744 ; PWR5-NEXT: rldicl 5, 4, 60, 4
17745 ; PWR5-NEXT: and 3, 3, 7
17746 ; PWR5-NEXT: add 4, 4, 5
17747 ; PWR5-NEXT: mulld 3, 3, 9
17748 ; PWR5-NEXT: and 4, 4, 7
17749 ; PWR5-NEXT: rldicl 3, 3, 8, 56
17750 ; PWR5-NEXT: mulld 4, 4, 9
17751 ; PWR5-NEXT: li 5, 23
17752 ; PWR5-NEXT: subfic 3, 3, 23
17753 ; PWR5-NEXT: rldicl 4, 4, 8, 56
17754 ; PWR5-NEXT: subfe 3, 5, 5
17755 ; PWR5-NEXT: subfic 4, 4, 23
17756 ; PWR5-NEXT: subfe 4, 5, 5
17759 ; PWR6-LABEL: ugt_23_v2i64:
17761 ; PWR6-NEXT: lis 5, 21845
17762 ; PWR6-NEXT: lis 6, 13107
17763 ; PWR6-NEXT: ori 5, 5, 21845
17764 ; PWR6-NEXT: rotldi 8, 4, 63
17765 ; PWR6-NEXT: rotldi 9, 3, 63
17766 ; PWR6-NEXT: rldimi 5, 5, 32, 0
17767 ; PWR6-NEXT: and 8, 8, 5
17768 ; PWR6-NEXT: and 5, 9, 5
17769 ; PWR6-NEXT: ori 6, 6, 13107
17770 ; PWR6-NEXT: sub 3, 3, 5
17771 ; PWR6-NEXT: rldimi 6, 6, 32, 0
17772 ; PWR6-NEXT: sub 4, 4, 8
17773 ; PWR6-NEXT: and 8, 3, 6
17774 ; PWR6-NEXT: rotldi 3, 3, 62
17775 ; PWR6-NEXT: and 3, 3, 6
17776 ; PWR6-NEXT: lis 7, 3855
17777 ; PWR6-NEXT: and 5, 4, 6
17778 ; PWR6-NEXT: rotldi 4, 4, 62
17779 ; PWR6-NEXT: add 3, 8, 3
17780 ; PWR6-NEXT: lis 9, 257
17781 ; PWR6-NEXT: ori 7, 7, 3855
17782 ; PWR6-NEXT: and 4, 4, 6
17783 ; PWR6-NEXT: rldicl 6, 3, 60, 4
17784 ; PWR6-NEXT: ori 9, 9, 257
17785 ; PWR6-NEXT: rldimi 7, 7, 32, 0
17786 ; PWR6-NEXT: add 4, 5, 4
17787 ; PWR6-NEXT: add 3, 3, 6
17788 ; PWR6-NEXT: rldimi 9, 9, 32, 0
17789 ; PWR6-NEXT: rldicl 5, 4, 60, 4
17790 ; PWR6-NEXT: and 3, 3, 7
17791 ; PWR6-NEXT: add 4, 4, 5
17792 ; PWR6-NEXT: mulld 3, 3, 9
17793 ; PWR6-NEXT: and 4, 4, 7
17794 ; PWR6-NEXT: rldicl 3, 3, 8, 56
17795 ; PWR6-NEXT: mulld 4, 4, 9
17796 ; PWR6-NEXT: li 5, 23
17797 ; PWR6-NEXT: subfic 3, 3, 23
17798 ; PWR6-NEXT: rldicl 4, 4, 8, 56
17799 ; PWR6-NEXT: subfe 3, 5, 5
17800 ; PWR6-NEXT: subfic 4, 4, 23
17801 ; PWR6-NEXT: subfe 4, 5, 5
17804 ; PWR7-LABEL: ugt_23_v2i64:
17806 ; PWR7-NEXT: addi 3, 1, -32
17807 ; PWR7-NEXT: li 5, -1
17808 ; PWR7-NEXT: stxvd2x 34, 0, 3
17809 ; PWR7-NEXT: ld 4, -24(1)
17810 ; PWR7-NEXT: ld 3, -32(1)
17811 ; PWR7-NEXT: popcntd 4, 4
17812 ; PWR7-NEXT: popcntd 3, 3
17813 ; PWR7-NEXT: cmpldi 4, 23
17814 ; PWR7-NEXT: li 4, 0
17815 ; PWR7-NEXT: iselgt 6, 5, 4
17816 ; PWR7-NEXT: cmpldi 3, 23
17817 ; PWR7-NEXT: iselgt 3, 5, 4
17818 ; PWR7-NEXT: std 6, -8(1)
17819 ; PWR7-NEXT: std 3, -16(1)
17820 ; PWR7-NEXT: addi 3, 1, -16
17821 ; PWR7-NEXT: lxvd2x 34, 0, 3
17824 ; PWR8-LABEL: ugt_23_v2i64:
17826 ; PWR8-NEXT: addis 3, 2, .LCPI144_0@toc@ha
17827 ; PWR8-NEXT: vpopcntd 2, 2
17828 ; PWR8-NEXT: addi 3, 3, .LCPI144_0@toc@l
17829 ; PWR8-NEXT: lxvd2x 35, 0, 3
17830 ; PWR8-NEXT: vcmpgtud 2, 2, 3
17833 ; PWR9-LABEL: ugt_23_v2i64:
17835 ; PWR9-NEXT: addis 3, 2, .LCPI144_0@toc@ha
17836 ; PWR9-NEXT: vpopcntd 2, 2
17837 ; PWR9-NEXT: addi 3, 3, .LCPI144_0@toc@l
17838 ; PWR9-NEXT: lxv 35, 0(3)
17839 ; PWR9-NEXT: vcmpgtud 2, 2, 3
17841 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
17842 %3 = icmp ugt <2 x i64> %2, <i64 23, i64 23>
17843 %4 = sext <2 x i1> %3 to <2 x i64>
17847 define <2 x i64> @ult_24_v2i64(<2 x i64> %0) {
17848 ; PWR5-LABEL: ult_24_v2i64:
17850 ; PWR5-NEXT: lis 5, 21845
17851 ; PWR5-NEXT: lis 6, 13107
17852 ; PWR5-NEXT: ori 5, 5, 21845
17853 ; PWR5-NEXT: rotldi 8, 4, 63
17854 ; PWR5-NEXT: rotldi 9, 3, 63
17855 ; PWR5-NEXT: rldimi 5, 5, 32, 0
17856 ; PWR5-NEXT: and 8, 8, 5
17857 ; PWR5-NEXT: and 5, 9, 5
17858 ; PWR5-NEXT: ori 6, 6, 13107
17859 ; PWR5-NEXT: sub 3, 3, 5
17860 ; PWR5-NEXT: rldimi 6, 6, 32, 0
17861 ; PWR5-NEXT: sub 4, 4, 8
17862 ; PWR5-NEXT: and 8, 3, 6
17863 ; PWR5-NEXT: rotldi 3, 3, 62
17864 ; PWR5-NEXT: and 3, 3, 6
17865 ; PWR5-NEXT: lis 7, 3855
17866 ; PWR5-NEXT: and 5, 4, 6
17867 ; PWR5-NEXT: rotldi 4, 4, 62
17868 ; PWR5-NEXT: add 3, 8, 3
17869 ; PWR5-NEXT: lis 9, 257
17870 ; PWR5-NEXT: ori 7, 7, 3855
17871 ; PWR5-NEXT: and 4, 4, 6
17872 ; PWR5-NEXT: rldicl 6, 3, 60, 4
17873 ; PWR5-NEXT: ori 9, 9, 257
17874 ; PWR5-NEXT: rldimi 7, 7, 32, 0
17875 ; PWR5-NEXT: add 4, 5, 4
17876 ; PWR5-NEXT: add 3, 3, 6
17877 ; PWR5-NEXT: rldimi 9, 9, 32, 0
17878 ; PWR5-NEXT: rldicl 5, 4, 60, 4
17879 ; PWR5-NEXT: and 3, 3, 7
17880 ; PWR5-NEXT: add 4, 4, 5
17881 ; PWR5-NEXT: mulld 3, 3, 9
17882 ; PWR5-NEXT: and 4, 4, 7
17883 ; PWR5-NEXT: rldicl 3, 3, 8, 56
17884 ; PWR5-NEXT: li 5, 24
17885 ; PWR5-NEXT: mulld 4, 4, 9
17886 ; PWR5-NEXT: subc 6, 3, 5
17887 ; PWR5-NEXT: rldicl 4, 4, 8, 56
17888 ; PWR5-NEXT: subfe 3, 3, 3
17889 ; PWR5-NEXT: subc 5, 4, 5
17890 ; PWR5-NEXT: subfe 4, 4, 4
17893 ; PWR6-LABEL: ult_24_v2i64:
17895 ; PWR6-NEXT: lis 5, 21845
17896 ; PWR6-NEXT: lis 6, 13107
17897 ; PWR6-NEXT: ori 5, 5, 21845
17898 ; PWR6-NEXT: rotldi 8, 4, 63
17899 ; PWR6-NEXT: rotldi 9, 3, 63
17900 ; PWR6-NEXT: rldimi 5, 5, 32, 0
17901 ; PWR6-NEXT: and 8, 8, 5
17902 ; PWR6-NEXT: and 5, 9, 5
17903 ; PWR6-NEXT: ori 6, 6, 13107
17904 ; PWR6-NEXT: sub 3, 3, 5
17905 ; PWR6-NEXT: rldimi 6, 6, 32, 0
17906 ; PWR6-NEXT: sub 4, 4, 8
17907 ; PWR6-NEXT: and 8, 3, 6
17908 ; PWR6-NEXT: rotldi 3, 3, 62
17909 ; PWR6-NEXT: and 3, 3, 6
17910 ; PWR6-NEXT: lis 7, 3855
17911 ; PWR6-NEXT: and 5, 4, 6
17912 ; PWR6-NEXT: rotldi 4, 4, 62
17913 ; PWR6-NEXT: add 3, 8, 3
17914 ; PWR6-NEXT: lis 9, 257
17915 ; PWR6-NEXT: ori 7, 7, 3855
17916 ; PWR6-NEXT: and 4, 4, 6
17917 ; PWR6-NEXT: rldicl 6, 3, 60, 4
17918 ; PWR6-NEXT: ori 9, 9, 257
17919 ; PWR6-NEXT: rldimi 7, 7, 32, 0
17920 ; PWR6-NEXT: add 4, 5, 4
17921 ; PWR6-NEXT: add 3, 3, 6
17922 ; PWR6-NEXT: rldimi 9, 9, 32, 0
17923 ; PWR6-NEXT: rldicl 5, 4, 60, 4
17924 ; PWR6-NEXT: and 3, 3, 7
17925 ; PWR6-NEXT: add 4, 4, 5
17926 ; PWR6-NEXT: mulld 3, 3, 9
17927 ; PWR6-NEXT: and 4, 4, 7
17928 ; PWR6-NEXT: rldicl 3, 3, 8, 56
17929 ; PWR6-NEXT: li 5, 24
17930 ; PWR6-NEXT: mulld 4, 4, 9
17931 ; PWR6-NEXT: subc 6, 3, 5
17932 ; PWR6-NEXT: rldicl 4, 4, 8, 56
17933 ; PWR6-NEXT: subfe 3, 3, 3
17934 ; PWR6-NEXT: subc 5, 4, 5
17935 ; PWR6-NEXT: subfe 4, 4, 4
17938 ; PWR7-LABEL: ult_24_v2i64:
17940 ; PWR7-NEXT: addi 3, 1, -32
17941 ; PWR7-NEXT: li 5, -1
17942 ; PWR7-NEXT: stxvd2x 34, 0, 3
17943 ; PWR7-NEXT: ld 4, -24(1)
17944 ; PWR7-NEXT: ld 3, -32(1)
17945 ; PWR7-NEXT: popcntd 4, 4
17946 ; PWR7-NEXT: popcntd 3, 3
17947 ; PWR7-NEXT: cmpldi 4, 24
17948 ; PWR7-NEXT: li 4, 0
17949 ; PWR7-NEXT: isellt 6, 5, 4
17950 ; PWR7-NEXT: cmpldi 3, 24
17951 ; PWR7-NEXT: isellt 3, 5, 4
17952 ; PWR7-NEXT: std 6, -8(1)
17953 ; PWR7-NEXT: std 3, -16(1)
17954 ; PWR7-NEXT: addi 3, 1, -16
17955 ; PWR7-NEXT: lxvd2x 34, 0, 3
17958 ; PWR8-LABEL: ult_24_v2i64:
17960 ; PWR8-NEXT: addis 3, 2, .LCPI145_0@toc@ha
17961 ; PWR8-NEXT: vpopcntd 2, 2
17962 ; PWR8-NEXT: addi 3, 3, .LCPI145_0@toc@l
17963 ; PWR8-NEXT: lxvd2x 35, 0, 3
17964 ; PWR8-NEXT: vcmpgtud 2, 3, 2
17967 ; PWR9-LABEL: ult_24_v2i64:
17969 ; PWR9-NEXT: addis 3, 2, .LCPI145_0@toc@ha
17970 ; PWR9-NEXT: vpopcntd 2, 2
17971 ; PWR9-NEXT: addi 3, 3, .LCPI145_0@toc@l
17972 ; PWR9-NEXT: lxv 35, 0(3)
17973 ; PWR9-NEXT: vcmpgtud 2, 3, 2
17975 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
17976 %3 = icmp ult <2 x i64> %2, <i64 24, i64 24>
17977 %4 = sext <2 x i1> %3 to <2 x i64>
17981 define <2 x i64> @ugt_24_v2i64(<2 x i64> %0) {
17982 ; PWR5-LABEL: ugt_24_v2i64:
17984 ; PWR5-NEXT: lis 5, 21845
17985 ; PWR5-NEXT: lis 6, 13107
17986 ; PWR5-NEXT: ori 5, 5, 21845
17987 ; PWR5-NEXT: rotldi 8, 4, 63
17988 ; PWR5-NEXT: rotldi 9, 3, 63
17989 ; PWR5-NEXT: rldimi 5, 5, 32, 0
17990 ; PWR5-NEXT: and 8, 8, 5
17991 ; PWR5-NEXT: and 5, 9, 5
17992 ; PWR5-NEXT: ori 6, 6, 13107
17993 ; PWR5-NEXT: sub 3, 3, 5
17994 ; PWR5-NEXT: rldimi 6, 6, 32, 0
17995 ; PWR5-NEXT: sub 4, 4, 8
17996 ; PWR5-NEXT: and 8, 3, 6
17997 ; PWR5-NEXT: rotldi 3, 3, 62
17998 ; PWR5-NEXT: and 3, 3, 6
17999 ; PWR5-NEXT: lis 7, 3855
18000 ; PWR5-NEXT: and 5, 4, 6
18001 ; PWR5-NEXT: rotldi 4, 4, 62
18002 ; PWR5-NEXT: add 3, 8, 3
18003 ; PWR5-NEXT: lis 9, 257
18004 ; PWR5-NEXT: ori 7, 7, 3855
18005 ; PWR5-NEXT: and 4, 4, 6
18006 ; PWR5-NEXT: rldicl 6, 3, 60, 4
18007 ; PWR5-NEXT: ori 9, 9, 257
18008 ; PWR5-NEXT: rldimi 7, 7, 32, 0
18009 ; PWR5-NEXT: add 4, 5, 4
18010 ; PWR5-NEXT: add 3, 3, 6
18011 ; PWR5-NEXT: rldimi 9, 9, 32, 0
18012 ; PWR5-NEXT: rldicl 5, 4, 60, 4
18013 ; PWR5-NEXT: and 3, 3, 7
18014 ; PWR5-NEXT: add 4, 4, 5
18015 ; PWR5-NEXT: mulld 3, 3, 9
18016 ; PWR5-NEXT: and 4, 4, 7
18017 ; PWR5-NEXT: rldicl 3, 3, 8, 56
18018 ; PWR5-NEXT: mulld 4, 4, 9
18019 ; PWR5-NEXT: li 5, 24
18020 ; PWR5-NEXT: subfic 3, 3, 24
18021 ; PWR5-NEXT: rldicl 4, 4, 8, 56
18022 ; PWR5-NEXT: subfe 3, 5, 5
18023 ; PWR5-NEXT: subfic 4, 4, 24
18024 ; PWR5-NEXT: subfe 4, 5, 5
18027 ; PWR6-LABEL: ugt_24_v2i64:
18029 ; PWR6-NEXT: lis 5, 21845
18030 ; PWR6-NEXT: lis 6, 13107
18031 ; PWR6-NEXT: ori 5, 5, 21845
18032 ; PWR6-NEXT: rotldi 8, 4, 63
18033 ; PWR6-NEXT: rotldi 9, 3, 63
18034 ; PWR6-NEXT: rldimi 5, 5, 32, 0
18035 ; PWR6-NEXT: and 8, 8, 5
18036 ; PWR6-NEXT: and 5, 9, 5
18037 ; PWR6-NEXT: ori 6, 6, 13107
18038 ; PWR6-NEXT: sub 3, 3, 5
18039 ; PWR6-NEXT: rldimi 6, 6, 32, 0
18040 ; PWR6-NEXT: sub 4, 4, 8
18041 ; PWR6-NEXT: and 8, 3, 6
18042 ; PWR6-NEXT: rotldi 3, 3, 62
18043 ; PWR6-NEXT: and 3, 3, 6
18044 ; PWR6-NEXT: lis 7, 3855
18045 ; PWR6-NEXT: and 5, 4, 6
18046 ; PWR6-NEXT: rotldi 4, 4, 62
18047 ; PWR6-NEXT: add 3, 8, 3
18048 ; PWR6-NEXT: lis 9, 257
18049 ; PWR6-NEXT: ori 7, 7, 3855
18050 ; PWR6-NEXT: and 4, 4, 6
18051 ; PWR6-NEXT: rldicl 6, 3, 60, 4
18052 ; PWR6-NEXT: ori 9, 9, 257
18053 ; PWR6-NEXT: rldimi 7, 7, 32, 0
18054 ; PWR6-NEXT: add 4, 5, 4
18055 ; PWR6-NEXT: add 3, 3, 6
18056 ; PWR6-NEXT: rldimi 9, 9, 32, 0
18057 ; PWR6-NEXT: rldicl 5, 4, 60, 4
18058 ; PWR6-NEXT: and 3, 3, 7
18059 ; PWR6-NEXT: add 4, 4, 5
18060 ; PWR6-NEXT: mulld 3, 3, 9
18061 ; PWR6-NEXT: and 4, 4, 7
18062 ; PWR6-NEXT: rldicl 3, 3, 8, 56
18063 ; PWR6-NEXT: mulld 4, 4, 9
18064 ; PWR6-NEXT: li 5, 24
18065 ; PWR6-NEXT: subfic 3, 3, 24
18066 ; PWR6-NEXT: rldicl 4, 4, 8, 56
18067 ; PWR6-NEXT: subfe 3, 5, 5
18068 ; PWR6-NEXT: subfic 4, 4, 24
18069 ; PWR6-NEXT: subfe 4, 5, 5
18072 ; PWR7-LABEL: ugt_24_v2i64:
18074 ; PWR7-NEXT: addi 3, 1, -32
18075 ; PWR7-NEXT: li 5, -1
18076 ; PWR7-NEXT: stxvd2x 34, 0, 3
18077 ; PWR7-NEXT: ld 4, -24(1)
18078 ; PWR7-NEXT: ld 3, -32(1)
18079 ; PWR7-NEXT: popcntd 4, 4
18080 ; PWR7-NEXT: popcntd 3, 3
18081 ; PWR7-NEXT: cmpldi 4, 24
18082 ; PWR7-NEXT: li 4, 0
18083 ; PWR7-NEXT: iselgt 6, 5, 4
18084 ; PWR7-NEXT: cmpldi 3, 24
18085 ; PWR7-NEXT: iselgt 3, 5, 4
18086 ; PWR7-NEXT: std 6, -8(1)
18087 ; PWR7-NEXT: std 3, -16(1)
18088 ; PWR7-NEXT: addi 3, 1, -16
18089 ; PWR7-NEXT: lxvd2x 34, 0, 3
18092 ; PWR8-LABEL: ugt_24_v2i64:
18094 ; PWR8-NEXT: addis 3, 2, .LCPI146_0@toc@ha
18095 ; PWR8-NEXT: vpopcntd 2, 2
18096 ; PWR8-NEXT: addi 3, 3, .LCPI146_0@toc@l
18097 ; PWR8-NEXT: lxvd2x 35, 0, 3
18098 ; PWR8-NEXT: vcmpgtud 2, 2, 3
18101 ; PWR9-LABEL: ugt_24_v2i64:
18103 ; PWR9-NEXT: addis 3, 2, .LCPI146_0@toc@ha
18104 ; PWR9-NEXT: vpopcntd 2, 2
18105 ; PWR9-NEXT: addi 3, 3, .LCPI146_0@toc@l
18106 ; PWR9-NEXT: lxv 35, 0(3)
18107 ; PWR9-NEXT: vcmpgtud 2, 2, 3
18109 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
18110 %3 = icmp ugt <2 x i64> %2, <i64 24, i64 24>
18111 %4 = sext <2 x i1> %3 to <2 x i64>
18115 define <2 x i64> @ult_25_v2i64(<2 x i64> %0) {
18116 ; PWR5-LABEL: ult_25_v2i64:
18118 ; PWR5-NEXT: lis 5, 21845
18119 ; PWR5-NEXT: lis 6, 13107
18120 ; PWR5-NEXT: ori 5, 5, 21845
18121 ; PWR5-NEXT: rotldi 8, 4, 63
18122 ; PWR5-NEXT: rotldi 9, 3, 63
18123 ; PWR5-NEXT: rldimi 5, 5, 32, 0
18124 ; PWR5-NEXT: and 8, 8, 5
18125 ; PWR5-NEXT: and 5, 9, 5
18126 ; PWR5-NEXT: ori 6, 6, 13107
18127 ; PWR5-NEXT: sub 3, 3, 5
18128 ; PWR5-NEXT: rldimi 6, 6, 32, 0
18129 ; PWR5-NEXT: sub 4, 4, 8
18130 ; PWR5-NEXT: and 8, 3, 6
18131 ; PWR5-NEXT: rotldi 3, 3, 62
18132 ; PWR5-NEXT: and 3, 3, 6
18133 ; PWR5-NEXT: lis 7, 3855
18134 ; PWR5-NEXT: and 5, 4, 6
18135 ; PWR5-NEXT: rotldi 4, 4, 62
18136 ; PWR5-NEXT: add 3, 8, 3
18137 ; PWR5-NEXT: lis 9, 257
18138 ; PWR5-NEXT: ori 7, 7, 3855
18139 ; PWR5-NEXT: and 4, 4, 6
18140 ; PWR5-NEXT: rldicl 6, 3, 60, 4
18141 ; PWR5-NEXT: ori 9, 9, 257
18142 ; PWR5-NEXT: rldimi 7, 7, 32, 0
18143 ; PWR5-NEXT: add 4, 5, 4
18144 ; PWR5-NEXT: add 3, 3, 6
18145 ; PWR5-NEXT: rldimi 9, 9, 32, 0
18146 ; PWR5-NEXT: rldicl 5, 4, 60, 4
18147 ; PWR5-NEXT: and 3, 3, 7
18148 ; PWR5-NEXT: add 4, 4, 5
18149 ; PWR5-NEXT: mulld 3, 3, 9
18150 ; PWR5-NEXT: and 4, 4, 7
18151 ; PWR5-NEXT: rldicl 3, 3, 8, 56
18152 ; PWR5-NEXT: li 5, 25
18153 ; PWR5-NEXT: mulld 4, 4, 9
18154 ; PWR5-NEXT: subc 6, 3, 5
18155 ; PWR5-NEXT: rldicl 4, 4, 8, 56
18156 ; PWR5-NEXT: subfe 3, 3, 3
18157 ; PWR5-NEXT: subc 5, 4, 5
18158 ; PWR5-NEXT: subfe 4, 4, 4
18161 ; PWR6-LABEL: ult_25_v2i64:
18163 ; PWR6-NEXT: lis 5, 21845
18164 ; PWR6-NEXT: lis 6, 13107
18165 ; PWR6-NEXT: ori 5, 5, 21845
18166 ; PWR6-NEXT: rotldi 8, 4, 63
18167 ; PWR6-NEXT: rotldi 9, 3, 63
18168 ; PWR6-NEXT: rldimi 5, 5, 32, 0
18169 ; PWR6-NEXT: and 8, 8, 5
18170 ; PWR6-NEXT: and 5, 9, 5
18171 ; PWR6-NEXT: ori 6, 6, 13107
18172 ; PWR6-NEXT: sub 3, 3, 5
18173 ; PWR6-NEXT: rldimi 6, 6, 32, 0
18174 ; PWR6-NEXT: sub 4, 4, 8
18175 ; PWR6-NEXT: and 8, 3, 6
18176 ; PWR6-NEXT: rotldi 3, 3, 62
18177 ; PWR6-NEXT: and 3, 3, 6
18178 ; PWR6-NEXT: lis 7, 3855
18179 ; PWR6-NEXT: and 5, 4, 6
18180 ; PWR6-NEXT: rotldi 4, 4, 62
18181 ; PWR6-NEXT: add 3, 8, 3
18182 ; PWR6-NEXT: lis 9, 257
18183 ; PWR6-NEXT: ori 7, 7, 3855
18184 ; PWR6-NEXT: and 4, 4, 6
18185 ; PWR6-NEXT: rldicl 6, 3, 60, 4
18186 ; PWR6-NEXT: ori 9, 9, 257
18187 ; PWR6-NEXT: rldimi 7, 7, 32, 0
18188 ; PWR6-NEXT: add 4, 5, 4
18189 ; PWR6-NEXT: add 3, 3, 6
18190 ; PWR6-NEXT: rldimi 9, 9, 32, 0
18191 ; PWR6-NEXT: rldicl 5, 4, 60, 4
18192 ; PWR6-NEXT: and 3, 3, 7
18193 ; PWR6-NEXT: add 4, 4, 5
18194 ; PWR6-NEXT: mulld 3, 3, 9
18195 ; PWR6-NEXT: and 4, 4, 7
18196 ; PWR6-NEXT: rldicl 3, 3, 8, 56
18197 ; PWR6-NEXT: li 5, 25
18198 ; PWR6-NEXT: mulld 4, 4, 9
18199 ; PWR6-NEXT: subc 6, 3, 5
18200 ; PWR6-NEXT: rldicl 4, 4, 8, 56
18201 ; PWR6-NEXT: subfe 3, 3, 3
18202 ; PWR6-NEXT: subc 5, 4, 5
18203 ; PWR6-NEXT: subfe 4, 4, 4
18206 ; PWR7-LABEL: ult_25_v2i64:
18208 ; PWR7-NEXT: addi 3, 1, -32
18209 ; PWR7-NEXT: li 5, -1
18210 ; PWR7-NEXT: stxvd2x 34, 0, 3
18211 ; PWR7-NEXT: ld 4, -24(1)
18212 ; PWR7-NEXT: ld 3, -32(1)
18213 ; PWR7-NEXT: popcntd 4, 4
18214 ; PWR7-NEXT: popcntd 3, 3
18215 ; PWR7-NEXT: cmpldi 4, 25
18216 ; PWR7-NEXT: li 4, 0
18217 ; PWR7-NEXT: isellt 6, 5, 4
18218 ; PWR7-NEXT: cmpldi 3, 25
18219 ; PWR7-NEXT: isellt 3, 5, 4
18220 ; PWR7-NEXT: std 6, -8(1)
18221 ; PWR7-NEXT: std 3, -16(1)
18222 ; PWR7-NEXT: addi 3, 1, -16
18223 ; PWR7-NEXT: lxvd2x 34, 0, 3
18226 ; PWR8-LABEL: ult_25_v2i64:
18228 ; PWR8-NEXT: addis 3, 2, .LCPI147_0@toc@ha
18229 ; PWR8-NEXT: vpopcntd 2, 2
18230 ; PWR8-NEXT: addi 3, 3, .LCPI147_0@toc@l
18231 ; PWR8-NEXT: lxvd2x 35, 0, 3
18232 ; PWR8-NEXT: vcmpgtud 2, 3, 2
18235 ; PWR9-LABEL: ult_25_v2i64:
18237 ; PWR9-NEXT: addis 3, 2, .LCPI147_0@toc@ha
18238 ; PWR9-NEXT: vpopcntd 2, 2
18239 ; PWR9-NEXT: addi 3, 3, .LCPI147_0@toc@l
18240 ; PWR9-NEXT: lxv 35, 0(3)
18241 ; PWR9-NEXT: vcmpgtud 2, 3, 2
18243 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
18244 %3 = icmp ult <2 x i64> %2, <i64 25, i64 25>
18245 %4 = sext <2 x i1> %3 to <2 x i64>
18249 define <2 x i64> @ugt_25_v2i64(<2 x i64> %0) {
18250 ; PWR5-LABEL: ugt_25_v2i64:
18252 ; PWR5-NEXT: lis 5, 21845
18253 ; PWR5-NEXT: lis 6, 13107
18254 ; PWR5-NEXT: ori 5, 5, 21845
18255 ; PWR5-NEXT: rotldi 8, 4, 63
18256 ; PWR5-NEXT: rotldi 9, 3, 63
18257 ; PWR5-NEXT: rldimi 5, 5, 32, 0
18258 ; PWR5-NEXT: and 8, 8, 5
18259 ; PWR5-NEXT: and 5, 9, 5
18260 ; PWR5-NEXT: ori 6, 6, 13107
18261 ; PWR5-NEXT: sub 3, 3, 5
18262 ; PWR5-NEXT: rldimi 6, 6, 32, 0
18263 ; PWR5-NEXT: sub 4, 4, 8
18264 ; PWR5-NEXT: and 8, 3, 6
18265 ; PWR5-NEXT: rotldi 3, 3, 62
18266 ; PWR5-NEXT: and 3, 3, 6
18267 ; PWR5-NEXT: lis 7, 3855
18268 ; PWR5-NEXT: and 5, 4, 6
18269 ; PWR5-NEXT: rotldi 4, 4, 62
18270 ; PWR5-NEXT: add 3, 8, 3
18271 ; PWR5-NEXT: lis 9, 257
18272 ; PWR5-NEXT: ori 7, 7, 3855
18273 ; PWR5-NEXT: and 4, 4, 6
18274 ; PWR5-NEXT: rldicl 6, 3, 60, 4
18275 ; PWR5-NEXT: ori 9, 9, 257
18276 ; PWR5-NEXT: rldimi 7, 7, 32, 0
18277 ; PWR5-NEXT: add 4, 5, 4
18278 ; PWR5-NEXT: add 3, 3, 6
18279 ; PWR5-NEXT: rldimi 9, 9, 32, 0
18280 ; PWR5-NEXT: rldicl 5, 4, 60, 4
18281 ; PWR5-NEXT: and 3, 3, 7
18282 ; PWR5-NEXT: add 4, 4, 5
18283 ; PWR5-NEXT: mulld 3, 3, 9
18284 ; PWR5-NEXT: and 4, 4, 7
18285 ; PWR5-NEXT: rldicl 3, 3, 8, 56
18286 ; PWR5-NEXT: mulld 4, 4, 9
18287 ; PWR5-NEXT: li 5, 25
18288 ; PWR5-NEXT: subfic 3, 3, 25
18289 ; PWR5-NEXT: rldicl 4, 4, 8, 56
18290 ; PWR5-NEXT: subfe 3, 5, 5
18291 ; PWR5-NEXT: subfic 4, 4, 25
18292 ; PWR5-NEXT: subfe 4, 5, 5
18295 ; PWR6-LABEL: ugt_25_v2i64:
18297 ; PWR6-NEXT: lis 5, 21845
18298 ; PWR6-NEXT: lis 6, 13107
18299 ; PWR6-NEXT: ori 5, 5, 21845
18300 ; PWR6-NEXT: rotldi 8, 4, 63
18301 ; PWR6-NEXT: rotldi 9, 3, 63
18302 ; PWR6-NEXT: rldimi 5, 5, 32, 0
18303 ; PWR6-NEXT: and 8, 8, 5
18304 ; PWR6-NEXT: and 5, 9, 5
18305 ; PWR6-NEXT: ori 6, 6, 13107
18306 ; PWR6-NEXT: sub 3, 3, 5
18307 ; PWR6-NEXT: rldimi 6, 6, 32, 0
18308 ; PWR6-NEXT: sub 4, 4, 8
18309 ; PWR6-NEXT: and 8, 3, 6
18310 ; PWR6-NEXT: rotldi 3, 3, 62
18311 ; PWR6-NEXT: and 3, 3, 6
18312 ; PWR6-NEXT: lis 7, 3855
18313 ; PWR6-NEXT: and 5, 4, 6
18314 ; PWR6-NEXT: rotldi 4, 4, 62
18315 ; PWR6-NEXT: add 3, 8, 3
18316 ; PWR6-NEXT: lis 9, 257
18317 ; PWR6-NEXT: ori 7, 7, 3855
18318 ; PWR6-NEXT: and 4, 4, 6
18319 ; PWR6-NEXT: rldicl 6, 3, 60, 4
18320 ; PWR6-NEXT: ori 9, 9, 257
18321 ; PWR6-NEXT: rldimi 7, 7, 32, 0
18322 ; PWR6-NEXT: add 4, 5, 4
18323 ; PWR6-NEXT: add 3, 3, 6
18324 ; PWR6-NEXT: rldimi 9, 9, 32, 0
18325 ; PWR6-NEXT: rldicl 5, 4, 60, 4
18326 ; PWR6-NEXT: and 3, 3, 7
18327 ; PWR6-NEXT: add 4, 4, 5
18328 ; PWR6-NEXT: mulld 3, 3, 9
18329 ; PWR6-NEXT: and 4, 4, 7
18330 ; PWR6-NEXT: rldicl 3, 3, 8, 56
18331 ; PWR6-NEXT: mulld 4, 4, 9
18332 ; PWR6-NEXT: li 5, 25
18333 ; PWR6-NEXT: subfic 3, 3, 25
18334 ; PWR6-NEXT: rldicl 4, 4, 8, 56
18335 ; PWR6-NEXT: subfe 3, 5, 5
18336 ; PWR6-NEXT: subfic 4, 4, 25
18337 ; PWR6-NEXT: subfe 4, 5, 5
18340 ; PWR7-LABEL: ugt_25_v2i64:
18342 ; PWR7-NEXT: addi 3, 1, -32
18343 ; PWR7-NEXT: li 5, -1
18344 ; PWR7-NEXT: stxvd2x 34, 0, 3
18345 ; PWR7-NEXT: ld 4, -24(1)
18346 ; PWR7-NEXT: ld 3, -32(1)
18347 ; PWR7-NEXT: popcntd 4, 4
18348 ; PWR7-NEXT: popcntd 3, 3
18349 ; PWR7-NEXT: cmpldi 4, 25
18350 ; PWR7-NEXT: li 4, 0
18351 ; PWR7-NEXT: iselgt 6, 5, 4
18352 ; PWR7-NEXT: cmpldi 3, 25
18353 ; PWR7-NEXT: iselgt 3, 5, 4
18354 ; PWR7-NEXT: std 6, -8(1)
18355 ; PWR7-NEXT: std 3, -16(1)
18356 ; PWR7-NEXT: addi 3, 1, -16
18357 ; PWR7-NEXT: lxvd2x 34, 0, 3
18360 ; PWR8-LABEL: ugt_25_v2i64:
18362 ; PWR8-NEXT: addis 3, 2, .LCPI148_0@toc@ha
18363 ; PWR8-NEXT: vpopcntd 2, 2
18364 ; PWR8-NEXT: addi 3, 3, .LCPI148_0@toc@l
18365 ; PWR8-NEXT: lxvd2x 35, 0, 3
18366 ; PWR8-NEXT: vcmpgtud 2, 2, 3
18369 ; PWR9-LABEL: ugt_25_v2i64:
18371 ; PWR9-NEXT: addis 3, 2, .LCPI148_0@toc@ha
18372 ; PWR9-NEXT: vpopcntd 2, 2
18373 ; PWR9-NEXT: addi 3, 3, .LCPI148_0@toc@l
18374 ; PWR9-NEXT: lxv 35, 0(3)
18375 ; PWR9-NEXT: vcmpgtud 2, 2, 3
18377 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
18378 %3 = icmp ugt <2 x i64> %2, <i64 25, i64 25>
18379 %4 = sext <2 x i1> %3 to <2 x i64>
18383 define <2 x i64> @ult_26_v2i64(<2 x i64> %0) {
18384 ; PWR5-LABEL: ult_26_v2i64:
18386 ; PWR5-NEXT: lis 5, 21845
18387 ; PWR5-NEXT: lis 6, 13107
18388 ; PWR5-NEXT: ori 5, 5, 21845
18389 ; PWR5-NEXT: rotldi 8, 4, 63
18390 ; PWR5-NEXT: rotldi 9, 3, 63
18391 ; PWR5-NEXT: rldimi 5, 5, 32, 0
18392 ; PWR5-NEXT: and 8, 8, 5
18393 ; PWR5-NEXT: and 5, 9, 5
18394 ; PWR5-NEXT: ori 6, 6, 13107
18395 ; PWR5-NEXT: sub 3, 3, 5
18396 ; PWR5-NEXT: rldimi 6, 6, 32, 0
18397 ; PWR5-NEXT: sub 4, 4, 8
18398 ; PWR5-NEXT: and 8, 3, 6
18399 ; PWR5-NEXT: rotldi 3, 3, 62
18400 ; PWR5-NEXT: and 3, 3, 6
18401 ; PWR5-NEXT: lis 7, 3855
18402 ; PWR5-NEXT: and 5, 4, 6
18403 ; PWR5-NEXT: rotldi 4, 4, 62
18404 ; PWR5-NEXT: add 3, 8, 3
18405 ; PWR5-NEXT: lis 9, 257
18406 ; PWR5-NEXT: ori 7, 7, 3855
18407 ; PWR5-NEXT: and 4, 4, 6
18408 ; PWR5-NEXT: rldicl 6, 3, 60, 4
18409 ; PWR5-NEXT: ori 9, 9, 257
18410 ; PWR5-NEXT: rldimi 7, 7, 32, 0
18411 ; PWR5-NEXT: add 4, 5, 4
18412 ; PWR5-NEXT: add 3, 3, 6
18413 ; PWR5-NEXT: rldimi 9, 9, 32, 0
18414 ; PWR5-NEXT: rldicl 5, 4, 60, 4
18415 ; PWR5-NEXT: and 3, 3, 7
18416 ; PWR5-NEXT: add 4, 4, 5
18417 ; PWR5-NEXT: mulld 3, 3, 9
18418 ; PWR5-NEXT: and 4, 4, 7
18419 ; PWR5-NEXT: rldicl 3, 3, 8, 56
18420 ; PWR5-NEXT: li 5, 26
18421 ; PWR5-NEXT: mulld 4, 4, 9
18422 ; PWR5-NEXT: subc 6, 3, 5
18423 ; PWR5-NEXT: rldicl 4, 4, 8, 56
18424 ; PWR5-NEXT: subfe 3, 3, 3
18425 ; PWR5-NEXT: subc 5, 4, 5
18426 ; PWR5-NEXT: subfe 4, 4, 4
18429 ; PWR6-LABEL: ult_26_v2i64:
18431 ; PWR6-NEXT: lis 5, 21845
18432 ; PWR6-NEXT: lis 6, 13107
18433 ; PWR6-NEXT: ori 5, 5, 21845
18434 ; PWR6-NEXT: rotldi 8, 4, 63
18435 ; PWR6-NEXT: rotldi 9, 3, 63
18436 ; PWR6-NEXT: rldimi 5, 5, 32, 0
18437 ; PWR6-NEXT: and 8, 8, 5
18438 ; PWR6-NEXT: and 5, 9, 5
18439 ; PWR6-NEXT: ori 6, 6, 13107
18440 ; PWR6-NEXT: sub 3, 3, 5
18441 ; PWR6-NEXT: rldimi 6, 6, 32, 0
18442 ; PWR6-NEXT: sub 4, 4, 8
18443 ; PWR6-NEXT: and 8, 3, 6
18444 ; PWR6-NEXT: rotldi 3, 3, 62
18445 ; PWR6-NEXT: and 3, 3, 6
18446 ; PWR6-NEXT: lis 7, 3855
18447 ; PWR6-NEXT: and 5, 4, 6
18448 ; PWR6-NEXT: rotldi 4, 4, 62
18449 ; PWR6-NEXT: add 3, 8, 3
18450 ; PWR6-NEXT: lis 9, 257
18451 ; PWR6-NEXT: ori 7, 7, 3855
18452 ; PWR6-NEXT: and 4, 4, 6
18453 ; PWR6-NEXT: rldicl 6, 3, 60, 4
18454 ; PWR6-NEXT: ori 9, 9, 257
18455 ; PWR6-NEXT: rldimi 7, 7, 32, 0
18456 ; PWR6-NEXT: add 4, 5, 4
18457 ; PWR6-NEXT: add 3, 3, 6
18458 ; PWR6-NEXT: rldimi 9, 9, 32, 0
18459 ; PWR6-NEXT: rldicl 5, 4, 60, 4
18460 ; PWR6-NEXT: and 3, 3, 7
18461 ; PWR6-NEXT: add 4, 4, 5
18462 ; PWR6-NEXT: mulld 3, 3, 9
18463 ; PWR6-NEXT: and 4, 4, 7
18464 ; PWR6-NEXT: rldicl 3, 3, 8, 56
18465 ; PWR6-NEXT: li 5, 26
18466 ; PWR6-NEXT: mulld 4, 4, 9
18467 ; PWR6-NEXT: subc 6, 3, 5
18468 ; PWR6-NEXT: rldicl 4, 4, 8, 56
18469 ; PWR6-NEXT: subfe 3, 3, 3
18470 ; PWR6-NEXT: subc 5, 4, 5
18471 ; PWR6-NEXT: subfe 4, 4, 4
18474 ; PWR7-LABEL: ult_26_v2i64:
18476 ; PWR7-NEXT: addi 3, 1, -32
18477 ; PWR7-NEXT: li 5, -1
18478 ; PWR7-NEXT: stxvd2x 34, 0, 3
18479 ; PWR7-NEXT: ld 4, -24(1)
18480 ; PWR7-NEXT: ld 3, -32(1)
18481 ; PWR7-NEXT: popcntd 4, 4
18482 ; PWR7-NEXT: popcntd 3, 3
18483 ; PWR7-NEXT: cmpldi 4, 26
18484 ; PWR7-NEXT: li 4, 0
18485 ; PWR7-NEXT: isellt 6, 5, 4
18486 ; PWR7-NEXT: cmpldi 3, 26
18487 ; PWR7-NEXT: isellt 3, 5, 4
18488 ; PWR7-NEXT: std 6, -8(1)
18489 ; PWR7-NEXT: std 3, -16(1)
18490 ; PWR7-NEXT: addi 3, 1, -16
18491 ; PWR7-NEXT: lxvd2x 34, 0, 3
18494 ; PWR8-LABEL: ult_26_v2i64:
18496 ; PWR8-NEXT: addis 3, 2, .LCPI149_0@toc@ha
18497 ; PWR8-NEXT: vpopcntd 2, 2
18498 ; PWR8-NEXT: addi 3, 3, .LCPI149_0@toc@l
18499 ; PWR8-NEXT: lxvd2x 35, 0, 3
18500 ; PWR8-NEXT: vcmpgtud 2, 3, 2
18503 ; PWR9-LABEL: ult_26_v2i64:
18505 ; PWR9-NEXT: addis 3, 2, .LCPI149_0@toc@ha
18506 ; PWR9-NEXT: vpopcntd 2, 2
18507 ; PWR9-NEXT: addi 3, 3, .LCPI149_0@toc@l
18508 ; PWR9-NEXT: lxv 35, 0(3)
18509 ; PWR9-NEXT: vcmpgtud 2, 3, 2
18511 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
18512 %3 = icmp ult <2 x i64> %2, <i64 26, i64 26>
18513 %4 = sext <2 x i1> %3 to <2 x i64>
18517 define <2 x i64> @ugt_26_v2i64(<2 x i64> %0) {
18518 ; PWR5-LABEL: ugt_26_v2i64:
18520 ; PWR5-NEXT: lis 5, 21845
18521 ; PWR5-NEXT: lis 6, 13107
18522 ; PWR5-NEXT: ori 5, 5, 21845
18523 ; PWR5-NEXT: rotldi 8, 4, 63
18524 ; PWR5-NEXT: rotldi 9, 3, 63
18525 ; PWR5-NEXT: rldimi 5, 5, 32, 0
18526 ; PWR5-NEXT: and 8, 8, 5
18527 ; PWR5-NEXT: and 5, 9, 5
18528 ; PWR5-NEXT: ori 6, 6, 13107
18529 ; PWR5-NEXT: sub 3, 3, 5
18530 ; PWR5-NEXT: rldimi 6, 6, 32, 0
18531 ; PWR5-NEXT: sub 4, 4, 8
18532 ; PWR5-NEXT: and 8, 3, 6
18533 ; PWR5-NEXT: rotldi 3, 3, 62
18534 ; PWR5-NEXT: and 3, 3, 6
18535 ; PWR5-NEXT: lis 7, 3855
18536 ; PWR5-NEXT: and 5, 4, 6
18537 ; PWR5-NEXT: rotldi 4, 4, 62
18538 ; PWR5-NEXT: add 3, 8, 3
18539 ; PWR5-NEXT: lis 9, 257
18540 ; PWR5-NEXT: ori 7, 7, 3855
18541 ; PWR5-NEXT: and 4, 4, 6
18542 ; PWR5-NEXT: rldicl 6, 3, 60, 4
18543 ; PWR5-NEXT: ori 9, 9, 257
18544 ; PWR5-NEXT: rldimi 7, 7, 32, 0
18545 ; PWR5-NEXT: add 4, 5, 4
18546 ; PWR5-NEXT: add 3, 3, 6
18547 ; PWR5-NEXT: rldimi 9, 9, 32, 0
18548 ; PWR5-NEXT: rldicl 5, 4, 60, 4
18549 ; PWR5-NEXT: and 3, 3, 7
18550 ; PWR5-NEXT: add 4, 4, 5
18551 ; PWR5-NEXT: mulld 3, 3, 9
18552 ; PWR5-NEXT: and 4, 4, 7
18553 ; PWR5-NEXT: rldicl 3, 3, 8, 56
18554 ; PWR5-NEXT: mulld 4, 4, 9
18555 ; PWR5-NEXT: li 5, 26
18556 ; PWR5-NEXT: subfic 3, 3, 26
18557 ; PWR5-NEXT: rldicl 4, 4, 8, 56
18558 ; PWR5-NEXT: subfe 3, 5, 5
18559 ; PWR5-NEXT: subfic 4, 4, 26
18560 ; PWR5-NEXT: subfe 4, 5, 5
18563 ; PWR6-LABEL: ugt_26_v2i64:
18565 ; PWR6-NEXT: lis 5, 21845
18566 ; PWR6-NEXT: lis 6, 13107
18567 ; PWR6-NEXT: ori 5, 5, 21845
18568 ; PWR6-NEXT: rotldi 8, 4, 63
18569 ; PWR6-NEXT: rotldi 9, 3, 63
18570 ; PWR6-NEXT: rldimi 5, 5, 32, 0
18571 ; PWR6-NEXT: and 8, 8, 5
18572 ; PWR6-NEXT: and 5, 9, 5
18573 ; PWR6-NEXT: ori 6, 6, 13107
18574 ; PWR6-NEXT: sub 3, 3, 5
18575 ; PWR6-NEXT: rldimi 6, 6, 32, 0
18576 ; PWR6-NEXT: sub 4, 4, 8
18577 ; PWR6-NEXT: and 8, 3, 6
18578 ; PWR6-NEXT: rotldi 3, 3, 62
18579 ; PWR6-NEXT: and 3, 3, 6
18580 ; PWR6-NEXT: lis 7, 3855
18581 ; PWR6-NEXT: and 5, 4, 6
18582 ; PWR6-NEXT: rotldi 4, 4, 62
18583 ; PWR6-NEXT: add 3, 8, 3
18584 ; PWR6-NEXT: lis 9, 257
18585 ; PWR6-NEXT: ori 7, 7, 3855
18586 ; PWR6-NEXT: and 4, 4, 6
18587 ; PWR6-NEXT: rldicl 6, 3, 60, 4
18588 ; PWR6-NEXT: ori 9, 9, 257
18589 ; PWR6-NEXT: rldimi 7, 7, 32, 0
18590 ; PWR6-NEXT: add 4, 5, 4
18591 ; PWR6-NEXT: add 3, 3, 6
18592 ; PWR6-NEXT: rldimi 9, 9, 32, 0
18593 ; PWR6-NEXT: rldicl 5, 4, 60, 4
18594 ; PWR6-NEXT: and 3, 3, 7
18595 ; PWR6-NEXT: add 4, 4, 5
18596 ; PWR6-NEXT: mulld 3, 3, 9
18597 ; PWR6-NEXT: and 4, 4, 7
18598 ; PWR6-NEXT: rldicl 3, 3, 8, 56
18599 ; PWR6-NEXT: mulld 4, 4, 9
18600 ; PWR6-NEXT: li 5, 26
18601 ; PWR6-NEXT: subfic 3, 3, 26
18602 ; PWR6-NEXT: rldicl 4, 4, 8, 56
18603 ; PWR6-NEXT: subfe 3, 5, 5
18604 ; PWR6-NEXT: subfic 4, 4, 26
18605 ; PWR6-NEXT: subfe 4, 5, 5
18608 ; PWR7-LABEL: ugt_26_v2i64:
18610 ; PWR7-NEXT: addi 3, 1, -32
18611 ; PWR7-NEXT: li 5, -1
18612 ; PWR7-NEXT: stxvd2x 34, 0, 3
18613 ; PWR7-NEXT: ld 4, -24(1)
18614 ; PWR7-NEXT: ld 3, -32(1)
18615 ; PWR7-NEXT: popcntd 4, 4
18616 ; PWR7-NEXT: popcntd 3, 3
18617 ; PWR7-NEXT: cmpldi 4, 26
18618 ; PWR7-NEXT: li 4, 0
18619 ; PWR7-NEXT: iselgt 6, 5, 4
18620 ; PWR7-NEXT: cmpldi 3, 26
18621 ; PWR7-NEXT: iselgt 3, 5, 4
18622 ; PWR7-NEXT: std 6, -8(1)
18623 ; PWR7-NEXT: std 3, -16(1)
18624 ; PWR7-NEXT: addi 3, 1, -16
18625 ; PWR7-NEXT: lxvd2x 34, 0, 3
18628 ; PWR8-LABEL: ugt_26_v2i64:
18630 ; PWR8-NEXT: addis 3, 2, .LCPI150_0@toc@ha
18631 ; PWR8-NEXT: vpopcntd 2, 2
18632 ; PWR8-NEXT: addi 3, 3, .LCPI150_0@toc@l
18633 ; PWR8-NEXT: lxvd2x 35, 0, 3
18634 ; PWR8-NEXT: vcmpgtud 2, 2, 3
18637 ; PWR9-LABEL: ugt_26_v2i64:
18639 ; PWR9-NEXT: addis 3, 2, .LCPI150_0@toc@ha
18640 ; PWR9-NEXT: vpopcntd 2, 2
18641 ; PWR9-NEXT: addi 3, 3, .LCPI150_0@toc@l
18642 ; PWR9-NEXT: lxv 35, 0(3)
18643 ; PWR9-NEXT: vcmpgtud 2, 2, 3
18645 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
18646 %3 = icmp ugt <2 x i64> %2, <i64 26, i64 26>
18647 %4 = sext <2 x i1> %3 to <2 x i64>
18651 define <2 x i64> @ult_27_v2i64(<2 x i64> %0) {
18652 ; PWR5-LABEL: ult_27_v2i64:
18654 ; PWR5-NEXT: lis 5, 21845
18655 ; PWR5-NEXT: lis 6, 13107
18656 ; PWR5-NEXT: ori 5, 5, 21845
18657 ; PWR5-NEXT: rotldi 8, 4, 63
18658 ; PWR5-NEXT: rotldi 9, 3, 63
18659 ; PWR5-NEXT: rldimi 5, 5, 32, 0
18660 ; PWR5-NEXT: and 8, 8, 5
18661 ; PWR5-NEXT: and 5, 9, 5
18662 ; PWR5-NEXT: ori 6, 6, 13107
18663 ; PWR5-NEXT: sub 3, 3, 5
18664 ; PWR5-NEXT: rldimi 6, 6, 32, 0
18665 ; PWR5-NEXT: sub 4, 4, 8
18666 ; PWR5-NEXT: and 8, 3, 6
18667 ; PWR5-NEXT: rotldi 3, 3, 62
18668 ; PWR5-NEXT: and 3, 3, 6
18669 ; PWR5-NEXT: lis 7, 3855
18670 ; PWR5-NEXT: and 5, 4, 6
18671 ; PWR5-NEXT: rotldi 4, 4, 62
18672 ; PWR5-NEXT: add 3, 8, 3
18673 ; PWR5-NEXT: lis 9, 257
18674 ; PWR5-NEXT: ori 7, 7, 3855
18675 ; PWR5-NEXT: and 4, 4, 6
18676 ; PWR5-NEXT: rldicl 6, 3, 60, 4
18677 ; PWR5-NEXT: ori 9, 9, 257
18678 ; PWR5-NEXT: rldimi 7, 7, 32, 0
18679 ; PWR5-NEXT: add 4, 5, 4
18680 ; PWR5-NEXT: add 3, 3, 6
18681 ; PWR5-NEXT: rldimi 9, 9, 32, 0
18682 ; PWR5-NEXT: rldicl 5, 4, 60, 4
18683 ; PWR5-NEXT: and 3, 3, 7
18684 ; PWR5-NEXT: add 4, 4, 5
18685 ; PWR5-NEXT: mulld 3, 3, 9
18686 ; PWR5-NEXT: and 4, 4, 7
18687 ; PWR5-NEXT: rldicl 3, 3, 8, 56
18688 ; PWR5-NEXT: li 5, 27
18689 ; PWR5-NEXT: mulld 4, 4, 9
18690 ; PWR5-NEXT: subc 6, 3, 5
18691 ; PWR5-NEXT: rldicl 4, 4, 8, 56
18692 ; PWR5-NEXT: subfe 3, 3, 3
18693 ; PWR5-NEXT: subc 5, 4, 5
18694 ; PWR5-NEXT: subfe 4, 4, 4
18697 ; PWR6-LABEL: ult_27_v2i64:
18699 ; PWR6-NEXT: lis 5, 21845
18700 ; PWR6-NEXT: lis 6, 13107
18701 ; PWR6-NEXT: ori 5, 5, 21845
18702 ; PWR6-NEXT: rotldi 8, 4, 63
18703 ; PWR6-NEXT: rotldi 9, 3, 63
18704 ; PWR6-NEXT: rldimi 5, 5, 32, 0
18705 ; PWR6-NEXT: and 8, 8, 5
18706 ; PWR6-NEXT: and 5, 9, 5
18707 ; PWR6-NEXT: ori 6, 6, 13107
18708 ; PWR6-NEXT: sub 3, 3, 5
18709 ; PWR6-NEXT: rldimi 6, 6, 32, 0
18710 ; PWR6-NEXT: sub 4, 4, 8
18711 ; PWR6-NEXT: and 8, 3, 6
18712 ; PWR6-NEXT: rotldi 3, 3, 62
18713 ; PWR6-NEXT: and 3, 3, 6
18714 ; PWR6-NEXT: lis 7, 3855
18715 ; PWR6-NEXT: and 5, 4, 6
18716 ; PWR6-NEXT: rotldi 4, 4, 62
18717 ; PWR6-NEXT: add 3, 8, 3
18718 ; PWR6-NEXT: lis 9, 257
18719 ; PWR6-NEXT: ori 7, 7, 3855
18720 ; PWR6-NEXT: and 4, 4, 6
18721 ; PWR6-NEXT: rldicl 6, 3, 60, 4
18722 ; PWR6-NEXT: ori 9, 9, 257
18723 ; PWR6-NEXT: rldimi 7, 7, 32, 0
18724 ; PWR6-NEXT: add 4, 5, 4
18725 ; PWR6-NEXT: add 3, 3, 6
18726 ; PWR6-NEXT: rldimi 9, 9, 32, 0
18727 ; PWR6-NEXT: rldicl 5, 4, 60, 4
18728 ; PWR6-NEXT: and 3, 3, 7
18729 ; PWR6-NEXT: add 4, 4, 5
18730 ; PWR6-NEXT: mulld 3, 3, 9
18731 ; PWR6-NEXT: and 4, 4, 7
18732 ; PWR6-NEXT: rldicl 3, 3, 8, 56
18733 ; PWR6-NEXT: li 5, 27
18734 ; PWR6-NEXT: mulld 4, 4, 9
18735 ; PWR6-NEXT: subc 6, 3, 5
18736 ; PWR6-NEXT: rldicl 4, 4, 8, 56
18737 ; PWR6-NEXT: subfe 3, 3, 3
18738 ; PWR6-NEXT: subc 5, 4, 5
18739 ; PWR6-NEXT: subfe 4, 4, 4
18742 ; PWR7-LABEL: ult_27_v2i64:
18744 ; PWR7-NEXT: addi 3, 1, -32
18745 ; PWR7-NEXT: li 5, -1
18746 ; PWR7-NEXT: stxvd2x 34, 0, 3
18747 ; PWR7-NEXT: ld 4, -24(1)
18748 ; PWR7-NEXT: ld 3, -32(1)
18749 ; PWR7-NEXT: popcntd 4, 4
18750 ; PWR7-NEXT: popcntd 3, 3
18751 ; PWR7-NEXT: cmpldi 4, 27
18752 ; PWR7-NEXT: li 4, 0
18753 ; PWR7-NEXT: isellt 6, 5, 4
18754 ; PWR7-NEXT: cmpldi 3, 27
18755 ; PWR7-NEXT: isellt 3, 5, 4
18756 ; PWR7-NEXT: std 6, -8(1)
18757 ; PWR7-NEXT: std 3, -16(1)
18758 ; PWR7-NEXT: addi 3, 1, -16
18759 ; PWR7-NEXT: lxvd2x 34, 0, 3
18762 ; PWR8-LABEL: ult_27_v2i64:
18764 ; PWR8-NEXT: addis 3, 2, .LCPI151_0@toc@ha
18765 ; PWR8-NEXT: vpopcntd 2, 2
18766 ; PWR8-NEXT: addi 3, 3, .LCPI151_0@toc@l
18767 ; PWR8-NEXT: lxvd2x 35, 0, 3
18768 ; PWR8-NEXT: vcmpgtud 2, 3, 2
18771 ; PWR9-LABEL: ult_27_v2i64:
18773 ; PWR9-NEXT: addis 3, 2, .LCPI151_0@toc@ha
18774 ; PWR9-NEXT: vpopcntd 2, 2
18775 ; PWR9-NEXT: addi 3, 3, .LCPI151_0@toc@l
18776 ; PWR9-NEXT: lxv 35, 0(3)
18777 ; PWR9-NEXT: vcmpgtud 2, 3, 2
18779 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
18780 %3 = icmp ult <2 x i64> %2, <i64 27, i64 27>
18781 %4 = sext <2 x i1> %3 to <2 x i64>
18785 define <2 x i64> @ugt_27_v2i64(<2 x i64> %0) {
18786 ; PWR5-LABEL: ugt_27_v2i64:
18788 ; PWR5-NEXT: lis 5, 21845
18789 ; PWR5-NEXT: lis 6, 13107
18790 ; PWR5-NEXT: ori 5, 5, 21845
18791 ; PWR5-NEXT: rotldi 8, 4, 63
18792 ; PWR5-NEXT: rotldi 9, 3, 63
18793 ; PWR5-NEXT: rldimi 5, 5, 32, 0
18794 ; PWR5-NEXT: and 8, 8, 5
18795 ; PWR5-NEXT: and 5, 9, 5
18796 ; PWR5-NEXT: ori 6, 6, 13107
18797 ; PWR5-NEXT: sub 3, 3, 5
18798 ; PWR5-NEXT: rldimi 6, 6, 32, 0
18799 ; PWR5-NEXT: sub 4, 4, 8
18800 ; PWR5-NEXT: and 8, 3, 6
18801 ; PWR5-NEXT: rotldi 3, 3, 62
18802 ; PWR5-NEXT: and 3, 3, 6
18803 ; PWR5-NEXT: lis 7, 3855
18804 ; PWR5-NEXT: and 5, 4, 6
18805 ; PWR5-NEXT: rotldi 4, 4, 62
18806 ; PWR5-NEXT: add 3, 8, 3
18807 ; PWR5-NEXT: lis 9, 257
18808 ; PWR5-NEXT: ori 7, 7, 3855
18809 ; PWR5-NEXT: and 4, 4, 6
18810 ; PWR5-NEXT: rldicl 6, 3, 60, 4
18811 ; PWR5-NEXT: ori 9, 9, 257
18812 ; PWR5-NEXT: rldimi 7, 7, 32, 0
18813 ; PWR5-NEXT: add 4, 5, 4
18814 ; PWR5-NEXT: add 3, 3, 6
18815 ; PWR5-NEXT: rldimi 9, 9, 32, 0
18816 ; PWR5-NEXT: rldicl 5, 4, 60, 4
18817 ; PWR5-NEXT: and 3, 3, 7
18818 ; PWR5-NEXT: add 4, 4, 5
18819 ; PWR5-NEXT: mulld 3, 3, 9
18820 ; PWR5-NEXT: and 4, 4, 7
18821 ; PWR5-NEXT: rldicl 3, 3, 8, 56
18822 ; PWR5-NEXT: mulld 4, 4, 9
18823 ; PWR5-NEXT: li 5, 27
18824 ; PWR5-NEXT: subfic 3, 3, 27
18825 ; PWR5-NEXT: rldicl 4, 4, 8, 56
18826 ; PWR5-NEXT: subfe 3, 5, 5
18827 ; PWR5-NEXT: subfic 4, 4, 27
18828 ; PWR5-NEXT: subfe 4, 5, 5
18831 ; PWR6-LABEL: ugt_27_v2i64:
18833 ; PWR6-NEXT: lis 5, 21845
18834 ; PWR6-NEXT: lis 6, 13107
18835 ; PWR6-NEXT: ori 5, 5, 21845
18836 ; PWR6-NEXT: rotldi 8, 4, 63
18837 ; PWR6-NEXT: rotldi 9, 3, 63
18838 ; PWR6-NEXT: rldimi 5, 5, 32, 0
18839 ; PWR6-NEXT: and 8, 8, 5
18840 ; PWR6-NEXT: and 5, 9, 5
18841 ; PWR6-NEXT: ori 6, 6, 13107
18842 ; PWR6-NEXT: sub 3, 3, 5
18843 ; PWR6-NEXT: rldimi 6, 6, 32, 0
18844 ; PWR6-NEXT: sub 4, 4, 8
18845 ; PWR6-NEXT: and 8, 3, 6
18846 ; PWR6-NEXT: rotldi 3, 3, 62
18847 ; PWR6-NEXT: and 3, 3, 6
18848 ; PWR6-NEXT: lis 7, 3855
18849 ; PWR6-NEXT: and 5, 4, 6
18850 ; PWR6-NEXT: rotldi 4, 4, 62
18851 ; PWR6-NEXT: add 3, 8, 3
18852 ; PWR6-NEXT: lis 9, 257
18853 ; PWR6-NEXT: ori 7, 7, 3855
18854 ; PWR6-NEXT: and 4, 4, 6
18855 ; PWR6-NEXT: rldicl 6, 3, 60, 4
18856 ; PWR6-NEXT: ori 9, 9, 257
18857 ; PWR6-NEXT: rldimi 7, 7, 32, 0
18858 ; PWR6-NEXT: add 4, 5, 4
18859 ; PWR6-NEXT: add 3, 3, 6
18860 ; PWR6-NEXT: rldimi 9, 9, 32, 0
18861 ; PWR6-NEXT: rldicl 5, 4, 60, 4
18862 ; PWR6-NEXT: and 3, 3, 7
18863 ; PWR6-NEXT: add 4, 4, 5
18864 ; PWR6-NEXT: mulld 3, 3, 9
18865 ; PWR6-NEXT: and 4, 4, 7
18866 ; PWR6-NEXT: rldicl 3, 3, 8, 56
18867 ; PWR6-NEXT: mulld 4, 4, 9
18868 ; PWR6-NEXT: li 5, 27
18869 ; PWR6-NEXT: subfic 3, 3, 27
18870 ; PWR6-NEXT: rldicl 4, 4, 8, 56
18871 ; PWR6-NEXT: subfe 3, 5, 5
18872 ; PWR6-NEXT: subfic 4, 4, 27
18873 ; PWR6-NEXT: subfe 4, 5, 5
18876 ; PWR7-LABEL: ugt_27_v2i64:
18878 ; PWR7-NEXT: addi 3, 1, -32
18879 ; PWR7-NEXT: li 5, -1
18880 ; PWR7-NEXT: stxvd2x 34, 0, 3
18881 ; PWR7-NEXT: ld 4, -24(1)
18882 ; PWR7-NEXT: ld 3, -32(1)
18883 ; PWR7-NEXT: popcntd 4, 4
18884 ; PWR7-NEXT: popcntd 3, 3
18885 ; PWR7-NEXT: cmpldi 4, 27
18886 ; PWR7-NEXT: li 4, 0
18887 ; PWR7-NEXT: iselgt 6, 5, 4
18888 ; PWR7-NEXT: cmpldi 3, 27
18889 ; PWR7-NEXT: iselgt 3, 5, 4
18890 ; PWR7-NEXT: std 6, -8(1)
18891 ; PWR7-NEXT: std 3, -16(1)
18892 ; PWR7-NEXT: addi 3, 1, -16
18893 ; PWR7-NEXT: lxvd2x 34, 0, 3
18896 ; PWR8-LABEL: ugt_27_v2i64:
18898 ; PWR8-NEXT: addis 3, 2, .LCPI152_0@toc@ha
18899 ; PWR8-NEXT: vpopcntd 2, 2
18900 ; PWR8-NEXT: addi 3, 3, .LCPI152_0@toc@l
18901 ; PWR8-NEXT: lxvd2x 35, 0, 3
18902 ; PWR8-NEXT: vcmpgtud 2, 2, 3
18905 ; PWR9-LABEL: ugt_27_v2i64:
18907 ; PWR9-NEXT: addis 3, 2, .LCPI152_0@toc@ha
18908 ; PWR9-NEXT: vpopcntd 2, 2
18909 ; PWR9-NEXT: addi 3, 3, .LCPI152_0@toc@l
18910 ; PWR9-NEXT: lxv 35, 0(3)
18911 ; PWR9-NEXT: vcmpgtud 2, 2, 3
18913 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
18914 %3 = icmp ugt <2 x i64> %2, <i64 27, i64 27>
18915 %4 = sext <2 x i1> %3 to <2 x i64>
18919 define <2 x i64> @ult_28_v2i64(<2 x i64> %0) {
18920 ; PWR5-LABEL: ult_28_v2i64:
18922 ; PWR5-NEXT: lis 5, 21845
18923 ; PWR5-NEXT: lis 6, 13107
18924 ; PWR5-NEXT: ori 5, 5, 21845
18925 ; PWR5-NEXT: rotldi 8, 4, 63
18926 ; PWR5-NEXT: rotldi 9, 3, 63
18927 ; PWR5-NEXT: rldimi 5, 5, 32, 0
18928 ; PWR5-NEXT: and 8, 8, 5
18929 ; PWR5-NEXT: and 5, 9, 5
18930 ; PWR5-NEXT: ori 6, 6, 13107
18931 ; PWR5-NEXT: sub 3, 3, 5
18932 ; PWR5-NEXT: rldimi 6, 6, 32, 0
18933 ; PWR5-NEXT: sub 4, 4, 8
18934 ; PWR5-NEXT: and 8, 3, 6
18935 ; PWR5-NEXT: rotldi 3, 3, 62
18936 ; PWR5-NEXT: and 3, 3, 6
18937 ; PWR5-NEXT: lis 7, 3855
18938 ; PWR5-NEXT: and 5, 4, 6
18939 ; PWR5-NEXT: rotldi 4, 4, 62
18940 ; PWR5-NEXT: add 3, 8, 3
18941 ; PWR5-NEXT: lis 9, 257
18942 ; PWR5-NEXT: ori 7, 7, 3855
18943 ; PWR5-NEXT: and 4, 4, 6
18944 ; PWR5-NEXT: rldicl 6, 3, 60, 4
18945 ; PWR5-NEXT: ori 9, 9, 257
18946 ; PWR5-NEXT: rldimi 7, 7, 32, 0
18947 ; PWR5-NEXT: add 4, 5, 4
18948 ; PWR5-NEXT: add 3, 3, 6
18949 ; PWR5-NEXT: rldimi 9, 9, 32, 0
18950 ; PWR5-NEXT: rldicl 5, 4, 60, 4
18951 ; PWR5-NEXT: and 3, 3, 7
18952 ; PWR5-NEXT: add 4, 4, 5
18953 ; PWR5-NEXT: mulld 3, 3, 9
18954 ; PWR5-NEXT: and 4, 4, 7
18955 ; PWR5-NEXT: rldicl 3, 3, 8, 56
18956 ; PWR5-NEXT: li 5, 28
18957 ; PWR5-NEXT: mulld 4, 4, 9
18958 ; PWR5-NEXT: subc 6, 3, 5
18959 ; PWR5-NEXT: rldicl 4, 4, 8, 56
18960 ; PWR5-NEXT: subfe 3, 3, 3
18961 ; PWR5-NEXT: subc 5, 4, 5
18962 ; PWR5-NEXT: subfe 4, 4, 4
18965 ; PWR6-LABEL: ult_28_v2i64:
18967 ; PWR6-NEXT: lis 5, 21845
18968 ; PWR6-NEXT: lis 6, 13107
18969 ; PWR6-NEXT: ori 5, 5, 21845
18970 ; PWR6-NEXT: rotldi 8, 4, 63
18971 ; PWR6-NEXT: rotldi 9, 3, 63
18972 ; PWR6-NEXT: rldimi 5, 5, 32, 0
18973 ; PWR6-NEXT: and 8, 8, 5
18974 ; PWR6-NEXT: and 5, 9, 5
18975 ; PWR6-NEXT: ori 6, 6, 13107
18976 ; PWR6-NEXT: sub 3, 3, 5
18977 ; PWR6-NEXT: rldimi 6, 6, 32, 0
18978 ; PWR6-NEXT: sub 4, 4, 8
18979 ; PWR6-NEXT: and 8, 3, 6
18980 ; PWR6-NEXT: rotldi 3, 3, 62
18981 ; PWR6-NEXT: and 3, 3, 6
18982 ; PWR6-NEXT: lis 7, 3855
18983 ; PWR6-NEXT: and 5, 4, 6
18984 ; PWR6-NEXT: rotldi 4, 4, 62
18985 ; PWR6-NEXT: add 3, 8, 3
18986 ; PWR6-NEXT: lis 9, 257
18987 ; PWR6-NEXT: ori 7, 7, 3855
18988 ; PWR6-NEXT: and 4, 4, 6
18989 ; PWR6-NEXT: rldicl 6, 3, 60, 4
18990 ; PWR6-NEXT: ori 9, 9, 257
18991 ; PWR6-NEXT: rldimi 7, 7, 32, 0
18992 ; PWR6-NEXT: add 4, 5, 4
18993 ; PWR6-NEXT: add 3, 3, 6
18994 ; PWR6-NEXT: rldimi 9, 9, 32, 0
18995 ; PWR6-NEXT: rldicl 5, 4, 60, 4
18996 ; PWR6-NEXT: and 3, 3, 7
18997 ; PWR6-NEXT: add 4, 4, 5
18998 ; PWR6-NEXT: mulld 3, 3, 9
18999 ; PWR6-NEXT: and 4, 4, 7
19000 ; PWR6-NEXT: rldicl 3, 3, 8, 56
19001 ; PWR6-NEXT: li 5, 28
19002 ; PWR6-NEXT: mulld 4, 4, 9
19003 ; PWR6-NEXT: subc 6, 3, 5
19004 ; PWR6-NEXT: rldicl 4, 4, 8, 56
19005 ; PWR6-NEXT: subfe 3, 3, 3
19006 ; PWR6-NEXT: subc 5, 4, 5
19007 ; PWR6-NEXT: subfe 4, 4, 4
19010 ; PWR7-LABEL: ult_28_v2i64:
19012 ; PWR7-NEXT: addi 3, 1, -32
19013 ; PWR7-NEXT: li 5, -1
19014 ; PWR7-NEXT: stxvd2x 34, 0, 3
19015 ; PWR7-NEXT: ld 4, -24(1)
19016 ; PWR7-NEXT: ld 3, -32(1)
19017 ; PWR7-NEXT: popcntd 4, 4
19018 ; PWR7-NEXT: popcntd 3, 3
19019 ; PWR7-NEXT: cmpldi 4, 28
19020 ; PWR7-NEXT: li 4, 0
19021 ; PWR7-NEXT: isellt 6, 5, 4
19022 ; PWR7-NEXT: cmpldi 3, 28
19023 ; PWR7-NEXT: isellt 3, 5, 4
19024 ; PWR7-NEXT: std 6, -8(1)
19025 ; PWR7-NEXT: std 3, -16(1)
19026 ; PWR7-NEXT: addi 3, 1, -16
19027 ; PWR7-NEXT: lxvd2x 34, 0, 3
19030 ; PWR8-LABEL: ult_28_v2i64:
19032 ; PWR8-NEXT: addis 3, 2, .LCPI153_0@toc@ha
19033 ; PWR8-NEXT: vpopcntd 2, 2
19034 ; PWR8-NEXT: addi 3, 3, .LCPI153_0@toc@l
19035 ; PWR8-NEXT: lxvd2x 35, 0, 3
19036 ; PWR8-NEXT: vcmpgtud 2, 3, 2
19039 ; PWR9-LABEL: ult_28_v2i64:
19041 ; PWR9-NEXT: addis 3, 2, .LCPI153_0@toc@ha
19042 ; PWR9-NEXT: vpopcntd 2, 2
19043 ; PWR9-NEXT: addi 3, 3, .LCPI153_0@toc@l
19044 ; PWR9-NEXT: lxv 35, 0(3)
19045 ; PWR9-NEXT: vcmpgtud 2, 3, 2
19047 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
19048 %3 = icmp ult <2 x i64> %2, <i64 28, i64 28>
19049 %4 = sext <2 x i1> %3 to <2 x i64>
19053 define <2 x i64> @ugt_28_v2i64(<2 x i64> %0) {
19054 ; PWR5-LABEL: ugt_28_v2i64:
19056 ; PWR5-NEXT: lis 5, 21845
19057 ; PWR5-NEXT: lis 6, 13107
19058 ; PWR5-NEXT: ori 5, 5, 21845
19059 ; PWR5-NEXT: rotldi 8, 4, 63
19060 ; PWR5-NEXT: rotldi 9, 3, 63
19061 ; PWR5-NEXT: rldimi 5, 5, 32, 0
19062 ; PWR5-NEXT: and 8, 8, 5
19063 ; PWR5-NEXT: and 5, 9, 5
19064 ; PWR5-NEXT: ori 6, 6, 13107
19065 ; PWR5-NEXT: sub 3, 3, 5
19066 ; PWR5-NEXT: rldimi 6, 6, 32, 0
19067 ; PWR5-NEXT: sub 4, 4, 8
19068 ; PWR5-NEXT: and 8, 3, 6
19069 ; PWR5-NEXT: rotldi 3, 3, 62
19070 ; PWR5-NEXT: and 3, 3, 6
19071 ; PWR5-NEXT: lis 7, 3855
19072 ; PWR5-NEXT: and 5, 4, 6
19073 ; PWR5-NEXT: rotldi 4, 4, 62
19074 ; PWR5-NEXT: add 3, 8, 3
19075 ; PWR5-NEXT: lis 9, 257
19076 ; PWR5-NEXT: ori 7, 7, 3855
19077 ; PWR5-NEXT: and 4, 4, 6
19078 ; PWR5-NEXT: rldicl 6, 3, 60, 4
19079 ; PWR5-NEXT: ori 9, 9, 257
19080 ; PWR5-NEXT: rldimi 7, 7, 32, 0
19081 ; PWR5-NEXT: add 4, 5, 4
19082 ; PWR5-NEXT: add 3, 3, 6
19083 ; PWR5-NEXT: rldimi 9, 9, 32, 0
19084 ; PWR5-NEXT: rldicl 5, 4, 60, 4
19085 ; PWR5-NEXT: and 3, 3, 7
19086 ; PWR5-NEXT: add 4, 4, 5
19087 ; PWR5-NEXT: mulld 3, 3, 9
19088 ; PWR5-NEXT: and 4, 4, 7
19089 ; PWR5-NEXT: rldicl 3, 3, 8, 56
19090 ; PWR5-NEXT: mulld 4, 4, 9
19091 ; PWR5-NEXT: li 5, 28
19092 ; PWR5-NEXT: subfic 3, 3, 28
19093 ; PWR5-NEXT: rldicl 4, 4, 8, 56
19094 ; PWR5-NEXT: subfe 3, 5, 5
19095 ; PWR5-NEXT: subfic 4, 4, 28
19096 ; PWR5-NEXT: subfe 4, 5, 5
19099 ; PWR6-LABEL: ugt_28_v2i64:
19101 ; PWR6-NEXT: lis 5, 21845
19102 ; PWR6-NEXT: lis 6, 13107
19103 ; PWR6-NEXT: ori 5, 5, 21845
19104 ; PWR6-NEXT: rotldi 8, 4, 63
19105 ; PWR6-NEXT: rotldi 9, 3, 63
19106 ; PWR6-NEXT: rldimi 5, 5, 32, 0
19107 ; PWR6-NEXT: and 8, 8, 5
19108 ; PWR6-NEXT: and 5, 9, 5
19109 ; PWR6-NEXT: ori 6, 6, 13107
19110 ; PWR6-NEXT: sub 3, 3, 5
19111 ; PWR6-NEXT: rldimi 6, 6, 32, 0
19112 ; PWR6-NEXT: sub 4, 4, 8
19113 ; PWR6-NEXT: and 8, 3, 6
19114 ; PWR6-NEXT: rotldi 3, 3, 62
19115 ; PWR6-NEXT: and 3, 3, 6
19116 ; PWR6-NEXT: lis 7, 3855
19117 ; PWR6-NEXT: and 5, 4, 6
19118 ; PWR6-NEXT: rotldi 4, 4, 62
19119 ; PWR6-NEXT: add 3, 8, 3
19120 ; PWR6-NEXT: lis 9, 257
19121 ; PWR6-NEXT: ori 7, 7, 3855
19122 ; PWR6-NEXT: and 4, 4, 6
19123 ; PWR6-NEXT: rldicl 6, 3, 60, 4
19124 ; PWR6-NEXT: ori 9, 9, 257
19125 ; PWR6-NEXT: rldimi 7, 7, 32, 0
19126 ; PWR6-NEXT: add 4, 5, 4
19127 ; PWR6-NEXT: add 3, 3, 6
19128 ; PWR6-NEXT: rldimi 9, 9, 32, 0
19129 ; PWR6-NEXT: rldicl 5, 4, 60, 4
19130 ; PWR6-NEXT: and 3, 3, 7
19131 ; PWR6-NEXT: add 4, 4, 5
19132 ; PWR6-NEXT: mulld 3, 3, 9
19133 ; PWR6-NEXT: and 4, 4, 7
19134 ; PWR6-NEXT: rldicl 3, 3, 8, 56
19135 ; PWR6-NEXT: mulld 4, 4, 9
19136 ; PWR6-NEXT: li 5, 28
19137 ; PWR6-NEXT: subfic 3, 3, 28
19138 ; PWR6-NEXT: rldicl 4, 4, 8, 56
19139 ; PWR6-NEXT: subfe 3, 5, 5
19140 ; PWR6-NEXT: subfic 4, 4, 28
19141 ; PWR6-NEXT: subfe 4, 5, 5
19144 ; PWR7-LABEL: ugt_28_v2i64:
19146 ; PWR7-NEXT: addi 3, 1, -32
19147 ; PWR7-NEXT: li 5, -1
19148 ; PWR7-NEXT: stxvd2x 34, 0, 3
19149 ; PWR7-NEXT: ld 4, -24(1)
19150 ; PWR7-NEXT: ld 3, -32(1)
19151 ; PWR7-NEXT: popcntd 4, 4
19152 ; PWR7-NEXT: popcntd 3, 3
19153 ; PWR7-NEXT: cmpldi 4, 28
19154 ; PWR7-NEXT: li 4, 0
19155 ; PWR7-NEXT: iselgt 6, 5, 4
19156 ; PWR7-NEXT: cmpldi 3, 28
19157 ; PWR7-NEXT: iselgt 3, 5, 4
19158 ; PWR7-NEXT: std 6, -8(1)
19159 ; PWR7-NEXT: std 3, -16(1)
19160 ; PWR7-NEXT: addi 3, 1, -16
19161 ; PWR7-NEXT: lxvd2x 34, 0, 3
19164 ; PWR8-LABEL: ugt_28_v2i64:
19166 ; PWR8-NEXT: addis 3, 2, .LCPI154_0@toc@ha
19167 ; PWR8-NEXT: vpopcntd 2, 2
19168 ; PWR8-NEXT: addi 3, 3, .LCPI154_0@toc@l
19169 ; PWR8-NEXT: lxvd2x 35, 0, 3
19170 ; PWR8-NEXT: vcmpgtud 2, 2, 3
19173 ; PWR9-LABEL: ugt_28_v2i64:
19175 ; PWR9-NEXT: addis 3, 2, .LCPI154_0@toc@ha
19176 ; PWR9-NEXT: vpopcntd 2, 2
19177 ; PWR9-NEXT: addi 3, 3, .LCPI154_0@toc@l
19178 ; PWR9-NEXT: lxv 35, 0(3)
19179 ; PWR9-NEXT: vcmpgtud 2, 2, 3
19181 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
19182 %3 = icmp ugt <2 x i64> %2, <i64 28, i64 28>
19183 %4 = sext <2 x i1> %3 to <2 x i64>
19187 define <2 x i64> @ult_29_v2i64(<2 x i64> %0) {
19188 ; PWR5-LABEL: ult_29_v2i64:
19190 ; PWR5-NEXT: lis 5, 21845
19191 ; PWR5-NEXT: lis 6, 13107
19192 ; PWR5-NEXT: ori 5, 5, 21845
19193 ; PWR5-NEXT: rotldi 8, 4, 63
19194 ; PWR5-NEXT: rotldi 9, 3, 63
19195 ; PWR5-NEXT: rldimi 5, 5, 32, 0
19196 ; PWR5-NEXT: and 8, 8, 5
19197 ; PWR5-NEXT: and 5, 9, 5
19198 ; PWR5-NEXT: ori 6, 6, 13107
19199 ; PWR5-NEXT: sub 3, 3, 5
19200 ; PWR5-NEXT: rldimi 6, 6, 32, 0
19201 ; PWR5-NEXT: sub 4, 4, 8
19202 ; PWR5-NEXT: and 8, 3, 6
19203 ; PWR5-NEXT: rotldi 3, 3, 62
19204 ; PWR5-NEXT: and 3, 3, 6
19205 ; PWR5-NEXT: lis 7, 3855
19206 ; PWR5-NEXT: and 5, 4, 6
19207 ; PWR5-NEXT: rotldi 4, 4, 62
19208 ; PWR5-NEXT: add 3, 8, 3
19209 ; PWR5-NEXT: lis 9, 257
19210 ; PWR5-NEXT: ori 7, 7, 3855
19211 ; PWR5-NEXT: and 4, 4, 6
19212 ; PWR5-NEXT: rldicl 6, 3, 60, 4
19213 ; PWR5-NEXT: ori 9, 9, 257
19214 ; PWR5-NEXT: rldimi 7, 7, 32, 0
19215 ; PWR5-NEXT: add 4, 5, 4
19216 ; PWR5-NEXT: add 3, 3, 6
19217 ; PWR5-NEXT: rldimi 9, 9, 32, 0
19218 ; PWR5-NEXT: rldicl 5, 4, 60, 4
19219 ; PWR5-NEXT: and 3, 3, 7
19220 ; PWR5-NEXT: add 4, 4, 5
19221 ; PWR5-NEXT: mulld 3, 3, 9
19222 ; PWR5-NEXT: and 4, 4, 7
19223 ; PWR5-NEXT: rldicl 3, 3, 8, 56
19224 ; PWR5-NEXT: li 5, 29
19225 ; PWR5-NEXT: mulld 4, 4, 9
19226 ; PWR5-NEXT: subc 6, 3, 5
19227 ; PWR5-NEXT: rldicl 4, 4, 8, 56
19228 ; PWR5-NEXT: subfe 3, 3, 3
19229 ; PWR5-NEXT: subc 5, 4, 5
19230 ; PWR5-NEXT: subfe 4, 4, 4
19233 ; PWR6-LABEL: ult_29_v2i64:
19235 ; PWR6-NEXT: lis 5, 21845
19236 ; PWR6-NEXT: lis 6, 13107
19237 ; PWR6-NEXT: ori 5, 5, 21845
19238 ; PWR6-NEXT: rotldi 8, 4, 63
19239 ; PWR6-NEXT: rotldi 9, 3, 63
19240 ; PWR6-NEXT: rldimi 5, 5, 32, 0
19241 ; PWR6-NEXT: and 8, 8, 5
19242 ; PWR6-NEXT: and 5, 9, 5
19243 ; PWR6-NEXT: ori 6, 6, 13107
19244 ; PWR6-NEXT: sub 3, 3, 5
19245 ; PWR6-NEXT: rldimi 6, 6, 32, 0
19246 ; PWR6-NEXT: sub 4, 4, 8
19247 ; PWR6-NEXT: and 8, 3, 6
19248 ; PWR6-NEXT: rotldi 3, 3, 62
19249 ; PWR6-NEXT: and 3, 3, 6
19250 ; PWR6-NEXT: lis 7, 3855
19251 ; PWR6-NEXT: and 5, 4, 6
19252 ; PWR6-NEXT: rotldi 4, 4, 62
19253 ; PWR6-NEXT: add 3, 8, 3
19254 ; PWR6-NEXT: lis 9, 257
19255 ; PWR6-NEXT: ori 7, 7, 3855
19256 ; PWR6-NEXT: and 4, 4, 6
19257 ; PWR6-NEXT: rldicl 6, 3, 60, 4
19258 ; PWR6-NEXT: ori 9, 9, 257
19259 ; PWR6-NEXT: rldimi 7, 7, 32, 0
19260 ; PWR6-NEXT: add 4, 5, 4
19261 ; PWR6-NEXT: add 3, 3, 6
19262 ; PWR6-NEXT: rldimi 9, 9, 32, 0
19263 ; PWR6-NEXT: rldicl 5, 4, 60, 4
19264 ; PWR6-NEXT: and 3, 3, 7
19265 ; PWR6-NEXT: add 4, 4, 5
19266 ; PWR6-NEXT: mulld 3, 3, 9
19267 ; PWR6-NEXT: and 4, 4, 7
19268 ; PWR6-NEXT: rldicl 3, 3, 8, 56
19269 ; PWR6-NEXT: li 5, 29
19270 ; PWR6-NEXT: mulld 4, 4, 9
19271 ; PWR6-NEXT: subc 6, 3, 5
19272 ; PWR6-NEXT: rldicl 4, 4, 8, 56
19273 ; PWR6-NEXT: subfe 3, 3, 3
19274 ; PWR6-NEXT: subc 5, 4, 5
19275 ; PWR6-NEXT: subfe 4, 4, 4
19278 ; PWR7-LABEL: ult_29_v2i64:
19280 ; PWR7-NEXT: addi 3, 1, -32
19281 ; PWR7-NEXT: li 5, -1
19282 ; PWR7-NEXT: stxvd2x 34, 0, 3
19283 ; PWR7-NEXT: ld 4, -24(1)
19284 ; PWR7-NEXT: ld 3, -32(1)
19285 ; PWR7-NEXT: popcntd 4, 4
19286 ; PWR7-NEXT: popcntd 3, 3
19287 ; PWR7-NEXT: cmpldi 4, 29
19288 ; PWR7-NEXT: li 4, 0
19289 ; PWR7-NEXT: isellt 6, 5, 4
19290 ; PWR7-NEXT: cmpldi 3, 29
19291 ; PWR7-NEXT: isellt 3, 5, 4
19292 ; PWR7-NEXT: std 6, -8(1)
19293 ; PWR7-NEXT: std 3, -16(1)
19294 ; PWR7-NEXT: addi 3, 1, -16
19295 ; PWR7-NEXT: lxvd2x 34, 0, 3
19298 ; PWR8-LABEL: ult_29_v2i64:
19300 ; PWR8-NEXT: addis 3, 2, .LCPI155_0@toc@ha
19301 ; PWR8-NEXT: vpopcntd 2, 2
19302 ; PWR8-NEXT: addi 3, 3, .LCPI155_0@toc@l
19303 ; PWR8-NEXT: lxvd2x 35, 0, 3
19304 ; PWR8-NEXT: vcmpgtud 2, 3, 2
19307 ; PWR9-LABEL: ult_29_v2i64:
19309 ; PWR9-NEXT: addis 3, 2, .LCPI155_0@toc@ha
19310 ; PWR9-NEXT: vpopcntd 2, 2
19311 ; PWR9-NEXT: addi 3, 3, .LCPI155_0@toc@l
19312 ; PWR9-NEXT: lxv 35, 0(3)
19313 ; PWR9-NEXT: vcmpgtud 2, 3, 2
19315 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
19316 %3 = icmp ult <2 x i64> %2, <i64 29, i64 29>
19317 %4 = sext <2 x i1> %3 to <2 x i64>
19321 define <2 x i64> @ugt_29_v2i64(<2 x i64> %0) {
19322 ; PWR5-LABEL: ugt_29_v2i64:
19324 ; PWR5-NEXT: lis 5, 21845
19325 ; PWR5-NEXT: lis 6, 13107
19326 ; PWR5-NEXT: ori 5, 5, 21845
19327 ; PWR5-NEXT: rotldi 8, 4, 63
19328 ; PWR5-NEXT: rotldi 9, 3, 63
19329 ; PWR5-NEXT: rldimi 5, 5, 32, 0
19330 ; PWR5-NEXT: and 8, 8, 5
19331 ; PWR5-NEXT: and 5, 9, 5
19332 ; PWR5-NEXT: ori 6, 6, 13107
19333 ; PWR5-NEXT: sub 3, 3, 5
19334 ; PWR5-NEXT: rldimi 6, 6, 32, 0
19335 ; PWR5-NEXT: sub 4, 4, 8
19336 ; PWR5-NEXT: and 8, 3, 6
19337 ; PWR5-NEXT: rotldi 3, 3, 62
19338 ; PWR5-NEXT: and 3, 3, 6
19339 ; PWR5-NEXT: lis 7, 3855
19340 ; PWR5-NEXT: and 5, 4, 6
19341 ; PWR5-NEXT: rotldi 4, 4, 62
19342 ; PWR5-NEXT: add 3, 8, 3
19343 ; PWR5-NEXT: lis 9, 257
19344 ; PWR5-NEXT: ori 7, 7, 3855
19345 ; PWR5-NEXT: and 4, 4, 6
19346 ; PWR5-NEXT: rldicl 6, 3, 60, 4
19347 ; PWR5-NEXT: ori 9, 9, 257
19348 ; PWR5-NEXT: rldimi 7, 7, 32, 0
19349 ; PWR5-NEXT: add 4, 5, 4
19350 ; PWR5-NEXT: add 3, 3, 6
19351 ; PWR5-NEXT: rldimi 9, 9, 32, 0
19352 ; PWR5-NEXT: rldicl 5, 4, 60, 4
19353 ; PWR5-NEXT: and 3, 3, 7
19354 ; PWR5-NEXT: add 4, 4, 5
19355 ; PWR5-NEXT: mulld 3, 3, 9
19356 ; PWR5-NEXT: and 4, 4, 7
19357 ; PWR5-NEXT: rldicl 3, 3, 8, 56
19358 ; PWR5-NEXT: mulld 4, 4, 9
19359 ; PWR5-NEXT: li 5, 29
19360 ; PWR5-NEXT: subfic 3, 3, 29
19361 ; PWR5-NEXT: rldicl 4, 4, 8, 56
19362 ; PWR5-NEXT: subfe 3, 5, 5
19363 ; PWR5-NEXT: subfic 4, 4, 29
19364 ; PWR5-NEXT: subfe 4, 5, 5
19367 ; PWR6-LABEL: ugt_29_v2i64:
19369 ; PWR6-NEXT: lis 5, 21845
19370 ; PWR6-NEXT: lis 6, 13107
19371 ; PWR6-NEXT: ori 5, 5, 21845
19372 ; PWR6-NEXT: rotldi 8, 4, 63
19373 ; PWR6-NEXT: rotldi 9, 3, 63
19374 ; PWR6-NEXT: rldimi 5, 5, 32, 0
19375 ; PWR6-NEXT: and 8, 8, 5
19376 ; PWR6-NEXT: and 5, 9, 5
19377 ; PWR6-NEXT: ori 6, 6, 13107
19378 ; PWR6-NEXT: sub 3, 3, 5
19379 ; PWR6-NEXT: rldimi 6, 6, 32, 0
19380 ; PWR6-NEXT: sub 4, 4, 8
19381 ; PWR6-NEXT: and 8, 3, 6
19382 ; PWR6-NEXT: rotldi 3, 3, 62
19383 ; PWR6-NEXT: and 3, 3, 6
19384 ; PWR6-NEXT: lis 7, 3855
19385 ; PWR6-NEXT: and 5, 4, 6
19386 ; PWR6-NEXT: rotldi 4, 4, 62
19387 ; PWR6-NEXT: add 3, 8, 3
19388 ; PWR6-NEXT: lis 9, 257
19389 ; PWR6-NEXT: ori 7, 7, 3855
19390 ; PWR6-NEXT: and 4, 4, 6
19391 ; PWR6-NEXT: rldicl 6, 3, 60, 4
19392 ; PWR6-NEXT: ori 9, 9, 257
19393 ; PWR6-NEXT: rldimi 7, 7, 32, 0
19394 ; PWR6-NEXT: add 4, 5, 4
19395 ; PWR6-NEXT: add 3, 3, 6
19396 ; PWR6-NEXT: rldimi 9, 9, 32, 0
19397 ; PWR6-NEXT: rldicl 5, 4, 60, 4
19398 ; PWR6-NEXT: and 3, 3, 7
19399 ; PWR6-NEXT: add 4, 4, 5
19400 ; PWR6-NEXT: mulld 3, 3, 9
19401 ; PWR6-NEXT: and 4, 4, 7
19402 ; PWR6-NEXT: rldicl 3, 3, 8, 56
19403 ; PWR6-NEXT: mulld 4, 4, 9
19404 ; PWR6-NEXT: li 5, 29
19405 ; PWR6-NEXT: subfic 3, 3, 29
19406 ; PWR6-NEXT: rldicl 4, 4, 8, 56
19407 ; PWR6-NEXT: subfe 3, 5, 5
19408 ; PWR6-NEXT: subfic 4, 4, 29
19409 ; PWR6-NEXT: subfe 4, 5, 5
19412 ; PWR7-LABEL: ugt_29_v2i64:
19414 ; PWR7-NEXT: addi 3, 1, -32
19415 ; PWR7-NEXT: li 5, -1
19416 ; PWR7-NEXT: stxvd2x 34, 0, 3
19417 ; PWR7-NEXT: ld 4, -24(1)
19418 ; PWR7-NEXT: ld 3, -32(1)
19419 ; PWR7-NEXT: popcntd 4, 4
19420 ; PWR7-NEXT: popcntd 3, 3
19421 ; PWR7-NEXT: cmpldi 4, 29
19422 ; PWR7-NEXT: li 4, 0
19423 ; PWR7-NEXT: iselgt 6, 5, 4
19424 ; PWR7-NEXT: cmpldi 3, 29
19425 ; PWR7-NEXT: iselgt 3, 5, 4
19426 ; PWR7-NEXT: std 6, -8(1)
19427 ; PWR7-NEXT: std 3, -16(1)
19428 ; PWR7-NEXT: addi 3, 1, -16
19429 ; PWR7-NEXT: lxvd2x 34, 0, 3
19432 ; PWR8-LABEL: ugt_29_v2i64:
19434 ; PWR8-NEXT: addis 3, 2, .LCPI156_0@toc@ha
19435 ; PWR8-NEXT: vpopcntd 2, 2
19436 ; PWR8-NEXT: addi 3, 3, .LCPI156_0@toc@l
19437 ; PWR8-NEXT: lxvd2x 35, 0, 3
19438 ; PWR8-NEXT: vcmpgtud 2, 2, 3
19441 ; PWR9-LABEL: ugt_29_v2i64:
19443 ; PWR9-NEXT: addis 3, 2, .LCPI156_0@toc@ha
19444 ; PWR9-NEXT: vpopcntd 2, 2
19445 ; PWR9-NEXT: addi 3, 3, .LCPI156_0@toc@l
19446 ; PWR9-NEXT: lxv 35, 0(3)
19447 ; PWR9-NEXT: vcmpgtud 2, 2, 3
19449 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
19450 %3 = icmp ugt <2 x i64> %2, <i64 29, i64 29>
19451 %4 = sext <2 x i1> %3 to <2 x i64>
19455 define <2 x i64> @ult_30_v2i64(<2 x i64> %0) {
19456 ; PWR5-LABEL: ult_30_v2i64:
19458 ; PWR5-NEXT: lis 5, 21845
19459 ; PWR5-NEXT: lis 6, 13107
19460 ; PWR5-NEXT: ori 5, 5, 21845
19461 ; PWR5-NEXT: rotldi 8, 4, 63
19462 ; PWR5-NEXT: rotldi 9, 3, 63
19463 ; PWR5-NEXT: rldimi 5, 5, 32, 0
19464 ; PWR5-NEXT: and 8, 8, 5
19465 ; PWR5-NEXT: and 5, 9, 5
19466 ; PWR5-NEXT: ori 6, 6, 13107
19467 ; PWR5-NEXT: sub 3, 3, 5
19468 ; PWR5-NEXT: rldimi 6, 6, 32, 0
19469 ; PWR5-NEXT: sub 4, 4, 8
19470 ; PWR5-NEXT: and 8, 3, 6
19471 ; PWR5-NEXT: rotldi 3, 3, 62
19472 ; PWR5-NEXT: and 3, 3, 6
19473 ; PWR5-NEXT: lis 7, 3855
19474 ; PWR5-NEXT: and 5, 4, 6
19475 ; PWR5-NEXT: rotldi 4, 4, 62
19476 ; PWR5-NEXT: add 3, 8, 3
19477 ; PWR5-NEXT: lis 9, 257
19478 ; PWR5-NEXT: ori 7, 7, 3855
19479 ; PWR5-NEXT: and 4, 4, 6
19480 ; PWR5-NEXT: rldicl 6, 3, 60, 4
19481 ; PWR5-NEXT: ori 9, 9, 257
19482 ; PWR5-NEXT: rldimi 7, 7, 32, 0
19483 ; PWR5-NEXT: add 4, 5, 4
19484 ; PWR5-NEXT: add 3, 3, 6
19485 ; PWR5-NEXT: rldimi 9, 9, 32, 0
19486 ; PWR5-NEXT: rldicl 5, 4, 60, 4
19487 ; PWR5-NEXT: and 3, 3, 7
19488 ; PWR5-NEXT: add 4, 4, 5
19489 ; PWR5-NEXT: mulld 3, 3, 9
19490 ; PWR5-NEXT: and 4, 4, 7
19491 ; PWR5-NEXT: rldicl 3, 3, 8, 56
19492 ; PWR5-NEXT: li 5, 30
19493 ; PWR5-NEXT: mulld 4, 4, 9
19494 ; PWR5-NEXT: subc 6, 3, 5
19495 ; PWR5-NEXT: rldicl 4, 4, 8, 56
19496 ; PWR5-NEXT: subfe 3, 3, 3
19497 ; PWR5-NEXT: subc 5, 4, 5
19498 ; PWR5-NEXT: subfe 4, 4, 4
19501 ; PWR6-LABEL: ult_30_v2i64:
19503 ; PWR6-NEXT: lis 5, 21845
19504 ; PWR6-NEXT: lis 6, 13107
19505 ; PWR6-NEXT: ori 5, 5, 21845
19506 ; PWR6-NEXT: rotldi 8, 4, 63
19507 ; PWR6-NEXT: rotldi 9, 3, 63
19508 ; PWR6-NEXT: rldimi 5, 5, 32, 0
19509 ; PWR6-NEXT: and 8, 8, 5
19510 ; PWR6-NEXT: and 5, 9, 5
19511 ; PWR6-NEXT: ori 6, 6, 13107
19512 ; PWR6-NEXT: sub 3, 3, 5
19513 ; PWR6-NEXT: rldimi 6, 6, 32, 0
19514 ; PWR6-NEXT: sub 4, 4, 8
19515 ; PWR6-NEXT: and 8, 3, 6
19516 ; PWR6-NEXT: rotldi 3, 3, 62
19517 ; PWR6-NEXT: and 3, 3, 6
19518 ; PWR6-NEXT: lis 7, 3855
19519 ; PWR6-NEXT: and 5, 4, 6
19520 ; PWR6-NEXT: rotldi 4, 4, 62
19521 ; PWR6-NEXT: add 3, 8, 3
19522 ; PWR6-NEXT: lis 9, 257
19523 ; PWR6-NEXT: ori 7, 7, 3855
19524 ; PWR6-NEXT: and 4, 4, 6
19525 ; PWR6-NEXT: rldicl 6, 3, 60, 4
19526 ; PWR6-NEXT: ori 9, 9, 257
19527 ; PWR6-NEXT: rldimi 7, 7, 32, 0
19528 ; PWR6-NEXT: add 4, 5, 4
19529 ; PWR6-NEXT: add 3, 3, 6
19530 ; PWR6-NEXT: rldimi 9, 9, 32, 0
19531 ; PWR6-NEXT: rldicl 5, 4, 60, 4
19532 ; PWR6-NEXT: and 3, 3, 7
19533 ; PWR6-NEXT: add 4, 4, 5
19534 ; PWR6-NEXT: mulld 3, 3, 9
19535 ; PWR6-NEXT: and 4, 4, 7
19536 ; PWR6-NEXT: rldicl 3, 3, 8, 56
19537 ; PWR6-NEXT: li 5, 30
19538 ; PWR6-NEXT: mulld 4, 4, 9
19539 ; PWR6-NEXT: subc 6, 3, 5
19540 ; PWR6-NEXT: rldicl 4, 4, 8, 56
19541 ; PWR6-NEXT: subfe 3, 3, 3
19542 ; PWR6-NEXT: subc 5, 4, 5
19543 ; PWR6-NEXT: subfe 4, 4, 4
19546 ; PWR7-LABEL: ult_30_v2i64:
19548 ; PWR7-NEXT: addi 3, 1, -32
19549 ; PWR7-NEXT: li 5, -1
19550 ; PWR7-NEXT: stxvd2x 34, 0, 3
19551 ; PWR7-NEXT: ld 4, -24(1)
19552 ; PWR7-NEXT: ld 3, -32(1)
19553 ; PWR7-NEXT: popcntd 4, 4
19554 ; PWR7-NEXT: popcntd 3, 3
19555 ; PWR7-NEXT: cmpldi 4, 30
19556 ; PWR7-NEXT: li 4, 0
19557 ; PWR7-NEXT: isellt 6, 5, 4
19558 ; PWR7-NEXT: cmpldi 3, 30
19559 ; PWR7-NEXT: isellt 3, 5, 4
19560 ; PWR7-NEXT: std 6, -8(1)
19561 ; PWR7-NEXT: std 3, -16(1)
19562 ; PWR7-NEXT: addi 3, 1, -16
19563 ; PWR7-NEXT: lxvd2x 34, 0, 3
19566 ; PWR8-LABEL: ult_30_v2i64:
19568 ; PWR8-NEXT: addis 3, 2, .LCPI157_0@toc@ha
19569 ; PWR8-NEXT: vpopcntd 2, 2
19570 ; PWR8-NEXT: addi 3, 3, .LCPI157_0@toc@l
19571 ; PWR8-NEXT: lxvd2x 35, 0, 3
19572 ; PWR8-NEXT: vcmpgtud 2, 3, 2
19575 ; PWR9-LABEL: ult_30_v2i64:
19577 ; PWR9-NEXT: addis 3, 2, .LCPI157_0@toc@ha
19578 ; PWR9-NEXT: vpopcntd 2, 2
19579 ; PWR9-NEXT: addi 3, 3, .LCPI157_0@toc@l
19580 ; PWR9-NEXT: lxv 35, 0(3)
19581 ; PWR9-NEXT: vcmpgtud 2, 3, 2
19583 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
19584 %3 = icmp ult <2 x i64> %2, <i64 30, i64 30>
19585 %4 = sext <2 x i1> %3 to <2 x i64>
19589 define <2 x i64> @ugt_30_v2i64(<2 x i64> %0) {
19590 ; PWR5-LABEL: ugt_30_v2i64:
19592 ; PWR5-NEXT: lis 5, 21845
19593 ; PWR5-NEXT: lis 6, 13107
19594 ; PWR5-NEXT: ori 5, 5, 21845
19595 ; PWR5-NEXT: rotldi 8, 4, 63
19596 ; PWR5-NEXT: rotldi 9, 3, 63
19597 ; PWR5-NEXT: rldimi 5, 5, 32, 0
19598 ; PWR5-NEXT: and 8, 8, 5
19599 ; PWR5-NEXT: and 5, 9, 5
19600 ; PWR5-NEXT: ori 6, 6, 13107
19601 ; PWR5-NEXT: sub 3, 3, 5
19602 ; PWR5-NEXT: rldimi 6, 6, 32, 0
19603 ; PWR5-NEXT: sub 4, 4, 8
19604 ; PWR5-NEXT: and 8, 3, 6
19605 ; PWR5-NEXT: rotldi 3, 3, 62
19606 ; PWR5-NEXT: and 3, 3, 6
19607 ; PWR5-NEXT: lis 7, 3855
19608 ; PWR5-NEXT: and 5, 4, 6
19609 ; PWR5-NEXT: rotldi 4, 4, 62
19610 ; PWR5-NEXT: add 3, 8, 3
19611 ; PWR5-NEXT: lis 9, 257
19612 ; PWR5-NEXT: ori 7, 7, 3855
19613 ; PWR5-NEXT: and 4, 4, 6
19614 ; PWR5-NEXT: rldicl 6, 3, 60, 4
19615 ; PWR5-NEXT: ori 9, 9, 257
19616 ; PWR5-NEXT: rldimi 7, 7, 32, 0
19617 ; PWR5-NEXT: add 4, 5, 4
19618 ; PWR5-NEXT: add 3, 3, 6
19619 ; PWR5-NEXT: rldimi 9, 9, 32, 0
19620 ; PWR5-NEXT: rldicl 5, 4, 60, 4
19621 ; PWR5-NEXT: and 3, 3, 7
19622 ; PWR5-NEXT: add 4, 4, 5
19623 ; PWR5-NEXT: mulld 3, 3, 9
19624 ; PWR5-NEXT: and 4, 4, 7
19625 ; PWR5-NEXT: rldicl 3, 3, 8, 56
19626 ; PWR5-NEXT: mulld 4, 4, 9
19627 ; PWR5-NEXT: li 5, 30
19628 ; PWR5-NEXT: subfic 3, 3, 30
19629 ; PWR5-NEXT: rldicl 4, 4, 8, 56
19630 ; PWR5-NEXT: subfe 3, 5, 5
19631 ; PWR5-NEXT: subfic 4, 4, 30
19632 ; PWR5-NEXT: subfe 4, 5, 5
19635 ; PWR6-LABEL: ugt_30_v2i64:
19637 ; PWR6-NEXT: lis 5, 21845
19638 ; PWR6-NEXT: lis 6, 13107
19639 ; PWR6-NEXT: ori 5, 5, 21845
19640 ; PWR6-NEXT: rotldi 8, 4, 63
19641 ; PWR6-NEXT: rotldi 9, 3, 63
19642 ; PWR6-NEXT: rldimi 5, 5, 32, 0
19643 ; PWR6-NEXT: and 8, 8, 5
19644 ; PWR6-NEXT: and 5, 9, 5
19645 ; PWR6-NEXT: ori 6, 6, 13107
19646 ; PWR6-NEXT: sub 3, 3, 5
19647 ; PWR6-NEXT: rldimi 6, 6, 32, 0
19648 ; PWR6-NEXT: sub 4, 4, 8
19649 ; PWR6-NEXT: and 8, 3, 6
19650 ; PWR6-NEXT: rotldi 3, 3, 62
19651 ; PWR6-NEXT: and 3, 3, 6
19652 ; PWR6-NEXT: lis 7, 3855
19653 ; PWR6-NEXT: and 5, 4, 6
19654 ; PWR6-NEXT: rotldi 4, 4, 62
19655 ; PWR6-NEXT: add 3, 8, 3
19656 ; PWR6-NEXT: lis 9, 257
19657 ; PWR6-NEXT: ori 7, 7, 3855
19658 ; PWR6-NEXT: and 4, 4, 6
19659 ; PWR6-NEXT: rldicl 6, 3, 60, 4
19660 ; PWR6-NEXT: ori 9, 9, 257
19661 ; PWR6-NEXT: rldimi 7, 7, 32, 0
19662 ; PWR6-NEXT: add 4, 5, 4
19663 ; PWR6-NEXT: add 3, 3, 6
19664 ; PWR6-NEXT: rldimi 9, 9, 32, 0
19665 ; PWR6-NEXT: rldicl 5, 4, 60, 4
19666 ; PWR6-NEXT: and 3, 3, 7
19667 ; PWR6-NEXT: add 4, 4, 5
19668 ; PWR6-NEXT: mulld 3, 3, 9
19669 ; PWR6-NEXT: and 4, 4, 7
19670 ; PWR6-NEXT: rldicl 3, 3, 8, 56
19671 ; PWR6-NEXT: mulld 4, 4, 9
19672 ; PWR6-NEXT: li 5, 30
19673 ; PWR6-NEXT: subfic 3, 3, 30
19674 ; PWR6-NEXT: rldicl 4, 4, 8, 56
19675 ; PWR6-NEXT: subfe 3, 5, 5
19676 ; PWR6-NEXT: subfic 4, 4, 30
19677 ; PWR6-NEXT: subfe 4, 5, 5
19680 ; PWR7-LABEL: ugt_30_v2i64:
19682 ; PWR7-NEXT: addi 3, 1, -32
19683 ; PWR7-NEXT: li 5, -1
19684 ; PWR7-NEXT: stxvd2x 34, 0, 3
19685 ; PWR7-NEXT: ld 4, -24(1)
19686 ; PWR7-NEXT: ld 3, -32(1)
19687 ; PWR7-NEXT: popcntd 4, 4
19688 ; PWR7-NEXT: popcntd 3, 3
19689 ; PWR7-NEXT: cmpldi 4, 30
19690 ; PWR7-NEXT: li 4, 0
19691 ; PWR7-NEXT: iselgt 6, 5, 4
19692 ; PWR7-NEXT: cmpldi 3, 30
19693 ; PWR7-NEXT: iselgt 3, 5, 4
19694 ; PWR7-NEXT: std 6, -8(1)
19695 ; PWR7-NEXT: std 3, -16(1)
19696 ; PWR7-NEXT: addi 3, 1, -16
19697 ; PWR7-NEXT: lxvd2x 34, 0, 3
19700 ; PWR8-LABEL: ugt_30_v2i64:
19702 ; PWR8-NEXT: addis 3, 2, .LCPI158_0@toc@ha
19703 ; PWR8-NEXT: vpopcntd 2, 2
19704 ; PWR8-NEXT: addi 3, 3, .LCPI158_0@toc@l
19705 ; PWR8-NEXT: lxvd2x 35, 0, 3
19706 ; PWR8-NEXT: vcmpgtud 2, 2, 3
19709 ; PWR9-LABEL: ugt_30_v2i64:
19711 ; PWR9-NEXT: addis 3, 2, .LCPI158_0@toc@ha
19712 ; PWR9-NEXT: vpopcntd 2, 2
19713 ; PWR9-NEXT: addi 3, 3, .LCPI158_0@toc@l
19714 ; PWR9-NEXT: lxv 35, 0(3)
19715 ; PWR9-NEXT: vcmpgtud 2, 2, 3
19717 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
19718 %3 = icmp ugt <2 x i64> %2, <i64 30, i64 30>
19719 %4 = sext <2 x i1> %3 to <2 x i64>
19723 define <2 x i64> @ult_31_v2i64(<2 x i64> %0) {
19724 ; PWR5-LABEL: ult_31_v2i64:
19726 ; PWR5-NEXT: lis 5, 21845
19727 ; PWR5-NEXT: lis 6, 13107
19728 ; PWR5-NEXT: ori 5, 5, 21845
19729 ; PWR5-NEXT: rotldi 8, 4, 63
19730 ; PWR5-NEXT: rotldi 9, 3, 63
19731 ; PWR5-NEXT: rldimi 5, 5, 32, 0
19732 ; PWR5-NEXT: and 8, 8, 5
19733 ; PWR5-NEXT: and 5, 9, 5
19734 ; PWR5-NEXT: ori 6, 6, 13107
19735 ; PWR5-NEXT: sub 3, 3, 5
19736 ; PWR5-NEXT: rldimi 6, 6, 32, 0
19737 ; PWR5-NEXT: sub 4, 4, 8
19738 ; PWR5-NEXT: and 8, 3, 6
19739 ; PWR5-NEXT: rotldi 3, 3, 62
19740 ; PWR5-NEXT: and 3, 3, 6
19741 ; PWR5-NEXT: lis 7, 3855
19742 ; PWR5-NEXT: and 5, 4, 6
19743 ; PWR5-NEXT: rotldi 4, 4, 62
19744 ; PWR5-NEXT: add 3, 8, 3
19745 ; PWR5-NEXT: lis 9, 257
19746 ; PWR5-NEXT: ori 7, 7, 3855
19747 ; PWR5-NEXT: and 4, 4, 6
19748 ; PWR5-NEXT: rldicl 6, 3, 60, 4
19749 ; PWR5-NEXT: ori 9, 9, 257
19750 ; PWR5-NEXT: rldimi 7, 7, 32, 0
19751 ; PWR5-NEXT: add 4, 5, 4
19752 ; PWR5-NEXT: add 3, 3, 6
19753 ; PWR5-NEXT: rldimi 9, 9, 32, 0
19754 ; PWR5-NEXT: rldicl 5, 4, 60, 4
19755 ; PWR5-NEXT: and 3, 3, 7
19756 ; PWR5-NEXT: add 4, 4, 5
19757 ; PWR5-NEXT: mulld 3, 3, 9
19758 ; PWR5-NEXT: and 4, 4, 7
19759 ; PWR5-NEXT: rldicl 3, 3, 8, 56
19760 ; PWR5-NEXT: li 5, 31
19761 ; PWR5-NEXT: mulld 4, 4, 9
19762 ; PWR5-NEXT: subc 6, 3, 5
19763 ; PWR5-NEXT: rldicl 4, 4, 8, 56
19764 ; PWR5-NEXT: subfe 3, 3, 3
19765 ; PWR5-NEXT: subc 5, 4, 5
19766 ; PWR5-NEXT: subfe 4, 4, 4
19769 ; PWR6-LABEL: ult_31_v2i64:
19771 ; PWR6-NEXT: lis 5, 21845
19772 ; PWR6-NEXT: lis 6, 13107
19773 ; PWR6-NEXT: ori 5, 5, 21845
19774 ; PWR6-NEXT: rotldi 8, 4, 63
19775 ; PWR6-NEXT: rotldi 9, 3, 63
19776 ; PWR6-NEXT: rldimi 5, 5, 32, 0
19777 ; PWR6-NEXT: and 8, 8, 5
19778 ; PWR6-NEXT: and 5, 9, 5
19779 ; PWR6-NEXT: ori 6, 6, 13107
19780 ; PWR6-NEXT: sub 3, 3, 5
19781 ; PWR6-NEXT: rldimi 6, 6, 32, 0
19782 ; PWR6-NEXT: sub 4, 4, 8
19783 ; PWR6-NEXT: and 8, 3, 6
19784 ; PWR6-NEXT: rotldi 3, 3, 62
19785 ; PWR6-NEXT: and 3, 3, 6
19786 ; PWR6-NEXT: lis 7, 3855
19787 ; PWR6-NEXT: and 5, 4, 6
19788 ; PWR6-NEXT: rotldi 4, 4, 62
19789 ; PWR6-NEXT: add 3, 8, 3
19790 ; PWR6-NEXT: lis 9, 257
19791 ; PWR6-NEXT: ori 7, 7, 3855
19792 ; PWR6-NEXT: and 4, 4, 6
19793 ; PWR6-NEXT: rldicl 6, 3, 60, 4
19794 ; PWR6-NEXT: ori 9, 9, 257
19795 ; PWR6-NEXT: rldimi 7, 7, 32, 0
19796 ; PWR6-NEXT: add 4, 5, 4
19797 ; PWR6-NEXT: add 3, 3, 6
19798 ; PWR6-NEXT: rldimi 9, 9, 32, 0
19799 ; PWR6-NEXT: rldicl 5, 4, 60, 4
19800 ; PWR6-NEXT: and 3, 3, 7
19801 ; PWR6-NEXT: add 4, 4, 5
19802 ; PWR6-NEXT: mulld 3, 3, 9
19803 ; PWR6-NEXT: and 4, 4, 7
19804 ; PWR6-NEXT: rldicl 3, 3, 8, 56
19805 ; PWR6-NEXT: li 5, 31
19806 ; PWR6-NEXT: mulld 4, 4, 9
19807 ; PWR6-NEXT: subc 6, 3, 5
19808 ; PWR6-NEXT: rldicl 4, 4, 8, 56
19809 ; PWR6-NEXT: subfe 3, 3, 3
19810 ; PWR6-NEXT: subc 5, 4, 5
19811 ; PWR6-NEXT: subfe 4, 4, 4
19814 ; PWR7-LABEL: ult_31_v2i64:
19816 ; PWR7-NEXT: addi 3, 1, -32
19817 ; PWR7-NEXT: li 5, -1
19818 ; PWR7-NEXT: stxvd2x 34, 0, 3
19819 ; PWR7-NEXT: ld 4, -24(1)
19820 ; PWR7-NEXT: ld 3, -32(1)
19821 ; PWR7-NEXT: popcntd 4, 4
19822 ; PWR7-NEXT: popcntd 3, 3
19823 ; PWR7-NEXT: cmpldi 4, 31
19824 ; PWR7-NEXT: li 4, 0
19825 ; PWR7-NEXT: isellt 6, 5, 4
19826 ; PWR7-NEXT: cmpldi 3, 31
19827 ; PWR7-NEXT: isellt 3, 5, 4
19828 ; PWR7-NEXT: std 6, -8(1)
19829 ; PWR7-NEXT: std 3, -16(1)
19830 ; PWR7-NEXT: addi 3, 1, -16
19831 ; PWR7-NEXT: lxvd2x 34, 0, 3
19834 ; PWR8-LABEL: ult_31_v2i64:
19836 ; PWR8-NEXT: addis 3, 2, .LCPI159_0@toc@ha
19837 ; PWR8-NEXT: vpopcntd 2, 2
19838 ; PWR8-NEXT: addi 3, 3, .LCPI159_0@toc@l
19839 ; PWR8-NEXT: lxvd2x 35, 0, 3
19840 ; PWR8-NEXT: vcmpgtud 2, 3, 2
19843 ; PWR9-LABEL: ult_31_v2i64:
19845 ; PWR9-NEXT: addis 3, 2, .LCPI159_0@toc@ha
19846 ; PWR9-NEXT: vpopcntd 2, 2
19847 ; PWR9-NEXT: addi 3, 3, .LCPI159_0@toc@l
19848 ; PWR9-NEXT: lxv 35, 0(3)
19849 ; PWR9-NEXT: vcmpgtud 2, 3, 2
19851 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
19852 %3 = icmp ult <2 x i64> %2, <i64 31, i64 31>
19853 %4 = sext <2 x i1> %3 to <2 x i64>
19857 define <2 x i64> @ugt_31_v2i64(<2 x i64> %0) {
19858 ; PWR5-LABEL: ugt_31_v2i64:
19860 ; PWR5-NEXT: lis 5, 21845
19861 ; PWR5-NEXT: lis 6, 13107
19862 ; PWR5-NEXT: ori 5, 5, 21845
19863 ; PWR5-NEXT: rotldi 8, 4, 63
19864 ; PWR5-NEXT: rotldi 9, 3, 63
19865 ; PWR5-NEXT: rldimi 5, 5, 32, 0
19866 ; PWR5-NEXT: and 8, 8, 5
19867 ; PWR5-NEXT: and 5, 9, 5
19868 ; PWR5-NEXT: ori 6, 6, 13107
19869 ; PWR5-NEXT: sub 3, 3, 5
19870 ; PWR5-NEXT: rldimi 6, 6, 32, 0
19871 ; PWR5-NEXT: sub 4, 4, 8
19872 ; PWR5-NEXT: and 8, 3, 6
19873 ; PWR5-NEXT: rotldi 3, 3, 62
19874 ; PWR5-NEXT: and 3, 3, 6
19875 ; PWR5-NEXT: lis 7, 3855
19876 ; PWR5-NEXT: and 5, 4, 6
19877 ; PWR5-NEXT: rotldi 4, 4, 62
19878 ; PWR5-NEXT: add 3, 8, 3
19879 ; PWR5-NEXT: lis 9, 257
19880 ; PWR5-NEXT: ori 7, 7, 3855
19881 ; PWR5-NEXT: and 4, 4, 6
19882 ; PWR5-NEXT: rldicl 6, 3, 60, 4
19883 ; PWR5-NEXT: ori 9, 9, 257
19884 ; PWR5-NEXT: rldimi 7, 7, 32, 0
19885 ; PWR5-NEXT: add 4, 5, 4
19886 ; PWR5-NEXT: add 3, 3, 6
19887 ; PWR5-NEXT: rldimi 9, 9, 32, 0
19888 ; PWR5-NEXT: rldicl 5, 4, 60, 4
19889 ; PWR5-NEXT: and 3, 3, 7
19890 ; PWR5-NEXT: add 4, 4, 5
19891 ; PWR5-NEXT: mulld 3, 3, 9
19892 ; PWR5-NEXT: and 4, 4, 7
19893 ; PWR5-NEXT: rldicl 3, 3, 8, 56
19894 ; PWR5-NEXT: mulld 4, 4, 9
19895 ; PWR5-NEXT: li 5, 31
19896 ; PWR5-NEXT: subfic 3, 3, 31
19897 ; PWR5-NEXT: rldicl 4, 4, 8, 56
19898 ; PWR5-NEXT: subfe 3, 5, 5
19899 ; PWR5-NEXT: subfic 4, 4, 31
19900 ; PWR5-NEXT: subfe 4, 5, 5
19903 ; PWR6-LABEL: ugt_31_v2i64:
19905 ; PWR6-NEXT: lis 5, 21845
19906 ; PWR6-NEXT: lis 6, 13107
19907 ; PWR6-NEXT: ori 5, 5, 21845
19908 ; PWR6-NEXT: rotldi 8, 4, 63
19909 ; PWR6-NEXT: rotldi 9, 3, 63
19910 ; PWR6-NEXT: rldimi 5, 5, 32, 0
19911 ; PWR6-NEXT: and 8, 8, 5
19912 ; PWR6-NEXT: and 5, 9, 5
19913 ; PWR6-NEXT: ori 6, 6, 13107
19914 ; PWR6-NEXT: sub 3, 3, 5
19915 ; PWR6-NEXT: rldimi 6, 6, 32, 0
19916 ; PWR6-NEXT: sub 4, 4, 8
19917 ; PWR6-NEXT: and 8, 3, 6
19918 ; PWR6-NEXT: rotldi 3, 3, 62
19919 ; PWR6-NEXT: and 3, 3, 6
19920 ; PWR6-NEXT: lis 7, 3855
19921 ; PWR6-NEXT: and 5, 4, 6
19922 ; PWR6-NEXT: rotldi 4, 4, 62
19923 ; PWR6-NEXT: add 3, 8, 3
19924 ; PWR6-NEXT: lis 9, 257
19925 ; PWR6-NEXT: ori 7, 7, 3855
19926 ; PWR6-NEXT: and 4, 4, 6
19927 ; PWR6-NEXT: rldicl 6, 3, 60, 4
19928 ; PWR6-NEXT: ori 9, 9, 257
19929 ; PWR6-NEXT: rldimi 7, 7, 32, 0
19930 ; PWR6-NEXT: add 4, 5, 4
19931 ; PWR6-NEXT: add 3, 3, 6
19932 ; PWR6-NEXT: rldimi 9, 9, 32, 0
19933 ; PWR6-NEXT: rldicl 5, 4, 60, 4
19934 ; PWR6-NEXT: and 3, 3, 7
19935 ; PWR6-NEXT: add 4, 4, 5
19936 ; PWR6-NEXT: mulld 3, 3, 9
19937 ; PWR6-NEXT: and 4, 4, 7
19938 ; PWR6-NEXT: rldicl 3, 3, 8, 56
19939 ; PWR6-NEXT: mulld 4, 4, 9
19940 ; PWR6-NEXT: li 5, 31
19941 ; PWR6-NEXT: subfic 3, 3, 31
19942 ; PWR6-NEXT: rldicl 4, 4, 8, 56
19943 ; PWR6-NEXT: subfe 3, 5, 5
19944 ; PWR6-NEXT: subfic 4, 4, 31
19945 ; PWR6-NEXT: subfe 4, 5, 5
19948 ; PWR7-LABEL: ugt_31_v2i64:
19950 ; PWR7-NEXT: addi 3, 1, -32
19951 ; PWR7-NEXT: li 5, -1
19952 ; PWR7-NEXT: stxvd2x 34, 0, 3
19953 ; PWR7-NEXT: ld 4, -24(1)
19954 ; PWR7-NEXT: ld 3, -32(1)
19955 ; PWR7-NEXT: popcntd 4, 4
19956 ; PWR7-NEXT: popcntd 3, 3
19957 ; PWR7-NEXT: cmpldi 4, 31
19958 ; PWR7-NEXT: li 4, 0
19959 ; PWR7-NEXT: iselgt 6, 5, 4
19960 ; PWR7-NEXT: cmpldi 3, 31
19961 ; PWR7-NEXT: iselgt 3, 5, 4
19962 ; PWR7-NEXT: std 6, -8(1)
19963 ; PWR7-NEXT: std 3, -16(1)
19964 ; PWR7-NEXT: addi 3, 1, -16
19965 ; PWR7-NEXT: lxvd2x 34, 0, 3
19968 ; PWR8-LABEL: ugt_31_v2i64:
19970 ; PWR8-NEXT: addis 3, 2, .LCPI160_0@toc@ha
19971 ; PWR8-NEXT: vpopcntd 2, 2
19972 ; PWR8-NEXT: addi 3, 3, .LCPI160_0@toc@l
19973 ; PWR8-NEXT: lxvd2x 35, 0, 3
19974 ; PWR8-NEXT: vcmpgtud 2, 2, 3
19977 ; PWR9-LABEL: ugt_31_v2i64:
19979 ; PWR9-NEXT: addis 3, 2, .LCPI160_0@toc@ha
19980 ; PWR9-NEXT: vpopcntd 2, 2
19981 ; PWR9-NEXT: addi 3, 3, .LCPI160_0@toc@l
19982 ; PWR9-NEXT: lxv 35, 0(3)
19983 ; PWR9-NEXT: vcmpgtud 2, 2, 3
19985 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
19986 %3 = icmp ugt <2 x i64> %2, <i64 31, i64 31>
19987 %4 = sext <2 x i1> %3 to <2 x i64>
19991 define <2 x i64> @ult_32_v2i64(<2 x i64> %0) {
19992 ; PWR5-LABEL: ult_32_v2i64:
19994 ; PWR5-NEXT: lis 5, 21845
19995 ; PWR5-NEXT: lis 6, 13107
19996 ; PWR5-NEXT: ori 5, 5, 21845
19997 ; PWR5-NEXT: rotldi 8, 4, 63
19998 ; PWR5-NEXT: rotldi 9, 3, 63
19999 ; PWR5-NEXT: rldimi 5, 5, 32, 0
20000 ; PWR5-NEXT: and 8, 8, 5
20001 ; PWR5-NEXT: and 5, 9, 5
20002 ; PWR5-NEXT: ori 6, 6, 13107
20003 ; PWR5-NEXT: sub 3, 3, 5
20004 ; PWR5-NEXT: rldimi 6, 6, 32, 0
20005 ; PWR5-NEXT: sub 4, 4, 8
20006 ; PWR5-NEXT: and 8, 3, 6
20007 ; PWR5-NEXT: rotldi 3, 3, 62
20008 ; PWR5-NEXT: and 3, 3, 6
20009 ; PWR5-NEXT: lis 7, 3855
20010 ; PWR5-NEXT: and 5, 4, 6
20011 ; PWR5-NEXT: rotldi 4, 4, 62
20012 ; PWR5-NEXT: add 3, 8, 3
20013 ; PWR5-NEXT: lis 9, 257
20014 ; PWR5-NEXT: ori 7, 7, 3855
20015 ; PWR5-NEXT: and 4, 4, 6
20016 ; PWR5-NEXT: rldicl 6, 3, 60, 4
20017 ; PWR5-NEXT: ori 9, 9, 257
20018 ; PWR5-NEXT: rldimi 7, 7, 32, 0
20019 ; PWR5-NEXT: add 4, 5, 4
20020 ; PWR5-NEXT: add 3, 3, 6
20021 ; PWR5-NEXT: rldimi 9, 9, 32, 0
20022 ; PWR5-NEXT: rldicl 5, 4, 60, 4
20023 ; PWR5-NEXT: and 3, 3, 7
20024 ; PWR5-NEXT: add 4, 4, 5
20025 ; PWR5-NEXT: mulld 3, 3, 9
20026 ; PWR5-NEXT: and 4, 4, 7
20027 ; PWR5-NEXT: rldicl 3, 3, 8, 56
20028 ; PWR5-NEXT: li 5, 32
20029 ; PWR5-NEXT: mulld 4, 4, 9
20030 ; PWR5-NEXT: subc 6, 3, 5
20031 ; PWR5-NEXT: rldicl 4, 4, 8, 56
20032 ; PWR5-NEXT: subfe 3, 3, 3
20033 ; PWR5-NEXT: subc 5, 4, 5
20034 ; PWR5-NEXT: subfe 4, 4, 4
20037 ; PWR6-LABEL: ult_32_v2i64:
20039 ; PWR6-NEXT: lis 5, 21845
20040 ; PWR6-NEXT: lis 6, 13107
20041 ; PWR6-NEXT: ori 5, 5, 21845
20042 ; PWR6-NEXT: rotldi 8, 4, 63
20043 ; PWR6-NEXT: rotldi 9, 3, 63
20044 ; PWR6-NEXT: rldimi 5, 5, 32, 0
20045 ; PWR6-NEXT: and 8, 8, 5
20046 ; PWR6-NEXT: and 5, 9, 5
20047 ; PWR6-NEXT: ori 6, 6, 13107
20048 ; PWR6-NEXT: sub 3, 3, 5
20049 ; PWR6-NEXT: rldimi 6, 6, 32, 0
20050 ; PWR6-NEXT: sub 4, 4, 8
20051 ; PWR6-NEXT: and 8, 3, 6
20052 ; PWR6-NEXT: rotldi 3, 3, 62
20053 ; PWR6-NEXT: and 3, 3, 6
20054 ; PWR6-NEXT: lis 7, 3855
20055 ; PWR6-NEXT: and 5, 4, 6
20056 ; PWR6-NEXT: rotldi 4, 4, 62
20057 ; PWR6-NEXT: add 3, 8, 3
20058 ; PWR6-NEXT: lis 9, 257
20059 ; PWR6-NEXT: ori 7, 7, 3855
20060 ; PWR6-NEXT: and 4, 4, 6
20061 ; PWR6-NEXT: rldicl 6, 3, 60, 4
20062 ; PWR6-NEXT: ori 9, 9, 257
20063 ; PWR6-NEXT: rldimi 7, 7, 32, 0
20064 ; PWR6-NEXT: add 4, 5, 4
20065 ; PWR6-NEXT: add 3, 3, 6
20066 ; PWR6-NEXT: rldimi 9, 9, 32, 0
20067 ; PWR6-NEXT: rldicl 5, 4, 60, 4
20068 ; PWR6-NEXT: and 3, 3, 7
20069 ; PWR6-NEXT: add 4, 4, 5
20070 ; PWR6-NEXT: mulld 3, 3, 9
20071 ; PWR6-NEXT: and 4, 4, 7
20072 ; PWR6-NEXT: rldicl 3, 3, 8, 56
20073 ; PWR6-NEXT: li 5, 32
20074 ; PWR6-NEXT: mulld 4, 4, 9
20075 ; PWR6-NEXT: subc 6, 3, 5
20076 ; PWR6-NEXT: rldicl 4, 4, 8, 56
20077 ; PWR6-NEXT: subfe 3, 3, 3
20078 ; PWR6-NEXT: subc 5, 4, 5
20079 ; PWR6-NEXT: subfe 4, 4, 4
20082 ; PWR7-LABEL: ult_32_v2i64:
20084 ; PWR7-NEXT: addi 3, 1, -32
20085 ; PWR7-NEXT: li 5, -1
20086 ; PWR7-NEXT: stxvd2x 34, 0, 3
20087 ; PWR7-NEXT: ld 4, -24(1)
20088 ; PWR7-NEXT: ld 3, -32(1)
20089 ; PWR7-NEXT: popcntd 4, 4
20090 ; PWR7-NEXT: popcntd 3, 3
20091 ; PWR7-NEXT: cmpldi 4, 32
20092 ; PWR7-NEXT: li 4, 0
20093 ; PWR7-NEXT: isellt 6, 5, 4
20094 ; PWR7-NEXT: cmpldi 3, 32
20095 ; PWR7-NEXT: isellt 3, 5, 4
20096 ; PWR7-NEXT: std 6, -8(1)
20097 ; PWR7-NEXT: std 3, -16(1)
20098 ; PWR7-NEXT: addi 3, 1, -16
20099 ; PWR7-NEXT: lxvd2x 34, 0, 3
20102 ; PWR8-LABEL: ult_32_v2i64:
20104 ; PWR8-NEXT: addis 3, 2, .LCPI161_0@toc@ha
20105 ; PWR8-NEXT: vpopcntd 2, 2
20106 ; PWR8-NEXT: addi 3, 3, .LCPI161_0@toc@l
20107 ; PWR8-NEXT: lxvd2x 35, 0, 3
20108 ; PWR8-NEXT: vcmpgtud 2, 3, 2
20111 ; PWR9-LABEL: ult_32_v2i64:
20113 ; PWR9-NEXT: addis 3, 2, .LCPI161_0@toc@ha
20114 ; PWR9-NEXT: vpopcntd 2, 2
20115 ; PWR9-NEXT: addi 3, 3, .LCPI161_0@toc@l
20116 ; PWR9-NEXT: lxv 35, 0(3)
20117 ; PWR9-NEXT: vcmpgtud 2, 3, 2
20119 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
20120 %3 = icmp ult <2 x i64> %2, <i64 32, i64 32>
20121 %4 = sext <2 x i1> %3 to <2 x i64>
20125 define <2 x i64> @ugt_32_v2i64(<2 x i64> %0) {
20126 ; PWR5-LABEL: ugt_32_v2i64:
20128 ; PWR5-NEXT: lis 5, 21845
20129 ; PWR5-NEXT: lis 6, 13107
20130 ; PWR5-NEXT: ori 5, 5, 21845
20131 ; PWR5-NEXT: rotldi 8, 4, 63
20132 ; PWR5-NEXT: rotldi 9, 3, 63
20133 ; PWR5-NEXT: rldimi 5, 5, 32, 0
20134 ; PWR5-NEXT: and 8, 8, 5
20135 ; PWR5-NEXT: and 5, 9, 5
20136 ; PWR5-NEXT: ori 6, 6, 13107
20137 ; PWR5-NEXT: sub 3, 3, 5
20138 ; PWR5-NEXT: rldimi 6, 6, 32, 0
20139 ; PWR5-NEXT: sub 4, 4, 8
20140 ; PWR5-NEXT: and 8, 3, 6
20141 ; PWR5-NEXT: rotldi 3, 3, 62
20142 ; PWR5-NEXT: and 3, 3, 6
20143 ; PWR5-NEXT: lis 7, 3855
20144 ; PWR5-NEXT: and 5, 4, 6
20145 ; PWR5-NEXT: rotldi 4, 4, 62
20146 ; PWR5-NEXT: add 3, 8, 3
20147 ; PWR5-NEXT: lis 9, 257
20148 ; PWR5-NEXT: ori 7, 7, 3855
20149 ; PWR5-NEXT: and 4, 4, 6
20150 ; PWR5-NEXT: rldicl 6, 3, 60, 4
20151 ; PWR5-NEXT: ori 9, 9, 257
20152 ; PWR5-NEXT: rldimi 7, 7, 32, 0
20153 ; PWR5-NEXT: add 4, 5, 4
20154 ; PWR5-NEXT: add 3, 3, 6
20155 ; PWR5-NEXT: rldimi 9, 9, 32, 0
20156 ; PWR5-NEXT: rldicl 5, 4, 60, 4
20157 ; PWR5-NEXT: and 3, 3, 7
20158 ; PWR5-NEXT: add 4, 4, 5
20159 ; PWR5-NEXT: mulld 3, 3, 9
20160 ; PWR5-NEXT: and 4, 4, 7
20161 ; PWR5-NEXT: rldicl 3, 3, 8, 56
20162 ; PWR5-NEXT: mulld 4, 4, 9
20163 ; PWR5-NEXT: li 5, 32
20164 ; PWR5-NEXT: subfic 3, 3, 32
20165 ; PWR5-NEXT: rldicl 4, 4, 8, 56
20166 ; PWR5-NEXT: subfe 3, 5, 5
20167 ; PWR5-NEXT: subfic 4, 4, 32
20168 ; PWR5-NEXT: subfe 4, 5, 5
20171 ; PWR6-LABEL: ugt_32_v2i64:
20173 ; PWR6-NEXT: lis 5, 21845
20174 ; PWR6-NEXT: lis 6, 13107
20175 ; PWR6-NEXT: ori 5, 5, 21845
20176 ; PWR6-NEXT: rotldi 8, 4, 63
20177 ; PWR6-NEXT: rotldi 9, 3, 63
20178 ; PWR6-NEXT: rldimi 5, 5, 32, 0
20179 ; PWR6-NEXT: and 8, 8, 5
20180 ; PWR6-NEXT: and 5, 9, 5
20181 ; PWR6-NEXT: ori 6, 6, 13107
20182 ; PWR6-NEXT: sub 3, 3, 5
20183 ; PWR6-NEXT: rldimi 6, 6, 32, 0
20184 ; PWR6-NEXT: sub 4, 4, 8
20185 ; PWR6-NEXT: and 8, 3, 6
20186 ; PWR6-NEXT: rotldi 3, 3, 62
20187 ; PWR6-NEXT: and 3, 3, 6
20188 ; PWR6-NEXT: lis 7, 3855
20189 ; PWR6-NEXT: and 5, 4, 6
20190 ; PWR6-NEXT: rotldi 4, 4, 62
20191 ; PWR6-NEXT: add 3, 8, 3
20192 ; PWR6-NEXT: lis 9, 257
20193 ; PWR6-NEXT: ori 7, 7, 3855
20194 ; PWR6-NEXT: and 4, 4, 6
20195 ; PWR6-NEXT: rldicl 6, 3, 60, 4
20196 ; PWR6-NEXT: ori 9, 9, 257
20197 ; PWR6-NEXT: rldimi 7, 7, 32, 0
20198 ; PWR6-NEXT: add 4, 5, 4
20199 ; PWR6-NEXT: add 3, 3, 6
20200 ; PWR6-NEXT: rldimi 9, 9, 32, 0
20201 ; PWR6-NEXT: rldicl 5, 4, 60, 4
20202 ; PWR6-NEXT: and 3, 3, 7
20203 ; PWR6-NEXT: add 4, 4, 5
20204 ; PWR6-NEXT: mulld 3, 3, 9
20205 ; PWR6-NEXT: and 4, 4, 7
20206 ; PWR6-NEXT: rldicl 3, 3, 8, 56
20207 ; PWR6-NEXT: mulld 4, 4, 9
20208 ; PWR6-NEXT: li 5, 32
20209 ; PWR6-NEXT: subfic 3, 3, 32
20210 ; PWR6-NEXT: rldicl 4, 4, 8, 56
20211 ; PWR6-NEXT: subfe 3, 5, 5
20212 ; PWR6-NEXT: subfic 4, 4, 32
20213 ; PWR6-NEXT: subfe 4, 5, 5
20216 ; PWR7-LABEL: ugt_32_v2i64:
20218 ; PWR7-NEXT: addi 3, 1, -32
20219 ; PWR7-NEXT: li 5, -1
20220 ; PWR7-NEXT: stxvd2x 34, 0, 3
20221 ; PWR7-NEXT: ld 4, -24(1)
20222 ; PWR7-NEXT: ld 3, -32(1)
20223 ; PWR7-NEXT: popcntd 4, 4
20224 ; PWR7-NEXT: popcntd 3, 3
20225 ; PWR7-NEXT: cmpldi 4, 32
20226 ; PWR7-NEXT: li 4, 0
20227 ; PWR7-NEXT: iselgt 6, 5, 4
20228 ; PWR7-NEXT: cmpldi 3, 32
20229 ; PWR7-NEXT: iselgt 3, 5, 4
20230 ; PWR7-NEXT: std 6, -8(1)
20231 ; PWR7-NEXT: std 3, -16(1)
20232 ; PWR7-NEXT: addi 3, 1, -16
20233 ; PWR7-NEXT: lxvd2x 34, 0, 3
20236 ; PWR8-LABEL: ugt_32_v2i64:
20238 ; PWR8-NEXT: addis 3, 2, .LCPI162_0@toc@ha
20239 ; PWR8-NEXT: vpopcntd 2, 2
20240 ; PWR8-NEXT: addi 3, 3, .LCPI162_0@toc@l
20241 ; PWR8-NEXT: lxvd2x 35, 0, 3
20242 ; PWR8-NEXT: vcmpgtud 2, 2, 3
20245 ; PWR9-LABEL: ugt_32_v2i64:
20247 ; PWR9-NEXT: addis 3, 2, .LCPI162_0@toc@ha
20248 ; PWR9-NEXT: vpopcntd 2, 2
20249 ; PWR9-NEXT: addi 3, 3, .LCPI162_0@toc@l
20250 ; PWR9-NEXT: lxv 35, 0(3)
20251 ; PWR9-NEXT: vcmpgtud 2, 2, 3
20253 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
20254 %3 = icmp ugt <2 x i64> %2, <i64 32, i64 32>
20255 %4 = sext <2 x i1> %3 to <2 x i64>
20259 define <2 x i64> @ult_33_v2i64(<2 x i64> %0) {
20260 ; PWR5-LABEL: ult_33_v2i64:
20262 ; PWR5-NEXT: lis 5, 21845
20263 ; PWR5-NEXT: lis 6, 13107
20264 ; PWR5-NEXT: ori 5, 5, 21845
20265 ; PWR5-NEXT: rotldi 8, 4, 63
20266 ; PWR5-NEXT: rotldi 9, 3, 63
20267 ; PWR5-NEXT: rldimi 5, 5, 32, 0
20268 ; PWR5-NEXT: and 8, 8, 5
20269 ; PWR5-NEXT: and 5, 9, 5
20270 ; PWR5-NEXT: ori 6, 6, 13107
20271 ; PWR5-NEXT: sub 3, 3, 5
20272 ; PWR5-NEXT: rldimi 6, 6, 32, 0
20273 ; PWR5-NEXT: sub 4, 4, 8
20274 ; PWR5-NEXT: and 8, 3, 6
20275 ; PWR5-NEXT: rotldi 3, 3, 62
20276 ; PWR5-NEXT: and 3, 3, 6
20277 ; PWR5-NEXT: lis 7, 3855
20278 ; PWR5-NEXT: and 5, 4, 6
20279 ; PWR5-NEXT: rotldi 4, 4, 62
20280 ; PWR5-NEXT: add 3, 8, 3
20281 ; PWR5-NEXT: lis 9, 257
20282 ; PWR5-NEXT: ori 7, 7, 3855
20283 ; PWR5-NEXT: and 4, 4, 6
20284 ; PWR5-NEXT: rldicl 6, 3, 60, 4
20285 ; PWR5-NEXT: ori 9, 9, 257
20286 ; PWR5-NEXT: rldimi 7, 7, 32, 0
20287 ; PWR5-NEXT: add 4, 5, 4
20288 ; PWR5-NEXT: add 3, 3, 6
20289 ; PWR5-NEXT: rldimi 9, 9, 32, 0
20290 ; PWR5-NEXT: rldicl 5, 4, 60, 4
20291 ; PWR5-NEXT: and 3, 3, 7
20292 ; PWR5-NEXT: add 4, 4, 5
20293 ; PWR5-NEXT: mulld 3, 3, 9
20294 ; PWR5-NEXT: and 4, 4, 7
20295 ; PWR5-NEXT: rldicl 3, 3, 8, 56
20296 ; PWR5-NEXT: li 5, 33
20297 ; PWR5-NEXT: mulld 4, 4, 9
20298 ; PWR5-NEXT: subc 6, 3, 5
20299 ; PWR5-NEXT: rldicl 4, 4, 8, 56
20300 ; PWR5-NEXT: subfe 3, 3, 3
20301 ; PWR5-NEXT: subc 5, 4, 5
20302 ; PWR5-NEXT: subfe 4, 4, 4
20305 ; PWR6-LABEL: ult_33_v2i64:
20307 ; PWR6-NEXT: lis 5, 21845
20308 ; PWR6-NEXT: lis 6, 13107
20309 ; PWR6-NEXT: ori 5, 5, 21845
20310 ; PWR6-NEXT: rotldi 8, 4, 63
20311 ; PWR6-NEXT: rotldi 9, 3, 63
20312 ; PWR6-NEXT: rldimi 5, 5, 32, 0
20313 ; PWR6-NEXT: and 8, 8, 5
20314 ; PWR6-NEXT: and 5, 9, 5
20315 ; PWR6-NEXT: ori 6, 6, 13107
20316 ; PWR6-NEXT: sub 3, 3, 5
20317 ; PWR6-NEXT: rldimi 6, 6, 32, 0
20318 ; PWR6-NEXT: sub 4, 4, 8
20319 ; PWR6-NEXT: and 8, 3, 6
20320 ; PWR6-NEXT: rotldi 3, 3, 62
20321 ; PWR6-NEXT: and 3, 3, 6
20322 ; PWR6-NEXT: lis 7, 3855
20323 ; PWR6-NEXT: and 5, 4, 6
20324 ; PWR6-NEXT: rotldi 4, 4, 62
20325 ; PWR6-NEXT: add 3, 8, 3
20326 ; PWR6-NEXT: lis 9, 257
20327 ; PWR6-NEXT: ori 7, 7, 3855
20328 ; PWR6-NEXT: and 4, 4, 6
20329 ; PWR6-NEXT: rldicl 6, 3, 60, 4
20330 ; PWR6-NEXT: ori 9, 9, 257
20331 ; PWR6-NEXT: rldimi 7, 7, 32, 0
20332 ; PWR6-NEXT: add 4, 5, 4
20333 ; PWR6-NEXT: add 3, 3, 6
20334 ; PWR6-NEXT: rldimi 9, 9, 32, 0
20335 ; PWR6-NEXT: rldicl 5, 4, 60, 4
20336 ; PWR6-NEXT: and 3, 3, 7
20337 ; PWR6-NEXT: add 4, 4, 5
20338 ; PWR6-NEXT: mulld 3, 3, 9
20339 ; PWR6-NEXT: and 4, 4, 7
20340 ; PWR6-NEXT: rldicl 3, 3, 8, 56
20341 ; PWR6-NEXT: li 5, 33
20342 ; PWR6-NEXT: mulld 4, 4, 9
20343 ; PWR6-NEXT: subc 6, 3, 5
20344 ; PWR6-NEXT: rldicl 4, 4, 8, 56
20345 ; PWR6-NEXT: subfe 3, 3, 3
20346 ; PWR6-NEXT: subc 5, 4, 5
20347 ; PWR6-NEXT: subfe 4, 4, 4
20350 ; PWR7-LABEL: ult_33_v2i64:
20352 ; PWR7-NEXT: addi 3, 1, -32
20353 ; PWR7-NEXT: li 5, -1
20354 ; PWR7-NEXT: stxvd2x 34, 0, 3
20355 ; PWR7-NEXT: ld 4, -24(1)
20356 ; PWR7-NEXT: ld 3, -32(1)
20357 ; PWR7-NEXT: popcntd 4, 4
20358 ; PWR7-NEXT: popcntd 3, 3
20359 ; PWR7-NEXT: cmpldi 4, 33
20360 ; PWR7-NEXT: li 4, 0
20361 ; PWR7-NEXT: isellt 6, 5, 4
20362 ; PWR7-NEXT: cmpldi 3, 33
20363 ; PWR7-NEXT: isellt 3, 5, 4
20364 ; PWR7-NEXT: std 6, -8(1)
20365 ; PWR7-NEXT: std 3, -16(1)
20366 ; PWR7-NEXT: addi 3, 1, -16
20367 ; PWR7-NEXT: lxvd2x 34, 0, 3
20370 ; PWR8-LABEL: ult_33_v2i64:
20372 ; PWR8-NEXT: addis 3, 2, .LCPI163_0@toc@ha
20373 ; PWR8-NEXT: vpopcntd 2, 2
20374 ; PWR8-NEXT: addi 3, 3, .LCPI163_0@toc@l
20375 ; PWR8-NEXT: lxvd2x 35, 0, 3
20376 ; PWR8-NEXT: vcmpgtud 2, 3, 2
20379 ; PWR9-LABEL: ult_33_v2i64:
20381 ; PWR9-NEXT: addis 3, 2, .LCPI163_0@toc@ha
20382 ; PWR9-NEXT: vpopcntd 2, 2
20383 ; PWR9-NEXT: addi 3, 3, .LCPI163_0@toc@l
20384 ; PWR9-NEXT: lxv 35, 0(3)
20385 ; PWR9-NEXT: vcmpgtud 2, 3, 2
20387 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
20388 %3 = icmp ult <2 x i64> %2, <i64 33, i64 33>
20389 %4 = sext <2 x i1> %3 to <2 x i64>
20393 define <2 x i64> @ugt_33_v2i64(<2 x i64> %0) {
20394 ; PWR5-LABEL: ugt_33_v2i64:
20396 ; PWR5-NEXT: lis 5, 21845
20397 ; PWR5-NEXT: lis 6, 13107
20398 ; PWR5-NEXT: ori 5, 5, 21845
20399 ; PWR5-NEXT: rotldi 8, 4, 63
20400 ; PWR5-NEXT: rotldi 9, 3, 63
20401 ; PWR5-NEXT: rldimi 5, 5, 32, 0
20402 ; PWR5-NEXT: and 8, 8, 5
20403 ; PWR5-NEXT: and 5, 9, 5
20404 ; PWR5-NEXT: ori 6, 6, 13107
20405 ; PWR5-NEXT: sub 3, 3, 5
20406 ; PWR5-NEXT: rldimi 6, 6, 32, 0
20407 ; PWR5-NEXT: sub 4, 4, 8
20408 ; PWR5-NEXT: and 8, 3, 6
20409 ; PWR5-NEXT: rotldi 3, 3, 62
20410 ; PWR5-NEXT: and 3, 3, 6
20411 ; PWR5-NEXT: lis 7, 3855
20412 ; PWR5-NEXT: and 5, 4, 6
20413 ; PWR5-NEXT: rotldi 4, 4, 62
20414 ; PWR5-NEXT: add 3, 8, 3
20415 ; PWR5-NEXT: lis 9, 257
20416 ; PWR5-NEXT: ori 7, 7, 3855
20417 ; PWR5-NEXT: and 4, 4, 6
20418 ; PWR5-NEXT: rldicl 6, 3, 60, 4
20419 ; PWR5-NEXT: ori 9, 9, 257
20420 ; PWR5-NEXT: rldimi 7, 7, 32, 0
20421 ; PWR5-NEXT: add 4, 5, 4
20422 ; PWR5-NEXT: add 3, 3, 6
20423 ; PWR5-NEXT: rldimi 9, 9, 32, 0
20424 ; PWR5-NEXT: rldicl 5, 4, 60, 4
20425 ; PWR5-NEXT: and 3, 3, 7
20426 ; PWR5-NEXT: add 4, 4, 5
20427 ; PWR5-NEXT: mulld 3, 3, 9
20428 ; PWR5-NEXT: and 4, 4, 7
20429 ; PWR5-NEXT: rldicl 3, 3, 8, 56
20430 ; PWR5-NEXT: mulld 4, 4, 9
20431 ; PWR5-NEXT: li 5, 33
20432 ; PWR5-NEXT: subfic 3, 3, 33
20433 ; PWR5-NEXT: rldicl 4, 4, 8, 56
20434 ; PWR5-NEXT: subfe 3, 5, 5
20435 ; PWR5-NEXT: subfic 4, 4, 33
20436 ; PWR5-NEXT: subfe 4, 5, 5
20439 ; PWR6-LABEL: ugt_33_v2i64:
20441 ; PWR6-NEXT: lis 5, 21845
20442 ; PWR6-NEXT: lis 6, 13107
20443 ; PWR6-NEXT: ori 5, 5, 21845
20444 ; PWR6-NEXT: rotldi 8, 4, 63
20445 ; PWR6-NEXT: rotldi 9, 3, 63
20446 ; PWR6-NEXT: rldimi 5, 5, 32, 0
20447 ; PWR6-NEXT: and 8, 8, 5
20448 ; PWR6-NEXT: and 5, 9, 5
20449 ; PWR6-NEXT: ori 6, 6, 13107
20450 ; PWR6-NEXT: sub 3, 3, 5
20451 ; PWR6-NEXT: rldimi 6, 6, 32, 0
20452 ; PWR6-NEXT: sub 4, 4, 8
20453 ; PWR6-NEXT: and 8, 3, 6
20454 ; PWR6-NEXT: rotldi 3, 3, 62
20455 ; PWR6-NEXT: and 3, 3, 6
20456 ; PWR6-NEXT: lis 7, 3855
20457 ; PWR6-NEXT: and 5, 4, 6
20458 ; PWR6-NEXT: rotldi 4, 4, 62
20459 ; PWR6-NEXT: add 3, 8, 3
20460 ; PWR6-NEXT: lis 9, 257
20461 ; PWR6-NEXT: ori 7, 7, 3855
20462 ; PWR6-NEXT: and 4, 4, 6
20463 ; PWR6-NEXT: rldicl 6, 3, 60, 4
20464 ; PWR6-NEXT: ori 9, 9, 257
20465 ; PWR6-NEXT: rldimi 7, 7, 32, 0
20466 ; PWR6-NEXT: add 4, 5, 4
20467 ; PWR6-NEXT: add 3, 3, 6
20468 ; PWR6-NEXT: rldimi 9, 9, 32, 0
20469 ; PWR6-NEXT: rldicl 5, 4, 60, 4
20470 ; PWR6-NEXT: and 3, 3, 7
20471 ; PWR6-NEXT: add 4, 4, 5
20472 ; PWR6-NEXT: mulld 3, 3, 9
20473 ; PWR6-NEXT: and 4, 4, 7
20474 ; PWR6-NEXT: rldicl 3, 3, 8, 56
20475 ; PWR6-NEXT: mulld 4, 4, 9
20476 ; PWR6-NEXT: li 5, 33
20477 ; PWR6-NEXT: subfic 3, 3, 33
20478 ; PWR6-NEXT: rldicl 4, 4, 8, 56
20479 ; PWR6-NEXT: subfe 3, 5, 5
20480 ; PWR6-NEXT: subfic 4, 4, 33
20481 ; PWR6-NEXT: subfe 4, 5, 5
20484 ; PWR7-LABEL: ugt_33_v2i64:
20486 ; PWR7-NEXT: addi 3, 1, -32
20487 ; PWR7-NEXT: li 5, -1
20488 ; PWR7-NEXT: stxvd2x 34, 0, 3
20489 ; PWR7-NEXT: ld 4, -24(1)
20490 ; PWR7-NEXT: ld 3, -32(1)
20491 ; PWR7-NEXT: popcntd 4, 4
20492 ; PWR7-NEXT: popcntd 3, 3
20493 ; PWR7-NEXT: cmpldi 4, 33
20494 ; PWR7-NEXT: li 4, 0
20495 ; PWR7-NEXT: iselgt 6, 5, 4
20496 ; PWR7-NEXT: cmpldi 3, 33
20497 ; PWR7-NEXT: iselgt 3, 5, 4
20498 ; PWR7-NEXT: std 6, -8(1)
20499 ; PWR7-NEXT: std 3, -16(1)
20500 ; PWR7-NEXT: addi 3, 1, -16
20501 ; PWR7-NEXT: lxvd2x 34, 0, 3
20504 ; PWR8-LABEL: ugt_33_v2i64:
20506 ; PWR8-NEXT: addis 3, 2, .LCPI164_0@toc@ha
20507 ; PWR8-NEXT: vpopcntd 2, 2
20508 ; PWR8-NEXT: addi 3, 3, .LCPI164_0@toc@l
20509 ; PWR8-NEXT: lxvd2x 35, 0, 3
20510 ; PWR8-NEXT: vcmpgtud 2, 2, 3
20513 ; PWR9-LABEL: ugt_33_v2i64:
20515 ; PWR9-NEXT: addis 3, 2, .LCPI164_0@toc@ha
20516 ; PWR9-NEXT: vpopcntd 2, 2
20517 ; PWR9-NEXT: addi 3, 3, .LCPI164_0@toc@l
20518 ; PWR9-NEXT: lxv 35, 0(3)
20519 ; PWR9-NEXT: vcmpgtud 2, 2, 3
20521 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
20522 %3 = icmp ugt <2 x i64> %2, <i64 33, i64 33>
20523 %4 = sext <2 x i1> %3 to <2 x i64>
20527 define <2 x i64> @ult_34_v2i64(<2 x i64> %0) {
20528 ; PWR5-LABEL: ult_34_v2i64:
20530 ; PWR5-NEXT: lis 5, 21845
20531 ; PWR5-NEXT: lis 6, 13107
20532 ; PWR5-NEXT: ori 5, 5, 21845
20533 ; PWR5-NEXT: rotldi 8, 4, 63
20534 ; PWR5-NEXT: rotldi 9, 3, 63
20535 ; PWR5-NEXT: rldimi 5, 5, 32, 0
20536 ; PWR5-NEXT: and 8, 8, 5
20537 ; PWR5-NEXT: and 5, 9, 5
20538 ; PWR5-NEXT: ori 6, 6, 13107
20539 ; PWR5-NEXT: sub 3, 3, 5
20540 ; PWR5-NEXT: rldimi 6, 6, 32, 0
20541 ; PWR5-NEXT: sub 4, 4, 8
20542 ; PWR5-NEXT: and 8, 3, 6
20543 ; PWR5-NEXT: rotldi 3, 3, 62
20544 ; PWR5-NEXT: and 3, 3, 6
20545 ; PWR5-NEXT: lis 7, 3855
20546 ; PWR5-NEXT: and 5, 4, 6
20547 ; PWR5-NEXT: rotldi 4, 4, 62
20548 ; PWR5-NEXT: add 3, 8, 3
20549 ; PWR5-NEXT: lis 9, 257
20550 ; PWR5-NEXT: ori 7, 7, 3855
20551 ; PWR5-NEXT: and 4, 4, 6
20552 ; PWR5-NEXT: rldicl 6, 3, 60, 4
20553 ; PWR5-NEXT: ori 9, 9, 257
20554 ; PWR5-NEXT: rldimi 7, 7, 32, 0
20555 ; PWR5-NEXT: add 4, 5, 4
20556 ; PWR5-NEXT: add 3, 3, 6
20557 ; PWR5-NEXT: rldimi 9, 9, 32, 0
20558 ; PWR5-NEXT: rldicl 5, 4, 60, 4
20559 ; PWR5-NEXT: and 3, 3, 7
20560 ; PWR5-NEXT: add 4, 4, 5
20561 ; PWR5-NEXT: mulld 3, 3, 9
20562 ; PWR5-NEXT: and 4, 4, 7
20563 ; PWR5-NEXT: rldicl 3, 3, 8, 56
20564 ; PWR5-NEXT: li 5, 34
20565 ; PWR5-NEXT: mulld 4, 4, 9
20566 ; PWR5-NEXT: subc 6, 3, 5
20567 ; PWR5-NEXT: rldicl 4, 4, 8, 56
20568 ; PWR5-NEXT: subfe 3, 3, 3
20569 ; PWR5-NEXT: subc 5, 4, 5
20570 ; PWR5-NEXT: subfe 4, 4, 4
20573 ; PWR6-LABEL: ult_34_v2i64:
20575 ; PWR6-NEXT: lis 5, 21845
20576 ; PWR6-NEXT: lis 6, 13107
20577 ; PWR6-NEXT: ori 5, 5, 21845
20578 ; PWR6-NEXT: rotldi 8, 4, 63
20579 ; PWR6-NEXT: rotldi 9, 3, 63
20580 ; PWR6-NEXT: rldimi 5, 5, 32, 0
20581 ; PWR6-NEXT: and 8, 8, 5
20582 ; PWR6-NEXT: and 5, 9, 5
20583 ; PWR6-NEXT: ori 6, 6, 13107
20584 ; PWR6-NEXT: sub 3, 3, 5
20585 ; PWR6-NEXT: rldimi 6, 6, 32, 0
20586 ; PWR6-NEXT: sub 4, 4, 8
20587 ; PWR6-NEXT: and 8, 3, 6
20588 ; PWR6-NEXT: rotldi 3, 3, 62
20589 ; PWR6-NEXT: and 3, 3, 6
20590 ; PWR6-NEXT: lis 7, 3855
20591 ; PWR6-NEXT: and 5, 4, 6
20592 ; PWR6-NEXT: rotldi 4, 4, 62
20593 ; PWR6-NEXT: add 3, 8, 3
20594 ; PWR6-NEXT: lis 9, 257
20595 ; PWR6-NEXT: ori 7, 7, 3855
20596 ; PWR6-NEXT: and 4, 4, 6
20597 ; PWR6-NEXT: rldicl 6, 3, 60, 4
20598 ; PWR6-NEXT: ori 9, 9, 257
20599 ; PWR6-NEXT: rldimi 7, 7, 32, 0
20600 ; PWR6-NEXT: add 4, 5, 4
20601 ; PWR6-NEXT: add 3, 3, 6
20602 ; PWR6-NEXT: rldimi 9, 9, 32, 0
20603 ; PWR6-NEXT: rldicl 5, 4, 60, 4
20604 ; PWR6-NEXT: and 3, 3, 7
20605 ; PWR6-NEXT: add 4, 4, 5
20606 ; PWR6-NEXT: mulld 3, 3, 9
20607 ; PWR6-NEXT: and 4, 4, 7
20608 ; PWR6-NEXT: rldicl 3, 3, 8, 56
20609 ; PWR6-NEXT: li 5, 34
20610 ; PWR6-NEXT: mulld 4, 4, 9
20611 ; PWR6-NEXT: subc 6, 3, 5
20612 ; PWR6-NEXT: rldicl 4, 4, 8, 56
20613 ; PWR6-NEXT: subfe 3, 3, 3
20614 ; PWR6-NEXT: subc 5, 4, 5
20615 ; PWR6-NEXT: subfe 4, 4, 4
20618 ; PWR7-LABEL: ult_34_v2i64:
20620 ; PWR7-NEXT: addi 3, 1, -32
20621 ; PWR7-NEXT: li 5, -1
20622 ; PWR7-NEXT: stxvd2x 34, 0, 3
20623 ; PWR7-NEXT: ld 4, -24(1)
20624 ; PWR7-NEXT: ld 3, -32(1)
20625 ; PWR7-NEXT: popcntd 4, 4
20626 ; PWR7-NEXT: popcntd 3, 3
20627 ; PWR7-NEXT: cmpldi 4, 34
20628 ; PWR7-NEXT: li 4, 0
20629 ; PWR7-NEXT: isellt 6, 5, 4
20630 ; PWR7-NEXT: cmpldi 3, 34
20631 ; PWR7-NEXT: isellt 3, 5, 4
20632 ; PWR7-NEXT: std 6, -8(1)
20633 ; PWR7-NEXT: std 3, -16(1)
20634 ; PWR7-NEXT: addi 3, 1, -16
20635 ; PWR7-NEXT: lxvd2x 34, 0, 3
20638 ; PWR8-LABEL: ult_34_v2i64:
20640 ; PWR8-NEXT: addis 3, 2, .LCPI165_0@toc@ha
20641 ; PWR8-NEXT: vpopcntd 2, 2
20642 ; PWR8-NEXT: addi 3, 3, .LCPI165_0@toc@l
20643 ; PWR8-NEXT: lxvd2x 35, 0, 3
20644 ; PWR8-NEXT: vcmpgtud 2, 3, 2
20647 ; PWR9-LABEL: ult_34_v2i64:
20649 ; PWR9-NEXT: addis 3, 2, .LCPI165_0@toc@ha
20650 ; PWR9-NEXT: vpopcntd 2, 2
20651 ; PWR9-NEXT: addi 3, 3, .LCPI165_0@toc@l
20652 ; PWR9-NEXT: lxv 35, 0(3)
20653 ; PWR9-NEXT: vcmpgtud 2, 3, 2
20655 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
20656 %3 = icmp ult <2 x i64> %2, <i64 34, i64 34>
20657 %4 = sext <2 x i1> %3 to <2 x i64>
20661 define <2 x i64> @ugt_34_v2i64(<2 x i64> %0) {
20662 ; PWR5-LABEL: ugt_34_v2i64:
20664 ; PWR5-NEXT: lis 5, 21845
20665 ; PWR5-NEXT: lis 6, 13107
20666 ; PWR5-NEXT: ori 5, 5, 21845
20667 ; PWR5-NEXT: rotldi 8, 4, 63
20668 ; PWR5-NEXT: rotldi 9, 3, 63
20669 ; PWR5-NEXT: rldimi 5, 5, 32, 0
20670 ; PWR5-NEXT: and 8, 8, 5
20671 ; PWR5-NEXT: and 5, 9, 5
20672 ; PWR5-NEXT: ori 6, 6, 13107
20673 ; PWR5-NEXT: sub 3, 3, 5
20674 ; PWR5-NEXT: rldimi 6, 6, 32, 0
20675 ; PWR5-NEXT: sub 4, 4, 8
20676 ; PWR5-NEXT: and 8, 3, 6
20677 ; PWR5-NEXT: rotldi 3, 3, 62
20678 ; PWR5-NEXT: and 3, 3, 6
20679 ; PWR5-NEXT: lis 7, 3855
20680 ; PWR5-NEXT: and 5, 4, 6
20681 ; PWR5-NEXT: rotldi 4, 4, 62
20682 ; PWR5-NEXT: add 3, 8, 3
20683 ; PWR5-NEXT: lis 9, 257
20684 ; PWR5-NEXT: ori 7, 7, 3855
20685 ; PWR5-NEXT: and 4, 4, 6
20686 ; PWR5-NEXT: rldicl 6, 3, 60, 4
20687 ; PWR5-NEXT: ori 9, 9, 257
20688 ; PWR5-NEXT: rldimi 7, 7, 32, 0
20689 ; PWR5-NEXT: add 4, 5, 4
20690 ; PWR5-NEXT: add 3, 3, 6
20691 ; PWR5-NEXT: rldimi 9, 9, 32, 0
20692 ; PWR5-NEXT: rldicl 5, 4, 60, 4
20693 ; PWR5-NEXT: and 3, 3, 7
20694 ; PWR5-NEXT: add 4, 4, 5
20695 ; PWR5-NEXT: mulld 3, 3, 9
20696 ; PWR5-NEXT: and 4, 4, 7
20697 ; PWR5-NEXT: rldicl 3, 3, 8, 56
20698 ; PWR5-NEXT: mulld 4, 4, 9
20699 ; PWR5-NEXT: li 5, 34
20700 ; PWR5-NEXT: subfic 3, 3, 34
20701 ; PWR5-NEXT: rldicl 4, 4, 8, 56
20702 ; PWR5-NEXT: subfe 3, 5, 5
20703 ; PWR5-NEXT: subfic 4, 4, 34
20704 ; PWR5-NEXT: subfe 4, 5, 5
20707 ; PWR6-LABEL: ugt_34_v2i64:
20709 ; PWR6-NEXT: lis 5, 21845
20710 ; PWR6-NEXT: lis 6, 13107
20711 ; PWR6-NEXT: ori 5, 5, 21845
20712 ; PWR6-NEXT: rotldi 8, 4, 63
20713 ; PWR6-NEXT: rotldi 9, 3, 63
20714 ; PWR6-NEXT: rldimi 5, 5, 32, 0
20715 ; PWR6-NEXT: and 8, 8, 5
20716 ; PWR6-NEXT: and 5, 9, 5
20717 ; PWR6-NEXT: ori 6, 6, 13107
20718 ; PWR6-NEXT: sub 3, 3, 5
20719 ; PWR6-NEXT: rldimi 6, 6, 32, 0
20720 ; PWR6-NEXT: sub 4, 4, 8
20721 ; PWR6-NEXT: and 8, 3, 6
20722 ; PWR6-NEXT: rotldi 3, 3, 62
20723 ; PWR6-NEXT: and 3, 3, 6
20724 ; PWR6-NEXT: lis 7, 3855
20725 ; PWR6-NEXT: and 5, 4, 6
20726 ; PWR6-NEXT: rotldi 4, 4, 62
20727 ; PWR6-NEXT: add 3, 8, 3
20728 ; PWR6-NEXT: lis 9, 257
20729 ; PWR6-NEXT: ori 7, 7, 3855
20730 ; PWR6-NEXT: and 4, 4, 6
20731 ; PWR6-NEXT: rldicl 6, 3, 60, 4
20732 ; PWR6-NEXT: ori 9, 9, 257
20733 ; PWR6-NEXT: rldimi 7, 7, 32, 0
20734 ; PWR6-NEXT: add 4, 5, 4
20735 ; PWR6-NEXT: add 3, 3, 6
20736 ; PWR6-NEXT: rldimi 9, 9, 32, 0
20737 ; PWR6-NEXT: rldicl 5, 4, 60, 4
20738 ; PWR6-NEXT: and 3, 3, 7
20739 ; PWR6-NEXT: add 4, 4, 5
20740 ; PWR6-NEXT: mulld 3, 3, 9
20741 ; PWR6-NEXT: and 4, 4, 7
20742 ; PWR6-NEXT: rldicl 3, 3, 8, 56
20743 ; PWR6-NEXT: mulld 4, 4, 9
20744 ; PWR6-NEXT: li 5, 34
20745 ; PWR6-NEXT: subfic 3, 3, 34
20746 ; PWR6-NEXT: rldicl 4, 4, 8, 56
20747 ; PWR6-NEXT: subfe 3, 5, 5
20748 ; PWR6-NEXT: subfic 4, 4, 34
20749 ; PWR6-NEXT: subfe 4, 5, 5
20752 ; PWR7-LABEL: ugt_34_v2i64:
20754 ; PWR7-NEXT: addi 3, 1, -32
20755 ; PWR7-NEXT: li 5, -1
20756 ; PWR7-NEXT: stxvd2x 34, 0, 3
20757 ; PWR7-NEXT: ld 4, -24(1)
20758 ; PWR7-NEXT: ld 3, -32(1)
20759 ; PWR7-NEXT: popcntd 4, 4
20760 ; PWR7-NEXT: popcntd 3, 3
20761 ; PWR7-NEXT: cmpldi 4, 34
20762 ; PWR7-NEXT: li 4, 0
20763 ; PWR7-NEXT: iselgt 6, 5, 4
20764 ; PWR7-NEXT: cmpldi 3, 34
20765 ; PWR7-NEXT: iselgt 3, 5, 4
20766 ; PWR7-NEXT: std 6, -8(1)
20767 ; PWR7-NEXT: std 3, -16(1)
20768 ; PWR7-NEXT: addi 3, 1, -16
20769 ; PWR7-NEXT: lxvd2x 34, 0, 3
20772 ; PWR8-LABEL: ugt_34_v2i64:
20774 ; PWR8-NEXT: addis 3, 2, .LCPI166_0@toc@ha
20775 ; PWR8-NEXT: vpopcntd 2, 2
20776 ; PWR8-NEXT: addi 3, 3, .LCPI166_0@toc@l
20777 ; PWR8-NEXT: lxvd2x 35, 0, 3
20778 ; PWR8-NEXT: vcmpgtud 2, 2, 3
20781 ; PWR9-LABEL: ugt_34_v2i64:
20783 ; PWR9-NEXT: addis 3, 2, .LCPI166_0@toc@ha
20784 ; PWR9-NEXT: vpopcntd 2, 2
20785 ; PWR9-NEXT: addi 3, 3, .LCPI166_0@toc@l
20786 ; PWR9-NEXT: lxv 35, 0(3)
20787 ; PWR9-NEXT: vcmpgtud 2, 2, 3
20789 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
20790 %3 = icmp ugt <2 x i64> %2, <i64 34, i64 34>
20791 %4 = sext <2 x i1> %3 to <2 x i64>
20795 define <2 x i64> @ult_35_v2i64(<2 x i64> %0) {
20796 ; PWR5-LABEL: ult_35_v2i64:
20798 ; PWR5-NEXT: lis 5, 21845
20799 ; PWR5-NEXT: lis 6, 13107
20800 ; PWR5-NEXT: ori 5, 5, 21845
20801 ; PWR5-NEXT: rotldi 8, 4, 63
20802 ; PWR5-NEXT: rotldi 9, 3, 63
20803 ; PWR5-NEXT: rldimi 5, 5, 32, 0
20804 ; PWR5-NEXT: and 8, 8, 5
20805 ; PWR5-NEXT: and 5, 9, 5
20806 ; PWR5-NEXT: ori 6, 6, 13107
20807 ; PWR5-NEXT: sub 3, 3, 5
20808 ; PWR5-NEXT: rldimi 6, 6, 32, 0
20809 ; PWR5-NEXT: sub 4, 4, 8
20810 ; PWR5-NEXT: and 8, 3, 6
20811 ; PWR5-NEXT: rotldi 3, 3, 62
20812 ; PWR5-NEXT: and 3, 3, 6
20813 ; PWR5-NEXT: lis 7, 3855
20814 ; PWR5-NEXT: and 5, 4, 6
20815 ; PWR5-NEXT: rotldi 4, 4, 62
20816 ; PWR5-NEXT: add 3, 8, 3
20817 ; PWR5-NEXT: lis 9, 257
20818 ; PWR5-NEXT: ori 7, 7, 3855
20819 ; PWR5-NEXT: and 4, 4, 6
20820 ; PWR5-NEXT: rldicl 6, 3, 60, 4
20821 ; PWR5-NEXT: ori 9, 9, 257
20822 ; PWR5-NEXT: rldimi 7, 7, 32, 0
20823 ; PWR5-NEXT: add 4, 5, 4
20824 ; PWR5-NEXT: add 3, 3, 6
20825 ; PWR5-NEXT: rldimi 9, 9, 32, 0
20826 ; PWR5-NEXT: rldicl 5, 4, 60, 4
20827 ; PWR5-NEXT: and 3, 3, 7
20828 ; PWR5-NEXT: add 4, 4, 5
20829 ; PWR5-NEXT: mulld 3, 3, 9
20830 ; PWR5-NEXT: and 4, 4, 7
20831 ; PWR5-NEXT: rldicl 3, 3, 8, 56
20832 ; PWR5-NEXT: li 5, 35
20833 ; PWR5-NEXT: mulld 4, 4, 9
20834 ; PWR5-NEXT: subc 6, 3, 5
20835 ; PWR5-NEXT: rldicl 4, 4, 8, 56
20836 ; PWR5-NEXT: subfe 3, 3, 3
20837 ; PWR5-NEXT: subc 5, 4, 5
20838 ; PWR5-NEXT: subfe 4, 4, 4
20841 ; PWR6-LABEL: ult_35_v2i64:
20843 ; PWR6-NEXT: lis 5, 21845
20844 ; PWR6-NEXT: lis 6, 13107
20845 ; PWR6-NEXT: ori 5, 5, 21845
20846 ; PWR6-NEXT: rotldi 8, 4, 63
20847 ; PWR6-NEXT: rotldi 9, 3, 63
20848 ; PWR6-NEXT: rldimi 5, 5, 32, 0
20849 ; PWR6-NEXT: and 8, 8, 5
20850 ; PWR6-NEXT: and 5, 9, 5
20851 ; PWR6-NEXT: ori 6, 6, 13107
20852 ; PWR6-NEXT: sub 3, 3, 5
20853 ; PWR6-NEXT: rldimi 6, 6, 32, 0
20854 ; PWR6-NEXT: sub 4, 4, 8
20855 ; PWR6-NEXT: and 8, 3, 6
20856 ; PWR6-NEXT: rotldi 3, 3, 62
20857 ; PWR6-NEXT: and 3, 3, 6
20858 ; PWR6-NEXT: lis 7, 3855
20859 ; PWR6-NEXT: and 5, 4, 6
20860 ; PWR6-NEXT: rotldi 4, 4, 62
20861 ; PWR6-NEXT: add 3, 8, 3
20862 ; PWR6-NEXT: lis 9, 257
20863 ; PWR6-NEXT: ori 7, 7, 3855
20864 ; PWR6-NEXT: and 4, 4, 6
20865 ; PWR6-NEXT: rldicl 6, 3, 60, 4
20866 ; PWR6-NEXT: ori 9, 9, 257
20867 ; PWR6-NEXT: rldimi 7, 7, 32, 0
20868 ; PWR6-NEXT: add 4, 5, 4
20869 ; PWR6-NEXT: add 3, 3, 6
20870 ; PWR6-NEXT: rldimi 9, 9, 32, 0
20871 ; PWR6-NEXT: rldicl 5, 4, 60, 4
20872 ; PWR6-NEXT: and 3, 3, 7
20873 ; PWR6-NEXT: add 4, 4, 5
20874 ; PWR6-NEXT: mulld 3, 3, 9
20875 ; PWR6-NEXT: and 4, 4, 7
20876 ; PWR6-NEXT: rldicl 3, 3, 8, 56
20877 ; PWR6-NEXT: li 5, 35
20878 ; PWR6-NEXT: mulld 4, 4, 9
20879 ; PWR6-NEXT: subc 6, 3, 5
20880 ; PWR6-NEXT: rldicl 4, 4, 8, 56
20881 ; PWR6-NEXT: subfe 3, 3, 3
20882 ; PWR6-NEXT: subc 5, 4, 5
20883 ; PWR6-NEXT: subfe 4, 4, 4
20886 ; PWR7-LABEL: ult_35_v2i64:
20888 ; PWR7-NEXT: addi 3, 1, -32
20889 ; PWR7-NEXT: li 5, -1
20890 ; PWR7-NEXT: stxvd2x 34, 0, 3
20891 ; PWR7-NEXT: ld 4, -24(1)
20892 ; PWR7-NEXT: ld 3, -32(1)
20893 ; PWR7-NEXT: popcntd 4, 4
20894 ; PWR7-NEXT: popcntd 3, 3
20895 ; PWR7-NEXT: cmpldi 4, 35
20896 ; PWR7-NEXT: li 4, 0
20897 ; PWR7-NEXT: isellt 6, 5, 4
20898 ; PWR7-NEXT: cmpldi 3, 35
20899 ; PWR7-NEXT: isellt 3, 5, 4
20900 ; PWR7-NEXT: std 6, -8(1)
20901 ; PWR7-NEXT: std 3, -16(1)
20902 ; PWR7-NEXT: addi 3, 1, -16
20903 ; PWR7-NEXT: lxvd2x 34, 0, 3
20906 ; PWR8-LABEL: ult_35_v2i64:
20908 ; PWR8-NEXT: addis 3, 2, .LCPI167_0@toc@ha
20909 ; PWR8-NEXT: vpopcntd 2, 2
20910 ; PWR8-NEXT: addi 3, 3, .LCPI167_0@toc@l
20911 ; PWR8-NEXT: lxvd2x 35, 0, 3
20912 ; PWR8-NEXT: vcmpgtud 2, 3, 2
20915 ; PWR9-LABEL: ult_35_v2i64:
20917 ; PWR9-NEXT: addis 3, 2, .LCPI167_0@toc@ha
20918 ; PWR9-NEXT: vpopcntd 2, 2
20919 ; PWR9-NEXT: addi 3, 3, .LCPI167_0@toc@l
20920 ; PWR9-NEXT: lxv 35, 0(3)
20921 ; PWR9-NEXT: vcmpgtud 2, 3, 2
20923 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
20924 %3 = icmp ult <2 x i64> %2, <i64 35, i64 35>
20925 %4 = sext <2 x i1> %3 to <2 x i64>
20929 define <2 x i64> @ugt_35_v2i64(<2 x i64> %0) {
20930 ; PWR5-LABEL: ugt_35_v2i64:
20932 ; PWR5-NEXT: lis 5, 21845
20933 ; PWR5-NEXT: lis 6, 13107
20934 ; PWR5-NEXT: ori 5, 5, 21845
20935 ; PWR5-NEXT: rotldi 8, 4, 63
20936 ; PWR5-NEXT: rotldi 9, 3, 63
20937 ; PWR5-NEXT: rldimi 5, 5, 32, 0
20938 ; PWR5-NEXT: and 8, 8, 5
20939 ; PWR5-NEXT: and 5, 9, 5
20940 ; PWR5-NEXT: ori 6, 6, 13107
20941 ; PWR5-NEXT: sub 3, 3, 5
20942 ; PWR5-NEXT: rldimi 6, 6, 32, 0
20943 ; PWR5-NEXT: sub 4, 4, 8
20944 ; PWR5-NEXT: and 8, 3, 6
20945 ; PWR5-NEXT: rotldi 3, 3, 62
20946 ; PWR5-NEXT: and 3, 3, 6
20947 ; PWR5-NEXT: lis 7, 3855
20948 ; PWR5-NEXT: and 5, 4, 6
20949 ; PWR5-NEXT: rotldi 4, 4, 62
20950 ; PWR5-NEXT: add 3, 8, 3
20951 ; PWR5-NEXT: lis 9, 257
20952 ; PWR5-NEXT: ori 7, 7, 3855
20953 ; PWR5-NEXT: and 4, 4, 6
20954 ; PWR5-NEXT: rldicl 6, 3, 60, 4
20955 ; PWR5-NEXT: ori 9, 9, 257
20956 ; PWR5-NEXT: rldimi 7, 7, 32, 0
20957 ; PWR5-NEXT: add 4, 5, 4
20958 ; PWR5-NEXT: add 3, 3, 6
20959 ; PWR5-NEXT: rldimi 9, 9, 32, 0
20960 ; PWR5-NEXT: rldicl 5, 4, 60, 4
20961 ; PWR5-NEXT: and 3, 3, 7
20962 ; PWR5-NEXT: add 4, 4, 5
20963 ; PWR5-NEXT: mulld 3, 3, 9
20964 ; PWR5-NEXT: and 4, 4, 7
20965 ; PWR5-NEXT: rldicl 3, 3, 8, 56
20966 ; PWR5-NEXT: mulld 4, 4, 9
20967 ; PWR5-NEXT: li 5, 35
20968 ; PWR5-NEXT: subfic 3, 3, 35
20969 ; PWR5-NEXT: rldicl 4, 4, 8, 56
20970 ; PWR5-NEXT: subfe 3, 5, 5
20971 ; PWR5-NEXT: subfic 4, 4, 35
20972 ; PWR5-NEXT: subfe 4, 5, 5
20975 ; PWR6-LABEL: ugt_35_v2i64:
20977 ; PWR6-NEXT: lis 5, 21845
20978 ; PWR6-NEXT: lis 6, 13107
20979 ; PWR6-NEXT: ori 5, 5, 21845
20980 ; PWR6-NEXT: rotldi 8, 4, 63
20981 ; PWR6-NEXT: rotldi 9, 3, 63
20982 ; PWR6-NEXT: rldimi 5, 5, 32, 0
20983 ; PWR6-NEXT: and 8, 8, 5
20984 ; PWR6-NEXT: and 5, 9, 5
20985 ; PWR6-NEXT: ori 6, 6, 13107
20986 ; PWR6-NEXT: sub 3, 3, 5
20987 ; PWR6-NEXT: rldimi 6, 6, 32, 0
20988 ; PWR6-NEXT: sub 4, 4, 8
20989 ; PWR6-NEXT: and 8, 3, 6
20990 ; PWR6-NEXT: rotldi 3, 3, 62
20991 ; PWR6-NEXT: and 3, 3, 6
20992 ; PWR6-NEXT: lis 7, 3855
20993 ; PWR6-NEXT: and 5, 4, 6
20994 ; PWR6-NEXT: rotldi 4, 4, 62
20995 ; PWR6-NEXT: add 3, 8, 3
20996 ; PWR6-NEXT: lis 9, 257
20997 ; PWR6-NEXT: ori 7, 7, 3855
20998 ; PWR6-NEXT: and 4, 4, 6
20999 ; PWR6-NEXT: rldicl 6, 3, 60, 4
21000 ; PWR6-NEXT: ori 9, 9, 257
21001 ; PWR6-NEXT: rldimi 7, 7, 32, 0
21002 ; PWR6-NEXT: add 4, 5, 4
21003 ; PWR6-NEXT: add 3, 3, 6
21004 ; PWR6-NEXT: rldimi 9, 9, 32, 0
21005 ; PWR6-NEXT: rldicl 5, 4, 60, 4
21006 ; PWR6-NEXT: and 3, 3, 7
21007 ; PWR6-NEXT: add 4, 4, 5
21008 ; PWR6-NEXT: mulld 3, 3, 9
21009 ; PWR6-NEXT: and 4, 4, 7
21010 ; PWR6-NEXT: rldicl 3, 3, 8, 56
21011 ; PWR6-NEXT: mulld 4, 4, 9
21012 ; PWR6-NEXT: li 5, 35
21013 ; PWR6-NEXT: subfic 3, 3, 35
21014 ; PWR6-NEXT: rldicl 4, 4, 8, 56
21015 ; PWR6-NEXT: subfe 3, 5, 5
21016 ; PWR6-NEXT: subfic 4, 4, 35
21017 ; PWR6-NEXT: subfe 4, 5, 5
21020 ; PWR7-LABEL: ugt_35_v2i64:
21022 ; PWR7-NEXT: addi 3, 1, -32
21023 ; PWR7-NEXT: li 5, -1
21024 ; PWR7-NEXT: stxvd2x 34, 0, 3
21025 ; PWR7-NEXT: ld 4, -24(1)
21026 ; PWR7-NEXT: ld 3, -32(1)
21027 ; PWR7-NEXT: popcntd 4, 4
21028 ; PWR7-NEXT: popcntd 3, 3
21029 ; PWR7-NEXT: cmpldi 4, 35
21030 ; PWR7-NEXT: li 4, 0
21031 ; PWR7-NEXT: iselgt 6, 5, 4
21032 ; PWR7-NEXT: cmpldi 3, 35
21033 ; PWR7-NEXT: iselgt 3, 5, 4
21034 ; PWR7-NEXT: std 6, -8(1)
21035 ; PWR7-NEXT: std 3, -16(1)
21036 ; PWR7-NEXT: addi 3, 1, -16
21037 ; PWR7-NEXT: lxvd2x 34, 0, 3
21040 ; PWR8-LABEL: ugt_35_v2i64:
21042 ; PWR8-NEXT: addis 3, 2, .LCPI168_0@toc@ha
21043 ; PWR8-NEXT: vpopcntd 2, 2
21044 ; PWR8-NEXT: addi 3, 3, .LCPI168_0@toc@l
21045 ; PWR8-NEXT: lxvd2x 35, 0, 3
21046 ; PWR8-NEXT: vcmpgtud 2, 2, 3
21049 ; PWR9-LABEL: ugt_35_v2i64:
21051 ; PWR9-NEXT: addis 3, 2, .LCPI168_0@toc@ha
21052 ; PWR9-NEXT: vpopcntd 2, 2
21053 ; PWR9-NEXT: addi 3, 3, .LCPI168_0@toc@l
21054 ; PWR9-NEXT: lxv 35, 0(3)
21055 ; PWR9-NEXT: vcmpgtud 2, 2, 3
21057 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
21058 %3 = icmp ugt <2 x i64> %2, <i64 35, i64 35>
21059 %4 = sext <2 x i1> %3 to <2 x i64>
21063 define <2 x i64> @ult_36_v2i64(<2 x i64> %0) {
21064 ; PWR5-LABEL: ult_36_v2i64:
21066 ; PWR5-NEXT: lis 5, 21845
21067 ; PWR5-NEXT: lis 6, 13107
21068 ; PWR5-NEXT: ori 5, 5, 21845
21069 ; PWR5-NEXT: rotldi 8, 4, 63
21070 ; PWR5-NEXT: rotldi 9, 3, 63
21071 ; PWR5-NEXT: rldimi 5, 5, 32, 0
21072 ; PWR5-NEXT: and 8, 8, 5
21073 ; PWR5-NEXT: and 5, 9, 5
21074 ; PWR5-NEXT: ori 6, 6, 13107
21075 ; PWR5-NEXT: sub 3, 3, 5
21076 ; PWR5-NEXT: rldimi 6, 6, 32, 0
21077 ; PWR5-NEXT: sub 4, 4, 8
21078 ; PWR5-NEXT: and 8, 3, 6
21079 ; PWR5-NEXT: rotldi 3, 3, 62
21080 ; PWR5-NEXT: and 3, 3, 6
21081 ; PWR5-NEXT: lis 7, 3855
21082 ; PWR5-NEXT: and 5, 4, 6
21083 ; PWR5-NEXT: rotldi 4, 4, 62
21084 ; PWR5-NEXT: add 3, 8, 3
21085 ; PWR5-NEXT: lis 9, 257
21086 ; PWR5-NEXT: ori 7, 7, 3855
21087 ; PWR5-NEXT: and 4, 4, 6
21088 ; PWR5-NEXT: rldicl 6, 3, 60, 4
21089 ; PWR5-NEXT: ori 9, 9, 257
21090 ; PWR5-NEXT: rldimi 7, 7, 32, 0
21091 ; PWR5-NEXT: add 4, 5, 4
21092 ; PWR5-NEXT: add 3, 3, 6
21093 ; PWR5-NEXT: rldimi 9, 9, 32, 0
21094 ; PWR5-NEXT: rldicl 5, 4, 60, 4
21095 ; PWR5-NEXT: and 3, 3, 7
21096 ; PWR5-NEXT: add 4, 4, 5
21097 ; PWR5-NEXT: mulld 3, 3, 9
21098 ; PWR5-NEXT: and 4, 4, 7
21099 ; PWR5-NEXT: rldicl 3, 3, 8, 56
21100 ; PWR5-NEXT: li 5, 36
21101 ; PWR5-NEXT: mulld 4, 4, 9
21102 ; PWR5-NEXT: subc 6, 3, 5
21103 ; PWR5-NEXT: rldicl 4, 4, 8, 56
21104 ; PWR5-NEXT: subfe 3, 3, 3
21105 ; PWR5-NEXT: subc 5, 4, 5
21106 ; PWR5-NEXT: subfe 4, 4, 4
21109 ; PWR6-LABEL: ult_36_v2i64:
21111 ; PWR6-NEXT: lis 5, 21845
21112 ; PWR6-NEXT: lis 6, 13107
21113 ; PWR6-NEXT: ori 5, 5, 21845
21114 ; PWR6-NEXT: rotldi 8, 4, 63
21115 ; PWR6-NEXT: rotldi 9, 3, 63
21116 ; PWR6-NEXT: rldimi 5, 5, 32, 0
21117 ; PWR6-NEXT: and 8, 8, 5
21118 ; PWR6-NEXT: and 5, 9, 5
21119 ; PWR6-NEXT: ori 6, 6, 13107
21120 ; PWR6-NEXT: sub 3, 3, 5
21121 ; PWR6-NEXT: rldimi 6, 6, 32, 0
21122 ; PWR6-NEXT: sub 4, 4, 8
21123 ; PWR6-NEXT: and 8, 3, 6
21124 ; PWR6-NEXT: rotldi 3, 3, 62
21125 ; PWR6-NEXT: and 3, 3, 6
21126 ; PWR6-NEXT: lis 7, 3855
21127 ; PWR6-NEXT: and 5, 4, 6
21128 ; PWR6-NEXT: rotldi 4, 4, 62
21129 ; PWR6-NEXT: add 3, 8, 3
21130 ; PWR6-NEXT: lis 9, 257
21131 ; PWR6-NEXT: ori 7, 7, 3855
21132 ; PWR6-NEXT: and 4, 4, 6
21133 ; PWR6-NEXT: rldicl 6, 3, 60, 4
21134 ; PWR6-NEXT: ori 9, 9, 257
21135 ; PWR6-NEXT: rldimi 7, 7, 32, 0
21136 ; PWR6-NEXT: add 4, 5, 4
21137 ; PWR6-NEXT: add 3, 3, 6
21138 ; PWR6-NEXT: rldimi 9, 9, 32, 0
21139 ; PWR6-NEXT: rldicl 5, 4, 60, 4
21140 ; PWR6-NEXT: and 3, 3, 7
21141 ; PWR6-NEXT: add 4, 4, 5
21142 ; PWR6-NEXT: mulld 3, 3, 9
21143 ; PWR6-NEXT: and 4, 4, 7
21144 ; PWR6-NEXT: rldicl 3, 3, 8, 56
21145 ; PWR6-NEXT: li 5, 36
21146 ; PWR6-NEXT: mulld 4, 4, 9
21147 ; PWR6-NEXT: subc 6, 3, 5
21148 ; PWR6-NEXT: rldicl 4, 4, 8, 56
21149 ; PWR6-NEXT: subfe 3, 3, 3
21150 ; PWR6-NEXT: subc 5, 4, 5
21151 ; PWR6-NEXT: subfe 4, 4, 4
21154 ; PWR7-LABEL: ult_36_v2i64:
21156 ; PWR7-NEXT: addi 3, 1, -32
21157 ; PWR7-NEXT: li 5, -1
21158 ; PWR7-NEXT: stxvd2x 34, 0, 3
21159 ; PWR7-NEXT: ld 4, -24(1)
21160 ; PWR7-NEXT: ld 3, -32(1)
21161 ; PWR7-NEXT: popcntd 4, 4
21162 ; PWR7-NEXT: popcntd 3, 3
21163 ; PWR7-NEXT: cmpldi 4, 36
21164 ; PWR7-NEXT: li 4, 0
21165 ; PWR7-NEXT: isellt 6, 5, 4
21166 ; PWR7-NEXT: cmpldi 3, 36
21167 ; PWR7-NEXT: isellt 3, 5, 4
21168 ; PWR7-NEXT: std 6, -8(1)
21169 ; PWR7-NEXT: std 3, -16(1)
21170 ; PWR7-NEXT: addi 3, 1, -16
21171 ; PWR7-NEXT: lxvd2x 34, 0, 3
21174 ; PWR8-LABEL: ult_36_v2i64:
21176 ; PWR8-NEXT: addis 3, 2, .LCPI169_0@toc@ha
21177 ; PWR8-NEXT: vpopcntd 2, 2
21178 ; PWR8-NEXT: addi 3, 3, .LCPI169_0@toc@l
21179 ; PWR8-NEXT: lxvd2x 35, 0, 3
21180 ; PWR8-NEXT: vcmpgtud 2, 3, 2
21183 ; PWR9-LABEL: ult_36_v2i64:
21185 ; PWR9-NEXT: addis 3, 2, .LCPI169_0@toc@ha
21186 ; PWR9-NEXT: vpopcntd 2, 2
21187 ; PWR9-NEXT: addi 3, 3, .LCPI169_0@toc@l
21188 ; PWR9-NEXT: lxv 35, 0(3)
21189 ; PWR9-NEXT: vcmpgtud 2, 3, 2
21191 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
21192 %3 = icmp ult <2 x i64> %2, <i64 36, i64 36>
21193 %4 = sext <2 x i1> %3 to <2 x i64>
21197 define <2 x i64> @ugt_36_v2i64(<2 x i64> %0) {
21198 ; PWR5-LABEL: ugt_36_v2i64:
21200 ; PWR5-NEXT: lis 5, 21845
21201 ; PWR5-NEXT: lis 6, 13107
21202 ; PWR5-NEXT: ori 5, 5, 21845
21203 ; PWR5-NEXT: rotldi 8, 4, 63
21204 ; PWR5-NEXT: rotldi 9, 3, 63
21205 ; PWR5-NEXT: rldimi 5, 5, 32, 0
21206 ; PWR5-NEXT: and 8, 8, 5
21207 ; PWR5-NEXT: and 5, 9, 5
21208 ; PWR5-NEXT: ori 6, 6, 13107
21209 ; PWR5-NEXT: sub 3, 3, 5
21210 ; PWR5-NEXT: rldimi 6, 6, 32, 0
21211 ; PWR5-NEXT: sub 4, 4, 8
21212 ; PWR5-NEXT: and 8, 3, 6
21213 ; PWR5-NEXT: rotldi 3, 3, 62
21214 ; PWR5-NEXT: and 3, 3, 6
21215 ; PWR5-NEXT: lis 7, 3855
21216 ; PWR5-NEXT: and 5, 4, 6
21217 ; PWR5-NEXT: rotldi 4, 4, 62
21218 ; PWR5-NEXT: add 3, 8, 3
21219 ; PWR5-NEXT: lis 9, 257
21220 ; PWR5-NEXT: ori 7, 7, 3855
21221 ; PWR5-NEXT: and 4, 4, 6
21222 ; PWR5-NEXT: rldicl 6, 3, 60, 4
21223 ; PWR5-NEXT: ori 9, 9, 257
21224 ; PWR5-NEXT: rldimi 7, 7, 32, 0
21225 ; PWR5-NEXT: add 4, 5, 4
21226 ; PWR5-NEXT: add 3, 3, 6
21227 ; PWR5-NEXT: rldimi 9, 9, 32, 0
21228 ; PWR5-NEXT: rldicl 5, 4, 60, 4
21229 ; PWR5-NEXT: and 3, 3, 7
21230 ; PWR5-NEXT: add 4, 4, 5
21231 ; PWR5-NEXT: mulld 3, 3, 9
21232 ; PWR5-NEXT: and 4, 4, 7
21233 ; PWR5-NEXT: rldicl 3, 3, 8, 56
21234 ; PWR5-NEXT: mulld 4, 4, 9
21235 ; PWR5-NEXT: li 5, 36
21236 ; PWR5-NEXT: subfic 3, 3, 36
21237 ; PWR5-NEXT: rldicl 4, 4, 8, 56
21238 ; PWR5-NEXT: subfe 3, 5, 5
21239 ; PWR5-NEXT: subfic 4, 4, 36
21240 ; PWR5-NEXT: subfe 4, 5, 5
21243 ; PWR6-LABEL: ugt_36_v2i64:
21245 ; PWR6-NEXT: lis 5, 21845
21246 ; PWR6-NEXT: lis 6, 13107
21247 ; PWR6-NEXT: ori 5, 5, 21845
21248 ; PWR6-NEXT: rotldi 8, 4, 63
21249 ; PWR6-NEXT: rotldi 9, 3, 63
21250 ; PWR6-NEXT: rldimi 5, 5, 32, 0
21251 ; PWR6-NEXT: and 8, 8, 5
21252 ; PWR6-NEXT: and 5, 9, 5
21253 ; PWR6-NEXT: ori 6, 6, 13107
21254 ; PWR6-NEXT: sub 3, 3, 5
21255 ; PWR6-NEXT: rldimi 6, 6, 32, 0
21256 ; PWR6-NEXT: sub 4, 4, 8
21257 ; PWR6-NEXT: and 8, 3, 6
21258 ; PWR6-NEXT: rotldi 3, 3, 62
21259 ; PWR6-NEXT: and 3, 3, 6
21260 ; PWR6-NEXT: lis 7, 3855
21261 ; PWR6-NEXT: and 5, 4, 6
21262 ; PWR6-NEXT: rotldi 4, 4, 62
21263 ; PWR6-NEXT: add 3, 8, 3
21264 ; PWR6-NEXT: lis 9, 257
21265 ; PWR6-NEXT: ori 7, 7, 3855
21266 ; PWR6-NEXT: and 4, 4, 6
21267 ; PWR6-NEXT: rldicl 6, 3, 60, 4
21268 ; PWR6-NEXT: ori 9, 9, 257
21269 ; PWR6-NEXT: rldimi 7, 7, 32, 0
21270 ; PWR6-NEXT: add 4, 5, 4
21271 ; PWR6-NEXT: add 3, 3, 6
21272 ; PWR6-NEXT: rldimi 9, 9, 32, 0
21273 ; PWR6-NEXT: rldicl 5, 4, 60, 4
21274 ; PWR6-NEXT: and 3, 3, 7
21275 ; PWR6-NEXT: add 4, 4, 5
21276 ; PWR6-NEXT: mulld 3, 3, 9
21277 ; PWR6-NEXT: and 4, 4, 7
21278 ; PWR6-NEXT: rldicl 3, 3, 8, 56
21279 ; PWR6-NEXT: mulld 4, 4, 9
21280 ; PWR6-NEXT: li 5, 36
21281 ; PWR6-NEXT: subfic 3, 3, 36
21282 ; PWR6-NEXT: rldicl 4, 4, 8, 56
21283 ; PWR6-NEXT: subfe 3, 5, 5
21284 ; PWR6-NEXT: subfic 4, 4, 36
21285 ; PWR6-NEXT: subfe 4, 5, 5
21288 ; PWR7-LABEL: ugt_36_v2i64:
21290 ; PWR7-NEXT: addi 3, 1, -32
21291 ; PWR7-NEXT: li 5, -1
21292 ; PWR7-NEXT: stxvd2x 34, 0, 3
21293 ; PWR7-NEXT: ld 4, -24(1)
21294 ; PWR7-NEXT: ld 3, -32(1)
21295 ; PWR7-NEXT: popcntd 4, 4
21296 ; PWR7-NEXT: popcntd 3, 3
21297 ; PWR7-NEXT: cmpldi 4, 36
21298 ; PWR7-NEXT: li 4, 0
21299 ; PWR7-NEXT: iselgt 6, 5, 4
21300 ; PWR7-NEXT: cmpldi 3, 36
21301 ; PWR7-NEXT: iselgt 3, 5, 4
21302 ; PWR7-NEXT: std 6, -8(1)
21303 ; PWR7-NEXT: std 3, -16(1)
21304 ; PWR7-NEXT: addi 3, 1, -16
21305 ; PWR7-NEXT: lxvd2x 34, 0, 3
21308 ; PWR8-LABEL: ugt_36_v2i64:
21310 ; PWR8-NEXT: addis 3, 2, .LCPI170_0@toc@ha
21311 ; PWR8-NEXT: vpopcntd 2, 2
21312 ; PWR8-NEXT: addi 3, 3, .LCPI170_0@toc@l
21313 ; PWR8-NEXT: lxvd2x 35, 0, 3
21314 ; PWR8-NEXT: vcmpgtud 2, 2, 3
21317 ; PWR9-LABEL: ugt_36_v2i64:
21319 ; PWR9-NEXT: addis 3, 2, .LCPI170_0@toc@ha
21320 ; PWR9-NEXT: vpopcntd 2, 2
21321 ; PWR9-NEXT: addi 3, 3, .LCPI170_0@toc@l
21322 ; PWR9-NEXT: lxv 35, 0(3)
21323 ; PWR9-NEXT: vcmpgtud 2, 2, 3
21325 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
21326 %3 = icmp ugt <2 x i64> %2, <i64 36, i64 36>
21327 %4 = sext <2 x i1> %3 to <2 x i64>
21331 define <2 x i64> @ult_37_v2i64(<2 x i64> %0) {
21332 ; PWR5-LABEL: ult_37_v2i64:
21334 ; PWR5-NEXT: lis 5, 21845
21335 ; PWR5-NEXT: lis 6, 13107
21336 ; PWR5-NEXT: ori 5, 5, 21845
21337 ; PWR5-NEXT: rotldi 8, 4, 63
21338 ; PWR5-NEXT: rotldi 9, 3, 63
21339 ; PWR5-NEXT: rldimi 5, 5, 32, 0
21340 ; PWR5-NEXT: and 8, 8, 5
21341 ; PWR5-NEXT: and 5, 9, 5
21342 ; PWR5-NEXT: ori 6, 6, 13107
21343 ; PWR5-NEXT: sub 3, 3, 5
21344 ; PWR5-NEXT: rldimi 6, 6, 32, 0
21345 ; PWR5-NEXT: sub 4, 4, 8
21346 ; PWR5-NEXT: and 8, 3, 6
21347 ; PWR5-NEXT: rotldi 3, 3, 62
21348 ; PWR5-NEXT: and 3, 3, 6
21349 ; PWR5-NEXT: lis 7, 3855
21350 ; PWR5-NEXT: and 5, 4, 6
21351 ; PWR5-NEXT: rotldi 4, 4, 62
21352 ; PWR5-NEXT: add 3, 8, 3
21353 ; PWR5-NEXT: lis 9, 257
21354 ; PWR5-NEXT: ori 7, 7, 3855
21355 ; PWR5-NEXT: and 4, 4, 6
21356 ; PWR5-NEXT: rldicl 6, 3, 60, 4
21357 ; PWR5-NEXT: ori 9, 9, 257
21358 ; PWR5-NEXT: rldimi 7, 7, 32, 0
21359 ; PWR5-NEXT: add 4, 5, 4
21360 ; PWR5-NEXT: add 3, 3, 6
21361 ; PWR5-NEXT: rldimi 9, 9, 32, 0
21362 ; PWR5-NEXT: rldicl 5, 4, 60, 4
21363 ; PWR5-NEXT: and 3, 3, 7
21364 ; PWR5-NEXT: add 4, 4, 5
21365 ; PWR5-NEXT: mulld 3, 3, 9
21366 ; PWR5-NEXT: and 4, 4, 7
21367 ; PWR5-NEXT: rldicl 3, 3, 8, 56
21368 ; PWR5-NEXT: li 5, 37
21369 ; PWR5-NEXT: mulld 4, 4, 9
21370 ; PWR5-NEXT: subc 6, 3, 5
21371 ; PWR5-NEXT: rldicl 4, 4, 8, 56
21372 ; PWR5-NEXT: subfe 3, 3, 3
21373 ; PWR5-NEXT: subc 5, 4, 5
21374 ; PWR5-NEXT: subfe 4, 4, 4
21377 ; PWR6-LABEL: ult_37_v2i64:
21379 ; PWR6-NEXT: lis 5, 21845
21380 ; PWR6-NEXT: lis 6, 13107
21381 ; PWR6-NEXT: ori 5, 5, 21845
21382 ; PWR6-NEXT: rotldi 8, 4, 63
21383 ; PWR6-NEXT: rotldi 9, 3, 63
21384 ; PWR6-NEXT: rldimi 5, 5, 32, 0
21385 ; PWR6-NEXT: and 8, 8, 5
21386 ; PWR6-NEXT: and 5, 9, 5
21387 ; PWR6-NEXT: ori 6, 6, 13107
21388 ; PWR6-NEXT: sub 3, 3, 5
21389 ; PWR6-NEXT: rldimi 6, 6, 32, 0
21390 ; PWR6-NEXT: sub 4, 4, 8
21391 ; PWR6-NEXT: and 8, 3, 6
21392 ; PWR6-NEXT: rotldi 3, 3, 62
21393 ; PWR6-NEXT: and 3, 3, 6
21394 ; PWR6-NEXT: lis 7, 3855
21395 ; PWR6-NEXT: and 5, 4, 6
21396 ; PWR6-NEXT: rotldi 4, 4, 62
21397 ; PWR6-NEXT: add 3, 8, 3
21398 ; PWR6-NEXT: lis 9, 257
21399 ; PWR6-NEXT: ori 7, 7, 3855
21400 ; PWR6-NEXT: and 4, 4, 6
21401 ; PWR6-NEXT: rldicl 6, 3, 60, 4
21402 ; PWR6-NEXT: ori 9, 9, 257
21403 ; PWR6-NEXT: rldimi 7, 7, 32, 0
21404 ; PWR6-NEXT: add 4, 5, 4
21405 ; PWR6-NEXT: add 3, 3, 6
21406 ; PWR6-NEXT: rldimi 9, 9, 32, 0
21407 ; PWR6-NEXT: rldicl 5, 4, 60, 4
21408 ; PWR6-NEXT: and 3, 3, 7
21409 ; PWR6-NEXT: add 4, 4, 5
21410 ; PWR6-NEXT: mulld 3, 3, 9
21411 ; PWR6-NEXT: and 4, 4, 7
21412 ; PWR6-NEXT: rldicl 3, 3, 8, 56
21413 ; PWR6-NEXT: li 5, 37
21414 ; PWR6-NEXT: mulld 4, 4, 9
21415 ; PWR6-NEXT: subc 6, 3, 5
21416 ; PWR6-NEXT: rldicl 4, 4, 8, 56
21417 ; PWR6-NEXT: subfe 3, 3, 3
21418 ; PWR6-NEXT: subc 5, 4, 5
21419 ; PWR6-NEXT: subfe 4, 4, 4
21422 ; PWR7-LABEL: ult_37_v2i64:
21424 ; PWR7-NEXT: addi 3, 1, -32
21425 ; PWR7-NEXT: li 5, -1
21426 ; PWR7-NEXT: stxvd2x 34, 0, 3
21427 ; PWR7-NEXT: ld 4, -24(1)
21428 ; PWR7-NEXT: ld 3, -32(1)
21429 ; PWR7-NEXT: popcntd 4, 4
21430 ; PWR7-NEXT: popcntd 3, 3
21431 ; PWR7-NEXT: cmpldi 4, 37
21432 ; PWR7-NEXT: li 4, 0
21433 ; PWR7-NEXT: isellt 6, 5, 4
21434 ; PWR7-NEXT: cmpldi 3, 37
21435 ; PWR7-NEXT: isellt 3, 5, 4
21436 ; PWR7-NEXT: std 6, -8(1)
21437 ; PWR7-NEXT: std 3, -16(1)
21438 ; PWR7-NEXT: addi 3, 1, -16
21439 ; PWR7-NEXT: lxvd2x 34, 0, 3
21442 ; PWR8-LABEL: ult_37_v2i64:
21444 ; PWR8-NEXT: addis 3, 2, .LCPI171_0@toc@ha
21445 ; PWR8-NEXT: vpopcntd 2, 2
21446 ; PWR8-NEXT: addi 3, 3, .LCPI171_0@toc@l
21447 ; PWR8-NEXT: lxvd2x 35, 0, 3
21448 ; PWR8-NEXT: vcmpgtud 2, 3, 2
21451 ; PWR9-LABEL: ult_37_v2i64:
21453 ; PWR9-NEXT: addis 3, 2, .LCPI171_0@toc@ha
21454 ; PWR9-NEXT: vpopcntd 2, 2
21455 ; PWR9-NEXT: addi 3, 3, .LCPI171_0@toc@l
21456 ; PWR9-NEXT: lxv 35, 0(3)
21457 ; PWR9-NEXT: vcmpgtud 2, 3, 2
21459 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
21460 %3 = icmp ult <2 x i64> %2, <i64 37, i64 37>
21461 %4 = sext <2 x i1> %3 to <2 x i64>
21465 define <2 x i64> @ugt_37_v2i64(<2 x i64> %0) {
21466 ; PWR5-LABEL: ugt_37_v2i64:
21468 ; PWR5-NEXT: lis 5, 21845
21469 ; PWR5-NEXT: lis 6, 13107
21470 ; PWR5-NEXT: ori 5, 5, 21845
21471 ; PWR5-NEXT: rotldi 8, 4, 63
21472 ; PWR5-NEXT: rotldi 9, 3, 63
21473 ; PWR5-NEXT: rldimi 5, 5, 32, 0
21474 ; PWR5-NEXT: and 8, 8, 5
21475 ; PWR5-NEXT: and 5, 9, 5
21476 ; PWR5-NEXT: ori 6, 6, 13107
21477 ; PWR5-NEXT: sub 3, 3, 5
21478 ; PWR5-NEXT: rldimi 6, 6, 32, 0
21479 ; PWR5-NEXT: sub 4, 4, 8
21480 ; PWR5-NEXT: and 8, 3, 6
21481 ; PWR5-NEXT: rotldi 3, 3, 62
21482 ; PWR5-NEXT: and 3, 3, 6
21483 ; PWR5-NEXT: lis 7, 3855
21484 ; PWR5-NEXT: and 5, 4, 6
21485 ; PWR5-NEXT: rotldi 4, 4, 62
21486 ; PWR5-NEXT: add 3, 8, 3
21487 ; PWR5-NEXT: lis 9, 257
21488 ; PWR5-NEXT: ori 7, 7, 3855
21489 ; PWR5-NEXT: and 4, 4, 6
21490 ; PWR5-NEXT: rldicl 6, 3, 60, 4
21491 ; PWR5-NEXT: ori 9, 9, 257
21492 ; PWR5-NEXT: rldimi 7, 7, 32, 0
21493 ; PWR5-NEXT: add 4, 5, 4
21494 ; PWR5-NEXT: add 3, 3, 6
21495 ; PWR5-NEXT: rldimi 9, 9, 32, 0
21496 ; PWR5-NEXT: rldicl 5, 4, 60, 4
21497 ; PWR5-NEXT: and 3, 3, 7
21498 ; PWR5-NEXT: add 4, 4, 5
21499 ; PWR5-NEXT: mulld 3, 3, 9
21500 ; PWR5-NEXT: and 4, 4, 7
21501 ; PWR5-NEXT: rldicl 3, 3, 8, 56
21502 ; PWR5-NEXT: mulld 4, 4, 9
21503 ; PWR5-NEXT: li 5, 37
21504 ; PWR5-NEXT: subfic 3, 3, 37
21505 ; PWR5-NEXT: rldicl 4, 4, 8, 56
21506 ; PWR5-NEXT: subfe 3, 5, 5
21507 ; PWR5-NEXT: subfic 4, 4, 37
21508 ; PWR5-NEXT: subfe 4, 5, 5
21511 ; PWR6-LABEL: ugt_37_v2i64:
21513 ; PWR6-NEXT: lis 5, 21845
21514 ; PWR6-NEXT: lis 6, 13107
21515 ; PWR6-NEXT: ori 5, 5, 21845
21516 ; PWR6-NEXT: rotldi 8, 4, 63
21517 ; PWR6-NEXT: rotldi 9, 3, 63
21518 ; PWR6-NEXT: rldimi 5, 5, 32, 0
21519 ; PWR6-NEXT: and 8, 8, 5
21520 ; PWR6-NEXT: and 5, 9, 5
21521 ; PWR6-NEXT: ori 6, 6, 13107
21522 ; PWR6-NEXT: sub 3, 3, 5
21523 ; PWR6-NEXT: rldimi 6, 6, 32, 0
21524 ; PWR6-NEXT: sub 4, 4, 8
21525 ; PWR6-NEXT: and 8, 3, 6
21526 ; PWR6-NEXT: rotldi 3, 3, 62
21527 ; PWR6-NEXT: and 3, 3, 6
21528 ; PWR6-NEXT: lis 7, 3855
21529 ; PWR6-NEXT: and 5, 4, 6
21530 ; PWR6-NEXT: rotldi 4, 4, 62
21531 ; PWR6-NEXT: add 3, 8, 3
21532 ; PWR6-NEXT: lis 9, 257
21533 ; PWR6-NEXT: ori 7, 7, 3855
21534 ; PWR6-NEXT: and 4, 4, 6
21535 ; PWR6-NEXT: rldicl 6, 3, 60, 4
21536 ; PWR6-NEXT: ori 9, 9, 257
21537 ; PWR6-NEXT: rldimi 7, 7, 32, 0
21538 ; PWR6-NEXT: add 4, 5, 4
21539 ; PWR6-NEXT: add 3, 3, 6
21540 ; PWR6-NEXT: rldimi 9, 9, 32, 0
21541 ; PWR6-NEXT: rldicl 5, 4, 60, 4
21542 ; PWR6-NEXT: and 3, 3, 7
21543 ; PWR6-NEXT: add 4, 4, 5
21544 ; PWR6-NEXT: mulld 3, 3, 9
21545 ; PWR6-NEXT: and 4, 4, 7
21546 ; PWR6-NEXT: rldicl 3, 3, 8, 56
21547 ; PWR6-NEXT: mulld 4, 4, 9
21548 ; PWR6-NEXT: li 5, 37
21549 ; PWR6-NEXT: subfic 3, 3, 37
21550 ; PWR6-NEXT: rldicl 4, 4, 8, 56
21551 ; PWR6-NEXT: subfe 3, 5, 5
21552 ; PWR6-NEXT: subfic 4, 4, 37
21553 ; PWR6-NEXT: subfe 4, 5, 5
21556 ; PWR7-LABEL: ugt_37_v2i64:
21558 ; PWR7-NEXT: addi 3, 1, -32
21559 ; PWR7-NEXT: li 5, -1
21560 ; PWR7-NEXT: stxvd2x 34, 0, 3
21561 ; PWR7-NEXT: ld 4, -24(1)
21562 ; PWR7-NEXT: ld 3, -32(1)
21563 ; PWR7-NEXT: popcntd 4, 4
21564 ; PWR7-NEXT: popcntd 3, 3
21565 ; PWR7-NEXT: cmpldi 4, 37
21566 ; PWR7-NEXT: li 4, 0
21567 ; PWR7-NEXT: iselgt 6, 5, 4
21568 ; PWR7-NEXT: cmpldi 3, 37
21569 ; PWR7-NEXT: iselgt 3, 5, 4
21570 ; PWR7-NEXT: std 6, -8(1)
21571 ; PWR7-NEXT: std 3, -16(1)
21572 ; PWR7-NEXT: addi 3, 1, -16
21573 ; PWR7-NEXT: lxvd2x 34, 0, 3
21576 ; PWR8-LABEL: ugt_37_v2i64:
21578 ; PWR8-NEXT: addis 3, 2, .LCPI172_0@toc@ha
21579 ; PWR8-NEXT: vpopcntd 2, 2
21580 ; PWR8-NEXT: addi 3, 3, .LCPI172_0@toc@l
21581 ; PWR8-NEXT: lxvd2x 35, 0, 3
21582 ; PWR8-NEXT: vcmpgtud 2, 2, 3
21585 ; PWR9-LABEL: ugt_37_v2i64:
21587 ; PWR9-NEXT: addis 3, 2, .LCPI172_0@toc@ha
21588 ; PWR9-NEXT: vpopcntd 2, 2
21589 ; PWR9-NEXT: addi 3, 3, .LCPI172_0@toc@l
21590 ; PWR9-NEXT: lxv 35, 0(3)
21591 ; PWR9-NEXT: vcmpgtud 2, 2, 3
21593 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
21594 %3 = icmp ugt <2 x i64> %2, <i64 37, i64 37>
21595 %4 = sext <2 x i1> %3 to <2 x i64>
21599 define <2 x i64> @ult_38_v2i64(<2 x i64> %0) {
21600 ; PWR5-LABEL: ult_38_v2i64:
21602 ; PWR5-NEXT: lis 5, 21845
21603 ; PWR5-NEXT: lis 6, 13107
21604 ; PWR5-NEXT: ori 5, 5, 21845
21605 ; PWR5-NEXT: rotldi 8, 4, 63
21606 ; PWR5-NEXT: rotldi 9, 3, 63
21607 ; PWR5-NEXT: rldimi 5, 5, 32, 0
21608 ; PWR5-NEXT: and 8, 8, 5
21609 ; PWR5-NEXT: and 5, 9, 5
21610 ; PWR5-NEXT: ori 6, 6, 13107
21611 ; PWR5-NEXT: sub 3, 3, 5
21612 ; PWR5-NEXT: rldimi 6, 6, 32, 0
21613 ; PWR5-NEXT: sub 4, 4, 8
21614 ; PWR5-NEXT: and 8, 3, 6
21615 ; PWR5-NEXT: rotldi 3, 3, 62
21616 ; PWR5-NEXT: and 3, 3, 6
21617 ; PWR5-NEXT: lis 7, 3855
21618 ; PWR5-NEXT: and 5, 4, 6
21619 ; PWR5-NEXT: rotldi 4, 4, 62
21620 ; PWR5-NEXT: add 3, 8, 3
21621 ; PWR5-NEXT: lis 9, 257
21622 ; PWR5-NEXT: ori 7, 7, 3855
21623 ; PWR5-NEXT: and 4, 4, 6
21624 ; PWR5-NEXT: rldicl 6, 3, 60, 4
21625 ; PWR5-NEXT: ori 9, 9, 257
21626 ; PWR5-NEXT: rldimi 7, 7, 32, 0
21627 ; PWR5-NEXT: add 4, 5, 4
21628 ; PWR5-NEXT: add 3, 3, 6
21629 ; PWR5-NEXT: rldimi 9, 9, 32, 0
21630 ; PWR5-NEXT: rldicl 5, 4, 60, 4
21631 ; PWR5-NEXT: and 3, 3, 7
21632 ; PWR5-NEXT: add 4, 4, 5
21633 ; PWR5-NEXT: mulld 3, 3, 9
21634 ; PWR5-NEXT: and 4, 4, 7
21635 ; PWR5-NEXT: rldicl 3, 3, 8, 56
21636 ; PWR5-NEXT: li 5, 38
21637 ; PWR5-NEXT: mulld 4, 4, 9
21638 ; PWR5-NEXT: subc 6, 3, 5
21639 ; PWR5-NEXT: rldicl 4, 4, 8, 56
21640 ; PWR5-NEXT: subfe 3, 3, 3
21641 ; PWR5-NEXT: subc 5, 4, 5
21642 ; PWR5-NEXT: subfe 4, 4, 4
21645 ; PWR6-LABEL: ult_38_v2i64:
21647 ; PWR6-NEXT: lis 5, 21845
21648 ; PWR6-NEXT: lis 6, 13107
21649 ; PWR6-NEXT: ori 5, 5, 21845
21650 ; PWR6-NEXT: rotldi 8, 4, 63
21651 ; PWR6-NEXT: rotldi 9, 3, 63
21652 ; PWR6-NEXT: rldimi 5, 5, 32, 0
21653 ; PWR6-NEXT: and 8, 8, 5
21654 ; PWR6-NEXT: and 5, 9, 5
21655 ; PWR6-NEXT: ori 6, 6, 13107
21656 ; PWR6-NEXT: sub 3, 3, 5
21657 ; PWR6-NEXT: rldimi 6, 6, 32, 0
21658 ; PWR6-NEXT: sub 4, 4, 8
21659 ; PWR6-NEXT: and 8, 3, 6
21660 ; PWR6-NEXT: rotldi 3, 3, 62
21661 ; PWR6-NEXT: and 3, 3, 6
21662 ; PWR6-NEXT: lis 7, 3855
21663 ; PWR6-NEXT: and 5, 4, 6
21664 ; PWR6-NEXT: rotldi 4, 4, 62
21665 ; PWR6-NEXT: add 3, 8, 3
21666 ; PWR6-NEXT: lis 9, 257
21667 ; PWR6-NEXT: ori 7, 7, 3855
21668 ; PWR6-NEXT: and 4, 4, 6
21669 ; PWR6-NEXT: rldicl 6, 3, 60, 4
21670 ; PWR6-NEXT: ori 9, 9, 257
21671 ; PWR6-NEXT: rldimi 7, 7, 32, 0
21672 ; PWR6-NEXT: add 4, 5, 4
21673 ; PWR6-NEXT: add 3, 3, 6
21674 ; PWR6-NEXT: rldimi 9, 9, 32, 0
21675 ; PWR6-NEXT: rldicl 5, 4, 60, 4
21676 ; PWR6-NEXT: and 3, 3, 7
21677 ; PWR6-NEXT: add 4, 4, 5
21678 ; PWR6-NEXT: mulld 3, 3, 9
21679 ; PWR6-NEXT: and 4, 4, 7
21680 ; PWR6-NEXT: rldicl 3, 3, 8, 56
21681 ; PWR6-NEXT: li 5, 38
21682 ; PWR6-NEXT: mulld 4, 4, 9
21683 ; PWR6-NEXT: subc 6, 3, 5
21684 ; PWR6-NEXT: rldicl 4, 4, 8, 56
21685 ; PWR6-NEXT: subfe 3, 3, 3
21686 ; PWR6-NEXT: subc 5, 4, 5
21687 ; PWR6-NEXT: subfe 4, 4, 4
21690 ; PWR7-LABEL: ult_38_v2i64:
21692 ; PWR7-NEXT: addi 3, 1, -32
21693 ; PWR7-NEXT: li 5, -1
21694 ; PWR7-NEXT: stxvd2x 34, 0, 3
21695 ; PWR7-NEXT: ld 4, -24(1)
21696 ; PWR7-NEXT: ld 3, -32(1)
21697 ; PWR7-NEXT: popcntd 4, 4
21698 ; PWR7-NEXT: popcntd 3, 3
21699 ; PWR7-NEXT: cmpldi 4, 38
21700 ; PWR7-NEXT: li 4, 0
21701 ; PWR7-NEXT: isellt 6, 5, 4
21702 ; PWR7-NEXT: cmpldi 3, 38
21703 ; PWR7-NEXT: isellt 3, 5, 4
21704 ; PWR7-NEXT: std 6, -8(1)
21705 ; PWR7-NEXT: std 3, -16(1)
21706 ; PWR7-NEXT: addi 3, 1, -16
21707 ; PWR7-NEXT: lxvd2x 34, 0, 3
21710 ; PWR8-LABEL: ult_38_v2i64:
21712 ; PWR8-NEXT: addis 3, 2, .LCPI173_0@toc@ha
21713 ; PWR8-NEXT: vpopcntd 2, 2
21714 ; PWR8-NEXT: addi 3, 3, .LCPI173_0@toc@l
21715 ; PWR8-NEXT: lxvd2x 35, 0, 3
21716 ; PWR8-NEXT: vcmpgtud 2, 3, 2
21719 ; PWR9-LABEL: ult_38_v2i64:
21721 ; PWR9-NEXT: addis 3, 2, .LCPI173_0@toc@ha
21722 ; PWR9-NEXT: vpopcntd 2, 2
21723 ; PWR9-NEXT: addi 3, 3, .LCPI173_0@toc@l
21724 ; PWR9-NEXT: lxv 35, 0(3)
21725 ; PWR9-NEXT: vcmpgtud 2, 3, 2
21727 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
21728 %3 = icmp ult <2 x i64> %2, <i64 38, i64 38>
21729 %4 = sext <2 x i1> %3 to <2 x i64>
21733 define <2 x i64> @ugt_38_v2i64(<2 x i64> %0) {
21734 ; PWR5-LABEL: ugt_38_v2i64:
21736 ; PWR5-NEXT: lis 5, 21845
21737 ; PWR5-NEXT: lis 6, 13107
21738 ; PWR5-NEXT: ori 5, 5, 21845
21739 ; PWR5-NEXT: rotldi 8, 4, 63
21740 ; PWR5-NEXT: rotldi 9, 3, 63
21741 ; PWR5-NEXT: rldimi 5, 5, 32, 0
21742 ; PWR5-NEXT: and 8, 8, 5
21743 ; PWR5-NEXT: and 5, 9, 5
21744 ; PWR5-NEXT: ori 6, 6, 13107
21745 ; PWR5-NEXT: sub 3, 3, 5
21746 ; PWR5-NEXT: rldimi 6, 6, 32, 0
21747 ; PWR5-NEXT: sub 4, 4, 8
21748 ; PWR5-NEXT: and 8, 3, 6
21749 ; PWR5-NEXT: rotldi 3, 3, 62
21750 ; PWR5-NEXT: and 3, 3, 6
21751 ; PWR5-NEXT: lis 7, 3855
21752 ; PWR5-NEXT: and 5, 4, 6
21753 ; PWR5-NEXT: rotldi 4, 4, 62
21754 ; PWR5-NEXT: add 3, 8, 3
21755 ; PWR5-NEXT: lis 9, 257
21756 ; PWR5-NEXT: ori 7, 7, 3855
21757 ; PWR5-NEXT: and 4, 4, 6
21758 ; PWR5-NEXT: rldicl 6, 3, 60, 4
21759 ; PWR5-NEXT: ori 9, 9, 257
21760 ; PWR5-NEXT: rldimi 7, 7, 32, 0
21761 ; PWR5-NEXT: add 4, 5, 4
21762 ; PWR5-NEXT: add 3, 3, 6
21763 ; PWR5-NEXT: rldimi 9, 9, 32, 0
21764 ; PWR5-NEXT: rldicl 5, 4, 60, 4
21765 ; PWR5-NEXT: and 3, 3, 7
21766 ; PWR5-NEXT: add 4, 4, 5
21767 ; PWR5-NEXT: mulld 3, 3, 9
21768 ; PWR5-NEXT: and 4, 4, 7
21769 ; PWR5-NEXT: rldicl 3, 3, 8, 56
21770 ; PWR5-NEXT: mulld 4, 4, 9
21771 ; PWR5-NEXT: li 5, 38
21772 ; PWR5-NEXT: subfic 3, 3, 38
21773 ; PWR5-NEXT: rldicl 4, 4, 8, 56
21774 ; PWR5-NEXT: subfe 3, 5, 5
21775 ; PWR5-NEXT: subfic 4, 4, 38
21776 ; PWR5-NEXT: subfe 4, 5, 5
21779 ; PWR6-LABEL: ugt_38_v2i64:
21781 ; PWR6-NEXT: lis 5, 21845
21782 ; PWR6-NEXT: lis 6, 13107
21783 ; PWR6-NEXT: ori 5, 5, 21845
21784 ; PWR6-NEXT: rotldi 8, 4, 63
21785 ; PWR6-NEXT: rotldi 9, 3, 63
21786 ; PWR6-NEXT: rldimi 5, 5, 32, 0
21787 ; PWR6-NEXT: and 8, 8, 5
21788 ; PWR6-NEXT: and 5, 9, 5
21789 ; PWR6-NEXT: ori 6, 6, 13107
21790 ; PWR6-NEXT: sub 3, 3, 5
21791 ; PWR6-NEXT: rldimi 6, 6, 32, 0
21792 ; PWR6-NEXT: sub 4, 4, 8
21793 ; PWR6-NEXT: and 8, 3, 6
21794 ; PWR6-NEXT: rotldi 3, 3, 62
21795 ; PWR6-NEXT: and 3, 3, 6
21796 ; PWR6-NEXT: lis 7, 3855
21797 ; PWR6-NEXT: and 5, 4, 6
21798 ; PWR6-NEXT: rotldi 4, 4, 62
21799 ; PWR6-NEXT: add 3, 8, 3
21800 ; PWR6-NEXT: lis 9, 257
21801 ; PWR6-NEXT: ori 7, 7, 3855
21802 ; PWR6-NEXT: and 4, 4, 6
21803 ; PWR6-NEXT: rldicl 6, 3, 60, 4
21804 ; PWR6-NEXT: ori 9, 9, 257
21805 ; PWR6-NEXT: rldimi 7, 7, 32, 0
21806 ; PWR6-NEXT: add 4, 5, 4
21807 ; PWR6-NEXT: add 3, 3, 6
21808 ; PWR6-NEXT: rldimi 9, 9, 32, 0
21809 ; PWR6-NEXT: rldicl 5, 4, 60, 4
21810 ; PWR6-NEXT: and 3, 3, 7
21811 ; PWR6-NEXT: add 4, 4, 5
21812 ; PWR6-NEXT: mulld 3, 3, 9
21813 ; PWR6-NEXT: and 4, 4, 7
21814 ; PWR6-NEXT: rldicl 3, 3, 8, 56
21815 ; PWR6-NEXT: mulld 4, 4, 9
21816 ; PWR6-NEXT: li 5, 38
21817 ; PWR6-NEXT: subfic 3, 3, 38
21818 ; PWR6-NEXT: rldicl 4, 4, 8, 56
21819 ; PWR6-NEXT: subfe 3, 5, 5
21820 ; PWR6-NEXT: subfic 4, 4, 38
21821 ; PWR6-NEXT: subfe 4, 5, 5
21824 ; PWR7-LABEL: ugt_38_v2i64:
21826 ; PWR7-NEXT: addi 3, 1, -32
21827 ; PWR7-NEXT: li 5, -1
21828 ; PWR7-NEXT: stxvd2x 34, 0, 3
21829 ; PWR7-NEXT: ld 4, -24(1)
21830 ; PWR7-NEXT: ld 3, -32(1)
21831 ; PWR7-NEXT: popcntd 4, 4
21832 ; PWR7-NEXT: popcntd 3, 3
21833 ; PWR7-NEXT: cmpldi 4, 38
21834 ; PWR7-NEXT: li 4, 0
21835 ; PWR7-NEXT: iselgt 6, 5, 4
21836 ; PWR7-NEXT: cmpldi 3, 38
21837 ; PWR7-NEXT: iselgt 3, 5, 4
21838 ; PWR7-NEXT: std 6, -8(1)
21839 ; PWR7-NEXT: std 3, -16(1)
21840 ; PWR7-NEXT: addi 3, 1, -16
21841 ; PWR7-NEXT: lxvd2x 34, 0, 3
21844 ; PWR8-LABEL: ugt_38_v2i64:
21846 ; PWR8-NEXT: addis 3, 2, .LCPI174_0@toc@ha
21847 ; PWR8-NEXT: vpopcntd 2, 2
21848 ; PWR8-NEXT: addi 3, 3, .LCPI174_0@toc@l
21849 ; PWR8-NEXT: lxvd2x 35, 0, 3
21850 ; PWR8-NEXT: vcmpgtud 2, 2, 3
21853 ; PWR9-LABEL: ugt_38_v2i64:
21855 ; PWR9-NEXT: addis 3, 2, .LCPI174_0@toc@ha
21856 ; PWR9-NEXT: vpopcntd 2, 2
21857 ; PWR9-NEXT: addi 3, 3, .LCPI174_0@toc@l
21858 ; PWR9-NEXT: lxv 35, 0(3)
21859 ; PWR9-NEXT: vcmpgtud 2, 2, 3
21861 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
21862 %3 = icmp ugt <2 x i64> %2, <i64 38, i64 38>
21863 %4 = sext <2 x i1> %3 to <2 x i64>
21867 define <2 x i64> @ult_39_v2i64(<2 x i64> %0) {
21868 ; PWR5-LABEL: ult_39_v2i64:
21870 ; PWR5-NEXT: lis 5, 21845
21871 ; PWR5-NEXT: lis 6, 13107
21872 ; PWR5-NEXT: ori 5, 5, 21845
21873 ; PWR5-NEXT: rotldi 8, 4, 63
21874 ; PWR5-NEXT: rotldi 9, 3, 63
21875 ; PWR5-NEXT: rldimi 5, 5, 32, 0
21876 ; PWR5-NEXT: and 8, 8, 5
21877 ; PWR5-NEXT: and 5, 9, 5
21878 ; PWR5-NEXT: ori 6, 6, 13107
21879 ; PWR5-NEXT: sub 3, 3, 5
21880 ; PWR5-NEXT: rldimi 6, 6, 32, 0
21881 ; PWR5-NEXT: sub 4, 4, 8
21882 ; PWR5-NEXT: and 8, 3, 6
21883 ; PWR5-NEXT: rotldi 3, 3, 62
21884 ; PWR5-NEXT: and 3, 3, 6
21885 ; PWR5-NEXT: lis 7, 3855
21886 ; PWR5-NEXT: and 5, 4, 6
21887 ; PWR5-NEXT: rotldi 4, 4, 62
21888 ; PWR5-NEXT: add 3, 8, 3
21889 ; PWR5-NEXT: lis 9, 257
21890 ; PWR5-NEXT: ori 7, 7, 3855
21891 ; PWR5-NEXT: and 4, 4, 6
21892 ; PWR5-NEXT: rldicl 6, 3, 60, 4
21893 ; PWR5-NEXT: ori 9, 9, 257
21894 ; PWR5-NEXT: rldimi 7, 7, 32, 0
21895 ; PWR5-NEXT: add 4, 5, 4
21896 ; PWR5-NEXT: add 3, 3, 6
21897 ; PWR5-NEXT: rldimi 9, 9, 32, 0
21898 ; PWR5-NEXT: rldicl 5, 4, 60, 4
21899 ; PWR5-NEXT: and 3, 3, 7
21900 ; PWR5-NEXT: add 4, 4, 5
21901 ; PWR5-NEXT: mulld 3, 3, 9
21902 ; PWR5-NEXT: and 4, 4, 7
21903 ; PWR5-NEXT: rldicl 3, 3, 8, 56
21904 ; PWR5-NEXT: li 5, 39
21905 ; PWR5-NEXT: mulld 4, 4, 9
21906 ; PWR5-NEXT: subc 6, 3, 5
21907 ; PWR5-NEXT: rldicl 4, 4, 8, 56
21908 ; PWR5-NEXT: subfe 3, 3, 3
21909 ; PWR5-NEXT: subc 5, 4, 5
21910 ; PWR5-NEXT: subfe 4, 4, 4
21913 ; PWR6-LABEL: ult_39_v2i64:
21915 ; PWR6-NEXT: lis 5, 21845
21916 ; PWR6-NEXT: lis 6, 13107
21917 ; PWR6-NEXT: ori 5, 5, 21845
21918 ; PWR6-NEXT: rotldi 8, 4, 63
21919 ; PWR6-NEXT: rotldi 9, 3, 63
21920 ; PWR6-NEXT: rldimi 5, 5, 32, 0
21921 ; PWR6-NEXT: and 8, 8, 5
21922 ; PWR6-NEXT: and 5, 9, 5
21923 ; PWR6-NEXT: ori 6, 6, 13107
21924 ; PWR6-NEXT: sub 3, 3, 5
21925 ; PWR6-NEXT: rldimi 6, 6, 32, 0
21926 ; PWR6-NEXT: sub 4, 4, 8
21927 ; PWR6-NEXT: and 8, 3, 6
21928 ; PWR6-NEXT: rotldi 3, 3, 62
21929 ; PWR6-NEXT: and 3, 3, 6
21930 ; PWR6-NEXT: lis 7, 3855
21931 ; PWR6-NEXT: and 5, 4, 6
21932 ; PWR6-NEXT: rotldi 4, 4, 62
21933 ; PWR6-NEXT: add 3, 8, 3
21934 ; PWR6-NEXT: lis 9, 257
21935 ; PWR6-NEXT: ori 7, 7, 3855
21936 ; PWR6-NEXT: and 4, 4, 6
21937 ; PWR6-NEXT: rldicl 6, 3, 60, 4
21938 ; PWR6-NEXT: ori 9, 9, 257
21939 ; PWR6-NEXT: rldimi 7, 7, 32, 0
21940 ; PWR6-NEXT: add 4, 5, 4
21941 ; PWR6-NEXT: add 3, 3, 6
21942 ; PWR6-NEXT: rldimi 9, 9, 32, 0
21943 ; PWR6-NEXT: rldicl 5, 4, 60, 4
21944 ; PWR6-NEXT: and 3, 3, 7
21945 ; PWR6-NEXT: add 4, 4, 5
21946 ; PWR6-NEXT: mulld 3, 3, 9
21947 ; PWR6-NEXT: and 4, 4, 7
21948 ; PWR6-NEXT: rldicl 3, 3, 8, 56
21949 ; PWR6-NEXT: li 5, 39
21950 ; PWR6-NEXT: mulld 4, 4, 9
21951 ; PWR6-NEXT: subc 6, 3, 5
21952 ; PWR6-NEXT: rldicl 4, 4, 8, 56
21953 ; PWR6-NEXT: subfe 3, 3, 3
21954 ; PWR6-NEXT: subc 5, 4, 5
21955 ; PWR6-NEXT: subfe 4, 4, 4
21958 ; PWR7-LABEL: ult_39_v2i64:
21960 ; PWR7-NEXT: addi 3, 1, -32
21961 ; PWR7-NEXT: li 5, -1
21962 ; PWR7-NEXT: stxvd2x 34, 0, 3
21963 ; PWR7-NEXT: ld 4, -24(1)
21964 ; PWR7-NEXT: ld 3, -32(1)
21965 ; PWR7-NEXT: popcntd 4, 4
21966 ; PWR7-NEXT: popcntd 3, 3
21967 ; PWR7-NEXT: cmpldi 4, 39
21968 ; PWR7-NEXT: li 4, 0
21969 ; PWR7-NEXT: isellt 6, 5, 4
21970 ; PWR7-NEXT: cmpldi 3, 39
21971 ; PWR7-NEXT: isellt 3, 5, 4
21972 ; PWR7-NEXT: std 6, -8(1)
21973 ; PWR7-NEXT: std 3, -16(1)
21974 ; PWR7-NEXT: addi 3, 1, -16
21975 ; PWR7-NEXT: lxvd2x 34, 0, 3
21978 ; PWR8-LABEL: ult_39_v2i64:
21980 ; PWR8-NEXT: addis 3, 2, .LCPI175_0@toc@ha
21981 ; PWR8-NEXT: vpopcntd 2, 2
21982 ; PWR8-NEXT: addi 3, 3, .LCPI175_0@toc@l
21983 ; PWR8-NEXT: lxvd2x 35, 0, 3
21984 ; PWR8-NEXT: vcmpgtud 2, 3, 2
21987 ; PWR9-LABEL: ult_39_v2i64:
21989 ; PWR9-NEXT: addis 3, 2, .LCPI175_0@toc@ha
21990 ; PWR9-NEXT: vpopcntd 2, 2
21991 ; PWR9-NEXT: addi 3, 3, .LCPI175_0@toc@l
21992 ; PWR9-NEXT: lxv 35, 0(3)
21993 ; PWR9-NEXT: vcmpgtud 2, 3, 2
21995 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
21996 %3 = icmp ult <2 x i64> %2, <i64 39, i64 39>
21997 %4 = sext <2 x i1> %3 to <2 x i64>
22001 define <2 x i64> @ugt_39_v2i64(<2 x i64> %0) {
22002 ; PWR5-LABEL: ugt_39_v2i64:
22004 ; PWR5-NEXT: lis 5, 21845
22005 ; PWR5-NEXT: lis 6, 13107
22006 ; PWR5-NEXT: ori 5, 5, 21845
22007 ; PWR5-NEXT: rotldi 8, 4, 63
22008 ; PWR5-NEXT: rotldi 9, 3, 63
22009 ; PWR5-NEXT: rldimi 5, 5, 32, 0
22010 ; PWR5-NEXT: and 8, 8, 5
22011 ; PWR5-NEXT: and 5, 9, 5
22012 ; PWR5-NEXT: ori 6, 6, 13107
22013 ; PWR5-NEXT: sub 3, 3, 5
22014 ; PWR5-NEXT: rldimi 6, 6, 32, 0
22015 ; PWR5-NEXT: sub 4, 4, 8
22016 ; PWR5-NEXT: and 8, 3, 6
22017 ; PWR5-NEXT: rotldi 3, 3, 62
22018 ; PWR5-NEXT: and 3, 3, 6
22019 ; PWR5-NEXT: lis 7, 3855
22020 ; PWR5-NEXT: and 5, 4, 6
22021 ; PWR5-NEXT: rotldi 4, 4, 62
22022 ; PWR5-NEXT: add 3, 8, 3
22023 ; PWR5-NEXT: lis 9, 257
22024 ; PWR5-NEXT: ori 7, 7, 3855
22025 ; PWR5-NEXT: and 4, 4, 6
22026 ; PWR5-NEXT: rldicl 6, 3, 60, 4
22027 ; PWR5-NEXT: ori 9, 9, 257
22028 ; PWR5-NEXT: rldimi 7, 7, 32, 0
22029 ; PWR5-NEXT: add 4, 5, 4
22030 ; PWR5-NEXT: add 3, 3, 6
22031 ; PWR5-NEXT: rldimi 9, 9, 32, 0
22032 ; PWR5-NEXT: rldicl 5, 4, 60, 4
22033 ; PWR5-NEXT: and 3, 3, 7
22034 ; PWR5-NEXT: add 4, 4, 5
22035 ; PWR5-NEXT: mulld 3, 3, 9
22036 ; PWR5-NEXT: and 4, 4, 7
22037 ; PWR5-NEXT: rldicl 3, 3, 8, 56
22038 ; PWR5-NEXT: mulld 4, 4, 9
22039 ; PWR5-NEXT: li 5, 39
22040 ; PWR5-NEXT: subfic 3, 3, 39
22041 ; PWR5-NEXT: rldicl 4, 4, 8, 56
22042 ; PWR5-NEXT: subfe 3, 5, 5
22043 ; PWR5-NEXT: subfic 4, 4, 39
22044 ; PWR5-NEXT: subfe 4, 5, 5
22047 ; PWR6-LABEL: ugt_39_v2i64:
22049 ; PWR6-NEXT: lis 5, 21845
22050 ; PWR6-NEXT: lis 6, 13107
22051 ; PWR6-NEXT: ori 5, 5, 21845
22052 ; PWR6-NEXT: rotldi 8, 4, 63
22053 ; PWR6-NEXT: rotldi 9, 3, 63
22054 ; PWR6-NEXT: rldimi 5, 5, 32, 0
22055 ; PWR6-NEXT: and 8, 8, 5
22056 ; PWR6-NEXT: and 5, 9, 5
22057 ; PWR6-NEXT: ori 6, 6, 13107
22058 ; PWR6-NEXT: sub 3, 3, 5
22059 ; PWR6-NEXT: rldimi 6, 6, 32, 0
22060 ; PWR6-NEXT: sub 4, 4, 8
22061 ; PWR6-NEXT: and 8, 3, 6
22062 ; PWR6-NEXT: rotldi 3, 3, 62
22063 ; PWR6-NEXT: and 3, 3, 6
22064 ; PWR6-NEXT: lis 7, 3855
22065 ; PWR6-NEXT: and 5, 4, 6
22066 ; PWR6-NEXT: rotldi 4, 4, 62
22067 ; PWR6-NEXT: add 3, 8, 3
22068 ; PWR6-NEXT: lis 9, 257
22069 ; PWR6-NEXT: ori 7, 7, 3855
22070 ; PWR6-NEXT: and 4, 4, 6
22071 ; PWR6-NEXT: rldicl 6, 3, 60, 4
22072 ; PWR6-NEXT: ori 9, 9, 257
22073 ; PWR6-NEXT: rldimi 7, 7, 32, 0
22074 ; PWR6-NEXT: add 4, 5, 4
22075 ; PWR6-NEXT: add 3, 3, 6
22076 ; PWR6-NEXT: rldimi 9, 9, 32, 0
22077 ; PWR6-NEXT: rldicl 5, 4, 60, 4
22078 ; PWR6-NEXT: and 3, 3, 7
22079 ; PWR6-NEXT: add 4, 4, 5
22080 ; PWR6-NEXT: mulld 3, 3, 9
22081 ; PWR6-NEXT: and 4, 4, 7
22082 ; PWR6-NEXT: rldicl 3, 3, 8, 56
22083 ; PWR6-NEXT: mulld 4, 4, 9
22084 ; PWR6-NEXT: li 5, 39
22085 ; PWR6-NEXT: subfic 3, 3, 39
22086 ; PWR6-NEXT: rldicl 4, 4, 8, 56
22087 ; PWR6-NEXT: subfe 3, 5, 5
22088 ; PWR6-NEXT: subfic 4, 4, 39
22089 ; PWR6-NEXT: subfe 4, 5, 5
22092 ; PWR7-LABEL: ugt_39_v2i64:
22094 ; PWR7-NEXT: addi 3, 1, -32
22095 ; PWR7-NEXT: li 5, -1
22096 ; PWR7-NEXT: stxvd2x 34, 0, 3
22097 ; PWR7-NEXT: ld 4, -24(1)
22098 ; PWR7-NEXT: ld 3, -32(1)
22099 ; PWR7-NEXT: popcntd 4, 4
22100 ; PWR7-NEXT: popcntd 3, 3
22101 ; PWR7-NEXT: cmpldi 4, 39
22102 ; PWR7-NEXT: li 4, 0
22103 ; PWR7-NEXT: iselgt 6, 5, 4
22104 ; PWR7-NEXT: cmpldi 3, 39
22105 ; PWR7-NEXT: iselgt 3, 5, 4
22106 ; PWR7-NEXT: std 6, -8(1)
22107 ; PWR7-NEXT: std 3, -16(1)
22108 ; PWR7-NEXT: addi 3, 1, -16
22109 ; PWR7-NEXT: lxvd2x 34, 0, 3
22112 ; PWR8-LABEL: ugt_39_v2i64:
22114 ; PWR8-NEXT: addis 3, 2, .LCPI176_0@toc@ha
22115 ; PWR8-NEXT: vpopcntd 2, 2
22116 ; PWR8-NEXT: addi 3, 3, .LCPI176_0@toc@l
22117 ; PWR8-NEXT: lxvd2x 35, 0, 3
22118 ; PWR8-NEXT: vcmpgtud 2, 2, 3
22121 ; PWR9-LABEL: ugt_39_v2i64:
22123 ; PWR9-NEXT: addis 3, 2, .LCPI176_0@toc@ha
22124 ; PWR9-NEXT: vpopcntd 2, 2
22125 ; PWR9-NEXT: addi 3, 3, .LCPI176_0@toc@l
22126 ; PWR9-NEXT: lxv 35, 0(3)
22127 ; PWR9-NEXT: vcmpgtud 2, 2, 3
22129 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
22130 %3 = icmp ugt <2 x i64> %2, <i64 39, i64 39>
22131 %4 = sext <2 x i1> %3 to <2 x i64>
22135 define <2 x i64> @ult_40_v2i64(<2 x i64> %0) {
22136 ; PWR5-LABEL: ult_40_v2i64:
22138 ; PWR5-NEXT: lis 5, 21845
22139 ; PWR5-NEXT: lis 6, 13107
22140 ; PWR5-NEXT: ori 5, 5, 21845
22141 ; PWR5-NEXT: rotldi 8, 4, 63
22142 ; PWR5-NEXT: rotldi 9, 3, 63
22143 ; PWR5-NEXT: rldimi 5, 5, 32, 0
22144 ; PWR5-NEXT: and 8, 8, 5
22145 ; PWR5-NEXT: and 5, 9, 5
22146 ; PWR5-NEXT: ori 6, 6, 13107
22147 ; PWR5-NEXT: sub 3, 3, 5
22148 ; PWR5-NEXT: rldimi 6, 6, 32, 0
22149 ; PWR5-NEXT: sub 4, 4, 8
22150 ; PWR5-NEXT: and 8, 3, 6
22151 ; PWR5-NEXT: rotldi 3, 3, 62
22152 ; PWR5-NEXT: and 3, 3, 6
22153 ; PWR5-NEXT: lis 7, 3855
22154 ; PWR5-NEXT: and 5, 4, 6
22155 ; PWR5-NEXT: rotldi 4, 4, 62
22156 ; PWR5-NEXT: add 3, 8, 3
22157 ; PWR5-NEXT: lis 9, 257
22158 ; PWR5-NEXT: ori 7, 7, 3855
22159 ; PWR5-NEXT: and 4, 4, 6
22160 ; PWR5-NEXT: rldicl 6, 3, 60, 4
22161 ; PWR5-NEXT: ori 9, 9, 257
22162 ; PWR5-NEXT: rldimi 7, 7, 32, 0
22163 ; PWR5-NEXT: add 4, 5, 4
22164 ; PWR5-NEXT: add 3, 3, 6
22165 ; PWR5-NEXT: rldimi 9, 9, 32, 0
22166 ; PWR5-NEXT: rldicl 5, 4, 60, 4
22167 ; PWR5-NEXT: and 3, 3, 7
22168 ; PWR5-NEXT: add 4, 4, 5
22169 ; PWR5-NEXT: mulld 3, 3, 9
22170 ; PWR5-NEXT: and 4, 4, 7
22171 ; PWR5-NEXT: rldicl 3, 3, 8, 56
22172 ; PWR5-NEXT: li 5, 40
22173 ; PWR5-NEXT: mulld 4, 4, 9
22174 ; PWR5-NEXT: subc 6, 3, 5
22175 ; PWR5-NEXT: rldicl 4, 4, 8, 56
22176 ; PWR5-NEXT: subfe 3, 3, 3
22177 ; PWR5-NEXT: subc 5, 4, 5
22178 ; PWR5-NEXT: subfe 4, 4, 4
22181 ; PWR6-LABEL: ult_40_v2i64:
22183 ; PWR6-NEXT: lis 5, 21845
22184 ; PWR6-NEXT: lis 6, 13107
22185 ; PWR6-NEXT: ori 5, 5, 21845
22186 ; PWR6-NEXT: rotldi 8, 4, 63
22187 ; PWR6-NEXT: rotldi 9, 3, 63
22188 ; PWR6-NEXT: rldimi 5, 5, 32, 0
22189 ; PWR6-NEXT: and 8, 8, 5
22190 ; PWR6-NEXT: and 5, 9, 5
22191 ; PWR6-NEXT: ori 6, 6, 13107
22192 ; PWR6-NEXT: sub 3, 3, 5
22193 ; PWR6-NEXT: rldimi 6, 6, 32, 0
22194 ; PWR6-NEXT: sub 4, 4, 8
22195 ; PWR6-NEXT: and 8, 3, 6
22196 ; PWR6-NEXT: rotldi 3, 3, 62
22197 ; PWR6-NEXT: and 3, 3, 6
22198 ; PWR6-NEXT: lis 7, 3855
22199 ; PWR6-NEXT: and 5, 4, 6
22200 ; PWR6-NEXT: rotldi 4, 4, 62
22201 ; PWR6-NEXT: add 3, 8, 3
22202 ; PWR6-NEXT: lis 9, 257
22203 ; PWR6-NEXT: ori 7, 7, 3855
22204 ; PWR6-NEXT: and 4, 4, 6
22205 ; PWR6-NEXT: rldicl 6, 3, 60, 4
22206 ; PWR6-NEXT: ori 9, 9, 257
22207 ; PWR6-NEXT: rldimi 7, 7, 32, 0
22208 ; PWR6-NEXT: add 4, 5, 4
22209 ; PWR6-NEXT: add 3, 3, 6
22210 ; PWR6-NEXT: rldimi 9, 9, 32, 0
22211 ; PWR6-NEXT: rldicl 5, 4, 60, 4
22212 ; PWR6-NEXT: and 3, 3, 7
22213 ; PWR6-NEXT: add 4, 4, 5
22214 ; PWR6-NEXT: mulld 3, 3, 9
22215 ; PWR6-NEXT: and 4, 4, 7
22216 ; PWR6-NEXT: rldicl 3, 3, 8, 56
22217 ; PWR6-NEXT: li 5, 40
22218 ; PWR6-NEXT: mulld 4, 4, 9
22219 ; PWR6-NEXT: subc 6, 3, 5
22220 ; PWR6-NEXT: rldicl 4, 4, 8, 56
22221 ; PWR6-NEXT: subfe 3, 3, 3
22222 ; PWR6-NEXT: subc 5, 4, 5
22223 ; PWR6-NEXT: subfe 4, 4, 4
22226 ; PWR7-LABEL: ult_40_v2i64:
22228 ; PWR7-NEXT: addi 3, 1, -32
22229 ; PWR7-NEXT: li 5, -1
22230 ; PWR7-NEXT: stxvd2x 34, 0, 3
22231 ; PWR7-NEXT: ld 4, -24(1)
22232 ; PWR7-NEXT: ld 3, -32(1)
22233 ; PWR7-NEXT: popcntd 4, 4
22234 ; PWR7-NEXT: popcntd 3, 3
22235 ; PWR7-NEXT: cmpldi 4, 40
22236 ; PWR7-NEXT: li 4, 0
22237 ; PWR7-NEXT: isellt 6, 5, 4
22238 ; PWR7-NEXT: cmpldi 3, 40
22239 ; PWR7-NEXT: isellt 3, 5, 4
22240 ; PWR7-NEXT: std 6, -8(1)
22241 ; PWR7-NEXT: std 3, -16(1)
22242 ; PWR7-NEXT: addi 3, 1, -16
22243 ; PWR7-NEXT: lxvd2x 34, 0, 3
22246 ; PWR8-LABEL: ult_40_v2i64:
22248 ; PWR8-NEXT: addis 3, 2, .LCPI177_0@toc@ha
22249 ; PWR8-NEXT: vpopcntd 2, 2
22250 ; PWR8-NEXT: addi 3, 3, .LCPI177_0@toc@l
22251 ; PWR8-NEXT: lxvd2x 35, 0, 3
22252 ; PWR8-NEXT: vcmpgtud 2, 3, 2
22255 ; PWR9-LABEL: ult_40_v2i64:
22257 ; PWR9-NEXT: addis 3, 2, .LCPI177_0@toc@ha
22258 ; PWR9-NEXT: vpopcntd 2, 2
22259 ; PWR9-NEXT: addi 3, 3, .LCPI177_0@toc@l
22260 ; PWR9-NEXT: lxv 35, 0(3)
22261 ; PWR9-NEXT: vcmpgtud 2, 3, 2
22263 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
22264 %3 = icmp ult <2 x i64> %2, <i64 40, i64 40>
22265 %4 = sext <2 x i1> %3 to <2 x i64>
22269 define <2 x i64> @ugt_40_v2i64(<2 x i64> %0) {
22270 ; PWR5-LABEL: ugt_40_v2i64:
22272 ; PWR5-NEXT: lis 5, 21845
22273 ; PWR5-NEXT: lis 6, 13107
22274 ; PWR5-NEXT: ori 5, 5, 21845
22275 ; PWR5-NEXT: rotldi 8, 4, 63
22276 ; PWR5-NEXT: rotldi 9, 3, 63
22277 ; PWR5-NEXT: rldimi 5, 5, 32, 0
22278 ; PWR5-NEXT: and 8, 8, 5
22279 ; PWR5-NEXT: and 5, 9, 5
22280 ; PWR5-NEXT: ori 6, 6, 13107
22281 ; PWR5-NEXT: sub 3, 3, 5
22282 ; PWR5-NEXT: rldimi 6, 6, 32, 0
22283 ; PWR5-NEXT: sub 4, 4, 8
22284 ; PWR5-NEXT: and 8, 3, 6
22285 ; PWR5-NEXT: rotldi 3, 3, 62
22286 ; PWR5-NEXT: and 3, 3, 6
22287 ; PWR5-NEXT: lis 7, 3855
22288 ; PWR5-NEXT: and 5, 4, 6
22289 ; PWR5-NEXT: rotldi 4, 4, 62
22290 ; PWR5-NEXT: add 3, 8, 3
22291 ; PWR5-NEXT: lis 9, 257
22292 ; PWR5-NEXT: ori 7, 7, 3855
22293 ; PWR5-NEXT: and 4, 4, 6
22294 ; PWR5-NEXT: rldicl 6, 3, 60, 4
22295 ; PWR5-NEXT: ori 9, 9, 257
22296 ; PWR5-NEXT: rldimi 7, 7, 32, 0
22297 ; PWR5-NEXT: add 4, 5, 4
22298 ; PWR5-NEXT: add 3, 3, 6
22299 ; PWR5-NEXT: rldimi 9, 9, 32, 0
22300 ; PWR5-NEXT: rldicl 5, 4, 60, 4
22301 ; PWR5-NEXT: and 3, 3, 7
22302 ; PWR5-NEXT: add 4, 4, 5
22303 ; PWR5-NEXT: mulld 3, 3, 9
22304 ; PWR5-NEXT: and 4, 4, 7
22305 ; PWR5-NEXT: rldicl 3, 3, 8, 56
22306 ; PWR5-NEXT: mulld 4, 4, 9
22307 ; PWR5-NEXT: li 5, 40
22308 ; PWR5-NEXT: subfic 3, 3, 40
22309 ; PWR5-NEXT: rldicl 4, 4, 8, 56
22310 ; PWR5-NEXT: subfe 3, 5, 5
22311 ; PWR5-NEXT: subfic 4, 4, 40
22312 ; PWR5-NEXT: subfe 4, 5, 5
22315 ; PWR6-LABEL: ugt_40_v2i64:
22317 ; PWR6-NEXT: lis 5, 21845
22318 ; PWR6-NEXT: lis 6, 13107
22319 ; PWR6-NEXT: ori 5, 5, 21845
22320 ; PWR6-NEXT: rotldi 8, 4, 63
22321 ; PWR6-NEXT: rotldi 9, 3, 63
22322 ; PWR6-NEXT: rldimi 5, 5, 32, 0
22323 ; PWR6-NEXT: and 8, 8, 5
22324 ; PWR6-NEXT: and 5, 9, 5
22325 ; PWR6-NEXT: ori 6, 6, 13107
22326 ; PWR6-NEXT: sub 3, 3, 5
22327 ; PWR6-NEXT: rldimi 6, 6, 32, 0
22328 ; PWR6-NEXT: sub 4, 4, 8
22329 ; PWR6-NEXT: and 8, 3, 6
22330 ; PWR6-NEXT: rotldi 3, 3, 62
22331 ; PWR6-NEXT: and 3, 3, 6
22332 ; PWR6-NEXT: lis 7, 3855
22333 ; PWR6-NEXT: and 5, 4, 6
22334 ; PWR6-NEXT: rotldi 4, 4, 62
22335 ; PWR6-NEXT: add 3, 8, 3
22336 ; PWR6-NEXT: lis 9, 257
22337 ; PWR6-NEXT: ori 7, 7, 3855
22338 ; PWR6-NEXT: and 4, 4, 6
22339 ; PWR6-NEXT: rldicl 6, 3, 60, 4
22340 ; PWR6-NEXT: ori 9, 9, 257
22341 ; PWR6-NEXT: rldimi 7, 7, 32, 0
22342 ; PWR6-NEXT: add 4, 5, 4
22343 ; PWR6-NEXT: add 3, 3, 6
22344 ; PWR6-NEXT: rldimi 9, 9, 32, 0
22345 ; PWR6-NEXT: rldicl 5, 4, 60, 4
22346 ; PWR6-NEXT: and 3, 3, 7
22347 ; PWR6-NEXT: add 4, 4, 5
22348 ; PWR6-NEXT: mulld 3, 3, 9
22349 ; PWR6-NEXT: and 4, 4, 7
22350 ; PWR6-NEXT: rldicl 3, 3, 8, 56
22351 ; PWR6-NEXT: mulld 4, 4, 9
22352 ; PWR6-NEXT: li 5, 40
22353 ; PWR6-NEXT: subfic 3, 3, 40
22354 ; PWR6-NEXT: rldicl 4, 4, 8, 56
22355 ; PWR6-NEXT: subfe 3, 5, 5
22356 ; PWR6-NEXT: subfic 4, 4, 40
22357 ; PWR6-NEXT: subfe 4, 5, 5
22360 ; PWR7-LABEL: ugt_40_v2i64:
22362 ; PWR7-NEXT: addi 3, 1, -32
22363 ; PWR7-NEXT: li 5, -1
22364 ; PWR7-NEXT: stxvd2x 34, 0, 3
22365 ; PWR7-NEXT: ld 4, -24(1)
22366 ; PWR7-NEXT: ld 3, -32(1)
22367 ; PWR7-NEXT: popcntd 4, 4
22368 ; PWR7-NEXT: popcntd 3, 3
22369 ; PWR7-NEXT: cmpldi 4, 40
22370 ; PWR7-NEXT: li 4, 0
22371 ; PWR7-NEXT: iselgt 6, 5, 4
22372 ; PWR7-NEXT: cmpldi 3, 40
22373 ; PWR7-NEXT: iselgt 3, 5, 4
22374 ; PWR7-NEXT: std 6, -8(1)
22375 ; PWR7-NEXT: std 3, -16(1)
22376 ; PWR7-NEXT: addi 3, 1, -16
22377 ; PWR7-NEXT: lxvd2x 34, 0, 3
22380 ; PWR8-LABEL: ugt_40_v2i64:
22382 ; PWR8-NEXT: addis 3, 2, .LCPI178_0@toc@ha
22383 ; PWR8-NEXT: vpopcntd 2, 2
22384 ; PWR8-NEXT: addi 3, 3, .LCPI178_0@toc@l
22385 ; PWR8-NEXT: lxvd2x 35, 0, 3
22386 ; PWR8-NEXT: vcmpgtud 2, 2, 3
22389 ; PWR9-LABEL: ugt_40_v2i64:
22391 ; PWR9-NEXT: addis 3, 2, .LCPI178_0@toc@ha
22392 ; PWR9-NEXT: vpopcntd 2, 2
22393 ; PWR9-NEXT: addi 3, 3, .LCPI178_0@toc@l
22394 ; PWR9-NEXT: lxv 35, 0(3)
22395 ; PWR9-NEXT: vcmpgtud 2, 2, 3
22397 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
22398 %3 = icmp ugt <2 x i64> %2, <i64 40, i64 40>
22399 %4 = sext <2 x i1> %3 to <2 x i64>
22403 define <2 x i64> @ult_41_v2i64(<2 x i64> %0) {
22404 ; PWR5-LABEL: ult_41_v2i64:
22406 ; PWR5-NEXT: lis 5, 21845
22407 ; PWR5-NEXT: lis 6, 13107
22408 ; PWR5-NEXT: ori 5, 5, 21845
22409 ; PWR5-NEXT: rotldi 8, 4, 63
22410 ; PWR5-NEXT: rotldi 9, 3, 63
22411 ; PWR5-NEXT: rldimi 5, 5, 32, 0
22412 ; PWR5-NEXT: and 8, 8, 5
22413 ; PWR5-NEXT: and 5, 9, 5
22414 ; PWR5-NEXT: ori 6, 6, 13107
22415 ; PWR5-NEXT: sub 3, 3, 5
22416 ; PWR5-NEXT: rldimi 6, 6, 32, 0
22417 ; PWR5-NEXT: sub 4, 4, 8
22418 ; PWR5-NEXT: and 8, 3, 6
22419 ; PWR5-NEXT: rotldi 3, 3, 62
22420 ; PWR5-NEXT: and 3, 3, 6
22421 ; PWR5-NEXT: lis 7, 3855
22422 ; PWR5-NEXT: and 5, 4, 6
22423 ; PWR5-NEXT: rotldi 4, 4, 62
22424 ; PWR5-NEXT: add 3, 8, 3
22425 ; PWR5-NEXT: lis 9, 257
22426 ; PWR5-NEXT: ori 7, 7, 3855
22427 ; PWR5-NEXT: and 4, 4, 6
22428 ; PWR5-NEXT: rldicl 6, 3, 60, 4
22429 ; PWR5-NEXT: ori 9, 9, 257
22430 ; PWR5-NEXT: rldimi 7, 7, 32, 0
22431 ; PWR5-NEXT: add 4, 5, 4
22432 ; PWR5-NEXT: add 3, 3, 6
22433 ; PWR5-NEXT: rldimi 9, 9, 32, 0
22434 ; PWR5-NEXT: rldicl 5, 4, 60, 4
22435 ; PWR5-NEXT: and 3, 3, 7
22436 ; PWR5-NEXT: add 4, 4, 5
22437 ; PWR5-NEXT: mulld 3, 3, 9
22438 ; PWR5-NEXT: and 4, 4, 7
22439 ; PWR5-NEXT: rldicl 3, 3, 8, 56
22440 ; PWR5-NEXT: li 5, 41
22441 ; PWR5-NEXT: mulld 4, 4, 9
22442 ; PWR5-NEXT: subc 6, 3, 5
22443 ; PWR5-NEXT: rldicl 4, 4, 8, 56
22444 ; PWR5-NEXT: subfe 3, 3, 3
22445 ; PWR5-NEXT: subc 5, 4, 5
22446 ; PWR5-NEXT: subfe 4, 4, 4
22449 ; PWR6-LABEL: ult_41_v2i64:
22451 ; PWR6-NEXT: lis 5, 21845
22452 ; PWR6-NEXT: lis 6, 13107
22453 ; PWR6-NEXT: ori 5, 5, 21845
22454 ; PWR6-NEXT: rotldi 8, 4, 63
22455 ; PWR6-NEXT: rotldi 9, 3, 63
22456 ; PWR6-NEXT: rldimi 5, 5, 32, 0
22457 ; PWR6-NEXT: and 8, 8, 5
22458 ; PWR6-NEXT: and 5, 9, 5
22459 ; PWR6-NEXT: ori 6, 6, 13107
22460 ; PWR6-NEXT: sub 3, 3, 5
22461 ; PWR6-NEXT: rldimi 6, 6, 32, 0
22462 ; PWR6-NEXT: sub 4, 4, 8
22463 ; PWR6-NEXT: and 8, 3, 6
22464 ; PWR6-NEXT: rotldi 3, 3, 62
22465 ; PWR6-NEXT: and 3, 3, 6
22466 ; PWR6-NEXT: lis 7, 3855
22467 ; PWR6-NEXT: and 5, 4, 6
22468 ; PWR6-NEXT: rotldi 4, 4, 62
22469 ; PWR6-NEXT: add 3, 8, 3
22470 ; PWR6-NEXT: lis 9, 257
22471 ; PWR6-NEXT: ori 7, 7, 3855
22472 ; PWR6-NEXT: and 4, 4, 6
22473 ; PWR6-NEXT: rldicl 6, 3, 60, 4
22474 ; PWR6-NEXT: ori 9, 9, 257
22475 ; PWR6-NEXT: rldimi 7, 7, 32, 0
22476 ; PWR6-NEXT: add 4, 5, 4
22477 ; PWR6-NEXT: add 3, 3, 6
22478 ; PWR6-NEXT: rldimi 9, 9, 32, 0
22479 ; PWR6-NEXT: rldicl 5, 4, 60, 4
22480 ; PWR6-NEXT: and 3, 3, 7
22481 ; PWR6-NEXT: add 4, 4, 5
22482 ; PWR6-NEXT: mulld 3, 3, 9
22483 ; PWR6-NEXT: and 4, 4, 7
22484 ; PWR6-NEXT: rldicl 3, 3, 8, 56
22485 ; PWR6-NEXT: li 5, 41
22486 ; PWR6-NEXT: mulld 4, 4, 9
22487 ; PWR6-NEXT: subc 6, 3, 5
22488 ; PWR6-NEXT: rldicl 4, 4, 8, 56
22489 ; PWR6-NEXT: subfe 3, 3, 3
22490 ; PWR6-NEXT: subc 5, 4, 5
22491 ; PWR6-NEXT: subfe 4, 4, 4
22494 ; PWR7-LABEL: ult_41_v2i64:
22496 ; PWR7-NEXT: addi 3, 1, -32
22497 ; PWR7-NEXT: li 5, -1
22498 ; PWR7-NEXT: stxvd2x 34, 0, 3
22499 ; PWR7-NEXT: ld 4, -24(1)
22500 ; PWR7-NEXT: ld 3, -32(1)
22501 ; PWR7-NEXT: popcntd 4, 4
22502 ; PWR7-NEXT: popcntd 3, 3
22503 ; PWR7-NEXT: cmpldi 4, 41
22504 ; PWR7-NEXT: li 4, 0
22505 ; PWR7-NEXT: isellt 6, 5, 4
22506 ; PWR7-NEXT: cmpldi 3, 41
22507 ; PWR7-NEXT: isellt 3, 5, 4
22508 ; PWR7-NEXT: std 6, -8(1)
22509 ; PWR7-NEXT: std 3, -16(1)
22510 ; PWR7-NEXT: addi 3, 1, -16
22511 ; PWR7-NEXT: lxvd2x 34, 0, 3
22514 ; PWR8-LABEL: ult_41_v2i64:
22516 ; PWR8-NEXT: addis 3, 2, .LCPI179_0@toc@ha
22517 ; PWR8-NEXT: vpopcntd 2, 2
22518 ; PWR8-NEXT: addi 3, 3, .LCPI179_0@toc@l
22519 ; PWR8-NEXT: lxvd2x 35, 0, 3
22520 ; PWR8-NEXT: vcmpgtud 2, 3, 2
22523 ; PWR9-LABEL: ult_41_v2i64:
22525 ; PWR9-NEXT: addis 3, 2, .LCPI179_0@toc@ha
22526 ; PWR9-NEXT: vpopcntd 2, 2
22527 ; PWR9-NEXT: addi 3, 3, .LCPI179_0@toc@l
22528 ; PWR9-NEXT: lxv 35, 0(3)
22529 ; PWR9-NEXT: vcmpgtud 2, 3, 2
22531 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
22532 %3 = icmp ult <2 x i64> %2, <i64 41, i64 41>
22533 %4 = sext <2 x i1> %3 to <2 x i64>
22537 define <2 x i64> @ugt_41_v2i64(<2 x i64> %0) {
22538 ; PWR5-LABEL: ugt_41_v2i64:
22540 ; PWR5-NEXT: lis 5, 21845
22541 ; PWR5-NEXT: lis 6, 13107
22542 ; PWR5-NEXT: ori 5, 5, 21845
22543 ; PWR5-NEXT: rotldi 8, 4, 63
22544 ; PWR5-NEXT: rotldi 9, 3, 63
22545 ; PWR5-NEXT: rldimi 5, 5, 32, 0
22546 ; PWR5-NEXT: and 8, 8, 5
22547 ; PWR5-NEXT: and 5, 9, 5
22548 ; PWR5-NEXT: ori 6, 6, 13107
22549 ; PWR5-NEXT: sub 3, 3, 5
22550 ; PWR5-NEXT: rldimi 6, 6, 32, 0
22551 ; PWR5-NEXT: sub 4, 4, 8
22552 ; PWR5-NEXT: and 8, 3, 6
22553 ; PWR5-NEXT: rotldi 3, 3, 62
22554 ; PWR5-NEXT: and 3, 3, 6
22555 ; PWR5-NEXT: lis 7, 3855
22556 ; PWR5-NEXT: and 5, 4, 6
22557 ; PWR5-NEXT: rotldi 4, 4, 62
22558 ; PWR5-NEXT: add 3, 8, 3
22559 ; PWR5-NEXT: lis 9, 257
22560 ; PWR5-NEXT: ori 7, 7, 3855
22561 ; PWR5-NEXT: and 4, 4, 6
22562 ; PWR5-NEXT: rldicl 6, 3, 60, 4
22563 ; PWR5-NEXT: ori 9, 9, 257
22564 ; PWR5-NEXT: rldimi 7, 7, 32, 0
22565 ; PWR5-NEXT: add 4, 5, 4
22566 ; PWR5-NEXT: add 3, 3, 6
22567 ; PWR5-NEXT: rldimi 9, 9, 32, 0
22568 ; PWR5-NEXT: rldicl 5, 4, 60, 4
22569 ; PWR5-NEXT: and 3, 3, 7
22570 ; PWR5-NEXT: add 4, 4, 5
22571 ; PWR5-NEXT: mulld 3, 3, 9
22572 ; PWR5-NEXT: and 4, 4, 7
22573 ; PWR5-NEXT: rldicl 3, 3, 8, 56
22574 ; PWR5-NEXT: mulld 4, 4, 9
22575 ; PWR5-NEXT: li 5, 41
22576 ; PWR5-NEXT: subfic 3, 3, 41
22577 ; PWR5-NEXT: rldicl 4, 4, 8, 56
22578 ; PWR5-NEXT: subfe 3, 5, 5
22579 ; PWR5-NEXT: subfic 4, 4, 41
22580 ; PWR5-NEXT: subfe 4, 5, 5
22583 ; PWR6-LABEL: ugt_41_v2i64:
22585 ; PWR6-NEXT: lis 5, 21845
22586 ; PWR6-NEXT: lis 6, 13107
22587 ; PWR6-NEXT: ori 5, 5, 21845
22588 ; PWR6-NEXT: rotldi 8, 4, 63
22589 ; PWR6-NEXT: rotldi 9, 3, 63
22590 ; PWR6-NEXT: rldimi 5, 5, 32, 0
22591 ; PWR6-NEXT: and 8, 8, 5
22592 ; PWR6-NEXT: and 5, 9, 5
22593 ; PWR6-NEXT: ori 6, 6, 13107
22594 ; PWR6-NEXT: sub 3, 3, 5
22595 ; PWR6-NEXT: rldimi 6, 6, 32, 0
22596 ; PWR6-NEXT: sub 4, 4, 8
22597 ; PWR6-NEXT: and 8, 3, 6
22598 ; PWR6-NEXT: rotldi 3, 3, 62
22599 ; PWR6-NEXT: and 3, 3, 6
22600 ; PWR6-NEXT: lis 7, 3855
22601 ; PWR6-NEXT: and 5, 4, 6
22602 ; PWR6-NEXT: rotldi 4, 4, 62
22603 ; PWR6-NEXT: add 3, 8, 3
22604 ; PWR6-NEXT: lis 9, 257
22605 ; PWR6-NEXT: ori 7, 7, 3855
22606 ; PWR6-NEXT: and 4, 4, 6
22607 ; PWR6-NEXT: rldicl 6, 3, 60, 4
22608 ; PWR6-NEXT: ori 9, 9, 257
22609 ; PWR6-NEXT: rldimi 7, 7, 32, 0
22610 ; PWR6-NEXT: add 4, 5, 4
22611 ; PWR6-NEXT: add 3, 3, 6
22612 ; PWR6-NEXT: rldimi 9, 9, 32, 0
22613 ; PWR6-NEXT: rldicl 5, 4, 60, 4
22614 ; PWR6-NEXT: and 3, 3, 7
22615 ; PWR6-NEXT: add 4, 4, 5
22616 ; PWR6-NEXT: mulld 3, 3, 9
22617 ; PWR6-NEXT: and 4, 4, 7
22618 ; PWR6-NEXT: rldicl 3, 3, 8, 56
22619 ; PWR6-NEXT: mulld 4, 4, 9
22620 ; PWR6-NEXT: li 5, 41
22621 ; PWR6-NEXT: subfic 3, 3, 41
22622 ; PWR6-NEXT: rldicl 4, 4, 8, 56
22623 ; PWR6-NEXT: subfe 3, 5, 5
22624 ; PWR6-NEXT: subfic 4, 4, 41
22625 ; PWR6-NEXT: subfe 4, 5, 5
22628 ; PWR7-LABEL: ugt_41_v2i64:
22630 ; PWR7-NEXT: addi 3, 1, -32
22631 ; PWR7-NEXT: li 5, -1
22632 ; PWR7-NEXT: stxvd2x 34, 0, 3
22633 ; PWR7-NEXT: ld 4, -24(1)
22634 ; PWR7-NEXT: ld 3, -32(1)
22635 ; PWR7-NEXT: popcntd 4, 4
22636 ; PWR7-NEXT: popcntd 3, 3
22637 ; PWR7-NEXT: cmpldi 4, 41
22638 ; PWR7-NEXT: li 4, 0
22639 ; PWR7-NEXT: iselgt 6, 5, 4
22640 ; PWR7-NEXT: cmpldi 3, 41
22641 ; PWR7-NEXT: iselgt 3, 5, 4
22642 ; PWR7-NEXT: std 6, -8(1)
22643 ; PWR7-NEXT: std 3, -16(1)
22644 ; PWR7-NEXT: addi 3, 1, -16
22645 ; PWR7-NEXT: lxvd2x 34, 0, 3
22648 ; PWR8-LABEL: ugt_41_v2i64:
22650 ; PWR8-NEXT: addis 3, 2, .LCPI180_0@toc@ha
22651 ; PWR8-NEXT: vpopcntd 2, 2
22652 ; PWR8-NEXT: addi 3, 3, .LCPI180_0@toc@l
22653 ; PWR8-NEXT: lxvd2x 35, 0, 3
22654 ; PWR8-NEXT: vcmpgtud 2, 2, 3
22657 ; PWR9-LABEL: ugt_41_v2i64:
22659 ; PWR9-NEXT: addis 3, 2, .LCPI180_0@toc@ha
22660 ; PWR9-NEXT: vpopcntd 2, 2
22661 ; PWR9-NEXT: addi 3, 3, .LCPI180_0@toc@l
22662 ; PWR9-NEXT: lxv 35, 0(3)
22663 ; PWR9-NEXT: vcmpgtud 2, 2, 3
22665 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
22666 %3 = icmp ugt <2 x i64> %2, <i64 41, i64 41>
22667 %4 = sext <2 x i1> %3 to <2 x i64>
22671 define <2 x i64> @ult_42_v2i64(<2 x i64> %0) {
22672 ; PWR5-LABEL: ult_42_v2i64:
22674 ; PWR5-NEXT: lis 5, 21845
22675 ; PWR5-NEXT: lis 6, 13107
22676 ; PWR5-NEXT: ori 5, 5, 21845
22677 ; PWR5-NEXT: rotldi 8, 4, 63
22678 ; PWR5-NEXT: rotldi 9, 3, 63
22679 ; PWR5-NEXT: rldimi 5, 5, 32, 0
22680 ; PWR5-NEXT: and 8, 8, 5
22681 ; PWR5-NEXT: and 5, 9, 5
22682 ; PWR5-NEXT: ori 6, 6, 13107
22683 ; PWR5-NEXT: sub 3, 3, 5
22684 ; PWR5-NEXT: rldimi 6, 6, 32, 0
22685 ; PWR5-NEXT: sub 4, 4, 8
22686 ; PWR5-NEXT: and 8, 3, 6
22687 ; PWR5-NEXT: rotldi 3, 3, 62
22688 ; PWR5-NEXT: and 3, 3, 6
22689 ; PWR5-NEXT: lis 7, 3855
22690 ; PWR5-NEXT: and 5, 4, 6
22691 ; PWR5-NEXT: rotldi 4, 4, 62
22692 ; PWR5-NEXT: add 3, 8, 3
22693 ; PWR5-NEXT: lis 9, 257
22694 ; PWR5-NEXT: ori 7, 7, 3855
22695 ; PWR5-NEXT: and 4, 4, 6
22696 ; PWR5-NEXT: rldicl 6, 3, 60, 4
22697 ; PWR5-NEXT: ori 9, 9, 257
22698 ; PWR5-NEXT: rldimi 7, 7, 32, 0
22699 ; PWR5-NEXT: add 4, 5, 4
22700 ; PWR5-NEXT: add 3, 3, 6
22701 ; PWR5-NEXT: rldimi 9, 9, 32, 0
22702 ; PWR5-NEXT: rldicl 5, 4, 60, 4
22703 ; PWR5-NEXT: and 3, 3, 7
22704 ; PWR5-NEXT: add 4, 4, 5
22705 ; PWR5-NEXT: mulld 3, 3, 9
22706 ; PWR5-NEXT: and 4, 4, 7
22707 ; PWR5-NEXT: rldicl 3, 3, 8, 56
22708 ; PWR5-NEXT: li 5, 42
22709 ; PWR5-NEXT: mulld 4, 4, 9
22710 ; PWR5-NEXT: subc 6, 3, 5
22711 ; PWR5-NEXT: rldicl 4, 4, 8, 56
22712 ; PWR5-NEXT: subfe 3, 3, 3
22713 ; PWR5-NEXT: subc 5, 4, 5
22714 ; PWR5-NEXT: subfe 4, 4, 4
22717 ; PWR6-LABEL: ult_42_v2i64:
22719 ; PWR6-NEXT: lis 5, 21845
22720 ; PWR6-NEXT: lis 6, 13107
22721 ; PWR6-NEXT: ori 5, 5, 21845
22722 ; PWR6-NEXT: rotldi 8, 4, 63
22723 ; PWR6-NEXT: rotldi 9, 3, 63
22724 ; PWR6-NEXT: rldimi 5, 5, 32, 0
22725 ; PWR6-NEXT: and 8, 8, 5
22726 ; PWR6-NEXT: and 5, 9, 5
22727 ; PWR6-NEXT: ori 6, 6, 13107
22728 ; PWR6-NEXT: sub 3, 3, 5
22729 ; PWR6-NEXT: rldimi 6, 6, 32, 0
22730 ; PWR6-NEXT: sub 4, 4, 8
22731 ; PWR6-NEXT: and 8, 3, 6
22732 ; PWR6-NEXT: rotldi 3, 3, 62
22733 ; PWR6-NEXT: and 3, 3, 6
22734 ; PWR6-NEXT: lis 7, 3855
22735 ; PWR6-NEXT: and 5, 4, 6
22736 ; PWR6-NEXT: rotldi 4, 4, 62
22737 ; PWR6-NEXT: add 3, 8, 3
22738 ; PWR6-NEXT: lis 9, 257
22739 ; PWR6-NEXT: ori 7, 7, 3855
22740 ; PWR6-NEXT: and 4, 4, 6
22741 ; PWR6-NEXT: rldicl 6, 3, 60, 4
22742 ; PWR6-NEXT: ori 9, 9, 257
22743 ; PWR6-NEXT: rldimi 7, 7, 32, 0
22744 ; PWR6-NEXT: add 4, 5, 4
22745 ; PWR6-NEXT: add 3, 3, 6
22746 ; PWR6-NEXT: rldimi 9, 9, 32, 0
22747 ; PWR6-NEXT: rldicl 5, 4, 60, 4
22748 ; PWR6-NEXT: and 3, 3, 7
22749 ; PWR6-NEXT: add 4, 4, 5
22750 ; PWR6-NEXT: mulld 3, 3, 9
22751 ; PWR6-NEXT: and 4, 4, 7
22752 ; PWR6-NEXT: rldicl 3, 3, 8, 56
22753 ; PWR6-NEXT: li 5, 42
22754 ; PWR6-NEXT: mulld 4, 4, 9
22755 ; PWR6-NEXT: subc 6, 3, 5
22756 ; PWR6-NEXT: rldicl 4, 4, 8, 56
22757 ; PWR6-NEXT: subfe 3, 3, 3
22758 ; PWR6-NEXT: subc 5, 4, 5
22759 ; PWR6-NEXT: subfe 4, 4, 4
22762 ; PWR7-LABEL: ult_42_v2i64:
22764 ; PWR7-NEXT: addi 3, 1, -32
22765 ; PWR7-NEXT: li 5, -1
22766 ; PWR7-NEXT: stxvd2x 34, 0, 3
22767 ; PWR7-NEXT: ld 4, -24(1)
22768 ; PWR7-NEXT: ld 3, -32(1)
22769 ; PWR7-NEXT: popcntd 4, 4
22770 ; PWR7-NEXT: popcntd 3, 3
22771 ; PWR7-NEXT: cmpldi 4, 42
22772 ; PWR7-NEXT: li 4, 0
22773 ; PWR7-NEXT: isellt 6, 5, 4
22774 ; PWR7-NEXT: cmpldi 3, 42
22775 ; PWR7-NEXT: isellt 3, 5, 4
22776 ; PWR7-NEXT: std 6, -8(1)
22777 ; PWR7-NEXT: std 3, -16(1)
22778 ; PWR7-NEXT: addi 3, 1, -16
22779 ; PWR7-NEXT: lxvd2x 34, 0, 3
22782 ; PWR8-LABEL: ult_42_v2i64:
22784 ; PWR8-NEXT: addis 3, 2, .LCPI181_0@toc@ha
22785 ; PWR8-NEXT: vpopcntd 2, 2
22786 ; PWR8-NEXT: addi 3, 3, .LCPI181_0@toc@l
22787 ; PWR8-NEXT: lxvd2x 35, 0, 3
22788 ; PWR8-NEXT: vcmpgtud 2, 3, 2
22791 ; PWR9-LABEL: ult_42_v2i64:
22793 ; PWR9-NEXT: addis 3, 2, .LCPI181_0@toc@ha
22794 ; PWR9-NEXT: vpopcntd 2, 2
22795 ; PWR9-NEXT: addi 3, 3, .LCPI181_0@toc@l
22796 ; PWR9-NEXT: lxv 35, 0(3)
22797 ; PWR9-NEXT: vcmpgtud 2, 3, 2
22799 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
22800 %3 = icmp ult <2 x i64> %2, <i64 42, i64 42>
22801 %4 = sext <2 x i1> %3 to <2 x i64>
22805 define <2 x i64> @ugt_42_v2i64(<2 x i64> %0) {
22806 ; PWR5-LABEL: ugt_42_v2i64:
22808 ; PWR5-NEXT: lis 5, 21845
22809 ; PWR5-NEXT: lis 6, 13107
22810 ; PWR5-NEXT: ori 5, 5, 21845
22811 ; PWR5-NEXT: rotldi 8, 4, 63
22812 ; PWR5-NEXT: rotldi 9, 3, 63
22813 ; PWR5-NEXT: rldimi 5, 5, 32, 0
22814 ; PWR5-NEXT: and 8, 8, 5
22815 ; PWR5-NEXT: and 5, 9, 5
22816 ; PWR5-NEXT: ori 6, 6, 13107
22817 ; PWR5-NEXT: sub 3, 3, 5
22818 ; PWR5-NEXT: rldimi 6, 6, 32, 0
22819 ; PWR5-NEXT: sub 4, 4, 8
22820 ; PWR5-NEXT: and 8, 3, 6
22821 ; PWR5-NEXT: rotldi 3, 3, 62
22822 ; PWR5-NEXT: and 3, 3, 6
22823 ; PWR5-NEXT: lis 7, 3855
22824 ; PWR5-NEXT: and 5, 4, 6
22825 ; PWR5-NEXT: rotldi 4, 4, 62
22826 ; PWR5-NEXT: add 3, 8, 3
22827 ; PWR5-NEXT: lis 9, 257
22828 ; PWR5-NEXT: ori 7, 7, 3855
22829 ; PWR5-NEXT: and 4, 4, 6
22830 ; PWR5-NEXT: rldicl 6, 3, 60, 4
22831 ; PWR5-NEXT: ori 9, 9, 257
22832 ; PWR5-NEXT: rldimi 7, 7, 32, 0
22833 ; PWR5-NEXT: add 4, 5, 4
22834 ; PWR5-NEXT: add 3, 3, 6
22835 ; PWR5-NEXT: rldimi 9, 9, 32, 0
22836 ; PWR5-NEXT: rldicl 5, 4, 60, 4
22837 ; PWR5-NEXT: and 3, 3, 7
22838 ; PWR5-NEXT: add 4, 4, 5
22839 ; PWR5-NEXT: mulld 3, 3, 9
22840 ; PWR5-NEXT: and 4, 4, 7
22841 ; PWR5-NEXT: rldicl 3, 3, 8, 56
22842 ; PWR5-NEXT: mulld 4, 4, 9
22843 ; PWR5-NEXT: li 5, 42
22844 ; PWR5-NEXT: subfic 3, 3, 42
22845 ; PWR5-NEXT: rldicl 4, 4, 8, 56
22846 ; PWR5-NEXT: subfe 3, 5, 5
22847 ; PWR5-NEXT: subfic 4, 4, 42
22848 ; PWR5-NEXT: subfe 4, 5, 5
22851 ; PWR6-LABEL: ugt_42_v2i64:
22853 ; PWR6-NEXT: lis 5, 21845
22854 ; PWR6-NEXT: lis 6, 13107
22855 ; PWR6-NEXT: ori 5, 5, 21845
22856 ; PWR6-NEXT: rotldi 8, 4, 63
22857 ; PWR6-NEXT: rotldi 9, 3, 63
22858 ; PWR6-NEXT: rldimi 5, 5, 32, 0
22859 ; PWR6-NEXT: and 8, 8, 5
22860 ; PWR6-NEXT: and 5, 9, 5
22861 ; PWR6-NEXT: ori 6, 6, 13107
22862 ; PWR6-NEXT: sub 3, 3, 5
22863 ; PWR6-NEXT: rldimi 6, 6, 32, 0
22864 ; PWR6-NEXT: sub 4, 4, 8
22865 ; PWR6-NEXT: and 8, 3, 6
22866 ; PWR6-NEXT: rotldi 3, 3, 62
22867 ; PWR6-NEXT: and 3, 3, 6
22868 ; PWR6-NEXT: lis 7, 3855
22869 ; PWR6-NEXT: and 5, 4, 6
22870 ; PWR6-NEXT: rotldi 4, 4, 62
22871 ; PWR6-NEXT: add 3, 8, 3
22872 ; PWR6-NEXT: lis 9, 257
22873 ; PWR6-NEXT: ori 7, 7, 3855
22874 ; PWR6-NEXT: and 4, 4, 6
22875 ; PWR6-NEXT: rldicl 6, 3, 60, 4
22876 ; PWR6-NEXT: ori 9, 9, 257
22877 ; PWR6-NEXT: rldimi 7, 7, 32, 0
22878 ; PWR6-NEXT: add 4, 5, 4
22879 ; PWR6-NEXT: add 3, 3, 6
22880 ; PWR6-NEXT: rldimi 9, 9, 32, 0
22881 ; PWR6-NEXT: rldicl 5, 4, 60, 4
22882 ; PWR6-NEXT: and 3, 3, 7
22883 ; PWR6-NEXT: add 4, 4, 5
22884 ; PWR6-NEXT: mulld 3, 3, 9
22885 ; PWR6-NEXT: and 4, 4, 7
22886 ; PWR6-NEXT: rldicl 3, 3, 8, 56
22887 ; PWR6-NEXT: mulld 4, 4, 9
22888 ; PWR6-NEXT: li 5, 42
22889 ; PWR6-NEXT: subfic 3, 3, 42
22890 ; PWR6-NEXT: rldicl 4, 4, 8, 56
22891 ; PWR6-NEXT: subfe 3, 5, 5
22892 ; PWR6-NEXT: subfic 4, 4, 42
22893 ; PWR6-NEXT: subfe 4, 5, 5
22896 ; PWR7-LABEL: ugt_42_v2i64:
22898 ; PWR7-NEXT: addi 3, 1, -32
22899 ; PWR7-NEXT: li 5, -1
22900 ; PWR7-NEXT: stxvd2x 34, 0, 3
22901 ; PWR7-NEXT: ld 4, -24(1)
22902 ; PWR7-NEXT: ld 3, -32(1)
22903 ; PWR7-NEXT: popcntd 4, 4
22904 ; PWR7-NEXT: popcntd 3, 3
22905 ; PWR7-NEXT: cmpldi 4, 42
22906 ; PWR7-NEXT: li 4, 0
22907 ; PWR7-NEXT: iselgt 6, 5, 4
22908 ; PWR7-NEXT: cmpldi 3, 42
22909 ; PWR7-NEXT: iselgt 3, 5, 4
22910 ; PWR7-NEXT: std 6, -8(1)
22911 ; PWR7-NEXT: std 3, -16(1)
22912 ; PWR7-NEXT: addi 3, 1, -16
22913 ; PWR7-NEXT: lxvd2x 34, 0, 3
22916 ; PWR8-LABEL: ugt_42_v2i64:
22918 ; PWR8-NEXT: addis 3, 2, .LCPI182_0@toc@ha
22919 ; PWR8-NEXT: vpopcntd 2, 2
22920 ; PWR8-NEXT: addi 3, 3, .LCPI182_0@toc@l
22921 ; PWR8-NEXT: lxvd2x 35, 0, 3
22922 ; PWR8-NEXT: vcmpgtud 2, 2, 3
22925 ; PWR9-LABEL: ugt_42_v2i64:
22927 ; PWR9-NEXT: addis 3, 2, .LCPI182_0@toc@ha
22928 ; PWR9-NEXT: vpopcntd 2, 2
22929 ; PWR9-NEXT: addi 3, 3, .LCPI182_0@toc@l
22930 ; PWR9-NEXT: lxv 35, 0(3)
22931 ; PWR9-NEXT: vcmpgtud 2, 2, 3
22933 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
22934 %3 = icmp ugt <2 x i64> %2, <i64 42, i64 42>
22935 %4 = sext <2 x i1> %3 to <2 x i64>
22939 define <2 x i64> @ult_43_v2i64(<2 x i64> %0) {
22940 ; PWR5-LABEL: ult_43_v2i64:
22942 ; PWR5-NEXT: lis 5, 21845
22943 ; PWR5-NEXT: lis 6, 13107
22944 ; PWR5-NEXT: ori 5, 5, 21845
22945 ; PWR5-NEXT: rotldi 8, 4, 63
22946 ; PWR5-NEXT: rotldi 9, 3, 63
22947 ; PWR5-NEXT: rldimi 5, 5, 32, 0
22948 ; PWR5-NEXT: and 8, 8, 5
22949 ; PWR5-NEXT: and 5, 9, 5
22950 ; PWR5-NEXT: ori 6, 6, 13107
22951 ; PWR5-NEXT: sub 3, 3, 5
22952 ; PWR5-NEXT: rldimi 6, 6, 32, 0
22953 ; PWR5-NEXT: sub 4, 4, 8
22954 ; PWR5-NEXT: and 8, 3, 6
22955 ; PWR5-NEXT: rotldi 3, 3, 62
22956 ; PWR5-NEXT: and 3, 3, 6
22957 ; PWR5-NEXT: lis 7, 3855
22958 ; PWR5-NEXT: and 5, 4, 6
22959 ; PWR5-NEXT: rotldi 4, 4, 62
22960 ; PWR5-NEXT: add 3, 8, 3
22961 ; PWR5-NEXT: lis 9, 257
22962 ; PWR5-NEXT: ori 7, 7, 3855
22963 ; PWR5-NEXT: and 4, 4, 6
22964 ; PWR5-NEXT: rldicl 6, 3, 60, 4
22965 ; PWR5-NEXT: ori 9, 9, 257
22966 ; PWR5-NEXT: rldimi 7, 7, 32, 0
22967 ; PWR5-NEXT: add 4, 5, 4
22968 ; PWR5-NEXT: add 3, 3, 6
22969 ; PWR5-NEXT: rldimi 9, 9, 32, 0
22970 ; PWR5-NEXT: rldicl 5, 4, 60, 4
22971 ; PWR5-NEXT: and 3, 3, 7
22972 ; PWR5-NEXT: add 4, 4, 5
22973 ; PWR5-NEXT: mulld 3, 3, 9
22974 ; PWR5-NEXT: and 4, 4, 7
22975 ; PWR5-NEXT: rldicl 3, 3, 8, 56
22976 ; PWR5-NEXT: li 5, 43
22977 ; PWR5-NEXT: mulld 4, 4, 9
22978 ; PWR5-NEXT: subc 6, 3, 5
22979 ; PWR5-NEXT: rldicl 4, 4, 8, 56
22980 ; PWR5-NEXT: subfe 3, 3, 3
22981 ; PWR5-NEXT: subc 5, 4, 5
22982 ; PWR5-NEXT: subfe 4, 4, 4
22985 ; PWR6-LABEL: ult_43_v2i64:
22987 ; PWR6-NEXT: lis 5, 21845
22988 ; PWR6-NEXT: lis 6, 13107
22989 ; PWR6-NEXT: ori 5, 5, 21845
22990 ; PWR6-NEXT: rotldi 8, 4, 63
22991 ; PWR6-NEXT: rotldi 9, 3, 63
22992 ; PWR6-NEXT: rldimi 5, 5, 32, 0
22993 ; PWR6-NEXT: and 8, 8, 5
22994 ; PWR6-NEXT: and 5, 9, 5
22995 ; PWR6-NEXT: ori 6, 6, 13107
22996 ; PWR6-NEXT: sub 3, 3, 5
22997 ; PWR6-NEXT: rldimi 6, 6, 32, 0
22998 ; PWR6-NEXT: sub 4, 4, 8
22999 ; PWR6-NEXT: and 8, 3, 6
23000 ; PWR6-NEXT: rotldi 3, 3, 62
23001 ; PWR6-NEXT: and 3, 3, 6
23002 ; PWR6-NEXT: lis 7, 3855
23003 ; PWR6-NEXT: and 5, 4, 6
23004 ; PWR6-NEXT: rotldi 4, 4, 62
23005 ; PWR6-NEXT: add 3, 8, 3
23006 ; PWR6-NEXT: lis 9, 257
23007 ; PWR6-NEXT: ori 7, 7, 3855
23008 ; PWR6-NEXT: and 4, 4, 6
23009 ; PWR6-NEXT: rldicl 6, 3, 60, 4
23010 ; PWR6-NEXT: ori 9, 9, 257
23011 ; PWR6-NEXT: rldimi 7, 7, 32, 0
23012 ; PWR6-NEXT: add 4, 5, 4
23013 ; PWR6-NEXT: add 3, 3, 6
23014 ; PWR6-NEXT: rldimi 9, 9, 32, 0
23015 ; PWR6-NEXT: rldicl 5, 4, 60, 4
23016 ; PWR6-NEXT: and 3, 3, 7
23017 ; PWR6-NEXT: add 4, 4, 5
23018 ; PWR6-NEXT: mulld 3, 3, 9
23019 ; PWR6-NEXT: and 4, 4, 7
23020 ; PWR6-NEXT: rldicl 3, 3, 8, 56
23021 ; PWR6-NEXT: li 5, 43
23022 ; PWR6-NEXT: mulld 4, 4, 9
23023 ; PWR6-NEXT: subc 6, 3, 5
23024 ; PWR6-NEXT: rldicl 4, 4, 8, 56
23025 ; PWR6-NEXT: subfe 3, 3, 3
23026 ; PWR6-NEXT: subc 5, 4, 5
23027 ; PWR6-NEXT: subfe 4, 4, 4
23030 ; PWR7-LABEL: ult_43_v2i64:
23032 ; PWR7-NEXT: addi 3, 1, -32
23033 ; PWR7-NEXT: li 5, -1
23034 ; PWR7-NEXT: stxvd2x 34, 0, 3
23035 ; PWR7-NEXT: ld 4, -24(1)
23036 ; PWR7-NEXT: ld 3, -32(1)
23037 ; PWR7-NEXT: popcntd 4, 4
23038 ; PWR7-NEXT: popcntd 3, 3
23039 ; PWR7-NEXT: cmpldi 4, 43
23040 ; PWR7-NEXT: li 4, 0
23041 ; PWR7-NEXT: isellt 6, 5, 4
23042 ; PWR7-NEXT: cmpldi 3, 43
23043 ; PWR7-NEXT: isellt 3, 5, 4
23044 ; PWR7-NEXT: std 6, -8(1)
23045 ; PWR7-NEXT: std 3, -16(1)
23046 ; PWR7-NEXT: addi 3, 1, -16
23047 ; PWR7-NEXT: lxvd2x 34, 0, 3
23050 ; PWR8-LABEL: ult_43_v2i64:
23052 ; PWR8-NEXT: addis 3, 2, .LCPI183_0@toc@ha
23053 ; PWR8-NEXT: vpopcntd 2, 2
23054 ; PWR8-NEXT: addi 3, 3, .LCPI183_0@toc@l
23055 ; PWR8-NEXT: lxvd2x 35, 0, 3
23056 ; PWR8-NEXT: vcmpgtud 2, 3, 2
23059 ; PWR9-LABEL: ult_43_v2i64:
23061 ; PWR9-NEXT: addis 3, 2, .LCPI183_0@toc@ha
23062 ; PWR9-NEXT: vpopcntd 2, 2
23063 ; PWR9-NEXT: addi 3, 3, .LCPI183_0@toc@l
23064 ; PWR9-NEXT: lxv 35, 0(3)
23065 ; PWR9-NEXT: vcmpgtud 2, 3, 2
23067 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
23068 %3 = icmp ult <2 x i64> %2, <i64 43, i64 43>
23069 %4 = sext <2 x i1> %3 to <2 x i64>
23073 define <2 x i64> @ugt_43_v2i64(<2 x i64> %0) {
23074 ; PWR5-LABEL: ugt_43_v2i64:
23076 ; PWR5-NEXT: lis 5, 21845
23077 ; PWR5-NEXT: lis 6, 13107
23078 ; PWR5-NEXT: ori 5, 5, 21845
23079 ; PWR5-NEXT: rotldi 8, 4, 63
23080 ; PWR5-NEXT: rotldi 9, 3, 63
23081 ; PWR5-NEXT: rldimi 5, 5, 32, 0
23082 ; PWR5-NEXT: and 8, 8, 5
23083 ; PWR5-NEXT: and 5, 9, 5
23084 ; PWR5-NEXT: ori 6, 6, 13107
23085 ; PWR5-NEXT: sub 3, 3, 5
23086 ; PWR5-NEXT: rldimi 6, 6, 32, 0
23087 ; PWR5-NEXT: sub 4, 4, 8
23088 ; PWR5-NEXT: and 8, 3, 6
23089 ; PWR5-NEXT: rotldi 3, 3, 62
23090 ; PWR5-NEXT: and 3, 3, 6
23091 ; PWR5-NEXT: lis 7, 3855
23092 ; PWR5-NEXT: and 5, 4, 6
23093 ; PWR5-NEXT: rotldi 4, 4, 62
23094 ; PWR5-NEXT: add 3, 8, 3
23095 ; PWR5-NEXT: lis 9, 257
23096 ; PWR5-NEXT: ori 7, 7, 3855
23097 ; PWR5-NEXT: and 4, 4, 6
23098 ; PWR5-NEXT: rldicl 6, 3, 60, 4
23099 ; PWR5-NEXT: ori 9, 9, 257
23100 ; PWR5-NEXT: rldimi 7, 7, 32, 0
23101 ; PWR5-NEXT: add 4, 5, 4
23102 ; PWR5-NEXT: add 3, 3, 6
23103 ; PWR5-NEXT: rldimi 9, 9, 32, 0
23104 ; PWR5-NEXT: rldicl 5, 4, 60, 4
23105 ; PWR5-NEXT: and 3, 3, 7
23106 ; PWR5-NEXT: add 4, 4, 5
23107 ; PWR5-NEXT: mulld 3, 3, 9
23108 ; PWR5-NEXT: and 4, 4, 7
23109 ; PWR5-NEXT: rldicl 3, 3, 8, 56
23110 ; PWR5-NEXT: mulld 4, 4, 9
23111 ; PWR5-NEXT: li 5, 43
23112 ; PWR5-NEXT: subfic 3, 3, 43
23113 ; PWR5-NEXT: rldicl 4, 4, 8, 56
23114 ; PWR5-NEXT: subfe 3, 5, 5
23115 ; PWR5-NEXT: subfic 4, 4, 43
23116 ; PWR5-NEXT: subfe 4, 5, 5
23119 ; PWR6-LABEL: ugt_43_v2i64:
23121 ; PWR6-NEXT: lis 5, 21845
23122 ; PWR6-NEXT: lis 6, 13107
23123 ; PWR6-NEXT: ori 5, 5, 21845
23124 ; PWR6-NEXT: rotldi 8, 4, 63
23125 ; PWR6-NEXT: rotldi 9, 3, 63
23126 ; PWR6-NEXT: rldimi 5, 5, 32, 0
23127 ; PWR6-NEXT: and 8, 8, 5
23128 ; PWR6-NEXT: and 5, 9, 5
23129 ; PWR6-NEXT: ori 6, 6, 13107
23130 ; PWR6-NEXT: sub 3, 3, 5
23131 ; PWR6-NEXT: rldimi 6, 6, 32, 0
23132 ; PWR6-NEXT: sub 4, 4, 8
23133 ; PWR6-NEXT: and 8, 3, 6
23134 ; PWR6-NEXT: rotldi 3, 3, 62
23135 ; PWR6-NEXT: and 3, 3, 6
23136 ; PWR6-NEXT: lis 7, 3855
23137 ; PWR6-NEXT: and 5, 4, 6
23138 ; PWR6-NEXT: rotldi 4, 4, 62
23139 ; PWR6-NEXT: add 3, 8, 3
23140 ; PWR6-NEXT: lis 9, 257
23141 ; PWR6-NEXT: ori 7, 7, 3855
23142 ; PWR6-NEXT: and 4, 4, 6
23143 ; PWR6-NEXT: rldicl 6, 3, 60, 4
23144 ; PWR6-NEXT: ori 9, 9, 257
23145 ; PWR6-NEXT: rldimi 7, 7, 32, 0
23146 ; PWR6-NEXT: add 4, 5, 4
23147 ; PWR6-NEXT: add 3, 3, 6
23148 ; PWR6-NEXT: rldimi 9, 9, 32, 0
23149 ; PWR6-NEXT: rldicl 5, 4, 60, 4
23150 ; PWR6-NEXT: and 3, 3, 7
23151 ; PWR6-NEXT: add 4, 4, 5
23152 ; PWR6-NEXT: mulld 3, 3, 9
23153 ; PWR6-NEXT: and 4, 4, 7
23154 ; PWR6-NEXT: rldicl 3, 3, 8, 56
23155 ; PWR6-NEXT: mulld 4, 4, 9
23156 ; PWR6-NEXT: li 5, 43
23157 ; PWR6-NEXT: subfic 3, 3, 43
23158 ; PWR6-NEXT: rldicl 4, 4, 8, 56
23159 ; PWR6-NEXT: subfe 3, 5, 5
23160 ; PWR6-NEXT: subfic 4, 4, 43
23161 ; PWR6-NEXT: subfe 4, 5, 5
23164 ; PWR7-LABEL: ugt_43_v2i64:
23166 ; PWR7-NEXT: addi 3, 1, -32
23167 ; PWR7-NEXT: li 5, -1
23168 ; PWR7-NEXT: stxvd2x 34, 0, 3
23169 ; PWR7-NEXT: ld 4, -24(1)
23170 ; PWR7-NEXT: ld 3, -32(1)
23171 ; PWR7-NEXT: popcntd 4, 4
23172 ; PWR7-NEXT: popcntd 3, 3
23173 ; PWR7-NEXT: cmpldi 4, 43
23174 ; PWR7-NEXT: li 4, 0
23175 ; PWR7-NEXT: iselgt 6, 5, 4
23176 ; PWR7-NEXT: cmpldi 3, 43
23177 ; PWR7-NEXT: iselgt 3, 5, 4
23178 ; PWR7-NEXT: std 6, -8(1)
23179 ; PWR7-NEXT: std 3, -16(1)
23180 ; PWR7-NEXT: addi 3, 1, -16
23181 ; PWR7-NEXT: lxvd2x 34, 0, 3
23184 ; PWR8-LABEL: ugt_43_v2i64:
23186 ; PWR8-NEXT: addis 3, 2, .LCPI184_0@toc@ha
23187 ; PWR8-NEXT: vpopcntd 2, 2
23188 ; PWR8-NEXT: addi 3, 3, .LCPI184_0@toc@l
23189 ; PWR8-NEXT: lxvd2x 35, 0, 3
23190 ; PWR8-NEXT: vcmpgtud 2, 2, 3
23193 ; PWR9-LABEL: ugt_43_v2i64:
23195 ; PWR9-NEXT: addis 3, 2, .LCPI184_0@toc@ha
23196 ; PWR9-NEXT: vpopcntd 2, 2
23197 ; PWR9-NEXT: addi 3, 3, .LCPI184_0@toc@l
23198 ; PWR9-NEXT: lxv 35, 0(3)
23199 ; PWR9-NEXT: vcmpgtud 2, 2, 3
23201 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
23202 %3 = icmp ugt <2 x i64> %2, <i64 43, i64 43>
23203 %4 = sext <2 x i1> %3 to <2 x i64>
23207 define <2 x i64> @ult_44_v2i64(<2 x i64> %0) {
23208 ; PWR5-LABEL: ult_44_v2i64:
23210 ; PWR5-NEXT: lis 5, 21845
23211 ; PWR5-NEXT: lis 6, 13107
23212 ; PWR5-NEXT: ori 5, 5, 21845
23213 ; PWR5-NEXT: rotldi 8, 4, 63
23214 ; PWR5-NEXT: rotldi 9, 3, 63
23215 ; PWR5-NEXT: rldimi 5, 5, 32, 0
23216 ; PWR5-NEXT: and 8, 8, 5
23217 ; PWR5-NEXT: and 5, 9, 5
23218 ; PWR5-NEXT: ori 6, 6, 13107
23219 ; PWR5-NEXT: sub 3, 3, 5
23220 ; PWR5-NEXT: rldimi 6, 6, 32, 0
23221 ; PWR5-NEXT: sub 4, 4, 8
23222 ; PWR5-NEXT: and 8, 3, 6
23223 ; PWR5-NEXT: rotldi 3, 3, 62
23224 ; PWR5-NEXT: and 3, 3, 6
23225 ; PWR5-NEXT: lis 7, 3855
23226 ; PWR5-NEXT: and 5, 4, 6
23227 ; PWR5-NEXT: rotldi 4, 4, 62
23228 ; PWR5-NEXT: add 3, 8, 3
23229 ; PWR5-NEXT: lis 9, 257
23230 ; PWR5-NEXT: ori 7, 7, 3855
23231 ; PWR5-NEXT: and 4, 4, 6
23232 ; PWR5-NEXT: rldicl 6, 3, 60, 4
23233 ; PWR5-NEXT: ori 9, 9, 257
23234 ; PWR5-NEXT: rldimi 7, 7, 32, 0
23235 ; PWR5-NEXT: add 4, 5, 4
23236 ; PWR5-NEXT: add 3, 3, 6
23237 ; PWR5-NEXT: rldimi 9, 9, 32, 0
23238 ; PWR5-NEXT: rldicl 5, 4, 60, 4
23239 ; PWR5-NEXT: and 3, 3, 7
23240 ; PWR5-NEXT: add 4, 4, 5
23241 ; PWR5-NEXT: mulld 3, 3, 9
23242 ; PWR5-NEXT: and 4, 4, 7
23243 ; PWR5-NEXT: rldicl 3, 3, 8, 56
23244 ; PWR5-NEXT: li 5, 44
23245 ; PWR5-NEXT: mulld 4, 4, 9
23246 ; PWR5-NEXT: subc 6, 3, 5
23247 ; PWR5-NEXT: rldicl 4, 4, 8, 56
23248 ; PWR5-NEXT: subfe 3, 3, 3
23249 ; PWR5-NEXT: subc 5, 4, 5
23250 ; PWR5-NEXT: subfe 4, 4, 4
23253 ; PWR6-LABEL: ult_44_v2i64:
23255 ; PWR6-NEXT: lis 5, 21845
23256 ; PWR6-NEXT: lis 6, 13107
23257 ; PWR6-NEXT: ori 5, 5, 21845
23258 ; PWR6-NEXT: rotldi 8, 4, 63
23259 ; PWR6-NEXT: rotldi 9, 3, 63
23260 ; PWR6-NEXT: rldimi 5, 5, 32, 0
23261 ; PWR6-NEXT: and 8, 8, 5
23262 ; PWR6-NEXT: and 5, 9, 5
23263 ; PWR6-NEXT: ori 6, 6, 13107
23264 ; PWR6-NEXT: sub 3, 3, 5
23265 ; PWR6-NEXT: rldimi 6, 6, 32, 0
23266 ; PWR6-NEXT: sub 4, 4, 8
23267 ; PWR6-NEXT: and 8, 3, 6
23268 ; PWR6-NEXT: rotldi 3, 3, 62
23269 ; PWR6-NEXT: and 3, 3, 6
23270 ; PWR6-NEXT: lis 7, 3855
23271 ; PWR6-NEXT: and 5, 4, 6
23272 ; PWR6-NEXT: rotldi 4, 4, 62
23273 ; PWR6-NEXT: add 3, 8, 3
23274 ; PWR6-NEXT: lis 9, 257
23275 ; PWR6-NEXT: ori 7, 7, 3855
23276 ; PWR6-NEXT: and 4, 4, 6
23277 ; PWR6-NEXT: rldicl 6, 3, 60, 4
23278 ; PWR6-NEXT: ori 9, 9, 257
23279 ; PWR6-NEXT: rldimi 7, 7, 32, 0
23280 ; PWR6-NEXT: add 4, 5, 4
23281 ; PWR6-NEXT: add 3, 3, 6
23282 ; PWR6-NEXT: rldimi 9, 9, 32, 0
23283 ; PWR6-NEXT: rldicl 5, 4, 60, 4
23284 ; PWR6-NEXT: and 3, 3, 7
23285 ; PWR6-NEXT: add 4, 4, 5
23286 ; PWR6-NEXT: mulld 3, 3, 9
23287 ; PWR6-NEXT: and 4, 4, 7
23288 ; PWR6-NEXT: rldicl 3, 3, 8, 56
23289 ; PWR6-NEXT: li 5, 44
23290 ; PWR6-NEXT: mulld 4, 4, 9
23291 ; PWR6-NEXT: subc 6, 3, 5
23292 ; PWR6-NEXT: rldicl 4, 4, 8, 56
23293 ; PWR6-NEXT: subfe 3, 3, 3
23294 ; PWR6-NEXT: subc 5, 4, 5
23295 ; PWR6-NEXT: subfe 4, 4, 4
23298 ; PWR7-LABEL: ult_44_v2i64:
23300 ; PWR7-NEXT: addi 3, 1, -32
23301 ; PWR7-NEXT: li 5, -1
23302 ; PWR7-NEXT: stxvd2x 34, 0, 3
23303 ; PWR7-NEXT: ld 4, -24(1)
23304 ; PWR7-NEXT: ld 3, -32(1)
23305 ; PWR7-NEXT: popcntd 4, 4
23306 ; PWR7-NEXT: popcntd 3, 3
23307 ; PWR7-NEXT: cmpldi 4, 44
23308 ; PWR7-NEXT: li 4, 0
23309 ; PWR7-NEXT: isellt 6, 5, 4
23310 ; PWR7-NEXT: cmpldi 3, 44
23311 ; PWR7-NEXT: isellt 3, 5, 4
23312 ; PWR7-NEXT: std 6, -8(1)
23313 ; PWR7-NEXT: std 3, -16(1)
23314 ; PWR7-NEXT: addi 3, 1, -16
23315 ; PWR7-NEXT: lxvd2x 34, 0, 3
23318 ; PWR8-LABEL: ult_44_v2i64:
23320 ; PWR8-NEXT: addis 3, 2, .LCPI185_0@toc@ha
23321 ; PWR8-NEXT: vpopcntd 2, 2
23322 ; PWR8-NEXT: addi 3, 3, .LCPI185_0@toc@l
23323 ; PWR8-NEXT: lxvd2x 35, 0, 3
23324 ; PWR8-NEXT: vcmpgtud 2, 3, 2
23327 ; PWR9-LABEL: ult_44_v2i64:
23329 ; PWR9-NEXT: addis 3, 2, .LCPI185_0@toc@ha
23330 ; PWR9-NEXT: vpopcntd 2, 2
23331 ; PWR9-NEXT: addi 3, 3, .LCPI185_0@toc@l
23332 ; PWR9-NEXT: lxv 35, 0(3)
23333 ; PWR9-NEXT: vcmpgtud 2, 3, 2
23335 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
23336 %3 = icmp ult <2 x i64> %2, <i64 44, i64 44>
23337 %4 = sext <2 x i1> %3 to <2 x i64>
23341 define <2 x i64> @ugt_44_v2i64(<2 x i64> %0) {
23342 ; PWR5-LABEL: ugt_44_v2i64:
23344 ; PWR5-NEXT: lis 5, 21845
23345 ; PWR5-NEXT: lis 6, 13107
23346 ; PWR5-NEXT: ori 5, 5, 21845
23347 ; PWR5-NEXT: rotldi 8, 4, 63
23348 ; PWR5-NEXT: rotldi 9, 3, 63
23349 ; PWR5-NEXT: rldimi 5, 5, 32, 0
23350 ; PWR5-NEXT: and 8, 8, 5
23351 ; PWR5-NEXT: and 5, 9, 5
23352 ; PWR5-NEXT: ori 6, 6, 13107
23353 ; PWR5-NEXT: sub 3, 3, 5
23354 ; PWR5-NEXT: rldimi 6, 6, 32, 0
23355 ; PWR5-NEXT: sub 4, 4, 8
23356 ; PWR5-NEXT: and 8, 3, 6
23357 ; PWR5-NEXT: rotldi 3, 3, 62
23358 ; PWR5-NEXT: and 3, 3, 6
23359 ; PWR5-NEXT: lis 7, 3855
23360 ; PWR5-NEXT: and 5, 4, 6
23361 ; PWR5-NEXT: rotldi 4, 4, 62
23362 ; PWR5-NEXT: add 3, 8, 3
23363 ; PWR5-NEXT: lis 9, 257
23364 ; PWR5-NEXT: ori 7, 7, 3855
23365 ; PWR5-NEXT: and 4, 4, 6
23366 ; PWR5-NEXT: rldicl 6, 3, 60, 4
23367 ; PWR5-NEXT: ori 9, 9, 257
23368 ; PWR5-NEXT: rldimi 7, 7, 32, 0
23369 ; PWR5-NEXT: add 4, 5, 4
23370 ; PWR5-NEXT: add 3, 3, 6
23371 ; PWR5-NEXT: rldimi 9, 9, 32, 0
23372 ; PWR5-NEXT: rldicl 5, 4, 60, 4
23373 ; PWR5-NEXT: and 3, 3, 7
23374 ; PWR5-NEXT: add 4, 4, 5
23375 ; PWR5-NEXT: mulld 3, 3, 9
23376 ; PWR5-NEXT: and 4, 4, 7
23377 ; PWR5-NEXT: rldicl 3, 3, 8, 56
23378 ; PWR5-NEXT: mulld 4, 4, 9
23379 ; PWR5-NEXT: li 5, 44
23380 ; PWR5-NEXT: subfic 3, 3, 44
23381 ; PWR5-NEXT: rldicl 4, 4, 8, 56
23382 ; PWR5-NEXT: subfe 3, 5, 5
23383 ; PWR5-NEXT: subfic 4, 4, 44
23384 ; PWR5-NEXT: subfe 4, 5, 5
23387 ; PWR6-LABEL: ugt_44_v2i64:
23389 ; PWR6-NEXT: lis 5, 21845
23390 ; PWR6-NEXT: lis 6, 13107
23391 ; PWR6-NEXT: ori 5, 5, 21845
23392 ; PWR6-NEXT: rotldi 8, 4, 63
23393 ; PWR6-NEXT: rotldi 9, 3, 63
23394 ; PWR6-NEXT: rldimi 5, 5, 32, 0
23395 ; PWR6-NEXT: and 8, 8, 5
23396 ; PWR6-NEXT: and 5, 9, 5
23397 ; PWR6-NEXT: ori 6, 6, 13107
23398 ; PWR6-NEXT: sub 3, 3, 5
23399 ; PWR6-NEXT: rldimi 6, 6, 32, 0
23400 ; PWR6-NEXT: sub 4, 4, 8
23401 ; PWR6-NEXT: and 8, 3, 6
23402 ; PWR6-NEXT: rotldi 3, 3, 62
23403 ; PWR6-NEXT: and 3, 3, 6
23404 ; PWR6-NEXT: lis 7, 3855
23405 ; PWR6-NEXT: and 5, 4, 6
23406 ; PWR6-NEXT: rotldi 4, 4, 62
23407 ; PWR6-NEXT: add 3, 8, 3
23408 ; PWR6-NEXT: lis 9, 257
23409 ; PWR6-NEXT: ori 7, 7, 3855
23410 ; PWR6-NEXT: and 4, 4, 6
23411 ; PWR6-NEXT: rldicl 6, 3, 60, 4
23412 ; PWR6-NEXT: ori 9, 9, 257
23413 ; PWR6-NEXT: rldimi 7, 7, 32, 0
23414 ; PWR6-NEXT: add 4, 5, 4
23415 ; PWR6-NEXT: add 3, 3, 6
23416 ; PWR6-NEXT: rldimi 9, 9, 32, 0
23417 ; PWR6-NEXT: rldicl 5, 4, 60, 4
23418 ; PWR6-NEXT: and 3, 3, 7
23419 ; PWR6-NEXT: add 4, 4, 5
23420 ; PWR6-NEXT: mulld 3, 3, 9
23421 ; PWR6-NEXT: and 4, 4, 7
23422 ; PWR6-NEXT: rldicl 3, 3, 8, 56
23423 ; PWR6-NEXT: mulld 4, 4, 9
23424 ; PWR6-NEXT: li 5, 44
23425 ; PWR6-NEXT: subfic 3, 3, 44
23426 ; PWR6-NEXT: rldicl 4, 4, 8, 56
23427 ; PWR6-NEXT: subfe 3, 5, 5
23428 ; PWR6-NEXT: subfic 4, 4, 44
23429 ; PWR6-NEXT: subfe 4, 5, 5
23432 ; PWR7-LABEL: ugt_44_v2i64:
23434 ; PWR7-NEXT: addi 3, 1, -32
23435 ; PWR7-NEXT: li 5, -1
23436 ; PWR7-NEXT: stxvd2x 34, 0, 3
23437 ; PWR7-NEXT: ld 4, -24(1)
23438 ; PWR7-NEXT: ld 3, -32(1)
23439 ; PWR7-NEXT: popcntd 4, 4
23440 ; PWR7-NEXT: popcntd 3, 3
23441 ; PWR7-NEXT: cmpldi 4, 44
23442 ; PWR7-NEXT: li 4, 0
23443 ; PWR7-NEXT: iselgt 6, 5, 4
23444 ; PWR7-NEXT: cmpldi 3, 44
23445 ; PWR7-NEXT: iselgt 3, 5, 4
23446 ; PWR7-NEXT: std 6, -8(1)
23447 ; PWR7-NEXT: std 3, -16(1)
23448 ; PWR7-NEXT: addi 3, 1, -16
23449 ; PWR7-NEXT: lxvd2x 34, 0, 3
23452 ; PWR8-LABEL: ugt_44_v2i64:
23454 ; PWR8-NEXT: addis 3, 2, .LCPI186_0@toc@ha
23455 ; PWR8-NEXT: vpopcntd 2, 2
23456 ; PWR8-NEXT: addi 3, 3, .LCPI186_0@toc@l
23457 ; PWR8-NEXT: lxvd2x 35, 0, 3
23458 ; PWR8-NEXT: vcmpgtud 2, 2, 3
23461 ; PWR9-LABEL: ugt_44_v2i64:
23463 ; PWR9-NEXT: addis 3, 2, .LCPI186_0@toc@ha
23464 ; PWR9-NEXT: vpopcntd 2, 2
23465 ; PWR9-NEXT: addi 3, 3, .LCPI186_0@toc@l
23466 ; PWR9-NEXT: lxv 35, 0(3)
23467 ; PWR9-NEXT: vcmpgtud 2, 2, 3
23469 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
23470 %3 = icmp ugt <2 x i64> %2, <i64 44, i64 44>
23471 %4 = sext <2 x i1> %3 to <2 x i64>
23475 define <2 x i64> @ult_45_v2i64(<2 x i64> %0) {
23476 ; PWR5-LABEL: ult_45_v2i64:
23478 ; PWR5-NEXT: lis 5, 21845
23479 ; PWR5-NEXT: lis 6, 13107
23480 ; PWR5-NEXT: ori 5, 5, 21845
23481 ; PWR5-NEXT: rotldi 8, 4, 63
23482 ; PWR5-NEXT: rotldi 9, 3, 63
23483 ; PWR5-NEXT: rldimi 5, 5, 32, 0
23484 ; PWR5-NEXT: and 8, 8, 5
23485 ; PWR5-NEXT: and 5, 9, 5
23486 ; PWR5-NEXT: ori 6, 6, 13107
23487 ; PWR5-NEXT: sub 3, 3, 5
23488 ; PWR5-NEXT: rldimi 6, 6, 32, 0
23489 ; PWR5-NEXT: sub 4, 4, 8
23490 ; PWR5-NEXT: and 8, 3, 6
23491 ; PWR5-NEXT: rotldi 3, 3, 62
23492 ; PWR5-NEXT: and 3, 3, 6
23493 ; PWR5-NEXT: lis 7, 3855
23494 ; PWR5-NEXT: and 5, 4, 6
23495 ; PWR5-NEXT: rotldi 4, 4, 62
23496 ; PWR5-NEXT: add 3, 8, 3
23497 ; PWR5-NEXT: lis 9, 257
23498 ; PWR5-NEXT: ori 7, 7, 3855
23499 ; PWR5-NEXT: and 4, 4, 6
23500 ; PWR5-NEXT: rldicl 6, 3, 60, 4
23501 ; PWR5-NEXT: ori 9, 9, 257
23502 ; PWR5-NEXT: rldimi 7, 7, 32, 0
23503 ; PWR5-NEXT: add 4, 5, 4
23504 ; PWR5-NEXT: add 3, 3, 6
23505 ; PWR5-NEXT: rldimi 9, 9, 32, 0
23506 ; PWR5-NEXT: rldicl 5, 4, 60, 4
23507 ; PWR5-NEXT: and 3, 3, 7
23508 ; PWR5-NEXT: add 4, 4, 5
23509 ; PWR5-NEXT: mulld 3, 3, 9
23510 ; PWR5-NEXT: and 4, 4, 7
23511 ; PWR5-NEXT: rldicl 3, 3, 8, 56
23512 ; PWR5-NEXT: li 5, 45
23513 ; PWR5-NEXT: mulld 4, 4, 9
23514 ; PWR5-NEXT: subc 6, 3, 5
23515 ; PWR5-NEXT: rldicl 4, 4, 8, 56
23516 ; PWR5-NEXT: subfe 3, 3, 3
23517 ; PWR5-NEXT: subc 5, 4, 5
23518 ; PWR5-NEXT: subfe 4, 4, 4
23521 ; PWR6-LABEL: ult_45_v2i64:
23523 ; PWR6-NEXT: lis 5, 21845
23524 ; PWR6-NEXT: lis 6, 13107
23525 ; PWR6-NEXT: ori 5, 5, 21845
23526 ; PWR6-NEXT: rotldi 8, 4, 63
23527 ; PWR6-NEXT: rotldi 9, 3, 63
23528 ; PWR6-NEXT: rldimi 5, 5, 32, 0
23529 ; PWR6-NEXT: and 8, 8, 5
23530 ; PWR6-NEXT: and 5, 9, 5
23531 ; PWR6-NEXT: ori 6, 6, 13107
23532 ; PWR6-NEXT: sub 3, 3, 5
23533 ; PWR6-NEXT: rldimi 6, 6, 32, 0
23534 ; PWR6-NEXT: sub 4, 4, 8
23535 ; PWR6-NEXT: and 8, 3, 6
23536 ; PWR6-NEXT: rotldi 3, 3, 62
23537 ; PWR6-NEXT: and 3, 3, 6
23538 ; PWR6-NEXT: lis 7, 3855
23539 ; PWR6-NEXT: and 5, 4, 6
23540 ; PWR6-NEXT: rotldi 4, 4, 62
23541 ; PWR6-NEXT: add 3, 8, 3
23542 ; PWR6-NEXT: lis 9, 257
23543 ; PWR6-NEXT: ori 7, 7, 3855
23544 ; PWR6-NEXT: and 4, 4, 6
23545 ; PWR6-NEXT: rldicl 6, 3, 60, 4
23546 ; PWR6-NEXT: ori 9, 9, 257
23547 ; PWR6-NEXT: rldimi 7, 7, 32, 0
23548 ; PWR6-NEXT: add 4, 5, 4
23549 ; PWR6-NEXT: add 3, 3, 6
23550 ; PWR6-NEXT: rldimi 9, 9, 32, 0
23551 ; PWR6-NEXT: rldicl 5, 4, 60, 4
23552 ; PWR6-NEXT: and 3, 3, 7
23553 ; PWR6-NEXT: add 4, 4, 5
23554 ; PWR6-NEXT: mulld 3, 3, 9
23555 ; PWR6-NEXT: and 4, 4, 7
23556 ; PWR6-NEXT: rldicl 3, 3, 8, 56
23557 ; PWR6-NEXT: li 5, 45
23558 ; PWR6-NEXT: mulld 4, 4, 9
23559 ; PWR6-NEXT: subc 6, 3, 5
23560 ; PWR6-NEXT: rldicl 4, 4, 8, 56
23561 ; PWR6-NEXT: subfe 3, 3, 3
23562 ; PWR6-NEXT: subc 5, 4, 5
23563 ; PWR6-NEXT: subfe 4, 4, 4
23566 ; PWR7-LABEL: ult_45_v2i64:
23568 ; PWR7-NEXT: addi 3, 1, -32
23569 ; PWR7-NEXT: li 5, -1
23570 ; PWR7-NEXT: stxvd2x 34, 0, 3
23571 ; PWR7-NEXT: ld 4, -24(1)
23572 ; PWR7-NEXT: ld 3, -32(1)
23573 ; PWR7-NEXT: popcntd 4, 4
23574 ; PWR7-NEXT: popcntd 3, 3
23575 ; PWR7-NEXT: cmpldi 4, 45
23576 ; PWR7-NEXT: li 4, 0
23577 ; PWR7-NEXT: isellt 6, 5, 4
23578 ; PWR7-NEXT: cmpldi 3, 45
23579 ; PWR7-NEXT: isellt 3, 5, 4
23580 ; PWR7-NEXT: std 6, -8(1)
23581 ; PWR7-NEXT: std 3, -16(1)
23582 ; PWR7-NEXT: addi 3, 1, -16
23583 ; PWR7-NEXT: lxvd2x 34, 0, 3
23586 ; PWR8-LABEL: ult_45_v2i64:
23588 ; PWR8-NEXT: addis 3, 2, .LCPI187_0@toc@ha
23589 ; PWR8-NEXT: vpopcntd 2, 2
23590 ; PWR8-NEXT: addi 3, 3, .LCPI187_0@toc@l
23591 ; PWR8-NEXT: lxvd2x 35, 0, 3
23592 ; PWR8-NEXT: vcmpgtud 2, 3, 2
23595 ; PWR9-LABEL: ult_45_v2i64:
23597 ; PWR9-NEXT: addis 3, 2, .LCPI187_0@toc@ha
23598 ; PWR9-NEXT: vpopcntd 2, 2
23599 ; PWR9-NEXT: addi 3, 3, .LCPI187_0@toc@l
23600 ; PWR9-NEXT: lxv 35, 0(3)
23601 ; PWR9-NEXT: vcmpgtud 2, 3, 2
23603 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
23604 %3 = icmp ult <2 x i64> %2, <i64 45, i64 45>
23605 %4 = sext <2 x i1> %3 to <2 x i64>
23609 define <2 x i64> @ugt_45_v2i64(<2 x i64> %0) {
23610 ; PWR5-LABEL: ugt_45_v2i64:
23612 ; PWR5-NEXT: lis 5, 21845
23613 ; PWR5-NEXT: lis 6, 13107
23614 ; PWR5-NEXT: ori 5, 5, 21845
23615 ; PWR5-NEXT: rotldi 8, 4, 63
23616 ; PWR5-NEXT: rotldi 9, 3, 63
23617 ; PWR5-NEXT: rldimi 5, 5, 32, 0
23618 ; PWR5-NEXT: and 8, 8, 5
23619 ; PWR5-NEXT: and 5, 9, 5
23620 ; PWR5-NEXT: ori 6, 6, 13107
23621 ; PWR5-NEXT: sub 3, 3, 5
23622 ; PWR5-NEXT: rldimi 6, 6, 32, 0
23623 ; PWR5-NEXT: sub 4, 4, 8
23624 ; PWR5-NEXT: and 8, 3, 6
23625 ; PWR5-NEXT: rotldi 3, 3, 62
23626 ; PWR5-NEXT: and 3, 3, 6
23627 ; PWR5-NEXT: lis 7, 3855
23628 ; PWR5-NEXT: and 5, 4, 6
23629 ; PWR5-NEXT: rotldi 4, 4, 62
23630 ; PWR5-NEXT: add 3, 8, 3
23631 ; PWR5-NEXT: lis 9, 257
23632 ; PWR5-NEXT: ori 7, 7, 3855
23633 ; PWR5-NEXT: and 4, 4, 6
23634 ; PWR5-NEXT: rldicl 6, 3, 60, 4
23635 ; PWR5-NEXT: ori 9, 9, 257
23636 ; PWR5-NEXT: rldimi 7, 7, 32, 0
23637 ; PWR5-NEXT: add 4, 5, 4
23638 ; PWR5-NEXT: add 3, 3, 6
23639 ; PWR5-NEXT: rldimi 9, 9, 32, 0
23640 ; PWR5-NEXT: rldicl 5, 4, 60, 4
23641 ; PWR5-NEXT: and 3, 3, 7
23642 ; PWR5-NEXT: add 4, 4, 5
23643 ; PWR5-NEXT: mulld 3, 3, 9
23644 ; PWR5-NEXT: and 4, 4, 7
23645 ; PWR5-NEXT: rldicl 3, 3, 8, 56
23646 ; PWR5-NEXT: mulld 4, 4, 9
23647 ; PWR5-NEXT: li 5, 45
23648 ; PWR5-NEXT: subfic 3, 3, 45
23649 ; PWR5-NEXT: rldicl 4, 4, 8, 56
23650 ; PWR5-NEXT: subfe 3, 5, 5
23651 ; PWR5-NEXT: subfic 4, 4, 45
23652 ; PWR5-NEXT: subfe 4, 5, 5
23655 ; PWR6-LABEL: ugt_45_v2i64:
23657 ; PWR6-NEXT: lis 5, 21845
23658 ; PWR6-NEXT: lis 6, 13107
23659 ; PWR6-NEXT: ori 5, 5, 21845
23660 ; PWR6-NEXT: rotldi 8, 4, 63
23661 ; PWR6-NEXT: rotldi 9, 3, 63
23662 ; PWR6-NEXT: rldimi 5, 5, 32, 0
23663 ; PWR6-NEXT: and 8, 8, 5
23664 ; PWR6-NEXT: and 5, 9, 5
23665 ; PWR6-NEXT: ori 6, 6, 13107
23666 ; PWR6-NEXT: sub 3, 3, 5
23667 ; PWR6-NEXT: rldimi 6, 6, 32, 0
23668 ; PWR6-NEXT: sub 4, 4, 8
23669 ; PWR6-NEXT: and 8, 3, 6
23670 ; PWR6-NEXT: rotldi 3, 3, 62
23671 ; PWR6-NEXT: and 3, 3, 6
23672 ; PWR6-NEXT: lis 7, 3855
23673 ; PWR6-NEXT: and 5, 4, 6
23674 ; PWR6-NEXT: rotldi 4, 4, 62
23675 ; PWR6-NEXT: add 3, 8, 3
23676 ; PWR6-NEXT: lis 9, 257
23677 ; PWR6-NEXT: ori 7, 7, 3855
23678 ; PWR6-NEXT: and 4, 4, 6
23679 ; PWR6-NEXT: rldicl 6, 3, 60, 4
23680 ; PWR6-NEXT: ori 9, 9, 257
23681 ; PWR6-NEXT: rldimi 7, 7, 32, 0
23682 ; PWR6-NEXT: add 4, 5, 4
23683 ; PWR6-NEXT: add 3, 3, 6
23684 ; PWR6-NEXT: rldimi 9, 9, 32, 0
23685 ; PWR6-NEXT: rldicl 5, 4, 60, 4
23686 ; PWR6-NEXT: and 3, 3, 7
23687 ; PWR6-NEXT: add 4, 4, 5
23688 ; PWR6-NEXT: mulld 3, 3, 9
23689 ; PWR6-NEXT: and 4, 4, 7
23690 ; PWR6-NEXT: rldicl 3, 3, 8, 56
23691 ; PWR6-NEXT: mulld 4, 4, 9
23692 ; PWR6-NEXT: li 5, 45
23693 ; PWR6-NEXT: subfic 3, 3, 45
23694 ; PWR6-NEXT: rldicl 4, 4, 8, 56
23695 ; PWR6-NEXT: subfe 3, 5, 5
23696 ; PWR6-NEXT: subfic 4, 4, 45
23697 ; PWR6-NEXT: subfe 4, 5, 5
23700 ; PWR7-LABEL: ugt_45_v2i64:
23702 ; PWR7-NEXT: addi 3, 1, -32
23703 ; PWR7-NEXT: li 5, -1
23704 ; PWR7-NEXT: stxvd2x 34, 0, 3
23705 ; PWR7-NEXT: ld 4, -24(1)
23706 ; PWR7-NEXT: ld 3, -32(1)
23707 ; PWR7-NEXT: popcntd 4, 4
23708 ; PWR7-NEXT: popcntd 3, 3
23709 ; PWR7-NEXT: cmpldi 4, 45
23710 ; PWR7-NEXT: li 4, 0
23711 ; PWR7-NEXT: iselgt 6, 5, 4
23712 ; PWR7-NEXT: cmpldi 3, 45
23713 ; PWR7-NEXT: iselgt 3, 5, 4
23714 ; PWR7-NEXT: std 6, -8(1)
23715 ; PWR7-NEXT: std 3, -16(1)
23716 ; PWR7-NEXT: addi 3, 1, -16
23717 ; PWR7-NEXT: lxvd2x 34, 0, 3
23720 ; PWR8-LABEL: ugt_45_v2i64:
23722 ; PWR8-NEXT: addis 3, 2, .LCPI188_0@toc@ha
23723 ; PWR8-NEXT: vpopcntd 2, 2
23724 ; PWR8-NEXT: addi 3, 3, .LCPI188_0@toc@l
23725 ; PWR8-NEXT: lxvd2x 35, 0, 3
23726 ; PWR8-NEXT: vcmpgtud 2, 2, 3
23729 ; PWR9-LABEL: ugt_45_v2i64:
23731 ; PWR9-NEXT: addis 3, 2, .LCPI188_0@toc@ha
23732 ; PWR9-NEXT: vpopcntd 2, 2
23733 ; PWR9-NEXT: addi 3, 3, .LCPI188_0@toc@l
23734 ; PWR9-NEXT: lxv 35, 0(3)
23735 ; PWR9-NEXT: vcmpgtud 2, 2, 3
23737 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
23738 %3 = icmp ugt <2 x i64> %2, <i64 45, i64 45>
23739 %4 = sext <2 x i1> %3 to <2 x i64>
23743 define <2 x i64> @ult_46_v2i64(<2 x i64> %0) {
23744 ; PWR5-LABEL: ult_46_v2i64:
23746 ; PWR5-NEXT: lis 5, 21845
23747 ; PWR5-NEXT: lis 6, 13107
23748 ; PWR5-NEXT: ori 5, 5, 21845
23749 ; PWR5-NEXT: rotldi 8, 4, 63
23750 ; PWR5-NEXT: rotldi 9, 3, 63
23751 ; PWR5-NEXT: rldimi 5, 5, 32, 0
23752 ; PWR5-NEXT: and 8, 8, 5
23753 ; PWR5-NEXT: and 5, 9, 5
23754 ; PWR5-NEXT: ori 6, 6, 13107
23755 ; PWR5-NEXT: sub 3, 3, 5
23756 ; PWR5-NEXT: rldimi 6, 6, 32, 0
23757 ; PWR5-NEXT: sub 4, 4, 8
23758 ; PWR5-NEXT: and 8, 3, 6
23759 ; PWR5-NEXT: rotldi 3, 3, 62
23760 ; PWR5-NEXT: and 3, 3, 6
23761 ; PWR5-NEXT: lis 7, 3855
23762 ; PWR5-NEXT: and 5, 4, 6
23763 ; PWR5-NEXT: rotldi 4, 4, 62
23764 ; PWR5-NEXT: add 3, 8, 3
23765 ; PWR5-NEXT: lis 9, 257
23766 ; PWR5-NEXT: ori 7, 7, 3855
23767 ; PWR5-NEXT: and 4, 4, 6
23768 ; PWR5-NEXT: rldicl 6, 3, 60, 4
23769 ; PWR5-NEXT: ori 9, 9, 257
23770 ; PWR5-NEXT: rldimi 7, 7, 32, 0
23771 ; PWR5-NEXT: add 4, 5, 4
23772 ; PWR5-NEXT: add 3, 3, 6
23773 ; PWR5-NEXT: rldimi 9, 9, 32, 0
23774 ; PWR5-NEXT: rldicl 5, 4, 60, 4
23775 ; PWR5-NEXT: and 3, 3, 7
23776 ; PWR5-NEXT: add 4, 4, 5
23777 ; PWR5-NEXT: mulld 3, 3, 9
23778 ; PWR5-NEXT: and 4, 4, 7
23779 ; PWR5-NEXT: rldicl 3, 3, 8, 56
23780 ; PWR5-NEXT: li 5, 46
23781 ; PWR5-NEXT: mulld 4, 4, 9
23782 ; PWR5-NEXT: subc 6, 3, 5
23783 ; PWR5-NEXT: rldicl 4, 4, 8, 56
23784 ; PWR5-NEXT: subfe 3, 3, 3
23785 ; PWR5-NEXT: subc 5, 4, 5
23786 ; PWR5-NEXT: subfe 4, 4, 4
23789 ; PWR6-LABEL: ult_46_v2i64:
23791 ; PWR6-NEXT: lis 5, 21845
23792 ; PWR6-NEXT: lis 6, 13107
23793 ; PWR6-NEXT: ori 5, 5, 21845
23794 ; PWR6-NEXT: rotldi 8, 4, 63
23795 ; PWR6-NEXT: rotldi 9, 3, 63
23796 ; PWR6-NEXT: rldimi 5, 5, 32, 0
23797 ; PWR6-NEXT: and 8, 8, 5
23798 ; PWR6-NEXT: and 5, 9, 5
23799 ; PWR6-NEXT: ori 6, 6, 13107
23800 ; PWR6-NEXT: sub 3, 3, 5
23801 ; PWR6-NEXT: rldimi 6, 6, 32, 0
23802 ; PWR6-NEXT: sub 4, 4, 8
23803 ; PWR6-NEXT: and 8, 3, 6
23804 ; PWR6-NEXT: rotldi 3, 3, 62
23805 ; PWR6-NEXT: and 3, 3, 6
23806 ; PWR6-NEXT: lis 7, 3855
23807 ; PWR6-NEXT: and 5, 4, 6
23808 ; PWR6-NEXT: rotldi 4, 4, 62
23809 ; PWR6-NEXT: add 3, 8, 3
23810 ; PWR6-NEXT: lis 9, 257
23811 ; PWR6-NEXT: ori 7, 7, 3855
23812 ; PWR6-NEXT: and 4, 4, 6
23813 ; PWR6-NEXT: rldicl 6, 3, 60, 4
23814 ; PWR6-NEXT: ori 9, 9, 257
23815 ; PWR6-NEXT: rldimi 7, 7, 32, 0
23816 ; PWR6-NEXT: add 4, 5, 4
23817 ; PWR6-NEXT: add 3, 3, 6
23818 ; PWR6-NEXT: rldimi 9, 9, 32, 0
23819 ; PWR6-NEXT: rldicl 5, 4, 60, 4
23820 ; PWR6-NEXT: and 3, 3, 7
23821 ; PWR6-NEXT: add 4, 4, 5
23822 ; PWR6-NEXT: mulld 3, 3, 9
23823 ; PWR6-NEXT: and 4, 4, 7
23824 ; PWR6-NEXT: rldicl 3, 3, 8, 56
23825 ; PWR6-NEXT: li 5, 46
23826 ; PWR6-NEXT: mulld 4, 4, 9
23827 ; PWR6-NEXT: subc 6, 3, 5
23828 ; PWR6-NEXT: rldicl 4, 4, 8, 56
23829 ; PWR6-NEXT: subfe 3, 3, 3
23830 ; PWR6-NEXT: subc 5, 4, 5
23831 ; PWR6-NEXT: subfe 4, 4, 4
23834 ; PWR7-LABEL: ult_46_v2i64:
23836 ; PWR7-NEXT: addi 3, 1, -32
23837 ; PWR7-NEXT: li 5, -1
23838 ; PWR7-NEXT: stxvd2x 34, 0, 3
23839 ; PWR7-NEXT: ld 4, -24(1)
23840 ; PWR7-NEXT: ld 3, -32(1)
23841 ; PWR7-NEXT: popcntd 4, 4
23842 ; PWR7-NEXT: popcntd 3, 3
23843 ; PWR7-NEXT: cmpldi 4, 46
23844 ; PWR7-NEXT: li 4, 0
23845 ; PWR7-NEXT: isellt 6, 5, 4
23846 ; PWR7-NEXT: cmpldi 3, 46
23847 ; PWR7-NEXT: isellt 3, 5, 4
23848 ; PWR7-NEXT: std 6, -8(1)
23849 ; PWR7-NEXT: std 3, -16(1)
23850 ; PWR7-NEXT: addi 3, 1, -16
23851 ; PWR7-NEXT: lxvd2x 34, 0, 3
23854 ; PWR8-LABEL: ult_46_v2i64:
23856 ; PWR8-NEXT: addis 3, 2, .LCPI189_0@toc@ha
23857 ; PWR8-NEXT: vpopcntd 2, 2
23858 ; PWR8-NEXT: addi 3, 3, .LCPI189_0@toc@l
23859 ; PWR8-NEXT: lxvd2x 35, 0, 3
23860 ; PWR8-NEXT: vcmpgtud 2, 3, 2
23863 ; PWR9-LABEL: ult_46_v2i64:
23865 ; PWR9-NEXT: addis 3, 2, .LCPI189_0@toc@ha
23866 ; PWR9-NEXT: vpopcntd 2, 2
23867 ; PWR9-NEXT: addi 3, 3, .LCPI189_0@toc@l
23868 ; PWR9-NEXT: lxv 35, 0(3)
23869 ; PWR9-NEXT: vcmpgtud 2, 3, 2
23871 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
23872 %3 = icmp ult <2 x i64> %2, <i64 46, i64 46>
23873 %4 = sext <2 x i1> %3 to <2 x i64>
23877 define <2 x i64> @ugt_46_v2i64(<2 x i64> %0) {
23878 ; PWR5-LABEL: ugt_46_v2i64:
23880 ; PWR5-NEXT: lis 5, 21845
23881 ; PWR5-NEXT: lis 6, 13107
23882 ; PWR5-NEXT: ori 5, 5, 21845
23883 ; PWR5-NEXT: rotldi 8, 4, 63
23884 ; PWR5-NEXT: rotldi 9, 3, 63
23885 ; PWR5-NEXT: rldimi 5, 5, 32, 0
23886 ; PWR5-NEXT: and 8, 8, 5
23887 ; PWR5-NEXT: and 5, 9, 5
23888 ; PWR5-NEXT: ori 6, 6, 13107
23889 ; PWR5-NEXT: sub 3, 3, 5
23890 ; PWR5-NEXT: rldimi 6, 6, 32, 0
23891 ; PWR5-NEXT: sub 4, 4, 8
23892 ; PWR5-NEXT: and 8, 3, 6
23893 ; PWR5-NEXT: rotldi 3, 3, 62
23894 ; PWR5-NEXT: and 3, 3, 6
23895 ; PWR5-NEXT: lis 7, 3855
23896 ; PWR5-NEXT: and 5, 4, 6
23897 ; PWR5-NEXT: rotldi 4, 4, 62
23898 ; PWR5-NEXT: add 3, 8, 3
23899 ; PWR5-NEXT: lis 9, 257
23900 ; PWR5-NEXT: ori 7, 7, 3855
23901 ; PWR5-NEXT: and 4, 4, 6
23902 ; PWR5-NEXT: rldicl 6, 3, 60, 4
23903 ; PWR5-NEXT: ori 9, 9, 257
23904 ; PWR5-NEXT: rldimi 7, 7, 32, 0
23905 ; PWR5-NEXT: add 4, 5, 4
23906 ; PWR5-NEXT: add 3, 3, 6
23907 ; PWR5-NEXT: rldimi 9, 9, 32, 0
23908 ; PWR5-NEXT: rldicl 5, 4, 60, 4
23909 ; PWR5-NEXT: and 3, 3, 7
23910 ; PWR5-NEXT: add 4, 4, 5
23911 ; PWR5-NEXT: mulld 3, 3, 9
23912 ; PWR5-NEXT: and 4, 4, 7
23913 ; PWR5-NEXT: rldicl 3, 3, 8, 56
23914 ; PWR5-NEXT: mulld 4, 4, 9
23915 ; PWR5-NEXT: li 5, 46
23916 ; PWR5-NEXT: subfic 3, 3, 46
23917 ; PWR5-NEXT: rldicl 4, 4, 8, 56
23918 ; PWR5-NEXT: subfe 3, 5, 5
23919 ; PWR5-NEXT: subfic 4, 4, 46
23920 ; PWR5-NEXT: subfe 4, 5, 5
23923 ; PWR6-LABEL: ugt_46_v2i64:
23925 ; PWR6-NEXT: lis 5, 21845
23926 ; PWR6-NEXT: lis 6, 13107
23927 ; PWR6-NEXT: ori 5, 5, 21845
23928 ; PWR6-NEXT: rotldi 8, 4, 63
23929 ; PWR6-NEXT: rotldi 9, 3, 63
23930 ; PWR6-NEXT: rldimi 5, 5, 32, 0
23931 ; PWR6-NEXT: and 8, 8, 5
23932 ; PWR6-NEXT: and 5, 9, 5
23933 ; PWR6-NEXT: ori 6, 6, 13107
23934 ; PWR6-NEXT: sub 3, 3, 5
23935 ; PWR6-NEXT: rldimi 6, 6, 32, 0
23936 ; PWR6-NEXT: sub 4, 4, 8
23937 ; PWR6-NEXT: and 8, 3, 6
23938 ; PWR6-NEXT: rotldi 3, 3, 62
23939 ; PWR6-NEXT: and 3, 3, 6
23940 ; PWR6-NEXT: lis 7, 3855
23941 ; PWR6-NEXT: and 5, 4, 6
23942 ; PWR6-NEXT: rotldi 4, 4, 62
23943 ; PWR6-NEXT: add 3, 8, 3
23944 ; PWR6-NEXT: lis 9, 257
23945 ; PWR6-NEXT: ori 7, 7, 3855
23946 ; PWR6-NEXT: and 4, 4, 6
23947 ; PWR6-NEXT: rldicl 6, 3, 60, 4
23948 ; PWR6-NEXT: ori 9, 9, 257
23949 ; PWR6-NEXT: rldimi 7, 7, 32, 0
23950 ; PWR6-NEXT: add 4, 5, 4
23951 ; PWR6-NEXT: add 3, 3, 6
23952 ; PWR6-NEXT: rldimi 9, 9, 32, 0
23953 ; PWR6-NEXT: rldicl 5, 4, 60, 4
23954 ; PWR6-NEXT: and 3, 3, 7
23955 ; PWR6-NEXT: add 4, 4, 5
23956 ; PWR6-NEXT: mulld 3, 3, 9
23957 ; PWR6-NEXT: and 4, 4, 7
23958 ; PWR6-NEXT: rldicl 3, 3, 8, 56
23959 ; PWR6-NEXT: mulld 4, 4, 9
23960 ; PWR6-NEXT: li 5, 46
23961 ; PWR6-NEXT: subfic 3, 3, 46
23962 ; PWR6-NEXT: rldicl 4, 4, 8, 56
23963 ; PWR6-NEXT: subfe 3, 5, 5
23964 ; PWR6-NEXT: subfic 4, 4, 46
23965 ; PWR6-NEXT: subfe 4, 5, 5
23968 ; PWR7-LABEL: ugt_46_v2i64:
23970 ; PWR7-NEXT: addi 3, 1, -32
23971 ; PWR7-NEXT: li 5, -1
23972 ; PWR7-NEXT: stxvd2x 34, 0, 3
23973 ; PWR7-NEXT: ld 4, -24(1)
23974 ; PWR7-NEXT: ld 3, -32(1)
23975 ; PWR7-NEXT: popcntd 4, 4
23976 ; PWR7-NEXT: popcntd 3, 3
23977 ; PWR7-NEXT: cmpldi 4, 46
23978 ; PWR7-NEXT: li 4, 0
23979 ; PWR7-NEXT: iselgt 6, 5, 4
23980 ; PWR7-NEXT: cmpldi 3, 46
23981 ; PWR7-NEXT: iselgt 3, 5, 4
23982 ; PWR7-NEXT: std 6, -8(1)
23983 ; PWR7-NEXT: std 3, -16(1)
23984 ; PWR7-NEXT: addi 3, 1, -16
23985 ; PWR7-NEXT: lxvd2x 34, 0, 3
23988 ; PWR8-LABEL: ugt_46_v2i64:
23990 ; PWR8-NEXT: addis 3, 2, .LCPI190_0@toc@ha
23991 ; PWR8-NEXT: vpopcntd 2, 2
23992 ; PWR8-NEXT: addi 3, 3, .LCPI190_0@toc@l
23993 ; PWR8-NEXT: lxvd2x 35, 0, 3
23994 ; PWR8-NEXT: vcmpgtud 2, 2, 3
23997 ; PWR9-LABEL: ugt_46_v2i64:
23999 ; PWR9-NEXT: addis 3, 2, .LCPI190_0@toc@ha
24000 ; PWR9-NEXT: vpopcntd 2, 2
24001 ; PWR9-NEXT: addi 3, 3, .LCPI190_0@toc@l
24002 ; PWR9-NEXT: lxv 35, 0(3)
24003 ; PWR9-NEXT: vcmpgtud 2, 2, 3
24005 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
24006 %3 = icmp ugt <2 x i64> %2, <i64 46, i64 46>
24007 %4 = sext <2 x i1> %3 to <2 x i64>
24011 define <2 x i64> @ult_47_v2i64(<2 x i64> %0) {
24012 ; PWR5-LABEL: ult_47_v2i64:
24014 ; PWR5-NEXT: lis 5, 21845
24015 ; PWR5-NEXT: lis 6, 13107
24016 ; PWR5-NEXT: ori 5, 5, 21845
24017 ; PWR5-NEXT: rotldi 8, 4, 63
24018 ; PWR5-NEXT: rotldi 9, 3, 63
24019 ; PWR5-NEXT: rldimi 5, 5, 32, 0
24020 ; PWR5-NEXT: and 8, 8, 5
24021 ; PWR5-NEXT: and 5, 9, 5
24022 ; PWR5-NEXT: ori 6, 6, 13107
24023 ; PWR5-NEXT: sub 3, 3, 5
24024 ; PWR5-NEXT: rldimi 6, 6, 32, 0
24025 ; PWR5-NEXT: sub 4, 4, 8
24026 ; PWR5-NEXT: and 8, 3, 6
24027 ; PWR5-NEXT: rotldi 3, 3, 62
24028 ; PWR5-NEXT: and 3, 3, 6
24029 ; PWR5-NEXT: lis 7, 3855
24030 ; PWR5-NEXT: and 5, 4, 6
24031 ; PWR5-NEXT: rotldi 4, 4, 62
24032 ; PWR5-NEXT: add 3, 8, 3
24033 ; PWR5-NEXT: lis 9, 257
24034 ; PWR5-NEXT: ori 7, 7, 3855
24035 ; PWR5-NEXT: and 4, 4, 6
24036 ; PWR5-NEXT: rldicl 6, 3, 60, 4
24037 ; PWR5-NEXT: ori 9, 9, 257
24038 ; PWR5-NEXT: rldimi 7, 7, 32, 0
24039 ; PWR5-NEXT: add 4, 5, 4
24040 ; PWR5-NEXT: add 3, 3, 6
24041 ; PWR5-NEXT: rldimi 9, 9, 32, 0
24042 ; PWR5-NEXT: rldicl 5, 4, 60, 4
24043 ; PWR5-NEXT: and 3, 3, 7
24044 ; PWR5-NEXT: add 4, 4, 5
24045 ; PWR5-NEXT: mulld 3, 3, 9
24046 ; PWR5-NEXT: and 4, 4, 7
24047 ; PWR5-NEXT: rldicl 3, 3, 8, 56
24048 ; PWR5-NEXT: li 5, 47
24049 ; PWR5-NEXT: mulld 4, 4, 9
24050 ; PWR5-NEXT: subc 6, 3, 5
24051 ; PWR5-NEXT: rldicl 4, 4, 8, 56
24052 ; PWR5-NEXT: subfe 3, 3, 3
24053 ; PWR5-NEXT: subc 5, 4, 5
24054 ; PWR5-NEXT: subfe 4, 4, 4
24057 ; PWR6-LABEL: ult_47_v2i64:
24059 ; PWR6-NEXT: lis 5, 21845
24060 ; PWR6-NEXT: lis 6, 13107
24061 ; PWR6-NEXT: ori 5, 5, 21845
24062 ; PWR6-NEXT: rotldi 8, 4, 63
24063 ; PWR6-NEXT: rotldi 9, 3, 63
24064 ; PWR6-NEXT: rldimi 5, 5, 32, 0
24065 ; PWR6-NEXT: and 8, 8, 5
24066 ; PWR6-NEXT: and 5, 9, 5
24067 ; PWR6-NEXT: ori 6, 6, 13107
24068 ; PWR6-NEXT: sub 3, 3, 5
24069 ; PWR6-NEXT: rldimi 6, 6, 32, 0
24070 ; PWR6-NEXT: sub 4, 4, 8
24071 ; PWR6-NEXT: and 8, 3, 6
24072 ; PWR6-NEXT: rotldi 3, 3, 62
24073 ; PWR6-NEXT: and 3, 3, 6
24074 ; PWR6-NEXT: lis 7, 3855
24075 ; PWR6-NEXT: and 5, 4, 6
24076 ; PWR6-NEXT: rotldi 4, 4, 62
24077 ; PWR6-NEXT: add 3, 8, 3
24078 ; PWR6-NEXT: lis 9, 257
24079 ; PWR6-NEXT: ori 7, 7, 3855
24080 ; PWR6-NEXT: and 4, 4, 6
24081 ; PWR6-NEXT: rldicl 6, 3, 60, 4
24082 ; PWR6-NEXT: ori 9, 9, 257
24083 ; PWR6-NEXT: rldimi 7, 7, 32, 0
24084 ; PWR6-NEXT: add 4, 5, 4
24085 ; PWR6-NEXT: add 3, 3, 6
24086 ; PWR6-NEXT: rldimi 9, 9, 32, 0
24087 ; PWR6-NEXT: rldicl 5, 4, 60, 4
24088 ; PWR6-NEXT: and 3, 3, 7
24089 ; PWR6-NEXT: add 4, 4, 5
24090 ; PWR6-NEXT: mulld 3, 3, 9
24091 ; PWR6-NEXT: and 4, 4, 7
24092 ; PWR6-NEXT: rldicl 3, 3, 8, 56
24093 ; PWR6-NEXT: li 5, 47
24094 ; PWR6-NEXT: mulld 4, 4, 9
24095 ; PWR6-NEXT: subc 6, 3, 5
24096 ; PWR6-NEXT: rldicl 4, 4, 8, 56
24097 ; PWR6-NEXT: subfe 3, 3, 3
24098 ; PWR6-NEXT: subc 5, 4, 5
24099 ; PWR6-NEXT: subfe 4, 4, 4
24102 ; PWR7-LABEL: ult_47_v2i64:
24104 ; PWR7-NEXT: addi 3, 1, -32
24105 ; PWR7-NEXT: li 5, -1
24106 ; PWR7-NEXT: stxvd2x 34, 0, 3
24107 ; PWR7-NEXT: ld 4, -24(1)
24108 ; PWR7-NEXT: ld 3, -32(1)
24109 ; PWR7-NEXT: popcntd 4, 4
24110 ; PWR7-NEXT: popcntd 3, 3
24111 ; PWR7-NEXT: cmpldi 4, 47
24112 ; PWR7-NEXT: li 4, 0
24113 ; PWR7-NEXT: isellt 6, 5, 4
24114 ; PWR7-NEXT: cmpldi 3, 47
24115 ; PWR7-NEXT: isellt 3, 5, 4
24116 ; PWR7-NEXT: std 6, -8(1)
24117 ; PWR7-NEXT: std 3, -16(1)
24118 ; PWR7-NEXT: addi 3, 1, -16
24119 ; PWR7-NEXT: lxvd2x 34, 0, 3
24122 ; PWR8-LABEL: ult_47_v2i64:
24124 ; PWR8-NEXT: addis 3, 2, .LCPI191_0@toc@ha
24125 ; PWR8-NEXT: vpopcntd 2, 2
24126 ; PWR8-NEXT: addi 3, 3, .LCPI191_0@toc@l
24127 ; PWR8-NEXT: lxvd2x 35, 0, 3
24128 ; PWR8-NEXT: vcmpgtud 2, 3, 2
24131 ; PWR9-LABEL: ult_47_v2i64:
24133 ; PWR9-NEXT: addis 3, 2, .LCPI191_0@toc@ha
24134 ; PWR9-NEXT: vpopcntd 2, 2
24135 ; PWR9-NEXT: addi 3, 3, .LCPI191_0@toc@l
24136 ; PWR9-NEXT: lxv 35, 0(3)
24137 ; PWR9-NEXT: vcmpgtud 2, 3, 2
24139 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
24140 %3 = icmp ult <2 x i64> %2, <i64 47, i64 47>
24141 %4 = sext <2 x i1> %3 to <2 x i64>
24145 define <2 x i64> @ugt_47_v2i64(<2 x i64> %0) {
24146 ; PWR5-LABEL: ugt_47_v2i64:
24148 ; PWR5-NEXT: lis 5, 21845
24149 ; PWR5-NEXT: lis 6, 13107
24150 ; PWR5-NEXT: ori 5, 5, 21845
24151 ; PWR5-NEXT: rotldi 8, 4, 63
24152 ; PWR5-NEXT: rotldi 9, 3, 63
24153 ; PWR5-NEXT: rldimi 5, 5, 32, 0
24154 ; PWR5-NEXT: and 8, 8, 5
24155 ; PWR5-NEXT: and 5, 9, 5
24156 ; PWR5-NEXT: ori 6, 6, 13107
24157 ; PWR5-NEXT: sub 3, 3, 5
24158 ; PWR5-NEXT: rldimi 6, 6, 32, 0
24159 ; PWR5-NEXT: sub 4, 4, 8
24160 ; PWR5-NEXT: and 8, 3, 6
24161 ; PWR5-NEXT: rotldi 3, 3, 62
24162 ; PWR5-NEXT: and 3, 3, 6
24163 ; PWR5-NEXT: lis 7, 3855
24164 ; PWR5-NEXT: and 5, 4, 6
24165 ; PWR5-NEXT: rotldi 4, 4, 62
24166 ; PWR5-NEXT: add 3, 8, 3
24167 ; PWR5-NEXT: lis 9, 257
24168 ; PWR5-NEXT: ori 7, 7, 3855
24169 ; PWR5-NEXT: and 4, 4, 6
24170 ; PWR5-NEXT: rldicl 6, 3, 60, 4
24171 ; PWR5-NEXT: ori 9, 9, 257
24172 ; PWR5-NEXT: rldimi 7, 7, 32, 0
24173 ; PWR5-NEXT: add 4, 5, 4
24174 ; PWR5-NEXT: add 3, 3, 6
24175 ; PWR5-NEXT: rldimi 9, 9, 32, 0
24176 ; PWR5-NEXT: rldicl 5, 4, 60, 4
24177 ; PWR5-NEXT: and 3, 3, 7
24178 ; PWR5-NEXT: add 4, 4, 5
24179 ; PWR5-NEXT: mulld 3, 3, 9
24180 ; PWR5-NEXT: and 4, 4, 7
24181 ; PWR5-NEXT: rldicl 3, 3, 8, 56
24182 ; PWR5-NEXT: mulld 4, 4, 9
24183 ; PWR5-NEXT: li 5, 47
24184 ; PWR5-NEXT: subfic 3, 3, 47
24185 ; PWR5-NEXT: rldicl 4, 4, 8, 56
24186 ; PWR5-NEXT: subfe 3, 5, 5
24187 ; PWR5-NEXT: subfic 4, 4, 47
24188 ; PWR5-NEXT: subfe 4, 5, 5
24191 ; PWR6-LABEL: ugt_47_v2i64:
24193 ; PWR6-NEXT: lis 5, 21845
24194 ; PWR6-NEXT: lis 6, 13107
24195 ; PWR6-NEXT: ori 5, 5, 21845
24196 ; PWR6-NEXT: rotldi 8, 4, 63
24197 ; PWR6-NEXT: rotldi 9, 3, 63
24198 ; PWR6-NEXT: rldimi 5, 5, 32, 0
24199 ; PWR6-NEXT: and 8, 8, 5
24200 ; PWR6-NEXT: and 5, 9, 5
24201 ; PWR6-NEXT: ori 6, 6, 13107
24202 ; PWR6-NEXT: sub 3, 3, 5
24203 ; PWR6-NEXT: rldimi 6, 6, 32, 0
24204 ; PWR6-NEXT: sub 4, 4, 8
24205 ; PWR6-NEXT: and 8, 3, 6
24206 ; PWR6-NEXT: rotldi 3, 3, 62
24207 ; PWR6-NEXT: and 3, 3, 6
24208 ; PWR6-NEXT: lis 7, 3855
24209 ; PWR6-NEXT: and 5, 4, 6
24210 ; PWR6-NEXT: rotldi 4, 4, 62
24211 ; PWR6-NEXT: add 3, 8, 3
24212 ; PWR6-NEXT: lis 9, 257
24213 ; PWR6-NEXT: ori 7, 7, 3855
24214 ; PWR6-NEXT: and 4, 4, 6
24215 ; PWR6-NEXT: rldicl 6, 3, 60, 4
24216 ; PWR6-NEXT: ori 9, 9, 257
24217 ; PWR6-NEXT: rldimi 7, 7, 32, 0
24218 ; PWR6-NEXT: add 4, 5, 4
24219 ; PWR6-NEXT: add 3, 3, 6
24220 ; PWR6-NEXT: rldimi 9, 9, 32, 0
24221 ; PWR6-NEXT: rldicl 5, 4, 60, 4
24222 ; PWR6-NEXT: and 3, 3, 7
24223 ; PWR6-NEXT: add 4, 4, 5
24224 ; PWR6-NEXT: mulld 3, 3, 9
24225 ; PWR6-NEXT: and 4, 4, 7
24226 ; PWR6-NEXT: rldicl 3, 3, 8, 56
24227 ; PWR6-NEXT: mulld 4, 4, 9
24228 ; PWR6-NEXT: li 5, 47
24229 ; PWR6-NEXT: subfic 3, 3, 47
24230 ; PWR6-NEXT: rldicl 4, 4, 8, 56
24231 ; PWR6-NEXT: subfe 3, 5, 5
24232 ; PWR6-NEXT: subfic 4, 4, 47
24233 ; PWR6-NEXT: subfe 4, 5, 5
24236 ; PWR7-LABEL: ugt_47_v2i64:
24238 ; PWR7-NEXT: addi 3, 1, -32
24239 ; PWR7-NEXT: li 5, -1
24240 ; PWR7-NEXT: stxvd2x 34, 0, 3
24241 ; PWR7-NEXT: ld 4, -24(1)
24242 ; PWR7-NEXT: ld 3, -32(1)
24243 ; PWR7-NEXT: popcntd 4, 4
24244 ; PWR7-NEXT: popcntd 3, 3
24245 ; PWR7-NEXT: cmpldi 4, 47
24246 ; PWR7-NEXT: li 4, 0
24247 ; PWR7-NEXT: iselgt 6, 5, 4
24248 ; PWR7-NEXT: cmpldi 3, 47
24249 ; PWR7-NEXT: iselgt 3, 5, 4
24250 ; PWR7-NEXT: std 6, -8(1)
24251 ; PWR7-NEXT: std 3, -16(1)
24252 ; PWR7-NEXT: addi 3, 1, -16
24253 ; PWR7-NEXT: lxvd2x 34, 0, 3
24256 ; PWR8-LABEL: ugt_47_v2i64:
24258 ; PWR8-NEXT: addis 3, 2, .LCPI192_0@toc@ha
24259 ; PWR8-NEXT: vpopcntd 2, 2
24260 ; PWR8-NEXT: addi 3, 3, .LCPI192_0@toc@l
24261 ; PWR8-NEXT: lxvd2x 35, 0, 3
24262 ; PWR8-NEXT: vcmpgtud 2, 2, 3
24265 ; PWR9-LABEL: ugt_47_v2i64:
24267 ; PWR9-NEXT: addis 3, 2, .LCPI192_0@toc@ha
24268 ; PWR9-NEXT: vpopcntd 2, 2
24269 ; PWR9-NEXT: addi 3, 3, .LCPI192_0@toc@l
24270 ; PWR9-NEXT: lxv 35, 0(3)
24271 ; PWR9-NEXT: vcmpgtud 2, 2, 3
24273 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
24274 %3 = icmp ugt <2 x i64> %2, <i64 47, i64 47>
24275 %4 = sext <2 x i1> %3 to <2 x i64>
24279 define <2 x i64> @ult_48_v2i64(<2 x i64> %0) {
24280 ; PWR5-LABEL: ult_48_v2i64:
24282 ; PWR5-NEXT: lis 5, 21845
24283 ; PWR5-NEXT: lis 6, 13107
24284 ; PWR5-NEXT: ori 5, 5, 21845
24285 ; PWR5-NEXT: rotldi 8, 4, 63
24286 ; PWR5-NEXT: rotldi 9, 3, 63
24287 ; PWR5-NEXT: rldimi 5, 5, 32, 0
24288 ; PWR5-NEXT: and 8, 8, 5
24289 ; PWR5-NEXT: and 5, 9, 5
24290 ; PWR5-NEXT: ori 6, 6, 13107
24291 ; PWR5-NEXT: sub 3, 3, 5
24292 ; PWR5-NEXT: rldimi 6, 6, 32, 0
24293 ; PWR5-NEXT: sub 4, 4, 8
24294 ; PWR5-NEXT: and 8, 3, 6
24295 ; PWR5-NEXT: rotldi 3, 3, 62
24296 ; PWR5-NEXT: and 3, 3, 6
24297 ; PWR5-NEXT: lis 7, 3855
24298 ; PWR5-NEXT: and 5, 4, 6
24299 ; PWR5-NEXT: rotldi 4, 4, 62
24300 ; PWR5-NEXT: add 3, 8, 3
24301 ; PWR5-NEXT: lis 9, 257
24302 ; PWR5-NEXT: ori 7, 7, 3855
24303 ; PWR5-NEXT: and 4, 4, 6
24304 ; PWR5-NEXT: rldicl 6, 3, 60, 4
24305 ; PWR5-NEXT: ori 9, 9, 257
24306 ; PWR5-NEXT: rldimi 7, 7, 32, 0
24307 ; PWR5-NEXT: add 4, 5, 4
24308 ; PWR5-NEXT: add 3, 3, 6
24309 ; PWR5-NEXT: rldimi 9, 9, 32, 0
24310 ; PWR5-NEXT: rldicl 5, 4, 60, 4
24311 ; PWR5-NEXT: and 3, 3, 7
24312 ; PWR5-NEXT: add 4, 4, 5
24313 ; PWR5-NEXT: mulld 3, 3, 9
24314 ; PWR5-NEXT: and 4, 4, 7
24315 ; PWR5-NEXT: rldicl 3, 3, 8, 56
24316 ; PWR5-NEXT: li 5, 48
24317 ; PWR5-NEXT: mulld 4, 4, 9
24318 ; PWR5-NEXT: subc 6, 3, 5
24319 ; PWR5-NEXT: rldicl 4, 4, 8, 56
24320 ; PWR5-NEXT: subfe 3, 3, 3
24321 ; PWR5-NEXT: subc 5, 4, 5
24322 ; PWR5-NEXT: subfe 4, 4, 4
24325 ; PWR6-LABEL: ult_48_v2i64:
24327 ; PWR6-NEXT: lis 5, 21845
24328 ; PWR6-NEXT: lis 6, 13107
24329 ; PWR6-NEXT: ori 5, 5, 21845
24330 ; PWR6-NEXT: rotldi 8, 4, 63
24331 ; PWR6-NEXT: rotldi 9, 3, 63
24332 ; PWR6-NEXT: rldimi 5, 5, 32, 0
24333 ; PWR6-NEXT: and 8, 8, 5
24334 ; PWR6-NEXT: and 5, 9, 5
24335 ; PWR6-NEXT: ori 6, 6, 13107
24336 ; PWR6-NEXT: sub 3, 3, 5
24337 ; PWR6-NEXT: rldimi 6, 6, 32, 0
24338 ; PWR6-NEXT: sub 4, 4, 8
24339 ; PWR6-NEXT: and 8, 3, 6
24340 ; PWR6-NEXT: rotldi 3, 3, 62
24341 ; PWR6-NEXT: and 3, 3, 6
24342 ; PWR6-NEXT: lis 7, 3855
24343 ; PWR6-NEXT: and 5, 4, 6
24344 ; PWR6-NEXT: rotldi 4, 4, 62
24345 ; PWR6-NEXT: add 3, 8, 3
24346 ; PWR6-NEXT: lis 9, 257
24347 ; PWR6-NEXT: ori 7, 7, 3855
24348 ; PWR6-NEXT: and 4, 4, 6
24349 ; PWR6-NEXT: rldicl 6, 3, 60, 4
24350 ; PWR6-NEXT: ori 9, 9, 257
24351 ; PWR6-NEXT: rldimi 7, 7, 32, 0
24352 ; PWR6-NEXT: add 4, 5, 4
24353 ; PWR6-NEXT: add 3, 3, 6
24354 ; PWR6-NEXT: rldimi 9, 9, 32, 0
24355 ; PWR6-NEXT: rldicl 5, 4, 60, 4
24356 ; PWR6-NEXT: and 3, 3, 7
24357 ; PWR6-NEXT: add 4, 4, 5
24358 ; PWR6-NEXT: mulld 3, 3, 9
24359 ; PWR6-NEXT: and 4, 4, 7
24360 ; PWR6-NEXT: rldicl 3, 3, 8, 56
24361 ; PWR6-NEXT: li 5, 48
24362 ; PWR6-NEXT: mulld 4, 4, 9
24363 ; PWR6-NEXT: subc 6, 3, 5
24364 ; PWR6-NEXT: rldicl 4, 4, 8, 56
24365 ; PWR6-NEXT: subfe 3, 3, 3
24366 ; PWR6-NEXT: subc 5, 4, 5
24367 ; PWR6-NEXT: subfe 4, 4, 4
24370 ; PWR7-LABEL: ult_48_v2i64:
24372 ; PWR7-NEXT: addi 3, 1, -32
24373 ; PWR7-NEXT: li 5, -1
24374 ; PWR7-NEXT: stxvd2x 34, 0, 3
24375 ; PWR7-NEXT: ld 4, -24(1)
24376 ; PWR7-NEXT: ld 3, -32(1)
24377 ; PWR7-NEXT: popcntd 4, 4
24378 ; PWR7-NEXT: popcntd 3, 3
24379 ; PWR7-NEXT: cmpldi 4, 48
24380 ; PWR7-NEXT: li 4, 0
24381 ; PWR7-NEXT: isellt 6, 5, 4
24382 ; PWR7-NEXT: cmpldi 3, 48
24383 ; PWR7-NEXT: isellt 3, 5, 4
24384 ; PWR7-NEXT: std 6, -8(1)
24385 ; PWR7-NEXT: std 3, -16(1)
24386 ; PWR7-NEXT: addi 3, 1, -16
24387 ; PWR7-NEXT: lxvd2x 34, 0, 3
24390 ; PWR8-LABEL: ult_48_v2i64:
24392 ; PWR8-NEXT: addis 3, 2, .LCPI193_0@toc@ha
24393 ; PWR8-NEXT: vpopcntd 2, 2
24394 ; PWR8-NEXT: addi 3, 3, .LCPI193_0@toc@l
24395 ; PWR8-NEXT: lxvd2x 35, 0, 3
24396 ; PWR8-NEXT: vcmpgtud 2, 3, 2
24399 ; PWR9-LABEL: ult_48_v2i64:
24401 ; PWR9-NEXT: addis 3, 2, .LCPI193_0@toc@ha
24402 ; PWR9-NEXT: vpopcntd 2, 2
24403 ; PWR9-NEXT: addi 3, 3, .LCPI193_0@toc@l
24404 ; PWR9-NEXT: lxv 35, 0(3)
24405 ; PWR9-NEXT: vcmpgtud 2, 3, 2
24407 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
24408 %3 = icmp ult <2 x i64> %2, <i64 48, i64 48>
24409 %4 = sext <2 x i1> %3 to <2 x i64>
24413 define <2 x i64> @ugt_48_v2i64(<2 x i64> %0) {
24414 ; PWR5-LABEL: ugt_48_v2i64:
24416 ; PWR5-NEXT: lis 5, 21845
24417 ; PWR5-NEXT: lis 6, 13107
24418 ; PWR5-NEXT: ori 5, 5, 21845
24419 ; PWR5-NEXT: rotldi 8, 4, 63
24420 ; PWR5-NEXT: rotldi 9, 3, 63
24421 ; PWR5-NEXT: rldimi 5, 5, 32, 0
24422 ; PWR5-NEXT: and 8, 8, 5
24423 ; PWR5-NEXT: and 5, 9, 5
24424 ; PWR5-NEXT: ori 6, 6, 13107
24425 ; PWR5-NEXT: sub 3, 3, 5
24426 ; PWR5-NEXT: rldimi 6, 6, 32, 0
24427 ; PWR5-NEXT: sub 4, 4, 8
24428 ; PWR5-NEXT: and 8, 3, 6
24429 ; PWR5-NEXT: rotldi 3, 3, 62
24430 ; PWR5-NEXT: and 3, 3, 6
24431 ; PWR5-NEXT: lis 7, 3855
24432 ; PWR5-NEXT: and 5, 4, 6
24433 ; PWR5-NEXT: rotldi 4, 4, 62
24434 ; PWR5-NEXT: add 3, 8, 3
24435 ; PWR5-NEXT: lis 9, 257
24436 ; PWR5-NEXT: ori 7, 7, 3855
24437 ; PWR5-NEXT: and 4, 4, 6
24438 ; PWR5-NEXT: rldicl 6, 3, 60, 4
24439 ; PWR5-NEXT: ori 9, 9, 257
24440 ; PWR5-NEXT: rldimi 7, 7, 32, 0
24441 ; PWR5-NEXT: add 4, 5, 4
24442 ; PWR5-NEXT: add 3, 3, 6
24443 ; PWR5-NEXT: rldimi 9, 9, 32, 0
24444 ; PWR5-NEXT: rldicl 5, 4, 60, 4
24445 ; PWR5-NEXT: and 3, 3, 7
24446 ; PWR5-NEXT: add 4, 4, 5
24447 ; PWR5-NEXT: mulld 3, 3, 9
24448 ; PWR5-NEXT: and 4, 4, 7
24449 ; PWR5-NEXT: rldicl 3, 3, 8, 56
24450 ; PWR5-NEXT: mulld 4, 4, 9
24451 ; PWR5-NEXT: li 5, 48
24452 ; PWR5-NEXT: subfic 3, 3, 48
24453 ; PWR5-NEXT: rldicl 4, 4, 8, 56
24454 ; PWR5-NEXT: subfe 3, 5, 5
24455 ; PWR5-NEXT: subfic 4, 4, 48
24456 ; PWR5-NEXT: subfe 4, 5, 5
24459 ; PWR6-LABEL: ugt_48_v2i64:
24461 ; PWR6-NEXT: lis 5, 21845
24462 ; PWR6-NEXT: lis 6, 13107
24463 ; PWR6-NEXT: ori 5, 5, 21845
24464 ; PWR6-NEXT: rotldi 8, 4, 63
24465 ; PWR6-NEXT: rotldi 9, 3, 63
24466 ; PWR6-NEXT: rldimi 5, 5, 32, 0
24467 ; PWR6-NEXT: and 8, 8, 5
24468 ; PWR6-NEXT: and 5, 9, 5
24469 ; PWR6-NEXT: ori 6, 6, 13107
24470 ; PWR6-NEXT: sub 3, 3, 5
24471 ; PWR6-NEXT: rldimi 6, 6, 32, 0
24472 ; PWR6-NEXT: sub 4, 4, 8
24473 ; PWR6-NEXT: and 8, 3, 6
24474 ; PWR6-NEXT: rotldi 3, 3, 62
24475 ; PWR6-NEXT: and 3, 3, 6
24476 ; PWR6-NEXT: lis 7, 3855
24477 ; PWR6-NEXT: and 5, 4, 6
24478 ; PWR6-NEXT: rotldi 4, 4, 62
24479 ; PWR6-NEXT: add 3, 8, 3
24480 ; PWR6-NEXT: lis 9, 257
24481 ; PWR6-NEXT: ori 7, 7, 3855
24482 ; PWR6-NEXT: and 4, 4, 6
24483 ; PWR6-NEXT: rldicl 6, 3, 60, 4
24484 ; PWR6-NEXT: ori 9, 9, 257
24485 ; PWR6-NEXT: rldimi 7, 7, 32, 0
24486 ; PWR6-NEXT: add 4, 5, 4
24487 ; PWR6-NEXT: add 3, 3, 6
24488 ; PWR6-NEXT: rldimi 9, 9, 32, 0
24489 ; PWR6-NEXT: rldicl 5, 4, 60, 4
24490 ; PWR6-NEXT: and 3, 3, 7
24491 ; PWR6-NEXT: add 4, 4, 5
24492 ; PWR6-NEXT: mulld 3, 3, 9
24493 ; PWR6-NEXT: and 4, 4, 7
24494 ; PWR6-NEXT: rldicl 3, 3, 8, 56
24495 ; PWR6-NEXT: mulld 4, 4, 9
24496 ; PWR6-NEXT: li 5, 48
24497 ; PWR6-NEXT: subfic 3, 3, 48
24498 ; PWR6-NEXT: rldicl 4, 4, 8, 56
24499 ; PWR6-NEXT: subfe 3, 5, 5
24500 ; PWR6-NEXT: subfic 4, 4, 48
24501 ; PWR6-NEXT: subfe 4, 5, 5
24504 ; PWR7-LABEL: ugt_48_v2i64:
24506 ; PWR7-NEXT: addi 3, 1, -32
24507 ; PWR7-NEXT: li 5, -1
24508 ; PWR7-NEXT: stxvd2x 34, 0, 3
24509 ; PWR7-NEXT: ld 4, -24(1)
24510 ; PWR7-NEXT: ld 3, -32(1)
24511 ; PWR7-NEXT: popcntd 4, 4
24512 ; PWR7-NEXT: popcntd 3, 3
24513 ; PWR7-NEXT: cmpldi 4, 48
24514 ; PWR7-NEXT: li 4, 0
24515 ; PWR7-NEXT: iselgt 6, 5, 4
24516 ; PWR7-NEXT: cmpldi 3, 48
24517 ; PWR7-NEXT: iselgt 3, 5, 4
24518 ; PWR7-NEXT: std 6, -8(1)
24519 ; PWR7-NEXT: std 3, -16(1)
24520 ; PWR7-NEXT: addi 3, 1, -16
24521 ; PWR7-NEXT: lxvd2x 34, 0, 3
24524 ; PWR8-LABEL: ugt_48_v2i64:
24526 ; PWR8-NEXT: addis 3, 2, .LCPI194_0@toc@ha
24527 ; PWR8-NEXT: vpopcntd 2, 2
24528 ; PWR8-NEXT: addi 3, 3, .LCPI194_0@toc@l
24529 ; PWR8-NEXT: lxvd2x 35, 0, 3
24530 ; PWR8-NEXT: vcmpgtud 2, 2, 3
24533 ; PWR9-LABEL: ugt_48_v2i64:
24535 ; PWR9-NEXT: addis 3, 2, .LCPI194_0@toc@ha
24536 ; PWR9-NEXT: vpopcntd 2, 2
24537 ; PWR9-NEXT: addi 3, 3, .LCPI194_0@toc@l
24538 ; PWR9-NEXT: lxv 35, 0(3)
24539 ; PWR9-NEXT: vcmpgtud 2, 2, 3
24541 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
24542 %3 = icmp ugt <2 x i64> %2, <i64 48, i64 48>
24543 %4 = sext <2 x i1> %3 to <2 x i64>
24547 define <2 x i64> @ult_49_v2i64(<2 x i64> %0) {
24548 ; PWR5-LABEL: ult_49_v2i64:
24550 ; PWR5-NEXT: lis 5, 21845
24551 ; PWR5-NEXT: lis 6, 13107
24552 ; PWR5-NEXT: ori 5, 5, 21845
24553 ; PWR5-NEXT: rotldi 8, 4, 63
24554 ; PWR5-NEXT: rotldi 9, 3, 63
24555 ; PWR5-NEXT: rldimi 5, 5, 32, 0
24556 ; PWR5-NEXT: and 8, 8, 5
24557 ; PWR5-NEXT: and 5, 9, 5
24558 ; PWR5-NEXT: ori 6, 6, 13107
24559 ; PWR5-NEXT: sub 3, 3, 5
24560 ; PWR5-NEXT: rldimi 6, 6, 32, 0
24561 ; PWR5-NEXT: sub 4, 4, 8
24562 ; PWR5-NEXT: and 8, 3, 6
24563 ; PWR5-NEXT: rotldi 3, 3, 62
24564 ; PWR5-NEXT: and 3, 3, 6
24565 ; PWR5-NEXT: lis 7, 3855
24566 ; PWR5-NEXT: and 5, 4, 6
24567 ; PWR5-NEXT: rotldi 4, 4, 62
24568 ; PWR5-NEXT: add 3, 8, 3
24569 ; PWR5-NEXT: lis 9, 257
24570 ; PWR5-NEXT: ori 7, 7, 3855
24571 ; PWR5-NEXT: and 4, 4, 6
24572 ; PWR5-NEXT: rldicl 6, 3, 60, 4
24573 ; PWR5-NEXT: ori 9, 9, 257
24574 ; PWR5-NEXT: rldimi 7, 7, 32, 0
24575 ; PWR5-NEXT: add 4, 5, 4
24576 ; PWR5-NEXT: add 3, 3, 6
24577 ; PWR5-NEXT: rldimi 9, 9, 32, 0
24578 ; PWR5-NEXT: rldicl 5, 4, 60, 4
24579 ; PWR5-NEXT: and 3, 3, 7
24580 ; PWR5-NEXT: add 4, 4, 5
24581 ; PWR5-NEXT: mulld 3, 3, 9
24582 ; PWR5-NEXT: and 4, 4, 7
24583 ; PWR5-NEXT: rldicl 3, 3, 8, 56
24584 ; PWR5-NEXT: li 5, 49
24585 ; PWR5-NEXT: mulld 4, 4, 9
24586 ; PWR5-NEXT: subc 6, 3, 5
24587 ; PWR5-NEXT: rldicl 4, 4, 8, 56
24588 ; PWR5-NEXT: subfe 3, 3, 3
24589 ; PWR5-NEXT: subc 5, 4, 5
24590 ; PWR5-NEXT: subfe 4, 4, 4
24593 ; PWR6-LABEL: ult_49_v2i64:
24595 ; PWR6-NEXT: lis 5, 21845
24596 ; PWR6-NEXT: lis 6, 13107
24597 ; PWR6-NEXT: ori 5, 5, 21845
24598 ; PWR6-NEXT: rotldi 8, 4, 63
24599 ; PWR6-NEXT: rotldi 9, 3, 63
24600 ; PWR6-NEXT: rldimi 5, 5, 32, 0
24601 ; PWR6-NEXT: and 8, 8, 5
24602 ; PWR6-NEXT: and 5, 9, 5
24603 ; PWR6-NEXT: ori 6, 6, 13107
24604 ; PWR6-NEXT: sub 3, 3, 5
24605 ; PWR6-NEXT: rldimi 6, 6, 32, 0
24606 ; PWR6-NEXT: sub 4, 4, 8
24607 ; PWR6-NEXT: and 8, 3, 6
24608 ; PWR6-NEXT: rotldi 3, 3, 62
24609 ; PWR6-NEXT: and 3, 3, 6
24610 ; PWR6-NEXT: lis 7, 3855
24611 ; PWR6-NEXT: and 5, 4, 6
24612 ; PWR6-NEXT: rotldi 4, 4, 62
24613 ; PWR6-NEXT: add 3, 8, 3
24614 ; PWR6-NEXT: lis 9, 257
24615 ; PWR6-NEXT: ori 7, 7, 3855
24616 ; PWR6-NEXT: and 4, 4, 6
24617 ; PWR6-NEXT: rldicl 6, 3, 60, 4
24618 ; PWR6-NEXT: ori 9, 9, 257
24619 ; PWR6-NEXT: rldimi 7, 7, 32, 0
24620 ; PWR6-NEXT: add 4, 5, 4
24621 ; PWR6-NEXT: add 3, 3, 6
24622 ; PWR6-NEXT: rldimi 9, 9, 32, 0
24623 ; PWR6-NEXT: rldicl 5, 4, 60, 4
24624 ; PWR6-NEXT: and 3, 3, 7
24625 ; PWR6-NEXT: add 4, 4, 5
24626 ; PWR6-NEXT: mulld 3, 3, 9
24627 ; PWR6-NEXT: and 4, 4, 7
24628 ; PWR6-NEXT: rldicl 3, 3, 8, 56
24629 ; PWR6-NEXT: li 5, 49
24630 ; PWR6-NEXT: mulld 4, 4, 9
24631 ; PWR6-NEXT: subc 6, 3, 5
24632 ; PWR6-NEXT: rldicl 4, 4, 8, 56
24633 ; PWR6-NEXT: subfe 3, 3, 3
24634 ; PWR6-NEXT: subc 5, 4, 5
24635 ; PWR6-NEXT: subfe 4, 4, 4
24638 ; PWR7-LABEL: ult_49_v2i64:
24640 ; PWR7-NEXT: addi 3, 1, -32
24641 ; PWR7-NEXT: li 5, -1
24642 ; PWR7-NEXT: stxvd2x 34, 0, 3
24643 ; PWR7-NEXT: ld 4, -24(1)
24644 ; PWR7-NEXT: ld 3, -32(1)
24645 ; PWR7-NEXT: popcntd 4, 4
24646 ; PWR7-NEXT: popcntd 3, 3
24647 ; PWR7-NEXT: cmpldi 4, 49
24648 ; PWR7-NEXT: li 4, 0
24649 ; PWR7-NEXT: isellt 6, 5, 4
24650 ; PWR7-NEXT: cmpldi 3, 49
24651 ; PWR7-NEXT: isellt 3, 5, 4
24652 ; PWR7-NEXT: std 6, -8(1)
24653 ; PWR7-NEXT: std 3, -16(1)
24654 ; PWR7-NEXT: addi 3, 1, -16
24655 ; PWR7-NEXT: lxvd2x 34, 0, 3
24658 ; PWR8-LABEL: ult_49_v2i64:
24660 ; PWR8-NEXT: addis 3, 2, .LCPI195_0@toc@ha
24661 ; PWR8-NEXT: vpopcntd 2, 2
24662 ; PWR8-NEXT: addi 3, 3, .LCPI195_0@toc@l
24663 ; PWR8-NEXT: lxvd2x 35, 0, 3
24664 ; PWR8-NEXT: vcmpgtud 2, 3, 2
24667 ; PWR9-LABEL: ult_49_v2i64:
24669 ; PWR9-NEXT: addis 3, 2, .LCPI195_0@toc@ha
24670 ; PWR9-NEXT: vpopcntd 2, 2
24671 ; PWR9-NEXT: addi 3, 3, .LCPI195_0@toc@l
24672 ; PWR9-NEXT: lxv 35, 0(3)
24673 ; PWR9-NEXT: vcmpgtud 2, 3, 2
24675 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
24676 %3 = icmp ult <2 x i64> %2, <i64 49, i64 49>
24677 %4 = sext <2 x i1> %3 to <2 x i64>
24681 define <2 x i64> @ugt_49_v2i64(<2 x i64> %0) {
24682 ; PWR5-LABEL: ugt_49_v2i64:
24684 ; PWR5-NEXT: lis 5, 21845
24685 ; PWR5-NEXT: lis 6, 13107
24686 ; PWR5-NEXT: ori 5, 5, 21845
24687 ; PWR5-NEXT: rotldi 8, 4, 63
24688 ; PWR5-NEXT: rotldi 9, 3, 63
24689 ; PWR5-NEXT: rldimi 5, 5, 32, 0
24690 ; PWR5-NEXT: and 8, 8, 5
24691 ; PWR5-NEXT: and 5, 9, 5
24692 ; PWR5-NEXT: ori 6, 6, 13107
24693 ; PWR5-NEXT: sub 3, 3, 5
24694 ; PWR5-NEXT: rldimi 6, 6, 32, 0
24695 ; PWR5-NEXT: sub 4, 4, 8
24696 ; PWR5-NEXT: and 8, 3, 6
24697 ; PWR5-NEXT: rotldi 3, 3, 62
24698 ; PWR5-NEXT: and 3, 3, 6
24699 ; PWR5-NEXT: lis 7, 3855
24700 ; PWR5-NEXT: and 5, 4, 6
24701 ; PWR5-NEXT: rotldi 4, 4, 62
24702 ; PWR5-NEXT: add 3, 8, 3
24703 ; PWR5-NEXT: lis 9, 257
24704 ; PWR5-NEXT: ori 7, 7, 3855
24705 ; PWR5-NEXT: and 4, 4, 6
24706 ; PWR5-NEXT: rldicl 6, 3, 60, 4
24707 ; PWR5-NEXT: ori 9, 9, 257
24708 ; PWR5-NEXT: rldimi 7, 7, 32, 0
24709 ; PWR5-NEXT: add 4, 5, 4
24710 ; PWR5-NEXT: add 3, 3, 6
24711 ; PWR5-NEXT: rldimi 9, 9, 32, 0
24712 ; PWR5-NEXT: rldicl 5, 4, 60, 4
24713 ; PWR5-NEXT: and 3, 3, 7
24714 ; PWR5-NEXT: add 4, 4, 5
24715 ; PWR5-NEXT: mulld 3, 3, 9
24716 ; PWR5-NEXT: and 4, 4, 7
24717 ; PWR5-NEXT: rldicl 3, 3, 8, 56
24718 ; PWR5-NEXT: mulld 4, 4, 9
24719 ; PWR5-NEXT: li 5, 49
24720 ; PWR5-NEXT: subfic 3, 3, 49
24721 ; PWR5-NEXT: rldicl 4, 4, 8, 56
24722 ; PWR5-NEXT: subfe 3, 5, 5
24723 ; PWR5-NEXT: subfic 4, 4, 49
24724 ; PWR5-NEXT: subfe 4, 5, 5
24727 ; PWR6-LABEL: ugt_49_v2i64:
24729 ; PWR6-NEXT: lis 5, 21845
24730 ; PWR6-NEXT: lis 6, 13107
24731 ; PWR6-NEXT: ori 5, 5, 21845
24732 ; PWR6-NEXT: rotldi 8, 4, 63
24733 ; PWR6-NEXT: rotldi 9, 3, 63
24734 ; PWR6-NEXT: rldimi 5, 5, 32, 0
24735 ; PWR6-NEXT: and 8, 8, 5
24736 ; PWR6-NEXT: and 5, 9, 5
24737 ; PWR6-NEXT: ori 6, 6, 13107
24738 ; PWR6-NEXT: sub 3, 3, 5
24739 ; PWR6-NEXT: rldimi 6, 6, 32, 0
24740 ; PWR6-NEXT: sub 4, 4, 8
24741 ; PWR6-NEXT: and 8, 3, 6
24742 ; PWR6-NEXT: rotldi 3, 3, 62
24743 ; PWR6-NEXT: and 3, 3, 6
24744 ; PWR6-NEXT: lis 7, 3855
24745 ; PWR6-NEXT: and 5, 4, 6
24746 ; PWR6-NEXT: rotldi 4, 4, 62
24747 ; PWR6-NEXT: add 3, 8, 3
24748 ; PWR6-NEXT: lis 9, 257
24749 ; PWR6-NEXT: ori 7, 7, 3855
24750 ; PWR6-NEXT: and 4, 4, 6
24751 ; PWR6-NEXT: rldicl 6, 3, 60, 4
24752 ; PWR6-NEXT: ori 9, 9, 257
24753 ; PWR6-NEXT: rldimi 7, 7, 32, 0
24754 ; PWR6-NEXT: add 4, 5, 4
24755 ; PWR6-NEXT: add 3, 3, 6
24756 ; PWR6-NEXT: rldimi 9, 9, 32, 0
24757 ; PWR6-NEXT: rldicl 5, 4, 60, 4
24758 ; PWR6-NEXT: and 3, 3, 7
24759 ; PWR6-NEXT: add 4, 4, 5
24760 ; PWR6-NEXT: mulld 3, 3, 9
24761 ; PWR6-NEXT: and 4, 4, 7
24762 ; PWR6-NEXT: rldicl 3, 3, 8, 56
24763 ; PWR6-NEXT: mulld 4, 4, 9
24764 ; PWR6-NEXT: li 5, 49
24765 ; PWR6-NEXT: subfic 3, 3, 49
24766 ; PWR6-NEXT: rldicl 4, 4, 8, 56
24767 ; PWR6-NEXT: subfe 3, 5, 5
24768 ; PWR6-NEXT: subfic 4, 4, 49
24769 ; PWR6-NEXT: subfe 4, 5, 5
24772 ; PWR7-LABEL: ugt_49_v2i64:
24774 ; PWR7-NEXT: addi 3, 1, -32
24775 ; PWR7-NEXT: li 5, -1
24776 ; PWR7-NEXT: stxvd2x 34, 0, 3
24777 ; PWR7-NEXT: ld 4, -24(1)
24778 ; PWR7-NEXT: ld 3, -32(1)
24779 ; PWR7-NEXT: popcntd 4, 4
24780 ; PWR7-NEXT: popcntd 3, 3
24781 ; PWR7-NEXT: cmpldi 4, 49
24782 ; PWR7-NEXT: li 4, 0
24783 ; PWR7-NEXT: iselgt 6, 5, 4
24784 ; PWR7-NEXT: cmpldi 3, 49
24785 ; PWR7-NEXT: iselgt 3, 5, 4
24786 ; PWR7-NEXT: std 6, -8(1)
24787 ; PWR7-NEXT: std 3, -16(1)
24788 ; PWR7-NEXT: addi 3, 1, -16
24789 ; PWR7-NEXT: lxvd2x 34, 0, 3
24792 ; PWR8-LABEL: ugt_49_v2i64:
24794 ; PWR8-NEXT: addis 3, 2, .LCPI196_0@toc@ha
24795 ; PWR8-NEXT: vpopcntd 2, 2
24796 ; PWR8-NEXT: addi 3, 3, .LCPI196_0@toc@l
24797 ; PWR8-NEXT: lxvd2x 35, 0, 3
24798 ; PWR8-NEXT: vcmpgtud 2, 2, 3
24801 ; PWR9-LABEL: ugt_49_v2i64:
24803 ; PWR9-NEXT: addis 3, 2, .LCPI196_0@toc@ha
24804 ; PWR9-NEXT: vpopcntd 2, 2
24805 ; PWR9-NEXT: addi 3, 3, .LCPI196_0@toc@l
24806 ; PWR9-NEXT: lxv 35, 0(3)
24807 ; PWR9-NEXT: vcmpgtud 2, 2, 3
24809 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
24810 %3 = icmp ugt <2 x i64> %2, <i64 49, i64 49>
24811 %4 = sext <2 x i1> %3 to <2 x i64>
24815 define <2 x i64> @ult_50_v2i64(<2 x i64> %0) {
24816 ; PWR5-LABEL: ult_50_v2i64:
24818 ; PWR5-NEXT: lis 5, 21845
24819 ; PWR5-NEXT: lis 6, 13107
24820 ; PWR5-NEXT: ori 5, 5, 21845
24821 ; PWR5-NEXT: rotldi 8, 4, 63
24822 ; PWR5-NEXT: rotldi 9, 3, 63
24823 ; PWR5-NEXT: rldimi 5, 5, 32, 0
24824 ; PWR5-NEXT: and 8, 8, 5
24825 ; PWR5-NEXT: and 5, 9, 5
24826 ; PWR5-NEXT: ori 6, 6, 13107
24827 ; PWR5-NEXT: sub 3, 3, 5
24828 ; PWR5-NEXT: rldimi 6, 6, 32, 0
24829 ; PWR5-NEXT: sub 4, 4, 8
24830 ; PWR5-NEXT: and 8, 3, 6
24831 ; PWR5-NEXT: rotldi 3, 3, 62
24832 ; PWR5-NEXT: and 3, 3, 6
24833 ; PWR5-NEXT: lis 7, 3855
24834 ; PWR5-NEXT: and 5, 4, 6
24835 ; PWR5-NEXT: rotldi 4, 4, 62
24836 ; PWR5-NEXT: add 3, 8, 3
24837 ; PWR5-NEXT: lis 9, 257
24838 ; PWR5-NEXT: ori 7, 7, 3855
24839 ; PWR5-NEXT: and 4, 4, 6
24840 ; PWR5-NEXT: rldicl 6, 3, 60, 4
24841 ; PWR5-NEXT: ori 9, 9, 257
24842 ; PWR5-NEXT: rldimi 7, 7, 32, 0
24843 ; PWR5-NEXT: add 4, 5, 4
24844 ; PWR5-NEXT: add 3, 3, 6
24845 ; PWR5-NEXT: rldimi 9, 9, 32, 0
24846 ; PWR5-NEXT: rldicl 5, 4, 60, 4
24847 ; PWR5-NEXT: and 3, 3, 7
24848 ; PWR5-NEXT: add 4, 4, 5
24849 ; PWR5-NEXT: mulld 3, 3, 9
24850 ; PWR5-NEXT: and 4, 4, 7
24851 ; PWR5-NEXT: rldicl 3, 3, 8, 56
24852 ; PWR5-NEXT: li 5, 50
24853 ; PWR5-NEXT: mulld 4, 4, 9
24854 ; PWR5-NEXT: subc 6, 3, 5
24855 ; PWR5-NEXT: rldicl 4, 4, 8, 56
24856 ; PWR5-NEXT: subfe 3, 3, 3
24857 ; PWR5-NEXT: subc 5, 4, 5
24858 ; PWR5-NEXT: subfe 4, 4, 4
24861 ; PWR6-LABEL: ult_50_v2i64:
24863 ; PWR6-NEXT: lis 5, 21845
24864 ; PWR6-NEXT: lis 6, 13107
24865 ; PWR6-NEXT: ori 5, 5, 21845
24866 ; PWR6-NEXT: rotldi 8, 4, 63
24867 ; PWR6-NEXT: rotldi 9, 3, 63
24868 ; PWR6-NEXT: rldimi 5, 5, 32, 0
24869 ; PWR6-NEXT: and 8, 8, 5
24870 ; PWR6-NEXT: and 5, 9, 5
24871 ; PWR6-NEXT: ori 6, 6, 13107
24872 ; PWR6-NEXT: sub 3, 3, 5
24873 ; PWR6-NEXT: rldimi 6, 6, 32, 0
24874 ; PWR6-NEXT: sub 4, 4, 8
24875 ; PWR6-NEXT: and 8, 3, 6
24876 ; PWR6-NEXT: rotldi 3, 3, 62
24877 ; PWR6-NEXT: and 3, 3, 6
24878 ; PWR6-NEXT: lis 7, 3855
24879 ; PWR6-NEXT: and 5, 4, 6
24880 ; PWR6-NEXT: rotldi 4, 4, 62
24881 ; PWR6-NEXT: add 3, 8, 3
24882 ; PWR6-NEXT: lis 9, 257
24883 ; PWR6-NEXT: ori 7, 7, 3855
24884 ; PWR6-NEXT: and 4, 4, 6
24885 ; PWR6-NEXT: rldicl 6, 3, 60, 4
24886 ; PWR6-NEXT: ori 9, 9, 257
24887 ; PWR6-NEXT: rldimi 7, 7, 32, 0
24888 ; PWR6-NEXT: add 4, 5, 4
24889 ; PWR6-NEXT: add 3, 3, 6
24890 ; PWR6-NEXT: rldimi 9, 9, 32, 0
24891 ; PWR6-NEXT: rldicl 5, 4, 60, 4
24892 ; PWR6-NEXT: and 3, 3, 7
24893 ; PWR6-NEXT: add 4, 4, 5
24894 ; PWR6-NEXT: mulld 3, 3, 9
24895 ; PWR6-NEXT: and 4, 4, 7
24896 ; PWR6-NEXT: rldicl 3, 3, 8, 56
24897 ; PWR6-NEXT: li 5, 50
24898 ; PWR6-NEXT: mulld 4, 4, 9
24899 ; PWR6-NEXT: subc 6, 3, 5
24900 ; PWR6-NEXT: rldicl 4, 4, 8, 56
24901 ; PWR6-NEXT: subfe 3, 3, 3
24902 ; PWR6-NEXT: subc 5, 4, 5
24903 ; PWR6-NEXT: subfe 4, 4, 4
24906 ; PWR7-LABEL: ult_50_v2i64:
24908 ; PWR7-NEXT: addi 3, 1, -32
24909 ; PWR7-NEXT: li 5, -1
24910 ; PWR7-NEXT: stxvd2x 34, 0, 3
24911 ; PWR7-NEXT: ld 4, -24(1)
24912 ; PWR7-NEXT: ld 3, -32(1)
24913 ; PWR7-NEXT: popcntd 4, 4
24914 ; PWR7-NEXT: popcntd 3, 3
24915 ; PWR7-NEXT: cmpldi 4, 50
24916 ; PWR7-NEXT: li 4, 0
24917 ; PWR7-NEXT: isellt 6, 5, 4
24918 ; PWR7-NEXT: cmpldi 3, 50
24919 ; PWR7-NEXT: isellt 3, 5, 4
24920 ; PWR7-NEXT: std 6, -8(1)
24921 ; PWR7-NEXT: std 3, -16(1)
24922 ; PWR7-NEXT: addi 3, 1, -16
24923 ; PWR7-NEXT: lxvd2x 34, 0, 3
24926 ; PWR8-LABEL: ult_50_v2i64:
24928 ; PWR8-NEXT: addis 3, 2, .LCPI197_0@toc@ha
24929 ; PWR8-NEXT: vpopcntd 2, 2
24930 ; PWR8-NEXT: addi 3, 3, .LCPI197_0@toc@l
24931 ; PWR8-NEXT: lxvd2x 35, 0, 3
24932 ; PWR8-NEXT: vcmpgtud 2, 3, 2
24935 ; PWR9-LABEL: ult_50_v2i64:
24937 ; PWR9-NEXT: addis 3, 2, .LCPI197_0@toc@ha
24938 ; PWR9-NEXT: vpopcntd 2, 2
24939 ; PWR9-NEXT: addi 3, 3, .LCPI197_0@toc@l
24940 ; PWR9-NEXT: lxv 35, 0(3)
24941 ; PWR9-NEXT: vcmpgtud 2, 3, 2
24943 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
24944 %3 = icmp ult <2 x i64> %2, <i64 50, i64 50>
24945 %4 = sext <2 x i1> %3 to <2 x i64>
24949 define <2 x i64> @ugt_50_v2i64(<2 x i64> %0) {
24950 ; PWR5-LABEL: ugt_50_v2i64:
24952 ; PWR5-NEXT: lis 5, 21845
24953 ; PWR5-NEXT: lis 6, 13107
24954 ; PWR5-NEXT: ori 5, 5, 21845
24955 ; PWR5-NEXT: rotldi 8, 4, 63
24956 ; PWR5-NEXT: rotldi 9, 3, 63
24957 ; PWR5-NEXT: rldimi 5, 5, 32, 0
24958 ; PWR5-NEXT: and 8, 8, 5
24959 ; PWR5-NEXT: and 5, 9, 5
24960 ; PWR5-NEXT: ori 6, 6, 13107
24961 ; PWR5-NEXT: sub 3, 3, 5
24962 ; PWR5-NEXT: rldimi 6, 6, 32, 0
24963 ; PWR5-NEXT: sub 4, 4, 8
24964 ; PWR5-NEXT: and 8, 3, 6
24965 ; PWR5-NEXT: rotldi 3, 3, 62
24966 ; PWR5-NEXT: and 3, 3, 6
24967 ; PWR5-NEXT: lis 7, 3855
24968 ; PWR5-NEXT: and 5, 4, 6
24969 ; PWR5-NEXT: rotldi 4, 4, 62
24970 ; PWR5-NEXT: add 3, 8, 3
24971 ; PWR5-NEXT: lis 9, 257
24972 ; PWR5-NEXT: ori 7, 7, 3855
24973 ; PWR5-NEXT: and 4, 4, 6
24974 ; PWR5-NEXT: rldicl 6, 3, 60, 4
24975 ; PWR5-NEXT: ori 9, 9, 257
24976 ; PWR5-NEXT: rldimi 7, 7, 32, 0
24977 ; PWR5-NEXT: add 4, 5, 4
24978 ; PWR5-NEXT: add 3, 3, 6
24979 ; PWR5-NEXT: rldimi 9, 9, 32, 0
24980 ; PWR5-NEXT: rldicl 5, 4, 60, 4
24981 ; PWR5-NEXT: and 3, 3, 7
24982 ; PWR5-NEXT: add 4, 4, 5
24983 ; PWR5-NEXT: mulld 3, 3, 9
24984 ; PWR5-NEXT: and 4, 4, 7
24985 ; PWR5-NEXT: rldicl 3, 3, 8, 56
24986 ; PWR5-NEXT: mulld 4, 4, 9
24987 ; PWR5-NEXT: li 5, 50
24988 ; PWR5-NEXT: subfic 3, 3, 50
24989 ; PWR5-NEXT: rldicl 4, 4, 8, 56
24990 ; PWR5-NEXT: subfe 3, 5, 5
24991 ; PWR5-NEXT: subfic 4, 4, 50
24992 ; PWR5-NEXT: subfe 4, 5, 5
24995 ; PWR6-LABEL: ugt_50_v2i64:
24997 ; PWR6-NEXT: lis 5, 21845
24998 ; PWR6-NEXT: lis 6, 13107
24999 ; PWR6-NEXT: ori 5, 5, 21845
25000 ; PWR6-NEXT: rotldi 8, 4, 63
25001 ; PWR6-NEXT: rotldi 9, 3, 63
25002 ; PWR6-NEXT: rldimi 5, 5, 32, 0
25003 ; PWR6-NEXT: and 8, 8, 5
25004 ; PWR6-NEXT: and 5, 9, 5
25005 ; PWR6-NEXT: ori 6, 6, 13107
25006 ; PWR6-NEXT: sub 3, 3, 5
25007 ; PWR6-NEXT: rldimi 6, 6, 32, 0
25008 ; PWR6-NEXT: sub 4, 4, 8
25009 ; PWR6-NEXT: and 8, 3, 6
25010 ; PWR6-NEXT: rotldi 3, 3, 62
25011 ; PWR6-NEXT: and 3, 3, 6
25012 ; PWR6-NEXT: lis 7, 3855
25013 ; PWR6-NEXT: and 5, 4, 6
25014 ; PWR6-NEXT: rotldi 4, 4, 62
25015 ; PWR6-NEXT: add 3, 8, 3
25016 ; PWR6-NEXT: lis 9, 257
25017 ; PWR6-NEXT: ori 7, 7, 3855
25018 ; PWR6-NEXT: and 4, 4, 6
25019 ; PWR6-NEXT: rldicl 6, 3, 60, 4
25020 ; PWR6-NEXT: ori 9, 9, 257
25021 ; PWR6-NEXT: rldimi 7, 7, 32, 0
25022 ; PWR6-NEXT: add 4, 5, 4
25023 ; PWR6-NEXT: add 3, 3, 6
25024 ; PWR6-NEXT: rldimi 9, 9, 32, 0
25025 ; PWR6-NEXT: rldicl 5, 4, 60, 4
25026 ; PWR6-NEXT: and 3, 3, 7
25027 ; PWR6-NEXT: add 4, 4, 5
25028 ; PWR6-NEXT: mulld 3, 3, 9
25029 ; PWR6-NEXT: and 4, 4, 7
25030 ; PWR6-NEXT: rldicl 3, 3, 8, 56
25031 ; PWR6-NEXT: mulld 4, 4, 9
25032 ; PWR6-NEXT: li 5, 50
25033 ; PWR6-NEXT: subfic 3, 3, 50
25034 ; PWR6-NEXT: rldicl 4, 4, 8, 56
25035 ; PWR6-NEXT: subfe 3, 5, 5
25036 ; PWR6-NEXT: subfic 4, 4, 50
25037 ; PWR6-NEXT: subfe 4, 5, 5
25040 ; PWR7-LABEL: ugt_50_v2i64:
25042 ; PWR7-NEXT: addi 3, 1, -32
25043 ; PWR7-NEXT: li 5, -1
25044 ; PWR7-NEXT: stxvd2x 34, 0, 3
25045 ; PWR7-NEXT: ld 4, -24(1)
25046 ; PWR7-NEXT: ld 3, -32(1)
25047 ; PWR7-NEXT: popcntd 4, 4
25048 ; PWR7-NEXT: popcntd 3, 3
25049 ; PWR7-NEXT: cmpldi 4, 50
25050 ; PWR7-NEXT: li 4, 0
25051 ; PWR7-NEXT: iselgt 6, 5, 4
25052 ; PWR7-NEXT: cmpldi 3, 50
25053 ; PWR7-NEXT: iselgt 3, 5, 4
25054 ; PWR7-NEXT: std 6, -8(1)
25055 ; PWR7-NEXT: std 3, -16(1)
25056 ; PWR7-NEXT: addi 3, 1, -16
25057 ; PWR7-NEXT: lxvd2x 34, 0, 3
25060 ; PWR8-LABEL: ugt_50_v2i64:
25062 ; PWR8-NEXT: addis 3, 2, .LCPI198_0@toc@ha
25063 ; PWR8-NEXT: vpopcntd 2, 2
25064 ; PWR8-NEXT: addi 3, 3, .LCPI198_0@toc@l
25065 ; PWR8-NEXT: lxvd2x 35, 0, 3
25066 ; PWR8-NEXT: vcmpgtud 2, 2, 3
25069 ; PWR9-LABEL: ugt_50_v2i64:
25071 ; PWR9-NEXT: addis 3, 2, .LCPI198_0@toc@ha
25072 ; PWR9-NEXT: vpopcntd 2, 2
25073 ; PWR9-NEXT: addi 3, 3, .LCPI198_0@toc@l
25074 ; PWR9-NEXT: lxv 35, 0(3)
25075 ; PWR9-NEXT: vcmpgtud 2, 2, 3
25077 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
25078 %3 = icmp ugt <2 x i64> %2, <i64 50, i64 50>
25079 %4 = sext <2 x i1> %3 to <2 x i64>
25083 define <2 x i64> @ult_51_v2i64(<2 x i64> %0) {
25084 ; PWR5-LABEL: ult_51_v2i64:
25086 ; PWR5-NEXT: lis 5, 21845
25087 ; PWR5-NEXT: lis 6, 13107
25088 ; PWR5-NEXT: ori 5, 5, 21845
25089 ; PWR5-NEXT: rotldi 8, 4, 63
25090 ; PWR5-NEXT: rotldi 9, 3, 63
25091 ; PWR5-NEXT: rldimi 5, 5, 32, 0
25092 ; PWR5-NEXT: and 8, 8, 5
25093 ; PWR5-NEXT: and 5, 9, 5
25094 ; PWR5-NEXT: ori 6, 6, 13107
25095 ; PWR5-NEXT: sub 3, 3, 5
25096 ; PWR5-NEXT: rldimi 6, 6, 32, 0
25097 ; PWR5-NEXT: sub 4, 4, 8
25098 ; PWR5-NEXT: and 8, 3, 6
25099 ; PWR5-NEXT: rotldi 3, 3, 62
25100 ; PWR5-NEXT: and 3, 3, 6
25101 ; PWR5-NEXT: lis 7, 3855
25102 ; PWR5-NEXT: and 5, 4, 6
25103 ; PWR5-NEXT: rotldi 4, 4, 62
25104 ; PWR5-NEXT: add 3, 8, 3
25105 ; PWR5-NEXT: lis 9, 257
25106 ; PWR5-NEXT: ori 7, 7, 3855
25107 ; PWR5-NEXT: and 4, 4, 6
25108 ; PWR5-NEXT: rldicl 6, 3, 60, 4
25109 ; PWR5-NEXT: ori 9, 9, 257
25110 ; PWR5-NEXT: rldimi 7, 7, 32, 0
25111 ; PWR5-NEXT: add 4, 5, 4
25112 ; PWR5-NEXT: add 3, 3, 6
25113 ; PWR5-NEXT: rldimi 9, 9, 32, 0
25114 ; PWR5-NEXT: rldicl 5, 4, 60, 4
25115 ; PWR5-NEXT: and 3, 3, 7
25116 ; PWR5-NEXT: add 4, 4, 5
25117 ; PWR5-NEXT: mulld 3, 3, 9
25118 ; PWR5-NEXT: and 4, 4, 7
25119 ; PWR5-NEXT: rldicl 3, 3, 8, 56
25120 ; PWR5-NEXT: li 5, 51
25121 ; PWR5-NEXT: mulld 4, 4, 9
25122 ; PWR5-NEXT: subc 6, 3, 5
25123 ; PWR5-NEXT: rldicl 4, 4, 8, 56
25124 ; PWR5-NEXT: subfe 3, 3, 3
25125 ; PWR5-NEXT: subc 5, 4, 5
25126 ; PWR5-NEXT: subfe 4, 4, 4
25129 ; PWR6-LABEL: ult_51_v2i64:
25131 ; PWR6-NEXT: lis 5, 21845
25132 ; PWR6-NEXT: lis 6, 13107
25133 ; PWR6-NEXT: ori 5, 5, 21845
25134 ; PWR6-NEXT: rotldi 8, 4, 63
25135 ; PWR6-NEXT: rotldi 9, 3, 63
25136 ; PWR6-NEXT: rldimi 5, 5, 32, 0
25137 ; PWR6-NEXT: and 8, 8, 5
25138 ; PWR6-NEXT: and 5, 9, 5
25139 ; PWR6-NEXT: ori 6, 6, 13107
25140 ; PWR6-NEXT: sub 3, 3, 5
25141 ; PWR6-NEXT: rldimi 6, 6, 32, 0
25142 ; PWR6-NEXT: sub 4, 4, 8
25143 ; PWR6-NEXT: and 8, 3, 6
25144 ; PWR6-NEXT: rotldi 3, 3, 62
25145 ; PWR6-NEXT: and 3, 3, 6
25146 ; PWR6-NEXT: lis 7, 3855
25147 ; PWR6-NEXT: and 5, 4, 6
25148 ; PWR6-NEXT: rotldi 4, 4, 62
25149 ; PWR6-NEXT: add 3, 8, 3
25150 ; PWR6-NEXT: lis 9, 257
25151 ; PWR6-NEXT: ori 7, 7, 3855
25152 ; PWR6-NEXT: and 4, 4, 6
25153 ; PWR6-NEXT: rldicl 6, 3, 60, 4
25154 ; PWR6-NEXT: ori 9, 9, 257
25155 ; PWR6-NEXT: rldimi 7, 7, 32, 0
25156 ; PWR6-NEXT: add 4, 5, 4
25157 ; PWR6-NEXT: add 3, 3, 6
25158 ; PWR6-NEXT: rldimi 9, 9, 32, 0
25159 ; PWR6-NEXT: rldicl 5, 4, 60, 4
25160 ; PWR6-NEXT: and 3, 3, 7
25161 ; PWR6-NEXT: add 4, 4, 5
25162 ; PWR6-NEXT: mulld 3, 3, 9
25163 ; PWR6-NEXT: and 4, 4, 7
25164 ; PWR6-NEXT: rldicl 3, 3, 8, 56
25165 ; PWR6-NEXT: li 5, 51
25166 ; PWR6-NEXT: mulld 4, 4, 9
25167 ; PWR6-NEXT: subc 6, 3, 5
25168 ; PWR6-NEXT: rldicl 4, 4, 8, 56
25169 ; PWR6-NEXT: subfe 3, 3, 3
25170 ; PWR6-NEXT: subc 5, 4, 5
25171 ; PWR6-NEXT: subfe 4, 4, 4
25174 ; PWR7-LABEL: ult_51_v2i64:
25176 ; PWR7-NEXT: addi 3, 1, -32
25177 ; PWR7-NEXT: li 5, -1
25178 ; PWR7-NEXT: stxvd2x 34, 0, 3
25179 ; PWR7-NEXT: ld 4, -24(1)
25180 ; PWR7-NEXT: ld 3, -32(1)
25181 ; PWR7-NEXT: popcntd 4, 4
25182 ; PWR7-NEXT: popcntd 3, 3
25183 ; PWR7-NEXT: cmpldi 4, 51
25184 ; PWR7-NEXT: li 4, 0
25185 ; PWR7-NEXT: isellt 6, 5, 4
25186 ; PWR7-NEXT: cmpldi 3, 51
25187 ; PWR7-NEXT: isellt 3, 5, 4
25188 ; PWR7-NEXT: std 6, -8(1)
25189 ; PWR7-NEXT: std 3, -16(1)
25190 ; PWR7-NEXT: addi 3, 1, -16
25191 ; PWR7-NEXT: lxvd2x 34, 0, 3
25194 ; PWR8-LABEL: ult_51_v2i64:
25196 ; PWR8-NEXT: addis 3, 2, .LCPI199_0@toc@ha
25197 ; PWR8-NEXT: vpopcntd 2, 2
25198 ; PWR8-NEXT: addi 3, 3, .LCPI199_0@toc@l
25199 ; PWR8-NEXT: lxvd2x 35, 0, 3
25200 ; PWR8-NEXT: vcmpgtud 2, 3, 2
25203 ; PWR9-LABEL: ult_51_v2i64:
25205 ; PWR9-NEXT: addis 3, 2, .LCPI199_0@toc@ha
25206 ; PWR9-NEXT: vpopcntd 2, 2
25207 ; PWR9-NEXT: addi 3, 3, .LCPI199_0@toc@l
25208 ; PWR9-NEXT: lxv 35, 0(3)
25209 ; PWR9-NEXT: vcmpgtud 2, 3, 2
25211 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
25212 %3 = icmp ult <2 x i64> %2, <i64 51, i64 51>
25213 %4 = sext <2 x i1> %3 to <2 x i64>
25217 define <2 x i64> @ugt_51_v2i64(<2 x i64> %0) {
25218 ; PWR5-LABEL: ugt_51_v2i64:
25220 ; PWR5-NEXT: lis 5, 21845
25221 ; PWR5-NEXT: lis 6, 13107
25222 ; PWR5-NEXT: ori 5, 5, 21845
25223 ; PWR5-NEXT: rotldi 8, 4, 63
25224 ; PWR5-NEXT: rotldi 9, 3, 63
25225 ; PWR5-NEXT: rldimi 5, 5, 32, 0
25226 ; PWR5-NEXT: and 8, 8, 5
25227 ; PWR5-NEXT: and 5, 9, 5
25228 ; PWR5-NEXT: ori 6, 6, 13107
25229 ; PWR5-NEXT: sub 3, 3, 5
25230 ; PWR5-NEXT: rldimi 6, 6, 32, 0
25231 ; PWR5-NEXT: sub 4, 4, 8
25232 ; PWR5-NEXT: and 8, 3, 6
25233 ; PWR5-NEXT: rotldi 3, 3, 62
25234 ; PWR5-NEXT: and 3, 3, 6
25235 ; PWR5-NEXT: lis 7, 3855
25236 ; PWR5-NEXT: and 5, 4, 6
25237 ; PWR5-NEXT: rotldi 4, 4, 62
25238 ; PWR5-NEXT: add 3, 8, 3
25239 ; PWR5-NEXT: lis 9, 257
25240 ; PWR5-NEXT: ori 7, 7, 3855
25241 ; PWR5-NEXT: and 4, 4, 6
25242 ; PWR5-NEXT: rldicl 6, 3, 60, 4
25243 ; PWR5-NEXT: ori 9, 9, 257
25244 ; PWR5-NEXT: rldimi 7, 7, 32, 0
25245 ; PWR5-NEXT: add 4, 5, 4
25246 ; PWR5-NEXT: add 3, 3, 6
25247 ; PWR5-NEXT: rldimi 9, 9, 32, 0
25248 ; PWR5-NEXT: rldicl 5, 4, 60, 4
25249 ; PWR5-NEXT: and 3, 3, 7
25250 ; PWR5-NEXT: add 4, 4, 5
25251 ; PWR5-NEXT: mulld 3, 3, 9
25252 ; PWR5-NEXT: and 4, 4, 7
25253 ; PWR5-NEXT: rldicl 3, 3, 8, 56
25254 ; PWR5-NEXT: mulld 4, 4, 9
25255 ; PWR5-NEXT: li 5, 51
25256 ; PWR5-NEXT: subfic 3, 3, 51
25257 ; PWR5-NEXT: rldicl 4, 4, 8, 56
25258 ; PWR5-NEXT: subfe 3, 5, 5
25259 ; PWR5-NEXT: subfic 4, 4, 51
25260 ; PWR5-NEXT: subfe 4, 5, 5
25263 ; PWR6-LABEL: ugt_51_v2i64:
25265 ; PWR6-NEXT: lis 5, 21845
25266 ; PWR6-NEXT: lis 6, 13107
25267 ; PWR6-NEXT: ori 5, 5, 21845
25268 ; PWR6-NEXT: rotldi 8, 4, 63
25269 ; PWR6-NEXT: rotldi 9, 3, 63
25270 ; PWR6-NEXT: rldimi 5, 5, 32, 0
25271 ; PWR6-NEXT: and 8, 8, 5
25272 ; PWR6-NEXT: and 5, 9, 5
25273 ; PWR6-NEXT: ori 6, 6, 13107
25274 ; PWR6-NEXT: sub 3, 3, 5
25275 ; PWR6-NEXT: rldimi 6, 6, 32, 0
25276 ; PWR6-NEXT: sub 4, 4, 8
25277 ; PWR6-NEXT: and 8, 3, 6
25278 ; PWR6-NEXT: rotldi 3, 3, 62
25279 ; PWR6-NEXT: and 3, 3, 6
25280 ; PWR6-NEXT: lis 7, 3855
25281 ; PWR6-NEXT: and 5, 4, 6
25282 ; PWR6-NEXT: rotldi 4, 4, 62
25283 ; PWR6-NEXT: add 3, 8, 3
25284 ; PWR6-NEXT: lis 9, 257
25285 ; PWR6-NEXT: ori 7, 7, 3855
25286 ; PWR6-NEXT: and 4, 4, 6
25287 ; PWR6-NEXT: rldicl 6, 3, 60, 4
25288 ; PWR6-NEXT: ori 9, 9, 257
25289 ; PWR6-NEXT: rldimi 7, 7, 32, 0
25290 ; PWR6-NEXT: add 4, 5, 4
25291 ; PWR6-NEXT: add 3, 3, 6
25292 ; PWR6-NEXT: rldimi 9, 9, 32, 0
25293 ; PWR6-NEXT: rldicl 5, 4, 60, 4
25294 ; PWR6-NEXT: and 3, 3, 7
25295 ; PWR6-NEXT: add 4, 4, 5
25296 ; PWR6-NEXT: mulld 3, 3, 9
25297 ; PWR6-NEXT: and 4, 4, 7
25298 ; PWR6-NEXT: rldicl 3, 3, 8, 56
25299 ; PWR6-NEXT: mulld 4, 4, 9
25300 ; PWR6-NEXT: li 5, 51
25301 ; PWR6-NEXT: subfic 3, 3, 51
25302 ; PWR6-NEXT: rldicl 4, 4, 8, 56
25303 ; PWR6-NEXT: subfe 3, 5, 5
25304 ; PWR6-NEXT: subfic 4, 4, 51
25305 ; PWR6-NEXT: subfe 4, 5, 5
25308 ; PWR7-LABEL: ugt_51_v2i64:
25310 ; PWR7-NEXT: addi 3, 1, -32
25311 ; PWR7-NEXT: li 5, -1
25312 ; PWR7-NEXT: stxvd2x 34, 0, 3
25313 ; PWR7-NEXT: ld 4, -24(1)
25314 ; PWR7-NEXT: ld 3, -32(1)
25315 ; PWR7-NEXT: popcntd 4, 4
25316 ; PWR7-NEXT: popcntd 3, 3
25317 ; PWR7-NEXT: cmpldi 4, 51
25318 ; PWR7-NEXT: li 4, 0
25319 ; PWR7-NEXT: iselgt 6, 5, 4
25320 ; PWR7-NEXT: cmpldi 3, 51
25321 ; PWR7-NEXT: iselgt 3, 5, 4
25322 ; PWR7-NEXT: std 6, -8(1)
25323 ; PWR7-NEXT: std 3, -16(1)
25324 ; PWR7-NEXT: addi 3, 1, -16
25325 ; PWR7-NEXT: lxvd2x 34, 0, 3
25328 ; PWR8-LABEL: ugt_51_v2i64:
25330 ; PWR8-NEXT: addis 3, 2, .LCPI200_0@toc@ha
25331 ; PWR8-NEXT: vpopcntd 2, 2
25332 ; PWR8-NEXT: addi 3, 3, .LCPI200_0@toc@l
25333 ; PWR8-NEXT: lxvd2x 35, 0, 3
25334 ; PWR8-NEXT: vcmpgtud 2, 2, 3
25337 ; PWR9-LABEL: ugt_51_v2i64:
25339 ; PWR9-NEXT: addis 3, 2, .LCPI200_0@toc@ha
25340 ; PWR9-NEXT: vpopcntd 2, 2
25341 ; PWR9-NEXT: addi 3, 3, .LCPI200_0@toc@l
25342 ; PWR9-NEXT: lxv 35, 0(3)
25343 ; PWR9-NEXT: vcmpgtud 2, 2, 3
25345 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
25346 %3 = icmp ugt <2 x i64> %2, <i64 51, i64 51>
25347 %4 = sext <2 x i1> %3 to <2 x i64>
25351 define <2 x i64> @ult_52_v2i64(<2 x i64> %0) {
25352 ; PWR5-LABEL: ult_52_v2i64:
25354 ; PWR5-NEXT: lis 5, 21845
25355 ; PWR5-NEXT: lis 6, 13107
25356 ; PWR5-NEXT: ori 5, 5, 21845
25357 ; PWR5-NEXT: rotldi 8, 4, 63
25358 ; PWR5-NEXT: rotldi 9, 3, 63
25359 ; PWR5-NEXT: rldimi 5, 5, 32, 0
25360 ; PWR5-NEXT: and 8, 8, 5
25361 ; PWR5-NEXT: and 5, 9, 5
25362 ; PWR5-NEXT: ori 6, 6, 13107
25363 ; PWR5-NEXT: sub 3, 3, 5
25364 ; PWR5-NEXT: rldimi 6, 6, 32, 0
25365 ; PWR5-NEXT: sub 4, 4, 8
25366 ; PWR5-NEXT: and 8, 3, 6
25367 ; PWR5-NEXT: rotldi 3, 3, 62
25368 ; PWR5-NEXT: and 3, 3, 6
25369 ; PWR5-NEXT: lis 7, 3855
25370 ; PWR5-NEXT: and 5, 4, 6
25371 ; PWR5-NEXT: rotldi 4, 4, 62
25372 ; PWR5-NEXT: add 3, 8, 3
25373 ; PWR5-NEXT: lis 9, 257
25374 ; PWR5-NEXT: ori 7, 7, 3855
25375 ; PWR5-NEXT: and 4, 4, 6
25376 ; PWR5-NEXT: rldicl 6, 3, 60, 4
25377 ; PWR5-NEXT: ori 9, 9, 257
25378 ; PWR5-NEXT: rldimi 7, 7, 32, 0
25379 ; PWR5-NEXT: add 4, 5, 4
25380 ; PWR5-NEXT: add 3, 3, 6
25381 ; PWR5-NEXT: rldimi 9, 9, 32, 0
25382 ; PWR5-NEXT: rldicl 5, 4, 60, 4
25383 ; PWR5-NEXT: and 3, 3, 7
25384 ; PWR5-NEXT: add 4, 4, 5
25385 ; PWR5-NEXT: mulld 3, 3, 9
25386 ; PWR5-NEXT: and 4, 4, 7
25387 ; PWR5-NEXT: rldicl 3, 3, 8, 56
25388 ; PWR5-NEXT: li 5, 52
25389 ; PWR5-NEXT: mulld 4, 4, 9
25390 ; PWR5-NEXT: subc 6, 3, 5
25391 ; PWR5-NEXT: rldicl 4, 4, 8, 56
25392 ; PWR5-NEXT: subfe 3, 3, 3
25393 ; PWR5-NEXT: subc 5, 4, 5
25394 ; PWR5-NEXT: subfe 4, 4, 4
25397 ; PWR6-LABEL: ult_52_v2i64:
25399 ; PWR6-NEXT: lis 5, 21845
25400 ; PWR6-NEXT: lis 6, 13107
25401 ; PWR6-NEXT: ori 5, 5, 21845
25402 ; PWR6-NEXT: rotldi 8, 4, 63
25403 ; PWR6-NEXT: rotldi 9, 3, 63
25404 ; PWR6-NEXT: rldimi 5, 5, 32, 0
25405 ; PWR6-NEXT: and 8, 8, 5
25406 ; PWR6-NEXT: and 5, 9, 5
25407 ; PWR6-NEXT: ori 6, 6, 13107
25408 ; PWR6-NEXT: sub 3, 3, 5
25409 ; PWR6-NEXT: rldimi 6, 6, 32, 0
25410 ; PWR6-NEXT: sub 4, 4, 8
25411 ; PWR6-NEXT: and 8, 3, 6
25412 ; PWR6-NEXT: rotldi 3, 3, 62
25413 ; PWR6-NEXT: and 3, 3, 6
25414 ; PWR6-NEXT: lis 7, 3855
25415 ; PWR6-NEXT: and 5, 4, 6
25416 ; PWR6-NEXT: rotldi 4, 4, 62
25417 ; PWR6-NEXT: add 3, 8, 3
25418 ; PWR6-NEXT: lis 9, 257
25419 ; PWR6-NEXT: ori 7, 7, 3855
25420 ; PWR6-NEXT: and 4, 4, 6
25421 ; PWR6-NEXT: rldicl 6, 3, 60, 4
25422 ; PWR6-NEXT: ori 9, 9, 257
25423 ; PWR6-NEXT: rldimi 7, 7, 32, 0
25424 ; PWR6-NEXT: add 4, 5, 4
25425 ; PWR6-NEXT: add 3, 3, 6
25426 ; PWR6-NEXT: rldimi 9, 9, 32, 0
25427 ; PWR6-NEXT: rldicl 5, 4, 60, 4
25428 ; PWR6-NEXT: and 3, 3, 7
25429 ; PWR6-NEXT: add 4, 4, 5
25430 ; PWR6-NEXT: mulld 3, 3, 9
25431 ; PWR6-NEXT: and 4, 4, 7
25432 ; PWR6-NEXT: rldicl 3, 3, 8, 56
25433 ; PWR6-NEXT: li 5, 52
25434 ; PWR6-NEXT: mulld 4, 4, 9
25435 ; PWR6-NEXT: subc 6, 3, 5
25436 ; PWR6-NEXT: rldicl 4, 4, 8, 56
25437 ; PWR6-NEXT: subfe 3, 3, 3
25438 ; PWR6-NEXT: subc 5, 4, 5
25439 ; PWR6-NEXT: subfe 4, 4, 4
25442 ; PWR7-LABEL: ult_52_v2i64:
25444 ; PWR7-NEXT: addi 3, 1, -32
25445 ; PWR7-NEXT: li 5, -1
25446 ; PWR7-NEXT: stxvd2x 34, 0, 3
25447 ; PWR7-NEXT: ld 4, -24(1)
25448 ; PWR7-NEXT: ld 3, -32(1)
25449 ; PWR7-NEXT: popcntd 4, 4
25450 ; PWR7-NEXT: popcntd 3, 3
25451 ; PWR7-NEXT: cmpldi 4, 52
25452 ; PWR7-NEXT: li 4, 0
25453 ; PWR7-NEXT: isellt 6, 5, 4
25454 ; PWR7-NEXT: cmpldi 3, 52
25455 ; PWR7-NEXT: isellt 3, 5, 4
25456 ; PWR7-NEXT: std 6, -8(1)
25457 ; PWR7-NEXT: std 3, -16(1)
25458 ; PWR7-NEXT: addi 3, 1, -16
25459 ; PWR7-NEXT: lxvd2x 34, 0, 3
25462 ; PWR8-LABEL: ult_52_v2i64:
25464 ; PWR8-NEXT: addis 3, 2, .LCPI201_0@toc@ha
25465 ; PWR8-NEXT: vpopcntd 2, 2
25466 ; PWR8-NEXT: addi 3, 3, .LCPI201_0@toc@l
25467 ; PWR8-NEXT: lxvd2x 35, 0, 3
25468 ; PWR8-NEXT: vcmpgtud 2, 3, 2
25471 ; PWR9-LABEL: ult_52_v2i64:
25473 ; PWR9-NEXT: addis 3, 2, .LCPI201_0@toc@ha
25474 ; PWR9-NEXT: vpopcntd 2, 2
25475 ; PWR9-NEXT: addi 3, 3, .LCPI201_0@toc@l
25476 ; PWR9-NEXT: lxv 35, 0(3)
25477 ; PWR9-NEXT: vcmpgtud 2, 3, 2
25479 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
25480 %3 = icmp ult <2 x i64> %2, <i64 52, i64 52>
25481 %4 = sext <2 x i1> %3 to <2 x i64>
25485 define <2 x i64> @ugt_52_v2i64(<2 x i64> %0) {
25486 ; PWR5-LABEL: ugt_52_v2i64:
25488 ; PWR5-NEXT: lis 5, 21845
25489 ; PWR5-NEXT: lis 6, 13107
25490 ; PWR5-NEXT: ori 5, 5, 21845
25491 ; PWR5-NEXT: rotldi 8, 4, 63
25492 ; PWR5-NEXT: rotldi 9, 3, 63
25493 ; PWR5-NEXT: rldimi 5, 5, 32, 0
25494 ; PWR5-NEXT: and 8, 8, 5
25495 ; PWR5-NEXT: and 5, 9, 5
25496 ; PWR5-NEXT: ori 6, 6, 13107
25497 ; PWR5-NEXT: sub 3, 3, 5
25498 ; PWR5-NEXT: rldimi 6, 6, 32, 0
25499 ; PWR5-NEXT: sub 4, 4, 8
25500 ; PWR5-NEXT: and 8, 3, 6
25501 ; PWR5-NEXT: rotldi 3, 3, 62
25502 ; PWR5-NEXT: and 3, 3, 6
25503 ; PWR5-NEXT: lis 7, 3855
25504 ; PWR5-NEXT: and 5, 4, 6
25505 ; PWR5-NEXT: rotldi 4, 4, 62
25506 ; PWR5-NEXT: add 3, 8, 3
25507 ; PWR5-NEXT: lis 9, 257
25508 ; PWR5-NEXT: ori 7, 7, 3855
25509 ; PWR5-NEXT: and 4, 4, 6
25510 ; PWR5-NEXT: rldicl 6, 3, 60, 4
25511 ; PWR5-NEXT: ori 9, 9, 257
25512 ; PWR5-NEXT: rldimi 7, 7, 32, 0
25513 ; PWR5-NEXT: add 4, 5, 4
25514 ; PWR5-NEXT: add 3, 3, 6
25515 ; PWR5-NEXT: rldimi 9, 9, 32, 0
25516 ; PWR5-NEXT: rldicl 5, 4, 60, 4
25517 ; PWR5-NEXT: and 3, 3, 7
25518 ; PWR5-NEXT: add 4, 4, 5
25519 ; PWR5-NEXT: mulld 3, 3, 9
25520 ; PWR5-NEXT: and 4, 4, 7
25521 ; PWR5-NEXT: rldicl 3, 3, 8, 56
25522 ; PWR5-NEXT: mulld 4, 4, 9
25523 ; PWR5-NEXT: li 5, 52
25524 ; PWR5-NEXT: subfic 3, 3, 52
25525 ; PWR5-NEXT: rldicl 4, 4, 8, 56
25526 ; PWR5-NEXT: subfe 3, 5, 5
25527 ; PWR5-NEXT: subfic 4, 4, 52
25528 ; PWR5-NEXT: subfe 4, 5, 5
25531 ; PWR6-LABEL: ugt_52_v2i64:
25533 ; PWR6-NEXT: lis 5, 21845
25534 ; PWR6-NEXT: lis 6, 13107
25535 ; PWR6-NEXT: ori 5, 5, 21845
25536 ; PWR6-NEXT: rotldi 8, 4, 63
25537 ; PWR6-NEXT: rotldi 9, 3, 63
25538 ; PWR6-NEXT: rldimi 5, 5, 32, 0
25539 ; PWR6-NEXT: and 8, 8, 5
25540 ; PWR6-NEXT: and 5, 9, 5
25541 ; PWR6-NEXT: ori 6, 6, 13107
25542 ; PWR6-NEXT: sub 3, 3, 5
25543 ; PWR6-NEXT: rldimi 6, 6, 32, 0
25544 ; PWR6-NEXT: sub 4, 4, 8
25545 ; PWR6-NEXT: and 8, 3, 6
25546 ; PWR6-NEXT: rotldi 3, 3, 62
25547 ; PWR6-NEXT: and 3, 3, 6
25548 ; PWR6-NEXT: lis 7, 3855
25549 ; PWR6-NEXT: and 5, 4, 6
25550 ; PWR6-NEXT: rotldi 4, 4, 62
25551 ; PWR6-NEXT: add 3, 8, 3
25552 ; PWR6-NEXT: lis 9, 257
25553 ; PWR6-NEXT: ori 7, 7, 3855
25554 ; PWR6-NEXT: and 4, 4, 6
25555 ; PWR6-NEXT: rldicl 6, 3, 60, 4
25556 ; PWR6-NEXT: ori 9, 9, 257
25557 ; PWR6-NEXT: rldimi 7, 7, 32, 0
25558 ; PWR6-NEXT: add 4, 5, 4
25559 ; PWR6-NEXT: add 3, 3, 6
25560 ; PWR6-NEXT: rldimi 9, 9, 32, 0
25561 ; PWR6-NEXT: rldicl 5, 4, 60, 4
25562 ; PWR6-NEXT: and 3, 3, 7
25563 ; PWR6-NEXT: add 4, 4, 5
25564 ; PWR6-NEXT: mulld 3, 3, 9
25565 ; PWR6-NEXT: and 4, 4, 7
25566 ; PWR6-NEXT: rldicl 3, 3, 8, 56
25567 ; PWR6-NEXT: mulld 4, 4, 9
25568 ; PWR6-NEXT: li 5, 52
25569 ; PWR6-NEXT: subfic 3, 3, 52
25570 ; PWR6-NEXT: rldicl 4, 4, 8, 56
25571 ; PWR6-NEXT: subfe 3, 5, 5
25572 ; PWR6-NEXT: subfic 4, 4, 52
25573 ; PWR6-NEXT: subfe 4, 5, 5
25576 ; PWR7-LABEL: ugt_52_v2i64:
25578 ; PWR7-NEXT: addi 3, 1, -32
25579 ; PWR7-NEXT: li 5, -1
25580 ; PWR7-NEXT: stxvd2x 34, 0, 3
25581 ; PWR7-NEXT: ld 4, -24(1)
25582 ; PWR7-NEXT: ld 3, -32(1)
25583 ; PWR7-NEXT: popcntd 4, 4
25584 ; PWR7-NEXT: popcntd 3, 3
25585 ; PWR7-NEXT: cmpldi 4, 52
25586 ; PWR7-NEXT: li 4, 0
25587 ; PWR7-NEXT: iselgt 6, 5, 4
25588 ; PWR7-NEXT: cmpldi 3, 52
25589 ; PWR7-NEXT: iselgt 3, 5, 4
25590 ; PWR7-NEXT: std 6, -8(1)
25591 ; PWR7-NEXT: std 3, -16(1)
25592 ; PWR7-NEXT: addi 3, 1, -16
25593 ; PWR7-NEXT: lxvd2x 34, 0, 3
25596 ; PWR8-LABEL: ugt_52_v2i64:
25598 ; PWR8-NEXT: addis 3, 2, .LCPI202_0@toc@ha
25599 ; PWR8-NEXT: vpopcntd 2, 2
25600 ; PWR8-NEXT: addi 3, 3, .LCPI202_0@toc@l
25601 ; PWR8-NEXT: lxvd2x 35, 0, 3
25602 ; PWR8-NEXT: vcmpgtud 2, 2, 3
25605 ; PWR9-LABEL: ugt_52_v2i64:
25607 ; PWR9-NEXT: addis 3, 2, .LCPI202_0@toc@ha
25608 ; PWR9-NEXT: vpopcntd 2, 2
25609 ; PWR9-NEXT: addi 3, 3, .LCPI202_0@toc@l
25610 ; PWR9-NEXT: lxv 35, 0(3)
25611 ; PWR9-NEXT: vcmpgtud 2, 2, 3
25613 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
25614 %3 = icmp ugt <2 x i64> %2, <i64 52, i64 52>
25615 %4 = sext <2 x i1> %3 to <2 x i64>
25619 define <2 x i64> @ult_53_v2i64(<2 x i64> %0) {
25620 ; PWR5-LABEL: ult_53_v2i64:
25622 ; PWR5-NEXT: lis 5, 21845
25623 ; PWR5-NEXT: lis 6, 13107
25624 ; PWR5-NEXT: ori 5, 5, 21845
25625 ; PWR5-NEXT: rotldi 8, 4, 63
25626 ; PWR5-NEXT: rotldi 9, 3, 63
25627 ; PWR5-NEXT: rldimi 5, 5, 32, 0
25628 ; PWR5-NEXT: and 8, 8, 5
25629 ; PWR5-NEXT: and 5, 9, 5
25630 ; PWR5-NEXT: ori 6, 6, 13107
25631 ; PWR5-NEXT: sub 3, 3, 5
25632 ; PWR5-NEXT: rldimi 6, 6, 32, 0
25633 ; PWR5-NEXT: sub 4, 4, 8
25634 ; PWR5-NEXT: and 8, 3, 6
25635 ; PWR5-NEXT: rotldi 3, 3, 62
25636 ; PWR5-NEXT: and 3, 3, 6
25637 ; PWR5-NEXT: lis 7, 3855
25638 ; PWR5-NEXT: and 5, 4, 6
25639 ; PWR5-NEXT: rotldi 4, 4, 62
25640 ; PWR5-NEXT: add 3, 8, 3
25641 ; PWR5-NEXT: lis 9, 257
25642 ; PWR5-NEXT: ori 7, 7, 3855
25643 ; PWR5-NEXT: and 4, 4, 6
25644 ; PWR5-NEXT: rldicl 6, 3, 60, 4
25645 ; PWR5-NEXT: ori 9, 9, 257
25646 ; PWR5-NEXT: rldimi 7, 7, 32, 0
25647 ; PWR5-NEXT: add 4, 5, 4
25648 ; PWR5-NEXT: add 3, 3, 6
25649 ; PWR5-NEXT: rldimi 9, 9, 32, 0
25650 ; PWR5-NEXT: rldicl 5, 4, 60, 4
25651 ; PWR5-NEXT: and 3, 3, 7
25652 ; PWR5-NEXT: add 4, 4, 5
25653 ; PWR5-NEXT: mulld 3, 3, 9
25654 ; PWR5-NEXT: and 4, 4, 7
25655 ; PWR5-NEXT: rldicl 3, 3, 8, 56
25656 ; PWR5-NEXT: li 5, 53
25657 ; PWR5-NEXT: mulld 4, 4, 9
25658 ; PWR5-NEXT: subc 6, 3, 5
25659 ; PWR5-NEXT: rldicl 4, 4, 8, 56
25660 ; PWR5-NEXT: subfe 3, 3, 3
25661 ; PWR5-NEXT: subc 5, 4, 5
25662 ; PWR5-NEXT: subfe 4, 4, 4
25665 ; PWR6-LABEL: ult_53_v2i64:
25667 ; PWR6-NEXT: lis 5, 21845
25668 ; PWR6-NEXT: lis 6, 13107
25669 ; PWR6-NEXT: ori 5, 5, 21845
25670 ; PWR6-NEXT: rotldi 8, 4, 63
25671 ; PWR6-NEXT: rotldi 9, 3, 63
25672 ; PWR6-NEXT: rldimi 5, 5, 32, 0
25673 ; PWR6-NEXT: and 8, 8, 5
25674 ; PWR6-NEXT: and 5, 9, 5
25675 ; PWR6-NEXT: ori 6, 6, 13107
25676 ; PWR6-NEXT: sub 3, 3, 5
25677 ; PWR6-NEXT: rldimi 6, 6, 32, 0
25678 ; PWR6-NEXT: sub 4, 4, 8
25679 ; PWR6-NEXT: and 8, 3, 6
25680 ; PWR6-NEXT: rotldi 3, 3, 62
25681 ; PWR6-NEXT: and 3, 3, 6
25682 ; PWR6-NEXT: lis 7, 3855
25683 ; PWR6-NEXT: and 5, 4, 6
25684 ; PWR6-NEXT: rotldi 4, 4, 62
25685 ; PWR6-NEXT: add 3, 8, 3
25686 ; PWR6-NEXT: lis 9, 257
25687 ; PWR6-NEXT: ori 7, 7, 3855
25688 ; PWR6-NEXT: and 4, 4, 6
25689 ; PWR6-NEXT: rldicl 6, 3, 60, 4
25690 ; PWR6-NEXT: ori 9, 9, 257
25691 ; PWR6-NEXT: rldimi 7, 7, 32, 0
25692 ; PWR6-NEXT: add 4, 5, 4
25693 ; PWR6-NEXT: add 3, 3, 6
25694 ; PWR6-NEXT: rldimi 9, 9, 32, 0
25695 ; PWR6-NEXT: rldicl 5, 4, 60, 4
25696 ; PWR6-NEXT: and 3, 3, 7
25697 ; PWR6-NEXT: add 4, 4, 5
25698 ; PWR6-NEXT: mulld 3, 3, 9
25699 ; PWR6-NEXT: and 4, 4, 7
25700 ; PWR6-NEXT: rldicl 3, 3, 8, 56
25701 ; PWR6-NEXT: li 5, 53
25702 ; PWR6-NEXT: mulld 4, 4, 9
25703 ; PWR6-NEXT: subc 6, 3, 5
25704 ; PWR6-NEXT: rldicl 4, 4, 8, 56
25705 ; PWR6-NEXT: subfe 3, 3, 3
25706 ; PWR6-NEXT: subc 5, 4, 5
25707 ; PWR6-NEXT: subfe 4, 4, 4
25710 ; PWR7-LABEL: ult_53_v2i64:
25712 ; PWR7-NEXT: addi 3, 1, -32
25713 ; PWR7-NEXT: li 5, -1
25714 ; PWR7-NEXT: stxvd2x 34, 0, 3
25715 ; PWR7-NEXT: ld 4, -24(1)
25716 ; PWR7-NEXT: ld 3, -32(1)
25717 ; PWR7-NEXT: popcntd 4, 4
25718 ; PWR7-NEXT: popcntd 3, 3
25719 ; PWR7-NEXT: cmpldi 4, 53
25720 ; PWR7-NEXT: li 4, 0
25721 ; PWR7-NEXT: isellt 6, 5, 4
25722 ; PWR7-NEXT: cmpldi 3, 53
25723 ; PWR7-NEXT: isellt 3, 5, 4
25724 ; PWR7-NEXT: std 6, -8(1)
25725 ; PWR7-NEXT: std 3, -16(1)
25726 ; PWR7-NEXT: addi 3, 1, -16
25727 ; PWR7-NEXT: lxvd2x 34, 0, 3
25730 ; PWR8-LABEL: ult_53_v2i64:
25732 ; PWR8-NEXT: addis 3, 2, .LCPI203_0@toc@ha
25733 ; PWR8-NEXT: vpopcntd 2, 2
25734 ; PWR8-NEXT: addi 3, 3, .LCPI203_0@toc@l
25735 ; PWR8-NEXT: lxvd2x 35, 0, 3
25736 ; PWR8-NEXT: vcmpgtud 2, 3, 2
25739 ; PWR9-LABEL: ult_53_v2i64:
25741 ; PWR9-NEXT: addis 3, 2, .LCPI203_0@toc@ha
25742 ; PWR9-NEXT: vpopcntd 2, 2
25743 ; PWR9-NEXT: addi 3, 3, .LCPI203_0@toc@l
25744 ; PWR9-NEXT: lxv 35, 0(3)
25745 ; PWR9-NEXT: vcmpgtud 2, 3, 2
25747 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
25748 %3 = icmp ult <2 x i64> %2, <i64 53, i64 53>
25749 %4 = sext <2 x i1> %3 to <2 x i64>
25753 define <2 x i64> @ugt_53_v2i64(<2 x i64> %0) {
25754 ; PWR5-LABEL: ugt_53_v2i64:
25756 ; PWR5-NEXT: lis 5, 21845
25757 ; PWR5-NEXT: lis 6, 13107
25758 ; PWR5-NEXT: ori 5, 5, 21845
25759 ; PWR5-NEXT: rotldi 8, 4, 63
25760 ; PWR5-NEXT: rotldi 9, 3, 63
25761 ; PWR5-NEXT: rldimi 5, 5, 32, 0
25762 ; PWR5-NEXT: and 8, 8, 5
25763 ; PWR5-NEXT: and 5, 9, 5
25764 ; PWR5-NEXT: ori 6, 6, 13107
25765 ; PWR5-NEXT: sub 3, 3, 5
25766 ; PWR5-NEXT: rldimi 6, 6, 32, 0
25767 ; PWR5-NEXT: sub 4, 4, 8
25768 ; PWR5-NEXT: and 8, 3, 6
25769 ; PWR5-NEXT: rotldi 3, 3, 62
25770 ; PWR5-NEXT: and 3, 3, 6
25771 ; PWR5-NEXT: lis 7, 3855
25772 ; PWR5-NEXT: and 5, 4, 6
25773 ; PWR5-NEXT: rotldi 4, 4, 62
25774 ; PWR5-NEXT: add 3, 8, 3
25775 ; PWR5-NEXT: lis 9, 257
25776 ; PWR5-NEXT: ori 7, 7, 3855
25777 ; PWR5-NEXT: and 4, 4, 6
25778 ; PWR5-NEXT: rldicl 6, 3, 60, 4
25779 ; PWR5-NEXT: ori 9, 9, 257
25780 ; PWR5-NEXT: rldimi 7, 7, 32, 0
25781 ; PWR5-NEXT: add 4, 5, 4
25782 ; PWR5-NEXT: add 3, 3, 6
25783 ; PWR5-NEXT: rldimi 9, 9, 32, 0
25784 ; PWR5-NEXT: rldicl 5, 4, 60, 4
25785 ; PWR5-NEXT: and 3, 3, 7
25786 ; PWR5-NEXT: add 4, 4, 5
25787 ; PWR5-NEXT: mulld 3, 3, 9
25788 ; PWR5-NEXT: and 4, 4, 7
25789 ; PWR5-NEXT: rldicl 3, 3, 8, 56
25790 ; PWR5-NEXT: mulld 4, 4, 9
25791 ; PWR5-NEXT: li 5, 53
25792 ; PWR5-NEXT: subfic 3, 3, 53
25793 ; PWR5-NEXT: rldicl 4, 4, 8, 56
25794 ; PWR5-NEXT: subfe 3, 5, 5
25795 ; PWR5-NEXT: subfic 4, 4, 53
25796 ; PWR5-NEXT: subfe 4, 5, 5
25799 ; PWR6-LABEL: ugt_53_v2i64:
25801 ; PWR6-NEXT: lis 5, 21845
25802 ; PWR6-NEXT: lis 6, 13107
25803 ; PWR6-NEXT: ori 5, 5, 21845
25804 ; PWR6-NEXT: rotldi 8, 4, 63
25805 ; PWR6-NEXT: rotldi 9, 3, 63
25806 ; PWR6-NEXT: rldimi 5, 5, 32, 0
25807 ; PWR6-NEXT: and 8, 8, 5
25808 ; PWR6-NEXT: and 5, 9, 5
25809 ; PWR6-NEXT: ori 6, 6, 13107
25810 ; PWR6-NEXT: sub 3, 3, 5
25811 ; PWR6-NEXT: rldimi 6, 6, 32, 0
25812 ; PWR6-NEXT: sub 4, 4, 8
25813 ; PWR6-NEXT: and 8, 3, 6
25814 ; PWR6-NEXT: rotldi 3, 3, 62
25815 ; PWR6-NEXT: and 3, 3, 6
25816 ; PWR6-NEXT: lis 7, 3855
25817 ; PWR6-NEXT: and 5, 4, 6
25818 ; PWR6-NEXT: rotldi 4, 4, 62
25819 ; PWR6-NEXT: add 3, 8, 3
25820 ; PWR6-NEXT: lis 9, 257
25821 ; PWR6-NEXT: ori 7, 7, 3855
25822 ; PWR6-NEXT: and 4, 4, 6
25823 ; PWR6-NEXT: rldicl 6, 3, 60, 4
25824 ; PWR6-NEXT: ori 9, 9, 257
25825 ; PWR6-NEXT: rldimi 7, 7, 32, 0
25826 ; PWR6-NEXT: add 4, 5, 4
25827 ; PWR6-NEXT: add 3, 3, 6
25828 ; PWR6-NEXT: rldimi 9, 9, 32, 0
25829 ; PWR6-NEXT: rldicl 5, 4, 60, 4
25830 ; PWR6-NEXT: and 3, 3, 7
25831 ; PWR6-NEXT: add 4, 4, 5
25832 ; PWR6-NEXT: mulld 3, 3, 9
25833 ; PWR6-NEXT: and 4, 4, 7
25834 ; PWR6-NEXT: rldicl 3, 3, 8, 56
25835 ; PWR6-NEXT: mulld 4, 4, 9
25836 ; PWR6-NEXT: li 5, 53
25837 ; PWR6-NEXT: subfic 3, 3, 53
25838 ; PWR6-NEXT: rldicl 4, 4, 8, 56
25839 ; PWR6-NEXT: subfe 3, 5, 5
25840 ; PWR6-NEXT: subfic 4, 4, 53
25841 ; PWR6-NEXT: subfe 4, 5, 5
25844 ; PWR7-LABEL: ugt_53_v2i64:
25846 ; PWR7-NEXT: addi 3, 1, -32
25847 ; PWR7-NEXT: li 5, -1
25848 ; PWR7-NEXT: stxvd2x 34, 0, 3
25849 ; PWR7-NEXT: ld 4, -24(1)
25850 ; PWR7-NEXT: ld 3, -32(1)
25851 ; PWR7-NEXT: popcntd 4, 4
25852 ; PWR7-NEXT: popcntd 3, 3
25853 ; PWR7-NEXT: cmpldi 4, 53
25854 ; PWR7-NEXT: li 4, 0
25855 ; PWR7-NEXT: iselgt 6, 5, 4
25856 ; PWR7-NEXT: cmpldi 3, 53
25857 ; PWR7-NEXT: iselgt 3, 5, 4
25858 ; PWR7-NEXT: std 6, -8(1)
25859 ; PWR7-NEXT: std 3, -16(1)
25860 ; PWR7-NEXT: addi 3, 1, -16
25861 ; PWR7-NEXT: lxvd2x 34, 0, 3
25864 ; PWR8-LABEL: ugt_53_v2i64:
25866 ; PWR8-NEXT: addis 3, 2, .LCPI204_0@toc@ha
25867 ; PWR8-NEXT: vpopcntd 2, 2
25868 ; PWR8-NEXT: addi 3, 3, .LCPI204_0@toc@l
25869 ; PWR8-NEXT: lxvd2x 35, 0, 3
25870 ; PWR8-NEXT: vcmpgtud 2, 2, 3
25873 ; PWR9-LABEL: ugt_53_v2i64:
25875 ; PWR9-NEXT: addis 3, 2, .LCPI204_0@toc@ha
25876 ; PWR9-NEXT: vpopcntd 2, 2
25877 ; PWR9-NEXT: addi 3, 3, .LCPI204_0@toc@l
25878 ; PWR9-NEXT: lxv 35, 0(3)
25879 ; PWR9-NEXT: vcmpgtud 2, 2, 3
25881 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
25882 %3 = icmp ugt <2 x i64> %2, <i64 53, i64 53>
25883 %4 = sext <2 x i1> %3 to <2 x i64>
25887 define <2 x i64> @ult_54_v2i64(<2 x i64> %0) {
25888 ; PWR5-LABEL: ult_54_v2i64:
25890 ; PWR5-NEXT: lis 5, 21845
25891 ; PWR5-NEXT: lis 6, 13107
25892 ; PWR5-NEXT: ori 5, 5, 21845
25893 ; PWR5-NEXT: rotldi 8, 4, 63
25894 ; PWR5-NEXT: rotldi 9, 3, 63
25895 ; PWR5-NEXT: rldimi 5, 5, 32, 0
25896 ; PWR5-NEXT: and 8, 8, 5
25897 ; PWR5-NEXT: and 5, 9, 5
25898 ; PWR5-NEXT: ori 6, 6, 13107
25899 ; PWR5-NEXT: sub 3, 3, 5
25900 ; PWR5-NEXT: rldimi 6, 6, 32, 0
25901 ; PWR5-NEXT: sub 4, 4, 8
25902 ; PWR5-NEXT: and 8, 3, 6
25903 ; PWR5-NEXT: rotldi 3, 3, 62
25904 ; PWR5-NEXT: and 3, 3, 6
25905 ; PWR5-NEXT: lis 7, 3855
25906 ; PWR5-NEXT: and 5, 4, 6
25907 ; PWR5-NEXT: rotldi 4, 4, 62
25908 ; PWR5-NEXT: add 3, 8, 3
25909 ; PWR5-NEXT: lis 9, 257
25910 ; PWR5-NEXT: ori 7, 7, 3855
25911 ; PWR5-NEXT: and 4, 4, 6
25912 ; PWR5-NEXT: rldicl 6, 3, 60, 4
25913 ; PWR5-NEXT: ori 9, 9, 257
25914 ; PWR5-NEXT: rldimi 7, 7, 32, 0
25915 ; PWR5-NEXT: add 4, 5, 4
25916 ; PWR5-NEXT: add 3, 3, 6
25917 ; PWR5-NEXT: rldimi 9, 9, 32, 0
25918 ; PWR5-NEXT: rldicl 5, 4, 60, 4
25919 ; PWR5-NEXT: and 3, 3, 7
25920 ; PWR5-NEXT: add 4, 4, 5
25921 ; PWR5-NEXT: mulld 3, 3, 9
25922 ; PWR5-NEXT: and 4, 4, 7
25923 ; PWR5-NEXT: rldicl 3, 3, 8, 56
25924 ; PWR5-NEXT: li 5, 54
25925 ; PWR5-NEXT: mulld 4, 4, 9
25926 ; PWR5-NEXT: subc 6, 3, 5
25927 ; PWR5-NEXT: rldicl 4, 4, 8, 56
25928 ; PWR5-NEXT: subfe 3, 3, 3
25929 ; PWR5-NEXT: subc 5, 4, 5
25930 ; PWR5-NEXT: subfe 4, 4, 4
25933 ; PWR6-LABEL: ult_54_v2i64:
25935 ; PWR6-NEXT: lis 5, 21845
25936 ; PWR6-NEXT: lis 6, 13107
25937 ; PWR6-NEXT: ori 5, 5, 21845
25938 ; PWR6-NEXT: rotldi 8, 4, 63
25939 ; PWR6-NEXT: rotldi 9, 3, 63
25940 ; PWR6-NEXT: rldimi 5, 5, 32, 0
25941 ; PWR6-NEXT: and 8, 8, 5
25942 ; PWR6-NEXT: and 5, 9, 5
25943 ; PWR6-NEXT: ori 6, 6, 13107
25944 ; PWR6-NEXT: sub 3, 3, 5
25945 ; PWR6-NEXT: rldimi 6, 6, 32, 0
25946 ; PWR6-NEXT: sub 4, 4, 8
25947 ; PWR6-NEXT: and 8, 3, 6
25948 ; PWR6-NEXT: rotldi 3, 3, 62
25949 ; PWR6-NEXT: and 3, 3, 6
25950 ; PWR6-NEXT: lis 7, 3855
25951 ; PWR6-NEXT: and 5, 4, 6
25952 ; PWR6-NEXT: rotldi 4, 4, 62
25953 ; PWR6-NEXT: add 3, 8, 3
25954 ; PWR6-NEXT: lis 9, 257
25955 ; PWR6-NEXT: ori 7, 7, 3855
25956 ; PWR6-NEXT: and 4, 4, 6
25957 ; PWR6-NEXT: rldicl 6, 3, 60, 4
25958 ; PWR6-NEXT: ori 9, 9, 257
25959 ; PWR6-NEXT: rldimi 7, 7, 32, 0
25960 ; PWR6-NEXT: add 4, 5, 4
25961 ; PWR6-NEXT: add 3, 3, 6
25962 ; PWR6-NEXT: rldimi 9, 9, 32, 0
25963 ; PWR6-NEXT: rldicl 5, 4, 60, 4
25964 ; PWR6-NEXT: and 3, 3, 7
25965 ; PWR6-NEXT: add 4, 4, 5
25966 ; PWR6-NEXT: mulld 3, 3, 9
25967 ; PWR6-NEXT: and 4, 4, 7
25968 ; PWR6-NEXT: rldicl 3, 3, 8, 56
25969 ; PWR6-NEXT: li 5, 54
25970 ; PWR6-NEXT: mulld 4, 4, 9
25971 ; PWR6-NEXT: subc 6, 3, 5
25972 ; PWR6-NEXT: rldicl 4, 4, 8, 56
25973 ; PWR6-NEXT: subfe 3, 3, 3
25974 ; PWR6-NEXT: subc 5, 4, 5
25975 ; PWR6-NEXT: subfe 4, 4, 4
25978 ; PWR7-LABEL: ult_54_v2i64:
25980 ; PWR7-NEXT: addi 3, 1, -32
25981 ; PWR7-NEXT: li 5, -1
25982 ; PWR7-NEXT: stxvd2x 34, 0, 3
25983 ; PWR7-NEXT: ld 4, -24(1)
25984 ; PWR7-NEXT: ld 3, -32(1)
25985 ; PWR7-NEXT: popcntd 4, 4
25986 ; PWR7-NEXT: popcntd 3, 3
25987 ; PWR7-NEXT: cmpldi 4, 54
25988 ; PWR7-NEXT: li 4, 0
25989 ; PWR7-NEXT: isellt 6, 5, 4
25990 ; PWR7-NEXT: cmpldi 3, 54
25991 ; PWR7-NEXT: isellt 3, 5, 4
25992 ; PWR7-NEXT: std 6, -8(1)
25993 ; PWR7-NEXT: std 3, -16(1)
25994 ; PWR7-NEXT: addi 3, 1, -16
25995 ; PWR7-NEXT: lxvd2x 34, 0, 3
25998 ; PWR8-LABEL: ult_54_v2i64:
26000 ; PWR8-NEXT: addis 3, 2, .LCPI205_0@toc@ha
26001 ; PWR8-NEXT: vpopcntd 2, 2
26002 ; PWR8-NEXT: addi 3, 3, .LCPI205_0@toc@l
26003 ; PWR8-NEXT: lxvd2x 35, 0, 3
26004 ; PWR8-NEXT: vcmpgtud 2, 3, 2
26007 ; PWR9-LABEL: ult_54_v2i64:
26009 ; PWR9-NEXT: addis 3, 2, .LCPI205_0@toc@ha
26010 ; PWR9-NEXT: vpopcntd 2, 2
26011 ; PWR9-NEXT: addi 3, 3, .LCPI205_0@toc@l
26012 ; PWR9-NEXT: lxv 35, 0(3)
26013 ; PWR9-NEXT: vcmpgtud 2, 3, 2
26015 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
26016 %3 = icmp ult <2 x i64> %2, <i64 54, i64 54>
26017 %4 = sext <2 x i1> %3 to <2 x i64>
26021 define <2 x i64> @ugt_54_v2i64(<2 x i64> %0) {
26022 ; PWR5-LABEL: ugt_54_v2i64:
26024 ; PWR5-NEXT: lis 5, 21845
26025 ; PWR5-NEXT: lis 6, 13107
26026 ; PWR5-NEXT: ori 5, 5, 21845
26027 ; PWR5-NEXT: rotldi 8, 4, 63
26028 ; PWR5-NEXT: rotldi 9, 3, 63
26029 ; PWR5-NEXT: rldimi 5, 5, 32, 0
26030 ; PWR5-NEXT: and 8, 8, 5
26031 ; PWR5-NEXT: and 5, 9, 5
26032 ; PWR5-NEXT: ori 6, 6, 13107
26033 ; PWR5-NEXT: sub 3, 3, 5
26034 ; PWR5-NEXT: rldimi 6, 6, 32, 0
26035 ; PWR5-NEXT: sub 4, 4, 8
26036 ; PWR5-NEXT: and 8, 3, 6
26037 ; PWR5-NEXT: rotldi 3, 3, 62
26038 ; PWR5-NEXT: and 3, 3, 6
26039 ; PWR5-NEXT: lis 7, 3855
26040 ; PWR5-NEXT: and 5, 4, 6
26041 ; PWR5-NEXT: rotldi 4, 4, 62
26042 ; PWR5-NEXT: add 3, 8, 3
26043 ; PWR5-NEXT: lis 9, 257
26044 ; PWR5-NEXT: ori 7, 7, 3855
26045 ; PWR5-NEXT: and 4, 4, 6
26046 ; PWR5-NEXT: rldicl 6, 3, 60, 4
26047 ; PWR5-NEXT: ori 9, 9, 257
26048 ; PWR5-NEXT: rldimi 7, 7, 32, 0
26049 ; PWR5-NEXT: add 4, 5, 4
26050 ; PWR5-NEXT: add 3, 3, 6
26051 ; PWR5-NEXT: rldimi 9, 9, 32, 0
26052 ; PWR5-NEXT: rldicl 5, 4, 60, 4
26053 ; PWR5-NEXT: and 3, 3, 7
26054 ; PWR5-NEXT: add 4, 4, 5
26055 ; PWR5-NEXT: mulld 3, 3, 9
26056 ; PWR5-NEXT: and 4, 4, 7
26057 ; PWR5-NEXT: rldicl 3, 3, 8, 56
26058 ; PWR5-NEXT: mulld 4, 4, 9
26059 ; PWR5-NEXT: li 5, 54
26060 ; PWR5-NEXT: subfic 3, 3, 54
26061 ; PWR5-NEXT: rldicl 4, 4, 8, 56
26062 ; PWR5-NEXT: subfe 3, 5, 5
26063 ; PWR5-NEXT: subfic 4, 4, 54
26064 ; PWR5-NEXT: subfe 4, 5, 5
26067 ; PWR6-LABEL: ugt_54_v2i64:
26069 ; PWR6-NEXT: lis 5, 21845
26070 ; PWR6-NEXT: lis 6, 13107
26071 ; PWR6-NEXT: ori 5, 5, 21845
26072 ; PWR6-NEXT: rotldi 8, 4, 63
26073 ; PWR6-NEXT: rotldi 9, 3, 63
26074 ; PWR6-NEXT: rldimi 5, 5, 32, 0
26075 ; PWR6-NEXT: and 8, 8, 5
26076 ; PWR6-NEXT: and 5, 9, 5
26077 ; PWR6-NEXT: ori 6, 6, 13107
26078 ; PWR6-NEXT: sub 3, 3, 5
26079 ; PWR6-NEXT: rldimi 6, 6, 32, 0
26080 ; PWR6-NEXT: sub 4, 4, 8
26081 ; PWR6-NEXT: and 8, 3, 6
26082 ; PWR6-NEXT: rotldi 3, 3, 62
26083 ; PWR6-NEXT: and 3, 3, 6
26084 ; PWR6-NEXT: lis 7, 3855
26085 ; PWR6-NEXT: and 5, 4, 6
26086 ; PWR6-NEXT: rotldi 4, 4, 62
26087 ; PWR6-NEXT: add 3, 8, 3
26088 ; PWR6-NEXT: lis 9, 257
26089 ; PWR6-NEXT: ori 7, 7, 3855
26090 ; PWR6-NEXT: and 4, 4, 6
26091 ; PWR6-NEXT: rldicl 6, 3, 60, 4
26092 ; PWR6-NEXT: ori 9, 9, 257
26093 ; PWR6-NEXT: rldimi 7, 7, 32, 0
26094 ; PWR6-NEXT: add 4, 5, 4
26095 ; PWR6-NEXT: add 3, 3, 6
26096 ; PWR6-NEXT: rldimi 9, 9, 32, 0
26097 ; PWR6-NEXT: rldicl 5, 4, 60, 4
26098 ; PWR6-NEXT: and 3, 3, 7
26099 ; PWR6-NEXT: add 4, 4, 5
26100 ; PWR6-NEXT: mulld 3, 3, 9
26101 ; PWR6-NEXT: and 4, 4, 7
26102 ; PWR6-NEXT: rldicl 3, 3, 8, 56
26103 ; PWR6-NEXT: mulld 4, 4, 9
26104 ; PWR6-NEXT: li 5, 54
26105 ; PWR6-NEXT: subfic 3, 3, 54
26106 ; PWR6-NEXT: rldicl 4, 4, 8, 56
26107 ; PWR6-NEXT: subfe 3, 5, 5
26108 ; PWR6-NEXT: subfic 4, 4, 54
26109 ; PWR6-NEXT: subfe 4, 5, 5
26112 ; PWR7-LABEL: ugt_54_v2i64:
26114 ; PWR7-NEXT: addi 3, 1, -32
26115 ; PWR7-NEXT: li 5, -1
26116 ; PWR7-NEXT: stxvd2x 34, 0, 3
26117 ; PWR7-NEXT: ld 4, -24(1)
26118 ; PWR7-NEXT: ld 3, -32(1)
26119 ; PWR7-NEXT: popcntd 4, 4
26120 ; PWR7-NEXT: popcntd 3, 3
26121 ; PWR7-NEXT: cmpldi 4, 54
26122 ; PWR7-NEXT: li 4, 0
26123 ; PWR7-NEXT: iselgt 6, 5, 4
26124 ; PWR7-NEXT: cmpldi 3, 54
26125 ; PWR7-NEXT: iselgt 3, 5, 4
26126 ; PWR7-NEXT: std 6, -8(1)
26127 ; PWR7-NEXT: std 3, -16(1)
26128 ; PWR7-NEXT: addi 3, 1, -16
26129 ; PWR7-NEXT: lxvd2x 34, 0, 3
26132 ; PWR8-LABEL: ugt_54_v2i64:
26134 ; PWR8-NEXT: addis 3, 2, .LCPI206_0@toc@ha
26135 ; PWR8-NEXT: vpopcntd 2, 2
26136 ; PWR8-NEXT: addi 3, 3, .LCPI206_0@toc@l
26137 ; PWR8-NEXT: lxvd2x 35, 0, 3
26138 ; PWR8-NEXT: vcmpgtud 2, 2, 3
26141 ; PWR9-LABEL: ugt_54_v2i64:
26143 ; PWR9-NEXT: addis 3, 2, .LCPI206_0@toc@ha
26144 ; PWR9-NEXT: vpopcntd 2, 2
26145 ; PWR9-NEXT: addi 3, 3, .LCPI206_0@toc@l
26146 ; PWR9-NEXT: lxv 35, 0(3)
26147 ; PWR9-NEXT: vcmpgtud 2, 2, 3
26149 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
26150 %3 = icmp ugt <2 x i64> %2, <i64 54, i64 54>
26151 %4 = sext <2 x i1> %3 to <2 x i64>
26155 define <2 x i64> @ult_55_v2i64(<2 x i64> %0) {
26156 ; PWR5-LABEL: ult_55_v2i64:
26158 ; PWR5-NEXT: lis 5, 21845
26159 ; PWR5-NEXT: lis 6, 13107
26160 ; PWR5-NEXT: ori 5, 5, 21845
26161 ; PWR5-NEXT: rotldi 8, 4, 63
26162 ; PWR5-NEXT: rotldi 9, 3, 63
26163 ; PWR5-NEXT: rldimi 5, 5, 32, 0
26164 ; PWR5-NEXT: and 8, 8, 5
26165 ; PWR5-NEXT: and 5, 9, 5
26166 ; PWR5-NEXT: ori 6, 6, 13107
26167 ; PWR5-NEXT: sub 3, 3, 5
26168 ; PWR5-NEXT: rldimi 6, 6, 32, 0
26169 ; PWR5-NEXT: sub 4, 4, 8
26170 ; PWR5-NEXT: and 8, 3, 6
26171 ; PWR5-NEXT: rotldi 3, 3, 62
26172 ; PWR5-NEXT: and 3, 3, 6
26173 ; PWR5-NEXT: lis 7, 3855
26174 ; PWR5-NEXT: and 5, 4, 6
26175 ; PWR5-NEXT: rotldi 4, 4, 62
26176 ; PWR5-NEXT: add 3, 8, 3
26177 ; PWR5-NEXT: lis 9, 257
26178 ; PWR5-NEXT: ori 7, 7, 3855
26179 ; PWR5-NEXT: and 4, 4, 6
26180 ; PWR5-NEXT: rldicl 6, 3, 60, 4
26181 ; PWR5-NEXT: ori 9, 9, 257
26182 ; PWR5-NEXT: rldimi 7, 7, 32, 0
26183 ; PWR5-NEXT: add 4, 5, 4
26184 ; PWR5-NEXT: add 3, 3, 6
26185 ; PWR5-NEXT: rldimi 9, 9, 32, 0
26186 ; PWR5-NEXT: rldicl 5, 4, 60, 4
26187 ; PWR5-NEXT: and 3, 3, 7
26188 ; PWR5-NEXT: add 4, 4, 5
26189 ; PWR5-NEXT: mulld 3, 3, 9
26190 ; PWR5-NEXT: and 4, 4, 7
26191 ; PWR5-NEXT: rldicl 3, 3, 8, 56
26192 ; PWR5-NEXT: li 5, 55
26193 ; PWR5-NEXT: mulld 4, 4, 9
26194 ; PWR5-NEXT: subc 6, 3, 5
26195 ; PWR5-NEXT: rldicl 4, 4, 8, 56
26196 ; PWR5-NEXT: subfe 3, 3, 3
26197 ; PWR5-NEXT: subc 5, 4, 5
26198 ; PWR5-NEXT: subfe 4, 4, 4
26201 ; PWR6-LABEL: ult_55_v2i64:
26203 ; PWR6-NEXT: lis 5, 21845
26204 ; PWR6-NEXT: lis 6, 13107
26205 ; PWR6-NEXT: ori 5, 5, 21845
26206 ; PWR6-NEXT: rotldi 8, 4, 63
26207 ; PWR6-NEXT: rotldi 9, 3, 63
26208 ; PWR6-NEXT: rldimi 5, 5, 32, 0
26209 ; PWR6-NEXT: and 8, 8, 5
26210 ; PWR6-NEXT: and 5, 9, 5
26211 ; PWR6-NEXT: ori 6, 6, 13107
26212 ; PWR6-NEXT: sub 3, 3, 5
26213 ; PWR6-NEXT: rldimi 6, 6, 32, 0
26214 ; PWR6-NEXT: sub 4, 4, 8
26215 ; PWR6-NEXT: and 8, 3, 6
26216 ; PWR6-NEXT: rotldi 3, 3, 62
26217 ; PWR6-NEXT: and 3, 3, 6
26218 ; PWR6-NEXT: lis 7, 3855
26219 ; PWR6-NEXT: and 5, 4, 6
26220 ; PWR6-NEXT: rotldi 4, 4, 62
26221 ; PWR6-NEXT: add 3, 8, 3
26222 ; PWR6-NEXT: lis 9, 257
26223 ; PWR6-NEXT: ori 7, 7, 3855
26224 ; PWR6-NEXT: and 4, 4, 6
26225 ; PWR6-NEXT: rldicl 6, 3, 60, 4
26226 ; PWR6-NEXT: ori 9, 9, 257
26227 ; PWR6-NEXT: rldimi 7, 7, 32, 0
26228 ; PWR6-NEXT: add 4, 5, 4
26229 ; PWR6-NEXT: add 3, 3, 6
26230 ; PWR6-NEXT: rldimi 9, 9, 32, 0
26231 ; PWR6-NEXT: rldicl 5, 4, 60, 4
26232 ; PWR6-NEXT: and 3, 3, 7
26233 ; PWR6-NEXT: add 4, 4, 5
26234 ; PWR6-NEXT: mulld 3, 3, 9
26235 ; PWR6-NEXT: and 4, 4, 7
26236 ; PWR6-NEXT: rldicl 3, 3, 8, 56
26237 ; PWR6-NEXT: li 5, 55
26238 ; PWR6-NEXT: mulld 4, 4, 9
26239 ; PWR6-NEXT: subc 6, 3, 5
26240 ; PWR6-NEXT: rldicl 4, 4, 8, 56
26241 ; PWR6-NEXT: subfe 3, 3, 3
26242 ; PWR6-NEXT: subc 5, 4, 5
26243 ; PWR6-NEXT: subfe 4, 4, 4
26246 ; PWR7-LABEL: ult_55_v2i64:
26248 ; PWR7-NEXT: addi 3, 1, -32
26249 ; PWR7-NEXT: li 5, -1
26250 ; PWR7-NEXT: stxvd2x 34, 0, 3
26251 ; PWR7-NEXT: ld 4, -24(1)
26252 ; PWR7-NEXT: ld 3, -32(1)
26253 ; PWR7-NEXT: popcntd 4, 4
26254 ; PWR7-NEXT: popcntd 3, 3
26255 ; PWR7-NEXT: cmpldi 4, 55
26256 ; PWR7-NEXT: li 4, 0
26257 ; PWR7-NEXT: isellt 6, 5, 4
26258 ; PWR7-NEXT: cmpldi 3, 55
26259 ; PWR7-NEXT: isellt 3, 5, 4
26260 ; PWR7-NEXT: std 6, -8(1)
26261 ; PWR7-NEXT: std 3, -16(1)
26262 ; PWR7-NEXT: addi 3, 1, -16
26263 ; PWR7-NEXT: lxvd2x 34, 0, 3
26266 ; PWR8-LABEL: ult_55_v2i64:
26268 ; PWR8-NEXT: addis 3, 2, .LCPI207_0@toc@ha
26269 ; PWR8-NEXT: vpopcntd 2, 2
26270 ; PWR8-NEXT: addi 3, 3, .LCPI207_0@toc@l
26271 ; PWR8-NEXT: lxvd2x 35, 0, 3
26272 ; PWR8-NEXT: vcmpgtud 2, 3, 2
26275 ; PWR9-LABEL: ult_55_v2i64:
26277 ; PWR9-NEXT: addis 3, 2, .LCPI207_0@toc@ha
26278 ; PWR9-NEXT: vpopcntd 2, 2
26279 ; PWR9-NEXT: addi 3, 3, .LCPI207_0@toc@l
26280 ; PWR9-NEXT: lxv 35, 0(3)
26281 ; PWR9-NEXT: vcmpgtud 2, 3, 2
26283 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
26284 %3 = icmp ult <2 x i64> %2, <i64 55, i64 55>
26285 %4 = sext <2 x i1> %3 to <2 x i64>
26289 define <2 x i64> @ugt_55_v2i64(<2 x i64> %0) {
26290 ; PWR5-LABEL: ugt_55_v2i64:
26292 ; PWR5-NEXT: lis 5, 21845
26293 ; PWR5-NEXT: lis 6, 13107
26294 ; PWR5-NEXT: ori 5, 5, 21845
26295 ; PWR5-NEXT: rotldi 8, 4, 63
26296 ; PWR5-NEXT: rotldi 9, 3, 63
26297 ; PWR5-NEXT: rldimi 5, 5, 32, 0
26298 ; PWR5-NEXT: and 8, 8, 5
26299 ; PWR5-NEXT: and 5, 9, 5
26300 ; PWR5-NEXT: ori 6, 6, 13107
26301 ; PWR5-NEXT: sub 3, 3, 5
26302 ; PWR5-NEXT: rldimi 6, 6, 32, 0
26303 ; PWR5-NEXT: sub 4, 4, 8
26304 ; PWR5-NEXT: and 8, 3, 6
26305 ; PWR5-NEXT: rotldi 3, 3, 62
26306 ; PWR5-NEXT: and 3, 3, 6
26307 ; PWR5-NEXT: lis 7, 3855
26308 ; PWR5-NEXT: and 5, 4, 6
26309 ; PWR5-NEXT: rotldi 4, 4, 62
26310 ; PWR5-NEXT: add 3, 8, 3
26311 ; PWR5-NEXT: lis 9, 257
26312 ; PWR5-NEXT: ori 7, 7, 3855
26313 ; PWR5-NEXT: and 4, 4, 6
26314 ; PWR5-NEXT: rldicl 6, 3, 60, 4
26315 ; PWR5-NEXT: ori 9, 9, 257
26316 ; PWR5-NEXT: rldimi 7, 7, 32, 0
26317 ; PWR5-NEXT: add 4, 5, 4
26318 ; PWR5-NEXT: add 3, 3, 6
26319 ; PWR5-NEXT: rldimi 9, 9, 32, 0
26320 ; PWR5-NEXT: rldicl 5, 4, 60, 4
26321 ; PWR5-NEXT: and 3, 3, 7
26322 ; PWR5-NEXT: add 4, 4, 5
26323 ; PWR5-NEXT: mulld 3, 3, 9
26324 ; PWR5-NEXT: and 4, 4, 7
26325 ; PWR5-NEXT: rldicl 3, 3, 8, 56
26326 ; PWR5-NEXT: mulld 4, 4, 9
26327 ; PWR5-NEXT: li 5, 55
26328 ; PWR5-NEXT: subfic 3, 3, 55
26329 ; PWR5-NEXT: rldicl 4, 4, 8, 56
26330 ; PWR5-NEXT: subfe 3, 5, 5
26331 ; PWR5-NEXT: subfic 4, 4, 55
26332 ; PWR5-NEXT: subfe 4, 5, 5
26335 ; PWR6-LABEL: ugt_55_v2i64:
26337 ; PWR6-NEXT: lis 5, 21845
26338 ; PWR6-NEXT: lis 6, 13107
26339 ; PWR6-NEXT: ori 5, 5, 21845
26340 ; PWR6-NEXT: rotldi 8, 4, 63
26341 ; PWR6-NEXT: rotldi 9, 3, 63
26342 ; PWR6-NEXT: rldimi 5, 5, 32, 0
26343 ; PWR6-NEXT: and 8, 8, 5
26344 ; PWR6-NEXT: and 5, 9, 5
26345 ; PWR6-NEXT: ori 6, 6, 13107
26346 ; PWR6-NEXT: sub 3, 3, 5
26347 ; PWR6-NEXT: rldimi 6, 6, 32, 0
26348 ; PWR6-NEXT: sub 4, 4, 8
26349 ; PWR6-NEXT: and 8, 3, 6
26350 ; PWR6-NEXT: rotldi 3, 3, 62
26351 ; PWR6-NEXT: and 3, 3, 6
26352 ; PWR6-NEXT: lis 7, 3855
26353 ; PWR6-NEXT: and 5, 4, 6
26354 ; PWR6-NEXT: rotldi 4, 4, 62
26355 ; PWR6-NEXT: add 3, 8, 3
26356 ; PWR6-NEXT: lis 9, 257
26357 ; PWR6-NEXT: ori 7, 7, 3855
26358 ; PWR6-NEXT: and 4, 4, 6
26359 ; PWR6-NEXT: rldicl 6, 3, 60, 4
26360 ; PWR6-NEXT: ori 9, 9, 257
26361 ; PWR6-NEXT: rldimi 7, 7, 32, 0
26362 ; PWR6-NEXT: add 4, 5, 4
26363 ; PWR6-NEXT: add 3, 3, 6
26364 ; PWR6-NEXT: rldimi 9, 9, 32, 0
26365 ; PWR6-NEXT: rldicl 5, 4, 60, 4
26366 ; PWR6-NEXT: and 3, 3, 7
26367 ; PWR6-NEXT: add 4, 4, 5
26368 ; PWR6-NEXT: mulld 3, 3, 9
26369 ; PWR6-NEXT: and 4, 4, 7
26370 ; PWR6-NEXT: rldicl 3, 3, 8, 56
26371 ; PWR6-NEXT: mulld 4, 4, 9
26372 ; PWR6-NEXT: li 5, 55
26373 ; PWR6-NEXT: subfic 3, 3, 55
26374 ; PWR6-NEXT: rldicl 4, 4, 8, 56
26375 ; PWR6-NEXT: subfe 3, 5, 5
26376 ; PWR6-NEXT: subfic 4, 4, 55
26377 ; PWR6-NEXT: subfe 4, 5, 5
26380 ; PWR7-LABEL: ugt_55_v2i64:
26382 ; PWR7-NEXT: addi 3, 1, -32
26383 ; PWR7-NEXT: li 5, -1
26384 ; PWR7-NEXT: stxvd2x 34, 0, 3
26385 ; PWR7-NEXT: ld 4, -24(1)
26386 ; PWR7-NEXT: ld 3, -32(1)
26387 ; PWR7-NEXT: popcntd 4, 4
26388 ; PWR7-NEXT: popcntd 3, 3
26389 ; PWR7-NEXT: cmpldi 4, 55
26390 ; PWR7-NEXT: li 4, 0
26391 ; PWR7-NEXT: iselgt 6, 5, 4
26392 ; PWR7-NEXT: cmpldi 3, 55
26393 ; PWR7-NEXT: iselgt 3, 5, 4
26394 ; PWR7-NEXT: std 6, -8(1)
26395 ; PWR7-NEXT: std 3, -16(1)
26396 ; PWR7-NEXT: addi 3, 1, -16
26397 ; PWR7-NEXT: lxvd2x 34, 0, 3
26400 ; PWR8-LABEL: ugt_55_v2i64:
26402 ; PWR8-NEXT: addis 3, 2, .LCPI208_0@toc@ha
26403 ; PWR8-NEXT: vpopcntd 2, 2
26404 ; PWR8-NEXT: addi 3, 3, .LCPI208_0@toc@l
26405 ; PWR8-NEXT: lxvd2x 35, 0, 3
26406 ; PWR8-NEXT: vcmpgtud 2, 2, 3
26409 ; PWR9-LABEL: ugt_55_v2i64:
26411 ; PWR9-NEXT: addis 3, 2, .LCPI208_0@toc@ha
26412 ; PWR9-NEXT: vpopcntd 2, 2
26413 ; PWR9-NEXT: addi 3, 3, .LCPI208_0@toc@l
26414 ; PWR9-NEXT: lxv 35, 0(3)
26415 ; PWR9-NEXT: vcmpgtud 2, 2, 3
26417 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
26418 %3 = icmp ugt <2 x i64> %2, <i64 55, i64 55>
26419 %4 = sext <2 x i1> %3 to <2 x i64>
26423 define <2 x i64> @ult_56_v2i64(<2 x i64> %0) {
26424 ; PWR5-LABEL: ult_56_v2i64:
26426 ; PWR5-NEXT: lis 5, 21845
26427 ; PWR5-NEXT: lis 6, 13107
26428 ; PWR5-NEXT: ori 5, 5, 21845
26429 ; PWR5-NEXT: rotldi 8, 4, 63
26430 ; PWR5-NEXT: rotldi 9, 3, 63
26431 ; PWR5-NEXT: rldimi 5, 5, 32, 0
26432 ; PWR5-NEXT: and 8, 8, 5
26433 ; PWR5-NEXT: and 5, 9, 5
26434 ; PWR5-NEXT: ori 6, 6, 13107
26435 ; PWR5-NEXT: sub 3, 3, 5
26436 ; PWR5-NEXT: rldimi 6, 6, 32, 0
26437 ; PWR5-NEXT: sub 4, 4, 8
26438 ; PWR5-NEXT: and 8, 3, 6
26439 ; PWR5-NEXT: rotldi 3, 3, 62
26440 ; PWR5-NEXT: and 3, 3, 6
26441 ; PWR5-NEXT: lis 7, 3855
26442 ; PWR5-NEXT: and 5, 4, 6
26443 ; PWR5-NEXT: rotldi 4, 4, 62
26444 ; PWR5-NEXT: add 3, 8, 3
26445 ; PWR5-NEXT: lis 9, 257
26446 ; PWR5-NEXT: ori 7, 7, 3855
26447 ; PWR5-NEXT: and 4, 4, 6
26448 ; PWR5-NEXT: rldicl 6, 3, 60, 4
26449 ; PWR5-NEXT: ori 9, 9, 257
26450 ; PWR5-NEXT: rldimi 7, 7, 32, 0
26451 ; PWR5-NEXT: add 4, 5, 4
26452 ; PWR5-NEXT: add 3, 3, 6
26453 ; PWR5-NEXT: rldimi 9, 9, 32, 0
26454 ; PWR5-NEXT: rldicl 5, 4, 60, 4
26455 ; PWR5-NEXT: and 3, 3, 7
26456 ; PWR5-NEXT: add 4, 4, 5
26457 ; PWR5-NEXT: mulld 3, 3, 9
26458 ; PWR5-NEXT: and 4, 4, 7
26459 ; PWR5-NEXT: rldicl 3, 3, 8, 56
26460 ; PWR5-NEXT: li 5, 56
26461 ; PWR5-NEXT: mulld 4, 4, 9
26462 ; PWR5-NEXT: subc 6, 3, 5
26463 ; PWR5-NEXT: rldicl 4, 4, 8, 56
26464 ; PWR5-NEXT: subfe 3, 3, 3
26465 ; PWR5-NEXT: subc 5, 4, 5
26466 ; PWR5-NEXT: subfe 4, 4, 4
26469 ; PWR6-LABEL: ult_56_v2i64:
26471 ; PWR6-NEXT: lis 5, 21845
26472 ; PWR6-NEXT: lis 6, 13107
26473 ; PWR6-NEXT: ori 5, 5, 21845
26474 ; PWR6-NEXT: rotldi 8, 4, 63
26475 ; PWR6-NEXT: rotldi 9, 3, 63
26476 ; PWR6-NEXT: rldimi 5, 5, 32, 0
26477 ; PWR6-NEXT: and 8, 8, 5
26478 ; PWR6-NEXT: and 5, 9, 5
26479 ; PWR6-NEXT: ori 6, 6, 13107
26480 ; PWR6-NEXT: sub 3, 3, 5
26481 ; PWR6-NEXT: rldimi 6, 6, 32, 0
26482 ; PWR6-NEXT: sub 4, 4, 8
26483 ; PWR6-NEXT: and 8, 3, 6
26484 ; PWR6-NEXT: rotldi 3, 3, 62
26485 ; PWR6-NEXT: and 3, 3, 6
26486 ; PWR6-NEXT: lis 7, 3855
26487 ; PWR6-NEXT: and 5, 4, 6
26488 ; PWR6-NEXT: rotldi 4, 4, 62
26489 ; PWR6-NEXT: add 3, 8, 3
26490 ; PWR6-NEXT: lis 9, 257
26491 ; PWR6-NEXT: ori 7, 7, 3855
26492 ; PWR6-NEXT: and 4, 4, 6
26493 ; PWR6-NEXT: rldicl 6, 3, 60, 4
26494 ; PWR6-NEXT: ori 9, 9, 257
26495 ; PWR6-NEXT: rldimi 7, 7, 32, 0
26496 ; PWR6-NEXT: add 4, 5, 4
26497 ; PWR6-NEXT: add 3, 3, 6
26498 ; PWR6-NEXT: rldimi 9, 9, 32, 0
26499 ; PWR6-NEXT: rldicl 5, 4, 60, 4
26500 ; PWR6-NEXT: and 3, 3, 7
26501 ; PWR6-NEXT: add 4, 4, 5
26502 ; PWR6-NEXT: mulld 3, 3, 9
26503 ; PWR6-NEXT: and 4, 4, 7
26504 ; PWR6-NEXT: rldicl 3, 3, 8, 56
26505 ; PWR6-NEXT: li 5, 56
26506 ; PWR6-NEXT: mulld 4, 4, 9
26507 ; PWR6-NEXT: subc 6, 3, 5
26508 ; PWR6-NEXT: rldicl 4, 4, 8, 56
26509 ; PWR6-NEXT: subfe 3, 3, 3
26510 ; PWR6-NEXT: subc 5, 4, 5
26511 ; PWR6-NEXT: subfe 4, 4, 4
26514 ; PWR7-LABEL: ult_56_v2i64:
26516 ; PWR7-NEXT: addi 3, 1, -32
26517 ; PWR7-NEXT: li 5, -1
26518 ; PWR7-NEXT: stxvd2x 34, 0, 3
26519 ; PWR7-NEXT: ld 4, -24(1)
26520 ; PWR7-NEXT: ld 3, -32(1)
26521 ; PWR7-NEXT: popcntd 4, 4
26522 ; PWR7-NEXT: popcntd 3, 3
26523 ; PWR7-NEXT: cmpldi 4, 56
26524 ; PWR7-NEXT: li 4, 0
26525 ; PWR7-NEXT: isellt 6, 5, 4
26526 ; PWR7-NEXT: cmpldi 3, 56
26527 ; PWR7-NEXT: isellt 3, 5, 4
26528 ; PWR7-NEXT: std 6, -8(1)
26529 ; PWR7-NEXT: std 3, -16(1)
26530 ; PWR7-NEXT: addi 3, 1, -16
26531 ; PWR7-NEXT: lxvd2x 34, 0, 3
26534 ; PWR8-LABEL: ult_56_v2i64:
26536 ; PWR8-NEXT: addis 3, 2, .LCPI209_0@toc@ha
26537 ; PWR8-NEXT: vpopcntd 2, 2
26538 ; PWR8-NEXT: addi 3, 3, .LCPI209_0@toc@l
26539 ; PWR8-NEXT: lxvd2x 35, 0, 3
26540 ; PWR8-NEXT: vcmpgtud 2, 3, 2
26543 ; PWR9-LABEL: ult_56_v2i64:
26545 ; PWR9-NEXT: addis 3, 2, .LCPI209_0@toc@ha
26546 ; PWR9-NEXT: vpopcntd 2, 2
26547 ; PWR9-NEXT: addi 3, 3, .LCPI209_0@toc@l
26548 ; PWR9-NEXT: lxv 35, 0(3)
26549 ; PWR9-NEXT: vcmpgtud 2, 3, 2
26551 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
26552 %3 = icmp ult <2 x i64> %2, <i64 56, i64 56>
26553 %4 = sext <2 x i1> %3 to <2 x i64>
26557 define <2 x i64> @ugt_56_v2i64(<2 x i64> %0) {
26558 ; PWR5-LABEL: ugt_56_v2i64:
26560 ; PWR5-NEXT: lis 5, 21845
26561 ; PWR5-NEXT: lis 6, 13107
26562 ; PWR5-NEXT: ori 5, 5, 21845
26563 ; PWR5-NEXT: rotldi 8, 4, 63
26564 ; PWR5-NEXT: rotldi 9, 3, 63
26565 ; PWR5-NEXT: rldimi 5, 5, 32, 0
26566 ; PWR5-NEXT: and 8, 8, 5
26567 ; PWR5-NEXT: and 5, 9, 5
26568 ; PWR5-NEXT: ori 6, 6, 13107
26569 ; PWR5-NEXT: sub 3, 3, 5
26570 ; PWR5-NEXT: rldimi 6, 6, 32, 0
26571 ; PWR5-NEXT: sub 4, 4, 8
26572 ; PWR5-NEXT: and 8, 3, 6
26573 ; PWR5-NEXT: rotldi 3, 3, 62
26574 ; PWR5-NEXT: and 3, 3, 6
26575 ; PWR5-NEXT: lis 7, 3855
26576 ; PWR5-NEXT: and 5, 4, 6
26577 ; PWR5-NEXT: rotldi 4, 4, 62
26578 ; PWR5-NEXT: add 3, 8, 3
26579 ; PWR5-NEXT: lis 9, 257
26580 ; PWR5-NEXT: ori 7, 7, 3855
26581 ; PWR5-NEXT: and 4, 4, 6
26582 ; PWR5-NEXT: rldicl 6, 3, 60, 4
26583 ; PWR5-NEXT: ori 9, 9, 257
26584 ; PWR5-NEXT: rldimi 7, 7, 32, 0
26585 ; PWR5-NEXT: add 4, 5, 4
26586 ; PWR5-NEXT: add 3, 3, 6
26587 ; PWR5-NEXT: rldimi 9, 9, 32, 0
26588 ; PWR5-NEXT: rldicl 5, 4, 60, 4
26589 ; PWR5-NEXT: and 3, 3, 7
26590 ; PWR5-NEXT: add 4, 4, 5
26591 ; PWR5-NEXT: mulld 3, 3, 9
26592 ; PWR5-NEXT: and 4, 4, 7
26593 ; PWR5-NEXT: rldicl 3, 3, 8, 56
26594 ; PWR5-NEXT: mulld 4, 4, 9
26595 ; PWR5-NEXT: li 5, 56
26596 ; PWR5-NEXT: subfic 3, 3, 56
26597 ; PWR5-NEXT: rldicl 4, 4, 8, 56
26598 ; PWR5-NEXT: subfe 3, 5, 5
26599 ; PWR5-NEXT: subfic 4, 4, 56
26600 ; PWR5-NEXT: subfe 4, 5, 5
26603 ; PWR6-LABEL: ugt_56_v2i64:
26605 ; PWR6-NEXT: lis 5, 21845
26606 ; PWR6-NEXT: lis 6, 13107
26607 ; PWR6-NEXT: ori 5, 5, 21845
26608 ; PWR6-NEXT: rotldi 8, 4, 63
26609 ; PWR6-NEXT: rotldi 9, 3, 63
26610 ; PWR6-NEXT: rldimi 5, 5, 32, 0
26611 ; PWR6-NEXT: and 8, 8, 5
26612 ; PWR6-NEXT: and 5, 9, 5
26613 ; PWR6-NEXT: ori 6, 6, 13107
26614 ; PWR6-NEXT: sub 3, 3, 5
26615 ; PWR6-NEXT: rldimi 6, 6, 32, 0
26616 ; PWR6-NEXT: sub 4, 4, 8
26617 ; PWR6-NEXT: and 8, 3, 6
26618 ; PWR6-NEXT: rotldi 3, 3, 62
26619 ; PWR6-NEXT: and 3, 3, 6
26620 ; PWR6-NEXT: lis 7, 3855
26621 ; PWR6-NEXT: and 5, 4, 6
26622 ; PWR6-NEXT: rotldi 4, 4, 62
26623 ; PWR6-NEXT: add 3, 8, 3
26624 ; PWR6-NEXT: lis 9, 257
26625 ; PWR6-NEXT: ori 7, 7, 3855
26626 ; PWR6-NEXT: and 4, 4, 6
26627 ; PWR6-NEXT: rldicl 6, 3, 60, 4
26628 ; PWR6-NEXT: ori 9, 9, 257
26629 ; PWR6-NEXT: rldimi 7, 7, 32, 0
26630 ; PWR6-NEXT: add 4, 5, 4
26631 ; PWR6-NEXT: add 3, 3, 6
26632 ; PWR6-NEXT: rldimi 9, 9, 32, 0
26633 ; PWR6-NEXT: rldicl 5, 4, 60, 4
26634 ; PWR6-NEXT: and 3, 3, 7
26635 ; PWR6-NEXT: add 4, 4, 5
26636 ; PWR6-NEXT: mulld 3, 3, 9
26637 ; PWR6-NEXT: and 4, 4, 7
26638 ; PWR6-NEXT: rldicl 3, 3, 8, 56
26639 ; PWR6-NEXT: mulld 4, 4, 9
26640 ; PWR6-NEXT: li 5, 56
26641 ; PWR6-NEXT: subfic 3, 3, 56
26642 ; PWR6-NEXT: rldicl 4, 4, 8, 56
26643 ; PWR6-NEXT: subfe 3, 5, 5
26644 ; PWR6-NEXT: subfic 4, 4, 56
26645 ; PWR6-NEXT: subfe 4, 5, 5
26648 ; PWR7-LABEL: ugt_56_v2i64:
26650 ; PWR7-NEXT: addi 3, 1, -32
26651 ; PWR7-NEXT: li 5, -1
26652 ; PWR7-NEXT: stxvd2x 34, 0, 3
26653 ; PWR7-NEXT: ld 4, -24(1)
26654 ; PWR7-NEXT: ld 3, -32(1)
26655 ; PWR7-NEXT: popcntd 4, 4
26656 ; PWR7-NEXT: popcntd 3, 3
26657 ; PWR7-NEXT: cmpldi 4, 56
26658 ; PWR7-NEXT: li 4, 0
26659 ; PWR7-NEXT: iselgt 6, 5, 4
26660 ; PWR7-NEXT: cmpldi 3, 56
26661 ; PWR7-NEXT: iselgt 3, 5, 4
26662 ; PWR7-NEXT: std 6, -8(1)
26663 ; PWR7-NEXT: std 3, -16(1)
26664 ; PWR7-NEXT: addi 3, 1, -16
26665 ; PWR7-NEXT: lxvd2x 34, 0, 3
26668 ; PWR8-LABEL: ugt_56_v2i64:
26670 ; PWR8-NEXT: addis 3, 2, .LCPI210_0@toc@ha
26671 ; PWR8-NEXT: vpopcntd 2, 2
26672 ; PWR8-NEXT: addi 3, 3, .LCPI210_0@toc@l
26673 ; PWR8-NEXT: lxvd2x 35, 0, 3
26674 ; PWR8-NEXT: vcmpgtud 2, 2, 3
26677 ; PWR9-LABEL: ugt_56_v2i64:
26679 ; PWR9-NEXT: addis 3, 2, .LCPI210_0@toc@ha
26680 ; PWR9-NEXT: vpopcntd 2, 2
26681 ; PWR9-NEXT: addi 3, 3, .LCPI210_0@toc@l
26682 ; PWR9-NEXT: lxv 35, 0(3)
26683 ; PWR9-NEXT: vcmpgtud 2, 2, 3
26685 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
26686 %3 = icmp ugt <2 x i64> %2, <i64 56, i64 56>
26687 %4 = sext <2 x i1> %3 to <2 x i64>
26691 define <2 x i64> @ult_57_v2i64(<2 x i64> %0) {
26692 ; PWR5-LABEL: ult_57_v2i64:
26694 ; PWR5-NEXT: lis 5, 21845
26695 ; PWR5-NEXT: lis 6, 13107
26696 ; PWR5-NEXT: ori 5, 5, 21845
26697 ; PWR5-NEXT: rotldi 8, 4, 63
26698 ; PWR5-NEXT: rotldi 9, 3, 63
26699 ; PWR5-NEXT: rldimi 5, 5, 32, 0
26700 ; PWR5-NEXT: and 8, 8, 5
26701 ; PWR5-NEXT: and 5, 9, 5
26702 ; PWR5-NEXT: ori 6, 6, 13107
26703 ; PWR5-NEXT: sub 3, 3, 5
26704 ; PWR5-NEXT: rldimi 6, 6, 32, 0
26705 ; PWR5-NEXT: sub 4, 4, 8
26706 ; PWR5-NEXT: and 8, 3, 6
26707 ; PWR5-NEXT: rotldi 3, 3, 62
26708 ; PWR5-NEXT: and 3, 3, 6
26709 ; PWR5-NEXT: lis 7, 3855
26710 ; PWR5-NEXT: and 5, 4, 6
26711 ; PWR5-NEXT: rotldi 4, 4, 62
26712 ; PWR5-NEXT: add 3, 8, 3
26713 ; PWR5-NEXT: lis 9, 257
26714 ; PWR5-NEXT: ori 7, 7, 3855
26715 ; PWR5-NEXT: and 4, 4, 6
26716 ; PWR5-NEXT: rldicl 6, 3, 60, 4
26717 ; PWR5-NEXT: ori 9, 9, 257
26718 ; PWR5-NEXT: rldimi 7, 7, 32, 0
26719 ; PWR5-NEXT: add 4, 5, 4
26720 ; PWR5-NEXT: add 3, 3, 6
26721 ; PWR5-NEXT: rldimi 9, 9, 32, 0
26722 ; PWR5-NEXT: rldicl 5, 4, 60, 4
26723 ; PWR5-NEXT: and 3, 3, 7
26724 ; PWR5-NEXT: add 4, 4, 5
26725 ; PWR5-NEXT: mulld 3, 3, 9
26726 ; PWR5-NEXT: and 4, 4, 7
26727 ; PWR5-NEXT: rldicl 3, 3, 8, 56
26728 ; PWR5-NEXT: li 5, 57
26729 ; PWR5-NEXT: mulld 4, 4, 9
26730 ; PWR5-NEXT: subc 6, 3, 5
26731 ; PWR5-NEXT: rldicl 4, 4, 8, 56
26732 ; PWR5-NEXT: subfe 3, 3, 3
26733 ; PWR5-NEXT: subc 5, 4, 5
26734 ; PWR5-NEXT: subfe 4, 4, 4
26737 ; PWR6-LABEL: ult_57_v2i64:
26739 ; PWR6-NEXT: lis 5, 21845
26740 ; PWR6-NEXT: lis 6, 13107
26741 ; PWR6-NEXT: ori 5, 5, 21845
26742 ; PWR6-NEXT: rotldi 8, 4, 63
26743 ; PWR6-NEXT: rotldi 9, 3, 63
26744 ; PWR6-NEXT: rldimi 5, 5, 32, 0
26745 ; PWR6-NEXT: and 8, 8, 5
26746 ; PWR6-NEXT: and 5, 9, 5
26747 ; PWR6-NEXT: ori 6, 6, 13107
26748 ; PWR6-NEXT: sub 3, 3, 5
26749 ; PWR6-NEXT: rldimi 6, 6, 32, 0
26750 ; PWR6-NEXT: sub 4, 4, 8
26751 ; PWR6-NEXT: and 8, 3, 6
26752 ; PWR6-NEXT: rotldi 3, 3, 62
26753 ; PWR6-NEXT: and 3, 3, 6
26754 ; PWR6-NEXT: lis 7, 3855
26755 ; PWR6-NEXT: and 5, 4, 6
26756 ; PWR6-NEXT: rotldi 4, 4, 62
26757 ; PWR6-NEXT: add 3, 8, 3
26758 ; PWR6-NEXT: lis 9, 257
26759 ; PWR6-NEXT: ori 7, 7, 3855
26760 ; PWR6-NEXT: and 4, 4, 6
26761 ; PWR6-NEXT: rldicl 6, 3, 60, 4
26762 ; PWR6-NEXT: ori 9, 9, 257
26763 ; PWR6-NEXT: rldimi 7, 7, 32, 0
26764 ; PWR6-NEXT: add 4, 5, 4
26765 ; PWR6-NEXT: add 3, 3, 6
26766 ; PWR6-NEXT: rldimi 9, 9, 32, 0
26767 ; PWR6-NEXT: rldicl 5, 4, 60, 4
26768 ; PWR6-NEXT: and 3, 3, 7
26769 ; PWR6-NEXT: add 4, 4, 5
26770 ; PWR6-NEXT: mulld 3, 3, 9
26771 ; PWR6-NEXT: and 4, 4, 7
26772 ; PWR6-NEXT: rldicl 3, 3, 8, 56
26773 ; PWR6-NEXT: li 5, 57
26774 ; PWR6-NEXT: mulld 4, 4, 9
26775 ; PWR6-NEXT: subc 6, 3, 5
26776 ; PWR6-NEXT: rldicl 4, 4, 8, 56
26777 ; PWR6-NEXT: subfe 3, 3, 3
26778 ; PWR6-NEXT: subc 5, 4, 5
26779 ; PWR6-NEXT: subfe 4, 4, 4
26782 ; PWR7-LABEL: ult_57_v2i64:
26784 ; PWR7-NEXT: addi 3, 1, -32
26785 ; PWR7-NEXT: li 5, -1
26786 ; PWR7-NEXT: stxvd2x 34, 0, 3
26787 ; PWR7-NEXT: ld 4, -24(1)
26788 ; PWR7-NEXT: ld 3, -32(1)
26789 ; PWR7-NEXT: popcntd 4, 4
26790 ; PWR7-NEXT: popcntd 3, 3
26791 ; PWR7-NEXT: cmpldi 4, 57
26792 ; PWR7-NEXT: li 4, 0
26793 ; PWR7-NEXT: isellt 6, 5, 4
26794 ; PWR7-NEXT: cmpldi 3, 57
26795 ; PWR7-NEXT: isellt 3, 5, 4
26796 ; PWR7-NEXT: std 6, -8(1)
26797 ; PWR7-NEXT: std 3, -16(1)
26798 ; PWR7-NEXT: addi 3, 1, -16
26799 ; PWR7-NEXT: lxvd2x 34, 0, 3
26802 ; PWR8-LABEL: ult_57_v2i64:
26804 ; PWR8-NEXT: addis 3, 2, .LCPI211_0@toc@ha
26805 ; PWR8-NEXT: vpopcntd 2, 2
26806 ; PWR8-NEXT: addi 3, 3, .LCPI211_0@toc@l
26807 ; PWR8-NEXT: lxvd2x 35, 0, 3
26808 ; PWR8-NEXT: vcmpgtud 2, 3, 2
26811 ; PWR9-LABEL: ult_57_v2i64:
26813 ; PWR9-NEXT: addis 3, 2, .LCPI211_0@toc@ha
26814 ; PWR9-NEXT: vpopcntd 2, 2
26815 ; PWR9-NEXT: addi 3, 3, .LCPI211_0@toc@l
26816 ; PWR9-NEXT: lxv 35, 0(3)
26817 ; PWR9-NEXT: vcmpgtud 2, 3, 2
26819 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
26820 %3 = icmp ult <2 x i64> %2, <i64 57, i64 57>
26821 %4 = sext <2 x i1> %3 to <2 x i64>
26825 define <2 x i64> @ugt_57_v2i64(<2 x i64> %0) {
26826 ; PWR5-LABEL: ugt_57_v2i64:
26828 ; PWR5-NEXT: lis 5, 21845
26829 ; PWR5-NEXT: lis 6, 13107
26830 ; PWR5-NEXT: ori 5, 5, 21845
26831 ; PWR5-NEXT: rotldi 8, 4, 63
26832 ; PWR5-NEXT: rotldi 9, 3, 63
26833 ; PWR5-NEXT: rldimi 5, 5, 32, 0
26834 ; PWR5-NEXT: and 8, 8, 5
26835 ; PWR5-NEXT: and 5, 9, 5
26836 ; PWR5-NEXT: ori 6, 6, 13107
26837 ; PWR5-NEXT: sub 3, 3, 5
26838 ; PWR5-NEXT: rldimi 6, 6, 32, 0
26839 ; PWR5-NEXT: sub 4, 4, 8
26840 ; PWR5-NEXT: and 8, 3, 6
26841 ; PWR5-NEXT: rotldi 3, 3, 62
26842 ; PWR5-NEXT: and 3, 3, 6
26843 ; PWR5-NEXT: lis 7, 3855
26844 ; PWR5-NEXT: and 5, 4, 6
26845 ; PWR5-NEXT: rotldi 4, 4, 62
26846 ; PWR5-NEXT: add 3, 8, 3
26847 ; PWR5-NEXT: lis 9, 257
26848 ; PWR5-NEXT: ori 7, 7, 3855
26849 ; PWR5-NEXT: and 4, 4, 6
26850 ; PWR5-NEXT: rldicl 6, 3, 60, 4
26851 ; PWR5-NEXT: ori 9, 9, 257
26852 ; PWR5-NEXT: rldimi 7, 7, 32, 0
26853 ; PWR5-NEXT: add 4, 5, 4
26854 ; PWR5-NEXT: add 3, 3, 6
26855 ; PWR5-NEXT: rldimi 9, 9, 32, 0
26856 ; PWR5-NEXT: rldicl 5, 4, 60, 4
26857 ; PWR5-NEXT: and 3, 3, 7
26858 ; PWR5-NEXT: add 4, 4, 5
26859 ; PWR5-NEXT: mulld 3, 3, 9
26860 ; PWR5-NEXT: and 4, 4, 7
26861 ; PWR5-NEXT: rldicl 3, 3, 8, 56
26862 ; PWR5-NEXT: mulld 4, 4, 9
26863 ; PWR5-NEXT: li 5, 57
26864 ; PWR5-NEXT: subfic 3, 3, 57
26865 ; PWR5-NEXT: rldicl 4, 4, 8, 56
26866 ; PWR5-NEXT: subfe 3, 5, 5
26867 ; PWR5-NEXT: subfic 4, 4, 57
26868 ; PWR5-NEXT: subfe 4, 5, 5
26871 ; PWR6-LABEL: ugt_57_v2i64:
26873 ; PWR6-NEXT: lis 5, 21845
26874 ; PWR6-NEXT: lis 6, 13107
26875 ; PWR6-NEXT: ori 5, 5, 21845
26876 ; PWR6-NEXT: rotldi 8, 4, 63
26877 ; PWR6-NEXT: rotldi 9, 3, 63
26878 ; PWR6-NEXT: rldimi 5, 5, 32, 0
26879 ; PWR6-NEXT: and 8, 8, 5
26880 ; PWR6-NEXT: and 5, 9, 5
26881 ; PWR6-NEXT: ori 6, 6, 13107
26882 ; PWR6-NEXT: sub 3, 3, 5
26883 ; PWR6-NEXT: rldimi 6, 6, 32, 0
26884 ; PWR6-NEXT: sub 4, 4, 8
26885 ; PWR6-NEXT: and 8, 3, 6
26886 ; PWR6-NEXT: rotldi 3, 3, 62
26887 ; PWR6-NEXT: and 3, 3, 6
26888 ; PWR6-NEXT: lis 7, 3855
26889 ; PWR6-NEXT: and 5, 4, 6
26890 ; PWR6-NEXT: rotldi 4, 4, 62
26891 ; PWR6-NEXT: add 3, 8, 3
26892 ; PWR6-NEXT: lis 9, 257
26893 ; PWR6-NEXT: ori 7, 7, 3855
26894 ; PWR6-NEXT: and 4, 4, 6
26895 ; PWR6-NEXT: rldicl 6, 3, 60, 4
26896 ; PWR6-NEXT: ori 9, 9, 257
26897 ; PWR6-NEXT: rldimi 7, 7, 32, 0
26898 ; PWR6-NEXT: add 4, 5, 4
26899 ; PWR6-NEXT: add 3, 3, 6
26900 ; PWR6-NEXT: rldimi 9, 9, 32, 0
26901 ; PWR6-NEXT: rldicl 5, 4, 60, 4
26902 ; PWR6-NEXT: and 3, 3, 7
26903 ; PWR6-NEXT: add 4, 4, 5
26904 ; PWR6-NEXT: mulld 3, 3, 9
26905 ; PWR6-NEXT: and 4, 4, 7
26906 ; PWR6-NEXT: rldicl 3, 3, 8, 56
26907 ; PWR6-NEXT: mulld 4, 4, 9
26908 ; PWR6-NEXT: li 5, 57
26909 ; PWR6-NEXT: subfic 3, 3, 57
26910 ; PWR6-NEXT: rldicl 4, 4, 8, 56
26911 ; PWR6-NEXT: subfe 3, 5, 5
26912 ; PWR6-NEXT: subfic 4, 4, 57
26913 ; PWR6-NEXT: subfe 4, 5, 5
26916 ; PWR7-LABEL: ugt_57_v2i64:
26918 ; PWR7-NEXT: addi 3, 1, -32
26919 ; PWR7-NEXT: li 5, -1
26920 ; PWR7-NEXT: stxvd2x 34, 0, 3
26921 ; PWR7-NEXT: ld 4, -24(1)
26922 ; PWR7-NEXT: ld 3, -32(1)
26923 ; PWR7-NEXT: popcntd 4, 4
26924 ; PWR7-NEXT: popcntd 3, 3
26925 ; PWR7-NEXT: cmpldi 4, 57
26926 ; PWR7-NEXT: li 4, 0
26927 ; PWR7-NEXT: iselgt 6, 5, 4
26928 ; PWR7-NEXT: cmpldi 3, 57
26929 ; PWR7-NEXT: iselgt 3, 5, 4
26930 ; PWR7-NEXT: std 6, -8(1)
26931 ; PWR7-NEXT: std 3, -16(1)
26932 ; PWR7-NEXT: addi 3, 1, -16
26933 ; PWR7-NEXT: lxvd2x 34, 0, 3
26936 ; PWR8-LABEL: ugt_57_v2i64:
26938 ; PWR8-NEXT: addis 3, 2, .LCPI212_0@toc@ha
26939 ; PWR8-NEXT: vpopcntd 2, 2
26940 ; PWR8-NEXT: addi 3, 3, .LCPI212_0@toc@l
26941 ; PWR8-NEXT: lxvd2x 35, 0, 3
26942 ; PWR8-NEXT: vcmpgtud 2, 2, 3
26945 ; PWR9-LABEL: ugt_57_v2i64:
26947 ; PWR9-NEXT: addis 3, 2, .LCPI212_0@toc@ha
26948 ; PWR9-NEXT: vpopcntd 2, 2
26949 ; PWR9-NEXT: addi 3, 3, .LCPI212_0@toc@l
26950 ; PWR9-NEXT: lxv 35, 0(3)
26951 ; PWR9-NEXT: vcmpgtud 2, 2, 3
26953 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
26954 %3 = icmp ugt <2 x i64> %2, <i64 57, i64 57>
26955 %4 = sext <2 x i1> %3 to <2 x i64>
26959 define <2 x i64> @ult_58_v2i64(<2 x i64> %0) {
26960 ; PWR5-LABEL: ult_58_v2i64:
26962 ; PWR5-NEXT: lis 5, 21845
26963 ; PWR5-NEXT: lis 6, 13107
26964 ; PWR5-NEXT: ori 5, 5, 21845
26965 ; PWR5-NEXT: rotldi 8, 4, 63
26966 ; PWR5-NEXT: rotldi 9, 3, 63
26967 ; PWR5-NEXT: rldimi 5, 5, 32, 0
26968 ; PWR5-NEXT: and 8, 8, 5
26969 ; PWR5-NEXT: and 5, 9, 5
26970 ; PWR5-NEXT: ori 6, 6, 13107
26971 ; PWR5-NEXT: sub 3, 3, 5
26972 ; PWR5-NEXT: rldimi 6, 6, 32, 0
26973 ; PWR5-NEXT: sub 4, 4, 8
26974 ; PWR5-NEXT: and 8, 3, 6
26975 ; PWR5-NEXT: rotldi 3, 3, 62
26976 ; PWR5-NEXT: and 3, 3, 6
26977 ; PWR5-NEXT: lis 7, 3855
26978 ; PWR5-NEXT: and 5, 4, 6
26979 ; PWR5-NEXT: rotldi 4, 4, 62
26980 ; PWR5-NEXT: add 3, 8, 3
26981 ; PWR5-NEXT: lis 9, 257
26982 ; PWR5-NEXT: ori 7, 7, 3855
26983 ; PWR5-NEXT: and 4, 4, 6
26984 ; PWR5-NEXT: rldicl 6, 3, 60, 4
26985 ; PWR5-NEXT: ori 9, 9, 257
26986 ; PWR5-NEXT: rldimi 7, 7, 32, 0
26987 ; PWR5-NEXT: add 4, 5, 4
26988 ; PWR5-NEXT: add 3, 3, 6
26989 ; PWR5-NEXT: rldimi 9, 9, 32, 0
26990 ; PWR5-NEXT: rldicl 5, 4, 60, 4
26991 ; PWR5-NEXT: and 3, 3, 7
26992 ; PWR5-NEXT: add 4, 4, 5
26993 ; PWR5-NEXT: mulld 3, 3, 9
26994 ; PWR5-NEXT: and 4, 4, 7
26995 ; PWR5-NEXT: rldicl 3, 3, 8, 56
26996 ; PWR5-NEXT: li 5, 58
26997 ; PWR5-NEXT: mulld 4, 4, 9
26998 ; PWR5-NEXT: subc 6, 3, 5
26999 ; PWR5-NEXT: rldicl 4, 4, 8, 56
27000 ; PWR5-NEXT: subfe 3, 3, 3
27001 ; PWR5-NEXT: subc 5, 4, 5
27002 ; PWR5-NEXT: subfe 4, 4, 4
27005 ; PWR6-LABEL: ult_58_v2i64:
27007 ; PWR6-NEXT: lis 5, 21845
27008 ; PWR6-NEXT: lis 6, 13107
27009 ; PWR6-NEXT: ori 5, 5, 21845
27010 ; PWR6-NEXT: rotldi 8, 4, 63
27011 ; PWR6-NEXT: rotldi 9, 3, 63
27012 ; PWR6-NEXT: rldimi 5, 5, 32, 0
27013 ; PWR6-NEXT: and 8, 8, 5
27014 ; PWR6-NEXT: and 5, 9, 5
27015 ; PWR6-NEXT: ori 6, 6, 13107
27016 ; PWR6-NEXT: sub 3, 3, 5
27017 ; PWR6-NEXT: rldimi 6, 6, 32, 0
27018 ; PWR6-NEXT: sub 4, 4, 8
27019 ; PWR6-NEXT: and 8, 3, 6
27020 ; PWR6-NEXT: rotldi 3, 3, 62
27021 ; PWR6-NEXT: and 3, 3, 6
27022 ; PWR6-NEXT: lis 7, 3855
27023 ; PWR6-NEXT: and 5, 4, 6
27024 ; PWR6-NEXT: rotldi 4, 4, 62
27025 ; PWR6-NEXT: add 3, 8, 3
27026 ; PWR6-NEXT: lis 9, 257
27027 ; PWR6-NEXT: ori 7, 7, 3855
27028 ; PWR6-NEXT: and 4, 4, 6
27029 ; PWR6-NEXT: rldicl 6, 3, 60, 4
27030 ; PWR6-NEXT: ori 9, 9, 257
27031 ; PWR6-NEXT: rldimi 7, 7, 32, 0
27032 ; PWR6-NEXT: add 4, 5, 4
27033 ; PWR6-NEXT: add 3, 3, 6
27034 ; PWR6-NEXT: rldimi 9, 9, 32, 0
27035 ; PWR6-NEXT: rldicl 5, 4, 60, 4
27036 ; PWR6-NEXT: and 3, 3, 7
27037 ; PWR6-NEXT: add 4, 4, 5
27038 ; PWR6-NEXT: mulld 3, 3, 9
27039 ; PWR6-NEXT: and 4, 4, 7
27040 ; PWR6-NEXT: rldicl 3, 3, 8, 56
27041 ; PWR6-NEXT: li 5, 58
27042 ; PWR6-NEXT: mulld 4, 4, 9
27043 ; PWR6-NEXT: subc 6, 3, 5
27044 ; PWR6-NEXT: rldicl 4, 4, 8, 56
27045 ; PWR6-NEXT: subfe 3, 3, 3
27046 ; PWR6-NEXT: subc 5, 4, 5
27047 ; PWR6-NEXT: subfe 4, 4, 4
27050 ; PWR7-LABEL: ult_58_v2i64:
27052 ; PWR7-NEXT: addi 3, 1, -32
27053 ; PWR7-NEXT: li 5, -1
27054 ; PWR7-NEXT: stxvd2x 34, 0, 3
27055 ; PWR7-NEXT: ld 4, -24(1)
27056 ; PWR7-NEXT: ld 3, -32(1)
27057 ; PWR7-NEXT: popcntd 4, 4
27058 ; PWR7-NEXT: popcntd 3, 3
27059 ; PWR7-NEXT: cmpldi 4, 58
27060 ; PWR7-NEXT: li 4, 0
27061 ; PWR7-NEXT: isellt 6, 5, 4
27062 ; PWR7-NEXT: cmpldi 3, 58
27063 ; PWR7-NEXT: isellt 3, 5, 4
27064 ; PWR7-NEXT: std 6, -8(1)
27065 ; PWR7-NEXT: std 3, -16(1)
27066 ; PWR7-NEXT: addi 3, 1, -16
27067 ; PWR7-NEXT: lxvd2x 34, 0, 3
27070 ; PWR8-LABEL: ult_58_v2i64:
27072 ; PWR8-NEXT: addis 3, 2, .LCPI213_0@toc@ha
27073 ; PWR8-NEXT: vpopcntd 2, 2
27074 ; PWR8-NEXT: addi 3, 3, .LCPI213_0@toc@l
27075 ; PWR8-NEXT: lxvd2x 35, 0, 3
27076 ; PWR8-NEXT: vcmpgtud 2, 3, 2
27079 ; PWR9-LABEL: ult_58_v2i64:
27081 ; PWR9-NEXT: addis 3, 2, .LCPI213_0@toc@ha
27082 ; PWR9-NEXT: vpopcntd 2, 2
27083 ; PWR9-NEXT: addi 3, 3, .LCPI213_0@toc@l
27084 ; PWR9-NEXT: lxv 35, 0(3)
27085 ; PWR9-NEXT: vcmpgtud 2, 3, 2
27087 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
27088 %3 = icmp ult <2 x i64> %2, <i64 58, i64 58>
27089 %4 = sext <2 x i1> %3 to <2 x i64>
27093 define <2 x i64> @ugt_58_v2i64(<2 x i64> %0) {
27094 ; PWR5-LABEL: ugt_58_v2i64:
27096 ; PWR5-NEXT: lis 5, 21845
27097 ; PWR5-NEXT: lis 6, 13107
27098 ; PWR5-NEXT: ori 5, 5, 21845
27099 ; PWR5-NEXT: rotldi 8, 4, 63
27100 ; PWR5-NEXT: rotldi 9, 3, 63
27101 ; PWR5-NEXT: rldimi 5, 5, 32, 0
27102 ; PWR5-NEXT: and 8, 8, 5
27103 ; PWR5-NEXT: and 5, 9, 5
27104 ; PWR5-NEXT: ori 6, 6, 13107
27105 ; PWR5-NEXT: sub 3, 3, 5
27106 ; PWR5-NEXT: rldimi 6, 6, 32, 0
27107 ; PWR5-NEXT: sub 4, 4, 8
27108 ; PWR5-NEXT: and 8, 3, 6
27109 ; PWR5-NEXT: rotldi 3, 3, 62
27110 ; PWR5-NEXT: and 3, 3, 6
27111 ; PWR5-NEXT: lis 7, 3855
27112 ; PWR5-NEXT: and 5, 4, 6
27113 ; PWR5-NEXT: rotldi 4, 4, 62
27114 ; PWR5-NEXT: add 3, 8, 3
27115 ; PWR5-NEXT: lis 9, 257
27116 ; PWR5-NEXT: ori 7, 7, 3855
27117 ; PWR5-NEXT: and 4, 4, 6
27118 ; PWR5-NEXT: rldicl 6, 3, 60, 4
27119 ; PWR5-NEXT: ori 9, 9, 257
27120 ; PWR5-NEXT: rldimi 7, 7, 32, 0
27121 ; PWR5-NEXT: add 4, 5, 4
27122 ; PWR5-NEXT: add 3, 3, 6
27123 ; PWR5-NEXT: rldimi 9, 9, 32, 0
27124 ; PWR5-NEXT: rldicl 5, 4, 60, 4
27125 ; PWR5-NEXT: and 3, 3, 7
27126 ; PWR5-NEXT: add 4, 4, 5
27127 ; PWR5-NEXT: mulld 3, 3, 9
27128 ; PWR5-NEXT: and 4, 4, 7
27129 ; PWR5-NEXT: rldicl 3, 3, 8, 56
27130 ; PWR5-NEXT: mulld 4, 4, 9
27131 ; PWR5-NEXT: li 5, 58
27132 ; PWR5-NEXT: subfic 3, 3, 58
27133 ; PWR5-NEXT: rldicl 4, 4, 8, 56
27134 ; PWR5-NEXT: subfe 3, 5, 5
27135 ; PWR5-NEXT: subfic 4, 4, 58
27136 ; PWR5-NEXT: subfe 4, 5, 5
27139 ; PWR6-LABEL: ugt_58_v2i64:
27141 ; PWR6-NEXT: lis 5, 21845
27142 ; PWR6-NEXT: lis 6, 13107
27143 ; PWR6-NEXT: ori 5, 5, 21845
27144 ; PWR6-NEXT: rotldi 8, 4, 63
27145 ; PWR6-NEXT: rotldi 9, 3, 63
27146 ; PWR6-NEXT: rldimi 5, 5, 32, 0
27147 ; PWR6-NEXT: and 8, 8, 5
27148 ; PWR6-NEXT: and 5, 9, 5
27149 ; PWR6-NEXT: ori 6, 6, 13107
27150 ; PWR6-NEXT: sub 3, 3, 5
27151 ; PWR6-NEXT: rldimi 6, 6, 32, 0
27152 ; PWR6-NEXT: sub 4, 4, 8
27153 ; PWR6-NEXT: and 8, 3, 6
27154 ; PWR6-NEXT: rotldi 3, 3, 62
27155 ; PWR6-NEXT: and 3, 3, 6
27156 ; PWR6-NEXT: lis 7, 3855
27157 ; PWR6-NEXT: and 5, 4, 6
27158 ; PWR6-NEXT: rotldi 4, 4, 62
27159 ; PWR6-NEXT: add 3, 8, 3
27160 ; PWR6-NEXT: lis 9, 257
27161 ; PWR6-NEXT: ori 7, 7, 3855
27162 ; PWR6-NEXT: and 4, 4, 6
27163 ; PWR6-NEXT: rldicl 6, 3, 60, 4
27164 ; PWR6-NEXT: ori 9, 9, 257
27165 ; PWR6-NEXT: rldimi 7, 7, 32, 0
27166 ; PWR6-NEXT: add 4, 5, 4
27167 ; PWR6-NEXT: add 3, 3, 6
27168 ; PWR6-NEXT: rldimi 9, 9, 32, 0
27169 ; PWR6-NEXT: rldicl 5, 4, 60, 4
27170 ; PWR6-NEXT: and 3, 3, 7
27171 ; PWR6-NEXT: add 4, 4, 5
27172 ; PWR6-NEXT: mulld 3, 3, 9
27173 ; PWR6-NEXT: and 4, 4, 7
27174 ; PWR6-NEXT: rldicl 3, 3, 8, 56
27175 ; PWR6-NEXT: mulld 4, 4, 9
27176 ; PWR6-NEXT: li 5, 58
27177 ; PWR6-NEXT: subfic 3, 3, 58
27178 ; PWR6-NEXT: rldicl 4, 4, 8, 56
27179 ; PWR6-NEXT: subfe 3, 5, 5
27180 ; PWR6-NEXT: subfic 4, 4, 58
27181 ; PWR6-NEXT: subfe 4, 5, 5
27184 ; PWR7-LABEL: ugt_58_v2i64:
27186 ; PWR7-NEXT: addi 3, 1, -32
27187 ; PWR7-NEXT: li 5, -1
27188 ; PWR7-NEXT: stxvd2x 34, 0, 3
27189 ; PWR7-NEXT: ld 4, -24(1)
27190 ; PWR7-NEXT: ld 3, -32(1)
27191 ; PWR7-NEXT: popcntd 4, 4
27192 ; PWR7-NEXT: popcntd 3, 3
27193 ; PWR7-NEXT: cmpldi 4, 58
27194 ; PWR7-NEXT: li 4, 0
27195 ; PWR7-NEXT: iselgt 6, 5, 4
27196 ; PWR7-NEXT: cmpldi 3, 58
27197 ; PWR7-NEXT: iselgt 3, 5, 4
27198 ; PWR7-NEXT: std 6, -8(1)
27199 ; PWR7-NEXT: std 3, -16(1)
27200 ; PWR7-NEXT: addi 3, 1, -16
27201 ; PWR7-NEXT: lxvd2x 34, 0, 3
27204 ; PWR8-LABEL: ugt_58_v2i64:
27206 ; PWR8-NEXT: addis 3, 2, .LCPI214_0@toc@ha
27207 ; PWR8-NEXT: vpopcntd 2, 2
27208 ; PWR8-NEXT: addi 3, 3, .LCPI214_0@toc@l
27209 ; PWR8-NEXT: lxvd2x 35, 0, 3
27210 ; PWR8-NEXT: vcmpgtud 2, 2, 3
27213 ; PWR9-LABEL: ugt_58_v2i64:
27215 ; PWR9-NEXT: addis 3, 2, .LCPI214_0@toc@ha
27216 ; PWR9-NEXT: vpopcntd 2, 2
27217 ; PWR9-NEXT: addi 3, 3, .LCPI214_0@toc@l
27218 ; PWR9-NEXT: lxv 35, 0(3)
27219 ; PWR9-NEXT: vcmpgtud 2, 2, 3
27221 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
27222 %3 = icmp ugt <2 x i64> %2, <i64 58, i64 58>
27223 %4 = sext <2 x i1> %3 to <2 x i64>
27227 define <2 x i64> @ult_59_v2i64(<2 x i64> %0) {
27228 ; PWR5-LABEL: ult_59_v2i64:
27230 ; PWR5-NEXT: lis 5, 21845
27231 ; PWR5-NEXT: lis 6, 13107
27232 ; PWR5-NEXT: ori 5, 5, 21845
27233 ; PWR5-NEXT: rotldi 8, 4, 63
27234 ; PWR5-NEXT: rotldi 9, 3, 63
27235 ; PWR5-NEXT: rldimi 5, 5, 32, 0
27236 ; PWR5-NEXT: and 8, 8, 5
27237 ; PWR5-NEXT: and 5, 9, 5
27238 ; PWR5-NEXT: ori 6, 6, 13107
27239 ; PWR5-NEXT: sub 3, 3, 5
27240 ; PWR5-NEXT: rldimi 6, 6, 32, 0
27241 ; PWR5-NEXT: sub 4, 4, 8
27242 ; PWR5-NEXT: and 8, 3, 6
27243 ; PWR5-NEXT: rotldi 3, 3, 62
27244 ; PWR5-NEXT: and 3, 3, 6
27245 ; PWR5-NEXT: lis 7, 3855
27246 ; PWR5-NEXT: and 5, 4, 6
27247 ; PWR5-NEXT: rotldi 4, 4, 62
27248 ; PWR5-NEXT: add 3, 8, 3
27249 ; PWR5-NEXT: lis 9, 257
27250 ; PWR5-NEXT: ori 7, 7, 3855
27251 ; PWR5-NEXT: and 4, 4, 6
27252 ; PWR5-NEXT: rldicl 6, 3, 60, 4
27253 ; PWR5-NEXT: ori 9, 9, 257
27254 ; PWR5-NEXT: rldimi 7, 7, 32, 0
27255 ; PWR5-NEXT: add 4, 5, 4
27256 ; PWR5-NEXT: add 3, 3, 6
27257 ; PWR5-NEXT: rldimi 9, 9, 32, 0
27258 ; PWR5-NEXT: rldicl 5, 4, 60, 4
27259 ; PWR5-NEXT: and 3, 3, 7
27260 ; PWR5-NEXT: add 4, 4, 5
27261 ; PWR5-NEXT: mulld 3, 3, 9
27262 ; PWR5-NEXT: and 4, 4, 7
27263 ; PWR5-NEXT: rldicl 3, 3, 8, 56
27264 ; PWR5-NEXT: li 5, 59
27265 ; PWR5-NEXT: mulld 4, 4, 9
27266 ; PWR5-NEXT: subc 6, 3, 5
27267 ; PWR5-NEXT: rldicl 4, 4, 8, 56
27268 ; PWR5-NEXT: subfe 3, 3, 3
27269 ; PWR5-NEXT: subc 5, 4, 5
27270 ; PWR5-NEXT: subfe 4, 4, 4
27273 ; PWR6-LABEL: ult_59_v2i64:
27275 ; PWR6-NEXT: lis 5, 21845
27276 ; PWR6-NEXT: lis 6, 13107
27277 ; PWR6-NEXT: ori 5, 5, 21845
27278 ; PWR6-NEXT: rotldi 8, 4, 63
27279 ; PWR6-NEXT: rotldi 9, 3, 63
27280 ; PWR6-NEXT: rldimi 5, 5, 32, 0
27281 ; PWR6-NEXT: and 8, 8, 5
27282 ; PWR6-NEXT: and 5, 9, 5
27283 ; PWR6-NEXT: ori 6, 6, 13107
27284 ; PWR6-NEXT: sub 3, 3, 5
27285 ; PWR6-NEXT: rldimi 6, 6, 32, 0
27286 ; PWR6-NEXT: sub 4, 4, 8
27287 ; PWR6-NEXT: and 8, 3, 6
27288 ; PWR6-NEXT: rotldi 3, 3, 62
27289 ; PWR6-NEXT: and 3, 3, 6
27290 ; PWR6-NEXT: lis 7, 3855
27291 ; PWR6-NEXT: and 5, 4, 6
27292 ; PWR6-NEXT: rotldi 4, 4, 62
27293 ; PWR6-NEXT: add 3, 8, 3
27294 ; PWR6-NEXT: lis 9, 257
27295 ; PWR6-NEXT: ori 7, 7, 3855
27296 ; PWR6-NEXT: and 4, 4, 6
27297 ; PWR6-NEXT: rldicl 6, 3, 60, 4
27298 ; PWR6-NEXT: ori 9, 9, 257
27299 ; PWR6-NEXT: rldimi 7, 7, 32, 0
27300 ; PWR6-NEXT: add 4, 5, 4
27301 ; PWR6-NEXT: add 3, 3, 6
27302 ; PWR6-NEXT: rldimi 9, 9, 32, 0
27303 ; PWR6-NEXT: rldicl 5, 4, 60, 4
27304 ; PWR6-NEXT: and 3, 3, 7
27305 ; PWR6-NEXT: add 4, 4, 5
27306 ; PWR6-NEXT: mulld 3, 3, 9
27307 ; PWR6-NEXT: and 4, 4, 7
27308 ; PWR6-NEXT: rldicl 3, 3, 8, 56
27309 ; PWR6-NEXT: li 5, 59
27310 ; PWR6-NEXT: mulld 4, 4, 9
27311 ; PWR6-NEXT: subc 6, 3, 5
27312 ; PWR6-NEXT: rldicl 4, 4, 8, 56
27313 ; PWR6-NEXT: subfe 3, 3, 3
27314 ; PWR6-NEXT: subc 5, 4, 5
27315 ; PWR6-NEXT: subfe 4, 4, 4
27318 ; PWR7-LABEL: ult_59_v2i64:
27320 ; PWR7-NEXT: addi 3, 1, -32
27321 ; PWR7-NEXT: li 5, -1
27322 ; PWR7-NEXT: stxvd2x 34, 0, 3
27323 ; PWR7-NEXT: ld 4, -24(1)
27324 ; PWR7-NEXT: ld 3, -32(1)
27325 ; PWR7-NEXT: popcntd 4, 4
27326 ; PWR7-NEXT: popcntd 3, 3
27327 ; PWR7-NEXT: cmpldi 4, 59
27328 ; PWR7-NEXT: li 4, 0
27329 ; PWR7-NEXT: isellt 6, 5, 4
27330 ; PWR7-NEXT: cmpldi 3, 59
27331 ; PWR7-NEXT: isellt 3, 5, 4
27332 ; PWR7-NEXT: std 6, -8(1)
27333 ; PWR7-NEXT: std 3, -16(1)
27334 ; PWR7-NEXT: addi 3, 1, -16
27335 ; PWR7-NEXT: lxvd2x 34, 0, 3
27338 ; PWR8-LABEL: ult_59_v2i64:
27340 ; PWR8-NEXT: addis 3, 2, .LCPI215_0@toc@ha
27341 ; PWR8-NEXT: vpopcntd 2, 2
27342 ; PWR8-NEXT: addi 3, 3, .LCPI215_0@toc@l
27343 ; PWR8-NEXT: lxvd2x 35, 0, 3
27344 ; PWR8-NEXT: vcmpgtud 2, 3, 2
27347 ; PWR9-LABEL: ult_59_v2i64:
27349 ; PWR9-NEXT: addis 3, 2, .LCPI215_0@toc@ha
27350 ; PWR9-NEXT: vpopcntd 2, 2
27351 ; PWR9-NEXT: addi 3, 3, .LCPI215_0@toc@l
27352 ; PWR9-NEXT: lxv 35, 0(3)
27353 ; PWR9-NEXT: vcmpgtud 2, 3, 2
27355 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
27356 %3 = icmp ult <2 x i64> %2, <i64 59, i64 59>
27357 %4 = sext <2 x i1> %3 to <2 x i64>
27361 define <2 x i64> @ugt_59_v2i64(<2 x i64> %0) {
27362 ; PWR5-LABEL: ugt_59_v2i64:
27364 ; PWR5-NEXT: lis 5, 21845
27365 ; PWR5-NEXT: lis 6, 13107
27366 ; PWR5-NEXT: ori 5, 5, 21845
27367 ; PWR5-NEXT: rotldi 8, 4, 63
27368 ; PWR5-NEXT: rotldi 9, 3, 63
27369 ; PWR5-NEXT: rldimi 5, 5, 32, 0
27370 ; PWR5-NEXT: and 8, 8, 5
27371 ; PWR5-NEXT: and 5, 9, 5
27372 ; PWR5-NEXT: ori 6, 6, 13107
27373 ; PWR5-NEXT: sub 3, 3, 5
27374 ; PWR5-NEXT: rldimi 6, 6, 32, 0
27375 ; PWR5-NEXT: sub 4, 4, 8
27376 ; PWR5-NEXT: and 8, 3, 6
27377 ; PWR5-NEXT: rotldi 3, 3, 62
27378 ; PWR5-NEXT: and 3, 3, 6
27379 ; PWR5-NEXT: lis 7, 3855
27380 ; PWR5-NEXT: and 5, 4, 6
27381 ; PWR5-NEXT: rotldi 4, 4, 62
27382 ; PWR5-NEXT: add 3, 8, 3
27383 ; PWR5-NEXT: lis 9, 257
27384 ; PWR5-NEXT: ori 7, 7, 3855
27385 ; PWR5-NEXT: and 4, 4, 6
27386 ; PWR5-NEXT: rldicl 6, 3, 60, 4
27387 ; PWR5-NEXT: ori 9, 9, 257
27388 ; PWR5-NEXT: rldimi 7, 7, 32, 0
27389 ; PWR5-NEXT: add 4, 5, 4
27390 ; PWR5-NEXT: add 3, 3, 6
27391 ; PWR5-NEXT: rldimi 9, 9, 32, 0
27392 ; PWR5-NEXT: rldicl 5, 4, 60, 4
27393 ; PWR5-NEXT: and 3, 3, 7
27394 ; PWR5-NEXT: add 4, 4, 5
27395 ; PWR5-NEXT: mulld 3, 3, 9
27396 ; PWR5-NEXT: and 4, 4, 7
27397 ; PWR5-NEXT: rldicl 3, 3, 8, 56
27398 ; PWR5-NEXT: mulld 4, 4, 9
27399 ; PWR5-NEXT: li 5, 59
27400 ; PWR5-NEXT: subfic 3, 3, 59
27401 ; PWR5-NEXT: rldicl 4, 4, 8, 56
27402 ; PWR5-NEXT: subfe 3, 5, 5
27403 ; PWR5-NEXT: subfic 4, 4, 59
27404 ; PWR5-NEXT: subfe 4, 5, 5
27407 ; PWR6-LABEL: ugt_59_v2i64:
27409 ; PWR6-NEXT: lis 5, 21845
27410 ; PWR6-NEXT: lis 6, 13107
27411 ; PWR6-NEXT: ori 5, 5, 21845
27412 ; PWR6-NEXT: rotldi 8, 4, 63
27413 ; PWR6-NEXT: rotldi 9, 3, 63
27414 ; PWR6-NEXT: rldimi 5, 5, 32, 0
27415 ; PWR6-NEXT: and 8, 8, 5
27416 ; PWR6-NEXT: and 5, 9, 5
27417 ; PWR6-NEXT: ori 6, 6, 13107
27418 ; PWR6-NEXT: sub 3, 3, 5
27419 ; PWR6-NEXT: rldimi 6, 6, 32, 0
27420 ; PWR6-NEXT: sub 4, 4, 8
27421 ; PWR6-NEXT: and 8, 3, 6
27422 ; PWR6-NEXT: rotldi 3, 3, 62
27423 ; PWR6-NEXT: and 3, 3, 6
27424 ; PWR6-NEXT: lis 7, 3855
27425 ; PWR6-NEXT: and 5, 4, 6
27426 ; PWR6-NEXT: rotldi 4, 4, 62
27427 ; PWR6-NEXT: add 3, 8, 3
27428 ; PWR6-NEXT: lis 9, 257
27429 ; PWR6-NEXT: ori 7, 7, 3855
27430 ; PWR6-NEXT: and 4, 4, 6
27431 ; PWR6-NEXT: rldicl 6, 3, 60, 4
27432 ; PWR6-NEXT: ori 9, 9, 257
27433 ; PWR6-NEXT: rldimi 7, 7, 32, 0
27434 ; PWR6-NEXT: add 4, 5, 4
27435 ; PWR6-NEXT: add 3, 3, 6
27436 ; PWR6-NEXT: rldimi 9, 9, 32, 0
27437 ; PWR6-NEXT: rldicl 5, 4, 60, 4
27438 ; PWR6-NEXT: and 3, 3, 7
27439 ; PWR6-NEXT: add 4, 4, 5
27440 ; PWR6-NEXT: mulld 3, 3, 9
27441 ; PWR6-NEXT: and 4, 4, 7
27442 ; PWR6-NEXT: rldicl 3, 3, 8, 56
27443 ; PWR6-NEXT: mulld 4, 4, 9
27444 ; PWR6-NEXT: li 5, 59
27445 ; PWR6-NEXT: subfic 3, 3, 59
27446 ; PWR6-NEXT: rldicl 4, 4, 8, 56
27447 ; PWR6-NEXT: subfe 3, 5, 5
27448 ; PWR6-NEXT: subfic 4, 4, 59
27449 ; PWR6-NEXT: subfe 4, 5, 5
27452 ; PWR7-LABEL: ugt_59_v2i64:
27454 ; PWR7-NEXT: addi 3, 1, -32
27455 ; PWR7-NEXT: li 5, -1
27456 ; PWR7-NEXT: stxvd2x 34, 0, 3
27457 ; PWR7-NEXT: ld 4, -24(1)
27458 ; PWR7-NEXT: ld 3, -32(1)
27459 ; PWR7-NEXT: popcntd 4, 4
27460 ; PWR7-NEXT: popcntd 3, 3
27461 ; PWR7-NEXT: cmpldi 4, 59
27462 ; PWR7-NEXT: li 4, 0
27463 ; PWR7-NEXT: iselgt 6, 5, 4
27464 ; PWR7-NEXT: cmpldi 3, 59
27465 ; PWR7-NEXT: iselgt 3, 5, 4
27466 ; PWR7-NEXT: std 6, -8(1)
27467 ; PWR7-NEXT: std 3, -16(1)
27468 ; PWR7-NEXT: addi 3, 1, -16
27469 ; PWR7-NEXT: lxvd2x 34, 0, 3
27472 ; PWR8-LABEL: ugt_59_v2i64:
27474 ; PWR8-NEXT: addis 3, 2, .LCPI216_0@toc@ha
27475 ; PWR8-NEXT: vpopcntd 2, 2
27476 ; PWR8-NEXT: addi 3, 3, .LCPI216_0@toc@l
27477 ; PWR8-NEXT: lxvd2x 35, 0, 3
27478 ; PWR8-NEXT: vcmpgtud 2, 2, 3
27481 ; PWR9-LABEL: ugt_59_v2i64:
27483 ; PWR9-NEXT: addis 3, 2, .LCPI216_0@toc@ha
27484 ; PWR9-NEXT: vpopcntd 2, 2
27485 ; PWR9-NEXT: addi 3, 3, .LCPI216_0@toc@l
27486 ; PWR9-NEXT: lxv 35, 0(3)
27487 ; PWR9-NEXT: vcmpgtud 2, 2, 3
27489 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
27490 %3 = icmp ugt <2 x i64> %2, <i64 59, i64 59>
27491 %4 = sext <2 x i1> %3 to <2 x i64>
27495 define <2 x i64> @ult_60_v2i64(<2 x i64> %0) {
27496 ; PWR5-LABEL: ult_60_v2i64:
27498 ; PWR5-NEXT: lis 5, 21845
27499 ; PWR5-NEXT: lis 6, 13107
27500 ; PWR5-NEXT: ori 5, 5, 21845
27501 ; PWR5-NEXT: rotldi 8, 4, 63
27502 ; PWR5-NEXT: rotldi 9, 3, 63
27503 ; PWR5-NEXT: rldimi 5, 5, 32, 0
27504 ; PWR5-NEXT: and 8, 8, 5
27505 ; PWR5-NEXT: and 5, 9, 5
27506 ; PWR5-NEXT: ori 6, 6, 13107
27507 ; PWR5-NEXT: sub 3, 3, 5
27508 ; PWR5-NEXT: rldimi 6, 6, 32, 0
27509 ; PWR5-NEXT: sub 4, 4, 8
27510 ; PWR5-NEXT: and 8, 3, 6
27511 ; PWR5-NEXT: rotldi 3, 3, 62
27512 ; PWR5-NEXT: and 3, 3, 6
27513 ; PWR5-NEXT: lis 7, 3855
27514 ; PWR5-NEXT: and 5, 4, 6
27515 ; PWR5-NEXT: rotldi 4, 4, 62
27516 ; PWR5-NEXT: add 3, 8, 3
27517 ; PWR5-NEXT: lis 9, 257
27518 ; PWR5-NEXT: ori 7, 7, 3855
27519 ; PWR5-NEXT: and 4, 4, 6
27520 ; PWR5-NEXT: rldicl 6, 3, 60, 4
27521 ; PWR5-NEXT: ori 9, 9, 257
27522 ; PWR5-NEXT: rldimi 7, 7, 32, 0
27523 ; PWR5-NEXT: add 4, 5, 4
27524 ; PWR5-NEXT: add 3, 3, 6
27525 ; PWR5-NEXT: rldimi 9, 9, 32, 0
27526 ; PWR5-NEXT: rldicl 5, 4, 60, 4
27527 ; PWR5-NEXT: and 3, 3, 7
27528 ; PWR5-NEXT: add 4, 4, 5
27529 ; PWR5-NEXT: mulld 3, 3, 9
27530 ; PWR5-NEXT: and 4, 4, 7
27531 ; PWR5-NEXT: rldicl 3, 3, 8, 56
27532 ; PWR5-NEXT: li 5, 60
27533 ; PWR5-NEXT: mulld 4, 4, 9
27534 ; PWR5-NEXT: subc 6, 3, 5
27535 ; PWR5-NEXT: rldicl 4, 4, 8, 56
27536 ; PWR5-NEXT: subfe 3, 3, 3
27537 ; PWR5-NEXT: subc 5, 4, 5
27538 ; PWR5-NEXT: subfe 4, 4, 4
27541 ; PWR6-LABEL: ult_60_v2i64:
27543 ; PWR6-NEXT: lis 5, 21845
27544 ; PWR6-NEXT: lis 6, 13107
27545 ; PWR6-NEXT: ori 5, 5, 21845
27546 ; PWR6-NEXT: rotldi 8, 4, 63
27547 ; PWR6-NEXT: rotldi 9, 3, 63
27548 ; PWR6-NEXT: rldimi 5, 5, 32, 0
27549 ; PWR6-NEXT: and 8, 8, 5
27550 ; PWR6-NEXT: and 5, 9, 5
27551 ; PWR6-NEXT: ori 6, 6, 13107
27552 ; PWR6-NEXT: sub 3, 3, 5
27553 ; PWR6-NEXT: rldimi 6, 6, 32, 0
27554 ; PWR6-NEXT: sub 4, 4, 8
27555 ; PWR6-NEXT: and 8, 3, 6
27556 ; PWR6-NEXT: rotldi 3, 3, 62
27557 ; PWR6-NEXT: and 3, 3, 6
27558 ; PWR6-NEXT: lis 7, 3855
27559 ; PWR6-NEXT: and 5, 4, 6
27560 ; PWR6-NEXT: rotldi 4, 4, 62
27561 ; PWR6-NEXT: add 3, 8, 3
27562 ; PWR6-NEXT: lis 9, 257
27563 ; PWR6-NEXT: ori 7, 7, 3855
27564 ; PWR6-NEXT: and 4, 4, 6
27565 ; PWR6-NEXT: rldicl 6, 3, 60, 4
27566 ; PWR6-NEXT: ori 9, 9, 257
27567 ; PWR6-NEXT: rldimi 7, 7, 32, 0
27568 ; PWR6-NEXT: add 4, 5, 4
27569 ; PWR6-NEXT: add 3, 3, 6
27570 ; PWR6-NEXT: rldimi 9, 9, 32, 0
27571 ; PWR6-NEXT: rldicl 5, 4, 60, 4
27572 ; PWR6-NEXT: and 3, 3, 7
27573 ; PWR6-NEXT: add 4, 4, 5
27574 ; PWR6-NEXT: mulld 3, 3, 9
27575 ; PWR6-NEXT: and 4, 4, 7
27576 ; PWR6-NEXT: rldicl 3, 3, 8, 56
27577 ; PWR6-NEXT: li 5, 60
27578 ; PWR6-NEXT: mulld 4, 4, 9
27579 ; PWR6-NEXT: subc 6, 3, 5
27580 ; PWR6-NEXT: rldicl 4, 4, 8, 56
27581 ; PWR6-NEXT: subfe 3, 3, 3
27582 ; PWR6-NEXT: subc 5, 4, 5
27583 ; PWR6-NEXT: subfe 4, 4, 4
27586 ; PWR7-LABEL: ult_60_v2i64:
27588 ; PWR7-NEXT: addi 3, 1, -32
27589 ; PWR7-NEXT: li 5, -1
27590 ; PWR7-NEXT: stxvd2x 34, 0, 3
27591 ; PWR7-NEXT: ld 4, -24(1)
27592 ; PWR7-NEXT: ld 3, -32(1)
27593 ; PWR7-NEXT: popcntd 4, 4
27594 ; PWR7-NEXT: popcntd 3, 3
27595 ; PWR7-NEXT: cmpldi 4, 60
27596 ; PWR7-NEXT: li 4, 0
27597 ; PWR7-NEXT: isellt 6, 5, 4
27598 ; PWR7-NEXT: cmpldi 3, 60
27599 ; PWR7-NEXT: isellt 3, 5, 4
27600 ; PWR7-NEXT: std 6, -8(1)
27601 ; PWR7-NEXT: std 3, -16(1)
27602 ; PWR7-NEXT: addi 3, 1, -16
27603 ; PWR7-NEXT: lxvd2x 34, 0, 3
27606 ; PWR8-LABEL: ult_60_v2i64:
27608 ; PWR8-NEXT: addis 3, 2, .LCPI217_0@toc@ha
27609 ; PWR8-NEXT: vpopcntd 2, 2
27610 ; PWR8-NEXT: addi 3, 3, .LCPI217_0@toc@l
27611 ; PWR8-NEXT: lxvd2x 35, 0, 3
27612 ; PWR8-NEXT: vcmpgtud 2, 3, 2
27615 ; PWR9-LABEL: ult_60_v2i64:
27617 ; PWR9-NEXT: addis 3, 2, .LCPI217_0@toc@ha
27618 ; PWR9-NEXT: vpopcntd 2, 2
27619 ; PWR9-NEXT: addi 3, 3, .LCPI217_0@toc@l
27620 ; PWR9-NEXT: lxv 35, 0(3)
27621 ; PWR9-NEXT: vcmpgtud 2, 3, 2
27623 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
27624 %3 = icmp ult <2 x i64> %2, <i64 60, i64 60>
27625 %4 = sext <2 x i1> %3 to <2 x i64>
27629 define <2 x i64> @ugt_60_v2i64(<2 x i64> %0) {
27630 ; PWR5-LABEL: ugt_60_v2i64:
27632 ; PWR5-NEXT: lis 5, 21845
27633 ; PWR5-NEXT: lis 6, 13107
27634 ; PWR5-NEXT: ori 5, 5, 21845
27635 ; PWR5-NEXT: rotldi 8, 4, 63
27636 ; PWR5-NEXT: rotldi 9, 3, 63
27637 ; PWR5-NEXT: rldimi 5, 5, 32, 0
27638 ; PWR5-NEXT: and 8, 8, 5
27639 ; PWR5-NEXT: and 5, 9, 5
27640 ; PWR5-NEXT: ori 6, 6, 13107
27641 ; PWR5-NEXT: sub 3, 3, 5
27642 ; PWR5-NEXT: rldimi 6, 6, 32, 0
27643 ; PWR5-NEXT: sub 4, 4, 8
27644 ; PWR5-NEXT: and 8, 3, 6
27645 ; PWR5-NEXT: rotldi 3, 3, 62
27646 ; PWR5-NEXT: and 3, 3, 6
27647 ; PWR5-NEXT: lis 7, 3855
27648 ; PWR5-NEXT: and 5, 4, 6
27649 ; PWR5-NEXT: rotldi 4, 4, 62
27650 ; PWR5-NEXT: add 3, 8, 3
27651 ; PWR5-NEXT: lis 9, 257
27652 ; PWR5-NEXT: ori 7, 7, 3855
27653 ; PWR5-NEXT: and 4, 4, 6
27654 ; PWR5-NEXT: rldicl 6, 3, 60, 4
27655 ; PWR5-NEXT: ori 9, 9, 257
27656 ; PWR5-NEXT: rldimi 7, 7, 32, 0
27657 ; PWR5-NEXT: add 4, 5, 4
27658 ; PWR5-NEXT: add 3, 3, 6
27659 ; PWR5-NEXT: rldimi 9, 9, 32, 0
27660 ; PWR5-NEXT: rldicl 5, 4, 60, 4
27661 ; PWR5-NEXT: and 3, 3, 7
27662 ; PWR5-NEXT: add 4, 4, 5
27663 ; PWR5-NEXT: mulld 3, 3, 9
27664 ; PWR5-NEXT: and 4, 4, 7
27665 ; PWR5-NEXT: rldicl 3, 3, 8, 56
27666 ; PWR5-NEXT: mulld 4, 4, 9
27667 ; PWR5-NEXT: li 5, 60
27668 ; PWR5-NEXT: subfic 3, 3, 60
27669 ; PWR5-NEXT: rldicl 4, 4, 8, 56
27670 ; PWR5-NEXT: subfe 3, 5, 5
27671 ; PWR5-NEXT: subfic 4, 4, 60
27672 ; PWR5-NEXT: subfe 4, 5, 5
27675 ; PWR6-LABEL: ugt_60_v2i64:
27677 ; PWR6-NEXT: lis 5, 21845
27678 ; PWR6-NEXT: lis 6, 13107
27679 ; PWR6-NEXT: ori 5, 5, 21845
27680 ; PWR6-NEXT: rotldi 8, 4, 63
27681 ; PWR6-NEXT: rotldi 9, 3, 63
27682 ; PWR6-NEXT: rldimi 5, 5, 32, 0
27683 ; PWR6-NEXT: and 8, 8, 5
27684 ; PWR6-NEXT: and 5, 9, 5
27685 ; PWR6-NEXT: ori 6, 6, 13107
27686 ; PWR6-NEXT: sub 3, 3, 5
27687 ; PWR6-NEXT: rldimi 6, 6, 32, 0
27688 ; PWR6-NEXT: sub 4, 4, 8
27689 ; PWR6-NEXT: and 8, 3, 6
27690 ; PWR6-NEXT: rotldi 3, 3, 62
27691 ; PWR6-NEXT: and 3, 3, 6
27692 ; PWR6-NEXT: lis 7, 3855
27693 ; PWR6-NEXT: and 5, 4, 6
27694 ; PWR6-NEXT: rotldi 4, 4, 62
27695 ; PWR6-NEXT: add 3, 8, 3
27696 ; PWR6-NEXT: lis 9, 257
27697 ; PWR6-NEXT: ori 7, 7, 3855
27698 ; PWR6-NEXT: and 4, 4, 6
27699 ; PWR6-NEXT: rldicl 6, 3, 60, 4
27700 ; PWR6-NEXT: ori 9, 9, 257
27701 ; PWR6-NEXT: rldimi 7, 7, 32, 0
27702 ; PWR6-NEXT: add 4, 5, 4
27703 ; PWR6-NEXT: add 3, 3, 6
27704 ; PWR6-NEXT: rldimi 9, 9, 32, 0
27705 ; PWR6-NEXT: rldicl 5, 4, 60, 4
27706 ; PWR6-NEXT: and 3, 3, 7
27707 ; PWR6-NEXT: add 4, 4, 5
27708 ; PWR6-NEXT: mulld 3, 3, 9
27709 ; PWR6-NEXT: and 4, 4, 7
27710 ; PWR6-NEXT: rldicl 3, 3, 8, 56
27711 ; PWR6-NEXT: mulld 4, 4, 9
27712 ; PWR6-NEXT: li 5, 60
27713 ; PWR6-NEXT: subfic 3, 3, 60
27714 ; PWR6-NEXT: rldicl 4, 4, 8, 56
27715 ; PWR6-NEXT: subfe 3, 5, 5
27716 ; PWR6-NEXT: subfic 4, 4, 60
27717 ; PWR6-NEXT: subfe 4, 5, 5
27720 ; PWR7-LABEL: ugt_60_v2i64:
27722 ; PWR7-NEXT: addi 3, 1, -32
27723 ; PWR7-NEXT: li 5, -1
27724 ; PWR7-NEXT: stxvd2x 34, 0, 3
27725 ; PWR7-NEXT: ld 4, -24(1)
27726 ; PWR7-NEXT: ld 3, -32(1)
27727 ; PWR7-NEXT: popcntd 4, 4
27728 ; PWR7-NEXT: popcntd 3, 3
27729 ; PWR7-NEXT: cmpldi 4, 60
27730 ; PWR7-NEXT: li 4, 0
27731 ; PWR7-NEXT: iselgt 6, 5, 4
27732 ; PWR7-NEXT: cmpldi 3, 60
27733 ; PWR7-NEXT: iselgt 3, 5, 4
27734 ; PWR7-NEXT: std 6, -8(1)
27735 ; PWR7-NEXT: std 3, -16(1)
27736 ; PWR7-NEXT: addi 3, 1, -16
27737 ; PWR7-NEXT: lxvd2x 34, 0, 3
27740 ; PWR8-LABEL: ugt_60_v2i64:
27742 ; PWR8-NEXT: addis 3, 2, .LCPI218_0@toc@ha
27743 ; PWR8-NEXT: vpopcntd 2, 2
27744 ; PWR8-NEXT: addi 3, 3, .LCPI218_0@toc@l
27745 ; PWR8-NEXT: lxvd2x 35, 0, 3
27746 ; PWR8-NEXT: vcmpgtud 2, 2, 3
27749 ; PWR9-LABEL: ugt_60_v2i64:
27751 ; PWR9-NEXT: addis 3, 2, .LCPI218_0@toc@ha
27752 ; PWR9-NEXT: vpopcntd 2, 2
27753 ; PWR9-NEXT: addi 3, 3, .LCPI218_0@toc@l
27754 ; PWR9-NEXT: lxv 35, 0(3)
27755 ; PWR9-NEXT: vcmpgtud 2, 2, 3
27757 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
27758 %3 = icmp ugt <2 x i64> %2, <i64 60, i64 60>
27759 %4 = sext <2 x i1> %3 to <2 x i64>
27763 define <2 x i64> @ult_61_v2i64(<2 x i64> %0) {
27764 ; PWR5-LABEL: ult_61_v2i64:
27766 ; PWR5-NEXT: lis 5, 21845
27767 ; PWR5-NEXT: lis 6, 13107
27768 ; PWR5-NEXT: ori 5, 5, 21845
27769 ; PWR5-NEXT: rotldi 8, 4, 63
27770 ; PWR5-NEXT: rotldi 9, 3, 63
27771 ; PWR5-NEXT: rldimi 5, 5, 32, 0
27772 ; PWR5-NEXT: and 8, 8, 5
27773 ; PWR5-NEXT: and 5, 9, 5
27774 ; PWR5-NEXT: ori 6, 6, 13107
27775 ; PWR5-NEXT: sub 3, 3, 5
27776 ; PWR5-NEXT: rldimi 6, 6, 32, 0
27777 ; PWR5-NEXT: sub 4, 4, 8
27778 ; PWR5-NEXT: and 8, 3, 6
27779 ; PWR5-NEXT: rotldi 3, 3, 62
27780 ; PWR5-NEXT: and 3, 3, 6
27781 ; PWR5-NEXT: lis 7, 3855
27782 ; PWR5-NEXT: and 5, 4, 6
27783 ; PWR5-NEXT: rotldi 4, 4, 62
27784 ; PWR5-NEXT: add 3, 8, 3
27785 ; PWR5-NEXT: lis 9, 257
27786 ; PWR5-NEXT: ori 7, 7, 3855
27787 ; PWR5-NEXT: and 4, 4, 6
27788 ; PWR5-NEXT: rldicl 6, 3, 60, 4
27789 ; PWR5-NEXT: ori 9, 9, 257
27790 ; PWR5-NEXT: rldimi 7, 7, 32, 0
27791 ; PWR5-NEXT: add 4, 5, 4
27792 ; PWR5-NEXT: add 3, 3, 6
27793 ; PWR5-NEXT: rldimi 9, 9, 32, 0
27794 ; PWR5-NEXT: rldicl 5, 4, 60, 4
27795 ; PWR5-NEXT: and 3, 3, 7
27796 ; PWR5-NEXT: add 4, 4, 5
27797 ; PWR5-NEXT: mulld 3, 3, 9
27798 ; PWR5-NEXT: and 4, 4, 7
27799 ; PWR5-NEXT: rldicl 3, 3, 8, 56
27800 ; PWR5-NEXT: li 5, 61
27801 ; PWR5-NEXT: mulld 4, 4, 9
27802 ; PWR5-NEXT: subc 6, 3, 5
27803 ; PWR5-NEXT: rldicl 4, 4, 8, 56
27804 ; PWR5-NEXT: subfe 3, 3, 3
27805 ; PWR5-NEXT: subc 5, 4, 5
27806 ; PWR5-NEXT: subfe 4, 4, 4
27809 ; PWR6-LABEL: ult_61_v2i64:
27811 ; PWR6-NEXT: lis 5, 21845
27812 ; PWR6-NEXT: lis 6, 13107
27813 ; PWR6-NEXT: ori 5, 5, 21845
27814 ; PWR6-NEXT: rotldi 8, 4, 63
27815 ; PWR6-NEXT: rotldi 9, 3, 63
27816 ; PWR6-NEXT: rldimi 5, 5, 32, 0
27817 ; PWR6-NEXT: and 8, 8, 5
27818 ; PWR6-NEXT: and 5, 9, 5
27819 ; PWR6-NEXT: ori 6, 6, 13107
27820 ; PWR6-NEXT: sub 3, 3, 5
27821 ; PWR6-NEXT: rldimi 6, 6, 32, 0
27822 ; PWR6-NEXT: sub 4, 4, 8
27823 ; PWR6-NEXT: and 8, 3, 6
27824 ; PWR6-NEXT: rotldi 3, 3, 62
27825 ; PWR6-NEXT: and 3, 3, 6
27826 ; PWR6-NEXT: lis 7, 3855
27827 ; PWR6-NEXT: and 5, 4, 6
27828 ; PWR6-NEXT: rotldi 4, 4, 62
27829 ; PWR6-NEXT: add 3, 8, 3
27830 ; PWR6-NEXT: lis 9, 257
27831 ; PWR6-NEXT: ori 7, 7, 3855
27832 ; PWR6-NEXT: and 4, 4, 6
27833 ; PWR6-NEXT: rldicl 6, 3, 60, 4
27834 ; PWR6-NEXT: ori 9, 9, 257
27835 ; PWR6-NEXT: rldimi 7, 7, 32, 0
27836 ; PWR6-NEXT: add 4, 5, 4
27837 ; PWR6-NEXT: add 3, 3, 6
27838 ; PWR6-NEXT: rldimi 9, 9, 32, 0
27839 ; PWR6-NEXT: rldicl 5, 4, 60, 4
27840 ; PWR6-NEXT: and 3, 3, 7
27841 ; PWR6-NEXT: add 4, 4, 5
27842 ; PWR6-NEXT: mulld 3, 3, 9
27843 ; PWR6-NEXT: and 4, 4, 7
27844 ; PWR6-NEXT: rldicl 3, 3, 8, 56
27845 ; PWR6-NEXT: li 5, 61
27846 ; PWR6-NEXT: mulld 4, 4, 9
27847 ; PWR6-NEXT: subc 6, 3, 5
27848 ; PWR6-NEXT: rldicl 4, 4, 8, 56
27849 ; PWR6-NEXT: subfe 3, 3, 3
27850 ; PWR6-NEXT: subc 5, 4, 5
27851 ; PWR6-NEXT: subfe 4, 4, 4
27854 ; PWR7-LABEL: ult_61_v2i64:
27856 ; PWR7-NEXT: addi 3, 1, -32
27857 ; PWR7-NEXT: li 5, -1
27858 ; PWR7-NEXT: stxvd2x 34, 0, 3
27859 ; PWR7-NEXT: ld 4, -24(1)
27860 ; PWR7-NEXT: ld 3, -32(1)
27861 ; PWR7-NEXT: popcntd 4, 4
27862 ; PWR7-NEXT: popcntd 3, 3
27863 ; PWR7-NEXT: cmpldi 4, 61
27864 ; PWR7-NEXT: li 4, 0
27865 ; PWR7-NEXT: isellt 6, 5, 4
27866 ; PWR7-NEXT: cmpldi 3, 61
27867 ; PWR7-NEXT: isellt 3, 5, 4
27868 ; PWR7-NEXT: std 6, -8(1)
27869 ; PWR7-NEXT: std 3, -16(1)
27870 ; PWR7-NEXT: addi 3, 1, -16
27871 ; PWR7-NEXT: lxvd2x 34, 0, 3
27874 ; PWR8-LABEL: ult_61_v2i64:
27876 ; PWR8-NEXT: addis 3, 2, .LCPI219_0@toc@ha
27877 ; PWR8-NEXT: vpopcntd 2, 2
27878 ; PWR8-NEXT: addi 3, 3, .LCPI219_0@toc@l
27879 ; PWR8-NEXT: lxvd2x 35, 0, 3
27880 ; PWR8-NEXT: vcmpgtud 2, 3, 2
27883 ; PWR9-LABEL: ult_61_v2i64:
27885 ; PWR9-NEXT: addis 3, 2, .LCPI219_0@toc@ha
27886 ; PWR9-NEXT: vpopcntd 2, 2
27887 ; PWR9-NEXT: addi 3, 3, .LCPI219_0@toc@l
27888 ; PWR9-NEXT: lxv 35, 0(3)
27889 ; PWR9-NEXT: vcmpgtud 2, 3, 2
27891 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
27892 %3 = icmp ult <2 x i64> %2, <i64 61, i64 61>
27893 %4 = sext <2 x i1> %3 to <2 x i64>
27897 define <2 x i64> @ugt_61_v2i64(<2 x i64> %0) {
27898 ; PWR5-LABEL: ugt_61_v2i64:
27900 ; PWR5-NEXT: lis 5, 21845
27901 ; PWR5-NEXT: lis 6, 13107
27902 ; PWR5-NEXT: ori 5, 5, 21845
27903 ; PWR5-NEXT: rotldi 8, 4, 63
27904 ; PWR5-NEXT: rotldi 9, 3, 63
27905 ; PWR5-NEXT: rldimi 5, 5, 32, 0
27906 ; PWR5-NEXT: and 8, 8, 5
27907 ; PWR5-NEXT: and 5, 9, 5
27908 ; PWR5-NEXT: ori 6, 6, 13107
27909 ; PWR5-NEXT: sub 3, 3, 5
27910 ; PWR5-NEXT: rldimi 6, 6, 32, 0
27911 ; PWR5-NEXT: sub 4, 4, 8
27912 ; PWR5-NEXT: and 8, 3, 6
27913 ; PWR5-NEXT: rotldi 3, 3, 62
27914 ; PWR5-NEXT: and 3, 3, 6
27915 ; PWR5-NEXT: lis 7, 3855
27916 ; PWR5-NEXT: and 5, 4, 6
27917 ; PWR5-NEXT: rotldi 4, 4, 62
27918 ; PWR5-NEXT: add 3, 8, 3
27919 ; PWR5-NEXT: lis 9, 257
27920 ; PWR5-NEXT: ori 7, 7, 3855
27921 ; PWR5-NEXT: and 4, 4, 6
27922 ; PWR5-NEXT: rldicl 6, 3, 60, 4
27923 ; PWR5-NEXT: ori 9, 9, 257
27924 ; PWR5-NEXT: rldimi 7, 7, 32, 0
27925 ; PWR5-NEXT: add 4, 5, 4
27926 ; PWR5-NEXT: add 3, 3, 6
27927 ; PWR5-NEXT: rldimi 9, 9, 32, 0
27928 ; PWR5-NEXT: rldicl 5, 4, 60, 4
27929 ; PWR5-NEXT: and 3, 3, 7
27930 ; PWR5-NEXT: add 4, 4, 5
27931 ; PWR5-NEXT: mulld 3, 3, 9
27932 ; PWR5-NEXT: and 4, 4, 7
27933 ; PWR5-NEXT: rldicl 3, 3, 8, 56
27934 ; PWR5-NEXT: mulld 4, 4, 9
27935 ; PWR5-NEXT: li 5, 61
27936 ; PWR5-NEXT: subfic 3, 3, 61
27937 ; PWR5-NEXT: rldicl 4, 4, 8, 56
27938 ; PWR5-NEXT: subfe 3, 5, 5
27939 ; PWR5-NEXT: subfic 4, 4, 61
27940 ; PWR5-NEXT: subfe 4, 5, 5
27943 ; PWR6-LABEL: ugt_61_v2i64:
27945 ; PWR6-NEXT: lis 5, 21845
27946 ; PWR6-NEXT: lis 6, 13107
27947 ; PWR6-NEXT: ori 5, 5, 21845
27948 ; PWR6-NEXT: rotldi 8, 4, 63
27949 ; PWR6-NEXT: rotldi 9, 3, 63
27950 ; PWR6-NEXT: rldimi 5, 5, 32, 0
27951 ; PWR6-NEXT: and 8, 8, 5
27952 ; PWR6-NEXT: and 5, 9, 5
27953 ; PWR6-NEXT: ori 6, 6, 13107
27954 ; PWR6-NEXT: sub 3, 3, 5
27955 ; PWR6-NEXT: rldimi 6, 6, 32, 0
27956 ; PWR6-NEXT: sub 4, 4, 8
27957 ; PWR6-NEXT: and 8, 3, 6
27958 ; PWR6-NEXT: rotldi 3, 3, 62
27959 ; PWR6-NEXT: and 3, 3, 6
27960 ; PWR6-NEXT: lis 7, 3855
27961 ; PWR6-NEXT: and 5, 4, 6
27962 ; PWR6-NEXT: rotldi 4, 4, 62
27963 ; PWR6-NEXT: add 3, 8, 3
27964 ; PWR6-NEXT: lis 9, 257
27965 ; PWR6-NEXT: ori 7, 7, 3855
27966 ; PWR6-NEXT: and 4, 4, 6
27967 ; PWR6-NEXT: rldicl 6, 3, 60, 4
27968 ; PWR6-NEXT: ori 9, 9, 257
27969 ; PWR6-NEXT: rldimi 7, 7, 32, 0
27970 ; PWR6-NEXT: add 4, 5, 4
27971 ; PWR6-NEXT: add 3, 3, 6
27972 ; PWR6-NEXT: rldimi 9, 9, 32, 0
27973 ; PWR6-NEXT: rldicl 5, 4, 60, 4
27974 ; PWR6-NEXT: and 3, 3, 7
27975 ; PWR6-NEXT: add 4, 4, 5
27976 ; PWR6-NEXT: mulld 3, 3, 9
27977 ; PWR6-NEXT: and 4, 4, 7
27978 ; PWR6-NEXT: rldicl 3, 3, 8, 56
27979 ; PWR6-NEXT: mulld 4, 4, 9
27980 ; PWR6-NEXT: li 5, 61
27981 ; PWR6-NEXT: subfic 3, 3, 61
27982 ; PWR6-NEXT: rldicl 4, 4, 8, 56
27983 ; PWR6-NEXT: subfe 3, 5, 5
27984 ; PWR6-NEXT: subfic 4, 4, 61
27985 ; PWR6-NEXT: subfe 4, 5, 5
27988 ; PWR7-LABEL: ugt_61_v2i64:
27990 ; PWR7-NEXT: addi 3, 1, -32
27991 ; PWR7-NEXT: li 5, -1
27992 ; PWR7-NEXT: stxvd2x 34, 0, 3
27993 ; PWR7-NEXT: ld 4, -24(1)
27994 ; PWR7-NEXT: ld 3, -32(1)
27995 ; PWR7-NEXT: popcntd 4, 4
27996 ; PWR7-NEXT: popcntd 3, 3
27997 ; PWR7-NEXT: cmpldi 4, 61
27998 ; PWR7-NEXT: li 4, 0
27999 ; PWR7-NEXT: iselgt 6, 5, 4
28000 ; PWR7-NEXT: cmpldi 3, 61
28001 ; PWR7-NEXT: iselgt 3, 5, 4
28002 ; PWR7-NEXT: std 6, -8(1)
28003 ; PWR7-NEXT: std 3, -16(1)
28004 ; PWR7-NEXT: addi 3, 1, -16
28005 ; PWR7-NEXT: lxvd2x 34, 0, 3
28008 ; PWR8-LABEL: ugt_61_v2i64:
28010 ; PWR8-NEXT: addis 3, 2, .LCPI220_0@toc@ha
28011 ; PWR8-NEXT: vpopcntd 2, 2
28012 ; PWR8-NEXT: addi 3, 3, .LCPI220_0@toc@l
28013 ; PWR8-NEXT: lxvd2x 35, 0, 3
28014 ; PWR8-NEXT: vcmpgtud 2, 2, 3
28017 ; PWR9-LABEL: ugt_61_v2i64:
28019 ; PWR9-NEXT: addis 3, 2, .LCPI220_0@toc@ha
28020 ; PWR9-NEXT: vpopcntd 2, 2
28021 ; PWR9-NEXT: addi 3, 3, .LCPI220_0@toc@l
28022 ; PWR9-NEXT: lxv 35, 0(3)
28023 ; PWR9-NEXT: vcmpgtud 2, 2, 3
28025 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
28026 %3 = icmp ugt <2 x i64> %2, <i64 61, i64 61>
28027 %4 = sext <2 x i1> %3 to <2 x i64>
28031 define <2 x i64> @ult_62_v2i64(<2 x i64> %0) {
28032 ; PWR5-LABEL: ult_62_v2i64:
28034 ; PWR5-NEXT: lis 5, 21845
28035 ; PWR5-NEXT: lis 6, 13107
28036 ; PWR5-NEXT: ori 5, 5, 21845
28037 ; PWR5-NEXT: rotldi 8, 4, 63
28038 ; PWR5-NEXT: rotldi 9, 3, 63
28039 ; PWR5-NEXT: rldimi 5, 5, 32, 0
28040 ; PWR5-NEXT: and 8, 8, 5
28041 ; PWR5-NEXT: and 5, 9, 5
28042 ; PWR5-NEXT: ori 6, 6, 13107
28043 ; PWR5-NEXT: sub 3, 3, 5
28044 ; PWR5-NEXT: rldimi 6, 6, 32, 0
28045 ; PWR5-NEXT: sub 4, 4, 8
28046 ; PWR5-NEXT: and 8, 3, 6
28047 ; PWR5-NEXT: rotldi 3, 3, 62
28048 ; PWR5-NEXT: and 3, 3, 6
28049 ; PWR5-NEXT: lis 7, 3855
28050 ; PWR5-NEXT: and 5, 4, 6
28051 ; PWR5-NEXT: rotldi 4, 4, 62
28052 ; PWR5-NEXT: add 3, 8, 3
28053 ; PWR5-NEXT: lis 9, 257
28054 ; PWR5-NEXT: ori 7, 7, 3855
28055 ; PWR5-NEXT: and 4, 4, 6
28056 ; PWR5-NEXT: rldicl 6, 3, 60, 4
28057 ; PWR5-NEXT: ori 9, 9, 257
28058 ; PWR5-NEXT: rldimi 7, 7, 32, 0
28059 ; PWR5-NEXT: add 4, 5, 4
28060 ; PWR5-NEXT: add 3, 3, 6
28061 ; PWR5-NEXT: rldimi 9, 9, 32, 0
28062 ; PWR5-NEXT: rldicl 5, 4, 60, 4
28063 ; PWR5-NEXT: and 3, 3, 7
28064 ; PWR5-NEXT: add 4, 4, 5
28065 ; PWR5-NEXT: mulld 3, 3, 9
28066 ; PWR5-NEXT: and 4, 4, 7
28067 ; PWR5-NEXT: rldicl 3, 3, 8, 56
28068 ; PWR5-NEXT: li 5, 62
28069 ; PWR5-NEXT: mulld 4, 4, 9
28070 ; PWR5-NEXT: subc 6, 3, 5
28071 ; PWR5-NEXT: rldicl 4, 4, 8, 56
28072 ; PWR5-NEXT: subfe 3, 3, 3
28073 ; PWR5-NEXT: subc 5, 4, 5
28074 ; PWR5-NEXT: subfe 4, 4, 4
28077 ; PWR6-LABEL: ult_62_v2i64:
28079 ; PWR6-NEXT: lis 5, 21845
28080 ; PWR6-NEXT: lis 6, 13107
28081 ; PWR6-NEXT: ori 5, 5, 21845
28082 ; PWR6-NEXT: rotldi 8, 4, 63
28083 ; PWR6-NEXT: rotldi 9, 3, 63
28084 ; PWR6-NEXT: rldimi 5, 5, 32, 0
28085 ; PWR6-NEXT: and 8, 8, 5
28086 ; PWR6-NEXT: and 5, 9, 5
28087 ; PWR6-NEXT: ori 6, 6, 13107
28088 ; PWR6-NEXT: sub 3, 3, 5
28089 ; PWR6-NEXT: rldimi 6, 6, 32, 0
28090 ; PWR6-NEXT: sub 4, 4, 8
28091 ; PWR6-NEXT: and 8, 3, 6
28092 ; PWR6-NEXT: rotldi 3, 3, 62
28093 ; PWR6-NEXT: and 3, 3, 6
28094 ; PWR6-NEXT: lis 7, 3855
28095 ; PWR6-NEXT: and 5, 4, 6
28096 ; PWR6-NEXT: rotldi 4, 4, 62
28097 ; PWR6-NEXT: add 3, 8, 3
28098 ; PWR6-NEXT: lis 9, 257
28099 ; PWR6-NEXT: ori 7, 7, 3855
28100 ; PWR6-NEXT: and 4, 4, 6
28101 ; PWR6-NEXT: rldicl 6, 3, 60, 4
28102 ; PWR6-NEXT: ori 9, 9, 257
28103 ; PWR6-NEXT: rldimi 7, 7, 32, 0
28104 ; PWR6-NEXT: add 4, 5, 4
28105 ; PWR6-NEXT: add 3, 3, 6
28106 ; PWR6-NEXT: rldimi 9, 9, 32, 0
28107 ; PWR6-NEXT: rldicl 5, 4, 60, 4
28108 ; PWR6-NEXT: and 3, 3, 7
28109 ; PWR6-NEXT: add 4, 4, 5
28110 ; PWR6-NEXT: mulld 3, 3, 9
28111 ; PWR6-NEXT: and 4, 4, 7
28112 ; PWR6-NEXT: rldicl 3, 3, 8, 56
28113 ; PWR6-NEXT: li 5, 62
28114 ; PWR6-NEXT: mulld 4, 4, 9
28115 ; PWR6-NEXT: subc 6, 3, 5
28116 ; PWR6-NEXT: rldicl 4, 4, 8, 56
28117 ; PWR6-NEXT: subfe 3, 3, 3
28118 ; PWR6-NEXT: subc 5, 4, 5
28119 ; PWR6-NEXT: subfe 4, 4, 4
28122 ; PWR7-LABEL: ult_62_v2i64:
28124 ; PWR7-NEXT: addi 3, 1, -32
28125 ; PWR7-NEXT: li 5, -1
28126 ; PWR7-NEXT: stxvd2x 34, 0, 3
28127 ; PWR7-NEXT: ld 4, -24(1)
28128 ; PWR7-NEXT: ld 3, -32(1)
28129 ; PWR7-NEXT: popcntd 4, 4
28130 ; PWR7-NEXT: popcntd 3, 3
28131 ; PWR7-NEXT: cmpldi 4, 62
28132 ; PWR7-NEXT: li 4, 0
28133 ; PWR7-NEXT: isellt 6, 5, 4
28134 ; PWR7-NEXT: cmpldi 3, 62
28135 ; PWR7-NEXT: isellt 3, 5, 4
28136 ; PWR7-NEXT: std 6, -8(1)
28137 ; PWR7-NEXT: std 3, -16(1)
28138 ; PWR7-NEXT: addi 3, 1, -16
28139 ; PWR7-NEXT: lxvd2x 34, 0, 3
28142 ; PWR8-LABEL: ult_62_v2i64:
28144 ; PWR8-NEXT: addis 3, 2, .LCPI221_0@toc@ha
28145 ; PWR8-NEXT: vpopcntd 2, 2
28146 ; PWR8-NEXT: addi 3, 3, .LCPI221_0@toc@l
28147 ; PWR8-NEXT: lxvd2x 35, 0, 3
28148 ; PWR8-NEXT: vcmpgtud 2, 3, 2
28151 ; PWR9-LABEL: ult_62_v2i64:
28153 ; PWR9-NEXT: addis 3, 2, .LCPI221_0@toc@ha
28154 ; PWR9-NEXT: vpopcntd 2, 2
28155 ; PWR9-NEXT: addi 3, 3, .LCPI221_0@toc@l
28156 ; PWR9-NEXT: lxv 35, 0(3)
28157 ; PWR9-NEXT: vcmpgtud 2, 3, 2
28159 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
28160 %3 = icmp ult <2 x i64> %2, <i64 62, i64 62>
28161 %4 = sext <2 x i1> %3 to <2 x i64>
28165 define <2 x i64> @ugt_62_v2i64(<2 x i64> %0) {
28166 ; PWR5-LABEL: ugt_62_v2i64:
28168 ; PWR5-NEXT: lis 5, 21845
28169 ; PWR5-NEXT: lis 6, 13107
28170 ; PWR5-NEXT: ori 5, 5, 21845
28171 ; PWR5-NEXT: rotldi 8, 4, 63
28172 ; PWR5-NEXT: rotldi 9, 3, 63
28173 ; PWR5-NEXT: rldimi 5, 5, 32, 0
28174 ; PWR5-NEXT: and 8, 8, 5
28175 ; PWR5-NEXT: and 5, 9, 5
28176 ; PWR5-NEXT: ori 6, 6, 13107
28177 ; PWR5-NEXT: sub 3, 3, 5
28178 ; PWR5-NEXT: rldimi 6, 6, 32, 0
28179 ; PWR5-NEXT: sub 4, 4, 8
28180 ; PWR5-NEXT: and 8, 3, 6
28181 ; PWR5-NEXT: rotldi 3, 3, 62
28182 ; PWR5-NEXT: and 3, 3, 6
28183 ; PWR5-NEXT: lis 7, 3855
28184 ; PWR5-NEXT: and 5, 4, 6
28185 ; PWR5-NEXT: rotldi 4, 4, 62
28186 ; PWR5-NEXT: add 3, 8, 3
28187 ; PWR5-NEXT: lis 9, 257
28188 ; PWR5-NEXT: ori 7, 7, 3855
28189 ; PWR5-NEXT: and 4, 4, 6
28190 ; PWR5-NEXT: rldicl 6, 3, 60, 4
28191 ; PWR5-NEXT: ori 9, 9, 257
28192 ; PWR5-NEXT: rldimi 7, 7, 32, 0
28193 ; PWR5-NEXT: add 4, 5, 4
28194 ; PWR5-NEXT: add 3, 3, 6
28195 ; PWR5-NEXT: rldimi 9, 9, 32, 0
28196 ; PWR5-NEXT: rldicl 5, 4, 60, 4
28197 ; PWR5-NEXT: and 3, 3, 7
28198 ; PWR5-NEXT: add 4, 4, 5
28199 ; PWR5-NEXT: mulld 3, 3, 9
28200 ; PWR5-NEXT: and 4, 4, 7
28201 ; PWR5-NEXT: rldicl 3, 3, 8, 56
28202 ; PWR5-NEXT: mulld 4, 4, 9
28203 ; PWR5-NEXT: li 5, 62
28204 ; PWR5-NEXT: subfic 3, 3, 62
28205 ; PWR5-NEXT: rldicl 4, 4, 8, 56
28206 ; PWR5-NEXT: subfe 3, 5, 5
28207 ; PWR5-NEXT: subfic 4, 4, 62
28208 ; PWR5-NEXT: subfe 4, 5, 5
28211 ; PWR6-LABEL: ugt_62_v2i64:
28213 ; PWR6-NEXT: lis 5, 21845
28214 ; PWR6-NEXT: lis 6, 13107
28215 ; PWR6-NEXT: ori 5, 5, 21845
28216 ; PWR6-NEXT: rotldi 8, 4, 63
28217 ; PWR6-NEXT: rotldi 9, 3, 63
28218 ; PWR6-NEXT: rldimi 5, 5, 32, 0
28219 ; PWR6-NEXT: and 8, 8, 5
28220 ; PWR6-NEXT: and 5, 9, 5
28221 ; PWR6-NEXT: ori 6, 6, 13107
28222 ; PWR6-NEXT: sub 3, 3, 5
28223 ; PWR6-NEXT: rldimi 6, 6, 32, 0
28224 ; PWR6-NEXT: sub 4, 4, 8
28225 ; PWR6-NEXT: and 8, 3, 6
28226 ; PWR6-NEXT: rotldi 3, 3, 62
28227 ; PWR6-NEXT: and 3, 3, 6
28228 ; PWR6-NEXT: lis 7, 3855
28229 ; PWR6-NEXT: and 5, 4, 6
28230 ; PWR6-NEXT: rotldi 4, 4, 62
28231 ; PWR6-NEXT: add 3, 8, 3
28232 ; PWR6-NEXT: lis 9, 257
28233 ; PWR6-NEXT: ori 7, 7, 3855
28234 ; PWR6-NEXT: and 4, 4, 6
28235 ; PWR6-NEXT: rldicl 6, 3, 60, 4
28236 ; PWR6-NEXT: ori 9, 9, 257
28237 ; PWR6-NEXT: rldimi 7, 7, 32, 0
28238 ; PWR6-NEXT: add 4, 5, 4
28239 ; PWR6-NEXT: add 3, 3, 6
28240 ; PWR6-NEXT: rldimi 9, 9, 32, 0
28241 ; PWR6-NEXT: rldicl 5, 4, 60, 4
28242 ; PWR6-NEXT: and 3, 3, 7
28243 ; PWR6-NEXT: add 4, 4, 5
28244 ; PWR6-NEXT: mulld 3, 3, 9
28245 ; PWR6-NEXT: and 4, 4, 7
28246 ; PWR6-NEXT: rldicl 3, 3, 8, 56
28247 ; PWR6-NEXT: mulld 4, 4, 9
28248 ; PWR6-NEXT: li 5, 62
28249 ; PWR6-NEXT: subfic 3, 3, 62
28250 ; PWR6-NEXT: rldicl 4, 4, 8, 56
28251 ; PWR6-NEXT: subfe 3, 5, 5
28252 ; PWR6-NEXT: subfic 4, 4, 62
28253 ; PWR6-NEXT: subfe 4, 5, 5
28256 ; PWR7-LABEL: ugt_62_v2i64:
28258 ; PWR7-NEXT: addi 3, 1, -32
28259 ; PWR7-NEXT: li 5, -1
28260 ; PWR7-NEXT: stxvd2x 34, 0, 3
28261 ; PWR7-NEXT: ld 4, -24(1)
28262 ; PWR7-NEXT: ld 3, -32(1)
28263 ; PWR7-NEXT: popcntd 4, 4
28264 ; PWR7-NEXT: popcntd 3, 3
28265 ; PWR7-NEXT: cmpldi 4, 62
28266 ; PWR7-NEXT: li 4, 0
28267 ; PWR7-NEXT: iselgt 6, 5, 4
28268 ; PWR7-NEXT: cmpldi 3, 62
28269 ; PWR7-NEXT: iselgt 3, 5, 4
28270 ; PWR7-NEXT: std 6, -8(1)
28271 ; PWR7-NEXT: std 3, -16(1)
28272 ; PWR7-NEXT: addi 3, 1, -16
28273 ; PWR7-NEXT: lxvd2x 34, 0, 3
28276 ; PWR8-LABEL: ugt_62_v2i64:
28278 ; PWR8-NEXT: addis 3, 2, .LCPI222_0@toc@ha
28279 ; PWR8-NEXT: vpopcntd 2, 2
28280 ; PWR8-NEXT: addi 3, 3, .LCPI222_0@toc@l
28281 ; PWR8-NEXT: lxvd2x 35, 0, 3
28282 ; PWR8-NEXT: vcmpgtud 2, 2, 3
28285 ; PWR9-LABEL: ugt_62_v2i64:
28287 ; PWR9-NEXT: addis 3, 2, .LCPI222_0@toc@ha
28288 ; PWR9-NEXT: vpopcntd 2, 2
28289 ; PWR9-NEXT: addi 3, 3, .LCPI222_0@toc@l
28290 ; PWR9-NEXT: lxv 35, 0(3)
28291 ; PWR9-NEXT: vcmpgtud 2, 2, 3
28293 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
28294 %3 = icmp ugt <2 x i64> %2, <i64 62, i64 62>
28295 %4 = sext <2 x i1> %3 to <2 x i64>
28299 define <2 x i64> @ult_63_v2i64(<2 x i64> %0) {
28300 ; PWR5-LABEL: ult_63_v2i64:
28302 ; PWR5-NEXT: lis 5, 21845
28303 ; PWR5-NEXT: lis 6, 13107
28304 ; PWR5-NEXT: ori 5, 5, 21845
28305 ; PWR5-NEXT: rotldi 8, 4, 63
28306 ; PWR5-NEXT: rotldi 9, 3, 63
28307 ; PWR5-NEXT: rldimi 5, 5, 32, 0
28308 ; PWR5-NEXT: and 8, 8, 5
28309 ; PWR5-NEXT: and 5, 9, 5
28310 ; PWR5-NEXT: ori 6, 6, 13107
28311 ; PWR5-NEXT: sub 3, 3, 5
28312 ; PWR5-NEXT: rldimi 6, 6, 32, 0
28313 ; PWR5-NEXT: sub 4, 4, 8
28314 ; PWR5-NEXT: and 8, 3, 6
28315 ; PWR5-NEXT: rotldi 3, 3, 62
28316 ; PWR5-NEXT: and 3, 3, 6
28317 ; PWR5-NEXT: lis 7, 3855
28318 ; PWR5-NEXT: and 5, 4, 6
28319 ; PWR5-NEXT: rotldi 4, 4, 62
28320 ; PWR5-NEXT: add 3, 8, 3
28321 ; PWR5-NEXT: lis 9, 257
28322 ; PWR5-NEXT: ori 7, 7, 3855
28323 ; PWR5-NEXT: and 4, 4, 6
28324 ; PWR5-NEXT: rldicl 6, 3, 60, 4
28325 ; PWR5-NEXT: ori 9, 9, 257
28326 ; PWR5-NEXT: rldimi 7, 7, 32, 0
28327 ; PWR5-NEXT: add 4, 5, 4
28328 ; PWR5-NEXT: add 3, 3, 6
28329 ; PWR5-NEXT: rldimi 9, 9, 32, 0
28330 ; PWR5-NEXT: rldicl 5, 4, 60, 4
28331 ; PWR5-NEXT: and 3, 3, 7
28332 ; PWR5-NEXT: add 4, 4, 5
28333 ; PWR5-NEXT: mulld 3, 3, 9
28334 ; PWR5-NEXT: and 4, 4, 7
28335 ; PWR5-NEXT: rldicl 3, 3, 8, 56
28336 ; PWR5-NEXT: li 5, 63
28337 ; PWR5-NEXT: mulld 4, 4, 9
28338 ; PWR5-NEXT: subc 6, 3, 5
28339 ; PWR5-NEXT: rldicl 4, 4, 8, 56
28340 ; PWR5-NEXT: subfe 3, 3, 3
28341 ; PWR5-NEXT: subc 5, 4, 5
28342 ; PWR5-NEXT: subfe 4, 4, 4
28345 ; PWR6-LABEL: ult_63_v2i64:
28347 ; PWR6-NEXT: lis 5, 21845
28348 ; PWR6-NEXT: lis 6, 13107
28349 ; PWR6-NEXT: ori 5, 5, 21845
28350 ; PWR6-NEXT: rotldi 8, 4, 63
28351 ; PWR6-NEXT: rotldi 9, 3, 63
28352 ; PWR6-NEXT: rldimi 5, 5, 32, 0
28353 ; PWR6-NEXT: and 8, 8, 5
28354 ; PWR6-NEXT: and 5, 9, 5
28355 ; PWR6-NEXT: ori 6, 6, 13107
28356 ; PWR6-NEXT: sub 3, 3, 5
28357 ; PWR6-NEXT: rldimi 6, 6, 32, 0
28358 ; PWR6-NEXT: sub 4, 4, 8
28359 ; PWR6-NEXT: and 8, 3, 6
28360 ; PWR6-NEXT: rotldi 3, 3, 62
28361 ; PWR6-NEXT: and 3, 3, 6
28362 ; PWR6-NEXT: lis 7, 3855
28363 ; PWR6-NEXT: and 5, 4, 6
28364 ; PWR6-NEXT: rotldi 4, 4, 62
28365 ; PWR6-NEXT: add 3, 8, 3
28366 ; PWR6-NEXT: lis 9, 257
28367 ; PWR6-NEXT: ori 7, 7, 3855
28368 ; PWR6-NEXT: and 4, 4, 6
28369 ; PWR6-NEXT: rldicl 6, 3, 60, 4
28370 ; PWR6-NEXT: ori 9, 9, 257
28371 ; PWR6-NEXT: rldimi 7, 7, 32, 0
28372 ; PWR6-NEXT: add 4, 5, 4
28373 ; PWR6-NEXT: add 3, 3, 6
28374 ; PWR6-NEXT: rldimi 9, 9, 32, 0
28375 ; PWR6-NEXT: rldicl 5, 4, 60, 4
28376 ; PWR6-NEXT: and 3, 3, 7
28377 ; PWR6-NEXT: add 4, 4, 5
28378 ; PWR6-NEXT: mulld 3, 3, 9
28379 ; PWR6-NEXT: and 4, 4, 7
28380 ; PWR6-NEXT: rldicl 3, 3, 8, 56
28381 ; PWR6-NEXT: li 5, 63
28382 ; PWR6-NEXT: mulld 4, 4, 9
28383 ; PWR6-NEXT: subc 6, 3, 5
28384 ; PWR6-NEXT: rldicl 4, 4, 8, 56
28385 ; PWR6-NEXT: subfe 3, 3, 3
28386 ; PWR6-NEXT: subc 5, 4, 5
28387 ; PWR6-NEXT: subfe 4, 4, 4
28390 ; PWR7-LABEL: ult_63_v2i64:
28392 ; PWR7-NEXT: addi 3, 1, -32
28393 ; PWR7-NEXT: li 5, -1
28394 ; PWR7-NEXT: stxvd2x 34, 0, 3
28395 ; PWR7-NEXT: ld 4, -24(1)
28396 ; PWR7-NEXT: ld 3, -32(1)
28397 ; PWR7-NEXT: popcntd 4, 4
28398 ; PWR7-NEXT: popcntd 3, 3
28399 ; PWR7-NEXT: cmpldi 4, 63
28400 ; PWR7-NEXT: li 4, 0
28401 ; PWR7-NEXT: isellt 6, 5, 4
28402 ; PWR7-NEXT: cmpldi 3, 63
28403 ; PWR7-NEXT: isellt 3, 5, 4
28404 ; PWR7-NEXT: std 6, -8(1)
28405 ; PWR7-NEXT: std 3, -16(1)
28406 ; PWR7-NEXT: addi 3, 1, -16
28407 ; PWR7-NEXT: lxvd2x 34, 0, 3
28410 ; PWR8-LABEL: ult_63_v2i64:
28412 ; PWR8-NEXT: addis 3, 2, .LCPI223_0@toc@ha
28413 ; PWR8-NEXT: vpopcntd 2, 2
28414 ; PWR8-NEXT: addi 3, 3, .LCPI223_0@toc@l
28415 ; PWR8-NEXT: lxvd2x 35, 0, 3
28416 ; PWR8-NEXT: vcmpgtud 2, 3, 2
28419 ; PWR9-LABEL: ult_63_v2i64:
28421 ; PWR9-NEXT: addis 3, 2, .LCPI223_0@toc@ha
28422 ; PWR9-NEXT: vpopcntd 2, 2
28423 ; PWR9-NEXT: addi 3, 3, .LCPI223_0@toc@l
28424 ; PWR9-NEXT: lxv 35, 0(3)
28425 ; PWR9-NEXT: vcmpgtud 2, 3, 2
28427 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
28428 %3 = icmp ult <2 x i64> %2, <i64 63, i64 63>
28429 %4 = sext <2 x i1> %3 to <2 x i64>
28433 declare <16 x i8> @llvm.ctpop.v16i8(<16 x i8>)
28434 declare <8 x i16> @llvm.ctpop.v8i16(<8 x i16>)
28435 declare <4 x i32> @llvm.ctpop.v4i32(<4 x i32>)
28436 declare <2 x i64> @llvm.ctpop.v2i64(<2 x i64>)