1 ; RUN: llc < %s -mtriple=ve -mattr=+vpu | FileCheck %s
3 ;;; Test vector add intrinsic instructions
6 ;;; We test VADD*ivl, VADD*ivl_v, VADD*ivml_v, VADD*rvl, VADD*rvl_v,
7 ;;; VADD*rvml_v, VADD*vvl, VADD*vvl_v, VADD*vvml_v PVADD*vvl, PVADD*vvl_v,
8 ;;; PVADD*rvl, PVADD*rvl_v, PVADD*vvml_v, and PVADD*rvml_v instructions.
10 ; Function Attrs: nounwind readnone
11 define fastcc <256 x double> @vaddsl_vsvl(i64 %0, <256 x double> %1) {
12 ; CHECK-LABEL: vaddsl_vsvl:
14 ; CHECK-NEXT: lea %s1, 256
16 ; CHECK-NEXT: vadds.l %v0, %s0, %v0
17 ; CHECK-NEXT: b.l.t (, %s10)
18 %3 = tail call fast <256 x double> @llvm.ve.vl.vaddsl.vsvl(i64 %0, <256 x double> %1, i32 256)
22 ; Function Attrs: nounwind readnone
23 declare <256 x double> @llvm.ve.vl.vaddsl.vsvl(i64, <256 x double>, i32)
25 ; Function Attrs: nounwind readnone
26 define fastcc <256 x double> @vaddsl_vsvl_imm(<256 x double> %0) {
27 ; CHECK-LABEL: vaddsl_vsvl_imm:
29 ; CHECK-NEXT: lea %s0, 256
31 ; CHECK-NEXT: vadds.l %v0, 8, %v0
32 ; CHECK-NEXT: b.l.t (, %s10)
33 %2 = tail call fast <256 x double> @llvm.ve.vl.vaddsl.vsvl(i64 8, <256 x double> %0, i32 256)
37 ; Function Attrs: nounwind readnone
38 define fastcc <256 x double> @vaddsl_vsvmvl(i64 %0, <256 x double> %1, <256 x i1> %2, <256 x double> %3) {
39 ; CHECK-LABEL: vaddsl_vsvmvl:
41 ; CHECK-NEXT: lea %s1, 128
43 ; CHECK-NEXT: vadds.l %v1, %s0, %v0, %vm1
44 ; CHECK-NEXT: lea %s16, 256
45 ; CHECK-NEXT: lvl %s16
46 ; CHECK-NEXT: vor %v0, (0)1, %v1
47 ; CHECK-NEXT: b.l.t (, %s10)
48 %5 = tail call fast <256 x double> @llvm.ve.vl.vaddsl.vsvmvl(i64 %0, <256 x double> %1, <256 x i1> %2, <256 x double> %3, i32 128)
52 ; Function Attrs: nounwind readnone
53 declare <256 x double> @llvm.ve.vl.vaddsl.vsvmvl(i64, <256 x double>, <256 x i1>, <256 x double>, i32)
55 ; Function Attrs: nounwind readnone
56 define fastcc <256 x double> @vaddsl_vsvmvl_imm(<256 x double> %0, <256 x i1> %1, <256 x double> %2) {
57 ; CHECK-LABEL: vaddsl_vsvmvl_imm:
59 ; CHECK-NEXT: lea %s0, 128
61 ; CHECK-NEXT: vadds.l %v1, 8, %v0, %vm1
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.vaddsl.vsvmvl(i64 8, <256 x double> %0, <256 x i1> %1, <256 x double> %2, i32 128)
70 ; Function Attrs: nounwind readnone
71 define fastcc <256 x double> @vaddsl_vsvvl(i64 %0, <256 x double> %1, <256 x double> %2) {
72 ; CHECK-LABEL: vaddsl_vsvvl:
74 ; CHECK-NEXT: lea %s1, 128
76 ; CHECK-NEXT: vadds.l %v1, %s0, %v0
77 ; CHECK-NEXT: lea %s16, 256
78 ; CHECK-NEXT: lvl %s16
79 ; CHECK-NEXT: vor %v0, (0)1, %v1
80 ; CHECK-NEXT: b.l.t (, %s10)
81 %4 = tail call fast <256 x double> @llvm.ve.vl.vaddsl.vsvvl(i64 %0, <256 x double> %1, <256 x double> %2, i32 128)
85 ; Function Attrs: nounwind readnone
86 declare <256 x double> @llvm.ve.vl.vaddsl.vsvvl(i64, <256 x double>, <256 x double>, i32)
88 ; Function Attrs: nounwind readnone
89 define fastcc <256 x double> @vaddsl_vsvvl_imm(<256 x double> %0, <256 x double> %1) {
90 ; CHECK-LABEL: vaddsl_vsvvl_imm:
92 ; CHECK-NEXT: lea %s0, 128
94 ; CHECK-NEXT: vadds.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.vaddsl.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> @vaddsl_vvvl(<256 x double> %0, <256 x double> %1) {
105 ; CHECK-LABEL: vaddsl_vvvl:
107 ; CHECK-NEXT: lea %s0, 256
108 ; CHECK-NEXT: lvl %s0
109 ; CHECK-NEXT: vadds.l %v0, %v0, %v1
110 ; CHECK-NEXT: b.l.t (, %s10)
111 %3 = tail call fast <256 x double> @llvm.ve.vl.vaddsl.vvvl(<256 x double> %0, <256 x double> %1, i32 256)
112 ret <256 x double> %3
115 ; Function Attrs: nounwind readnone
116 declare <256 x double> @llvm.ve.vl.vaddsl.vvvl(<256 x double>, <256 x double>, i32)
118 ; Function Attrs: nounwind readnone
119 define fastcc <256 x double> @vaddsl_vvvmvl(<256 x double> %0, <256 x double> %1, <256 x i1> %2, <256 x double> %3) {
120 ; CHECK-LABEL: vaddsl_vvvmvl:
122 ; CHECK-NEXT: lea %s0, 128
123 ; CHECK-NEXT: lvl %s0
124 ; CHECK-NEXT: vadds.l %v2, %v0, %v1, %vm1
125 ; CHECK-NEXT: lea %s16, 256
126 ; CHECK-NEXT: lvl %s16
127 ; CHECK-NEXT: vor %v0, (0)1, %v2
128 ; CHECK-NEXT: b.l.t (, %s10)
129 %5 = tail call fast <256 x double> @llvm.ve.vl.vaddsl.vvvmvl(<256 x double> %0, <256 x double> %1, <256 x i1> %2, <256 x double> %3, i32 128)
130 ret <256 x double> %5
133 ; Function Attrs: nounwind readnone
134 declare <256 x double> @llvm.ve.vl.vaddsl.vvvmvl(<256 x double>, <256 x double>, <256 x i1>, <256 x double>, i32)
136 ; Function Attrs: nounwind readnone
137 define fastcc <256 x double> @vaddsl_vvvvl(<256 x double> %0, <256 x double> %1, <256 x double> %2) {
138 ; CHECK-LABEL: vaddsl_vvvvl:
140 ; CHECK-NEXT: lea %s0, 128
141 ; CHECK-NEXT: lvl %s0
142 ; CHECK-NEXT: vadds.l %v2, %v0, %v1
143 ; CHECK-NEXT: lea %s16, 256
144 ; CHECK-NEXT: lvl %s16
145 ; CHECK-NEXT: vor %v0, (0)1, %v2
146 ; CHECK-NEXT: b.l.t (, %s10)
147 %4 = tail call fast <256 x double> @llvm.ve.vl.vaddsl.vvvvl(<256 x double> %0, <256 x double> %1, <256 x double> %2, i32 128)
148 ret <256 x double> %4
151 ; Function Attrs: nounwind readnone
152 declare <256 x double> @llvm.ve.vl.vaddsl.vvvvl(<256 x double>, <256 x double>, <256 x double>, i32)
154 ; Function Attrs: nounwind readnone
155 define fastcc <256 x double> @vaddswsx_vsvl(i32 signext %0, <256 x double> %1) {
156 ; CHECK-LABEL: vaddswsx_vsvl:
158 ; CHECK-NEXT: and %s0, %s0, (32)0
159 ; CHECK-NEXT: lea %s1, 256
160 ; CHECK-NEXT: lvl %s1
161 ; CHECK-NEXT: vadds.w.sx %v0, %s0, %v0
162 ; CHECK-NEXT: b.l.t (, %s10)
163 %3 = tail call fast <256 x double> @llvm.ve.vl.vaddswsx.vsvl(i32 %0, <256 x double> %1, i32 256)
164 ret <256 x double> %3
167 ; Function Attrs: nounwind readnone
168 declare <256 x double> @llvm.ve.vl.vaddswsx.vsvl(i32, <256 x double>, i32)
170 ; Function Attrs: nounwind readnone
171 define fastcc <256 x double> @vaddswsx_vsvl_imm(<256 x double> %0) {
172 ; CHECK-LABEL: vaddswsx_vsvl_imm:
174 ; CHECK-NEXT: lea %s0, 256
175 ; CHECK-NEXT: lvl %s0
176 ; CHECK-NEXT: vadds.w.sx %v0, 8, %v0
177 ; CHECK-NEXT: b.l.t (, %s10)
178 %2 = tail call fast <256 x double> @llvm.ve.vl.vaddswsx.vsvl(i32 8, <256 x double> %0, i32 256)
179 ret <256 x double> %2
182 ; Function Attrs: nounwind readnone
183 define fastcc <256 x double> @vaddswsx_vsvmvl(i32 signext %0, <256 x double> %1, <256 x i1> %2, <256 x double> %3) {
184 ; CHECK-LABEL: vaddswsx_vsvmvl:
186 ; CHECK-NEXT: and %s0, %s0, (32)0
187 ; CHECK-NEXT: lea %s1, 128
188 ; CHECK-NEXT: lvl %s1
189 ; CHECK-NEXT: vadds.w.sx %v1, %s0, %v0, %vm1
190 ; CHECK-NEXT: lea %s16, 256
191 ; CHECK-NEXT: lvl %s16
192 ; CHECK-NEXT: vor %v0, (0)1, %v1
193 ; CHECK-NEXT: b.l.t (, %s10)
194 %5 = tail call fast <256 x double> @llvm.ve.vl.vaddswsx.vsvmvl(i32 %0, <256 x double> %1, <256 x i1> %2, <256 x double> %3, i32 128)
195 ret <256 x double> %5
198 ; Function Attrs: nounwind readnone
199 declare <256 x double> @llvm.ve.vl.vaddswsx.vsvmvl(i32, <256 x double>, <256 x i1>, <256 x double>, i32)
201 ; Function Attrs: nounwind readnone
202 define fastcc <256 x double> @vaddswsx_vsvmvl_imm(<256 x double> %0, <256 x i1> %1, <256 x double> %2) {
203 ; CHECK-LABEL: vaddswsx_vsvmvl_imm:
205 ; CHECK-NEXT: lea %s0, 128
206 ; CHECK-NEXT: lvl %s0
207 ; CHECK-NEXT: vadds.w.sx %v1, 8, %v0, %vm1
208 ; CHECK-NEXT: lea %s16, 256
209 ; CHECK-NEXT: lvl %s16
210 ; CHECK-NEXT: vor %v0, (0)1, %v1
211 ; CHECK-NEXT: b.l.t (, %s10)
212 %4 = tail call fast <256 x double> @llvm.ve.vl.vaddswsx.vsvmvl(i32 8, <256 x double> %0, <256 x i1> %1, <256 x double> %2, i32 128)
213 ret <256 x double> %4
216 ; Function Attrs: nounwind readnone
217 define fastcc <256 x double> @vaddswsx_vsvvl(i32 signext %0, <256 x double> %1, <256 x double> %2) {
218 ; CHECK-LABEL: vaddswsx_vsvvl:
220 ; CHECK-NEXT: and %s0, %s0, (32)0
221 ; CHECK-NEXT: lea %s1, 128
222 ; CHECK-NEXT: lvl %s1
223 ; CHECK-NEXT: vadds.w.sx %v1, %s0, %v0
224 ; CHECK-NEXT: lea %s16, 256
225 ; CHECK-NEXT: lvl %s16
226 ; CHECK-NEXT: vor %v0, (0)1, %v1
227 ; CHECK-NEXT: b.l.t (, %s10)
228 %4 = tail call fast <256 x double> @llvm.ve.vl.vaddswsx.vsvvl(i32 %0, <256 x double> %1, <256 x double> %2, i32 128)
229 ret <256 x double> %4
232 ; Function Attrs: nounwind readnone
233 declare <256 x double> @llvm.ve.vl.vaddswsx.vsvvl(i32, <256 x double>, <256 x double>, i32)
235 ; Function Attrs: nounwind readnone
236 define fastcc <256 x double> @vaddswsx_vsvvl_imm(<256 x double> %0, <256 x double> %1) {
237 ; CHECK-LABEL: vaddswsx_vsvvl_imm:
239 ; CHECK-NEXT: lea %s0, 128
240 ; CHECK-NEXT: lvl %s0
241 ; CHECK-NEXT: vadds.w.sx %v1, 8, %v0
242 ; CHECK-NEXT: lea %s16, 256
243 ; CHECK-NEXT: lvl %s16
244 ; CHECK-NEXT: vor %v0, (0)1, %v1
245 ; CHECK-NEXT: b.l.t (, %s10)
246 %3 = tail call fast <256 x double> @llvm.ve.vl.vaddswsx.vsvvl(i32 8, <256 x double> %0, <256 x double> %1, i32 128)
247 ret <256 x double> %3
250 ; Function Attrs: nounwind readnone
251 define fastcc <256 x double> @vaddswsx_vvvl(<256 x double> %0, <256 x double> %1) {
252 ; CHECK-LABEL: vaddswsx_vvvl:
254 ; CHECK-NEXT: lea %s0, 256
255 ; CHECK-NEXT: lvl %s0
256 ; CHECK-NEXT: vadds.w.sx %v0, %v0, %v1
257 ; CHECK-NEXT: b.l.t (, %s10)
258 %3 = tail call fast <256 x double> @llvm.ve.vl.vaddswsx.vvvl(<256 x double> %0, <256 x double> %1, i32 256)
259 ret <256 x double> %3
262 ; Function Attrs: nounwind readnone
263 declare <256 x double> @llvm.ve.vl.vaddswsx.vvvl(<256 x double>, <256 x double>, i32)
265 ; Function Attrs: nounwind readnone
266 define fastcc <256 x double> @vaddswsx_vvvmvl(<256 x double> %0, <256 x double> %1, <256 x i1> %2, <256 x double> %3) {
267 ; CHECK-LABEL: vaddswsx_vvvmvl:
269 ; CHECK-NEXT: lea %s0, 128
270 ; CHECK-NEXT: lvl %s0
271 ; CHECK-NEXT: vadds.w.sx %v2, %v0, %v1, %vm1
272 ; CHECK-NEXT: lea %s16, 256
273 ; CHECK-NEXT: lvl %s16
274 ; CHECK-NEXT: vor %v0, (0)1, %v2
275 ; CHECK-NEXT: b.l.t (, %s10)
276 %5 = tail call fast <256 x double> @llvm.ve.vl.vaddswsx.vvvmvl(<256 x double> %0, <256 x double> %1, <256 x i1> %2, <256 x double> %3, i32 128)
277 ret <256 x double> %5
280 ; Function Attrs: nounwind readnone
281 declare <256 x double> @llvm.ve.vl.vaddswsx.vvvmvl(<256 x double>, <256 x double>, <256 x i1>, <256 x double>, i32)
283 ; Function Attrs: nounwind readnone
284 define fastcc <256 x double> @vaddswsx_vvvvl(<256 x double> %0, <256 x double> %1, <256 x double> %2) {
285 ; CHECK-LABEL: vaddswsx_vvvvl:
287 ; CHECK-NEXT: lea %s0, 128
288 ; CHECK-NEXT: lvl %s0
289 ; CHECK-NEXT: vadds.w.sx %v2, %v0, %v1
290 ; CHECK-NEXT: lea %s16, 256
291 ; CHECK-NEXT: lvl %s16
292 ; CHECK-NEXT: vor %v0, (0)1, %v2
293 ; CHECK-NEXT: b.l.t (, %s10)
294 %4 = tail call fast <256 x double> @llvm.ve.vl.vaddswsx.vvvvl(<256 x double> %0, <256 x double> %1, <256 x double> %2, i32 128)
295 ret <256 x double> %4
298 ; Function Attrs: nounwind readnone
299 declare <256 x double> @llvm.ve.vl.vaddswsx.vvvvl(<256 x double>, <256 x double>, <256 x double>, i32)
301 ; Function Attrs: nounwind readnone
302 define fastcc <256 x double> @vaddswzx_vsvl(i32 signext %0, <256 x double> %1) {
303 ; CHECK-LABEL: vaddswzx_vsvl:
305 ; CHECK-NEXT: and %s0, %s0, (32)0
306 ; CHECK-NEXT: lea %s1, 256
307 ; CHECK-NEXT: lvl %s1
308 ; CHECK-NEXT: vadds.w.zx %v0, %s0, %v0
309 ; CHECK-NEXT: b.l.t (, %s10)
310 %3 = tail call fast <256 x double> @llvm.ve.vl.vaddswzx.vsvl(i32 %0, <256 x double> %1, i32 256)
311 ret <256 x double> %3
314 ; Function Attrs: nounwind readnone
315 declare <256 x double> @llvm.ve.vl.vaddswzx.vsvl(i32, <256 x double>, i32)
317 ; Function Attrs: nounwind readnone
318 define fastcc <256 x double> @vaddswzx_vsvl_imm(<256 x double> %0) {
319 ; CHECK-LABEL: vaddswzx_vsvl_imm:
321 ; CHECK-NEXT: lea %s0, 256
322 ; CHECK-NEXT: lvl %s0
323 ; CHECK-NEXT: vadds.w.zx %v0, 8, %v0
324 ; CHECK-NEXT: b.l.t (, %s10)
325 %2 = tail call fast <256 x double> @llvm.ve.vl.vaddswzx.vsvl(i32 8, <256 x double> %0, i32 256)
326 ret <256 x double> %2
329 ; Function Attrs: nounwind readnone
330 define fastcc <256 x double> @vaddswzx_vsvmvl(i32 signext %0, <256 x double> %1, <256 x i1> %2, <256 x double> %3) {
331 ; CHECK-LABEL: vaddswzx_vsvmvl:
333 ; CHECK-NEXT: and %s0, %s0, (32)0
334 ; CHECK-NEXT: lea %s1, 128
335 ; CHECK-NEXT: lvl %s1
336 ; CHECK-NEXT: vadds.w.zx %v1, %s0, %v0, %vm1
337 ; CHECK-NEXT: lea %s16, 256
338 ; CHECK-NEXT: lvl %s16
339 ; CHECK-NEXT: vor %v0, (0)1, %v1
340 ; CHECK-NEXT: b.l.t (, %s10)
341 %5 = tail call fast <256 x double> @llvm.ve.vl.vaddswzx.vsvmvl(i32 %0, <256 x double> %1, <256 x i1> %2, <256 x double> %3, i32 128)
342 ret <256 x double> %5
345 ; Function Attrs: nounwind readnone
346 declare <256 x double> @llvm.ve.vl.vaddswzx.vsvmvl(i32, <256 x double>, <256 x i1>, <256 x double>, i32)
348 ; Function Attrs: nounwind readnone
349 define fastcc <256 x double> @vaddswzx_vsvmvl_imm(<256 x double> %0, <256 x i1> %1, <256 x double> %2) {
350 ; CHECK-LABEL: vaddswzx_vsvmvl_imm:
352 ; CHECK-NEXT: lea %s0, 128
353 ; CHECK-NEXT: lvl %s0
354 ; CHECK-NEXT: vadds.w.zx %v1, 8, %v0, %vm1
355 ; CHECK-NEXT: lea %s16, 256
356 ; CHECK-NEXT: lvl %s16
357 ; CHECK-NEXT: vor %v0, (0)1, %v1
358 ; CHECK-NEXT: b.l.t (, %s10)
359 %4 = tail call fast <256 x double> @llvm.ve.vl.vaddswzx.vsvmvl(i32 8, <256 x double> %0, <256 x i1> %1, <256 x double> %2, i32 128)
360 ret <256 x double> %4
363 ; Function Attrs: nounwind readnone
364 define fastcc <256 x double> @vaddswzx_vsvvl(i32 signext %0, <256 x double> %1, <256 x double> %2) {
365 ; CHECK-LABEL: vaddswzx_vsvvl:
367 ; CHECK-NEXT: and %s0, %s0, (32)0
368 ; CHECK-NEXT: lea %s1, 128
369 ; CHECK-NEXT: lvl %s1
370 ; CHECK-NEXT: vadds.w.zx %v1, %s0, %v0
371 ; CHECK-NEXT: lea %s16, 256
372 ; CHECK-NEXT: lvl %s16
373 ; CHECK-NEXT: vor %v0, (0)1, %v1
374 ; CHECK-NEXT: b.l.t (, %s10)
375 %4 = tail call fast <256 x double> @llvm.ve.vl.vaddswzx.vsvvl(i32 %0, <256 x double> %1, <256 x double> %2, i32 128)
376 ret <256 x double> %4
379 ; Function Attrs: nounwind readnone
380 declare <256 x double> @llvm.ve.vl.vaddswzx.vsvvl(i32, <256 x double>, <256 x double>, i32)
382 ; Function Attrs: nounwind readnone
383 define fastcc <256 x double> @vaddswzx_vsvvl_imm(<256 x double> %0, <256 x double> %1) {
384 ; CHECK-LABEL: vaddswzx_vsvvl_imm:
386 ; CHECK-NEXT: lea %s0, 128
387 ; CHECK-NEXT: lvl %s0
388 ; CHECK-NEXT: vadds.w.zx %v1, 8, %v0
389 ; CHECK-NEXT: lea %s16, 256
390 ; CHECK-NEXT: lvl %s16
391 ; CHECK-NEXT: vor %v0, (0)1, %v1
392 ; CHECK-NEXT: b.l.t (, %s10)
393 %3 = tail call fast <256 x double> @llvm.ve.vl.vaddswzx.vsvvl(i32 8, <256 x double> %0, <256 x double> %1, i32 128)
394 ret <256 x double> %3
397 ; Function Attrs: nounwind readnone
398 define fastcc <256 x double> @vaddswzx_vvvl(<256 x double> %0, <256 x double> %1) {
399 ; CHECK-LABEL: vaddswzx_vvvl:
401 ; CHECK-NEXT: lea %s0, 256
402 ; CHECK-NEXT: lvl %s0
403 ; CHECK-NEXT: vadds.w.zx %v0, %v0, %v1
404 ; CHECK-NEXT: b.l.t (, %s10)
405 %3 = tail call fast <256 x double> @llvm.ve.vl.vaddswzx.vvvl(<256 x double> %0, <256 x double> %1, i32 256)
406 ret <256 x double> %3
409 ; Function Attrs: nounwind readnone
410 declare <256 x double> @llvm.ve.vl.vaddswzx.vvvl(<256 x double>, <256 x double>, i32)
412 ; Function Attrs: nounwind readnone
413 define fastcc <256 x double> @vaddswzx_vvvmvl(<256 x double> %0, <256 x double> %1, <256 x i1> %2, <256 x double> %3) {
414 ; CHECK-LABEL: vaddswzx_vvvmvl:
416 ; CHECK-NEXT: lea %s0, 128
417 ; CHECK-NEXT: lvl %s0
418 ; CHECK-NEXT: vadds.w.zx %v2, %v0, %v1, %vm1
419 ; CHECK-NEXT: lea %s16, 256
420 ; CHECK-NEXT: lvl %s16
421 ; CHECK-NEXT: vor %v0, (0)1, %v2
422 ; CHECK-NEXT: b.l.t (, %s10)
423 %5 = tail call fast <256 x double> @llvm.ve.vl.vaddswzx.vvvmvl(<256 x double> %0, <256 x double> %1, <256 x i1> %2, <256 x double> %3, i32 128)
424 ret <256 x double> %5
427 ; Function Attrs: nounwind readnone
428 declare <256 x double> @llvm.ve.vl.vaddswzx.vvvmvl(<256 x double>, <256 x double>, <256 x i1>, <256 x double>, i32)
430 ; Function Attrs: nounwind readnone
431 define fastcc <256 x double> @vaddswzx_vvvvl(<256 x double> %0, <256 x double> %1, <256 x double> %2) {
432 ; CHECK-LABEL: vaddswzx_vvvvl:
434 ; CHECK-NEXT: lea %s0, 128
435 ; CHECK-NEXT: lvl %s0
436 ; CHECK-NEXT: vadds.w.zx %v2, %v0, %v1
437 ; CHECK-NEXT: lea %s16, 256
438 ; CHECK-NEXT: lvl %s16
439 ; CHECK-NEXT: vor %v0, (0)1, %v2
440 ; CHECK-NEXT: b.l.t (, %s10)
441 %4 = tail call fast <256 x double> @llvm.ve.vl.vaddswzx.vvvvl(<256 x double> %0, <256 x double> %1, <256 x double> %2, i32 128)
442 ret <256 x double> %4
445 ; Function Attrs: nounwind readnone
446 declare <256 x double> @llvm.ve.vl.vaddswzx.vvvvl(<256 x double>, <256 x double>, <256 x double>, i32)
448 ; Function Attrs: nounwind readnone
449 define fastcc <256 x double> @vaddul_vsvl(i64 %0, <256 x double> %1) {
450 ; CHECK-LABEL: vaddul_vsvl:
452 ; CHECK-NEXT: lea %s1, 256
453 ; CHECK-NEXT: lvl %s1
454 ; CHECK-NEXT: vaddu.l %v0, %s0, %v0
455 ; CHECK-NEXT: b.l.t (, %s10)
456 %3 = tail call fast <256 x double> @llvm.ve.vl.vaddul.vsvl(i64 %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.vaddul.vsvl(i64, <256 x double>, i32)
463 ; Function Attrs: nounwind readnone
464 define fastcc <256 x double> @vaddul_vsvl_imm(<256 x double> %0) {
465 ; CHECK-LABEL: vaddul_vsvl_imm:
467 ; CHECK-NEXT: lea %s0, 256
468 ; CHECK-NEXT: lvl %s0
469 ; CHECK-NEXT: vaddu.l %v0, 8, %v0
470 ; CHECK-NEXT: b.l.t (, %s10)
471 %2 = tail call fast <256 x double> @llvm.ve.vl.vaddul.vsvl(i64 8, <256 x double> %0, i32 256)
472 ret <256 x double> %2
475 ; Function Attrs: nounwind readnone
476 define fastcc <256 x double> @vaddul_vsvmvl(i64 %0, <256 x double> %1, <256 x i1> %2, <256 x double> %3) {
477 ; CHECK-LABEL: vaddul_vsvmvl:
479 ; CHECK-NEXT: lea %s1, 128
480 ; CHECK-NEXT: lvl %s1
481 ; CHECK-NEXT: vaddu.l %v1, %s0, %v0, %vm1
482 ; CHECK-NEXT: lea %s16, 256
483 ; CHECK-NEXT: lvl %s16
484 ; CHECK-NEXT: vor %v0, (0)1, %v1
485 ; CHECK-NEXT: b.l.t (, %s10)
486 %5 = tail call fast <256 x double> @llvm.ve.vl.vaddul.vsvmvl(i64 %0, <256 x double> %1, <256 x i1> %2, <256 x double> %3, i32 128)
487 ret <256 x double> %5
490 ; Function Attrs: nounwind readnone
491 declare <256 x double> @llvm.ve.vl.vaddul.vsvmvl(i64, <256 x double>, <256 x i1>, <256 x double>, i32)
493 ; Function Attrs: nounwind readnone
494 define fastcc <256 x double> @vaddul_vsvmvl_imm(<256 x double> %0, <256 x i1> %1, <256 x double> %2) {
495 ; CHECK-LABEL: vaddul_vsvmvl_imm:
497 ; CHECK-NEXT: lea %s0, 128
498 ; CHECK-NEXT: lvl %s0
499 ; CHECK-NEXT: vaddu.l %v1, 8, %v0, %vm1
500 ; CHECK-NEXT: lea %s16, 256
501 ; CHECK-NEXT: lvl %s16
502 ; CHECK-NEXT: vor %v0, (0)1, %v1
503 ; CHECK-NEXT: b.l.t (, %s10)
504 %4 = tail call fast <256 x double> @llvm.ve.vl.vaddul.vsvmvl(i64 8, <256 x double> %0, <256 x i1> %1, <256 x double> %2, i32 128)
505 ret <256 x double> %4
508 ; Function Attrs: nounwind readnone
509 define fastcc <256 x double> @vaddul_vsvvl(i64 %0, <256 x double> %1, <256 x double> %2) {
510 ; CHECK-LABEL: vaddul_vsvvl:
512 ; CHECK-NEXT: lea %s1, 128
513 ; CHECK-NEXT: lvl %s1
514 ; CHECK-NEXT: vaddu.l %v1, %s0, %v0
515 ; CHECK-NEXT: lea %s16, 256
516 ; CHECK-NEXT: lvl %s16
517 ; CHECK-NEXT: vor %v0, (0)1, %v1
518 ; CHECK-NEXT: b.l.t (, %s10)
519 %4 = tail call fast <256 x double> @llvm.ve.vl.vaddul.vsvvl(i64 %0, <256 x double> %1, <256 x double> %2, i32 128)
520 ret <256 x double> %4
523 ; Function Attrs: nounwind readnone
524 declare <256 x double> @llvm.ve.vl.vaddul.vsvvl(i64, <256 x double>, <256 x double>, i32)
526 ; Function Attrs: nounwind readnone
527 define fastcc <256 x double> @vaddul_vsvvl_imm(<256 x double> %0, <256 x double> %1) {
528 ; CHECK-LABEL: vaddul_vsvvl_imm:
530 ; CHECK-NEXT: lea %s0, 128
531 ; CHECK-NEXT: lvl %s0
532 ; CHECK-NEXT: vaddu.l %v1, 8, %v0
533 ; CHECK-NEXT: lea %s16, 256
534 ; CHECK-NEXT: lvl %s16
535 ; CHECK-NEXT: vor %v0, (0)1, %v1
536 ; CHECK-NEXT: b.l.t (, %s10)
537 %3 = tail call fast <256 x double> @llvm.ve.vl.vaddul.vsvvl(i64 8, <256 x double> %0, <256 x double> %1, i32 128)
538 ret <256 x double> %3
541 ; Function Attrs: nounwind readnone
542 define fastcc <256 x double> @vaddul_vvvl(<256 x double> %0, <256 x double> %1) {
543 ; CHECK-LABEL: vaddul_vvvl:
545 ; CHECK-NEXT: lea %s0, 256
546 ; CHECK-NEXT: lvl %s0
547 ; CHECK-NEXT: vaddu.l %v0, %v0, %v1
548 ; CHECK-NEXT: b.l.t (, %s10)
549 %3 = tail call fast <256 x double> @llvm.ve.vl.vaddul.vvvl(<256 x double> %0, <256 x double> %1, i32 256)
550 ret <256 x double> %3
553 ; Function Attrs: nounwind readnone
554 declare <256 x double> @llvm.ve.vl.vaddul.vvvl(<256 x double>, <256 x double>, i32)
556 ; Function Attrs: nounwind readnone
557 define fastcc <256 x double> @vaddul_vvvmvl(<256 x double> %0, <256 x double> %1, <256 x i1> %2, <256 x double> %3) {
558 ; CHECK-LABEL: vaddul_vvvmvl:
560 ; CHECK-NEXT: lea %s0, 128
561 ; CHECK-NEXT: lvl %s0
562 ; CHECK-NEXT: vaddu.l %v2, %v0, %v1, %vm1
563 ; CHECK-NEXT: lea %s16, 256
564 ; CHECK-NEXT: lvl %s16
565 ; CHECK-NEXT: vor %v0, (0)1, %v2
566 ; CHECK-NEXT: b.l.t (, %s10)
567 %5 = tail call fast <256 x double> @llvm.ve.vl.vaddul.vvvmvl(<256 x double> %0, <256 x double> %1, <256 x i1> %2, <256 x double> %3, i32 128)
568 ret <256 x double> %5
571 ; Function Attrs: nounwind readnone
572 declare <256 x double> @llvm.ve.vl.vaddul.vvvmvl(<256 x double>, <256 x double>, <256 x i1>, <256 x double>, i32)
574 ; Function Attrs: nounwind readnone
575 define fastcc <256 x double> @vaddul_vvvvl(<256 x double> %0, <256 x double> %1, <256 x double> %2) {
576 ; CHECK-LABEL: vaddul_vvvvl:
578 ; CHECK-NEXT: lea %s0, 128
579 ; CHECK-NEXT: lvl %s0
580 ; CHECK-NEXT: vaddu.l %v2, %v0, %v1
581 ; CHECK-NEXT: lea %s16, 256
582 ; CHECK-NEXT: lvl %s16
583 ; CHECK-NEXT: vor %v0, (0)1, %v2
584 ; CHECK-NEXT: b.l.t (, %s10)
585 %4 = tail call fast <256 x double> @llvm.ve.vl.vaddul.vvvvl(<256 x double> %0, <256 x double> %1, <256 x double> %2, i32 128)
586 ret <256 x double> %4
589 ; Function Attrs: nounwind readnone
590 declare <256 x double> @llvm.ve.vl.vaddul.vvvvl(<256 x double>, <256 x double>, <256 x double>, i32)
592 ; Function Attrs: nounwind readnone
593 define fastcc <256 x double> @vadduw_vsvl(i32 signext %0, <256 x double> %1) {
594 ; CHECK-LABEL: vadduw_vsvl:
596 ; CHECK-NEXT: and %s0, %s0, (32)0
597 ; CHECK-NEXT: lea %s1, 256
598 ; CHECK-NEXT: lvl %s1
599 ; CHECK-NEXT: vaddu.w %v0, %s0, %v0
600 ; CHECK-NEXT: b.l.t (, %s10)
601 %3 = tail call fast <256 x double> @llvm.ve.vl.vadduw.vsvl(i32 %0, <256 x double> %1, i32 256)
602 ret <256 x double> %3
605 ; Function Attrs: nounwind readnone
606 declare <256 x double> @llvm.ve.vl.vadduw.vsvl(i32, <256 x double>, i32)
608 ; Function Attrs: nounwind readnone
609 define fastcc <256 x double> @vadduw_vsvl_imm(<256 x double> %0) {
610 ; CHECK-LABEL: vadduw_vsvl_imm:
612 ; CHECK-NEXT: lea %s0, 256
613 ; CHECK-NEXT: lvl %s0
614 ; CHECK-NEXT: vaddu.w %v0, 8, %v0
615 ; CHECK-NEXT: b.l.t (, %s10)
616 %2 = tail call fast <256 x double> @llvm.ve.vl.vadduw.vsvl(i32 8, <256 x double> %0, i32 256)
617 ret <256 x double> %2
620 ; Function Attrs: nounwind readnone
621 define fastcc <256 x double> @vadduw_vsvmvl(i32 signext %0, <256 x double> %1, <256 x i1> %2, <256 x double> %3) {
622 ; CHECK-LABEL: vadduw_vsvmvl:
624 ; CHECK-NEXT: and %s0, %s0, (32)0
625 ; CHECK-NEXT: lea %s1, 128
626 ; CHECK-NEXT: lvl %s1
627 ; CHECK-NEXT: vaddu.w %v1, %s0, %v0, %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 %5 = tail call fast <256 x double> @llvm.ve.vl.vadduw.vsvmvl(i32 %0, <256 x double> %1, <256 x i1> %2, <256 x double> %3, i32 128)
633 ret <256 x double> %5
636 ; Function Attrs: nounwind readnone
637 declare <256 x double> @llvm.ve.vl.vadduw.vsvmvl(i32, <256 x double>, <256 x i1>, <256 x double>, i32)
639 ; Function Attrs: nounwind readnone
640 define fastcc <256 x double> @vadduw_vsvmvl_imm(<256 x double> %0, <256 x i1> %1, <256 x double> %2) {
641 ; CHECK-LABEL: vadduw_vsvmvl_imm:
643 ; CHECK-NEXT: lea %s0, 128
644 ; CHECK-NEXT: lvl %s0
645 ; CHECK-NEXT: vaddu.w %v1, 8, %v0, %vm1
646 ; CHECK-NEXT: lea %s16, 256
647 ; CHECK-NEXT: lvl %s16
648 ; CHECK-NEXT: vor %v0, (0)1, %v1
649 ; CHECK-NEXT: b.l.t (, %s10)
650 %4 = tail call fast <256 x double> @llvm.ve.vl.vadduw.vsvmvl(i32 8, <256 x double> %0, <256 x i1> %1, <256 x double> %2, i32 128)
651 ret <256 x double> %4
654 ; Function Attrs: nounwind readnone
655 define fastcc <256 x double> @vadduw_vsvvl(i32 signext %0, <256 x double> %1, <256 x double> %2) {
656 ; CHECK-LABEL: vadduw_vsvvl:
658 ; CHECK-NEXT: and %s0, %s0, (32)0
659 ; CHECK-NEXT: lea %s1, 128
660 ; CHECK-NEXT: lvl %s1
661 ; CHECK-NEXT: vaddu.w %v1, %s0, %v0
662 ; CHECK-NEXT: lea %s16, 256
663 ; CHECK-NEXT: lvl %s16
664 ; CHECK-NEXT: vor %v0, (0)1, %v1
665 ; CHECK-NEXT: b.l.t (, %s10)
666 %4 = tail call fast <256 x double> @llvm.ve.vl.vadduw.vsvvl(i32 %0, <256 x double> %1, <256 x double> %2, i32 128)
667 ret <256 x double> %4
670 ; Function Attrs: nounwind readnone
671 declare <256 x double> @llvm.ve.vl.vadduw.vsvvl(i32, <256 x double>, <256 x double>, i32)
673 ; Function Attrs: nounwind readnone
674 define fastcc <256 x double> @vadduw_vsvvl_imm(<256 x double> %0, <256 x double> %1) {
675 ; CHECK-LABEL: vadduw_vsvvl_imm:
677 ; CHECK-NEXT: lea %s0, 128
678 ; CHECK-NEXT: lvl %s0
679 ; CHECK-NEXT: vaddu.w %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.vadduw.vsvvl(i32 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> @vadduw_vvvl(<256 x double> %0, <256 x double> %1) {
690 ; CHECK-LABEL: vadduw_vvvl:
692 ; CHECK-NEXT: lea %s0, 256
693 ; CHECK-NEXT: lvl %s0
694 ; CHECK-NEXT: vaddu.w %v0, %v0, %v1
695 ; CHECK-NEXT: b.l.t (, %s10)
696 %3 = tail call fast <256 x double> @llvm.ve.vl.vadduw.vvvl(<256 x double> %0, <256 x double> %1, i32 256)
697 ret <256 x double> %3
700 ; Function Attrs: nounwind readnone
701 declare <256 x double> @llvm.ve.vl.vadduw.vvvl(<256 x double>, <256 x double>, i32)
703 ; Function Attrs: nounwind readnone
704 define fastcc <256 x double> @vadduw_vvvmvl(<256 x double> %0, <256 x double> %1, <256 x i1> %2, <256 x double> %3) {
705 ; CHECK-LABEL: vadduw_vvvmvl:
707 ; CHECK-NEXT: lea %s0, 128
708 ; CHECK-NEXT: lvl %s0
709 ; CHECK-NEXT: vaddu.w %v2, %v0, %v1, %vm1
710 ; CHECK-NEXT: lea %s16, 256
711 ; CHECK-NEXT: lvl %s16
712 ; CHECK-NEXT: vor %v0, (0)1, %v2
713 ; CHECK-NEXT: b.l.t (, %s10)
714 %5 = tail call fast <256 x double> @llvm.ve.vl.vadduw.vvvmvl(<256 x double> %0, <256 x double> %1, <256 x i1> %2, <256 x double> %3, i32 128)
715 ret <256 x double> %5
718 ; Function Attrs: nounwind readnone
719 declare <256 x double> @llvm.ve.vl.vadduw.vvvmvl(<256 x double>, <256 x double>, <256 x i1>, <256 x double>, i32)
721 ; Function Attrs: nounwind readnone
722 define fastcc <256 x double> @vadduw_vvvvl(<256 x double> %0, <256 x double> %1, <256 x double> %2) {
723 ; CHECK-LABEL: vadduw_vvvvl:
725 ; CHECK-NEXT: lea %s0, 128
726 ; CHECK-NEXT: lvl %s0
727 ; CHECK-NEXT: vaddu.w %v2, %v0, %v1
728 ; CHECK-NEXT: lea %s16, 256
729 ; CHECK-NEXT: lvl %s16
730 ; CHECK-NEXT: vor %v0, (0)1, %v2
731 ; CHECK-NEXT: b.l.t (, %s10)
732 %4 = tail call fast <256 x double> @llvm.ve.vl.vadduw.vvvvl(<256 x double> %0, <256 x double> %1, <256 x double> %2, i32 128)
733 ret <256 x double> %4
736 ; Function Attrs: nounwind readnone
737 declare <256 x double> @llvm.ve.vl.vadduw.vvvvl(<256 x double>, <256 x double>, <256 x double>, i32)
739 ; Function Attrs: nounwind readnone
740 define fastcc <256 x double> @pvaddu_vvvl(<256 x double> %0, <256 x double> %1) {
741 ; CHECK-LABEL: pvaddu_vvvl:
743 ; CHECK-NEXT: lea %s0, 256
744 ; CHECK-NEXT: lvl %s0
745 ; CHECK-NEXT: pvaddu %v0, %v0, %v1
746 ; CHECK-NEXT: b.l.t (, %s10)
747 %3 = tail call fast <256 x double> @llvm.ve.vl.pvaddu.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.pvaddu.vvvl(<256 x double>, <256 x double>, i32)
754 ; Function Attrs: nounwind readnone
755 define fastcc <256 x double> @pvaddu_vvvvl(<256 x double> %0, <256 x double> %1, <256 x double> %2) {
756 ; CHECK-LABEL: pvaddu_vvvvl:
758 ; CHECK-NEXT: lea %s0, 128
759 ; CHECK-NEXT: lvl %s0
760 ; CHECK-NEXT: pvaddu %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.pvaddu.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.pvaddu.vvvvl(<256 x double>, <256 x double>, <256 x double>, i32)
772 ; Function Attrs: nounwind readnone
773 define fastcc <256 x double> @pvaddu_vsvl(i64 %0, <256 x double> %1) {
774 ; CHECK-LABEL: pvaddu_vsvl:
776 ; CHECK-NEXT: lea %s1, 256
777 ; CHECK-NEXT: lvl %s1
778 ; CHECK-NEXT: pvaddu %v0, %s0, %v0
779 ; CHECK-NEXT: b.l.t (, %s10)
780 %3 = tail call fast <256 x double> @llvm.ve.vl.pvaddu.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.pvaddu.vsvl(i64, <256 x double>, i32)
787 ; Function Attrs: nounwind readnone
788 define fastcc <256 x double> @pvaddu_vsvvl(i64 %0, <256 x double> %1, <256 x double> %2) {
789 ; CHECK-LABEL: pvaddu_vsvvl:
791 ; CHECK-NEXT: lea %s1, 128
792 ; CHECK-NEXT: lvl %s1
793 ; CHECK-NEXT: pvaddu %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.pvaddu.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.pvaddu.vsvvl(i64, <256 x double>, <256 x double>, i32)
805 ; Function Attrs: nounwind readnone
806 define fastcc <256 x double> @pvaddu_vvvMvl(<256 x double> %0, <256 x double> %1, <512 x i1> %2, <256 x double> %3) {
807 ; CHECK-LABEL: pvaddu_vvvMvl:
809 ; CHECK-NEXT: lea %s0, 128
810 ; CHECK-NEXT: lvl %s0
811 ; CHECK-NEXT: pvaddu %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.pvaddu.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.pvaddu.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> @pvaddu_vsvMvl(i64 %0, <256 x double> %1, <512 x i1> %2, <256 x double> %3) {
825 ; CHECK-LABEL: pvaddu_vsvMvl:
827 ; CHECK-NEXT: lea %s1, 128
828 ; CHECK-NEXT: lvl %s1
829 ; CHECK-NEXT: pvaddu %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.pvaddu.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.pvaddu.vsvMvl(i64, <256 x double>, <512 x i1>, <256 x double>, i32)
841 ; Function Attrs: nounwind readnone
842 define fastcc <256 x double> @pvadds_vvvl(<256 x double> %0, <256 x double> %1) {
843 ; CHECK-LABEL: pvadds_vvvl:
845 ; CHECK-NEXT: lea %s0, 256
846 ; CHECK-NEXT: lvl %s0
847 ; CHECK-NEXT: pvadds %v0, %v0, %v1
848 ; CHECK-NEXT: b.l.t (, %s10)
849 %3 = tail call fast <256 x double> @llvm.ve.vl.pvadds.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.pvadds.vvvl(<256 x double>, <256 x double>, i32)
856 ; Function Attrs: nounwind readnone
857 define fastcc <256 x double> @pvadds_vvvvl(<256 x double> %0, <256 x double> %1, <256 x double> %2) {
858 ; CHECK-LABEL: pvadds_vvvvl:
860 ; CHECK-NEXT: lea %s0, 128
861 ; CHECK-NEXT: lvl %s0
862 ; CHECK-NEXT: pvadds %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.pvadds.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.pvadds.vvvvl(<256 x double>, <256 x double>, <256 x double>, i32)
874 ; Function Attrs: nounwind readnone
875 define fastcc <256 x double> @pvadds_vsvl(i64 %0, <256 x double> %1) {
876 ; CHECK-LABEL: pvadds_vsvl:
878 ; CHECK-NEXT: lea %s1, 256
879 ; CHECK-NEXT: lvl %s1
880 ; CHECK-NEXT: pvadds %v0, %s0, %v0
881 ; CHECK-NEXT: b.l.t (, %s10)
882 %3 = tail call fast <256 x double> @llvm.ve.vl.pvadds.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.pvadds.vsvl(i64, <256 x double>, i32)
889 ; Function Attrs: nounwind readnone
890 define fastcc <256 x double> @pvadds_vsvvl(i64 %0, <256 x double> %1, <256 x double> %2) {
891 ; CHECK-LABEL: pvadds_vsvvl:
893 ; CHECK-NEXT: lea %s1, 128
894 ; CHECK-NEXT: lvl %s1
895 ; CHECK-NEXT: pvadds %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.pvadds.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.pvadds.vsvvl(i64, <256 x double>, <256 x double>, i32)
907 ; Function Attrs: nounwind readnone
908 define fastcc <256 x double> @pvadds_vvvMvl(<256 x double> %0, <256 x double> %1, <512 x i1> %2, <256 x double> %3) {
909 ; CHECK-LABEL: pvadds_vvvMvl:
911 ; CHECK-NEXT: lea %s0, 128
912 ; CHECK-NEXT: lvl %s0
913 ; CHECK-NEXT: pvadds %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.pvadds.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.pvadds.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> @pvadds_vsvMvl(i64 %0, <256 x double> %1, <512 x i1> %2, <256 x double> %3) {
927 ; CHECK-LABEL: pvadds_vsvMvl:
929 ; CHECK-NEXT: lea %s1, 128
930 ; CHECK-NEXT: lvl %s1
931 ; CHECK-NEXT: pvadds %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.pvadds.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.pvadds.vsvMvl(i64, <256 x double>, <512 x i1>, <256 x double>, i32)