1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -mtriple=riscv32 -mattr=+v -verify-machineinstrs < %s \
3 ; RUN: | FileCheck %s --check-prefixes=CHECK,RV32
4 ; RUN: llc -mtriple=riscv64 -mattr=+v -verify-machineinstrs < %s \
5 ; RUN: | FileCheck %s --check-prefixes=CHECK,RV64
7 declare <vscale x 1 x i8> @llvm.uadd.sat.nxv1i8(<vscale x 1 x i8>, <vscale x 1 x i8>)
9 define <vscale x 1 x i8> @uadd_nxv1i8_vv(<vscale x 1 x i8> %va, <vscale x 1 x i8> %b) {
10 ; CHECK-LABEL: uadd_nxv1i8_vv:
12 ; CHECK-NEXT: vsetvli a0, zero, e8, mf8, ta, ma
13 ; CHECK-NEXT: vsaddu.vv v8, v8, v9
15 %v = call <vscale x 1 x i8> @llvm.uadd.sat.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %b)
16 ret <vscale x 1 x i8> %v
19 define <vscale x 1 x i8> @uadd_nxv1i8_vx(<vscale x 1 x i8> %va, i8 %b) {
20 ; CHECK-LABEL: uadd_nxv1i8_vx:
22 ; CHECK-NEXT: vsetvli a1, zero, e8, mf8, ta, ma
23 ; CHECK-NEXT: vsaddu.vx v8, v8, a0
25 %elt.head = insertelement <vscale x 1 x i8> poison, i8 %b, i32 0
26 %vb = shufflevector <vscale x 1 x i8> %elt.head, <vscale x 1 x i8> poison, <vscale x 1 x i32> zeroinitializer
27 %v = call <vscale x 1 x i8> @llvm.uadd.sat.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %vb)
28 ret <vscale x 1 x i8> %v
31 define <vscale x 1 x i8> @uadd_nxv1i8_vi(<vscale x 1 x i8> %va) {
32 ; CHECK-LABEL: uadd_nxv1i8_vi:
34 ; CHECK-NEXT: vsetvli a0, zero, e8, mf8, ta, ma
35 ; CHECK-NEXT: vsaddu.vi v8, v8, 8
37 %v = call <vscale x 1 x i8> @llvm.uadd.sat.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> splat (i8 8))
38 ret <vscale x 1 x i8> %v
41 declare <vscale x 2 x i8> @llvm.uadd.sat.nxv2i8(<vscale x 2 x i8>, <vscale x 2 x i8>)
43 define <vscale x 2 x i8> @uadd_nxv2i8_vv(<vscale x 2 x i8> %va, <vscale x 2 x i8> %b) {
44 ; CHECK-LABEL: uadd_nxv2i8_vv:
46 ; CHECK-NEXT: vsetvli a0, zero, e8, mf4, ta, ma
47 ; CHECK-NEXT: vsaddu.vv v8, v8, v9
49 %v = call <vscale x 2 x i8> @llvm.uadd.sat.nxv2i8(<vscale x 2 x i8> %va, <vscale x 2 x i8> %b)
50 ret <vscale x 2 x i8> %v
53 define <vscale x 2 x i8> @uadd_nxv2i8_vx(<vscale x 2 x i8> %va, i8 %b) {
54 ; CHECK-LABEL: uadd_nxv2i8_vx:
56 ; CHECK-NEXT: vsetvli a1, zero, e8, mf4, ta, ma
57 ; CHECK-NEXT: vsaddu.vx v8, v8, a0
59 %elt.head = insertelement <vscale x 2 x i8> poison, i8 %b, i32 0
60 %vb = shufflevector <vscale x 2 x i8> %elt.head, <vscale x 2 x i8> poison, <vscale x 2 x i32> zeroinitializer
61 %v = call <vscale x 2 x i8> @llvm.uadd.sat.nxv2i8(<vscale x 2 x i8> %va, <vscale x 2 x i8> %vb)
62 ret <vscale x 2 x i8> %v
65 define <vscale x 2 x i8> @uadd_nxv2i8_vi(<vscale x 2 x i8> %va) {
66 ; CHECK-LABEL: uadd_nxv2i8_vi:
68 ; CHECK-NEXT: vsetvli a0, zero, e8, mf4, ta, ma
69 ; CHECK-NEXT: vsaddu.vi v8, v8, 8
71 %v = call <vscale x 2 x i8> @llvm.uadd.sat.nxv2i8(<vscale x 2 x i8> %va, <vscale x 2 x i8> splat (i8 8))
72 ret <vscale x 2 x i8> %v
75 declare <vscale x 4 x i8> @llvm.uadd.sat.nxv4i8(<vscale x 4 x i8>, <vscale x 4 x i8>)
77 define <vscale x 4 x i8> @uadd_nxv4i8_vv(<vscale x 4 x i8> %va, <vscale x 4 x i8> %b) {
78 ; CHECK-LABEL: uadd_nxv4i8_vv:
80 ; CHECK-NEXT: vsetvli a0, zero, e8, mf2, ta, ma
81 ; CHECK-NEXT: vsaddu.vv v8, v8, v9
83 %v = call <vscale x 4 x i8> @llvm.uadd.sat.nxv4i8(<vscale x 4 x i8> %va, <vscale x 4 x i8> %b)
84 ret <vscale x 4 x i8> %v
87 define <vscale x 4 x i8> @uadd_nxv4i8_vx(<vscale x 4 x i8> %va, i8 %b) {
88 ; CHECK-LABEL: uadd_nxv4i8_vx:
90 ; CHECK-NEXT: vsetvli a1, zero, e8, mf2, ta, ma
91 ; CHECK-NEXT: vsaddu.vx v8, v8, a0
93 %elt.head = insertelement <vscale x 4 x i8> poison, i8 %b, i32 0
94 %vb = shufflevector <vscale x 4 x i8> %elt.head, <vscale x 4 x i8> poison, <vscale x 4 x i32> zeroinitializer
95 %v = call <vscale x 4 x i8> @llvm.uadd.sat.nxv4i8(<vscale x 4 x i8> %va, <vscale x 4 x i8> %vb)
96 ret <vscale x 4 x i8> %v
99 define <vscale x 4 x i8> @uadd_nxv4i8_vi(<vscale x 4 x i8> %va) {
100 ; CHECK-LABEL: uadd_nxv4i8_vi:
102 ; CHECK-NEXT: vsetvli a0, zero, e8, mf2, ta, ma
103 ; CHECK-NEXT: vsaddu.vi v8, v8, 8
105 %v = call <vscale x 4 x i8> @llvm.uadd.sat.nxv4i8(<vscale x 4 x i8> %va, <vscale x 4 x i8> splat (i8 8))
106 ret <vscale x 4 x i8> %v
109 declare <vscale x 8 x i8> @llvm.uadd.sat.nxv8i8(<vscale x 8 x i8>, <vscale x 8 x i8>)
111 define <vscale x 8 x i8> @uadd_nxv8i8_vv(<vscale x 8 x i8> %va, <vscale x 8 x i8> %b) {
112 ; CHECK-LABEL: uadd_nxv8i8_vv:
114 ; CHECK-NEXT: vsetvli a0, zero, e8, m1, ta, ma
115 ; CHECK-NEXT: vsaddu.vv v8, v8, v9
117 %v = call <vscale x 8 x i8> @llvm.uadd.sat.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %b)
118 ret <vscale x 8 x i8> %v
121 define <vscale x 8 x i8> @uadd_nxv8i8_vx(<vscale x 8 x i8> %va, i8 %b) {
122 ; CHECK-LABEL: uadd_nxv8i8_vx:
124 ; CHECK-NEXT: vsetvli a1, zero, e8, m1, ta, ma
125 ; CHECK-NEXT: vsaddu.vx v8, v8, a0
127 %elt.head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 0
128 %vb = shufflevector <vscale x 8 x i8> %elt.head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer
129 %v = call <vscale x 8 x i8> @llvm.uadd.sat.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb)
130 ret <vscale x 8 x i8> %v
133 define <vscale x 8 x i8> @uadd_nxv8i8_vi(<vscale x 8 x i8> %va) {
134 ; CHECK-LABEL: uadd_nxv8i8_vi:
136 ; CHECK-NEXT: vsetvli a0, zero, e8, m1, ta, ma
137 ; CHECK-NEXT: vsaddu.vi v8, v8, 8
139 %v = call <vscale x 8 x i8> @llvm.uadd.sat.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> splat (i8 8))
140 ret <vscale x 8 x i8> %v
143 declare <vscale x 16 x i8> @llvm.uadd.sat.nxv16i8(<vscale x 16 x i8>, <vscale x 16 x i8>)
145 define <vscale x 16 x i8> @uadd_nxv16i8_vv(<vscale x 16 x i8> %va, <vscale x 16 x i8> %b) {
146 ; CHECK-LABEL: uadd_nxv16i8_vv:
148 ; CHECK-NEXT: vsetvli a0, zero, e8, m2, ta, ma
149 ; CHECK-NEXT: vsaddu.vv v8, v8, v10
151 %v = call <vscale x 16 x i8> @llvm.uadd.sat.nxv16i8(<vscale x 16 x i8> %va, <vscale x 16 x i8> %b)
152 ret <vscale x 16 x i8> %v
155 define <vscale x 16 x i8> @uadd_nxv16i8_vx(<vscale x 16 x i8> %va, i8 %b) {
156 ; CHECK-LABEL: uadd_nxv16i8_vx:
158 ; CHECK-NEXT: vsetvli a1, zero, e8, m2, ta, ma
159 ; CHECK-NEXT: vsaddu.vx v8, v8, a0
161 %elt.head = insertelement <vscale x 16 x i8> poison, i8 %b, i32 0
162 %vb = shufflevector <vscale x 16 x i8> %elt.head, <vscale x 16 x i8> poison, <vscale x 16 x i32> zeroinitializer
163 %v = call <vscale x 16 x i8> @llvm.uadd.sat.nxv16i8(<vscale x 16 x i8> %va, <vscale x 16 x i8> %vb)
164 ret <vscale x 16 x i8> %v
167 define <vscale x 16 x i8> @uadd_nxv16i8_vi(<vscale x 16 x i8> %va) {
168 ; CHECK-LABEL: uadd_nxv16i8_vi:
170 ; CHECK-NEXT: vsetvli a0, zero, e8, m2, ta, ma
171 ; CHECK-NEXT: vsaddu.vi v8, v8, 8
173 %v = call <vscale x 16 x i8> @llvm.uadd.sat.nxv16i8(<vscale x 16 x i8> %va, <vscale x 16 x i8> splat (i8 8))
174 ret <vscale x 16 x i8> %v
177 declare <vscale x 32 x i8> @llvm.uadd.sat.nxv32i8(<vscale x 32 x i8>, <vscale x 32 x i8>)
179 define <vscale x 32 x i8> @uadd_nxv32i8_vv(<vscale x 32 x i8> %va, <vscale x 32 x i8> %b) {
180 ; CHECK-LABEL: uadd_nxv32i8_vv:
182 ; CHECK-NEXT: vsetvli a0, zero, e8, m4, ta, ma
183 ; CHECK-NEXT: vsaddu.vv v8, v8, v12
185 %v = call <vscale x 32 x i8> @llvm.uadd.sat.nxv32i8(<vscale x 32 x i8> %va, <vscale x 32 x i8> %b)
186 ret <vscale x 32 x i8> %v
189 define <vscale x 32 x i8> @uadd_nxv32i8_vx(<vscale x 32 x i8> %va, i8 %b) {
190 ; CHECK-LABEL: uadd_nxv32i8_vx:
192 ; CHECK-NEXT: vsetvli a1, zero, e8, m4, ta, ma
193 ; CHECK-NEXT: vsaddu.vx v8, v8, a0
195 %elt.head = insertelement <vscale x 32 x i8> poison, i8 %b, i32 0
196 %vb = shufflevector <vscale x 32 x i8> %elt.head, <vscale x 32 x i8> poison, <vscale x 32 x i32> zeroinitializer
197 %v = call <vscale x 32 x i8> @llvm.uadd.sat.nxv32i8(<vscale x 32 x i8> %va, <vscale x 32 x i8> %vb)
198 ret <vscale x 32 x i8> %v
201 define <vscale x 32 x i8> @uadd_nxv32i8_vi(<vscale x 32 x i8> %va) {
202 ; CHECK-LABEL: uadd_nxv32i8_vi:
204 ; CHECK-NEXT: vsetvli a0, zero, e8, m4, ta, ma
205 ; CHECK-NEXT: vsaddu.vi v8, v8, 8
207 %v = call <vscale x 32 x i8> @llvm.uadd.sat.nxv32i8(<vscale x 32 x i8> %va, <vscale x 32 x i8> splat (i8 8))
208 ret <vscale x 32 x i8> %v
211 declare <vscale x 64 x i8> @llvm.uadd.sat.nxv64i8(<vscale x 64 x i8>, <vscale x 64 x i8>)
213 define <vscale x 64 x i8> @uadd_nxv64i8_vv(<vscale x 64 x i8> %va, <vscale x 64 x i8> %b) {
214 ; CHECK-LABEL: uadd_nxv64i8_vv:
216 ; CHECK-NEXT: vsetvli a0, zero, e8, m8, ta, ma
217 ; CHECK-NEXT: vsaddu.vv v8, v8, v16
219 %v = call <vscale x 64 x i8> @llvm.uadd.sat.nxv64i8(<vscale x 64 x i8> %va, <vscale x 64 x i8> %b)
220 ret <vscale x 64 x i8> %v
223 define <vscale x 64 x i8> @uadd_nxv64i8_vx(<vscale x 64 x i8> %va, i8 %b) {
224 ; CHECK-LABEL: uadd_nxv64i8_vx:
226 ; CHECK-NEXT: vsetvli a1, zero, e8, m8, ta, ma
227 ; CHECK-NEXT: vsaddu.vx v8, v8, a0
229 %elt.head = insertelement <vscale x 64 x i8> poison, i8 %b, i32 0
230 %vb = shufflevector <vscale x 64 x i8> %elt.head, <vscale x 64 x i8> poison, <vscale x 64 x i32> zeroinitializer
231 %v = call <vscale x 64 x i8> @llvm.uadd.sat.nxv64i8(<vscale x 64 x i8> %va, <vscale x 64 x i8> %vb)
232 ret <vscale x 64 x i8> %v
235 define <vscale x 64 x i8> @uadd_nxv64i8_vi(<vscale x 64 x i8> %va) {
236 ; CHECK-LABEL: uadd_nxv64i8_vi:
238 ; CHECK-NEXT: vsetvli a0, zero, e8, m8, ta, ma
239 ; CHECK-NEXT: vsaddu.vi v8, v8, 8
241 %v = call <vscale x 64 x i8> @llvm.uadd.sat.nxv64i8(<vscale x 64 x i8> %va, <vscale x 64 x i8> splat (i8 8))
242 ret <vscale x 64 x i8> %v
245 declare <vscale x 1 x i16> @llvm.uadd.sat.nxv1i16(<vscale x 1 x i16>, <vscale x 1 x i16>)
247 define <vscale x 1 x i16> @uadd_nxv1i16_vv(<vscale x 1 x i16> %va, <vscale x 1 x i16> %b) {
248 ; CHECK-LABEL: uadd_nxv1i16_vv:
250 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
251 ; CHECK-NEXT: vsaddu.vv v8, v8, v9
253 %v = call <vscale x 1 x i16> @llvm.uadd.sat.nxv1i16(<vscale x 1 x i16> %va, <vscale x 1 x i16> %b)
254 ret <vscale x 1 x i16> %v
257 define <vscale x 1 x i16> @uadd_nxv1i16_vx(<vscale x 1 x i16> %va, i16 %b) {
258 ; CHECK-LABEL: uadd_nxv1i16_vx:
260 ; CHECK-NEXT: vsetvli a1, zero, e16, mf4, ta, ma
261 ; CHECK-NEXT: vsaddu.vx v8, v8, a0
263 %elt.head = insertelement <vscale x 1 x i16> poison, i16 %b, i32 0
264 %vb = shufflevector <vscale x 1 x i16> %elt.head, <vscale x 1 x i16> poison, <vscale x 1 x i32> zeroinitializer
265 %v = call <vscale x 1 x i16> @llvm.uadd.sat.nxv1i16(<vscale x 1 x i16> %va, <vscale x 1 x i16> %vb)
266 ret <vscale x 1 x i16> %v
269 define <vscale x 1 x i16> @uadd_nxv1i16_vi(<vscale x 1 x i16> %va) {
270 ; CHECK-LABEL: uadd_nxv1i16_vi:
272 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
273 ; CHECK-NEXT: vsaddu.vi v8, v8, 8
275 %v = call <vscale x 1 x i16> @llvm.uadd.sat.nxv1i16(<vscale x 1 x i16> %va, <vscale x 1 x i16> splat (i16 8))
276 ret <vscale x 1 x i16> %v
279 declare <vscale x 2 x i16> @llvm.uadd.sat.nxv2i16(<vscale x 2 x i16>, <vscale x 2 x i16>)
281 define <vscale x 2 x i16> @uadd_nxv2i16_vv(<vscale x 2 x i16> %va, <vscale x 2 x i16> %b) {
282 ; CHECK-LABEL: uadd_nxv2i16_vv:
284 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
285 ; CHECK-NEXT: vsaddu.vv v8, v8, v9
287 %v = call <vscale x 2 x i16> @llvm.uadd.sat.nxv2i16(<vscale x 2 x i16> %va, <vscale x 2 x i16> %b)
288 ret <vscale x 2 x i16> %v
291 define <vscale x 2 x i16> @uadd_nxv2i16_vx(<vscale x 2 x i16> %va, i16 %b) {
292 ; CHECK-LABEL: uadd_nxv2i16_vx:
294 ; CHECK-NEXT: vsetvli a1, zero, e16, mf2, ta, ma
295 ; CHECK-NEXT: vsaddu.vx v8, v8, a0
297 %elt.head = insertelement <vscale x 2 x i16> poison, i16 %b, i32 0
298 %vb = shufflevector <vscale x 2 x i16> %elt.head, <vscale x 2 x i16> poison, <vscale x 2 x i32> zeroinitializer
299 %v = call <vscale x 2 x i16> @llvm.uadd.sat.nxv2i16(<vscale x 2 x i16> %va, <vscale x 2 x i16> %vb)
300 ret <vscale x 2 x i16> %v
303 define <vscale x 2 x i16> @uadd_nxv2i16_vi(<vscale x 2 x i16> %va) {
304 ; CHECK-LABEL: uadd_nxv2i16_vi:
306 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
307 ; CHECK-NEXT: vsaddu.vi v8, v8, 8
309 %v = call <vscale x 2 x i16> @llvm.uadd.sat.nxv2i16(<vscale x 2 x i16> %va, <vscale x 2 x i16> splat (i16 8))
310 ret <vscale x 2 x i16> %v
313 declare <vscale x 4 x i16> @llvm.uadd.sat.nxv4i16(<vscale x 4 x i16>, <vscale x 4 x i16>)
315 define <vscale x 4 x i16> @uadd_nxv4i16_vv(<vscale x 4 x i16> %va, <vscale x 4 x i16> %b) {
316 ; CHECK-LABEL: uadd_nxv4i16_vv:
318 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma
319 ; CHECK-NEXT: vsaddu.vv v8, v8, v9
321 %v = call <vscale x 4 x i16> @llvm.uadd.sat.nxv4i16(<vscale x 4 x i16> %va, <vscale x 4 x i16> %b)
322 ret <vscale x 4 x i16> %v
325 define <vscale x 4 x i16> @uadd_nxv4i16_vx(<vscale x 4 x i16> %va, i16 %b) {
326 ; CHECK-LABEL: uadd_nxv4i16_vx:
328 ; CHECK-NEXT: vsetvli a1, zero, e16, m1, ta, ma
329 ; CHECK-NEXT: vsaddu.vx v8, v8, a0
331 %elt.head = insertelement <vscale x 4 x i16> poison, i16 %b, i32 0
332 %vb = shufflevector <vscale x 4 x i16> %elt.head, <vscale x 4 x i16> poison, <vscale x 4 x i32> zeroinitializer
333 %v = call <vscale x 4 x i16> @llvm.uadd.sat.nxv4i16(<vscale x 4 x i16> %va, <vscale x 4 x i16> %vb)
334 ret <vscale x 4 x i16> %v
337 define <vscale x 4 x i16> @uadd_nxv4i16_vi(<vscale x 4 x i16> %va) {
338 ; CHECK-LABEL: uadd_nxv4i16_vi:
340 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma
341 ; CHECK-NEXT: vsaddu.vi v8, v8, 8
343 %v = call <vscale x 4 x i16> @llvm.uadd.sat.nxv4i16(<vscale x 4 x i16> %va, <vscale x 4 x i16> splat (i16 8))
344 ret <vscale x 4 x i16> %v
347 declare <vscale x 8 x i16> @llvm.uadd.sat.nxv8i16(<vscale x 8 x i16>, <vscale x 8 x i16>)
349 define <vscale x 8 x i16> @uadd_nxv8i16_vv(<vscale x 8 x i16> %va, <vscale x 8 x i16> %b) {
350 ; CHECK-LABEL: uadd_nxv8i16_vv:
352 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma
353 ; CHECK-NEXT: vsaddu.vv v8, v8, v10
355 %v = call <vscale x 8 x i16> @llvm.uadd.sat.nxv8i16(<vscale x 8 x i16> %va, <vscale x 8 x i16> %b)
356 ret <vscale x 8 x i16> %v
359 define <vscale x 8 x i16> @uadd_nxv8i16_vx(<vscale x 8 x i16> %va, i16 %b) {
360 ; CHECK-LABEL: uadd_nxv8i16_vx:
362 ; CHECK-NEXT: vsetvli a1, zero, e16, m2, ta, ma
363 ; CHECK-NEXT: vsaddu.vx v8, v8, a0
365 %elt.head = insertelement <vscale x 8 x i16> poison, i16 %b, i32 0
366 %vb = shufflevector <vscale x 8 x i16> %elt.head, <vscale x 8 x i16> poison, <vscale x 8 x i32> zeroinitializer
367 %v = call <vscale x 8 x i16> @llvm.uadd.sat.nxv8i16(<vscale x 8 x i16> %va, <vscale x 8 x i16> %vb)
368 ret <vscale x 8 x i16> %v
371 define <vscale x 8 x i16> @uadd_nxv8i16_vi(<vscale x 8 x i16> %va) {
372 ; CHECK-LABEL: uadd_nxv8i16_vi:
374 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma
375 ; CHECK-NEXT: vsaddu.vi v8, v8, 8
377 %v = call <vscale x 8 x i16> @llvm.uadd.sat.nxv8i16(<vscale x 8 x i16> %va, <vscale x 8 x i16> splat (i16 8))
378 ret <vscale x 8 x i16> %v
381 declare <vscale x 16 x i16> @llvm.uadd.sat.nxv16i16(<vscale x 16 x i16>, <vscale x 16 x i16>)
383 define <vscale x 16 x i16> @uadd_nxv16i16_vv(<vscale x 16 x i16> %va, <vscale x 16 x i16> %b) {
384 ; CHECK-LABEL: uadd_nxv16i16_vv:
386 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
387 ; CHECK-NEXT: vsaddu.vv v8, v8, v12
389 %v = call <vscale x 16 x i16> @llvm.uadd.sat.nxv16i16(<vscale x 16 x i16> %va, <vscale x 16 x i16> %b)
390 ret <vscale x 16 x i16> %v
393 define <vscale x 16 x i16> @uadd_nxv16i16_vx(<vscale x 16 x i16> %va, i16 %b) {
394 ; CHECK-LABEL: uadd_nxv16i16_vx:
396 ; CHECK-NEXT: vsetvli a1, zero, e16, m4, ta, ma
397 ; CHECK-NEXT: vsaddu.vx v8, v8, a0
399 %elt.head = insertelement <vscale x 16 x i16> poison, i16 %b, i32 0
400 %vb = shufflevector <vscale x 16 x i16> %elt.head, <vscale x 16 x i16> poison, <vscale x 16 x i32> zeroinitializer
401 %v = call <vscale x 16 x i16> @llvm.uadd.sat.nxv16i16(<vscale x 16 x i16> %va, <vscale x 16 x i16> %vb)
402 ret <vscale x 16 x i16> %v
405 define <vscale x 16 x i16> @uadd_nxv16i16_vi(<vscale x 16 x i16> %va) {
406 ; CHECK-LABEL: uadd_nxv16i16_vi:
408 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
409 ; CHECK-NEXT: vsaddu.vi v8, v8, 8
411 %v = call <vscale x 16 x i16> @llvm.uadd.sat.nxv16i16(<vscale x 16 x i16> %va, <vscale x 16 x i16> splat (i16 8))
412 ret <vscale x 16 x i16> %v
415 declare <vscale x 32 x i16> @llvm.uadd.sat.nxv32i16(<vscale x 32 x i16>, <vscale x 32 x i16>)
417 define <vscale x 32 x i16> @uadd_nxv32i16_vv(<vscale x 32 x i16> %va, <vscale x 32 x i16> %b) {
418 ; CHECK-LABEL: uadd_nxv32i16_vv:
420 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma
421 ; CHECK-NEXT: vsaddu.vv v8, v8, v16
423 %v = call <vscale x 32 x i16> @llvm.uadd.sat.nxv32i16(<vscale x 32 x i16> %va, <vscale x 32 x i16> %b)
424 ret <vscale x 32 x i16> %v
427 define <vscale x 32 x i16> @uadd_nxv32i16_vx(<vscale x 32 x i16> %va, i16 %b) {
428 ; CHECK-LABEL: uadd_nxv32i16_vx:
430 ; CHECK-NEXT: vsetvli a1, zero, e16, m8, ta, ma
431 ; CHECK-NEXT: vsaddu.vx v8, v8, a0
433 %elt.head = insertelement <vscale x 32 x i16> poison, i16 %b, i32 0
434 %vb = shufflevector <vscale x 32 x i16> %elt.head, <vscale x 32 x i16> poison, <vscale x 32 x i32> zeroinitializer
435 %v = call <vscale x 32 x i16> @llvm.uadd.sat.nxv32i16(<vscale x 32 x i16> %va, <vscale x 32 x i16> %vb)
436 ret <vscale x 32 x i16> %v
439 define <vscale x 32 x i16> @uadd_nxv32i16_vi(<vscale x 32 x i16> %va) {
440 ; CHECK-LABEL: uadd_nxv32i16_vi:
442 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma
443 ; CHECK-NEXT: vsaddu.vi v8, v8, 8
445 %v = call <vscale x 32 x i16> @llvm.uadd.sat.nxv32i16(<vscale x 32 x i16> %va, <vscale x 32 x i16> splat (i16 8))
446 ret <vscale x 32 x i16> %v
449 declare <vscale x 1 x i32> @llvm.uadd.sat.nxv1i32(<vscale x 1 x i32>, <vscale x 1 x i32>)
451 define <vscale x 1 x i32> @uadd_nxv1i32_vv(<vscale x 1 x i32> %va, <vscale x 1 x i32> %b) {
452 ; CHECK-LABEL: uadd_nxv1i32_vv:
454 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
455 ; CHECK-NEXT: vsaddu.vv v8, v8, v9
457 %v = call <vscale x 1 x i32> @llvm.uadd.sat.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %b)
458 ret <vscale x 1 x i32> %v
461 define <vscale x 1 x i32> @uadd_nxv1i32_vx(<vscale x 1 x i32> %va, i32 %b) {
462 ; CHECK-LABEL: uadd_nxv1i32_vx:
464 ; CHECK-NEXT: vsetvli a1, zero, e32, mf2, ta, ma
465 ; CHECK-NEXT: vsaddu.vx v8, v8, a0
467 %elt.head = insertelement <vscale x 1 x i32> poison, i32 %b, i32 0
468 %vb = shufflevector <vscale x 1 x i32> %elt.head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer
469 %v = call <vscale x 1 x i32> @llvm.uadd.sat.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %vb)
470 ret <vscale x 1 x i32> %v
473 define <vscale x 1 x i32> @uadd_nxv1i32_vi(<vscale x 1 x i32> %va) {
474 ; CHECK-LABEL: uadd_nxv1i32_vi:
476 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
477 ; CHECK-NEXT: vsaddu.vi v8, v8, 8
479 %v = call <vscale x 1 x i32> @llvm.uadd.sat.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> splat (i32 8))
480 ret <vscale x 1 x i32> %v
483 declare <vscale x 2 x i32> @llvm.uadd.sat.nxv2i32(<vscale x 2 x i32>, <vscale x 2 x i32>)
485 define <vscale x 2 x i32> @uadd_nxv2i32_vv(<vscale x 2 x i32> %va, <vscale x 2 x i32> %b) {
486 ; CHECK-LABEL: uadd_nxv2i32_vv:
488 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
489 ; CHECK-NEXT: vsaddu.vv v8, v8, v9
491 %v = call <vscale x 2 x i32> @llvm.uadd.sat.nxv2i32(<vscale x 2 x i32> %va, <vscale x 2 x i32> %b)
492 ret <vscale x 2 x i32> %v
495 define <vscale x 2 x i32> @uadd_nxv2i32_vx(<vscale x 2 x i32> %va, i32 %b) {
496 ; CHECK-LABEL: uadd_nxv2i32_vx:
498 ; CHECK-NEXT: vsetvli a1, zero, e32, m1, ta, ma
499 ; CHECK-NEXT: vsaddu.vx v8, v8, a0
501 %elt.head = insertelement <vscale x 2 x i32> poison, i32 %b, i32 0
502 %vb = shufflevector <vscale x 2 x i32> %elt.head, <vscale x 2 x i32> poison, <vscale x 2 x i32> zeroinitializer
503 %v = call <vscale x 2 x i32> @llvm.uadd.sat.nxv2i32(<vscale x 2 x i32> %va, <vscale x 2 x i32> %vb)
504 ret <vscale x 2 x i32> %v
507 define <vscale x 2 x i32> @uadd_nxv2i32_vi(<vscale x 2 x i32> %va) {
508 ; CHECK-LABEL: uadd_nxv2i32_vi:
510 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
511 ; CHECK-NEXT: vsaddu.vi v8, v8, 8
513 %v = call <vscale x 2 x i32> @llvm.uadd.sat.nxv2i32(<vscale x 2 x i32> %va, <vscale x 2 x i32> splat (i32 8))
514 ret <vscale x 2 x i32> %v
517 declare <vscale x 4 x i32> @llvm.uadd.sat.nxv4i32(<vscale x 4 x i32>, <vscale x 4 x i32>)
519 define <vscale x 4 x i32> @uadd_nxv4i32_vv(<vscale x 4 x i32> %va, <vscale x 4 x i32> %b) {
520 ; CHECK-LABEL: uadd_nxv4i32_vv:
522 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
523 ; CHECK-NEXT: vsaddu.vv v8, v8, v10
525 %v = call <vscale x 4 x i32> @llvm.uadd.sat.nxv4i32(<vscale x 4 x i32> %va, <vscale x 4 x i32> %b)
526 ret <vscale x 4 x i32> %v
529 define <vscale x 4 x i32> @uadd_nxv4i32_vx(<vscale x 4 x i32> %va, i32 %b) {
530 ; CHECK-LABEL: uadd_nxv4i32_vx:
532 ; CHECK-NEXT: vsetvli a1, zero, e32, m2, ta, ma
533 ; CHECK-NEXT: vsaddu.vx v8, v8, a0
535 %elt.head = insertelement <vscale x 4 x i32> poison, i32 %b, i32 0
536 %vb = shufflevector <vscale x 4 x i32> %elt.head, <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer
537 %v = call <vscale x 4 x i32> @llvm.uadd.sat.nxv4i32(<vscale x 4 x i32> %va, <vscale x 4 x i32> %vb)
538 ret <vscale x 4 x i32> %v
541 define <vscale x 4 x i32> @uadd_nxv4i32_vi(<vscale x 4 x i32> %va) {
542 ; CHECK-LABEL: uadd_nxv4i32_vi:
544 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
545 ; CHECK-NEXT: vsaddu.vi v8, v8, 8
547 %v = call <vscale x 4 x i32> @llvm.uadd.sat.nxv4i32(<vscale x 4 x i32> %va, <vscale x 4 x i32> splat (i32 8))
548 ret <vscale x 4 x i32> %v
551 declare <vscale x 8 x i32> @llvm.uadd.sat.nxv8i32(<vscale x 8 x i32>, <vscale x 8 x i32>)
553 define <vscale x 8 x i32> @uadd_nxv8i32_vv(<vscale x 8 x i32> %va, <vscale x 8 x i32> %b) {
554 ; CHECK-LABEL: uadd_nxv8i32_vv:
556 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
557 ; CHECK-NEXT: vsaddu.vv v8, v8, v12
559 %v = call <vscale x 8 x i32> @llvm.uadd.sat.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %b)
560 ret <vscale x 8 x i32> %v
563 define <vscale x 8 x i32> @uadd_nxv8i32_vx(<vscale x 8 x i32> %va, i32 %b) {
564 ; CHECK-LABEL: uadd_nxv8i32_vx:
566 ; CHECK-NEXT: vsetvli a1, zero, e32, m4, ta, ma
567 ; CHECK-NEXT: vsaddu.vx v8, v8, a0
569 %elt.head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 0
570 %vb = shufflevector <vscale x 8 x i32> %elt.head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer
571 %v = call <vscale x 8 x i32> @llvm.uadd.sat.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb)
572 ret <vscale x 8 x i32> %v
575 define <vscale x 8 x i32> @uadd_nxv8i32_vi(<vscale x 8 x i32> %va) {
576 ; CHECK-LABEL: uadd_nxv8i32_vi:
578 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
579 ; CHECK-NEXT: vsaddu.vi v8, v8, 8
581 %v = call <vscale x 8 x i32> @llvm.uadd.sat.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> splat (i32 8))
582 ret <vscale x 8 x i32> %v
585 declare <vscale x 16 x i32> @llvm.uadd.sat.nxv16i32(<vscale x 16 x i32>, <vscale x 16 x i32>)
587 define <vscale x 16 x i32> @uadd_nxv16i32_vv(<vscale x 16 x i32> %va, <vscale x 16 x i32> %b) {
588 ; CHECK-LABEL: uadd_nxv16i32_vv:
590 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma
591 ; CHECK-NEXT: vsaddu.vv v8, v8, v16
593 %v = call <vscale x 16 x i32> @llvm.uadd.sat.nxv16i32(<vscale x 16 x i32> %va, <vscale x 16 x i32> %b)
594 ret <vscale x 16 x i32> %v
597 define <vscale x 16 x i32> @uadd_nxv16i32_vx(<vscale x 16 x i32> %va, i32 %b) {
598 ; CHECK-LABEL: uadd_nxv16i32_vx:
600 ; CHECK-NEXT: vsetvli a1, zero, e32, m8, ta, ma
601 ; CHECK-NEXT: vsaddu.vx v8, v8, a0
603 %elt.head = insertelement <vscale x 16 x i32> poison, i32 %b, i32 0
604 %vb = shufflevector <vscale x 16 x i32> %elt.head, <vscale x 16 x i32> poison, <vscale x 16 x i32> zeroinitializer
605 %v = call <vscale x 16 x i32> @llvm.uadd.sat.nxv16i32(<vscale x 16 x i32> %va, <vscale x 16 x i32> %vb)
606 ret <vscale x 16 x i32> %v
609 define <vscale x 16 x i32> @uadd_nxv16i32_vi(<vscale x 16 x i32> %va) {
610 ; CHECK-LABEL: uadd_nxv16i32_vi:
612 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma
613 ; CHECK-NEXT: vsaddu.vi v8, v8, 8
615 %v = call <vscale x 16 x i32> @llvm.uadd.sat.nxv16i32(<vscale x 16 x i32> %va, <vscale x 16 x i32> splat (i32 8))
616 ret <vscale x 16 x i32> %v
619 declare <vscale x 1 x i64> @llvm.uadd.sat.nxv1i64(<vscale x 1 x i64>, <vscale x 1 x i64>)
621 define <vscale x 1 x i64> @uadd_nxv1i64_vv(<vscale x 1 x i64> %va, <vscale x 1 x i64> %b) {
622 ; CHECK-LABEL: uadd_nxv1i64_vv:
624 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma
625 ; CHECK-NEXT: vsaddu.vv v8, v8, v9
627 %v = call <vscale x 1 x i64> @llvm.uadd.sat.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %b)
628 ret <vscale x 1 x i64> %v
631 define <vscale x 1 x i64> @uadd_nxv1i64_vx(<vscale x 1 x i64> %va, i64 %b) {
632 ; RV32-LABEL: uadd_nxv1i64_vx:
634 ; RV32-NEXT: addi sp, sp, -16
635 ; RV32-NEXT: .cfi_def_cfa_offset 16
636 ; RV32-NEXT: sw a0, 8(sp)
637 ; RV32-NEXT: sw a1, 12(sp)
638 ; RV32-NEXT: addi a0, sp, 8
639 ; RV32-NEXT: vsetvli a1, zero, e64, m1, ta, ma
640 ; RV32-NEXT: vlse64.v v9, (a0), zero
641 ; RV32-NEXT: vsaddu.vv v8, v8, v9
642 ; RV32-NEXT: addi sp, sp, 16
643 ; RV32-NEXT: .cfi_def_cfa_offset 0
646 ; RV64-LABEL: uadd_nxv1i64_vx:
648 ; RV64-NEXT: vsetvli a1, zero, e64, m1, ta, ma
649 ; RV64-NEXT: vsaddu.vx v8, v8, a0
651 %elt.head = insertelement <vscale x 1 x i64> poison, i64 %b, i32 0
652 %vb = shufflevector <vscale x 1 x i64> %elt.head, <vscale x 1 x i64> poison, <vscale x 1 x i32> zeroinitializer
653 %v = call <vscale x 1 x i64> @llvm.uadd.sat.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %vb)
654 ret <vscale x 1 x i64> %v
657 define <vscale x 1 x i64> @uadd_nxv1i64_vi(<vscale x 1 x i64> %va) {
658 ; CHECK-LABEL: uadd_nxv1i64_vi:
660 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma
661 ; CHECK-NEXT: vsaddu.vi v8, v8, 8
663 %v = call <vscale x 1 x i64> @llvm.uadd.sat.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> splat (i64 8))
664 ret <vscale x 1 x i64> %v
667 declare <vscale x 2 x i64> @llvm.uadd.sat.nxv2i64(<vscale x 2 x i64>, <vscale x 2 x i64>)
669 define <vscale x 2 x i64> @uadd_nxv2i64_vv(<vscale x 2 x i64> %va, <vscale x 2 x i64> %b) {
670 ; CHECK-LABEL: uadd_nxv2i64_vv:
672 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma
673 ; CHECK-NEXT: vsaddu.vv v8, v8, v10
675 %v = call <vscale x 2 x i64> @llvm.uadd.sat.nxv2i64(<vscale x 2 x i64> %va, <vscale x 2 x i64> %b)
676 ret <vscale x 2 x i64> %v
679 define <vscale x 2 x i64> @uadd_nxv2i64_vx(<vscale x 2 x i64> %va, i64 %b) {
680 ; RV32-LABEL: uadd_nxv2i64_vx:
682 ; RV32-NEXT: addi sp, sp, -16
683 ; RV32-NEXT: .cfi_def_cfa_offset 16
684 ; RV32-NEXT: sw a0, 8(sp)
685 ; RV32-NEXT: sw a1, 12(sp)
686 ; RV32-NEXT: addi a0, sp, 8
687 ; RV32-NEXT: vsetvli a1, zero, e64, m2, ta, ma
688 ; RV32-NEXT: vlse64.v v10, (a0), zero
689 ; RV32-NEXT: vsaddu.vv v8, v8, v10
690 ; RV32-NEXT: addi sp, sp, 16
691 ; RV32-NEXT: .cfi_def_cfa_offset 0
694 ; RV64-LABEL: uadd_nxv2i64_vx:
696 ; RV64-NEXT: vsetvli a1, zero, e64, m2, ta, ma
697 ; RV64-NEXT: vsaddu.vx v8, v8, a0
699 %elt.head = insertelement <vscale x 2 x i64> poison, i64 %b, i32 0
700 %vb = shufflevector <vscale x 2 x i64> %elt.head, <vscale x 2 x i64> poison, <vscale x 2 x i32> zeroinitializer
701 %v = call <vscale x 2 x i64> @llvm.uadd.sat.nxv2i64(<vscale x 2 x i64> %va, <vscale x 2 x i64> %vb)
702 ret <vscale x 2 x i64> %v
705 define <vscale x 2 x i64> @uadd_nxv2i64_vi(<vscale x 2 x i64> %va) {
706 ; CHECK-LABEL: uadd_nxv2i64_vi:
708 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma
709 ; CHECK-NEXT: vsaddu.vi v8, v8, 8
711 %v = call <vscale x 2 x i64> @llvm.uadd.sat.nxv2i64(<vscale x 2 x i64> %va, <vscale x 2 x i64> splat (i64 8))
712 ret <vscale x 2 x i64> %v
715 declare <vscale x 4 x i64> @llvm.uadd.sat.nxv4i64(<vscale x 4 x i64>, <vscale x 4 x i64>)
717 define <vscale x 4 x i64> @uadd_nxv4i64_vv(<vscale x 4 x i64> %va, <vscale x 4 x i64> %b) {
718 ; CHECK-LABEL: uadd_nxv4i64_vv:
720 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma
721 ; CHECK-NEXT: vsaddu.vv v8, v8, v12
723 %v = call <vscale x 4 x i64> @llvm.uadd.sat.nxv4i64(<vscale x 4 x i64> %va, <vscale x 4 x i64> %b)
724 ret <vscale x 4 x i64> %v
727 define <vscale x 4 x i64> @uadd_nxv4i64_vx(<vscale x 4 x i64> %va, i64 %b) {
728 ; RV32-LABEL: uadd_nxv4i64_vx:
730 ; RV32-NEXT: addi sp, sp, -16
731 ; RV32-NEXT: .cfi_def_cfa_offset 16
732 ; RV32-NEXT: sw a0, 8(sp)
733 ; RV32-NEXT: sw a1, 12(sp)
734 ; RV32-NEXT: addi a0, sp, 8
735 ; RV32-NEXT: vsetvli a1, zero, e64, m4, ta, ma
736 ; RV32-NEXT: vlse64.v v12, (a0), zero
737 ; RV32-NEXT: vsaddu.vv v8, v8, v12
738 ; RV32-NEXT: addi sp, sp, 16
739 ; RV32-NEXT: .cfi_def_cfa_offset 0
742 ; RV64-LABEL: uadd_nxv4i64_vx:
744 ; RV64-NEXT: vsetvli a1, zero, e64, m4, ta, ma
745 ; RV64-NEXT: vsaddu.vx v8, v8, a0
747 %elt.head = insertelement <vscale x 4 x i64> poison, i64 %b, i32 0
748 %vb = shufflevector <vscale x 4 x i64> %elt.head, <vscale x 4 x i64> poison, <vscale x 4 x i32> zeroinitializer
749 %v = call <vscale x 4 x i64> @llvm.uadd.sat.nxv4i64(<vscale x 4 x i64> %va, <vscale x 4 x i64> %vb)
750 ret <vscale x 4 x i64> %v
753 define <vscale x 4 x i64> @uadd_nxv4i64_vi(<vscale x 4 x i64> %va) {
754 ; CHECK-LABEL: uadd_nxv4i64_vi:
756 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma
757 ; CHECK-NEXT: vsaddu.vi v8, v8, 8
759 %v = call <vscale x 4 x i64> @llvm.uadd.sat.nxv4i64(<vscale x 4 x i64> %va, <vscale x 4 x i64> splat (i64 8))
760 ret <vscale x 4 x i64> %v
763 declare <vscale x 8 x i64> @llvm.uadd.sat.nxv8i64(<vscale x 8 x i64>, <vscale x 8 x i64>)
765 define <vscale x 8 x i64> @uadd_nxv8i64_vv(<vscale x 8 x i64> %va, <vscale x 8 x i64> %b) {
766 ; CHECK-LABEL: uadd_nxv8i64_vv:
768 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma
769 ; CHECK-NEXT: vsaddu.vv v8, v8, v16
771 %v = call <vscale x 8 x i64> @llvm.uadd.sat.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %b)
772 ret <vscale x 8 x i64> %v
775 define <vscale x 8 x i64> @uadd_nxv8i64_vx(<vscale x 8 x i64> %va, i64 %b) {
776 ; RV32-LABEL: uadd_nxv8i64_vx:
778 ; RV32-NEXT: addi sp, sp, -16
779 ; RV32-NEXT: .cfi_def_cfa_offset 16
780 ; RV32-NEXT: sw a0, 8(sp)
781 ; RV32-NEXT: sw a1, 12(sp)
782 ; RV32-NEXT: addi a0, sp, 8
783 ; RV32-NEXT: vsetvli a1, zero, e64, m8, ta, ma
784 ; RV32-NEXT: vlse64.v v16, (a0), zero
785 ; RV32-NEXT: vsaddu.vv v8, v8, v16
786 ; RV32-NEXT: addi sp, sp, 16
787 ; RV32-NEXT: .cfi_def_cfa_offset 0
790 ; RV64-LABEL: uadd_nxv8i64_vx:
792 ; RV64-NEXT: vsetvli a1, zero, e64, m8, ta, ma
793 ; RV64-NEXT: vsaddu.vx v8, v8, a0
795 %elt.head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 0
796 %vb = shufflevector <vscale x 8 x i64> %elt.head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer
797 %v = call <vscale x 8 x i64> @llvm.uadd.sat.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb)
798 ret <vscale x 8 x i64> %v
801 define <vscale x 8 x i64> @uadd_nxv8i64_vi(<vscale x 8 x i64> %va) {
802 ; CHECK-LABEL: uadd_nxv8i64_vi:
804 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma
805 ; CHECK-NEXT: vsaddu.vi v8, v8, 8
807 %v = call <vscale x 8 x i64> @llvm.uadd.sat.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> splat (i64 8))
808 ret <vscale x 8 x i64> %v