[rtsan] Add fork/execve interceptors (#117198)
[llvm-project.git] / llvm / test / CodeGen / VE / VELIntrinsics / vadd.ll
blobc4bf586bb2ffcaf3a504e0002ff4cbba8ab5b85c
1 ; RUN: llc < %s -mtriple=ve -mattr=+vpu | FileCheck %s
3 ;;; Test vector add intrinsic instructions
4 ;;;
5 ;;; Note:
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:
13 ; CHECK:       # %bb.0:
14 ; CHECK-NEXT:    lea %s1, 256
15 ; CHECK-NEXT:    lvl %s1
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)
19   ret <256 x double> %3
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:
28 ; CHECK:       # %bb.0:
29 ; CHECK-NEXT:    lea %s0, 256
30 ; CHECK-NEXT:    lvl %s0
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)
34   ret <256 x double> %2
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:
40 ; CHECK:       # %bb.0:
41 ; CHECK-NEXT:    lea %s1, 128
42 ; CHECK-NEXT:    lvl %s1
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)
49   ret <256 x double> %5
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:
58 ; CHECK:       # %bb.0:
59 ; CHECK-NEXT:    lea %s0, 128
60 ; CHECK-NEXT:    lvl %s0
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)
67   ret <256 x double> %4
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:
73 ; CHECK:       # %bb.0:
74 ; CHECK-NEXT:    lea %s1, 128
75 ; CHECK-NEXT:    lvl %s1
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)
82   ret <256 x double> %4
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:
91 ; CHECK:       # %bb.0:
92 ; CHECK-NEXT:    lea %s0, 128
93 ; CHECK-NEXT:    lvl %s0
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:
106 ; CHECK:       # %bb.0:
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:
121 ; CHECK:       # %bb.0:
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:
139 ; CHECK:       # %bb.0:
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:
157 ; CHECK:       # %bb.0:
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:
173 ; CHECK:       # %bb.0:
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:
185 ; CHECK:       # %bb.0:
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:
204 ; CHECK:       # %bb.0:
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:
219 ; CHECK:       # %bb.0:
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:
238 ; CHECK:       # %bb.0:
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:
253 ; CHECK:       # %bb.0:
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:
268 ; CHECK:       # %bb.0:
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:
286 ; CHECK:       # %bb.0:
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:
304 ; CHECK:       # %bb.0:
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:
320 ; CHECK:       # %bb.0:
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:
332 ; CHECK:       # %bb.0:
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:
351 ; CHECK:       # %bb.0:
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:
366 ; CHECK:       # %bb.0:
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:
385 ; CHECK:       # %bb.0:
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:
400 ; CHECK:       # %bb.0:
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:
415 ; CHECK:       # %bb.0:
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:
433 ; CHECK:       # %bb.0:
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:
451 ; CHECK:       # %bb.0:
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:
466 ; CHECK:       # %bb.0:
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:
478 ; CHECK:       # %bb.0:
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:
496 ; CHECK:       # %bb.0:
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:
511 ; CHECK:       # %bb.0:
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:
529 ; CHECK:       # %bb.0:
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:
544 ; CHECK:       # %bb.0:
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:
559 ; CHECK:       # %bb.0:
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:
577 ; CHECK:       # %bb.0:
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:
595 ; CHECK:       # %bb.0:
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:
611 ; CHECK:       # %bb.0:
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:
623 ; CHECK:       # %bb.0:
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:
642 ; CHECK:       # %bb.0:
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:
657 ; CHECK:       # %bb.0:
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:
676 ; CHECK:       # %bb.0:
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:
691 ; CHECK:       # %bb.0:
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:
706 ; CHECK:       # %bb.0:
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:
724 ; CHECK:       # %bb.0:
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:
742 ; CHECK:       # %bb.0:
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:
757 ; CHECK:       # %bb.0:
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:
775 ; CHECK:       # %bb.0:
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:
790 ; CHECK:       # %bb.0:
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:
808 ; CHECK:       # %bb.0:
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:
826 ; CHECK:       # %bb.0:
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:
844 ; CHECK:       # %bb.0:
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:
859 ; CHECK:       # %bb.0:
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:
877 ; CHECK:       # %bb.0:
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:
892 ; CHECK:       # %bb.0:
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:
910 ; CHECK:       # %bb.0:
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:
928 ; CHECK:       # %bb.0:
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)