[AArch64,ELF] Restrict MOVZ/MOVK to non-PIC large code model (#70178)
[llvm-project.git] / llvm / test / CodeGen / VE / VELIntrinsics / vcmp.ll
blob27bd5ed9a3f64ffbf9d3e872c693b745c2e5a6c0
1 ; RUN: llc < %s -mtriple=ve -mattr=+vpu | FileCheck %s
3 ;;; Test vector compare intrinsic instructions
4 ;;;
5 ;;; Note:
6 ;;;   We test VCMP*vvl, VCMP*vvl_v, VCMP*rvl, VCMP*rvl_v, VCMP*ivl, VCMP*ivl_v,
7 ;;;   VCMP*vvml_v, VCMP*rvml_v, VCMP*ivml_v, PVCMP*vvl, PVCMP*vvl_v, PVCMP*rvl,
8 ;;;   PVCMP*rvl_v, PVCMP*vvml_v, and PVCMP*rvml_v instructions.
10 ; Function Attrs: nounwind readnone
11 define fastcc <256 x double> @vcmpul_vvvl(<256 x double> %0, <256 x double> %1) {
12 ; CHECK-LABEL: vcmpul_vvvl:
13 ; CHECK:       # %bb.0:
14 ; CHECK-NEXT:    lea %s0, 256
15 ; CHECK-NEXT:    lvl %s0
16 ; CHECK-NEXT:    vcmpu.l %v0, %v0, %v1
17 ; CHECK-NEXT:    b.l.t (, %s10)
18   %3 = tail call fast <256 x double> @llvm.ve.vl.vcmpul.vvvl(<256 x double> %0, <256 x double> %1, i32 256)
19   ret <256 x double> %3
22 ; Function Attrs: nounwind readnone
23 declare <256 x double> @llvm.ve.vl.vcmpul.vvvl(<256 x double>, <256 x double>, i32)
25 ; Function Attrs: nounwind readnone
26 define fastcc <256 x double> @vcmpul_vvvvl(<256 x double> %0, <256 x double> %1, <256 x double> %2) {
27 ; CHECK-LABEL: vcmpul_vvvvl:
28 ; CHECK:       # %bb.0:
29 ; CHECK-NEXT:    lea %s0, 128
30 ; CHECK-NEXT:    lvl %s0
31 ; CHECK-NEXT:    vcmpu.l %v2, %v0, %v1
32 ; CHECK-NEXT:    lea %s16, 256
33 ; CHECK-NEXT:    lvl %s16
34 ; CHECK-NEXT:    vor %v0, (0)1, %v2
35 ; CHECK-NEXT:    b.l.t (, %s10)
36   %4 = tail call fast <256 x double> @llvm.ve.vl.vcmpul.vvvvl(<256 x double> %0, <256 x double> %1, <256 x double> %2, i32 128)
37   ret <256 x double> %4
40 ; Function Attrs: nounwind readnone
41 declare <256 x double> @llvm.ve.vl.vcmpul.vvvvl(<256 x double>, <256 x double>, <256 x double>, i32)
43 ; Function Attrs: nounwind readnone
44 define fastcc <256 x double> @vcmpul_vsvl(i64 %0, <256 x double> %1) {
45 ; CHECK-LABEL: vcmpul_vsvl:
46 ; CHECK:       # %bb.0:
47 ; CHECK-NEXT:    lea %s1, 256
48 ; CHECK-NEXT:    lvl %s1
49 ; CHECK-NEXT:    vcmpu.l %v0, %s0, %v0
50 ; CHECK-NEXT:    b.l.t (, %s10)
51   %3 = tail call fast <256 x double> @llvm.ve.vl.vcmpul.vsvl(i64 %0, <256 x double> %1, i32 256)
52   ret <256 x double> %3
55 ; Function Attrs: nounwind readnone
56 declare <256 x double> @llvm.ve.vl.vcmpul.vsvl(i64, <256 x double>, i32)
58 ; Function Attrs: nounwind readnone
59 define fastcc <256 x double> @vcmpul_vsvvl(i64 %0, <256 x double> %1, <256 x double> %2) {
60 ; CHECK-LABEL: vcmpul_vsvvl:
61 ; CHECK:       # %bb.0:
62 ; CHECK-NEXT:    lea %s1, 128
63 ; CHECK-NEXT:    lvl %s1
64 ; CHECK-NEXT:    vcmpu.l %v1, %s0, %v0
65 ; CHECK-NEXT:    lea %s16, 256
66 ; CHECK-NEXT:    lvl %s16
67 ; CHECK-NEXT:    vor %v0, (0)1, %v1
68 ; CHECK-NEXT:    b.l.t (, %s10)
69   %4 = tail call fast <256 x double> @llvm.ve.vl.vcmpul.vsvvl(i64 %0, <256 x double> %1, <256 x double> %2, i32 128)
70   ret <256 x double> %4
73 ; Function Attrs: nounwind readnone
74 declare <256 x double> @llvm.ve.vl.vcmpul.vsvvl(i64, <256 x double>, <256 x double>, i32)
76 ; Function Attrs: nounwind readnone
77 define fastcc <256 x double> @vcmpul_vsvl_imm(<256 x double> %0) {
78 ; CHECK-LABEL: vcmpul_vsvl_imm:
79 ; CHECK:       # %bb.0:
80 ; CHECK-NEXT:    lea %s0, 256
81 ; CHECK-NEXT:    lvl %s0
82 ; CHECK-NEXT:    vcmpu.l %v0, 8, %v0
83 ; CHECK-NEXT:    b.l.t (, %s10)
84   %2 = tail call fast <256 x double> @llvm.ve.vl.vcmpul.vsvl(i64 8, <256 x double> %0, i32 256)
85   ret <256 x double> %2
88 ; Function Attrs: nounwind readnone
89 define fastcc <256 x double> @vcmpul_vsvvl_imm(<256 x double> %0, <256 x double> %1) {
90 ; CHECK-LABEL: vcmpul_vsvvl_imm:
91 ; CHECK:       # %bb.0:
92 ; CHECK-NEXT:    lea %s0, 128
93 ; CHECK-NEXT:    lvl %s0
94 ; CHECK-NEXT:    vcmpu.l %v1, 8, %v0
95 ; CHECK-NEXT:    lea %s16, 256
96 ; CHECK-NEXT:    lvl %s16
97 ; CHECK-NEXT:    vor %v0, (0)1, %v1
98 ; CHECK-NEXT:    b.l.t (, %s10)
99   %3 = tail call fast <256 x double> @llvm.ve.vl.vcmpul.vsvvl(i64 8, <256 x double> %0, <256 x double> %1, i32 128)
100   ret <256 x double> %3
103 ; Function Attrs: nounwind readnone
104 define fastcc <256 x double> @vcmpul_vvvmvl(<256 x double> %0, <256 x double> %1, <256 x i1> %2, <256 x double> %3) {
105 ; CHECK-LABEL: vcmpul_vvvmvl:
106 ; CHECK:       # %bb.0:
107 ; CHECK-NEXT:    lea %s0, 128
108 ; CHECK-NEXT:    lvl %s0
109 ; CHECK-NEXT:    vcmpu.l %v2, %v0, %v1, %vm1
110 ; CHECK-NEXT:    lea %s16, 256
111 ; CHECK-NEXT:    lvl %s16
112 ; CHECK-NEXT:    vor %v0, (0)1, %v2
113 ; CHECK-NEXT:    b.l.t (, %s10)
114   %5 = tail call fast <256 x double> @llvm.ve.vl.vcmpul.vvvmvl(<256 x double> %0, <256 x double> %1, <256 x i1> %2, <256 x double> %3, i32 128)
115   ret <256 x double> %5
118 ; Function Attrs: nounwind readnone
119 declare <256 x double> @llvm.ve.vl.vcmpul.vvvmvl(<256 x double>, <256 x double>, <256 x i1>, <256 x double>, i32)
121 ; Function Attrs: nounwind readnone
122 define fastcc <256 x double> @vcmpul_vsvmvl(i64 %0, <256 x double> %1, <256 x i1> %2, <256 x double> %3) {
123 ; CHECK-LABEL: vcmpul_vsvmvl:
124 ; CHECK:       # %bb.0:
125 ; CHECK-NEXT:    lea %s1, 128
126 ; CHECK-NEXT:    lvl %s1
127 ; CHECK-NEXT:    vcmpu.l %v1, %s0, %v0, %vm1
128 ; CHECK-NEXT:    lea %s16, 256
129 ; CHECK-NEXT:    lvl %s16
130 ; CHECK-NEXT:    vor %v0, (0)1, %v1
131 ; CHECK-NEXT:    b.l.t (, %s10)
132   %5 = tail call fast <256 x double> @llvm.ve.vl.vcmpul.vsvmvl(i64 %0, <256 x double> %1, <256 x i1> %2, <256 x double> %3, i32 128)
133   ret <256 x double> %5
136 ; Function Attrs: nounwind readnone
137 declare <256 x double> @llvm.ve.vl.vcmpul.vsvmvl(i64, <256 x double>, <256 x i1>, <256 x double>, i32)
139 ; Function Attrs: nounwind readnone
140 define fastcc <256 x double> @vcmpul_vsvmvl_imm(<256 x double> %0, <256 x i1> %1, <256 x double> %2) {
141 ; CHECK-LABEL: vcmpul_vsvmvl_imm:
142 ; CHECK:       # %bb.0:
143 ; CHECK-NEXT:    lea %s0, 128
144 ; CHECK-NEXT:    lvl %s0
145 ; CHECK-NEXT:    vcmpu.l %v1, 8, %v0, %vm1
146 ; CHECK-NEXT:    lea %s16, 256
147 ; CHECK-NEXT:    lvl %s16
148 ; CHECK-NEXT:    vor %v0, (0)1, %v1
149 ; CHECK-NEXT:    b.l.t (, %s10)
150   %4 = tail call fast <256 x double> @llvm.ve.vl.vcmpul.vsvmvl(i64 8, <256 x double> %0, <256 x i1> %1, <256 x double> %2, i32 128)
151   ret <256 x double> %4
154 ; Function Attrs: nounwind readnone
155 define fastcc <256 x double> @vcmpuw_vvvl(<256 x double> %0, <256 x double> %1) {
156 ; CHECK-LABEL: vcmpuw_vvvl:
157 ; CHECK:       # %bb.0:
158 ; CHECK-NEXT:    lea %s0, 256
159 ; CHECK-NEXT:    lvl %s0
160 ; CHECK-NEXT:    vcmpu.w %v0, %v0, %v1
161 ; CHECK-NEXT:    b.l.t (, %s10)
162   %3 = tail call fast <256 x double> @llvm.ve.vl.vcmpuw.vvvl(<256 x double> %0, <256 x double> %1, i32 256)
163   ret <256 x double> %3
166 ; Function Attrs: nounwind readnone
167 declare <256 x double> @llvm.ve.vl.vcmpuw.vvvl(<256 x double>, <256 x double>, i32)
169 ; Function Attrs: nounwind readnone
170 define fastcc <256 x double> @vcmpuw_vvvvl(<256 x double> %0, <256 x double> %1, <256 x double> %2) {
171 ; CHECK-LABEL: vcmpuw_vvvvl:
172 ; CHECK:       # %bb.0:
173 ; CHECK-NEXT:    lea %s0, 128
174 ; CHECK-NEXT:    lvl %s0
175 ; CHECK-NEXT:    vcmpu.w %v2, %v0, %v1
176 ; CHECK-NEXT:    lea %s16, 256
177 ; CHECK-NEXT:    lvl %s16
178 ; CHECK-NEXT:    vor %v0, (0)1, %v2
179 ; CHECK-NEXT:    b.l.t (, %s10)
180   %4 = tail call fast <256 x double> @llvm.ve.vl.vcmpuw.vvvvl(<256 x double> %0, <256 x double> %1, <256 x double> %2, i32 128)
181   ret <256 x double> %4
184 ; Function Attrs: nounwind readnone
185 declare <256 x double> @llvm.ve.vl.vcmpuw.vvvvl(<256 x double>, <256 x double>, <256 x double>, i32)
187 ; Function Attrs: nounwind readnone
188 define fastcc <256 x double> @vcmpuw_vsvl(i32 signext %0, <256 x double> %1) {
189 ; CHECK-LABEL: vcmpuw_vsvl:
190 ; CHECK:       # %bb.0:
191 ; CHECK-NEXT:    and %s0, %s0, (32)0
192 ; CHECK-NEXT:    lea %s1, 256
193 ; CHECK-NEXT:    lvl %s1
194 ; CHECK-NEXT:    vcmpu.w %v0, %s0, %v0
195 ; CHECK-NEXT:    b.l.t (, %s10)
196   %3 = tail call fast <256 x double> @llvm.ve.vl.vcmpuw.vsvl(i32 %0, <256 x double> %1, i32 256)
197   ret <256 x double> %3
200 ; Function Attrs: nounwind readnone
201 declare <256 x double> @llvm.ve.vl.vcmpuw.vsvl(i32, <256 x double>, i32)
203 ; Function Attrs: nounwind readnone
204 define fastcc <256 x double> @vcmpuw_vsvvl(i32 signext %0, <256 x double> %1, <256 x double> %2) {
205 ; CHECK-LABEL: vcmpuw_vsvvl:
206 ; CHECK:       # %bb.0:
207 ; CHECK-NEXT:    and %s0, %s0, (32)0
208 ; CHECK-NEXT:    lea %s1, 128
209 ; CHECK-NEXT:    lvl %s1
210 ; CHECK-NEXT:    vcmpu.w %v1, %s0, %v0
211 ; CHECK-NEXT:    lea %s16, 256
212 ; CHECK-NEXT:    lvl %s16
213 ; CHECK-NEXT:    vor %v0, (0)1, %v1
214 ; CHECK-NEXT:    b.l.t (, %s10)
215   %4 = tail call fast <256 x double> @llvm.ve.vl.vcmpuw.vsvvl(i32 %0, <256 x double> %1, <256 x double> %2, i32 128)
216   ret <256 x double> %4
219 ; Function Attrs: nounwind readnone
220 declare <256 x double> @llvm.ve.vl.vcmpuw.vsvvl(i32, <256 x double>, <256 x double>, i32)
222 ; Function Attrs: nounwind readnone
223 define fastcc <256 x double> @vcmpuw_vsvl_imm(<256 x double> %0) {
224 ; CHECK-LABEL: vcmpuw_vsvl_imm:
225 ; CHECK:       # %bb.0:
226 ; CHECK-NEXT:    lea %s0, 256
227 ; CHECK-NEXT:    lvl %s0
228 ; CHECK-NEXT:    vcmpu.w %v0, 8, %v0
229 ; CHECK-NEXT:    b.l.t (, %s10)
230   %2 = tail call fast <256 x double> @llvm.ve.vl.vcmpuw.vsvl(i32 8, <256 x double> %0, i32 256)
231   ret <256 x double> %2
234 ; Function Attrs: nounwind readnone
235 define fastcc <256 x double> @vcmpuw_vsvvl_imm(<256 x double> %0, <256 x double> %1) {
236 ; CHECK-LABEL: vcmpuw_vsvvl_imm:
237 ; CHECK:       # %bb.0:
238 ; CHECK-NEXT:    lea %s0, 128
239 ; CHECK-NEXT:    lvl %s0
240 ; CHECK-NEXT:    vcmpu.w %v1, 8, %v0
241 ; CHECK-NEXT:    lea %s16, 256
242 ; CHECK-NEXT:    lvl %s16
243 ; CHECK-NEXT:    vor %v0, (0)1, %v1
244 ; CHECK-NEXT:    b.l.t (, %s10)
245   %3 = tail call fast <256 x double> @llvm.ve.vl.vcmpuw.vsvvl(i32 8, <256 x double> %0, <256 x double> %1, i32 128)
246   ret <256 x double> %3
249 ; Function Attrs: nounwind readnone
250 define fastcc <256 x double> @vcmpuw_vvvmvl(<256 x double> %0, <256 x double> %1, <256 x i1> %2, <256 x double> %3) {
251 ; CHECK-LABEL: vcmpuw_vvvmvl:
252 ; CHECK:       # %bb.0:
253 ; CHECK-NEXT:    lea %s0, 128
254 ; CHECK-NEXT:    lvl %s0
255 ; CHECK-NEXT:    vcmpu.w %v2, %v0, %v1, %vm1
256 ; CHECK-NEXT:    lea %s16, 256
257 ; CHECK-NEXT:    lvl %s16
258 ; CHECK-NEXT:    vor %v0, (0)1, %v2
259 ; CHECK-NEXT:    b.l.t (, %s10)
260   %5 = tail call fast <256 x double> @llvm.ve.vl.vcmpuw.vvvmvl(<256 x double> %0, <256 x double> %1, <256 x i1> %2, <256 x double> %3, i32 128)
261   ret <256 x double> %5
264 ; Function Attrs: nounwind readnone
265 declare <256 x double> @llvm.ve.vl.vcmpuw.vvvmvl(<256 x double>, <256 x double>, <256 x i1>, <256 x double>, i32)
267 ; Function Attrs: nounwind readnone
268 define fastcc <256 x double> @vcmpuw_vsvmvl(i32 signext %0, <256 x double> %1, <256 x i1> %2, <256 x double> %3) {
269 ; CHECK-LABEL: vcmpuw_vsvmvl:
270 ; CHECK:       # %bb.0:
271 ; CHECK-NEXT:    and %s0, %s0, (32)0
272 ; CHECK-NEXT:    lea %s1, 128
273 ; CHECK-NEXT:    lvl %s1
274 ; CHECK-NEXT:    vcmpu.w %v1, %s0, %v0, %vm1
275 ; CHECK-NEXT:    lea %s16, 256
276 ; CHECK-NEXT:    lvl %s16
277 ; CHECK-NEXT:    vor %v0, (0)1, %v1
278 ; CHECK-NEXT:    b.l.t (, %s10)
279   %5 = tail call fast <256 x double> @llvm.ve.vl.vcmpuw.vsvmvl(i32 %0, <256 x double> %1, <256 x i1> %2, <256 x double> %3, i32 128)
280   ret <256 x double> %5
283 ; Function Attrs: nounwind readnone
284 declare <256 x double> @llvm.ve.vl.vcmpuw.vsvmvl(i32, <256 x double>, <256 x i1>, <256 x double>, i32)
286 ; Function Attrs: nounwind readnone
287 define fastcc <256 x double> @vcmpuw_vsvmvl_imm(<256 x double> %0, <256 x i1> %1, <256 x double> %2) {
288 ; CHECK-LABEL: vcmpuw_vsvmvl_imm:
289 ; CHECK:       # %bb.0:
290 ; CHECK-NEXT:    lea %s0, 128
291 ; CHECK-NEXT:    lvl %s0
292 ; CHECK-NEXT:    vcmpu.w %v1, 8, %v0, %vm1
293 ; CHECK-NEXT:    lea %s16, 256
294 ; CHECK-NEXT:    lvl %s16
295 ; CHECK-NEXT:    vor %v0, (0)1, %v1
296 ; CHECK-NEXT:    b.l.t (, %s10)
297   %4 = tail call fast <256 x double> @llvm.ve.vl.vcmpuw.vsvmvl(i32 8, <256 x double> %0, <256 x i1> %1, <256 x double> %2, i32 128)
298   ret <256 x double> %4
301 ; Function Attrs: nounwind readnone
302 define fastcc <256 x double> @vcmpswsx_vvvl(<256 x double> %0, <256 x double> %1) {
303 ; CHECK-LABEL: vcmpswsx_vvvl:
304 ; CHECK:       # %bb.0:
305 ; CHECK-NEXT:    lea %s0, 256
306 ; CHECK-NEXT:    lvl %s0
307 ; CHECK-NEXT:    vcmps.w.sx %v0, %v0, %v1
308 ; CHECK-NEXT:    b.l.t (, %s10)
309   %3 = tail call fast <256 x double> @llvm.ve.vl.vcmpswsx.vvvl(<256 x double> %0, <256 x double> %1, i32 256)
310   ret <256 x double> %3
313 ; Function Attrs: nounwind readnone
314 declare <256 x double> @llvm.ve.vl.vcmpswsx.vvvl(<256 x double>, <256 x double>, i32)
316 ; Function Attrs: nounwind readnone
317 define fastcc <256 x double> @vcmpswsx_vvvvl(<256 x double> %0, <256 x double> %1, <256 x double> %2) {
318 ; CHECK-LABEL: vcmpswsx_vvvvl:
319 ; CHECK:       # %bb.0:
320 ; CHECK-NEXT:    lea %s0, 128
321 ; CHECK-NEXT:    lvl %s0
322 ; CHECK-NEXT:    vcmps.w.sx %v2, %v0, %v1
323 ; CHECK-NEXT:    lea %s16, 256
324 ; CHECK-NEXT:    lvl %s16
325 ; CHECK-NEXT:    vor %v0, (0)1, %v2
326 ; CHECK-NEXT:    b.l.t (, %s10)
327   %4 = tail call fast <256 x double> @llvm.ve.vl.vcmpswsx.vvvvl(<256 x double> %0, <256 x double> %1, <256 x double> %2, i32 128)
328   ret <256 x double> %4
331 ; Function Attrs: nounwind readnone
332 declare <256 x double> @llvm.ve.vl.vcmpswsx.vvvvl(<256 x double>, <256 x double>, <256 x double>, i32)
334 ; Function Attrs: nounwind readnone
335 define fastcc <256 x double> @vcmpswsx_vsvl(i32 signext %0, <256 x double> %1) {
336 ; CHECK-LABEL: vcmpswsx_vsvl:
337 ; CHECK:       # %bb.0:
338 ; CHECK-NEXT:    and %s0, %s0, (32)0
339 ; CHECK-NEXT:    lea %s1, 256
340 ; CHECK-NEXT:    lvl %s1
341 ; CHECK-NEXT:    vcmps.w.sx %v0, %s0, %v0
342 ; CHECK-NEXT:    b.l.t (, %s10)
343   %3 = tail call fast <256 x double> @llvm.ve.vl.vcmpswsx.vsvl(i32 %0, <256 x double> %1, i32 256)
344   ret <256 x double> %3
347 ; Function Attrs: nounwind readnone
348 declare <256 x double> @llvm.ve.vl.vcmpswsx.vsvl(i32, <256 x double>, i32)
350 ; Function Attrs: nounwind readnone
351 define fastcc <256 x double> @vcmpswsx_vsvvl(i32 signext %0, <256 x double> %1, <256 x double> %2) {
352 ; CHECK-LABEL: vcmpswsx_vsvvl:
353 ; CHECK:       # %bb.0:
354 ; CHECK-NEXT:    and %s0, %s0, (32)0
355 ; CHECK-NEXT:    lea %s1, 128
356 ; CHECK-NEXT:    lvl %s1
357 ; CHECK-NEXT:    vcmps.w.sx %v1, %s0, %v0
358 ; CHECK-NEXT:    lea %s16, 256
359 ; CHECK-NEXT:    lvl %s16
360 ; CHECK-NEXT:    vor %v0, (0)1, %v1
361 ; CHECK-NEXT:    b.l.t (, %s10)
362   %4 = tail call fast <256 x double> @llvm.ve.vl.vcmpswsx.vsvvl(i32 %0, <256 x double> %1, <256 x double> %2, i32 128)
363   ret <256 x double> %4
366 ; Function Attrs: nounwind readnone
367 declare <256 x double> @llvm.ve.vl.vcmpswsx.vsvvl(i32, <256 x double>, <256 x double>, i32)
369 ; Function Attrs: nounwind readnone
370 define fastcc <256 x double> @vcmpswsx_vsvl_imm(<256 x double> %0) {
371 ; CHECK-LABEL: vcmpswsx_vsvl_imm:
372 ; CHECK:       # %bb.0:
373 ; CHECK-NEXT:    lea %s0, 256
374 ; CHECK-NEXT:    lvl %s0
375 ; CHECK-NEXT:    vcmps.w.sx %v0, 8, %v0
376 ; CHECK-NEXT:    b.l.t (, %s10)
377   %2 = tail call fast <256 x double> @llvm.ve.vl.vcmpswsx.vsvl(i32 8, <256 x double> %0, i32 256)
378   ret <256 x double> %2
381 ; Function Attrs: nounwind readnone
382 define fastcc <256 x double> @vcmpswsx_vsvvl_imm(<256 x double> %0, <256 x double> %1) {
383 ; CHECK-LABEL: vcmpswsx_vsvvl_imm:
384 ; CHECK:       # %bb.0:
385 ; CHECK-NEXT:    lea %s0, 128
386 ; CHECK-NEXT:    lvl %s0
387 ; CHECK-NEXT:    vcmps.w.sx %v1, 8, %v0
388 ; CHECK-NEXT:    lea %s16, 256
389 ; CHECK-NEXT:    lvl %s16
390 ; CHECK-NEXT:    vor %v0, (0)1, %v1
391 ; CHECK-NEXT:    b.l.t (, %s10)
392   %3 = tail call fast <256 x double> @llvm.ve.vl.vcmpswsx.vsvvl(i32 8, <256 x double> %0, <256 x double> %1, i32 128)
393   ret <256 x double> %3
396 ; Function Attrs: nounwind readnone
397 define fastcc <256 x double> @vcmpswsx_vvvmvl(<256 x double> %0, <256 x double> %1, <256 x i1> %2, <256 x double> %3) {
398 ; CHECK-LABEL: vcmpswsx_vvvmvl:
399 ; CHECK:       # %bb.0:
400 ; CHECK-NEXT:    lea %s0, 128
401 ; CHECK-NEXT:    lvl %s0
402 ; CHECK-NEXT:    vcmps.w.sx %v2, %v0, %v1, %vm1
403 ; CHECK-NEXT:    lea %s16, 256
404 ; CHECK-NEXT:    lvl %s16
405 ; CHECK-NEXT:    vor %v0, (0)1, %v2
406 ; CHECK-NEXT:    b.l.t (, %s10)
407   %5 = tail call fast <256 x double> @llvm.ve.vl.vcmpswsx.vvvmvl(<256 x double> %0, <256 x double> %1, <256 x i1> %2, <256 x double> %3, i32 128)
408   ret <256 x double> %5
411 ; Function Attrs: nounwind readnone
412 declare <256 x double> @llvm.ve.vl.vcmpswsx.vvvmvl(<256 x double>, <256 x double>, <256 x i1>, <256 x double>, i32)
414 ; Function Attrs: nounwind readnone
415 define fastcc <256 x double> @vcmpswsx_vsvmvl(i32 signext %0, <256 x double> %1, <256 x i1> %2, <256 x double> %3) {
416 ; CHECK-LABEL: vcmpswsx_vsvmvl:
417 ; CHECK:       # %bb.0:
418 ; CHECK-NEXT:    and %s0, %s0, (32)0
419 ; CHECK-NEXT:    lea %s1, 128
420 ; CHECK-NEXT:    lvl %s1
421 ; CHECK-NEXT:    vcmps.w.sx %v1, %s0, %v0, %vm1
422 ; CHECK-NEXT:    lea %s16, 256
423 ; CHECK-NEXT:    lvl %s16
424 ; CHECK-NEXT:    vor %v0, (0)1, %v1
425 ; CHECK-NEXT:    b.l.t (, %s10)
426   %5 = tail call fast <256 x double> @llvm.ve.vl.vcmpswsx.vsvmvl(i32 %0, <256 x double> %1, <256 x i1> %2, <256 x double> %3, i32 128)
427   ret <256 x double> %5
430 ; Function Attrs: nounwind readnone
431 declare <256 x double> @llvm.ve.vl.vcmpswsx.vsvmvl(i32, <256 x double>, <256 x i1>, <256 x double>, i32)
433 ; Function Attrs: nounwind readnone
434 define fastcc <256 x double> @vcmpswsx_vsvmvl_imm(<256 x double> %0, <256 x i1> %1, <256 x double> %2) {
435 ; CHECK-LABEL: vcmpswsx_vsvmvl_imm:
436 ; CHECK:       # %bb.0:
437 ; CHECK-NEXT:    lea %s0, 128
438 ; CHECK-NEXT:    lvl %s0
439 ; CHECK-NEXT:    vcmps.w.sx %v1, 8, %v0, %vm1
440 ; CHECK-NEXT:    lea %s16, 256
441 ; CHECK-NEXT:    lvl %s16
442 ; CHECK-NEXT:    vor %v0, (0)1, %v1
443 ; CHECK-NEXT:    b.l.t (, %s10)
444   %4 = tail call fast <256 x double> @llvm.ve.vl.vcmpswsx.vsvmvl(i32 8, <256 x double> %0, <256 x i1> %1, <256 x double> %2, i32 128)
445   ret <256 x double> %4
448 ; Function Attrs: nounwind readnone
449 define fastcc <256 x double> @vcmpswzx_vvvl(<256 x double> %0, <256 x double> %1) {
450 ; CHECK-LABEL: vcmpswzx_vvvl:
451 ; CHECK:       # %bb.0:
452 ; CHECK-NEXT:    lea %s0, 256
453 ; CHECK-NEXT:    lvl %s0
454 ; CHECK-NEXT:    vcmps.w.zx %v0, %v0, %v1
455 ; CHECK-NEXT:    b.l.t (, %s10)
456   %3 = tail call fast <256 x double> @llvm.ve.vl.vcmpswzx.vvvl(<256 x double> %0, <256 x double> %1, i32 256)
457   ret <256 x double> %3
460 ; Function Attrs: nounwind readnone
461 declare <256 x double> @llvm.ve.vl.vcmpswzx.vvvl(<256 x double>, <256 x double>, i32)
463 ; Function Attrs: nounwind readnone
464 define fastcc <256 x double> @vcmpswzx_vvvvl(<256 x double> %0, <256 x double> %1, <256 x double> %2) {
465 ; CHECK-LABEL: vcmpswzx_vvvvl:
466 ; CHECK:       # %bb.0:
467 ; CHECK-NEXT:    lea %s0, 128
468 ; CHECK-NEXT:    lvl %s0
469 ; CHECK-NEXT:    vcmps.w.zx %v2, %v0, %v1
470 ; CHECK-NEXT:    lea %s16, 256
471 ; CHECK-NEXT:    lvl %s16
472 ; CHECK-NEXT:    vor %v0, (0)1, %v2
473 ; CHECK-NEXT:    b.l.t (, %s10)
474   %4 = tail call fast <256 x double> @llvm.ve.vl.vcmpswzx.vvvvl(<256 x double> %0, <256 x double> %1, <256 x double> %2, i32 128)
475   ret <256 x double> %4
478 ; Function Attrs: nounwind readnone
479 declare <256 x double> @llvm.ve.vl.vcmpswzx.vvvvl(<256 x double>, <256 x double>, <256 x double>, i32)
481 ; Function Attrs: nounwind readnone
482 define fastcc <256 x double> @vcmpswzx_vsvl(i32 signext %0, <256 x double> %1) {
483 ; CHECK-LABEL: vcmpswzx_vsvl:
484 ; CHECK:       # %bb.0:
485 ; CHECK-NEXT:    and %s0, %s0, (32)0
486 ; CHECK-NEXT:    lea %s1, 256
487 ; CHECK-NEXT:    lvl %s1
488 ; CHECK-NEXT:    vcmps.w.zx %v0, %s0, %v0
489 ; CHECK-NEXT:    b.l.t (, %s10)
490   %3 = tail call fast <256 x double> @llvm.ve.vl.vcmpswzx.vsvl(i32 %0, <256 x double> %1, i32 256)
491   ret <256 x double> %3
494 ; Function Attrs: nounwind readnone
495 declare <256 x double> @llvm.ve.vl.vcmpswzx.vsvl(i32, <256 x double>, i32)
497 ; Function Attrs: nounwind readnone
498 define fastcc <256 x double> @vcmpswzx_vsvvl(i32 signext %0, <256 x double> %1, <256 x double> %2) {
499 ; CHECK-LABEL: vcmpswzx_vsvvl:
500 ; CHECK:       # %bb.0:
501 ; CHECK-NEXT:    and %s0, %s0, (32)0
502 ; CHECK-NEXT:    lea %s1, 128
503 ; CHECK-NEXT:    lvl %s1
504 ; CHECK-NEXT:    vcmps.w.zx %v1, %s0, %v0
505 ; CHECK-NEXT:    lea %s16, 256
506 ; CHECK-NEXT:    lvl %s16
507 ; CHECK-NEXT:    vor %v0, (0)1, %v1
508 ; CHECK-NEXT:    b.l.t (, %s10)
509   %4 = tail call fast <256 x double> @llvm.ve.vl.vcmpswzx.vsvvl(i32 %0, <256 x double> %1, <256 x double> %2, i32 128)
510   ret <256 x double> %4
513 ; Function Attrs: nounwind readnone
514 declare <256 x double> @llvm.ve.vl.vcmpswzx.vsvvl(i32, <256 x double>, <256 x double>, i32)
516 ; Function Attrs: nounwind readnone
517 define fastcc <256 x double> @vcmpswzx_vsvl_imm(<256 x double> %0) {
518 ; CHECK-LABEL: vcmpswzx_vsvl_imm:
519 ; CHECK:       # %bb.0:
520 ; CHECK-NEXT:    lea %s0, 256
521 ; CHECK-NEXT:    lvl %s0
522 ; CHECK-NEXT:    vcmps.w.zx %v0, 8, %v0
523 ; CHECK-NEXT:    b.l.t (, %s10)
524   %2 = tail call fast <256 x double> @llvm.ve.vl.vcmpswzx.vsvl(i32 8, <256 x double> %0, i32 256)
525   ret <256 x double> %2
528 ; Function Attrs: nounwind readnone
529 define fastcc <256 x double> @vcmpswzx_vsvvl_imm(<256 x double> %0, <256 x double> %1) {
530 ; CHECK-LABEL: vcmpswzx_vsvvl_imm:
531 ; CHECK:       # %bb.0:
532 ; CHECK-NEXT:    lea %s0, 128
533 ; CHECK-NEXT:    lvl %s0
534 ; CHECK-NEXT:    vcmps.w.zx %v1, 8, %v0
535 ; CHECK-NEXT:    lea %s16, 256
536 ; CHECK-NEXT:    lvl %s16
537 ; CHECK-NEXT:    vor %v0, (0)1, %v1
538 ; CHECK-NEXT:    b.l.t (, %s10)
539   %3 = tail call fast <256 x double> @llvm.ve.vl.vcmpswzx.vsvvl(i32 8, <256 x double> %0, <256 x double> %1, i32 128)
540   ret <256 x double> %3
543 ; Function Attrs: nounwind readnone
544 define fastcc <256 x double> @vcmpswzx_vvvmvl(<256 x double> %0, <256 x double> %1, <256 x i1> %2, <256 x double> %3) {
545 ; CHECK-LABEL: vcmpswzx_vvvmvl:
546 ; CHECK:       # %bb.0:
547 ; CHECK-NEXT:    lea %s0, 128
548 ; CHECK-NEXT:    lvl %s0
549 ; CHECK-NEXT:    vcmps.w.zx %v2, %v0, %v1, %vm1
550 ; CHECK-NEXT:    lea %s16, 256
551 ; CHECK-NEXT:    lvl %s16
552 ; CHECK-NEXT:    vor %v0, (0)1, %v2
553 ; CHECK-NEXT:    b.l.t (, %s10)
554   %5 = tail call fast <256 x double> @llvm.ve.vl.vcmpswzx.vvvmvl(<256 x double> %0, <256 x double> %1, <256 x i1> %2, <256 x double> %3, i32 128)
555   ret <256 x double> %5
558 ; Function Attrs: nounwind readnone
559 declare <256 x double> @llvm.ve.vl.vcmpswzx.vvvmvl(<256 x double>, <256 x double>, <256 x i1>, <256 x double>, i32)
561 ; Function Attrs: nounwind readnone
562 define fastcc <256 x double> @vcmpswzx_vsvmvl(i32 signext %0, <256 x double> %1, <256 x i1> %2, <256 x double> %3) {
563 ; CHECK-LABEL: vcmpswzx_vsvmvl:
564 ; CHECK:       # %bb.0:
565 ; CHECK-NEXT:    and %s0, %s0, (32)0
566 ; CHECK-NEXT:    lea %s1, 128
567 ; CHECK-NEXT:    lvl %s1
568 ; CHECK-NEXT:    vcmps.w.zx %v1, %s0, %v0, %vm1
569 ; CHECK-NEXT:    lea %s16, 256
570 ; CHECK-NEXT:    lvl %s16
571 ; CHECK-NEXT:    vor %v0, (0)1, %v1
572 ; CHECK-NEXT:    b.l.t (, %s10)
573   %5 = tail call fast <256 x double> @llvm.ve.vl.vcmpswzx.vsvmvl(i32 %0, <256 x double> %1, <256 x i1> %2, <256 x double> %3, i32 128)
574   ret <256 x double> %5
577 ; Function Attrs: nounwind readnone
578 declare <256 x double> @llvm.ve.vl.vcmpswzx.vsvmvl(i32, <256 x double>, <256 x i1>, <256 x double>, i32)
580 ; Function Attrs: nounwind readnone
581 define fastcc <256 x double> @vcmpswzx_vsvmvl_imm(<256 x double> %0, <256 x i1> %1, <256 x double> %2) {
582 ; CHECK-LABEL: vcmpswzx_vsvmvl_imm:
583 ; CHECK:       # %bb.0:
584 ; CHECK-NEXT:    lea %s0, 128
585 ; CHECK-NEXT:    lvl %s0
586 ; CHECK-NEXT:    vcmps.w.zx %v1, 8, %v0, %vm1
587 ; CHECK-NEXT:    lea %s16, 256
588 ; CHECK-NEXT:    lvl %s16
589 ; CHECK-NEXT:    vor %v0, (0)1, %v1
590 ; CHECK-NEXT:    b.l.t (, %s10)
591   %4 = tail call fast <256 x double> @llvm.ve.vl.vcmpswzx.vsvmvl(i32 8, <256 x double> %0, <256 x i1> %1, <256 x double> %2, i32 128)
592   ret <256 x double> %4
595 ; Function Attrs: nounwind readnone
596 define fastcc <256 x double> @vcmpsl_vvvl(<256 x double> %0, <256 x double> %1) {
597 ; CHECK-LABEL: vcmpsl_vvvl:
598 ; CHECK:       # %bb.0:
599 ; CHECK-NEXT:    lea %s0, 256
600 ; CHECK-NEXT:    lvl %s0
601 ; CHECK-NEXT:    vcmps.l %v0, %v0, %v1
602 ; CHECK-NEXT:    b.l.t (, %s10)
603   %3 = tail call fast <256 x double> @llvm.ve.vl.vcmpsl.vvvl(<256 x double> %0, <256 x double> %1, i32 256)
604   ret <256 x double> %3
607 ; Function Attrs: nounwind readnone
608 declare <256 x double> @llvm.ve.vl.vcmpsl.vvvl(<256 x double>, <256 x double>, i32)
610 ; Function Attrs: nounwind readnone
611 define fastcc <256 x double> @vcmpsl_vvvvl(<256 x double> %0, <256 x double> %1, <256 x double> %2) {
612 ; CHECK-LABEL: vcmpsl_vvvvl:
613 ; CHECK:       # %bb.0:
614 ; CHECK-NEXT:    lea %s0, 128
615 ; CHECK-NEXT:    lvl %s0
616 ; CHECK-NEXT:    vcmps.l %v2, %v0, %v1
617 ; CHECK-NEXT:    lea %s16, 256
618 ; CHECK-NEXT:    lvl %s16
619 ; CHECK-NEXT:    vor %v0, (0)1, %v2
620 ; CHECK-NEXT:    b.l.t (, %s10)
621   %4 = tail call fast <256 x double> @llvm.ve.vl.vcmpsl.vvvvl(<256 x double> %0, <256 x double> %1, <256 x double> %2, i32 128)
622   ret <256 x double> %4
625 ; Function Attrs: nounwind readnone
626 declare <256 x double> @llvm.ve.vl.vcmpsl.vvvvl(<256 x double>, <256 x double>, <256 x double>, i32)
628 ; Function Attrs: nounwind readnone
629 define fastcc <256 x double> @vcmpsl_vsvl(i64 %0, <256 x double> %1) {
630 ; CHECK-LABEL: vcmpsl_vsvl:
631 ; CHECK:       # %bb.0:
632 ; CHECK-NEXT:    lea %s1, 256
633 ; CHECK-NEXT:    lvl %s1
634 ; CHECK-NEXT:    vcmps.l %v0, %s0, %v0
635 ; CHECK-NEXT:    b.l.t (, %s10)
636   %3 = tail call fast <256 x double> @llvm.ve.vl.vcmpsl.vsvl(i64 %0, <256 x double> %1, i32 256)
637   ret <256 x double> %3
640 ; Function Attrs: nounwind readnone
641 declare <256 x double> @llvm.ve.vl.vcmpsl.vsvl(i64, <256 x double>, i32)
643 ; Function Attrs: nounwind readnone
644 define fastcc <256 x double> @vcmpsl_vsvvl(i64 %0, <256 x double> %1, <256 x double> %2) {
645 ; CHECK-LABEL: vcmpsl_vsvvl:
646 ; CHECK:       # %bb.0:
647 ; CHECK-NEXT:    lea %s1, 128
648 ; CHECK-NEXT:    lvl %s1
649 ; CHECK-NEXT:    vcmps.l %v1, %s0, %v0
650 ; CHECK-NEXT:    lea %s16, 256
651 ; CHECK-NEXT:    lvl %s16
652 ; CHECK-NEXT:    vor %v0, (0)1, %v1
653 ; CHECK-NEXT:    b.l.t (, %s10)
654   %4 = tail call fast <256 x double> @llvm.ve.vl.vcmpsl.vsvvl(i64 %0, <256 x double> %1, <256 x double> %2, i32 128)
655   ret <256 x double> %4
658 ; Function Attrs: nounwind readnone
659 declare <256 x double> @llvm.ve.vl.vcmpsl.vsvvl(i64, <256 x double>, <256 x double>, i32)
661 ; Function Attrs: nounwind readnone
662 define fastcc <256 x double> @vcmpsl_vsvl_imm(<256 x double> %0) {
663 ; CHECK-LABEL: vcmpsl_vsvl_imm:
664 ; CHECK:       # %bb.0:
665 ; CHECK-NEXT:    lea %s0, 256
666 ; CHECK-NEXT:    lvl %s0
667 ; CHECK-NEXT:    vcmps.l %v0, 8, %v0
668 ; CHECK-NEXT:    b.l.t (, %s10)
669   %2 = tail call fast <256 x double> @llvm.ve.vl.vcmpsl.vsvl(i64 8, <256 x double> %0, i32 256)
670   ret <256 x double> %2
673 ; Function Attrs: nounwind readnone
674 define fastcc <256 x double> @vcmpsl_vsvvl_imm(<256 x double> %0, <256 x double> %1) {
675 ; CHECK-LABEL: vcmpsl_vsvvl_imm:
676 ; CHECK:       # %bb.0:
677 ; CHECK-NEXT:    lea %s0, 128
678 ; CHECK-NEXT:    lvl %s0
679 ; CHECK-NEXT:    vcmps.l %v1, 8, %v0
680 ; CHECK-NEXT:    lea %s16, 256
681 ; CHECK-NEXT:    lvl %s16
682 ; CHECK-NEXT:    vor %v0, (0)1, %v1
683 ; CHECK-NEXT:    b.l.t (, %s10)
684   %3 = tail call fast <256 x double> @llvm.ve.vl.vcmpsl.vsvvl(i64 8, <256 x double> %0, <256 x double> %1, i32 128)
685   ret <256 x double> %3
688 ; Function Attrs: nounwind readnone
689 define fastcc <256 x double> @vcmpsl_vvvmvl(<256 x double> %0, <256 x double> %1, <256 x i1> %2, <256 x double> %3) {
690 ; CHECK-LABEL: vcmpsl_vvvmvl:
691 ; CHECK:       # %bb.0:
692 ; CHECK-NEXT:    lea %s0, 128
693 ; CHECK-NEXT:    lvl %s0
694 ; CHECK-NEXT:    vcmps.l %v2, %v0, %v1, %vm1
695 ; CHECK-NEXT:    lea %s16, 256
696 ; CHECK-NEXT:    lvl %s16
697 ; CHECK-NEXT:    vor %v0, (0)1, %v2
698 ; CHECK-NEXT:    b.l.t (, %s10)
699   %5 = tail call fast <256 x double> @llvm.ve.vl.vcmpsl.vvvmvl(<256 x double> %0, <256 x double> %1, <256 x i1> %2, <256 x double> %3, i32 128)
700   ret <256 x double> %5
703 ; Function Attrs: nounwind readnone
704 declare <256 x double> @llvm.ve.vl.vcmpsl.vvvmvl(<256 x double>, <256 x double>, <256 x i1>, <256 x double>, i32)
706 ; Function Attrs: nounwind readnone
707 define fastcc <256 x double> @vcmpsl_vsvmvl(i64 %0, <256 x double> %1, <256 x i1> %2, <256 x double> %3) {
708 ; CHECK-LABEL: vcmpsl_vsvmvl:
709 ; CHECK:       # %bb.0:
710 ; CHECK-NEXT:    lea %s1, 128
711 ; CHECK-NEXT:    lvl %s1
712 ; CHECK-NEXT:    vcmps.l %v1, %s0, %v0, %vm1
713 ; CHECK-NEXT:    lea %s16, 256
714 ; CHECK-NEXT:    lvl %s16
715 ; CHECK-NEXT:    vor %v0, (0)1, %v1
716 ; CHECK-NEXT:    b.l.t (, %s10)
717   %5 = tail call fast <256 x double> @llvm.ve.vl.vcmpsl.vsvmvl(i64 %0, <256 x double> %1, <256 x i1> %2, <256 x double> %3, i32 128)
718   ret <256 x double> %5
721 ; Function Attrs: nounwind readnone
722 declare <256 x double> @llvm.ve.vl.vcmpsl.vsvmvl(i64, <256 x double>, <256 x i1>, <256 x double>, i32)
724 ; Function Attrs: nounwind readnone
725 define fastcc <256 x double> @vcmpsl_vsvmvl_imm(<256 x double> %0, <256 x i1> %1, <256 x double> %2) {
726 ; CHECK-LABEL: vcmpsl_vsvmvl_imm:
727 ; CHECK:       # %bb.0:
728 ; CHECK-NEXT:    lea %s0, 128
729 ; CHECK-NEXT:    lvl %s0
730 ; CHECK-NEXT:    vcmps.l %v1, 8, %v0, %vm1
731 ; CHECK-NEXT:    lea %s16, 256
732 ; CHECK-NEXT:    lvl %s16
733 ; CHECK-NEXT:    vor %v0, (0)1, %v1
734 ; CHECK-NEXT:    b.l.t (, %s10)
735   %4 = tail call fast <256 x double> @llvm.ve.vl.vcmpsl.vsvmvl(i64 8, <256 x double> %0, <256 x i1> %1, <256 x double> %2, i32 128)
736   ret <256 x double> %4
739 ; Function Attrs: nounwind readnone
740 define fastcc <256 x double> @pvcmpu_vvvl(<256 x double> %0, <256 x double> %1) {
741 ; CHECK-LABEL: pvcmpu_vvvl:
742 ; CHECK:       # %bb.0:
743 ; CHECK-NEXT:    lea %s0, 256
744 ; CHECK-NEXT:    lvl %s0
745 ; CHECK-NEXT:    pvcmpu %v0, %v0, %v1
746 ; CHECK-NEXT:    b.l.t (, %s10)
747   %3 = tail call fast <256 x double> @llvm.ve.vl.pvcmpu.vvvl(<256 x double> %0, <256 x double> %1, i32 256)
748   ret <256 x double> %3
751 ; Function Attrs: nounwind readnone
752 declare <256 x double> @llvm.ve.vl.pvcmpu.vvvl(<256 x double>, <256 x double>, i32)
754 ; Function Attrs: nounwind readnone
755 define fastcc <256 x double> @pvcmpu_vvvvl(<256 x double> %0, <256 x double> %1, <256 x double> %2) {
756 ; CHECK-LABEL: pvcmpu_vvvvl:
757 ; CHECK:       # %bb.0:
758 ; CHECK-NEXT:    lea %s0, 128
759 ; CHECK-NEXT:    lvl %s0
760 ; CHECK-NEXT:    pvcmpu %v2, %v0, %v1
761 ; CHECK-NEXT:    lea %s16, 256
762 ; CHECK-NEXT:    lvl %s16
763 ; CHECK-NEXT:    vor %v0, (0)1, %v2
764 ; CHECK-NEXT:    b.l.t (, %s10)
765   %4 = tail call fast <256 x double> @llvm.ve.vl.pvcmpu.vvvvl(<256 x double> %0, <256 x double> %1, <256 x double> %2, i32 128)
766   ret <256 x double> %4
769 ; Function Attrs: nounwind readnone
770 declare <256 x double> @llvm.ve.vl.pvcmpu.vvvvl(<256 x double>, <256 x double>, <256 x double>, i32)
772 ; Function Attrs: nounwind readnone
773 define fastcc <256 x double> @pvcmpu_vsvl(i64 %0, <256 x double> %1) {
774 ; CHECK-LABEL: pvcmpu_vsvl:
775 ; CHECK:       # %bb.0:
776 ; CHECK-NEXT:    lea %s1, 256
777 ; CHECK-NEXT:    lvl %s1
778 ; CHECK-NEXT:    pvcmpu %v0, %s0, %v0
779 ; CHECK-NEXT:    b.l.t (, %s10)
780   %3 = tail call fast <256 x double> @llvm.ve.vl.pvcmpu.vsvl(i64 %0, <256 x double> %1, i32 256)
781   ret <256 x double> %3
784 ; Function Attrs: nounwind readnone
785 declare <256 x double> @llvm.ve.vl.pvcmpu.vsvl(i64, <256 x double>, i32)
787 ; Function Attrs: nounwind readnone
788 define fastcc <256 x double> @pvcmpu_vsvvl(i64 %0, <256 x double> %1, <256 x double> %2) {
789 ; CHECK-LABEL: pvcmpu_vsvvl:
790 ; CHECK:       # %bb.0:
791 ; CHECK-NEXT:    lea %s1, 128
792 ; CHECK-NEXT:    lvl %s1
793 ; CHECK-NEXT:    pvcmpu %v1, %s0, %v0
794 ; CHECK-NEXT:    lea %s16, 256
795 ; CHECK-NEXT:    lvl %s16
796 ; CHECK-NEXT:    vor %v0, (0)1, %v1
797 ; CHECK-NEXT:    b.l.t (, %s10)
798   %4 = tail call fast <256 x double> @llvm.ve.vl.pvcmpu.vsvvl(i64 %0, <256 x double> %1, <256 x double> %2, i32 128)
799   ret <256 x double> %4
802 ; Function Attrs: nounwind readnone
803 declare <256 x double> @llvm.ve.vl.pvcmpu.vsvvl(i64, <256 x double>, <256 x double>, i32)
805 ; Function Attrs: nounwind readnone
806 define fastcc <256 x double> @pvcmpu_vvvMvl(<256 x double> %0, <256 x double> %1, <512 x i1> %2, <256 x double> %3) {
807 ; CHECK-LABEL: pvcmpu_vvvMvl:
808 ; CHECK:       # %bb.0:
809 ; CHECK-NEXT:    lea %s0, 128
810 ; CHECK-NEXT:    lvl %s0
811 ; CHECK-NEXT:    pvcmpu %v2, %v0, %v1, %vm2
812 ; CHECK-NEXT:    lea %s16, 256
813 ; CHECK-NEXT:    lvl %s16
814 ; CHECK-NEXT:    vor %v0, (0)1, %v2
815 ; CHECK-NEXT:    b.l.t (, %s10)
816   %5 = tail call fast <256 x double> @llvm.ve.vl.pvcmpu.vvvMvl(<256 x double> %0, <256 x double> %1, <512 x i1> %2, <256 x double> %3, i32 128)
817   ret <256 x double> %5
820 ; Function Attrs: nounwind readnone
821 declare <256 x double> @llvm.ve.vl.pvcmpu.vvvMvl(<256 x double>, <256 x double>, <512 x i1>, <256 x double>, i32)
823 ; Function Attrs: nounwind readnone
824 define fastcc <256 x double> @pvcmpu_vsvMvl(i64 %0, <256 x double> %1, <512 x i1> %2, <256 x double> %3) {
825 ; CHECK-LABEL: pvcmpu_vsvMvl:
826 ; CHECK:       # %bb.0:
827 ; CHECK-NEXT:    lea %s1, 128
828 ; CHECK-NEXT:    lvl %s1
829 ; CHECK-NEXT:    pvcmpu %v1, %s0, %v0, %vm2
830 ; CHECK-NEXT:    lea %s16, 256
831 ; CHECK-NEXT:    lvl %s16
832 ; CHECK-NEXT:    vor %v0, (0)1, %v1
833 ; CHECK-NEXT:    b.l.t (, %s10)
834   %5 = tail call fast <256 x double> @llvm.ve.vl.pvcmpu.vsvMvl(i64 %0, <256 x double> %1, <512 x i1> %2, <256 x double> %3, i32 128)
835   ret <256 x double> %5
838 ; Function Attrs: nounwind readnone
839 declare <256 x double> @llvm.ve.vl.pvcmpu.vsvMvl(i64, <256 x double>, <512 x i1>, <256 x double>, i32)
841 ; Function Attrs: nounwind readnone
842 define fastcc <256 x double> @pvcmps_vvvl(<256 x double> %0, <256 x double> %1) {
843 ; CHECK-LABEL: pvcmps_vvvl:
844 ; CHECK:       # %bb.0:
845 ; CHECK-NEXT:    lea %s0, 256
846 ; CHECK-NEXT:    lvl %s0
847 ; CHECK-NEXT:    pvcmps %v0, %v0, %v1
848 ; CHECK-NEXT:    b.l.t (, %s10)
849   %3 = tail call fast <256 x double> @llvm.ve.vl.pvcmps.vvvl(<256 x double> %0, <256 x double> %1, i32 256)
850   ret <256 x double> %3
853 ; Function Attrs: nounwind readnone
854 declare <256 x double> @llvm.ve.vl.pvcmps.vvvl(<256 x double>, <256 x double>, i32)
856 ; Function Attrs: nounwind readnone
857 define fastcc <256 x double> @pvcmps_vvvvl(<256 x double> %0, <256 x double> %1, <256 x double> %2) {
858 ; CHECK-LABEL: pvcmps_vvvvl:
859 ; CHECK:       # %bb.0:
860 ; CHECK-NEXT:    lea %s0, 128
861 ; CHECK-NEXT:    lvl %s0
862 ; CHECK-NEXT:    pvcmps %v2, %v0, %v1
863 ; CHECK-NEXT:    lea %s16, 256
864 ; CHECK-NEXT:    lvl %s16
865 ; CHECK-NEXT:    vor %v0, (0)1, %v2
866 ; CHECK-NEXT:    b.l.t (, %s10)
867   %4 = tail call fast <256 x double> @llvm.ve.vl.pvcmps.vvvvl(<256 x double> %0, <256 x double> %1, <256 x double> %2, i32 128)
868   ret <256 x double> %4
871 ; Function Attrs: nounwind readnone
872 declare <256 x double> @llvm.ve.vl.pvcmps.vvvvl(<256 x double>, <256 x double>, <256 x double>, i32)
874 ; Function Attrs: nounwind readnone
875 define fastcc <256 x double> @pvcmps_vsvl(i64 %0, <256 x double> %1) {
876 ; CHECK-LABEL: pvcmps_vsvl:
877 ; CHECK:       # %bb.0:
878 ; CHECK-NEXT:    lea %s1, 256
879 ; CHECK-NEXT:    lvl %s1
880 ; CHECK-NEXT:    pvcmps %v0, %s0, %v0
881 ; CHECK-NEXT:    b.l.t (, %s10)
882   %3 = tail call fast <256 x double> @llvm.ve.vl.pvcmps.vsvl(i64 %0, <256 x double> %1, i32 256)
883   ret <256 x double> %3
886 ; Function Attrs: nounwind readnone
887 declare <256 x double> @llvm.ve.vl.pvcmps.vsvl(i64, <256 x double>, i32)
889 ; Function Attrs: nounwind readnone
890 define fastcc <256 x double> @pvcmps_vsvvl(i64 %0, <256 x double> %1, <256 x double> %2) {
891 ; CHECK-LABEL: pvcmps_vsvvl:
892 ; CHECK:       # %bb.0:
893 ; CHECK-NEXT:    lea %s1, 128
894 ; CHECK-NEXT:    lvl %s1
895 ; CHECK-NEXT:    pvcmps %v1, %s0, %v0
896 ; CHECK-NEXT:    lea %s16, 256
897 ; CHECK-NEXT:    lvl %s16
898 ; CHECK-NEXT:    vor %v0, (0)1, %v1
899 ; CHECK-NEXT:    b.l.t (, %s10)
900   %4 = tail call fast <256 x double> @llvm.ve.vl.pvcmps.vsvvl(i64 %0, <256 x double> %1, <256 x double> %2, i32 128)
901   ret <256 x double> %4
904 ; Function Attrs: nounwind readnone
905 declare <256 x double> @llvm.ve.vl.pvcmps.vsvvl(i64, <256 x double>, <256 x double>, i32)
907 ; Function Attrs: nounwind readnone
908 define fastcc <256 x double> @pvcmps_vvvMvl(<256 x double> %0, <256 x double> %1, <512 x i1> %2, <256 x double> %3) {
909 ; CHECK-LABEL: pvcmps_vvvMvl:
910 ; CHECK:       # %bb.0:
911 ; CHECK-NEXT:    lea %s0, 128
912 ; CHECK-NEXT:    lvl %s0
913 ; CHECK-NEXT:    pvcmps %v2, %v0, %v1, %vm2
914 ; CHECK-NEXT:    lea %s16, 256
915 ; CHECK-NEXT:    lvl %s16
916 ; CHECK-NEXT:    vor %v0, (0)1, %v2
917 ; CHECK-NEXT:    b.l.t (, %s10)
918   %5 = tail call fast <256 x double> @llvm.ve.vl.pvcmps.vvvMvl(<256 x double> %0, <256 x double> %1, <512 x i1> %2, <256 x double> %3, i32 128)
919   ret <256 x double> %5
922 ; Function Attrs: nounwind readnone
923 declare <256 x double> @llvm.ve.vl.pvcmps.vvvMvl(<256 x double>, <256 x double>, <512 x i1>, <256 x double>, i32)
925 ; Function Attrs: nounwind readnone
926 define fastcc <256 x double> @pvcmps_vsvMvl(i64 %0, <256 x double> %1, <512 x i1> %2, <256 x double> %3) {
927 ; CHECK-LABEL: pvcmps_vsvMvl:
928 ; CHECK:       # %bb.0:
929 ; CHECK-NEXT:    lea %s1, 128
930 ; CHECK-NEXT:    lvl %s1
931 ; CHECK-NEXT:    pvcmps %v1, %s0, %v0, %vm2
932 ; CHECK-NEXT:    lea %s16, 256
933 ; CHECK-NEXT:    lvl %s16
934 ; CHECK-NEXT:    vor %v0, (0)1, %v1
935 ; CHECK-NEXT:    b.l.t (, %s10)
936   %5 = tail call fast <256 x double> @llvm.ve.vl.pvcmps.vsvMvl(i64 %0, <256 x double> %1, <512 x i1> %2, <256 x double> %3, i32 128)
937   ret <256 x double> %5
940 ; Function Attrs: nounwind readnone
941 declare <256 x double> @llvm.ve.vl.pvcmps.vsvMvl(i64, <256 x double>, <512 x i1>, <256 x double>, i32)