1 ; RUN: llc < %s -mtriple=ve -mattr=+vpu | FileCheck %s
3 ;;; Test vector gather intrinsic instructions
6 ;;; We test VGT*vrrl, VGT*vrrl_v, VGT*vrzl, VGT*vrzl_v, VGT*virl, VGT*virl_v,
7 ;;; VGT*vizl, VGT*vizl_v, VGT*vrrml, VGT*vrrml_v, VGT*vrzml, VGT*vrzml_v,
8 ;;; VGT*virml, VGT*virml_v, VGT*vizml, and VGT*vizml_v instructions.
10 ; Function Attrs: nounwind readonly
11 define fastcc <256 x double> @vgt_vvssl(<256 x double> %0, i64 %1, i64 %2) {
12 ; CHECK-LABEL: vgt_vvssl:
14 ; CHECK-NEXT: lea %s2, 256
16 ; CHECK-NEXT: vgt %v0, %v0, %s0, %s1
17 ; CHECK-NEXT: b.l.t (, %s10)
18 %4 = tail call fast <256 x double> @llvm.ve.vl.vgt.vvssl(<256 x double> %0, i64 %1, i64 %2, i32 256)
22 ; Function Attrs: nounwind readonly
23 declare <256 x double> @llvm.ve.vl.vgt.vvssl(<256 x double>, i64, i64, i32)
25 ; Function Attrs: nounwind readonly
26 define fastcc <256 x double> @vgt_vvssvl(<256 x double> %0, i64 %1, i64 %2, <256 x double> %3) {
27 ; CHECK-LABEL: vgt_vvssvl:
29 ; CHECK-NEXT: lea %s2, 128
31 ; CHECK-NEXT: vgt %v1, %v0, %s0, %s1
32 ; CHECK-NEXT: lea %s16, 256
33 ; CHECK-NEXT: lvl %s16
34 ; CHECK-NEXT: vor %v0, (0)1, %v1
35 ; CHECK-NEXT: b.l.t (, %s10)
36 %5 = tail call fast <256 x double> @llvm.ve.vl.vgt.vvssvl(<256 x double> %0, i64 %1, i64 %2, <256 x double> %3, i32 128)
40 ; Function Attrs: nounwind readonly
41 declare <256 x double> @llvm.ve.vl.vgt.vvssvl(<256 x double>, i64, i64, <256 x double>, i32)
43 ; Function Attrs: nounwind readonly
44 define fastcc <256 x double> @vgt_vvssl_imm_1(<256 x double> %0, i64 %1) {
45 ; CHECK-LABEL: vgt_vvssl_imm_1:
47 ; CHECK-NEXT: lea %s1, 256
49 ; CHECK-NEXT: vgt %v0, %v0, %s0, 0
50 ; CHECK-NEXT: b.l.t (, %s10)
51 %3 = tail call fast <256 x double> @llvm.ve.vl.vgt.vvssl(<256 x double> %0, i64 %1, i64 0, i32 256)
55 ; Function Attrs: nounwind readonly
56 define fastcc <256 x double> @vgt_vvssvl_imm_1(<256 x double> %0, i64 %1, <256 x double> %2) {
57 ; CHECK-LABEL: vgt_vvssvl_imm_1:
59 ; CHECK-NEXT: lea %s1, 128
61 ; CHECK-NEXT: vgt %v1, %v0, %s0, 0
62 ; CHECK-NEXT: lea %s16, 256
63 ; CHECK-NEXT: lvl %s16
64 ; CHECK-NEXT: vor %v0, (0)1, %v1
65 ; CHECK-NEXT: b.l.t (, %s10)
66 %4 = tail call fast <256 x double> @llvm.ve.vl.vgt.vvssvl(<256 x double> %0, i64 %1, i64 0, <256 x double> %2, i32 128)
70 ; Function Attrs: nounwind readonly
71 define fastcc <256 x double> @vgt_vvssl_imm_2(<256 x double> %0, i64 %1) {
72 ; CHECK-LABEL: vgt_vvssl_imm_2:
74 ; CHECK-NEXT: lea %s1, 256
76 ; CHECK-NEXT: vgt %v0, %v0, 8, %s0
77 ; CHECK-NEXT: b.l.t (, %s10)
78 %3 = tail call fast <256 x double> @llvm.ve.vl.vgt.vvssl(<256 x double> %0, i64 8, i64 %1, i32 256)
82 ; Function Attrs: nounwind readonly
83 define fastcc <256 x double> @vgt_vvssvl_imm_2(<256 x double> %0, i64 %1, <256 x double> %2) {
84 ; CHECK-LABEL: vgt_vvssvl_imm_2:
86 ; CHECK-NEXT: lea %s1, 128
88 ; CHECK-NEXT: vgt %v1, %v0, 8, %s0
89 ; CHECK-NEXT: lea %s16, 256
90 ; CHECK-NEXT: lvl %s16
91 ; CHECK-NEXT: vor %v0, (0)1, %v1
92 ; CHECK-NEXT: b.l.t (, %s10)
93 %4 = tail call fast <256 x double> @llvm.ve.vl.vgt.vvssvl(<256 x double> %0, i64 8, i64 %1, <256 x double> %2, i32 128)
97 ; Function Attrs: nounwind readonly
98 define fastcc <256 x double> @vgt_vvssl_imm_3(<256 x double> %0) {
99 ; CHECK-LABEL: vgt_vvssl_imm_3:
101 ; CHECK-NEXT: lea %s0, 256
102 ; CHECK-NEXT: lvl %s0
103 ; CHECK-NEXT: vgt %v0, %v0, 8, 0
104 ; CHECK-NEXT: b.l.t (, %s10)
105 %2 = tail call fast <256 x double> @llvm.ve.vl.vgt.vvssl(<256 x double> %0, i64 8, i64 0, i32 256)
106 ret <256 x double> %2
109 ; Function Attrs: nounwind readonly
110 define fastcc <256 x double> @vgt_vvssvl_imm_3(<256 x double> %0, <256 x double> %1) {
111 ; CHECK-LABEL: vgt_vvssvl_imm_3:
113 ; CHECK-NEXT: lea %s0, 128
114 ; CHECK-NEXT: lvl %s0
115 ; CHECK-NEXT: vgt %v1, %v0, 8, 0
116 ; CHECK-NEXT: lea %s16, 256
117 ; CHECK-NEXT: lvl %s16
118 ; CHECK-NEXT: vor %v0, (0)1, %v1
119 ; CHECK-NEXT: b.l.t (, %s10)
120 %3 = tail call fast <256 x double> @llvm.ve.vl.vgt.vvssvl(<256 x double> %0, i64 8, i64 0, <256 x double> %1, i32 128)
121 ret <256 x double> %3
124 ; Function Attrs: nounwind readonly
125 define fastcc <256 x double> @vgt_vvssml(<256 x double> %0, i64 %1, i64 %2, <256 x i1> %3) {
126 ; CHECK-LABEL: vgt_vvssml:
128 ; CHECK-NEXT: lea %s2, 256
129 ; CHECK-NEXT: lvl %s2
130 ; CHECK-NEXT: vgt %v0, %v0, %s0, %s1, %vm1
131 ; CHECK-NEXT: b.l.t (, %s10)
132 %5 = tail call fast <256 x double> @llvm.ve.vl.vgt.vvssml(<256 x double> %0, i64 %1, i64 %2, <256 x i1> %3, i32 256)
133 ret <256 x double> %5
136 ; Function Attrs: nounwind readonly
137 declare <256 x double> @llvm.ve.vl.vgt.vvssml(<256 x double>, i64, i64, <256 x i1>, i32)
139 ; Function Attrs: nounwind readonly
140 define fastcc <256 x double> @vgt_vvssmvl(<256 x double> %0, i64 %1, i64 %2, <256 x i1> %3, <256 x double> %4) {
141 ; CHECK-LABEL: vgt_vvssmvl:
143 ; CHECK-NEXT: lea %s2, 128
144 ; CHECK-NEXT: lvl %s2
145 ; CHECK-NEXT: vgt %v1, %v0, %s0, %s1, %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 %6 = tail call fast <256 x double> @llvm.ve.vl.vgt.vvssmvl(<256 x double> %0, i64 %1, i64 %2, <256 x i1> %3, <256 x double> %4, i32 128)
151 ret <256 x double> %6
154 ; Function Attrs: nounwind readonly
155 declare <256 x double> @llvm.ve.vl.vgt.vvssmvl(<256 x double>, i64, i64, <256 x i1>, <256 x double>, i32)
157 ; Function Attrs: nounwind readonly
158 define fastcc <256 x double> @vgt_vvssml_imm_1(<256 x double> %0, i64 %1, <256 x i1> %2) {
159 ; CHECK-LABEL: vgt_vvssml_imm_1:
161 ; CHECK-NEXT: lea %s1, 256
162 ; CHECK-NEXT: lvl %s1
163 ; CHECK-NEXT: vgt %v0, %v0, %s0, 0, %vm1
164 ; CHECK-NEXT: b.l.t (, %s10)
165 %4 = tail call fast <256 x double> @llvm.ve.vl.vgt.vvssml(<256 x double> %0, i64 %1, i64 0, <256 x i1> %2, i32 256)
166 ret <256 x double> %4
169 ; Function Attrs: nounwind readonly
170 define fastcc <256 x double> @vgt_vvssmvl_imm_1(<256 x double> %0, i64 %1, <256 x i1> %2, <256 x double> %3) {
171 ; CHECK-LABEL: vgt_vvssmvl_imm_1:
173 ; CHECK-NEXT: lea %s1, 128
174 ; CHECK-NEXT: lvl %s1
175 ; CHECK-NEXT: vgt %v1, %v0, %s0, 0, %vm1
176 ; CHECK-NEXT: lea %s16, 256
177 ; CHECK-NEXT: lvl %s16
178 ; CHECK-NEXT: vor %v0, (0)1, %v1
179 ; CHECK-NEXT: b.l.t (, %s10)
180 %5 = tail call fast <256 x double> @llvm.ve.vl.vgt.vvssmvl(<256 x double> %0, i64 %1, i64 0, <256 x i1> %2, <256 x double> %3, i32 128)
181 ret <256 x double> %5
184 ; Function Attrs: nounwind readonly
185 define fastcc <256 x double> @vgt_vvssml_imm_2(<256 x double> %0, i64 %1, <256 x i1> %2) {
186 ; CHECK-LABEL: vgt_vvssml_imm_2:
188 ; CHECK-NEXT: lea %s1, 256
189 ; CHECK-NEXT: lvl %s1
190 ; CHECK-NEXT: vgt %v0, %v0, 8, %s0, %vm1
191 ; CHECK-NEXT: b.l.t (, %s10)
192 %4 = tail call fast <256 x double> @llvm.ve.vl.vgt.vvssml(<256 x double> %0, i64 8, i64 %1, <256 x i1> %2, i32 256)
193 ret <256 x double> %4
196 ; Function Attrs: nounwind readonly
197 define fastcc <256 x double> @vgt_vvssmvl_imm_2(<256 x double> %0, i64 %1, <256 x i1> %2, <256 x double> %3) {
198 ; CHECK-LABEL: vgt_vvssmvl_imm_2:
200 ; CHECK-NEXT: lea %s1, 128
201 ; CHECK-NEXT: lvl %s1
202 ; CHECK-NEXT: vgt %v1, %v0, 8, %s0, %vm1
203 ; CHECK-NEXT: lea %s16, 256
204 ; CHECK-NEXT: lvl %s16
205 ; CHECK-NEXT: vor %v0, (0)1, %v1
206 ; CHECK-NEXT: b.l.t (, %s10)
207 %5 = tail call fast <256 x double> @llvm.ve.vl.vgt.vvssmvl(<256 x double> %0, i64 8, i64 %1, <256 x i1> %2, <256 x double> %3, i32 128)
208 ret <256 x double> %5
211 ; Function Attrs: nounwind readonly
212 define fastcc <256 x double> @vgt_vvssml_imm_3(<256 x double> %0, <256 x i1> %1) {
213 ; CHECK-LABEL: vgt_vvssml_imm_3:
215 ; CHECK-NEXT: lea %s0, 256
216 ; CHECK-NEXT: lvl %s0
217 ; CHECK-NEXT: vgt %v0, %v0, 8, 0, %vm1
218 ; CHECK-NEXT: b.l.t (, %s10)
219 %3 = tail call fast <256 x double> @llvm.ve.vl.vgt.vvssml(<256 x double> %0, i64 8, i64 0, <256 x i1> %1, i32 256)
220 ret <256 x double> %3
223 ; Function Attrs: nounwind readonly
224 define fastcc <256 x double> @vgt_vvssmvl_imm_3(<256 x double> %0, <256 x i1> %1, <256 x double> %2) {
225 ; CHECK-LABEL: vgt_vvssmvl_imm_3:
227 ; CHECK-NEXT: lea %s0, 128
228 ; CHECK-NEXT: lvl %s0
229 ; CHECK-NEXT: vgt %v1, %v0, 8, 0, %vm1
230 ; CHECK-NEXT: lea %s16, 256
231 ; CHECK-NEXT: lvl %s16
232 ; CHECK-NEXT: vor %v0, (0)1, %v1
233 ; CHECK-NEXT: b.l.t (, %s10)
234 %4 = tail call fast <256 x double> @llvm.ve.vl.vgt.vvssmvl(<256 x double> %0, i64 8, i64 0, <256 x i1> %1, <256 x double> %2, i32 128)
235 ret <256 x double> %4
238 ; Function Attrs: nounwind readonly
239 define fastcc <256 x double> @vgt_vvssl_no_imm_1(<256 x double> %0, i64 %1) {
240 ; CHECK-LABEL: vgt_vvssl_no_imm_1:
242 ; CHECK-NEXT: lea %s1, 256
243 ; CHECK-NEXT: or %s2, 8, (0)1
244 ; CHECK-NEXT: lvl %s1
245 ; CHECK-NEXT: vgt %v0, %v0, %s0, %s2
246 ; CHECK-NEXT: b.l.t (, %s10)
247 %3 = tail call fast <256 x double> @llvm.ve.vl.vgt.vvssl(<256 x double> %0, i64 %1, i64 8, i32 256)
248 ret <256 x double> %3
251 ; Function Attrs: nounwind readonly
252 define fastcc <256 x double> @vgtnc_vvssl(<256 x double> %0, i64 %1, i64 %2) {
253 ; CHECK-LABEL: vgtnc_vvssl:
255 ; CHECK-NEXT: lea %s2, 256
256 ; CHECK-NEXT: lvl %s2
257 ; CHECK-NEXT: vgt.nc %v0, %v0, %s0, %s1
258 ; CHECK-NEXT: b.l.t (, %s10)
259 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtnc.vvssl(<256 x double> %0, i64 %1, i64 %2, i32 256)
260 ret <256 x double> %4
263 ; Function Attrs: nounwind readonly
264 declare <256 x double> @llvm.ve.vl.vgtnc.vvssl(<256 x double>, i64, i64, i32)
266 ; Function Attrs: nounwind readonly
267 define fastcc <256 x double> @vgtnc_vvssvl(<256 x double> %0, i64 %1, i64 %2, <256 x double> %3) {
268 ; CHECK-LABEL: vgtnc_vvssvl:
270 ; CHECK-NEXT: lea %s2, 128
271 ; CHECK-NEXT: lvl %s2
272 ; CHECK-NEXT: vgt.nc %v1, %v0, %s0, %s1
273 ; CHECK-NEXT: lea %s16, 256
274 ; CHECK-NEXT: lvl %s16
275 ; CHECK-NEXT: vor %v0, (0)1, %v1
276 ; CHECK-NEXT: b.l.t (, %s10)
277 %5 = tail call fast <256 x double> @llvm.ve.vl.vgtnc.vvssvl(<256 x double> %0, i64 %1, i64 %2, <256 x double> %3, i32 128)
278 ret <256 x double> %5
281 ; Function Attrs: nounwind readonly
282 declare <256 x double> @llvm.ve.vl.vgtnc.vvssvl(<256 x double>, i64, i64, <256 x double>, i32)
284 ; Function Attrs: nounwind readonly
285 define fastcc <256 x double> @vgtnc_vvssl_imm_1(<256 x double> %0, i64 %1) {
286 ; CHECK-LABEL: vgtnc_vvssl_imm_1:
288 ; CHECK-NEXT: lea %s1, 256
289 ; CHECK-NEXT: lvl %s1
290 ; CHECK-NEXT: vgt.nc %v0, %v0, %s0, 0
291 ; CHECK-NEXT: b.l.t (, %s10)
292 %3 = tail call fast <256 x double> @llvm.ve.vl.vgtnc.vvssl(<256 x double> %0, i64 %1, i64 0, i32 256)
293 ret <256 x double> %3
296 ; Function Attrs: nounwind readonly
297 define fastcc <256 x double> @vgtnc_vvssvl_imm_1(<256 x double> %0, i64 %1, <256 x double> %2) {
298 ; CHECK-LABEL: vgtnc_vvssvl_imm_1:
300 ; CHECK-NEXT: lea %s1, 128
301 ; CHECK-NEXT: lvl %s1
302 ; CHECK-NEXT: vgt.nc %v1, %v0, %s0, 0
303 ; CHECK-NEXT: lea %s16, 256
304 ; CHECK-NEXT: lvl %s16
305 ; CHECK-NEXT: vor %v0, (0)1, %v1
306 ; CHECK-NEXT: b.l.t (, %s10)
307 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtnc.vvssvl(<256 x double> %0, i64 %1, i64 0, <256 x double> %2, i32 128)
308 ret <256 x double> %4
311 ; Function Attrs: nounwind readonly
312 define fastcc <256 x double> @vgtnc_vvssl_imm_2(<256 x double> %0, i64 %1) {
313 ; CHECK-LABEL: vgtnc_vvssl_imm_2:
315 ; CHECK-NEXT: lea %s1, 256
316 ; CHECK-NEXT: lvl %s1
317 ; CHECK-NEXT: vgt.nc %v0, %v0, 8, %s0
318 ; CHECK-NEXT: b.l.t (, %s10)
319 %3 = tail call fast <256 x double> @llvm.ve.vl.vgtnc.vvssl(<256 x double> %0, i64 8, i64 %1, i32 256)
320 ret <256 x double> %3
323 ; Function Attrs: nounwind readonly
324 define fastcc <256 x double> @vgtnc_vvssvl_imm_2(<256 x double> %0, i64 %1, <256 x double> %2) {
325 ; CHECK-LABEL: vgtnc_vvssvl_imm_2:
327 ; CHECK-NEXT: lea %s1, 128
328 ; CHECK-NEXT: lvl %s1
329 ; CHECK-NEXT: vgt.nc %v1, %v0, 8, %s0
330 ; CHECK-NEXT: lea %s16, 256
331 ; CHECK-NEXT: lvl %s16
332 ; CHECK-NEXT: vor %v0, (0)1, %v1
333 ; CHECK-NEXT: b.l.t (, %s10)
334 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtnc.vvssvl(<256 x double> %0, i64 8, i64 %1, <256 x double> %2, i32 128)
335 ret <256 x double> %4
338 ; Function Attrs: nounwind readonly
339 define fastcc <256 x double> @vgtnc_vvssl_imm_3(<256 x double> %0) {
340 ; CHECK-LABEL: vgtnc_vvssl_imm_3:
342 ; CHECK-NEXT: lea %s0, 256
343 ; CHECK-NEXT: lvl %s0
344 ; CHECK-NEXT: vgt.nc %v0, %v0, 8, 0
345 ; CHECK-NEXT: b.l.t (, %s10)
346 %2 = tail call fast <256 x double> @llvm.ve.vl.vgtnc.vvssl(<256 x double> %0, i64 8, i64 0, i32 256)
347 ret <256 x double> %2
350 ; Function Attrs: nounwind readonly
351 define fastcc <256 x double> @vgtnc_vvssvl_imm_3(<256 x double> %0, <256 x double> %1) {
352 ; CHECK-LABEL: vgtnc_vvssvl_imm_3:
354 ; CHECK-NEXT: lea %s0, 128
355 ; CHECK-NEXT: lvl %s0
356 ; CHECK-NEXT: vgt.nc %v1, %v0, 8, 0
357 ; CHECK-NEXT: lea %s16, 256
358 ; CHECK-NEXT: lvl %s16
359 ; CHECK-NEXT: vor %v0, (0)1, %v1
360 ; CHECK-NEXT: b.l.t (, %s10)
361 %3 = tail call fast <256 x double> @llvm.ve.vl.vgtnc.vvssvl(<256 x double> %0, i64 8, i64 0, <256 x double> %1, i32 128)
362 ret <256 x double> %3
365 ; Function Attrs: nounwind readonly
366 define fastcc <256 x double> @vgtnc_vvssml(<256 x double> %0, i64 %1, i64 %2, <256 x i1> %3) {
367 ; CHECK-LABEL: vgtnc_vvssml:
369 ; CHECK-NEXT: lea %s2, 256
370 ; CHECK-NEXT: lvl %s2
371 ; CHECK-NEXT: vgt.nc %v0, %v0, %s0, %s1, %vm1
372 ; CHECK-NEXT: b.l.t (, %s10)
373 %5 = tail call fast <256 x double> @llvm.ve.vl.vgtnc.vvssml(<256 x double> %0, i64 %1, i64 %2, <256 x i1> %3, i32 256)
374 ret <256 x double> %5
377 ; Function Attrs: nounwind readonly
378 declare <256 x double> @llvm.ve.vl.vgtnc.vvssml(<256 x double>, i64, i64, <256 x i1>, i32)
380 ; Function Attrs: nounwind readonly
381 define fastcc <256 x double> @vgtnc_vvssmvl(<256 x double> %0, i64 %1, i64 %2, <256 x i1> %3, <256 x double> %4) {
382 ; CHECK-LABEL: vgtnc_vvssmvl:
384 ; CHECK-NEXT: lea %s2, 128
385 ; CHECK-NEXT: lvl %s2
386 ; CHECK-NEXT: vgt.nc %v1, %v0, %s0, %s1, %vm1
387 ; CHECK-NEXT: lea %s16, 256
388 ; CHECK-NEXT: lvl %s16
389 ; CHECK-NEXT: vor %v0, (0)1, %v1
390 ; CHECK-NEXT: b.l.t (, %s10)
391 %6 = tail call fast <256 x double> @llvm.ve.vl.vgtnc.vvssmvl(<256 x double> %0, i64 %1, i64 %2, <256 x i1> %3, <256 x double> %4, i32 128)
392 ret <256 x double> %6
395 ; Function Attrs: nounwind readonly
396 declare <256 x double> @llvm.ve.vl.vgtnc.vvssmvl(<256 x double>, i64, i64, <256 x i1>, <256 x double>, i32)
398 ; Function Attrs: nounwind readonly
399 define fastcc <256 x double> @vgtnc_vvssml_imm_1(<256 x double> %0, i64 %1, <256 x i1> %2) {
400 ; CHECK-LABEL: vgtnc_vvssml_imm_1:
402 ; CHECK-NEXT: lea %s1, 256
403 ; CHECK-NEXT: lvl %s1
404 ; CHECK-NEXT: vgt.nc %v0, %v0, %s0, 0, %vm1
405 ; CHECK-NEXT: b.l.t (, %s10)
406 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtnc.vvssml(<256 x double> %0, i64 %1, i64 0, <256 x i1> %2, i32 256)
407 ret <256 x double> %4
410 ; Function Attrs: nounwind readonly
411 define fastcc <256 x double> @vgtnc_vvssmvl_imm_1(<256 x double> %0, i64 %1, <256 x i1> %2, <256 x double> %3) {
412 ; CHECK-LABEL: vgtnc_vvssmvl_imm_1:
414 ; CHECK-NEXT: lea %s1, 128
415 ; CHECK-NEXT: lvl %s1
416 ; CHECK-NEXT: vgt.nc %v1, %v0, %s0, 0, %vm1
417 ; CHECK-NEXT: lea %s16, 256
418 ; CHECK-NEXT: lvl %s16
419 ; CHECK-NEXT: vor %v0, (0)1, %v1
420 ; CHECK-NEXT: b.l.t (, %s10)
421 %5 = tail call fast <256 x double> @llvm.ve.vl.vgtnc.vvssmvl(<256 x double> %0, i64 %1, i64 0, <256 x i1> %2, <256 x double> %3, i32 128)
422 ret <256 x double> %5
425 ; Function Attrs: nounwind readonly
426 define fastcc <256 x double> @vgtnc_vvssml_imm_2(<256 x double> %0, i64 %1, <256 x i1> %2) {
427 ; CHECK-LABEL: vgtnc_vvssml_imm_2:
429 ; CHECK-NEXT: lea %s1, 256
430 ; CHECK-NEXT: lvl %s1
431 ; CHECK-NEXT: vgt.nc %v0, %v0, 8, %s0, %vm1
432 ; CHECK-NEXT: b.l.t (, %s10)
433 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtnc.vvssml(<256 x double> %0, i64 8, i64 %1, <256 x i1> %2, i32 256)
434 ret <256 x double> %4
437 ; Function Attrs: nounwind readonly
438 define fastcc <256 x double> @vgtnc_vvssmvl_imm_2(<256 x double> %0, i64 %1, <256 x i1> %2, <256 x double> %3) {
439 ; CHECK-LABEL: vgtnc_vvssmvl_imm_2:
441 ; CHECK-NEXT: lea %s1, 128
442 ; CHECK-NEXT: lvl %s1
443 ; CHECK-NEXT: vgt.nc %v1, %v0, 8, %s0, %vm1
444 ; CHECK-NEXT: lea %s16, 256
445 ; CHECK-NEXT: lvl %s16
446 ; CHECK-NEXT: vor %v0, (0)1, %v1
447 ; CHECK-NEXT: b.l.t (, %s10)
448 %5 = tail call fast <256 x double> @llvm.ve.vl.vgtnc.vvssmvl(<256 x double> %0, i64 8, i64 %1, <256 x i1> %2, <256 x double> %3, i32 128)
449 ret <256 x double> %5
452 ; Function Attrs: nounwind readonly
453 define fastcc <256 x double> @vgtnc_vvssml_imm_3(<256 x double> %0, <256 x i1> %1) {
454 ; CHECK-LABEL: vgtnc_vvssml_imm_3:
456 ; CHECK-NEXT: lea %s0, 256
457 ; CHECK-NEXT: lvl %s0
458 ; CHECK-NEXT: vgt.nc %v0, %v0, 8, 0, %vm1
459 ; CHECK-NEXT: b.l.t (, %s10)
460 %3 = tail call fast <256 x double> @llvm.ve.vl.vgtnc.vvssml(<256 x double> %0, i64 8, i64 0, <256 x i1> %1, i32 256)
461 ret <256 x double> %3
464 ; Function Attrs: nounwind readonly
465 define fastcc <256 x double> @vgtnc_vvssmvl_imm_3(<256 x double> %0, <256 x i1> %1, <256 x double> %2) {
466 ; CHECK-LABEL: vgtnc_vvssmvl_imm_3:
468 ; CHECK-NEXT: lea %s0, 128
469 ; CHECK-NEXT: lvl %s0
470 ; CHECK-NEXT: vgt.nc %v1, %v0, 8, 0, %vm1
471 ; CHECK-NEXT: lea %s16, 256
472 ; CHECK-NEXT: lvl %s16
473 ; CHECK-NEXT: vor %v0, (0)1, %v1
474 ; CHECK-NEXT: b.l.t (, %s10)
475 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtnc.vvssmvl(<256 x double> %0, i64 8, i64 0, <256 x i1> %1, <256 x double> %2, i32 128)
476 ret <256 x double> %4
479 ; Function Attrs: nounwind readonly
480 define fastcc <256 x double> @vgtnc_vvssl_no_imm_1(<256 x double> %0, i64 %1) {
481 ; CHECK-LABEL: vgtnc_vvssl_no_imm_1:
483 ; CHECK-NEXT: lea %s1, 256
484 ; CHECK-NEXT: or %s2, 8, (0)1
485 ; CHECK-NEXT: lvl %s1
486 ; CHECK-NEXT: vgt.nc %v0, %v0, %s0, %s2
487 ; CHECK-NEXT: b.l.t (, %s10)
488 %3 = tail call fast <256 x double> @llvm.ve.vl.vgtnc.vvssl(<256 x double> %0, i64 %1, i64 8, i32 256)
489 ret <256 x double> %3
492 ; Function Attrs: nounwind readonly
493 define fastcc <256 x double> @vgtu_vvssl(<256 x double> %0, i64 %1, i64 %2) {
494 ; CHECK-LABEL: vgtu_vvssl:
496 ; CHECK-NEXT: lea %s2, 256
497 ; CHECK-NEXT: lvl %s2
498 ; CHECK-NEXT: vgtu %v0, %v0, %s0, %s1
499 ; CHECK-NEXT: b.l.t (, %s10)
500 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtu.vvssl(<256 x double> %0, i64 %1, i64 %2, i32 256)
501 ret <256 x double> %4
504 ; Function Attrs: nounwind readonly
505 declare <256 x double> @llvm.ve.vl.vgtu.vvssl(<256 x double>, i64, i64, i32)
507 ; Function Attrs: nounwind readonly
508 define fastcc <256 x double> @vgtu_vvssvl(<256 x double> %0, i64 %1, i64 %2, <256 x double> %3) {
509 ; CHECK-LABEL: vgtu_vvssvl:
511 ; CHECK-NEXT: lea %s2, 128
512 ; CHECK-NEXT: lvl %s2
513 ; CHECK-NEXT: vgtu %v1, %v0, %s0, %s1
514 ; CHECK-NEXT: lea %s16, 256
515 ; CHECK-NEXT: lvl %s16
516 ; CHECK-NEXT: vor %v0, (0)1, %v1
517 ; CHECK-NEXT: b.l.t (, %s10)
518 %5 = tail call fast <256 x double> @llvm.ve.vl.vgtu.vvssvl(<256 x double> %0, i64 %1, i64 %2, <256 x double> %3, i32 128)
519 ret <256 x double> %5
522 ; Function Attrs: nounwind readonly
523 declare <256 x double> @llvm.ve.vl.vgtu.vvssvl(<256 x double>, i64, i64, <256 x double>, i32)
525 ; Function Attrs: nounwind readonly
526 define fastcc <256 x double> @vgtu_vvssl_imm_1(<256 x double> %0, i64 %1) {
527 ; CHECK-LABEL: vgtu_vvssl_imm_1:
529 ; CHECK-NEXT: lea %s1, 256
530 ; CHECK-NEXT: lvl %s1
531 ; CHECK-NEXT: vgtu %v0, %v0, %s0, 0
532 ; CHECK-NEXT: b.l.t (, %s10)
533 %3 = tail call fast <256 x double> @llvm.ve.vl.vgtu.vvssl(<256 x double> %0, i64 %1, i64 0, i32 256)
534 ret <256 x double> %3
537 ; Function Attrs: nounwind readonly
538 define fastcc <256 x double> @vgtu_vvssvl_imm_1(<256 x double> %0, i64 %1, <256 x double> %2) {
539 ; CHECK-LABEL: vgtu_vvssvl_imm_1:
541 ; CHECK-NEXT: lea %s1, 128
542 ; CHECK-NEXT: lvl %s1
543 ; CHECK-NEXT: vgtu %v1, %v0, %s0, 0
544 ; CHECK-NEXT: lea %s16, 256
545 ; CHECK-NEXT: lvl %s16
546 ; CHECK-NEXT: vor %v0, (0)1, %v1
547 ; CHECK-NEXT: b.l.t (, %s10)
548 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtu.vvssvl(<256 x double> %0, i64 %1, i64 0, <256 x double> %2, i32 128)
549 ret <256 x double> %4
552 ; Function Attrs: nounwind readonly
553 define fastcc <256 x double> @vgtu_vvssl_imm_2(<256 x double> %0, i64 %1) {
554 ; CHECK-LABEL: vgtu_vvssl_imm_2:
556 ; CHECK-NEXT: lea %s1, 256
557 ; CHECK-NEXT: lvl %s1
558 ; CHECK-NEXT: vgtu %v0, %v0, 8, %s0
559 ; CHECK-NEXT: b.l.t (, %s10)
560 %3 = tail call fast <256 x double> @llvm.ve.vl.vgtu.vvssl(<256 x double> %0, i64 8, i64 %1, i32 256)
561 ret <256 x double> %3
564 ; Function Attrs: nounwind readonly
565 define fastcc <256 x double> @vgtu_vvssvl_imm_2(<256 x double> %0, i64 %1, <256 x double> %2) {
566 ; CHECK-LABEL: vgtu_vvssvl_imm_2:
568 ; CHECK-NEXT: lea %s1, 128
569 ; CHECK-NEXT: lvl %s1
570 ; CHECK-NEXT: vgtu %v1, %v0, 8, %s0
571 ; CHECK-NEXT: lea %s16, 256
572 ; CHECK-NEXT: lvl %s16
573 ; CHECK-NEXT: vor %v0, (0)1, %v1
574 ; CHECK-NEXT: b.l.t (, %s10)
575 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtu.vvssvl(<256 x double> %0, i64 8, i64 %1, <256 x double> %2, i32 128)
576 ret <256 x double> %4
579 ; Function Attrs: nounwind readonly
580 define fastcc <256 x double> @vgtu_vvssl_imm_3(<256 x double> %0) {
581 ; CHECK-LABEL: vgtu_vvssl_imm_3:
583 ; CHECK-NEXT: lea %s0, 256
584 ; CHECK-NEXT: lvl %s0
585 ; CHECK-NEXT: vgtu %v0, %v0, 8, 0
586 ; CHECK-NEXT: b.l.t (, %s10)
587 %2 = tail call fast <256 x double> @llvm.ve.vl.vgtu.vvssl(<256 x double> %0, i64 8, i64 0, i32 256)
588 ret <256 x double> %2
591 ; Function Attrs: nounwind readonly
592 define fastcc <256 x double> @vgtu_vvssvl_imm_3(<256 x double> %0, <256 x double> %1) {
593 ; CHECK-LABEL: vgtu_vvssvl_imm_3:
595 ; CHECK-NEXT: lea %s0, 128
596 ; CHECK-NEXT: lvl %s0
597 ; CHECK-NEXT: vgtu %v1, %v0, 8, 0
598 ; CHECK-NEXT: lea %s16, 256
599 ; CHECK-NEXT: lvl %s16
600 ; CHECK-NEXT: vor %v0, (0)1, %v1
601 ; CHECK-NEXT: b.l.t (, %s10)
602 %3 = tail call fast <256 x double> @llvm.ve.vl.vgtu.vvssvl(<256 x double> %0, i64 8, i64 0, <256 x double> %1, i32 128)
603 ret <256 x double> %3
606 ; Function Attrs: nounwind readonly
607 define fastcc <256 x double> @vgtu_vvssml(<256 x double> %0, i64 %1, i64 %2, <256 x i1> %3) {
608 ; CHECK-LABEL: vgtu_vvssml:
610 ; CHECK-NEXT: lea %s2, 256
611 ; CHECK-NEXT: lvl %s2
612 ; CHECK-NEXT: vgtu %v0, %v0, %s0, %s1, %vm1
613 ; CHECK-NEXT: b.l.t (, %s10)
614 %5 = tail call fast <256 x double> @llvm.ve.vl.vgtu.vvssml(<256 x double> %0, i64 %1, i64 %2, <256 x i1> %3, i32 256)
615 ret <256 x double> %5
618 ; Function Attrs: nounwind readonly
619 declare <256 x double> @llvm.ve.vl.vgtu.vvssml(<256 x double>, i64, i64, <256 x i1>, i32)
621 ; Function Attrs: nounwind readonly
622 define fastcc <256 x double> @vgtu_vvssmvl(<256 x double> %0, i64 %1, i64 %2, <256 x i1> %3, <256 x double> %4) {
623 ; CHECK-LABEL: vgtu_vvssmvl:
625 ; CHECK-NEXT: lea %s2, 128
626 ; CHECK-NEXT: lvl %s2
627 ; CHECK-NEXT: vgtu %v1, %v0, %s0, %s1, %vm1
628 ; CHECK-NEXT: lea %s16, 256
629 ; CHECK-NEXT: lvl %s16
630 ; CHECK-NEXT: vor %v0, (0)1, %v1
631 ; CHECK-NEXT: b.l.t (, %s10)
632 %6 = tail call fast <256 x double> @llvm.ve.vl.vgtu.vvssmvl(<256 x double> %0, i64 %1, i64 %2, <256 x i1> %3, <256 x double> %4, i32 128)
633 ret <256 x double> %6
636 ; Function Attrs: nounwind readonly
637 declare <256 x double> @llvm.ve.vl.vgtu.vvssmvl(<256 x double>, i64, i64, <256 x i1>, <256 x double>, i32)
639 ; Function Attrs: nounwind readonly
640 define fastcc <256 x double> @vgtu_vvssml_imm_1(<256 x double> %0, i64 %1, <256 x i1> %2) {
641 ; CHECK-LABEL: vgtu_vvssml_imm_1:
643 ; CHECK-NEXT: lea %s1, 256
644 ; CHECK-NEXT: lvl %s1
645 ; CHECK-NEXT: vgtu %v0, %v0, %s0, 0, %vm1
646 ; CHECK-NEXT: b.l.t (, %s10)
647 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtu.vvssml(<256 x double> %0, i64 %1, i64 0, <256 x i1> %2, i32 256)
648 ret <256 x double> %4
651 ; Function Attrs: nounwind readonly
652 define fastcc <256 x double> @vgtu_vvssmvl_imm_1(<256 x double> %0, i64 %1, <256 x i1> %2, <256 x double> %3) {
653 ; CHECK-LABEL: vgtu_vvssmvl_imm_1:
655 ; CHECK-NEXT: lea %s1, 128
656 ; CHECK-NEXT: lvl %s1
657 ; CHECK-NEXT: vgtu %v1, %v0, %s0, 0, %vm1
658 ; CHECK-NEXT: lea %s16, 256
659 ; CHECK-NEXT: lvl %s16
660 ; CHECK-NEXT: vor %v0, (0)1, %v1
661 ; CHECK-NEXT: b.l.t (, %s10)
662 %5 = tail call fast <256 x double> @llvm.ve.vl.vgtu.vvssmvl(<256 x double> %0, i64 %1, i64 0, <256 x i1> %2, <256 x double> %3, i32 128)
663 ret <256 x double> %5
666 ; Function Attrs: nounwind readonly
667 define fastcc <256 x double> @vgtu_vvssml_imm_2(<256 x double> %0, i64 %1, <256 x i1> %2) {
668 ; CHECK-LABEL: vgtu_vvssml_imm_2:
670 ; CHECK-NEXT: lea %s1, 256
671 ; CHECK-NEXT: lvl %s1
672 ; CHECK-NEXT: vgtu %v0, %v0, 8, %s0, %vm1
673 ; CHECK-NEXT: b.l.t (, %s10)
674 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtu.vvssml(<256 x double> %0, i64 8, i64 %1, <256 x i1> %2, i32 256)
675 ret <256 x double> %4
678 ; Function Attrs: nounwind readonly
679 define fastcc <256 x double> @vgtu_vvssmvl_imm_2(<256 x double> %0, i64 %1, <256 x i1> %2, <256 x double> %3) {
680 ; CHECK-LABEL: vgtu_vvssmvl_imm_2:
682 ; CHECK-NEXT: lea %s1, 128
683 ; CHECK-NEXT: lvl %s1
684 ; CHECK-NEXT: vgtu %v1, %v0, 8, %s0, %vm1
685 ; CHECK-NEXT: lea %s16, 256
686 ; CHECK-NEXT: lvl %s16
687 ; CHECK-NEXT: vor %v0, (0)1, %v1
688 ; CHECK-NEXT: b.l.t (, %s10)
689 %5 = tail call fast <256 x double> @llvm.ve.vl.vgtu.vvssmvl(<256 x double> %0, i64 8, i64 %1, <256 x i1> %2, <256 x double> %3, i32 128)
690 ret <256 x double> %5
693 ; Function Attrs: nounwind readonly
694 define fastcc <256 x double> @vgtu_vvssml_imm_3(<256 x double> %0, <256 x i1> %1) {
695 ; CHECK-LABEL: vgtu_vvssml_imm_3:
697 ; CHECK-NEXT: lea %s0, 256
698 ; CHECK-NEXT: lvl %s0
699 ; CHECK-NEXT: vgtu %v0, %v0, 8, 0, %vm1
700 ; CHECK-NEXT: b.l.t (, %s10)
701 %3 = tail call fast <256 x double> @llvm.ve.vl.vgtu.vvssml(<256 x double> %0, i64 8, i64 0, <256 x i1> %1, i32 256)
702 ret <256 x double> %3
705 ; Function Attrs: nounwind readonly
706 define fastcc <256 x double> @vgtu_vvssmvl_imm_3(<256 x double> %0, <256 x i1> %1, <256 x double> %2) {
707 ; CHECK-LABEL: vgtu_vvssmvl_imm_3:
709 ; CHECK-NEXT: lea %s0, 128
710 ; CHECK-NEXT: lvl %s0
711 ; CHECK-NEXT: vgtu %v1, %v0, 8, 0, %vm1
712 ; CHECK-NEXT: lea %s16, 256
713 ; CHECK-NEXT: lvl %s16
714 ; CHECK-NEXT: vor %v0, (0)1, %v1
715 ; CHECK-NEXT: b.l.t (, %s10)
716 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtu.vvssmvl(<256 x double> %0, i64 8, i64 0, <256 x i1> %1, <256 x double> %2, i32 128)
717 ret <256 x double> %4
720 ; Function Attrs: nounwind readonly
721 define fastcc <256 x double> @vgtu_vvssl_no_imm_1(<256 x double> %0, i64 %1) {
722 ; CHECK-LABEL: vgtu_vvssl_no_imm_1:
724 ; CHECK-NEXT: lea %s1, 256
725 ; CHECK-NEXT: or %s2, 8, (0)1
726 ; CHECK-NEXT: lvl %s1
727 ; CHECK-NEXT: vgtu %v0, %v0, %s0, %s2
728 ; CHECK-NEXT: b.l.t (, %s10)
729 %3 = tail call fast <256 x double> @llvm.ve.vl.vgtu.vvssl(<256 x double> %0, i64 %1, i64 8, i32 256)
730 ret <256 x double> %3
733 ; Function Attrs: nounwind readonly
734 define fastcc <256 x double> @vgtunc_vvssl(<256 x double> %0, i64 %1, i64 %2) {
735 ; CHECK-LABEL: vgtunc_vvssl:
737 ; CHECK-NEXT: lea %s2, 256
738 ; CHECK-NEXT: lvl %s2
739 ; CHECK-NEXT: vgtu.nc %v0, %v0, %s0, %s1
740 ; CHECK-NEXT: b.l.t (, %s10)
741 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtunc.vvssl(<256 x double> %0, i64 %1, i64 %2, i32 256)
742 ret <256 x double> %4
745 ; Function Attrs: nounwind readonly
746 declare <256 x double> @llvm.ve.vl.vgtunc.vvssl(<256 x double>, i64, i64, i32)
748 ; Function Attrs: nounwind readonly
749 define fastcc <256 x double> @vgtunc_vvssvl(<256 x double> %0, i64 %1, i64 %2, <256 x double> %3) {
750 ; CHECK-LABEL: vgtunc_vvssvl:
752 ; CHECK-NEXT: lea %s2, 128
753 ; CHECK-NEXT: lvl %s2
754 ; CHECK-NEXT: vgtu.nc %v1, %v0, %s0, %s1
755 ; CHECK-NEXT: lea %s16, 256
756 ; CHECK-NEXT: lvl %s16
757 ; CHECK-NEXT: vor %v0, (0)1, %v1
758 ; CHECK-NEXT: b.l.t (, %s10)
759 %5 = tail call fast <256 x double> @llvm.ve.vl.vgtunc.vvssvl(<256 x double> %0, i64 %1, i64 %2, <256 x double> %3, i32 128)
760 ret <256 x double> %5
763 ; Function Attrs: nounwind readonly
764 declare <256 x double> @llvm.ve.vl.vgtunc.vvssvl(<256 x double>, i64, i64, <256 x double>, i32)
766 ; Function Attrs: nounwind readonly
767 define fastcc <256 x double> @vgtunc_vvssl_imm_1(<256 x double> %0, i64 %1) {
768 ; CHECK-LABEL: vgtunc_vvssl_imm_1:
770 ; CHECK-NEXT: lea %s1, 256
771 ; CHECK-NEXT: lvl %s1
772 ; CHECK-NEXT: vgtu.nc %v0, %v0, %s0, 0
773 ; CHECK-NEXT: b.l.t (, %s10)
774 %3 = tail call fast <256 x double> @llvm.ve.vl.vgtunc.vvssl(<256 x double> %0, i64 %1, i64 0, i32 256)
775 ret <256 x double> %3
778 ; Function Attrs: nounwind readonly
779 define fastcc <256 x double> @vgtunc_vvssvl_imm_1(<256 x double> %0, i64 %1, <256 x double> %2) {
780 ; CHECK-LABEL: vgtunc_vvssvl_imm_1:
782 ; CHECK-NEXT: lea %s1, 128
783 ; CHECK-NEXT: lvl %s1
784 ; CHECK-NEXT: vgtu.nc %v1, %v0, %s0, 0
785 ; CHECK-NEXT: lea %s16, 256
786 ; CHECK-NEXT: lvl %s16
787 ; CHECK-NEXT: vor %v0, (0)1, %v1
788 ; CHECK-NEXT: b.l.t (, %s10)
789 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtunc.vvssvl(<256 x double> %0, i64 %1, i64 0, <256 x double> %2, i32 128)
790 ret <256 x double> %4
793 ; Function Attrs: nounwind readonly
794 define fastcc <256 x double> @vgtunc_vvssl_imm_2(<256 x double> %0, i64 %1) {
795 ; CHECK-LABEL: vgtunc_vvssl_imm_2:
797 ; CHECK-NEXT: lea %s1, 256
798 ; CHECK-NEXT: lvl %s1
799 ; CHECK-NEXT: vgtu.nc %v0, %v0, 8, %s0
800 ; CHECK-NEXT: b.l.t (, %s10)
801 %3 = tail call fast <256 x double> @llvm.ve.vl.vgtunc.vvssl(<256 x double> %0, i64 8, i64 %1, i32 256)
802 ret <256 x double> %3
805 ; Function Attrs: nounwind readonly
806 define fastcc <256 x double> @vgtunc_vvssvl_imm_2(<256 x double> %0, i64 %1, <256 x double> %2) {
807 ; CHECK-LABEL: vgtunc_vvssvl_imm_2:
809 ; CHECK-NEXT: lea %s1, 128
810 ; CHECK-NEXT: lvl %s1
811 ; CHECK-NEXT: vgtu.nc %v1, %v0, 8, %s0
812 ; CHECK-NEXT: lea %s16, 256
813 ; CHECK-NEXT: lvl %s16
814 ; CHECK-NEXT: vor %v0, (0)1, %v1
815 ; CHECK-NEXT: b.l.t (, %s10)
816 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtunc.vvssvl(<256 x double> %0, i64 8, i64 %1, <256 x double> %2, i32 128)
817 ret <256 x double> %4
820 ; Function Attrs: nounwind readonly
821 define fastcc <256 x double> @vgtunc_vvssl_imm_3(<256 x double> %0) {
822 ; CHECK-LABEL: vgtunc_vvssl_imm_3:
824 ; CHECK-NEXT: lea %s0, 256
825 ; CHECK-NEXT: lvl %s0
826 ; CHECK-NEXT: vgtu.nc %v0, %v0, 8, 0
827 ; CHECK-NEXT: b.l.t (, %s10)
828 %2 = tail call fast <256 x double> @llvm.ve.vl.vgtunc.vvssl(<256 x double> %0, i64 8, i64 0, i32 256)
829 ret <256 x double> %2
832 ; Function Attrs: nounwind readonly
833 define fastcc <256 x double> @vgtunc_vvssvl_imm_3(<256 x double> %0, <256 x double> %1) {
834 ; CHECK-LABEL: vgtunc_vvssvl_imm_3:
836 ; CHECK-NEXT: lea %s0, 128
837 ; CHECK-NEXT: lvl %s0
838 ; CHECK-NEXT: vgtu.nc %v1, %v0, 8, 0
839 ; CHECK-NEXT: lea %s16, 256
840 ; CHECK-NEXT: lvl %s16
841 ; CHECK-NEXT: vor %v0, (0)1, %v1
842 ; CHECK-NEXT: b.l.t (, %s10)
843 %3 = tail call fast <256 x double> @llvm.ve.vl.vgtunc.vvssvl(<256 x double> %0, i64 8, i64 0, <256 x double> %1, i32 128)
844 ret <256 x double> %3
847 ; Function Attrs: nounwind readonly
848 define fastcc <256 x double> @vgtunc_vvssml(<256 x double> %0, i64 %1, i64 %2, <256 x i1> %3) {
849 ; CHECK-LABEL: vgtunc_vvssml:
851 ; CHECK-NEXT: lea %s2, 256
852 ; CHECK-NEXT: lvl %s2
853 ; CHECK-NEXT: vgtu.nc %v0, %v0, %s0, %s1, %vm1
854 ; CHECK-NEXT: b.l.t (, %s10)
855 %5 = tail call fast <256 x double> @llvm.ve.vl.vgtunc.vvssml(<256 x double> %0, i64 %1, i64 %2, <256 x i1> %3, i32 256)
856 ret <256 x double> %5
859 ; Function Attrs: nounwind readonly
860 declare <256 x double> @llvm.ve.vl.vgtunc.vvssml(<256 x double>, i64, i64, <256 x i1>, i32)
862 ; Function Attrs: nounwind readonly
863 define fastcc <256 x double> @vgtunc_vvssmvl(<256 x double> %0, i64 %1, i64 %2, <256 x i1> %3, <256 x double> %4) {
864 ; CHECK-LABEL: vgtunc_vvssmvl:
866 ; CHECK-NEXT: lea %s2, 128
867 ; CHECK-NEXT: lvl %s2
868 ; CHECK-NEXT: vgtu.nc %v1, %v0, %s0, %s1, %vm1
869 ; CHECK-NEXT: lea %s16, 256
870 ; CHECK-NEXT: lvl %s16
871 ; CHECK-NEXT: vor %v0, (0)1, %v1
872 ; CHECK-NEXT: b.l.t (, %s10)
873 %6 = tail call fast <256 x double> @llvm.ve.vl.vgtunc.vvssmvl(<256 x double> %0, i64 %1, i64 %2, <256 x i1> %3, <256 x double> %4, i32 128)
874 ret <256 x double> %6
877 ; Function Attrs: nounwind readonly
878 declare <256 x double> @llvm.ve.vl.vgtunc.vvssmvl(<256 x double>, i64, i64, <256 x i1>, <256 x double>, i32)
880 ; Function Attrs: nounwind readonly
881 define fastcc <256 x double> @vgtunc_vvssml_imm_1(<256 x double> %0, i64 %1, <256 x i1> %2) {
882 ; CHECK-LABEL: vgtunc_vvssml_imm_1:
884 ; CHECK-NEXT: lea %s1, 256
885 ; CHECK-NEXT: lvl %s1
886 ; CHECK-NEXT: vgtu.nc %v0, %v0, %s0, 0, %vm1
887 ; CHECK-NEXT: b.l.t (, %s10)
888 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtunc.vvssml(<256 x double> %0, i64 %1, i64 0, <256 x i1> %2, i32 256)
889 ret <256 x double> %4
892 ; Function Attrs: nounwind readonly
893 define fastcc <256 x double> @vgtunc_vvssmvl_imm_1(<256 x double> %0, i64 %1, <256 x i1> %2, <256 x double> %3) {
894 ; CHECK-LABEL: vgtunc_vvssmvl_imm_1:
896 ; CHECK-NEXT: lea %s1, 128
897 ; CHECK-NEXT: lvl %s1
898 ; CHECK-NEXT: vgtu.nc %v1, %v0, %s0, 0, %vm1
899 ; CHECK-NEXT: lea %s16, 256
900 ; CHECK-NEXT: lvl %s16
901 ; CHECK-NEXT: vor %v0, (0)1, %v1
902 ; CHECK-NEXT: b.l.t (, %s10)
903 %5 = tail call fast <256 x double> @llvm.ve.vl.vgtunc.vvssmvl(<256 x double> %0, i64 %1, i64 0, <256 x i1> %2, <256 x double> %3, i32 128)
904 ret <256 x double> %5
907 ; Function Attrs: nounwind readonly
908 define fastcc <256 x double> @vgtunc_vvssml_imm_2(<256 x double> %0, i64 %1, <256 x i1> %2) {
909 ; CHECK-LABEL: vgtunc_vvssml_imm_2:
911 ; CHECK-NEXT: lea %s1, 256
912 ; CHECK-NEXT: lvl %s1
913 ; CHECK-NEXT: vgtu.nc %v0, %v0, 8, %s0, %vm1
914 ; CHECK-NEXT: b.l.t (, %s10)
915 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtunc.vvssml(<256 x double> %0, i64 8, i64 %1, <256 x i1> %2, i32 256)
916 ret <256 x double> %4
919 ; Function Attrs: nounwind readonly
920 define fastcc <256 x double> @vgtunc_vvssmvl_imm_2(<256 x double> %0, i64 %1, <256 x i1> %2, <256 x double> %3) {
921 ; CHECK-LABEL: vgtunc_vvssmvl_imm_2:
923 ; CHECK-NEXT: lea %s1, 128
924 ; CHECK-NEXT: lvl %s1
925 ; CHECK-NEXT: vgtu.nc %v1, %v0, 8, %s0, %vm1
926 ; CHECK-NEXT: lea %s16, 256
927 ; CHECK-NEXT: lvl %s16
928 ; CHECK-NEXT: vor %v0, (0)1, %v1
929 ; CHECK-NEXT: b.l.t (, %s10)
930 %5 = tail call fast <256 x double> @llvm.ve.vl.vgtunc.vvssmvl(<256 x double> %0, i64 8, i64 %1, <256 x i1> %2, <256 x double> %3, i32 128)
931 ret <256 x double> %5
934 ; Function Attrs: nounwind readonly
935 define fastcc <256 x double> @vgtunc_vvssml_imm_3(<256 x double> %0, <256 x i1> %1) {
936 ; CHECK-LABEL: vgtunc_vvssml_imm_3:
938 ; CHECK-NEXT: lea %s0, 256
939 ; CHECK-NEXT: lvl %s0
940 ; CHECK-NEXT: vgtu.nc %v0, %v0, 8, 0, %vm1
941 ; CHECK-NEXT: b.l.t (, %s10)
942 %3 = tail call fast <256 x double> @llvm.ve.vl.vgtunc.vvssml(<256 x double> %0, i64 8, i64 0, <256 x i1> %1, i32 256)
943 ret <256 x double> %3
946 ; Function Attrs: nounwind readonly
947 define fastcc <256 x double> @vgtunc_vvssmvl_imm_3(<256 x double> %0, <256 x i1> %1, <256 x double> %2) {
948 ; CHECK-LABEL: vgtunc_vvssmvl_imm_3:
950 ; CHECK-NEXT: lea %s0, 128
951 ; CHECK-NEXT: lvl %s0
952 ; CHECK-NEXT: vgtu.nc %v1, %v0, 8, 0, %vm1
953 ; CHECK-NEXT: lea %s16, 256
954 ; CHECK-NEXT: lvl %s16
955 ; CHECK-NEXT: vor %v0, (0)1, %v1
956 ; CHECK-NEXT: b.l.t (, %s10)
957 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtunc.vvssmvl(<256 x double> %0, i64 8, i64 0, <256 x i1> %1, <256 x double> %2, i32 128)
958 ret <256 x double> %4
961 ; Function Attrs: nounwind readonly
962 define fastcc <256 x double> @vgtunc_vvssl_no_imm_1(<256 x double> %0, i64 %1) {
963 ; CHECK-LABEL: vgtunc_vvssl_no_imm_1:
965 ; CHECK-NEXT: lea %s1, 256
966 ; CHECK-NEXT: or %s2, 8, (0)1
967 ; CHECK-NEXT: lvl %s1
968 ; CHECK-NEXT: vgtu.nc %v0, %v0, %s0, %s2
969 ; CHECK-NEXT: b.l.t (, %s10)
970 %3 = tail call fast <256 x double> @llvm.ve.vl.vgtunc.vvssl(<256 x double> %0, i64 %1, i64 8, i32 256)
971 ret <256 x double> %3
974 ; Function Attrs: nounwind readonly
975 define fastcc <256 x double> @vgtlsx_vvssl(<256 x double> %0, i64 %1, i64 %2) {
976 ; CHECK-LABEL: vgtlsx_vvssl:
978 ; CHECK-NEXT: lea %s2, 256
979 ; CHECK-NEXT: lvl %s2
980 ; CHECK-NEXT: vgtl.sx %v0, %v0, %s0, %s1
981 ; CHECK-NEXT: b.l.t (, %s10)
982 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtlsx.vvssl(<256 x double> %0, i64 %1, i64 %2, i32 256)
983 ret <256 x double> %4
986 ; Function Attrs: nounwind readonly
987 declare <256 x double> @llvm.ve.vl.vgtlsx.vvssl(<256 x double>, i64, i64, i32)
989 ; Function Attrs: nounwind readonly
990 define fastcc <256 x double> @vgtlsx_vvssvl(<256 x double> %0, i64 %1, i64 %2, <256 x double> %3) {
991 ; CHECK-LABEL: vgtlsx_vvssvl:
993 ; CHECK-NEXT: lea %s2, 128
994 ; CHECK-NEXT: lvl %s2
995 ; CHECK-NEXT: vgtl.sx %v1, %v0, %s0, %s1
996 ; CHECK-NEXT: lea %s16, 256
997 ; CHECK-NEXT: lvl %s16
998 ; CHECK-NEXT: vor %v0, (0)1, %v1
999 ; CHECK-NEXT: b.l.t (, %s10)
1000 %5 = tail call fast <256 x double> @llvm.ve.vl.vgtlsx.vvssvl(<256 x double> %0, i64 %1, i64 %2, <256 x double> %3, i32 128)
1001 ret <256 x double> %5
1004 ; Function Attrs: nounwind readonly
1005 declare <256 x double> @llvm.ve.vl.vgtlsx.vvssvl(<256 x double>, i64, i64, <256 x double>, i32)
1007 ; Function Attrs: nounwind readonly
1008 define fastcc <256 x double> @vgtlsx_vvssl_imm_1(<256 x double> %0, i64 %1) {
1009 ; CHECK-LABEL: vgtlsx_vvssl_imm_1:
1011 ; CHECK-NEXT: lea %s1, 256
1012 ; CHECK-NEXT: lvl %s1
1013 ; CHECK-NEXT: vgtl.sx %v0, %v0, %s0, 0
1014 ; CHECK-NEXT: b.l.t (, %s10)
1015 %3 = tail call fast <256 x double> @llvm.ve.vl.vgtlsx.vvssl(<256 x double> %0, i64 %1, i64 0, i32 256)
1016 ret <256 x double> %3
1019 ; Function Attrs: nounwind readonly
1020 define fastcc <256 x double> @vgtlsx_vvssvl_imm_1(<256 x double> %0, i64 %1, <256 x double> %2) {
1021 ; CHECK-LABEL: vgtlsx_vvssvl_imm_1:
1023 ; CHECK-NEXT: lea %s1, 128
1024 ; CHECK-NEXT: lvl %s1
1025 ; CHECK-NEXT: vgtl.sx %v1, %v0, %s0, 0
1026 ; CHECK-NEXT: lea %s16, 256
1027 ; CHECK-NEXT: lvl %s16
1028 ; CHECK-NEXT: vor %v0, (0)1, %v1
1029 ; CHECK-NEXT: b.l.t (, %s10)
1030 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtlsx.vvssvl(<256 x double> %0, i64 %1, i64 0, <256 x double> %2, i32 128)
1031 ret <256 x double> %4
1034 ; Function Attrs: nounwind readonly
1035 define fastcc <256 x double> @vgtlsx_vvssl_imm_2(<256 x double> %0, i64 %1) {
1036 ; CHECK-LABEL: vgtlsx_vvssl_imm_2:
1038 ; CHECK-NEXT: lea %s1, 256
1039 ; CHECK-NEXT: lvl %s1
1040 ; CHECK-NEXT: vgtl.sx %v0, %v0, 8, %s0
1041 ; CHECK-NEXT: b.l.t (, %s10)
1042 %3 = tail call fast <256 x double> @llvm.ve.vl.vgtlsx.vvssl(<256 x double> %0, i64 8, i64 %1, i32 256)
1043 ret <256 x double> %3
1046 ; Function Attrs: nounwind readonly
1047 define fastcc <256 x double> @vgtlsx_vvssvl_imm_2(<256 x double> %0, i64 %1, <256 x double> %2) {
1048 ; CHECK-LABEL: vgtlsx_vvssvl_imm_2:
1050 ; CHECK-NEXT: lea %s1, 128
1051 ; CHECK-NEXT: lvl %s1
1052 ; CHECK-NEXT: vgtl.sx %v1, %v0, 8, %s0
1053 ; CHECK-NEXT: lea %s16, 256
1054 ; CHECK-NEXT: lvl %s16
1055 ; CHECK-NEXT: vor %v0, (0)1, %v1
1056 ; CHECK-NEXT: b.l.t (, %s10)
1057 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtlsx.vvssvl(<256 x double> %0, i64 8, i64 %1, <256 x double> %2, i32 128)
1058 ret <256 x double> %4
1061 ; Function Attrs: nounwind readonly
1062 define fastcc <256 x double> @vgtlsx_vvssl_imm_3(<256 x double> %0) {
1063 ; CHECK-LABEL: vgtlsx_vvssl_imm_3:
1065 ; CHECK-NEXT: lea %s0, 256
1066 ; CHECK-NEXT: lvl %s0
1067 ; CHECK-NEXT: vgtl.sx %v0, %v0, 8, 0
1068 ; CHECK-NEXT: b.l.t (, %s10)
1069 %2 = tail call fast <256 x double> @llvm.ve.vl.vgtlsx.vvssl(<256 x double> %0, i64 8, i64 0, i32 256)
1070 ret <256 x double> %2
1073 ; Function Attrs: nounwind readonly
1074 define fastcc <256 x double> @vgtlsx_vvssvl_imm_3(<256 x double> %0, <256 x double> %1) {
1075 ; CHECK-LABEL: vgtlsx_vvssvl_imm_3:
1077 ; CHECK-NEXT: lea %s0, 128
1078 ; CHECK-NEXT: lvl %s0
1079 ; CHECK-NEXT: vgtl.sx %v1, %v0, 8, 0
1080 ; CHECK-NEXT: lea %s16, 256
1081 ; CHECK-NEXT: lvl %s16
1082 ; CHECK-NEXT: vor %v0, (0)1, %v1
1083 ; CHECK-NEXT: b.l.t (, %s10)
1084 %3 = tail call fast <256 x double> @llvm.ve.vl.vgtlsx.vvssvl(<256 x double> %0, i64 8, i64 0, <256 x double> %1, i32 128)
1085 ret <256 x double> %3
1088 ; Function Attrs: nounwind readonly
1089 define fastcc <256 x double> @vgtlsx_vvssml(<256 x double> %0, i64 %1, i64 %2, <256 x i1> %3) {
1090 ; CHECK-LABEL: vgtlsx_vvssml:
1092 ; CHECK-NEXT: lea %s2, 256
1093 ; CHECK-NEXT: lvl %s2
1094 ; CHECK-NEXT: vgtl.sx %v0, %v0, %s0, %s1, %vm1
1095 ; CHECK-NEXT: b.l.t (, %s10)
1096 %5 = tail call fast <256 x double> @llvm.ve.vl.vgtlsx.vvssml(<256 x double> %0, i64 %1, i64 %2, <256 x i1> %3, i32 256)
1097 ret <256 x double> %5
1100 ; Function Attrs: nounwind readonly
1101 declare <256 x double> @llvm.ve.vl.vgtlsx.vvssml(<256 x double>, i64, i64, <256 x i1>, i32)
1103 ; Function Attrs: nounwind readonly
1104 define fastcc <256 x double> @vgtlsx_vvssmvl(<256 x double> %0, i64 %1, i64 %2, <256 x i1> %3, <256 x double> %4) {
1105 ; CHECK-LABEL: vgtlsx_vvssmvl:
1107 ; CHECK-NEXT: lea %s2, 128
1108 ; CHECK-NEXT: lvl %s2
1109 ; CHECK-NEXT: vgtl.sx %v1, %v0, %s0, %s1, %vm1
1110 ; CHECK-NEXT: lea %s16, 256
1111 ; CHECK-NEXT: lvl %s16
1112 ; CHECK-NEXT: vor %v0, (0)1, %v1
1113 ; CHECK-NEXT: b.l.t (, %s10)
1114 %6 = tail call fast <256 x double> @llvm.ve.vl.vgtlsx.vvssmvl(<256 x double> %0, i64 %1, i64 %2, <256 x i1> %3, <256 x double> %4, i32 128)
1115 ret <256 x double> %6
1118 ; Function Attrs: nounwind readonly
1119 declare <256 x double> @llvm.ve.vl.vgtlsx.vvssmvl(<256 x double>, i64, i64, <256 x i1>, <256 x double>, i32)
1121 ; Function Attrs: nounwind readonly
1122 define fastcc <256 x double> @vgtlsx_vvssml_imm_1(<256 x double> %0, i64 %1, <256 x i1> %2) {
1123 ; CHECK-LABEL: vgtlsx_vvssml_imm_1:
1125 ; CHECK-NEXT: lea %s1, 256
1126 ; CHECK-NEXT: lvl %s1
1127 ; CHECK-NEXT: vgtl.sx %v0, %v0, %s0, 0, %vm1
1128 ; CHECK-NEXT: b.l.t (, %s10)
1129 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtlsx.vvssml(<256 x double> %0, i64 %1, i64 0, <256 x i1> %2, i32 256)
1130 ret <256 x double> %4
1133 ; Function Attrs: nounwind readonly
1134 define fastcc <256 x double> @vgtlsx_vvssmvl_imm_1(<256 x double> %0, i64 %1, <256 x i1> %2, <256 x double> %3) {
1135 ; CHECK-LABEL: vgtlsx_vvssmvl_imm_1:
1137 ; CHECK-NEXT: lea %s1, 128
1138 ; CHECK-NEXT: lvl %s1
1139 ; CHECK-NEXT: vgtl.sx %v1, %v0, %s0, 0, %vm1
1140 ; CHECK-NEXT: lea %s16, 256
1141 ; CHECK-NEXT: lvl %s16
1142 ; CHECK-NEXT: vor %v0, (0)1, %v1
1143 ; CHECK-NEXT: b.l.t (, %s10)
1144 %5 = tail call fast <256 x double> @llvm.ve.vl.vgtlsx.vvssmvl(<256 x double> %0, i64 %1, i64 0, <256 x i1> %2, <256 x double> %3, i32 128)
1145 ret <256 x double> %5
1148 ; Function Attrs: nounwind readonly
1149 define fastcc <256 x double> @vgtlsx_vvssml_imm_2(<256 x double> %0, i64 %1, <256 x i1> %2) {
1150 ; CHECK-LABEL: vgtlsx_vvssml_imm_2:
1152 ; CHECK-NEXT: lea %s1, 256
1153 ; CHECK-NEXT: lvl %s1
1154 ; CHECK-NEXT: vgtl.sx %v0, %v0, 8, %s0, %vm1
1155 ; CHECK-NEXT: b.l.t (, %s10)
1156 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtlsx.vvssml(<256 x double> %0, i64 8, i64 %1, <256 x i1> %2, i32 256)
1157 ret <256 x double> %4
1160 ; Function Attrs: nounwind readonly
1161 define fastcc <256 x double> @vgtlsx_vvssmvl_imm_2(<256 x double> %0, i64 %1, <256 x i1> %2, <256 x double> %3) {
1162 ; CHECK-LABEL: vgtlsx_vvssmvl_imm_2:
1164 ; CHECK-NEXT: lea %s1, 128
1165 ; CHECK-NEXT: lvl %s1
1166 ; CHECK-NEXT: vgtl.sx %v1, %v0, 8, %s0, %vm1
1167 ; CHECK-NEXT: lea %s16, 256
1168 ; CHECK-NEXT: lvl %s16
1169 ; CHECK-NEXT: vor %v0, (0)1, %v1
1170 ; CHECK-NEXT: b.l.t (, %s10)
1171 %5 = tail call fast <256 x double> @llvm.ve.vl.vgtlsx.vvssmvl(<256 x double> %0, i64 8, i64 %1, <256 x i1> %2, <256 x double> %3, i32 128)
1172 ret <256 x double> %5
1175 ; Function Attrs: nounwind readonly
1176 define fastcc <256 x double> @vgtlsx_vvssml_imm_3(<256 x double> %0, <256 x i1> %1) {
1177 ; CHECK-LABEL: vgtlsx_vvssml_imm_3:
1179 ; CHECK-NEXT: lea %s0, 256
1180 ; CHECK-NEXT: lvl %s0
1181 ; CHECK-NEXT: vgtl.sx %v0, %v0, 8, 0, %vm1
1182 ; CHECK-NEXT: b.l.t (, %s10)
1183 %3 = tail call fast <256 x double> @llvm.ve.vl.vgtlsx.vvssml(<256 x double> %0, i64 8, i64 0, <256 x i1> %1, i32 256)
1184 ret <256 x double> %3
1187 ; Function Attrs: nounwind readonly
1188 define fastcc <256 x double> @vgtlsx_vvssmvl_imm_3(<256 x double> %0, <256 x i1> %1, <256 x double> %2) {
1189 ; CHECK-LABEL: vgtlsx_vvssmvl_imm_3:
1191 ; CHECK-NEXT: lea %s0, 128
1192 ; CHECK-NEXT: lvl %s0
1193 ; CHECK-NEXT: vgtl.sx %v1, %v0, 8, 0, %vm1
1194 ; CHECK-NEXT: lea %s16, 256
1195 ; CHECK-NEXT: lvl %s16
1196 ; CHECK-NEXT: vor %v0, (0)1, %v1
1197 ; CHECK-NEXT: b.l.t (, %s10)
1198 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtlsx.vvssmvl(<256 x double> %0, i64 8, i64 0, <256 x i1> %1, <256 x double> %2, i32 128)
1199 ret <256 x double> %4
1202 ; Function Attrs: nounwind readonly
1203 define fastcc <256 x double> @vgtlsx_vvssl_no_imm_1(<256 x double> %0, i64 %1) {
1204 ; CHECK-LABEL: vgtlsx_vvssl_no_imm_1:
1206 ; CHECK-NEXT: lea %s1, 256
1207 ; CHECK-NEXT: or %s2, 8, (0)1
1208 ; CHECK-NEXT: lvl %s1
1209 ; CHECK-NEXT: vgtl.sx %v0, %v0, %s0, %s2
1210 ; CHECK-NEXT: b.l.t (, %s10)
1211 %3 = tail call fast <256 x double> @llvm.ve.vl.vgtlsx.vvssl(<256 x double> %0, i64 %1, i64 8, i32 256)
1212 ret <256 x double> %3
1215 ; Function Attrs: nounwind readonly
1216 define fastcc <256 x double> @vgtlsxnc_vvssl(<256 x double> %0, i64 %1, i64 %2) {
1217 ; CHECK-LABEL: vgtlsxnc_vvssl:
1219 ; CHECK-NEXT: lea %s2, 256
1220 ; CHECK-NEXT: lvl %s2
1221 ; CHECK-NEXT: vgtl.sx.nc %v0, %v0, %s0, %s1
1222 ; CHECK-NEXT: b.l.t (, %s10)
1223 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtlsxnc.vvssl(<256 x double> %0, i64 %1, i64 %2, i32 256)
1224 ret <256 x double> %4
1227 ; Function Attrs: nounwind readonly
1228 declare <256 x double> @llvm.ve.vl.vgtlsxnc.vvssl(<256 x double>, i64, i64, i32)
1230 ; Function Attrs: nounwind readonly
1231 define fastcc <256 x double> @vgtlsxnc_vvssvl(<256 x double> %0, i64 %1, i64 %2, <256 x double> %3) {
1232 ; CHECK-LABEL: vgtlsxnc_vvssvl:
1234 ; CHECK-NEXT: lea %s2, 128
1235 ; CHECK-NEXT: lvl %s2
1236 ; CHECK-NEXT: vgtl.sx.nc %v1, %v0, %s0, %s1
1237 ; CHECK-NEXT: lea %s16, 256
1238 ; CHECK-NEXT: lvl %s16
1239 ; CHECK-NEXT: vor %v0, (0)1, %v1
1240 ; CHECK-NEXT: b.l.t (, %s10)
1241 %5 = tail call fast <256 x double> @llvm.ve.vl.vgtlsxnc.vvssvl(<256 x double> %0, i64 %1, i64 %2, <256 x double> %3, i32 128)
1242 ret <256 x double> %5
1245 ; Function Attrs: nounwind readonly
1246 declare <256 x double> @llvm.ve.vl.vgtlsxnc.vvssvl(<256 x double>, i64, i64, <256 x double>, i32)
1248 ; Function Attrs: nounwind readonly
1249 define fastcc <256 x double> @vgtlsxnc_vvssl_imm_1(<256 x double> %0, i64 %1) {
1250 ; CHECK-LABEL: vgtlsxnc_vvssl_imm_1:
1252 ; CHECK-NEXT: lea %s1, 256
1253 ; CHECK-NEXT: lvl %s1
1254 ; CHECK-NEXT: vgtl.sx.nc %v0, %v0, %s0, 0
1255 ; CHECK-NEXT: b.l.t (, %s10)
1256 %3 = tail call fast <256 x double> @llvm.ve.vl.vgtlsxnc.vvssl(<256 x double> %0, i64 %1, i64 0, i32 256)
1257 ret <256 x double> %3
1260 ; Function Attrs: nounwind readonly
1261 define fastcc <256 x double> @vgtlsxnc_vvssvl_imm_1(<256 x double> %0, i64 %1, <256 x double> %2) {
1262 ; CHECK-LABEL: vgtlsxnc_vvssvl_imm_1:
1264 ; CHECK-NEXT: lea %s1, 128
1265 ; CHECK-NEXT: lvl %s1
1266 ; CHECK-NEXT: vgtl.sx.nc %v1, %v0, %s0, 0
1267 ; CHECK-NEXT: lea %s16, 256
1268 ; CHECK-NEXT: lvl %s16
1269 ; CHECK-NEXT: vor %v0, (0)1, %v1
1270 ; CHECK-NEXT: b.l.t (, %s10)
1271 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtlsxnc.vvssvl(<256 x double> %0, i64 %1, i64 0, <256 x double> %2, i32 128)
1272 ret <256 x double> %4
1275 ; Function Attrs: nounwind readonly
1276 define fastcc <256 x double> @vgtlsxnc_vvssl_imm_2(<256 x double> %0, i64 %1) {
1277 ; CHECK-LABEL: vgtlsxnc_vvssl_imm_2:
1279 ; CHECK-NEXT: lea %s1, 256
1280 ; CHECK-NEXT: lvl %s1
1281 ; CHECK-NEXT: vgtl.sx.nc %v0, %v0, 8, %s0
1282 ; CHECK-NEXT: b.l.t (, %s10)
1283 %3 = tail call fast <256 x double> @llvm.ve.vl.vgtlsxnc.vvssl(<256 x double> %0, i64 8, i64 %1, i32 256)
1284 ret <256 x double> %3
1287 ; Function Attrs: nounwind readonly
1288 define fastcc <256 x double> @vgtlsxnc_vvssvl_imm_2(<256 x double> %0, i64 %1, <256 x double> %2) {
1289 ; CHECK-LABEL: vgtlsxnc_vvssvl_imm_2:
1291 ; CHECK-NEXT: lea %s1, 128
1292 ; CHECK-NEXT: lvl %s1
1293 ; CHECK-NEXT: vgtl.sx.nc %v1, %v0, 8, %s0
1294 ; CHECK-NEXT: lea %s16, 256
1295 ; CHECK-NEXT: lvl %s16
1296 ; CHECK-NEXT: vor %v0, (0)1, %v1
1297 ; CHECK-NEXT: b.l.t (, %s10)
1298 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtlsxnc.vvssvl(<256 x double> %0, i64 8, i64 %1, <256 x double> %2, i32 128)
1299 ret <256 x double> %4
1302 ; Function Attrs: nounwind readonly
1303 define fastcc <256 x double> @vgtlsxnc_vvssl_imm_3(<256 x double> %0) {
1304 ; CHECK-LABEL: vgtlsxnc_vvssl_imm_3:
1306 ; CHECK-NEXT: lea %s0, 256
1307 ; CHECK-NEXT: lvl %s0
1308 ; CHECK-NEXT: vgtl.sx.nc %v0, %v0, 8, 0
1309 ; CHECK-NEXT: b.l.t (, %s10)
1310 %2 = tail call fast <256 x double> @llvm.ve.vl.vgtlsxnc.vvssl(<256 x double> %0, i64 8, i64 0, i32 256)
1311 ret <256 x double> %2
1314 ; Function Attrs: nounwind readonly
1315 define fastcc <256 x double> @vgtlsxnc_vvssvl_imm_3(<256 x double> %0, <256 x double> %1) {
1316 ; CHECK-LABEL: vgtlsxnc_vvssvl_imm_3:
1318 ; CHECK-NEXT: lea %s0, 128
1319 ; CHECK-NEXT: lvl %s0
1320 ; CHECK-NEXT: vgtl.sx.nc %v1, %v0, 8, 0
1321 ; CHECK-NEXT: lea %s16, 256
1322 ; CHECK-NEXT: lvl %s16
1323 ; CHECK-NEXT: vor %v0, (0)1, %v1
1324 ; CHECK-NEXT: b.l.t (, %s10)
1325 %3 = tail call fast <256 x double> @llvm.ve.vl.vgtlsxnc.vvssvl(<256 x double> %0, i64 8, i64 0, <256 x double> %1, i32 128)
1326 ret <256 x double> %3
1329 ; Function Attrs: nounwind readonly
1330 define fastcc <256 x double> @vgtlsxnc_vvssml(<256 x double> %0, i64 %1, i64 %2, <256 x i1> %3) {
1331 ; CHECK-LABEL: vgtlsxnc_vvssml:
1333 ; CHECK-NEXT: lea %s2, 256
1334 ; CHECK-NEXT: lvl %s2
1335 ; CHECK-NEXT: vgtl.sx.nc %v0, %v0, %s0, %s1, %vm1
1336 ; CHECK-NEXT: b.l.t (, %s10)
1337 %5 = tail call fast <256 x double> @llvm.ve.vl.vgtlsxnc.vvssml(<256 x double> %0, i64 %1, i64 %2, <256 x i1> %3, i32 256)
1338 ret <256 x double> %5
1341 ; Function Attrs: nounwind readonly
1342 declare <256 x double> @llvm.ve.vl.vgtlsxnc.vvssml(<256 x double>, i64, i64, <256 x i1>, i32)
1344 ; Function Attrs: nounwind readonly
1345 define fastcc <256 x double> @vgtlsxnc_vvssmvl(<256 x double> %0, i64 %1, i64 %2, <256 x i1> %3, <256 x double> %4) {
1346 ; CHECK-LABEL: vgtlsxnc_vvssmvl:
1348 ; CHECK-NEXT: lea %s2, 128
1349 ; CHECK-NEXT: lvl %s2
1350 ; CHECK-NEXT: vgtl.sx.nc %v1, %v0, %s0, %s1, %vm1
1351 ; CHECK-NEXT: lea %s16, 256
1352 ; CHECK-NEXT: lvl %s16
1353 ; CHECK-NEXT: vor %v0, (0)1, %v1
1354 ; CHECK-NEXT: b.l.t (, %s10)
1355 %6 = tail call fast <256 x double> @llvm.ve.vl.vgtlsxnc.vvssmvl(<256 x double> %0, i64 %1, i64 %2, <256 x i1> %3, <256 x double> %4, i32 128)
1356 ret <256 x double> %6
1359 ; Function Attrs: nounwind readonly
1360 declare <256 x double> @llvm.ve.vl.vgtlsxnc.vvssmvl(<256 x double>, i64, i64, <256 x i1>, <256 x double>, i32)
1362 ; Function Attrs: nounwind readonly
1363 define fastcc <256 x double> @vgtlsxnc_vvssml_imm_1(<256 x double> %0, i64 %1, <256 x i1> %2) {
1364 ; CHECK-LABEL: vgtlsxnc_vvssml_imm_1:
1366 ; CHECK-NEXT: lea %s1, 256
1367 ; CHECK-NEXT: lvl %s1
1368 ; CHECK-NEXT: vgtl.sx.nc %v0, %v0, %s0, 0, %vm1
1369 ; CHECK-NEXT: b.l.t (, %s10)
1370 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtlsxnc.vvssml(<256 x double> %0, i64 %1, i64 0, <256 x i1> %2, i32 256)
1371 ret <256 x double> %4
1374 ; Function Attrs: nounwind readonly
1375 define fastcc <256 x double> @vgtlsxnc_vvssmvl_imm_1(<256 x double> %0, i64 %1, <256 x i1> %2, <256 x double> %3) {
1376 ; CHECK-LABEL: vgtlsxnc_vvssmvl_imm_1:
1378 ; CHECK-NEXT: lea %s1, 128
1379 ; CHECK-NEXT: lvl %s1
1380 ; CHECK-NEXT: vgtl.sx.nc %v1, %v0, %s0, 0, %vm1
1381 ; CHECK-NEXT: lea %s16, 256
1382 ; CHECK-NEXT: lvl %s16
1383 ; CHECK-NEXT: vor %v0, (0)1, %v1
1384 ; CHECK-NEXT: b.l.t (, %s10)
1385 %5 = tail call fast <256 x double> @llvm.ve.vl.vgtlsxnc.vvssmvl(<256 x double> %0, i64 %1, i64 0, <256 x i1> %2, <256 x double> %3, i32 128)
1386 ret <256 x double> %5
1389 ; Function Attrs: nounwind readonly
1390 define fastcc <256 x double> @vgtlsxnc_vvssml_imm_2(<256 x double> %0, i64 %1, <256 x i1> %2) {
1391 ; CHECK-LABEL: vgtlsxnc_vvssml_imm_2:
1393 ; CHECK-NEXT: lea %s1, 256
1394 ; CHECK-NEXT: lvl %s1
1395 ; CHECK-NEXT: vgtl.sx.nc %v0, %v0, 8, %s0, %vm1
1396 ; CHECK-NEXT: b.l.t (, %s10)
1397 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtlsxnc.vvssml(<256 x double> %0, i64 8, i64 %1, <256 x i1> %2, i32 256)
1398 ret <256 x double> %4
1401 ; Function Attrs: nounwind readonly
1402 define fastcc <256 x double> @vgtlsxnc_vvssmvl_imm_2(<256 x double> %0, i64 %1, <256 x i1> %2, <256 x double> %3) {
1403 ; CHECK-LABEL: vgtlsxnc_vvssmvl_imm_2:
1405 ; CHECK-NEXT: lea %s1, 128
1406 ; CHECK-NEXT: lvl %s1
1407 ; CHECK-NEXT: vgtl.sx.nc %v1, %v0, 8, %s0, %vm1
1408 ; CHECK-NEXT: lea %s16, 256
1409 ; CHECK-NEXT: lvl %s16
1410 ; CHECK-NEXT: vor %v0, (0)1, %v1
1411 ; CHECK-NEXT: b.l.t (, %s10)
1412 %5 = tail call fast <256 x double> @llvm.ve.vl.vgtlsxnc.vvssmvl(<256 x double> %0, i64 8, i64 %1, <256 x i1> %2, <256 x double> %3, i32 128)
1413 ret <256 x double> %5
1416 ; Function Attrs: nounwind readonly
1417 define fastcc <256 x double> @vgtlsxnc_vvssml_imm_3(<256 x double> %0, <256 x i1> %1) {
1418 ; CHECK-LABEL: vgtlsxnc_vvssml_imm_3:
1420 ; CHECK-NEXT: lea %s0, 256
1421 ; CHECK-NEXT: lvl %s0
1422 ; CHECK-NEXT: vgtl.sx.nc %v0, %v0, 8, 0, %vm1
1423 ; CHECK-NEXT: b.l.t (, %s10)
1424 %3 = tail call fast <256 x double> @llvm.ve.vl.vgtlsxnc.vvssml(<256 x double> %0, i64 8, i64 0, <256 x i1> %1, i32 256)
1425 ret <256 x double> %3
1428 ; Function Attrs: nounwind readonly
1429 define fastcc <256 x double> @vgtlsxnc_vvssmvl_imm_3(<256 x double> %0, <256 x i1> %1, <256 x double> %2) {
1430 ; CHECK-LABEL: vgtlsxnc_vvssmvl_imm_3:
1432 ; CHECK-NEXT: lea %s0, 128
1433 ; CHECK-NEXT: lvl %s0
1434 ; CHECK-NEXT: vgtl.sx.nc %v1, %v0, 8, 0, %vm1
1435 ; CHECK-NEXT: lea %s16, 256
1436 ; CHECK-NEXT: lvl %s16
1437 ; CHECK-NEXT: vor %v0, (0)1, %v1
1438 ; CHECK-NEXT: b.l.t (, %s10)
1439 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtlsxnc.vvssmvl(<256 x double> %0, i64 8, i64 0, <256 x i1> %1, <256 x double> %2, i32 128)
1440 ret <256 x double> %4
1443 ; Function Attrs: nounwind readonly
1444 define fastcc <256 x double> @vgtlsxnc_vvssl_no_imm_1(<256 x double> %0, i64 %1) {
1445 ; CHECK-LABEL: vgtlsxnc_vvssl_no_imm_1:
1447 ; CHECK-NEXT: lea %s1, 256
1448 ; CHECK-NEXT: or %s2, 8, (0)1
1449 ; CHECK-NEXT: lvl %s1
1450 ; CHECK-NEXT: vgtl.sx.nc %v0, %v0, %s0, %s2
1451 ; CHECK-NEXT: b.l.t (, %s10)
1452 %3 = tail call fast <256 x double> @llvm.ve.vl.vgtlsxnc.vvssl(<256 x double> %0, i64 %1, i64 8, i32 256)
1453 ret <256 x double> %3
1456 ; Function Attrs: nounwind readonly
1457 define fastcc <256 x double> @vgtlzx_vvssl(<256 x double> %0, i64 %1, i64 %2) {
1458 ; CHECK-LABEL: vgtlzx_vvssl:
1460 ; CHECK-NEXT: lea %s2, 256
1461 ; CHECK-NEXT: lvl %s2
1462 ; CHECK-NEXT: vgtl.zx %v0, %v0, %s0, %s1
1463 ; CHECK-NEXT: b.l.t (, %s10)
1464 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtlzx.vvssl(<256 x double> %0, i64 %1, i64 %2, i32 256)
1465 ret <256 x double> %4
1468 ; Function Attrs: nounwind readonly
1469 declare <256 x double> @llvm.ve.vl.vgtlzx.vvssl(<256 x double>, i64, i64, i32)
1471 ; Function Attrs: nounwind readonly
1472 define fastcc <256 x double> @vgtlzx_vvssvl(<256 x double> %0, i64 %1, i64 %2, <256 x double> %3) {
1473 ; CHECK-LABEL: vgtlzx_vvssvl:
1475 ; CHECK-NEXT: lea %s2, 128
1476 ; CHECK-NEXT: lvl %s2
1477 ; CHECK-NEXT: vgtl.zx %v1, %v0, %s0, %s1
1478 ; CHECK-NEXT: lea %s16, 256
1479 ; CHECK-NEXT: lvl %s16
1480 ; CHECK-NEXT: vor %v0, (0)1, %v1
1481 ; CHECK-NEXT: b.l.t (, %s10)
1482 %5 = tail call fast <256 x double> @llvm.ve.vl.vgtlzx.vvssvl(<256 x double> %0, i64 %1, i64 %2, <256 x double> %3, i32 128)
1483 ret <256 x double> %5
1486 ; Function Attrs: nounwind readonly
1487 declare <256 x double> @llvm.ve.vl.vgtlzx.vvssvl(<256 x double>, i64, i64, <256 x double>, i32)
1489 ; Function Attrs: nounwind readonly
1490 define fastcc <256 x double> @vgtlzx_vvssl_imm_1(<256 x double> %0, i64 %1) {
1491 ; CHECK-LABEL: vgtlzx_vvssl_imm_1:
1493 ; CHECK-NEXT: lea %s1, 256
1494 ; CHECK-NEXT: lvl %s1
1495 ; CHECK-NEXT: vgtl.zx %v0, %v0, %s0, 0
1496 ; CHECK-NEXT: b.l.t (, %s10)
1497 %3 = tail call fast <256 x double> @llvm.ve.vl.vgtlzx.vvssl(<256 x double> %0, i64 %1, i64 0, i32 256)
1498 ret <256 x double> %3
1501 ; Function Attrs: nounwind readonly
1502 define fastcc <256 x double> @vgtlzx_vvssvl_imm_1(<256 x double> %0, i64 %1, <256 x double> %2) {
1503 ; CHECK-LABEL: vgtlzx_vvssvl_imm_1:
1505 ; CHECK-NEXT: lea %s1, 128
1506 ; CHECK-NEXT: lvl %s1
1507 ; CHECK-NEXT: vgtl.zx %v1, %v0, %s0, 0
1508 ; CHECK-NEXT: lea %s16, 256
1509 ; CHECK-NEXT: lvl %s16
1510 ; CHECK-NEXT: vor %v0, (0)1, %v1
1511 ; CHECK-NEXT: b.l.t (, %s10)
1512 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtlzx.vvssvl(<256 x double> %0, i64 %1, i64 0, <256 x double> %2, i32 128)
1513 ret <256 x double> %4
1516 ; Function Attrs: nounwind readonly
1517 define fastcc <256 x double> @vgtlzx_vvssl_imm_2(<256 x double> %0, i64 %1) {
1518 ; CHECK-LABEL: vgtlzx_vvssl_imm_2:
1520 ; CHECK-NEXT: lea %s1, 256
1521 ; CHECK-NEXT: lvl %s1
1522 ; CHECK-NEXT: vgtl.zx %v0, %v0, 8, %s0
1523 ; CHECK-NEXT: b.l.t (, %s10)
1524 %3 = tail call fast <256 x double> @llvm.ve.vl.vgtlzx.vvssl(<256 x double> %0, i64 8, i64 %1, i32 256)
1525 ret <256 x double> %3
1528 ; Function Attrs: nounwind readonly
1529 define fastcc <256 x double> @vgtlzx_vvssvl_imm_2(<256 x double> %0, i64 %1, <256 x double> %2) {
1530 ; CHECK-LABEL: vgtlzx_vvssvl_imm_2:
1532 ; CHECK-NEXT: lea %s1, 128
1533 ; CHECK-NEXT: lvl %s1
1534 ; CHECK-NEXT: vgtl.zx %v1, %v0, 8, %s0
1535 ; CHECK-NEXT: lea %s16, 256
1536 ; CHECK-NEXT: lvl %s16
1537 ; CHECK-NEXT: vor %v0, (0)1, %v1
1538 ; CHECK-NEXT: b.l.t (, %s10)
1539 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtlzx.vvssvl(<256 x double> %0, i64 8, i64 %1, <256 x double> %2, i32 128)
1540 ret <256 x double> %4
1543 ; Function Attrs: nounwind readonly
1544 define fastcc <256 x double> @vgtlzx_vvssl_imm_3(<256 x double> %0) {
1545 ; CHECK-LABEL: vgtlzx_vvssl_imm_3:
1547 ; CHECK-NEXT: lea %s0, 256
1548 ; CHECK-NEXT: lvl %s0
1549 ; CHECK-NEXT: vgtl.zx %v0, %v0, 8, 0
1550 ; CHECK-NEXT: b.l.t (, %s10)
1551 %2 = tail call fast <256 x double> @llvm.ve.vl.vgtlzx.vvssl(<256 x double> %0, i64 8, i64 0, i32 256)
1552 ret <256 x double> %2
1555 ; Function Attrs: nounwind readonly
1556 define fastcc <256 x double> @vgtlzx_vvssvl_imm_3(<256 x double> %0, <256 x double> %1) {
1557 ; CHECK-LABEL: vgtlzx_vvssvl_imm_3:
1559 ; CHECK-NEXT: lea %s0, 128
1560 ; CHECK-NEXT: lvl %s0
1561 ; CHECK-NEXT: vgtl.zx %v1, %v0, 8, 0
1562 ; CHECK-NEXT: lea %s16, 256
1563 ; CHECK-NEXT: lvl %s16
1564 ; CHECK-NEXT: vor %v0, (0)1, %v1
1565 ; CHECK-NEXT: b.l.t (, %s10)
1566 %3 = tail call fast <256 x double> @llvm.ve.vl.vgtlzx.vvssvl(<256 x double> %0, i64 8, i64 0, <256 x double> %1, i32 128)
1567 ret <256 x double> %3
1570 ; Function Attrs: nounwind readonly
1571 define fastcc <256 x double> @vgtlzx_vvssml(<256 x double> %0, i64 %1, i64 %2, <256 x i1> %3) {
1572 ; CHECK-LABEL: vgtlzx_vvssml:
1574 ; CHECK-NEXT: lea %s2, 256
1575 ; CHECK-NEXT: lvl %s2
1576 ; CHECK-NEXT: vgtl.zx %v0, %v0, %s0, %s1, %vm1
1577 ; CHECK-NEXT: b.l.t (, %s10)
1578 %5 = tail call fast <256 x double> @llvm.ve.vl.vgtlzx.vvssml(<256 x double> %0, i64 %1, i64 %2, <256 x i1> %3, i32 256)
1579 ret <256 x double> %5
1582 ; Function Attrs: nounwind readonly
1583 declare <256 x double> @llvm.ve.vl.vgtlzx.vvssml(<256 x double>, i64, i64, <256 x i1>, i32)
1585 ; Function Attrs: nounwind readonly
1586 define fastcc <256 x double> @vgtlzx_vvssmvl(<256 x double> %0, i64 %1, i64 %2, <256 x i1> %3, <256 x double> %4) {
1587 ; CHECK-LABEL: vgtlzx_vvssmvl:
1589 ; CHECK-NEXT: lea %s2, 128
1590 ; CHECK-NEXT: lvl %s2
1591 ; CHECK-NEXT: vgtl.zx %v1, %v0, %s0, %s1, %vm1
1592 ; CHECK-NEXT: lea %s16, 256
1593 ; CHECK-NEXT: lvl %s16
1594 ; CHECK-NEXT: vor %v0, (0)1, %v1
1595 ; CHECK-NEXT: b.l.t (, %s10)
1596 %6 = tail call fast <256 x double> @llvm.ve.vl.vgtlzx.vvssmvl(<256 x double> %0, i64 %1, i64 %2, <256 x i1> %3, <256 x double> %4, i32 128)
1597 ret <256 x double> %6
1600 ; Function Attrs: nounwind readonly
1601 declare <256 x double> @llvm.ve.vl.vgtlzx.vvssmvl(<256 x double>, i64, i64, <256 x i1>, <256 x double>, i32)
1603 ; Function Attrs: nounwind readonly
1604 define fastcc <256 x double> @vgtlzx_vvssml_imm_1(<256 x double> %0, i64 %1, <256 x i1> %2) {
1605 ; CHECK-LABEL: vgtlzx_vvssml_imm_1:
1607 ; CHECK-NEXT: lea %s1, 256
1608 ; CHECK-NEXT: lvl %s1
1609 ; CHECK-NEXT: vgtl.zx %v0, %v0, %s0, 0, %vm1
1610 ; CHECK-NEXT: b.l.t (, %s10)
1611 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtlzx.vvssml(<256 x double> %0, i64 %1, i64 0, <256 x i1> %2, i32 256)
1612 ret <256 x double> %4
1615 ; Function Attrs: nounwind readonly
1616 define fastcc <256 x double> @vgtlzx_vvssmvl_imm_1(<256 x double> %0, i64 %1, <256 x i1> %2, <256 x double> %3) {
1617 ; CHECK-LABEL: vgtlzx_vvssmvl_imm_1:
1619 ; CHECK-NEXT: lea %s1, 128
1620 ; CHECK-NEXT: lvl %s1
1621 ; CHECK-NEXT: vgtl.zx %v1, %v0, %s0, 0, %vm1
1622 ; CHECK-NEXT: lea %s16, 256
1623 ; CHECK-NEXT: lvl %s16
1624 ; CHECK-NEXT: vor %v0, (0)1, %v1
1625 ; CHECK-NEXT: b.l.t (, %s10)
1626 %5 = tail call fast <256 x double> @llvm.ve.vl.vgtlzx.vvssmvl(<256 x double> %0, i64 %1, i64 0, <256 x i1> %2, <256 x double> %3, i32 128)
1627 ret <256 x double> %5
1630 ; Function Attrs: nounwind readonly
1631 define fastcc <256 x double> @vgtlzx_vvssml_imm_2(<256 x double> %0, i64 %1, <256 x i1> %2) {
1632 ; CHECK-LABEL: vgtlzx_vvssml_imm_2:
1634 ; CHECK-NEXT: lea %s1, 256
1635 ; CHECK-NEXT: lvl %s1
1636 ; CHECK-NEXT: vgtl.zx %v0, %v0, 8, %s0, %vm1
1637 ; CHECK-NEXT: b.l.t (, %s10)
1638 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtlzx.vvssml(<256 x double> %0, i64 8, i64 %1, <256 x i1> %2, i32 256)
1639 ret <256 x double> %4
1642 ; Function Attrs: nounwind readonly
1643 define fastcc <256 x double> @vgtlzx_vvssmvl_imm_2(<256 x double> %0, i64 %1, <256 x i1> %2, <256 x double> %3) {
1644 ; CHECK-LABEL: vgtlzx_vvssmvl_imm_2:
1646 ; CHECK-NEXT: lea %s1, 128
1647 ; CHECK-NEXT: lvl %s1
1648 ; CHECK-NEXT: vgtl.zx %v1, %v0, 8, %s0, %vm1
1649 ; CHECK-NEXT: lea %s16, 256
1650 ; CHECK-NEXT: lvl %s16
1651 ; CHECK-NEXT: vor %v0, (0)1, %v1
1652 ; CHECK-NEXT: b.l.t (, %s10)
1653 %5 = tail call fast <256 x double> @llvm.ve.vl.vgtlzx.vvssmvl(<256 x double> %0, i64 8, i64 %1, <256 x i1> %2, <256 x double> %3, i32 128)
1654 ret <256 x double> %5
1657 ; Function Attrs: nounwind readonly
1658 define fastcc <256 x double> @vgtlzx_vvssml_imm_3(<256 x double> %0, <256 x i1> %1) {
1659 ; CHECK-LABEL: vgtlzx_vvssml_imm_3:
1661 ; CHECK-NEXT: lea %s0, 256
1662 ; CHECK-NEXT: lvl %s0
1663 ; CHECK-NEXT: vgtl.zx %v0, %v0, 8, 0, %vm1
1664 ; CHECK-NEXT: b.l.t (, %s10)
1665 %3 = tail call fast <256 x double> @llvm.ve.vl.vgtlzx.vvssml(<256 x double> %0, i64 8, i64 0, <256 x i1> %1, i32 256)
1666 ret <256 x double> %3
1669 ; Function Attrs: nounwind readonly
1670 define fastcc <256 x double> @vgtlzx_vvssmvl_imm_3(<256 x double> %0, <256 x i1> %1, <256 x double> %2) {
1671 ; CHECK-LABEL: vgtlzx_vvssmvl_imm_3:
1673 ; CHECK-NEXT: lea %s0, 128
1674 ; CHECK-NEXT: lvl %s0
1675 ; CHECK-NEXT: vgtl.zx %v1, %v0, 8, 0, %vm1
1676 ; CHECK-NEXT: lea %s16, 256
1677 ; CHECK-NEXT: lvl %s16
1678 ; CHECK-NEXT: vor %v0, (0)1, %v1
1679 ; CHECK-NEXT: b.l.t (, %s10)
1680 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtlzx.vvssmvl(<256 x double> %0, i64 8, i64 0, <256 x i1> %1, <256 x double> %2, i32 128)
1681 ret <256 x double> %4
1684 ; Function Attrs: nounwind readonly
1685 define fastcc <256 x double> @vgtlzx_vvssl_no_imm_1(<256 x double> %0, i64 %1) {
1686 ; CHECK-LABEL: vgtlzx_vvssl_no_imm_1:
1688 ; CHECK-NEXT: lea %s1, 256
1689 ; CHECK-NEXT: or %s2, 8, (0)1
1690 ; CHECK-NEXT: lvl %s1
1691 ; CHECK-NEXT: vgtl.zx %v0, %v0, %s0, %s2
1692 ; CHECK-NEXT: b.l.t (, %s10)
1693 %3 = tail call fast <256 x double> @llvm.ve.vl.vgtlzx.vvssl(<256 x double> %0, i64 %1, i64 8, i32 256)
1694 ret <256 x double> %3
1697 ; Function Attrs: nounwind readonly
1698 define fastcc <256 x double> @vgtlzxnc_vvssl(<256 x double> %0, i64 %1, i64 %2) {
1699 ; CHECK-LABEL: vgtlzxnc_vvssl:
1701 ; CHECK-NEXT: lea %s2, 256
1702 ; CHECK-NEXT: lvl %s2
1703 ; CHECK-NEXT: vgtl.zx.nc %v0, %v0, %s0, %s1
1704 ; CHECK-NEXT: b.l.t (, %s10)
1705 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtlzxnc.vvssl(<256 x double> %0, i64 %1, i64 %2, i32 256)
1706 ret <256 x double> %4
1709 ; Function Attrs: nounwind readonly
1710 declare <256 x double> @llvm.ve.vl.vgtlzxnc.vvssl(<256 x double>, i64, i64, i32)
1712 ; Function Attrs: nounwind readonly
1713 define fastcc <256 x double> @vgtlzxnc_vvssvl(<256 x double> %0, i64 %1, i64 %2, <256 x double> %3) {
1714 ; CHECK-LABEL: vgtlzxnc_vvssvl:
1716 ; CHECK-NEXT: lea %s2, 128
1717 ; CHECK-NEXT: lvl %s2
1718 ; CHECK-NEXT: vgtl.zx.nc %v1, %v0, %s0, %s1
1719 ; CHECK-NEXT: lea %s16, 256
1720 ; CHECK-NEXT: lvl %s16
1721 ; CHECK-NEXT: vor %v0, (0)1, %v1
1722 ; CHECK-NEXT: b.l.t (, %s10)
1723 %5 = tail call fast <256 x double> @llvm.ve.vl.vgtlzxnc.vvssvl(<256 x double> %0, i64 %1, i64 %2, <256 x double> %3, i32 128)
1724 ret <256 x double> %5
1727 ; Function Attrs: nounwind readonly
1728 declare <256 x double> @llvm.ve.vl.vgtlzxnc.vvssvl(<256 x double>, i64, i64, <256 x double>, i32)
1730 ; Function Attrs: nounwind readonly
1731 define fastcc <256 x double> @vgtlzxnc_vvssl_imm_1(<256 x double> %0, i64 %1) {
1732 ; CHECK-LABEL: vgtlzxnc_vvssl_imm_1:
1734 ; CHECK-NEXT: lea %s1, 256
1735 ; CHECK-NEXT: lvl %s1
1736 ; CHECK-NEXT: vgtl.zx.nc %v0, %v0, %s0, 0
1737 ; CHECK-NEXT: b.l.t (, %s10)
1738 %3 = tail call fast <256 x double> @llvm.ve.vl.vgtlzxnc.vvssl(<256 x double> %0, i64 %1, i64 0, i32 256)
1739 ret <256 x double> %3
1742 ; Function Attrs: nounwind readonly
1743 define fastcc <256 x double> @vgtlzxnc_vvssvl_imm_1(<256 x double> %0, i64 %1, <256 x double> %2) {
1744 ; CHECK-LABEL: vgtlzxnc_vvssvl_imm_1:
1746 ; CHECK-NEXT: lea %s1, 128
1747 ; CHECK-NEXT: lvl %s1
1748 ; CHECK-NEXT: vgtl.zx.nc %v1, %v0, %s0, 0
1749 ; CHECK-NEXT: lea %s16, 256
1750 ; CHECK-NEXT: lvl %s16
1751 ; CHECK-NEXT: vor %v0, (0)1, %v1
1752 ; CHECK-NEXT: b.l.t (, %s10)
1753 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtlzxnc.vvssvl(<256 x double> %0, i64 %1, i64 0, <256 x double> %2, i32 128)
1754 ret <256 x double> %4
1757 ; Function Attrs: nounwind readonly
1758 define fastcc <256 x double> @vgtlzxnc_vvssl_imm_2(<256 x double> %0, i64 %1) {
1759 ; CHECK-LABEL: vgtlzxnc_vvssl_imm_2:
1761 ; CHECK-NEXT: lea %s1, 256
1762 ; CHECK-NEXT: lvl %s1
1763 ; CHECK-NEXT: vgtl.zx.nc %v0, %v0, 8, %s0
1764 ; CHECK-NEXT: b.l.t (, %s10)
1765 %3 = tail call fast <256 x double> @llvm.ve.vl.vgtlzxnc.vvssl(<256 x double> %0, i64 8, i64 %1, i32 256)
1766 ret <256 x double> %3
1769 ; Function Attrs: nounwind readonly
1770 define fastcc <256 x double> @vgtlzxnc_vvssvl_imm_2(<256 x double> %0, i64 %1, <256 x double> %2) {
1771 ; CHECK-LABEL: vgtlzxnc_vvssvl_imm_2:
1773 ; CHECK-NEXT: lea %s1, 128
1774 ; CHECK-NEXT: lvl %s1
1775 ; CHECK-NEXT: vgtl.zx.nc %v1, %v0, 8, %s0
1776 ; CHECK-NEXT: lea %s16, 256
1777 ; CHECK-NEXT: lvl %s16
1778 ; CHECK-NEXT: vor %v0, (0)1, %v1
1779 ; CHECK-NEXT: b.l.t (, %s10)
1780 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtlzxnc.vvssvl(<256 x double> %0, i64 8, i64 %1, <256 x double> %2, i32 128)
1781 ret <256 x double> %4
1784 ; Function Attrs: nounwind readonly
1785 define fastcc <256 x double> @vgtlzxnc_vvssl_imm_3(<256 x double> %0) {
1786 ; CHECK-LABEL: vgtlzxnc_vvssl_imm_3:
1788 ; CHECK-NEXT: lea %s0, 256
1789 ; CHECK-NEXT: lvl %s0
1790 ; CHECK-NEXT: vgtl.zx.nc %v0, %v0, 8, 0
1791 ; CHECK-NEXT: b.l.t (, %s10)
1792 %2 = tail call fast <256 x double> @llvm.ve.vl.vgtlzxnc.vvssl(<256 x double> %0, i64 8, i64 0, i32 256)
1793 ret <256 x double> %2
1796 ; Function Attrs: nounwind readonly
1797 define fastcc <256 x double> @vgtlzxnc_vvssvl_imm_3(<256 x double> %0, <256 x double> %1) {
1798 ; CHECK-LABEL: vgtlzxnc_vvssvl_imm_3:
1800 ; CHECK-NEXT: lea %s0, 128
1801 ; CHECK-NEXT: lvl %s0
1802 ; CHECK-NEXT: vgtl.zx.nc %v1, %v0, 8, 0
1803 ; CHECK-NEXT: lea %s16, 256
1804 ; CHECK-NEXT: lvl %s16
1805 ; CHECK-NEXT: vor %v0, (0)1, %v1
1806 ; CHECK-NEXT: b.l.t (, %s10)
1807 %3 = tail call fast <256 x double> @llvm.ve.vl.vgtlzxnc.vvssvl(<256 x double> %0, i64 8, i64 0, <256 x double> %1, i32 128)
1808 ret <256 x double> %3
1811 ; Function Attrs: nounwind readonly
1812 define fastcc <256 x double> @vgtlzxnc_vvssml(<256 x double> %0, i64 %1, i64 %2, <256 x i1> %3) {
1813 ; CHECK-LABEL: vgtlzxnc_vvssml:
1815 ; CHECK-NEXT: lea %s2, 256
1816 ; CHECK-NEXT: lvl %s2
1817 ; CHECK-NEXT: vgtl.zx.nc %v0, %v0, %s0, %s1, %vm1
1818 ; CHECK-NEXT: b.l.t (, %s10)
1819 %5 = tail call fast <256 x double> @llvm.ve.vl.vgtlzxnc.vvssml(<256 x double> %0, i64 %1, i64 %2, <256 x i1> %3, i32 256)
1820 ret <256 x double> %5
1823 ; Function Attrs: nounwind readonly
1824 declare <256 x double> @llvm.ve.vl.vgtlzxnc.vvssml(<256 x double>, i64, i64, <256 x i1>, i32)
1826 ; Function Attrs: nounwind readonly
1827 define fastcc <256 x double> @vgtlzxnc_vvssmvl(<256 x double> %0, i64 %1, i64 %2, <256 x i1> %3, <256 x double> %4) {
1828 ; CHECK-LABEL: vgtlzxnc_vvssmvl:
1830 ; CHECK-NEXT: lea %s2, 128
1831 ; CHECK-NEXT: lvl %s2
1832 ; CHECK-NEXT: vgtl.zx.nc %v1, %v0, %s0, %s1, %vm1
1833 ; CHECK-NEXT: lea %s16, 256
1834 ; CHECK-NEXT: lvl %s16
1835 ; CHECK-NEXT: vor %v0, (0)1, %v1
1836 ; CHECK-NEXT: b.l.t (, %s10)
1837 %6 = tail call fast <256 x double> @llvm.ve.vl.vgtlzxnc.vvssmvl(<256 x double> %0, i64 %1, i64 %2, <256 x i1> %3, <256 x double> %4, i32 128)
1838 ret <256 x double> %6
1841 ; Function Attrs: nounwind readonly
1842 declare <256 x double> @llvm.ve.vl.vgtlzxnc.vvssmvl(<256 x double>, i64, i64, <256 x i1>, <256 x double>, i32)
1844 ; Function Attrs: nounwind readonly
1845 define fastcc <256 x double> @vgtlzxnc_vvssml_imm_1(<256 x double> %0, i64 %1, <256 x i1> %2) {
1846 ; CHECK-LABEL: vgtlzxnc_vvssml_imm_1:
1848 ; CHECK-NEXT: lea %s1, 256
1849 ; CHECK-NEXT: lvl %s1
1850 ; CHECK-NEXT: vgtl.zx.nc %v0, %v0, %s0, 0, %vm1
1851 ; CHECK-NEXT: b.l.t (, %s10)
1852 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtlzxnc.vvssml(<256 x double> %0, i64 %1, i64 0, <256 x i1> %2, i32 256)
1853 ret <256 x double> %4
1856 ; Function Attrs: nounwind readonly
1857 define fastcc <256 x double> @vgtlzxnc_vvssmvl_imm_1(<256 x double> %0, i64 %1, <256 x i1> %2, <256 x double> %3) {
1858 ; CHECK-LABEL: vgtlzxnc_vvssmvl_imm_1:
1860 ; CHECK-NEXT: lea %s1, 128
1861 ; CHECK-NEXT: lvl %s1
1862 ; CHECK-NEXT: vgtl.zx.nc %v1, %v0, %s0, 0, %vm1
1863 ; CHECK-NEXT: lea %s16, 256
1864 ; CHECK-NEXT: lvl %s16
1865 ; CHECK-NEXT: vor %v0, (0)1, %v1
1866 ; CHECK-NEXT: b.l.t (, %s10)
1867 %5 = tail call fast <256 x double> @llvm.ve.vl.vgtlzxnc.vvssmvl(<256 x double> %0, i64 %1, i64 0, <256 x i1> %2, <256 x double> %3, i32 128)
1868 ret <256 x double> %5
1871 ; Function Attrs: nounwind readonly
1872 define fastcc <256 x double> @vgtlzxnc_vvssml_imm_2(<256 x double> %0, i64 %1, <256 x i1> %2) {
1873 ; CHECK-LABEL: vgtlzxnc_vvssml_imm_2:
1875 ; CHECK-NEXT: lea %s1, 256
1876 ; CHECK-NEXT: lvl %s1
1877 ; CHECK-NEXT: vgtl.zx.nc %v0, %v0, 8, %s0, %vm1
1878 ; CHECK-NEXT: b.l.t (, %s10)
1879 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtlzxnc.vvssml(<256 x double> %0, i64 8, i64 %1, <256 x i1> %2, i32 256)
1880 ret <256 x double> %4
1883 ; Function Attrs: nounwind readonly
1884 define fastcc <256 x double> @vgtlzxnc_vvssmvl_imm_2(<256 x double> %0, i64 %1, <256 x i1> %2, <256 x double> %3) {
1885 ; CHECK-LABEL: vgtlzxnc_vvssmvl_imm_2:
1887 ; CHECK-NEXT: lea %s1, 128
1888 ; CHECK-NEXT: lvl %s1
1889 ; CHECK-NEXT: vgtl.zx.nc %v1, %v0, 8, %s0, %vm1
1890 ; CHECK-NEXT: lea %s16, 256
1891 ; CHECK-NEXT: lvl %s16
1892 ; CHECK-NEXT: vor %v0, (0)1, %v1
1893 ; CHECK-NEXT: b.l.t (, %s10)
1894 %5 = tail call fast <256 x double> @llvm.ve.vl.vgtlzxnc.vvssmvl(<256 x double> %0, i64 8, i64 %1, <256 x i1> %2, <256 x double> %3, i32 128)
1895 ret <256 x double> %5
1898 ; Function Attrs: nounwind readonly
1899 define fastcc <256 x double> @vgtlzxnc_vvssml_imm_3(<256 x double> %0, <256 x i1> %1) {
1900 ; CHECK-LABEL: vgtlzxnc_vvssml_imm_3:
1902 ; CHECK-NEXT: lea %s0, 256
1903 ; CHECK-NEXT: lvl %s0
1904 ; CHECK-NEXT: vgtl.zx.nc %v0, %v0, 8, 0, %vm1
1905 ; CHECK-NEXT: b.l.t (, %s10)
1906 %3 = tail call fast <256 x double> @llvm.ve.vl.vgtlzxnc.vvssml(<256 x double> %0, i64 8, i64 0, <256 x i1> %1, i32 256)
1907 ret <256 x double> %3
1910 ; Function Attrs: nounwind readonly
1911 define fastcc <256 x double> @vgtlzxnc_vvssmvl_imm_3(<256 x double> %0, <256 x i1> %1, <256 x double> %2) {
1912 ; CHECK-LABEL: vgtlzxnc_vvssmvl_imm_3:
1914 ; CHECK-NEXT: lea %s0, 128
1915 ; CHECK-NEXT: lvl %s0
1916 ; CHECK-NEXT: vgtl.zx.nc %v1, %v0, 8, 0, %vm1
1917 ; CHECK-NEXT: lea %s16, 256
1918 ; CHECK-NEXT: lvl %s16
1919 ; CHECK-NEXT: vor %v0, (0)1, %v1
1920 ; CHECK-NEXT: b.l.t (, %s10)
1921 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtlzxnc.vvssmvl(<256 x double> %0, i64 8, i64 0, <256 x i1> %1, <256 x double> %2, i32 128)
1922 ret <256 x double> %4
1925 ; Function Attrs: nounwind readonly
1926 define fastcc <256 x double> @vgtlzxnc_vvssl_no_imm_1(<256 x double> %0, i64 %1) {
1927 ; CHECK-LABEL: vgtlzxnc_vvssl_no_imm_1:
1929 ; CHECK-NEXT: lea %s1, 256
1930 ; CHECK-NEXT: or %s2, 8, (0)1
1931 ; CHECK-NEXT: lvl %s1
1932 ; CHECK-NEXT: vgtl.zx.nc %v0, %v0, %s0, %s2
1933 ; CHECK-NEXT: b.l.t (, %s10)
1934 %3 = tail call fast <256 x double> @llvm.ve.vl.vgtlzxnc.vvssl(<256 x double> %0, i64 %1, i64 8, i32 256)
1935 ret <256 x double> %3