1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -mtriple=aarch64-linux-gnu -mattr=+sve2 < %s | FileCheck %s
3 ; RUN: llc -mtriple=aarch64-linux-gnu -mattr=+sme -force-streaming < %s | FileCheck %s
9 define <vscale x 8 x i16> @sabalb_b(<vscale x 8 x i16> %a, <vscale x 16 x i8> %b, <vscale x 16 x i8> %c) {
10 ; CHECK-LABEL: sabalb_b:
12 ; CHECK-NEXT: sabalb z0.h, z1.b, z2.b
14 %out = call <vscale x 8 x i16> @llvm.aarch64.sve.sabalb.nxv8i16(<vscale x 8 x i16> %a,
15 <vscale x 16 x i8> %b,
16 <vscale x 16 x i8> %c)
17 ret <vscale x 8 x i16> %out
20 define <vscale x 4 x i32> @sabalb_h(<vscale x 4 x i32> %a, <vscale x 8 x i16> %b, <vscale x 8 x i16> %c) {
21 ; CHECK-LABEL: sabalb_h:
23 ; CHECK-NEXT: sabalb z0.s, z1.h, z2.h
25 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.sabalb.nxv4i32(<vscale x 4 x i32> %a,
26 <vscale x 8 x i16> %b,
27 <vscale x 8 x i16> %c)
28 ret <vscale x 4 x i32> %out
31 define <vscale x 2 x i64> @sabalb_s(<vscale x 2 x i64> %a, <vscale x 4 x i32> %b, <vscale x 4 x i32> %c) {
32 ; CHECK-LABEL: sabalb_s:
34 ; CHECK-NEXT: sabalb z0.d, z1.s, z2.s
36 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.sabalb.nxv2i64(<vscale x 2 x i64> %a,
37 <vscale x 4 x i32> %b,
38 <vscale x 4 x i32> %c)
39 ret <vscale x 2 x i64> %out
46 define <vscale x 8 x i16> @sabalt_b(<vscale x 8 x i16> %a, <vscale x 16 x i8> %b, <vscale x 16 x i8> %c) {
47 ; CHECK-LABEL: sabalt_b:
49 ; CHECK-NEXT: sabalt z0.h, z1.b, z2.b
51 %out = call <vscale x 8 x i16> @llvm.aarch64.sve.sabalt.nxv8i16(<vscale x 8 x i16> %a,
52 <vscale x 16 x i8> %b,
53 <vscale x 16 x i8> %c)
54 ret <vscale x 8 x i16> %out
57 define <vscale x 4 x i32> @sabalt_h(<vscale x 4 x i32> %a, <vscale x 8 x i16> %b, <vscale x 8 x i16> %c) {
58 ; CHECK-LABEL: sabalt_h:
60 ; CHECK-NEXT: sabalt z0.s, z1.h, z2.h
62 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.sabalt.nxv4i32(<vscale x 4 x i32> %a,
63 <vscale x 8 x i16> %b,
64 <vscale x 8 x i16> %c)
65 ret <vscale x 4 x i32> %out
68 define <vscale x 2 x i64> @sabalt_s(<vscale x 2 x i64> %a, <vscale x 4 x i32> %b, <vscale x 4 x i32> %c) {
69 ; CHECK-LABEL: sabalt_s:
71 ; CHECK-NEXT: sabalt z0.d, z1.s, z2.s
73 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.sabalt.nxv2i64(<vscale x 2 x i64> %a,
74 <vscale x 4 x i32> %b,
75 <vscale x 4 x i32> %c)
76 ret <vscale x 2 x i64> %out
83 define <vscale x 8 x i16> @sabdlb_b(<vscale x 16 x i8> %a, <vscale x 16 x i8> %b) {
84 ; CHECK-LABEL: sabdlb_b:
86 ; CHECK-NEXT: sabdlb z0.h, z0.b, z1.b
88 %out = call <vscale x 8 x i16> @llvm.aarch64.sve.sabdlb.nxv8i16(<vscale x 16 x i8> %a,
89 <vscale x 16 x i8> %b)
90 ret <vscale x 8 x i16> %out
93 define <vscale x 4 x i32> @sabdlb_h(<vscale x 8 x i16> %a, <vscale x 8 x i16> %b) {
94 ; CHECK-LABEL: sabdlb_h:
96 ; CHECK-NEXT: sabdlb z0.s, z0.h, z1.h
98 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.sabdlb.nxv4i32(<vscale x 8 x i16> %a,
99 <vscale x 8 x i16> %b)
100 ret <vscale x 4 x i32> %out
103 define <vscale x 2 x i64> @sabdlb_s(<vscale x 4 x i32> %a, <vscale x 4 x i32> %b) {
104 ; CHECK-LABEL: sabdlb_s:
106 ; CHECK-NEXT: sabdlb z0.d, z0.s, z1.s
108 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.sabdlb.nxv2i64(<vscale x 4 x i32> %a,
109 <vscale x 4 x i32> %b)
110 ret <vscale x 2 x i64> %out
117 define <vscale x 8 x i16> @sabdlt_b(<vscale x 16 x i8> %a, <vscale x 16 x i8> %b) {
118 ; CHECK-LABEL: sabdlt_b:
120 ; CHECK-NEXT: sabdlt z0.h, z0.b, z1.b
122 %out = call <vscale x 8 x i16> @llvm.aarch64.sve.sabdlt.nxv8i16(<vscale x 16 x i8> %a,
123 <vscale x 16 x i8> %b)
124 ret <vscale x 8 x i16> %out
127 define <vscale x 4 x i32> @sabdlt_h(<vscale x 8 x i16> %a, <vscale x 8 x i16> %b) {
128 ; CHECK-LABEL: sabdlt_h:
130 ; CHECK-NEXT: sabdlt z0.s, z0.h, z1.h
132 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.sabdlt.nxv4i32(<vscale x 8 x i16> %a,
133 <vscale x 8 x i16> %b)
134 ret <vscale x 4 x i32> %out
137 define <vscale x 2 x i64> @sabdlt_s(<vscale x 4 x i32> %a, <vscale x 4 x i32> %b) {
138 ; CHECK-LABEL: sabdlt_s:
140 ; CHECK-NEXT: sabdlt z0.d, z0.s, z1.s
142 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.sabdlt.nxv2i64(<vscale x 4 x i32> %a,
143 <vscale x 4 x i32> %b)
144 ret <vscale x 2 x i64> %out
151 define <vscale x 8 x i16> @saddlb_b(<vscale x 16 x i8> %a, <vscale x 16 x i8> %b) {
152 ; CHECK-LABEL: saddlb_b:
154 ; CHECK-NEXT: saddlb z0.h, z0.b, z1.b
156 %out = call <vscale x 8 x i16> @llvm.aarch64.sve.saddlb.nxv8i16(<vscale x 16 x i8> %a,
157 <vscale x 16 x i8> %b)
158 ret <vscale x 8 x i16> %out
161 define <vscale x 4 x i32> @saddlb_h(<vscale x 8 x i16> %a, <vscale x 8 x i16> %b) {
162 ; CHECK-LABEL: saddlb_h:
164 ; CHECK-NEXT: saddlb z0.s, z0.h, z1.h
166 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.saddlb.nxv4i32(<vscale x 8 x i16> %a,
167 <vscale x 8 x i16> %b)
168 ret <vscale x 4 x i32> %out
171 define <vscale x 2 x i64> @saddlb_s(<vscale x 4 x i32> %a, <vscale x 4 x i32> %b) {
172 ; CHECK-LABEL: saddlb_s:
174 ; CHECK-NEXT: saddlb z0.d, z0.s, z1.s
176 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.saddlb.nxv2i64(<vscale x 4 x i32> %a,
177 <vscale x 4 x i32> %b)
178 ret <vscale x 2 x i64> %out
185 define <vscale x 8 x i16> @saddlt_b(<vscale x 16 x i8> %a, <vscale x 16 x i8> %b) {
186 ; CHECK-LABEL: saddlt_b:
188 ; CHECK-NEXT: saddlt z0.h, z0.b, z1.b
190 %out = call <vscale x 8 x i16> @llvm.aarch64.sve.saddlt.nxv8i16(<vscale x 16 x i8> %a,
191 <vscale x 16 x i8> %b)
192 ret <vscale x 8 x i16> %out
195 define <vscale x 4 x i32> @saddlt_h(<vscale x 8 x i16> %a, <vscale x 8 x i16> %b) {
196 ; CHECK-LABEL: saddlt_h:
198 ; CHECK-NEXT: saddlt z0.s, z0.h, z1.h
200 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.saddlt.nxv4i32(<vscale x 8 x i16> %a,
201 <vscale x 8 x i16> %b)
202 ret <vscale x 4 x i32> %out
205 define <vscale x 2 x i64> @saddlt_s(<vscale x 4 x i32> %a, <vscale x 4 x i32> %b) {
206 ; CHECK-LABEL: saddlt_s:
208 ; CHECK-NEXT: saddlt z0.d, z0.s, z1.s
210 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.saddlt.nxv2i64(<vscale x 4 x i32> %a,
211 <vscale x 4 x i32> %b)
212 ret <vscale x 2 x i64> %out
219 define <vscale x 8 x i16> @saddwb_b(<vscale x 8 x i16> %a, <vscale x 16 x i8> %b) {
220 ; CHECK-LABEL: saddwb_b:
222 ; CHECK-NEXT: saddwb z0.h, z0.h, z1.b
224 %out = call <vscale x 8 x i16> @llvm.aarch64.sve.saddwb.nxv8i16(<vscale x 8 x i16> %a,
225 <vscale x 16 x i8> %b)
226 ret <vscale x 8 x i16> %out
229 define <vscale x 4 x i32> @saddwb_h(<vscale x 4 x i32> %a, <vscale x 8 x i16> %b) {
230 ; CHECK-LABEL: saddwb_h:
232 ; CHECK-NEXT: saddwb z0.s, z0.s, z1.h
234 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.saddwb.nxv4i32(<vscale x 4 x i32> %a,
235 <vscale x 8 x i16> %b)
236 ret <vscale x 4 x i32> %out
239 define <vscale x 2 x i64> @saddwb_s(<vscale x 2 x i64> %a, <vscale x 4 x i32> %b) {
240 ; CHECK-LABEL: saddwb_s:
242 ; CHECK-NEXT: saddwb z0.d, z0.d, z1.s
244 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.saddwb.nxv2i64(<vscale x 2 x i64> %a,
245 <vscale x 4 x i32> %b)
246 ret <vscale x 2 x i64> %out
253 define <vscale x 8 x i16> @saddwt_b(<vscale x 8 x i16> %a, <vscale x 16 x i8> %b) {
254 ; CHECK-LABEL: saddwt_b:
256 ; CHECK-NEXT: saddwt z0.h, z0.h, z1.b
258 %out = call <vscale x 8 x i16> @llvm.aarch64.sve.saddwt.nxv8i16(<vscale x 8 x i16> %a,
259 <vscale x 16 x i8> %b)
260 ret <vscale x 8 x i16> %out
263 define <vscale x 4 x i32> @saddwt_h(<vscale x 4 x i32> %a, <vscale x 8 x i16> %b) {
264 ; CHECK-LABEL: saddwt_h:
266 ; CHECK-NEXT: saddwt z0.s, z0.s, z1.h
268 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.saddwt.nxv4i32(<vscale x 4 x i32> %a,
269 <vscale x 8 x i16> %b)
270 ret <vscale x 4 x i32> %out
273 define <vscale x 2 x i64> @saddwt_s(<vscale x 2 x i64> %a, <vscale x 4 x i32> %b) {
274 ; CHECK-LABEL: saddwt_s:
276 ; CHECK-NEXT: saddwt z0.d, z0.d, z1.s
278 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.saddwt.nxv2i64(<vscale x 2 x i64> %a,
279 <vscale x 4 x i32> %b)
280 ret <vscale x 2 x i64> %out
288 define <vscale x 8 x i16> @smullb_b(<vscale x 16 x i8> %a, <vscale x 16 x i8> %b) {
289 ; CHECK-LABEL: smullb_b:
291 ; CHECK-NEXT: smullb z0.h, z0.b, z1.b
293 %out = call <vscale x 8 x i16> @llvm.aarch64.sve.smullb.nxv8i16(<vscale x 16 x i8> %a,
294 <vscale x 16 x i8> %b)
295 ret <vscale x 8 x i16> %out
298 define <vscale x 4 x i32> @smullb_h(<vscale x 8 x i16> %a, <vscale x 8 x i16> %b) {
299 ; CHECK-LABEL: smullb_h:
301 ; CHECK-NEXT: smullb z0.s, z0.h, z1.h
303 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.smullb.nxv4i32(<vscale x 8 x i16> %a,
304 <vscale x 8 x i16> %b)
305 ret <vscale x 4 x i32> %out
308 define <vscale x 2 x i64> @smullb_s(<vscale x 4 x i32> %a, <vscale x 4 x i32> %b) {
309 ; CHECK-LABEL: smullb_s:
311 ; CHECK-NEXT: smullb z0.d, z0.s, z1.s
313 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.smullb.nxv2i64(<vscale x 4 x i32> %a,
314 <vscale x 4 x i32> %b)
315 ret <vscale x 2 x i64> %out
322 define <vscale x 4 x i32> @smullb_lane_h(<vscale x 8 x i16> %a, <vscale x 8 x i16> %b) {
323 ; CHECK-LABEL: smullb_lane_h:
325 ; CHECK-NEXT: smullb z0.s, z0.h, z1.h[4]
327 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.smullb.lane.nxv4i32(<vscale x 8 x i16> %a,
328 <vscale x 8 x i16> %b,
330 ret <vscale x 4 x i32> %out
333 define <vscale x 2 x i64> @smullb_lane_s(<vscale x 4 x i32> %a, <vscale x 4 x i32> %b) {
334 ; CHECK-LABEL: smullb_lane_s:
336 ; CHECK-NEXT: smullb z0.d, z0.s, z1.s[3]
338 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.smullb.lane.nxv2i64(<vscale x 4 x i32> %a,
339 <vscale x 4 x i32> %b,
341 ret <vscale x 2 x i64> %out
348 define <vscale x 8 x i16> @smullt_b(<vscale x 16 x i8> %a, <vscale x 16 x i8> %b) {
349 ; CHECK-LABEL: smullt_b:
351 ; CHECK-NEXT: smullt z0.h, z0.b, z1.b
353 %out = call <vscale x 8 x i16> @llvm.aarch64.sve.smullt.nxv8i16(<vscale x 16 x i8> %a,
354 <vscale x 16 x i8> %b)
355 ret <vscale x 8 x i16> %out
358 define <vscale x 4 x i32> @smullt_h(<vscale x 8 x i16> %a, <vscale x 8 x i16> %b) {
359 ; CHECK-LABEL: smullt_h:
361 ; CHECK-NEXT: smullt z0.s, z0.h, z1.h
363 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.smullt.nxv4i32(<vscale x 8 x i16> %a,
364 <vscale x 8 x i16> %b)
365 ret <vscale x 4 x i32> %out
368 define <vscale x 2 x i64> @smullt_s(<vscale x 4 x i32> %a, <vscale x 4 x i32> %b) {
369 ; CHECK-LABEL: smullt_s:
371 ; CHECK-NEXT: smullt z0.d, z0.s, z1.s
373 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.smullt.nxv2i64(<vscale x 4 x i32> %a,
374 <vscale x 4 x i32> %b)
375 ret <vscale x 2 x i64> %out
382 define <vscale x 4 x i32> @smullt_lane_h(<vscale x 8 x i16> %a, <vscale x 8 x i16> %b) {
383 ; CHECK-LABEL: smullt_lane_h:
385 ; CHECK-NEXT: smullt z0.s, z0.h, z1.h[5]
387 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.smullt.lane.nxv4i32(<vscale x 8 x i16> %a,
388 <vscale x 8 x i16> %b,
390 ret <vscale x 4 x i32> %out
393 define <vscale x 2 x i64> @smullt_lane_s(<vscale x 4 x i32> %a, <vscale x 4 x i32> %b) {
394 ; CHECK-LABEL: smullt_lane_s:
396 ; CHECK-NEXT: smullt z0.d, z0.s, z1.s[2]
398 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.smullt.lane.nxv2i64(<vscale x 4 x i32> %a,
399 <vscale x 4 x i32> %b,
401 ret <vscale x 2 x i64> %out
408 define <vscale x 8 x i16> @sqdmullb_b(<vscale x 16 x i8> %a, <vscale x 16 x i8> %b) {
409 ; CHECK-LABEL: sqdmullb_b:
411 ; CHECK-NEXT: sqdmullb z0.h, z0.b, z1.b
413 %out = call <vscale x 8 x i16> @llvm.aarch64.sve.sqdmullb.nxv8i16(<vscale x 16 x i8> %a,
414 <vscale x 16 x i8> %b)
415 ret <vscale x 8 x i16> %out
418 define <vscale x 4 x i32> @sqdmullb_h(<vscale x 8 x i16> %a, <vscale x 8 x i16> %b) {
419 ; CHECK-LABEL: sqdmullb_h:
421 ; CHECK-NEXT: sqdmullb z0.s, z0.h, z1.h
423 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.sqdmullb.nxv4i32(<vscale x 8 x i16> %a,
424 <vscale x 8 x i16> %b)
425 ret <vscale x 4 x i32> %out
428 define <vscale x 2 x i64> @sqdmullb_s(<vscale x 4 x i32> %a, <vscale x 4 x i32> %b) {
429 ; CHECK-LABEL: sqdmullb_s:
431 ; CHECK-NEXT: sqdmullb z0.d, z0.s, z1.s
433 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.sqdmullb.nxv2i64(<vscale x 4 x i32> %a,
434 <vscale x 4 x i32> %b)
435 ret <vscale x 2 x i64> %out
442 define <vscale x 4 x i32> @sqdmullb_lane_h(<vscale x 8 x i16> %a, <vscale x 8 x i16> %b) {
443 ; CHECK-LABEL: sqdmullb_lane_h:
445 ; CHECK-NEXT: sqdmullb z0.s, z0.h, z1.h[2]
447 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.sqdmullb.lane.nxv4i32(<vscale x 8 x i16> %a,
448 <vscale x 8 x i16> %b,
450 ret <vscale x 4 x i32> %out
453 define <vscale x 2 x i64> @sqdmullb_lane_s(<vscale x 4 x i32> %a, <vscale x 4 x i32> %b) {
454 ; CHECK-LABEL: sqdmullb_lane_s:
456 ; CHECK-NEXT: sqdmullb z0.d, z0.s, z1.s[1]
458 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.sqdmullb.lane.nxv2i64(<vscale x 4 x i32> %a,
459 <vscale x 4 x i32> %b,
461 ret <vscale x 2 x i64> %out
468 define <vscale x 8 x i16> @sqdmullt_b(<vscale x 16 x i8> %a, <vscale x 16 x i8> %b) {
469 ; CHECK-LABEL: sqdmullt_b:
471 ; CHECK-NEXT: sqdmullt z0.h, z0.b, z1.b
473 %out = call <vscale x 8 x i16> @llvm.aarch64.sve.sqdmullt.nxv8i16(<vscale x 16 x i8> %a,
474 <vscale x 16 x i8> %b)
475 ret <vscale x 8 x i16> %out
478 define <vscale x 4 x i32> @sqdmullt_h(<vscale x 8 x i16> %a, <vscale x 8 x i16> %b) {
479 ; CHECK-LABEL: sqdmullt_h:
481 ; CHECK-NEXT: sqdmullt z0.s, z0.h, z1.h
483 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.sqdmullt.nxv4i32(<vscale x 8 x i16> %a,
484 <vscale x 8 x i16> %b)
485 ret <vscale x 4 x i32> %out
488 define <vscale x 2 x i64> @sqdmullt_s(<vscale x 4 x i32> %a, <vscale x 4 x i32> %b) {
489 ; CHECK-LABEL: sqdmullt_s:
491 ; CHECK-NEXT: sqdmullt z0.d, z0.s, z1.s
493 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.sqdmullt.nxv2i64(<vscale x 4 x i32> %a,
494 <vscale x 4 x i32> %b)
495 ret <vscale x 2 x i64> %out
502 define <vscale x 4 x i32> @sqdmullt_lane_h(<vscale x 8 x i16> %a, <vscale x 8 x i16> %b) {
503 ; CHECK-LABEL: sqdmullt_lane_h:
505 ; CHECK-NEXT: sqdmullt z0.s, z0.h, z1.h[3]
507 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.sqdmullt.lane.nxv4i32(<vscale x 8 x i16> %a,
508 <vscale x 8 x i16> %b,
510 ret <vscale x 4 x i32> %out
513 define <vscale x 2 x i64> @sqdmullt_lane_s(<vscale x 4 x i32> %a, <vscale x 4 x i32> %b) {
514 ; CHECK-LABEL: sqdmullt_lane_s:
516 ; CHECK-NEXT: sqdmullt z0.d, z0.s, z1.s[0]
518 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.sqdmullt.lane.nxv2i64(<vscale x 4 x i32> %a,
519 <vscale x 4 x i32> %b,
521 ret <vscale x 2 x i64> %out
528 define <vscale x 8 x i16> @ssublb_b(<vscale x 16 x i8> %a, <vscale x 16 x i8> %b) {
529 ; CHECK-LABEL: ssublb_b:
531 ; CHECK-NEXT: ssublb z0.h, z0.b, z1.b
533 %out = call <vscale x 8 x i16> @llvm.aarch64.sve.ssublb.nxv8i16(<vscale x 16 x i8> %a,
534 <vscale x 16 x i8> %b)
535 ret <vscale x 8 x i16> %out
538 define <vscale x 4 x i32> @ssublb_h(<vscale x 8 x i16> %a, <vscale x 8 x i16> %b) {
539 ; CHECK-LABEL: ssublb_h:
541 ; CHECK-NEXT: ssublb z0.s, z0.h, z1.h
543 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.ssublb.nxv4i32(<vscale x 8 x i16> %a,
544 <vscale x 8 x i16> %b)
545 ret <vscale x 4 x i32> %out
548 define <vscale x 2 x i64> @ssublb_s(<vscale x 4 x i32> %a, <vscale x 4 x i32> %b) {
549 ; CHECK-LABEL: ssublb_s:
551 ; CHECK-NEXT: ssublb z0.d, z0.s, z1.s
553 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.ssublb.nxv2i64(<vscale x 4 x i32> %a,
554 <vscale x 4 x i32> %b)
555 ret <vscale x 2 x i64> %out
562 define <vscale x 8 x i16> @sshllb_b(<vscale x 16 x i8> %a) {
563 ; CHECK-LABEL: sshllb_b:
565 ; CHECK-NEXT: sshllb z0.h, z0.b, #0
567 %out = call <vscale x 8 x i16> @llvm.aarch64.sve.sshllb.nxv8i16(<vscale x 16 x i8> %a, i32 0)
568 ret <vscale x 8 x i16> %out
571 define <vscale x 4 x i32> @sshllb_h(<vscale x 8 x i16> %a) {
572 ; CHECK-LABEL: sshllb_h:
574 ; CHECK-NEXT: sshllb z0.s, z0.h, #1
576 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.sshllb.nxv4i32(<vscale x 8 x i16> %a, i32 1)
577 ret <vscale x 4 x i32> %out
580 define <vscale x 2 x i64> @sshllb_s(<vscale x 4 x i32> %a) {
581 ; CHECK-LABEL: sshllb_s:
583 ; CHECK-NEXT: sshllb z0.d, z0.s, #2
585 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.sshllb.nxv2i64(<vscale x 4 x i32> %a, i32 2)
586 ret <vscale x 2 x i64> %out
593 define <vscale x 8 x i16> @sshllt_b(<vscale x 16 x i8> %a) {
594 ; CHECK-LABEL: sshllt_b:
596 ; CHECK-NEXT: sshllt z0.h, z0.b, #3
598 %out = call <vscale x 8 x i16> @llvm.aarch64.sve.sshllt.nxv8i16(<vscale x 16 x i8> %a, i32 3)
599 ret <vscale x 8 x i16> %out
602 define <vscale x 4 x i32> @sshllt_h(<vscale x 8 x i16> %a) {
603 ; CHECK-LABEL: sshllt_h:
605 ; CHECK-NEXT: sshllt z0.s, z0.h, #4
607 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.sshllt.nxv4i32(<vscale x 8 x i16> %a, i32 4)
608 ret <vscale x 4 x i32> %out
611 define <vscale x 2 x i64> @sshllt_s(<vscale x 4 x i32> %a) {
612 ; CHECK-LABEL: sshllt_s:
614 ; CHECK-NEXT: sshllt z0.d, z0.s, #5
616 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.sshllt.nxv2i64(<vscale x 4 x i32> %a, i32 5)
617 ret <vscale x 2 x i64> %out
624 define <vscale x 8 x i16> @ssublt_b(<vscale x 16 x i8> %a, <vscale x 16 x i8> %b) {
625 ; CHECK-LABEL: ssublt_b:
627 ; CHECK-NEXT: ssublt z0.h, z0.b, z1.b
629 %out = call <vscale x 8 x i16> @llvm.aarch64.sve.ssublt.nxv8i16(<vscale x 16 x i8> %a,
630 <vscale x 16 x i8> %b)
631 ret <vscale x 8 x i16> %out
634 define <vscale x 4 x i32> @ssublt_h(<vscale x 8 x i16> %a, <vscale x 8 x i16> %b) {
635 ; CHECK-LABEL: ssublt_h:
637 ; CHECK-NEXT: ssublt z0.s, z0.h, z1.h
639 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.ssublt.nxv4i32(<vscale x 8 x i16> %a,
640 <vscale x 8 x i16> %b)
641 ret <vscale x 4 x i32> %out
644 define <vscale x 2 x i64> @ssublt_s(<vscale x 4 x i32> %a, <vscale x 4 x i32> %b) {
645 ; CHECK-LABEL: ssublt_s:
647 ; CHECK-NEXT: ssublt z0.d, z0.s, z1.s
649 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.ssublt.nxv2i64(<vscale x 4 x i32> %a,
650 <vscale x 4 x i32> %b)
651 ret <vscale x 2 x i64> %out
658 define <vscale x 8 x i16> @ssubwb_b(<vscale x 8 x i16> %a, <vscale x 16 x i8> %b) {
659 ; CHECK-LABEL: ssubwb_b:
661 ; CHECK-NEXT: ssubwb z0.h, z0.h, z1.b
663 %out = call <vscale x 8 x i16> @llvm.aarch64.sve.ssubwb.nxv8i16(<vscale x 8 x i16> %a,
664 <vscale x 16 x i8> %b)
665 ret <vscale x 8 x i16> %out
668 define <vscale x 4 x i32> @ssubwb_h(<vscale x 4 x i32> %a, <vscale x 8 x i16> %b) {
669 ; CHECK-LABEL: ssubwb_h:
671 ; CHECK-NEXT: ssubwb z0.s, z0.s, z1.h
673 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.ssubwb.nxv4i32(<vscale x 4 x i32> %a,
674 <vscale x 8 x i16> %b)
675 ret <vscale x 4 x i32> %out
678 define <vscale x 2 x i64> @ssubwb_s(<vscale x 2 x i64> %a, <vscale x 4 x i32> %b) {
679 ; CHECK-LABEL: ssubwb_s:
681 ; CHECK-NEXT: ssubwb z0.d, z0.d, z1.s
683 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.ssubwb.nxv2i64(<vscale x 2 x i64> %a,
684 <vscale x 4 x i32> %b)
685 ret <vscale x 2 x i64> %out
692 define <vscale x 8 x i16> @ssubwt_b(<vscale x 8 x i16> %a, <vscale x 16 x i8> %b) {
693 ; CHECK-LABEL: ssubwt_b:
695 ; CHECK-NEXT: ssubwt z0.h, z0.h, z1.b
697 %out = call <vscale x 8 x i16> @llvm.aarch64.sve.ssubwt.nxv8i16(<vscale x 8 x i16> %a,
698 <vscale x 16 x i8> %b)
699 ret <vscale x 8 x i16> %out
702 define <vscale x 4 x i32> @ssubwt_h(<vscale x 4 x i32> %a, <vscale x 8 x i16> %b) {
703 ; CHECK-LABEL: ssubwt_h:
705 ; CHECK-NEXT: ssubwt z0.s, z0.s, z1.h
707 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.ssubwt.nxv4i32(<vscale x 4 x i32> %a,
708 <vscale x 8 x i16> %b)
709 ret <vscale x 4 x i32> %out
712 define <vscale x 2 x i64> @ssubwt_s(<vscale x 2 x i64> %a, <vscale x 4 x i32> %b) {
713 ; CHECK-LABEL: ssubwt_s:
715 ; CHECK-NEXT: ssubwt z0.d, z0.d, z1.s
717 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.ssubwt.nxv2i64(<vscale x 2 x i64> %a,
718 <vscale x 4 x i32> %b)
719 ret <vscale x 2 x i64> %out
726 define <vscale x 8 x i16> @uabalb_b(<vscale x 8 x i16> %a, <vscale x 16 x i8> %b, <vscale x 16 x i8> %c) {
727 ; CHECK-LABEL: uabalb_b:
729 ; CHECK-NEXT: uabalb z0.h, z1.b, z2.b
731 %out = call <vscale x 8 x i16> @llvm.aarch64.sve.uabalb.nxv8i16(<vscale x 8 x i16> %a,
732 <vscale x 16 x i8> %b,
733 <vscale x 16 x i8> %c)
734 ret <vscale x 8 x i16> %out
737 define <vscale x 4 x i32> @uabalb_h(<vscale x 4 x i32> %a, <vscale x 8 x i16> %b, <vscale x 8 x i16> %c) {
738 ; CHECK-LABEL: uabalb_h:
740 ; CHECK-NEXT: uabalb z0.s, z1.h, z2.h
742 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.uabalb.nxv4i32(<vscale x 4 x i32> %a,
743 <vscale x 8 x i16> %b,
744 <vscale x 8 x i16> %c)
745 ret <vscale x 4 x i32> %out
748 define <vscale x 2 x i64> @uabalb_s(<vscale x 2 x i64> %a, <vscale x 4 x i32> %b, <vscale x 4 x i32> %c) {
749 ; CHECK-LABEL: uabalb_s:
751 ; CHECK-NEXT: uabalb z0.d, z1.s, z2.s
753 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.uabalb.nxv2i64(<vscale x 2 x i64> %a,
754 <vscale x 4 x i32> %b,
755 <vscale x 4 x i32> %c)
756 ret <vscale x 2 x i64> %out
763 define <vscale x 8 x i16> @uabalt_b(<vscale x 8 x i16> %a, <vscale x 16 x i8> %b, <vscale x 16 x i8> %c) {
764 ; CHECK-LABEL: uabalt_b:
766 ; CHECK-NEXT: uabalt z0.h, z1.b, z2.b
768 %out = call <vscale x 8 x i16> @llvm.aarch64.sve.uabalt.nxv8i16(<vscale x 8 x i16> %a,
769 <vscale x 16 x i8> %b,
770 <vscale x 16 x i8> %c)
771 ret <vscale x 8 x i16> %out
774 define <vscale x 4 x i32> @uabalt_h(<vscale x 4 x i32> %a, <vscale x 8 x i16> %b, <vscale x 8 x i16> %c) {
775 ; CHECK-LABEL: uabalt_h:
777 ; CHECK-NEXT: uabalt z0.s, z1.h, z2.h
779 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.uabalt.nxv4i32(<vscale x 4 x i32> %a,
780 <vscale x 8 x i16> %b,
781 <vscale x 8 x i16> %c)
782 ret <vscale x 4 x i32> %out
785 define <vscale x 2 x i64> @uabalt_s(<vscale x 2 x i64> %a, <vscale x 4 x i32> %b, <vscale x 4 x i32> %c) {
786 ; CHECK-LABEL: uabalt_s:
788 ; CHECK-NEXT: uabalt z0.d, z1.s, z2.s
790 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.uabalt.nxv2i64(<vscale x 2 x i64> %a,
791 <vscale x 4 x i32> %b,
792 <vscale x 4 x i32> %c)
793 ret <vscale x 2 x i64> %out
800 define <vscale x 8 x i16> @uabdlb_b(<vscale x 16 x i8> %a, <vscale x 16 x i8> %b) {
801 ; CHECK-LABEL: uabdlb_b:
803 ; CHECK-NEXT: uabdlb z0.h, z0.b, z1.b
805 %out = call <vscale x 8 x i16> @llvm.aarch64.sve.uabdlb.nxv8i16(<vscale x 16 x i8> %a,
806 <vscale x 16 x i8> %b)
807 ret <vscale x 8 x i16> %out
810 define <vscale x 4 x i32> @uabdlb_h(<vscale x 8 x i16> %a, <vscale x 8 x i16> %b) {
811 ; CHECK-LABEL: uabdlb_h:
813 ; CHECK-NEXT: uabdlb z0.s, z0.h, z1.h
815 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.uabdlb.nxv4i32(<vscale x 8 x i16> %a,
816 <vscale x 8 x i16> %b)
817 ret <vscale x 4 x i32> %out
820 define <vscale x 2 x i64> @uabdlb_s(<vscale x 4 x i32> %a, <vscale x 4 x i32> %b) {
821 ; CHECK-LABEL: uabdlb_s:
823 ; CHECK-NEXT: uabdlb z0.d, z0.s, z1.s
825 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.uabdlb.nxv2i64(<vscale x 4 x i32> %a,
826 <vscale x 4 x i32> %b)
827 ret <vscale x 2 x i64> %out
834 define <vscale x 8 x i16> @uabdlt_b(<vscale x 16 x i8> %a, <vscale x 16 x i8> %b) {
835 ; CHECK-LABEL: uabdlt_b:
837 ; CHECK-NEXT: uabdlt z0.h, z0.b, z1.b
839 %out = call <vscale x 8 x i16> @llvm.aarch64.sve.uabdlt.nxv8i16(<vscale x 16 x i8> %a,
840 <vscale x 16 x i8> %b)
841 ret <vscale x 8 x i16> %out
844 define <vscale x 4 x i32> @uabdlt_h(<vscale x 8 x i16> %a, <vscale x 8 x i16> %b) {
845 ; CHECK-LABEL: uabdlt_h:
847 ; CHECK-NEXT: uabdlt z0.s, z0.h, z1.h
849 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.uabdlt.nxv4i32(<vscale x 8 x i16> %a,
850 <vscale x 8 x i16> %b)
851 ret <vscale x 4 x i32> %out
854 define <vscale x 2 x i64> @uabdlt_s(<vscale x 4 x i32> %a, <vscale x 4 x i32> %b) {
855 ; CHECK-LABEL: uabdlt_s:
857 ; CHECK-NEXT: uabdlt z0.d, z0.s, z1.s
859 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.uabdlt.nxv2i64(<vscale x 4 x i32> %a,
860 <vscale x 4 x i32> %b)
861 ret <vscale x 2 x i64> %out
868 define <vscale x 8 x i16> @uaddlb_b(<vscale x 16 x i8> %a, <vscale x 16 x i8> %b) {
869 ; CHECK-LABEL: uaddlb_b:
871 ; CHECK-NEXT: uaddlb z0.h, z0.b, z1.b
873 %out = call <vscale x 8 x i16> @llvm.aarch64.sve.uaddlb.nxv8i16(<vscale x 16 x i8> %a,
874 <vscale x 16 x i8> %b)
875 ret <vscale x 8 x i16> %out
878 define <vscale x 4 x i32> @uaddlb_h(<vscale x 8 x i16> %a, <vscale x 8 x i16> %b) {
879 ; CHECK-LABEL: uaddlb_h:
881 ; CHECK-NEXT: uaddlb z0.s, z0.h, z1.h
883 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.uaddlb.nxv4i32(<vscale x 8 x i16> %a,
884 <vscale x 8 x i16> %b)
885 ret <vscale x 4 x i32> %out
888 define <vscale x 2 x i64> @uaddlb_s(<vscale x 4 x i32> %a, <vscale x 4 x i32> %b) {
889 ; CHECK-LABEL: uaddlb_s:
891 ; CHECK-NEXT: uaddlb z0.d, z0.s, z1.s
893 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.uaddlb.nxv2i64(<vscale x 4 x i32> %a,
894 <vscale x 4 x i32> %b)
895 ret <vscale x 2 x i64> %out
902 define <vscale x 8 x i16> @uaddlt_b(<vscale x 16 x i8> %a, <vscale x 16 x i8> %b) {
903 ; CHECK-LABEL: uaddlt_b:
905 ; CHECK-NEXT: uaddlt z0.h, z0.b, z1.b
907 %out = call <vscale x 8 x i16> @llvm.aarch64.sve.uaddlt.nxv8i16(<vscale x 16 x i8> %a,
908 <vscale x 16 x i8> %b)
909 ret <vscale x 8 x i16> %out
912 define <vscale x 4 x i32> @uaddlt_h(<vscale x 8 x i16> %a, <vscale x 8 x i16> %b) {
913 ; CHECK-LABEL: uaddlt_h:
915 ; CHECK-NEXT: uaddlt z0.s, z0.h, z1.h
917 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.uaddlt.nxv4i32(<vscale x 8 x i16> %a,
918 <vscale x 8 x i16> %b)
919 ret <vscale x 4 x i32> %out
922 define <vscale x 2 x i64> @uaddlt_s(<vscale x 4 x i32> %a, <vscale x 4 x i32> %b) {
923 ; CHECK-LABEL: uaddlt_s:
925 ; CHECK-NEXT: uaddlt z0.d, z0.s, z1.s
927 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.uaddlt.nxv2i64(<vscale x 4 x i32> %a,
928 <vscale x 4 x i32> %b)
929 ret <vscale x 2 x i64> %out
936 define <vscale x 8 x i16> @uaddwb_b(<vscale x 8 x i16> %a, <vscale x 16 x i8> %b) {
937 ; CHECK-LABEL: uaddwb_b:
939 ; CHECK-NEXT: uaddwb z0.h, z0.h, z1.b
941 %out = call <vscale x 8 x i16> @llvm.aarch64.sve.uaddwb.nxv8i16(<vscale x 8 x i16> %a,
942 <vscale x 16 x i8> %b)
943 ret <vscale x 8 x i16> %out
946 define <vscale x 4 x i32> @uaddwb_h(<vscale x 4 x i32> %a, <vscale x 8 x i16> %b) {
947 ; CHECK-LABEL: uaddwb_h:
949 ; CHECK-NEXT: uaddwb z0.s, z0.s, z1.h
951 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.uaddwb.nxv4i32(<vscale x 4 x i32> %a,
952 <vscale x 8 x i16> %b)
953 ret <vscale x 4 x i32> %out
956 define <vscale x 2 x i64> @uaddwb_s(<vscale x 2 x i64> %a, <vscale x 4 x i32> %b) {
957 ; CHECK-LABEL: uaddwb_s:
959 ; CHECK-NEXT: uaddwb z0.d, z0.d, z1.s
961 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.uaddwb.nxv2i64(<vscale x 2 x i64> %a,
962 <vscale x 4 x i32> %b)
963 ret <vscale x 2 x i64> %out
970 define <vscale x 8 x i16> @uaddwt_b(<vscale x 8 x i16> %a, <vscale x 16 x i8> %b) {
971 ; CHECK-LABEL: uaddwt_b:
973 ; CHECK-NEXT: uaddwt z0.h, z0.h, z1.b
975 %out = call <vscale x 8 x i16> @llvm.aarch64.sve.uaddwt.nxv8i16(<vscale x 8 x i16> %a,
976 <vscale x 16 x i8> %b)
977 ret <vscale x 8 x i16> %out
980 define <vscale x 4 x i32> @uaddwt_h(<vscale x 4 x i32> %a, <vscale x 8 x i16> %b) {
981 ; CHECK-LABEL: uaddwt_h:
983 ; CHECK-NEXT: uaddwt z0.s, z0.s, z1.h
985 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.uaddwt.nxv4i32(<vscale x 4 x i32> %a,
986 <vscale x 8 x i16> %b)
987 ret <vscale x 4 x i32> %out
990 define <vscale x 2 x i64> @uaddwt_s(<vscale x 2 x i64> %a, <vscale x 4 x i32> %b) {
991 ; CHECK-LABEL: uaddwt_s:
993 ; CHECK-NEXT: uaddwt z0.d, z0.d, z1.s
995 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.uaddwt.nxv2i64(<vscale x 2 x i64> %a,
996 <vscale x 4 x i32> %b)
997 ret <vscale x 2 x i64> %out
1004 define <vscale x 8 x i16> @umullb_b(<vscale x 16 x i8> %a, <vscale x 16 x i8> %b) {
1005 ; CHECK-LABEL: umullb_b:
1007 ; CHECK-NEXT: umullb z0.h, z0.b, z1.b
1009 %out = call <vscale x 8 x i16> @llvm.aarch64.sve.umullb.nxv8i16(<vscale x 16 x i8> %a,
1010 <vscale x 16 x i8> %b)
1011 ret <vscale x 8 x i16> %out
1014 define <vscale x 4 x i32> @umullb_h(<vscale x 8 x i16> %a, <vscale x 8 x i16> %b) {
1015 ; CHECK-LABEL: umullb_h:
1017 ; CHECK-NEXT: umullb z0.s, z0.h, z1.h
1019 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.umullb.nxv4i32(<vscale x 8 x i16> %a,
1020 <vscale x 8 x i16> %b)
1021 ret <vscale x 4 x i32> %out
1024 define <vscale x 2 x i64> @umullb_s(<vscale x 4 x i32> %a, <vscale x 4 x i32> %b) {
1025 ; CHECK-LABEL: umullb_s:
1027 ; CHECK-NEXT: umullb z0.d, z0.s, z1.s
1029 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.umullb.nxv2i64(<vscale x 4 x i32> %a,
1030 <vscale x 4 x i32> %b)
1031 ret <vscale x 2 x i64> %out
1038 define <vscale x 4 x i32> @umullb_lane_h(<vscale x 8 x i16> %a, <vscale x 8 x i16> %b) {
1039 ; CHECK-LABEL: umullb_lane_h:
1041 ; CHECK-NEXT: umullb z0.s, z0.h, z1.h[0]
1043 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.umullb.lane.nxv4i32(<vscale x 8 x i16> %a,
1044 <vscale x 8 x i16> %b,
1046 ret <vscale x 4 x i32> %out
1050 define <vscale x 2 x i64> @umullb_lane_s(<vscale x 4 x i32> %a, <vscale x 4 x i32> %b) {
1051 ; CHECK-LABEL: umullb_lane_s:
1053 ; CHECK-NEXT: umullb z0.d, z0.s, z1.s[3]
1055 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.umullb.lane.nxv2i64(<vscale x 4 x i32> %a,
1056 <vscale x 4 x i32> %b,
1058 ret <vscale x 2 x i64> %out
1065 define <vscale x 8 x i16> @umullt_b(<vscale x 16 x i8> %a, <vscale x 16 x i8> %b) {
1066 ; CHECK-LABEL: umullt_b:
1068 ; CHECK-NEXT: umullt z0.h, z0.b, z1.b
1070 %out = call <vscale x 8 x i16> @llvm.aarch64.sve.umullt.nxv8i16(<vscale x 16 x i8> %a,
1071 <vscale x 16 x i8> %b)
1072 ret <vscale x 8 x i16> %out
1075 define <vscale x 4 x i32> @umullt_h(<vscale x 8 x i16> %a, <vscale x 8 x i16> %b) {
1076 ; CHECK-LABEL: umullt_h:
1078 ; CHECK-NEXT: umullt z0.s, z0.h, z1.h
1080 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.umullt.nxv4i32(<vscale x 8 x i16> %a,
1081 <vscale x 8 x i16> %b)
1082 ret <vscale x 4 x i32> %out
1085 define <vscale x 2 x i64> @umullt_s(<vscale x 4 x i32> %a, <vscale x 4 x i32> %b) {
1086 ; CHECK-LABEL: umullt_s:
1088 ; CHECK-NEXT: umullt z0.d, z0.s, z1.s
1090 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.umullt.nxv2i64(<vscale x 4 x i32> %a,
1091 <vscale x 4 x i32> %b)
1092 ret <vscale x 2 x i64> %out
1099 define <vscale x 4 x i32> @umullt_lane_h(<vscale x 8 x i16> %a, <vscale x 8 x i16> %b) {
1100 ; CHECK-LABEL: umullt_lane_h:
1102 ; CHECK-NEXT: umullt z0.s, z0.h, z1.h[1]
1104 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.umullt.lane.nxv4i32(<vscale x 8 x i16> %a,
1105 <vscale x 8 x i16> %b,
1107 ret <vscale x 4 x i32> %out
1110 define <vscale x 2 x i64> @umullt_lane_s(<vscale x 4 x i32> %a, <vscale x 4 x i32> %b) {
1111 ; CHECK-LABEL: umullt_lane_s:
1113 ; CHECK-NEXT: umullt z0.d, z0.s, z1.s[2]
1115 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.umullt.lane.nxv2i64(<vscale x 4 x i32> %a,
1116 <vscale x 4 x i32> %b,
1118 ret <vscale x 2 x i64> %out
1125 define <vscale x 8 x i16> @ushllb_b(<vscale x 16 x i8> %a) {
1126 ; CHECK-LABEL: ushllb_b:
1128 ; CHECK-NEXT: ushllb z0.h, z0.b, #6
1130 %out = call <vscale x 8 x i16> @llvm.aarch64.sve.ushllb.nxv8i16(<vscale x 16 x i8> %a, i32 6)
1131 ret <vscale x 8 x i16> %out
1134 define <vscale x 4 x i32> @ushllb_h(<vscale x 8 x i16> %a) {
1135 ; CHECK-LABEL: ushllb_h:
1137 ; CHECK-NEXT: ushllb z0.s, z0.h, #7
1139 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.ushllb.nxv4i32(<vscale x 8 x i16> %a, i32 7)
1140 ret <vscale x 4 x i32> %out
1143 define <vscale x 2 x i64> @ushllb_s(<vscale x 4 x i32> %a) {
1144 ; CHECK-LABEL: ushllb_s:
1146 ; CHECK-NEXT: ushllb z0.d, z0.s, #8
1148 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.ushllb.nxv2i64(<vscale x 4 x i32> %a, i32 8)
1149 ret <vscale x 2 x i64> %out
1156 define <vscale x 8 x i16> @ushllt_b(<vscale x 16 x i8> %a) {
1157 ; CHECK-LABEL: ushllt_b:
1159 ; CHECK-NEXT: ushllt z0.h, z0.b, #7
1161 %out = call <vscale x 8 x i16> @llvm.aarch64.sve.ushllt.nxv8i16(<vscale x 16 x i8> %a, i32 7)
1162 ret <vscale x 8 x i16> %out
1165 define <vscale x 4 x i32> @ushllt_h(<vscale x 8 x i16> %a) {
1166 ; CHECK-LABEL: ushllt_h:
1168 ; CHECK-NEXT: ushllt z0.s, z0.h, #15
1170 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.ushllt.nxv4i32(<vscale x 8 x i16> %a, i32 15)
1171 ret <vscale x 4 x i32> %out
1174 define <vscale x 2 x i64> @ushllt_s(<vscale x 4 x i32> %a) {
1175 ; CHECK-LABEL: ushllt_s:
1177 ; CHECK-NEXT: ushllt z0.d, z0.s, #31
1179 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.ushllt.nxv2i64(<vscale x 4 x i32> %a, i32 31)
1180 ret <vscale x 2 x i64> %out
1187 define <vscale x 8 x i16> @usublb_b(<vscale x 16 x i8> %a, <vscale x 16 x i8> %b) {
1188 ; CHECK-LABEL: usublb_b:
1190 ; CHECK-NEXT: usublb z0.h, z0.b, z1.b
1192 %out = call <vscale x 8 x i16> @llvm.aarch64.sve.usublb.nxv8i16(<vscale x 16 x i8> %a,
1193 <vscale x 16 x i8> %b)
1194 ret <vscale x 8 x i16> %out
1197 define <vscale x 4 x i32> @usublb_h(<vscale x 8 x i16> %a, <vscale x 8 x i16> %b) {
1198 ; CHECK-LABEL: usublb_h:
1200 ; CHECK-NEXT: usublb z0.s, z0.h, z1.h
1202 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.usublb.nxv4i32(<vscale x 8 x i16> %a,
1203 <vscale x 8 x i16> %b)
1204 ret <vscale x 4 x i32> %out
1207 define <vscale x 2 x i64> @usublb_s(<vscale x 4 x i32> %a, <vscale x 4 x i32> %b) {
1208 ; CHECK-LABEL: usublb_s:
1210 ; CHECK-NEXT: usublb z0.d, z0.s, z1.s
1212 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.usublb.nxv2i64(<vscale x 4 x i32> %a,
1213 <vscale x 4 x i32> %b)
1214 ret <vscale x 2 x i64> %out
1221 define <vscale x 8 x i16> @usublt_b(<vscale x 16 x i8> %a, <vscale x 16 x i8> %b) {
1222 ; CHECK-LABEL: usublt_b:
1224 ; CHECK-NEXT: usublt z0.h, z0.b, z1.b
1226 %out = call <vscale x 8 x i16> @llvm.aarch64.sve.usublt.nxv8i16(<vscale x 16 x i8> %a,
1227 <vscale x 16 x i8> %b)
1228 ret <vscale x 8 x i16> %out
1231 define <vscale x 4 x i32> @usublt_h(<vscale x 8 x i16> %a, <vscale x 8 x i16> %b) {
1232 ; CHECK-LABEL: usublt_h:
1234 ; CHECK-NEXT: usublt z0.s, z0.h, z1.h
1236 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.usublt.nxv4i32(<vscale x 8 x i16> %a,
1237 <vscale x 8 x i16> %b)
1238 ret <vscale x 4 x i32> %out
1241 define <vscale x 2 x i64> @usublt_s(<vscale x 4 x i32> %a, <vscale x 4 x i32> %b) {
1242 ; CHECK-LABEL: usublt_s:
1244 ; CHECK-NEXT: usublt z0.d, z0.s, z1.s
1246 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.usublt.nxv2i64(<vscale x 4 x i32> %a,
1247 <vscale x 4 x i32> %b)
1248 ret <vscale x 2 x i64> %out
1255 define <vscale x 8 x i16> @usubwb_b(<vscale x 8 x i16> %a, <vscale x 16 x i8> %b) {
1256 ; CHECK-LABEL: usubwb_b:
1258 ; CHECK-NEXT: usubwb z0.h, z0.h, z1.b
1260 %out = call <vscale x 8 x i16> @llvm.aarch64.sve.usubwb.nxv8i16(<vscale x 8 x i16> %a,
1261 <vscale x 16 x i8> %b)
1262 ret <vscale x 8 x i16> %out
1265 define <vscale x 4 x i32> @usubwb_h(<vscale x 4 x i32> %a, <vscale x 8 x i16> %b) {
1266 ; CHECK-LABEL: usubwb_h:
1268 ; CHECK-NEXT: usubwb z0.s, z0.s, z1.h
1270 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.usubwb.nxv4i32(<vscale x 4 x i32> %a,
1271 <vscale x 8 x i16> %b)
1272 ret <vscale x 4 x i32> %out
1275 define <vscale x 2 x i64> @usubwb_s(<vscale x 2 x i64> %a, <vscale x 4 x i32> %b) {
1276 ; CHECK-LABEL: usubwb_s:
1278 ; CHECK-NEXT: usubwb z0.d, z0.d, z1.s
1280 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.usubwb.nxv2i64(<vscale x 2 x i64> %a,
1281 <vscale x 4 x i32> %b)
1282 ret <vscale x 2 x i64> %out
1289 define <vscale x 8 x i16> @usubwt_b(<vscale x 8 x i16> %a, <vscale x 16 x i8> %b) {
1290 ; CHECK-LABEL: usubwt_b:
1292 ; CHECK-NEXT: usubwt z0.h, z0.h, z1.b
1294 %out = call <vscale x 8 x i16> @llvm.aarch64.sve.usubwt.nxv8i16(<vscale x 8 x i16> %a,
1295 <vscale x 16 x i8> %b)
1296 ret <vscale x 8 x i16> %out
1299 define <vscale x 4 x i32> @usubwt_h(<vscale x 4 x i32> %a, <vscale x 8 x i16> %b) {
1300 ; CHECK-LABEL: usubwt_h:
1302 ; CHECK-NEXT: usubwt z0.s, z0.s, z1.h
1304 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.usubwt.nxv4i32(<vscale x 4 x i32> %a,
1305 <vscale x 8 x i16> %b)
1306 ret <vscale x 4 x i32> %out
1309 define <vscale x 2 x i64> @usubwt_s(<vscale x 2 x i64> %a, <vscale x 4 x i32> %b) {
1310 ; CHECK-LABEL: usubwt_s:
1312 ; CHECK-NEXT: usubwt z0.d, z0.d, z1.s
1314 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.usubwt.nxv2i64(<vscale x 2 x i64> %a,
1315 <vscale x 4 x i32> %b)
1316 ret <vscale x 2 x i64> %out
1319 declare <vscale x 8 x i16> @llvm.aarch64.sve.sabalb.nxv8i16(<vscale x 8 x i16>, <vscale x 16 x i8>, <vscale x 16 x i8>)
1320 declare <vscale x 4 x i32> @llvm.aarch64.sve.sabalb.nxv4i32(<vscale x 4 x i32>, <vscale x 8 x i16>, <vscale x 8 x i16>)
1321 declare <vscale x 2 x i64> @llvm.aarch64.sve.sabalb.nxv2i64(<vscale x 2 x i64>, <vscale x 4 x i32>, <vscale x 4 x i32>)
1323 declare <vscale x 8 x i16> @llvm.aarch64.sve.sabalt.nxv8i16(<vscale x 8 x i16>, <vscale x 16 x i8>, <vscale x 16 x i8>)
1324 declare <vscale x 4 x i32> @llvm.aarch64.sve.sabalt.nxv4i32(<vscale x 4 x i32>, <vscale x 8 x i16>, <vscale x 8 x i16>)
1325 declare <vscale x 2 x i64> @llvm.aarch64.sve.sabalt.nxv2i64(<vscale x 2 x i64>, <vscale x 4 x i32>, <vscale x 4 x i32>)
1327 declare <vscale x 8 x i16> @llvm.aarch64.sve.sabdlb.nxv8i16(<vscale x 16 x i8>, <vscale x 16 x i8>)
1328 declare <vscale x 4 x i32> @llvm.aarch64.sve.sabdlb.nxv4i32(<vscale x 8 x i16>, <vscale x 8 x i16>)
1329 declare <vscale x 2 x i64> @llvm.aarch64.sve.sabdlb.nxv2i64(<vscale x 4 x i32>, <vscale x 4 x i32>)
1331 declare <vscale x 8 x i16> @llvm.aarch64.sve.sabdlt.nxv8i16(<vscale x 16 x i8>, <vscale x 16 x i8>)
1332 declare <vscale x 4 x i32> @llvm.aarch64.sve.sabdlt.nxv4i32(<vscale x 8 x i16>, <vscale x 8 x i16>)
1333 declare <vscale x 2 x i64> @llvm.aarch64.sve.sabdlt.nxv2i64(<vscale x 4 x i32>, <vscale x 4 x i32>)
1335 declare <vscale x 8 x i16> @llvm.aarch64.sve.saddlb.nxv8i16(<vscale x 16 x i8>, <vscale x 16 x i8>)
1336 declare <vscale x 4 x i32> @llvm.aarch64.sve.saddlb.nxv4i32(<vscale x 8 x i16>, <vscale x 8 x i16>)
1337 declare <vscale x 2 x i64> @llvm.aarch64.sve.saddlb.nxv2i64(<vscale x 4 x i32>, <vscale x 4 x i32>)
1339 declare <vscale x 8 x i16> @llvm.aarch64.sve.saddlt.nxv8i16(<vscale x 16 x i8>, <vscale x 16 x i8>)
1340 declare <vscale x 4 x i32> @llvm.aarch64.sve.saddlt.nxv4i32(<vscale x 8 x i16>, <vscale x 8 x i16>)
1341 declare <vscale x 2 x i64> @llvm.aarch64.sve.saddlt.nxv2i64(<vscale x 4 x i32>, <vscale x 4 x i32>)
1343 declare <vscale x 8 x i16> @llvm.aarch64.sve.saddwb.nxv8i16(<vscale x 8 x i16>, <vscale x 16 x i8>)
1344 declare <vscale x 4 x i32> @llvm.aarch64.sve.saddwb.nxv4i32(<vscale x 4 x i32>, <vscale x 8 x i16>)
1345 declare <vscale x 2 x i64> @llvm.aarch64.sve.saddwb.nxv2i64(<vscale x 2 x i64>, <vscale x 4 x i32>)
1347 declare <vscale x 8 x i16> @llvm.aarch64.sve.saddwt.nxv8i16(<vscale x 8 x i16>, <vscale x 16 x i8>)
1348 declare <vscale x 4 x i32> @llvm.aarch64.sve.saddwt.nxv4i32(<vscale x 4 x i32>, <vscale x 8 x i16>)
1349 declare <vscale x 2 x i64> @llvm.aarch64.sve.saddwt.nxv2i64(<vscale x 2 x i64>, <vscale x 4 x i32>)
1351 declare <vscale x 8 x i16> @llvm.aarch64.sve.smullb.nxv8i16(<vscale x 16 x i8>, <vscale x 16 x i8>)
1352 declare <vscale x 4 x i32> @llvm.aarch64.sve.smullb.nxv4i32(<vscale x 8 x i16>, <vscale x 8 x i16>)
1353 declare <vscale x 2 x i64> @llvm.aarch64.sve.smullb.nxv2i64(<vscale x 4 x i32>, <vscale x 4 x i32>)
1355 declare <vscale x 4 x i32> @llvm.aarch64.sve.smullb.lane.nxv4i32(<vscale x 8 x i16>, <vscale x 8 x i16>, i32)
1356 declare <vscale x 2 x i64> @llvm.aarch64.sve.smullb.lane.nxv2i64(<vscale x 4 x i32>, <vscale x 4 x i32>, i32)
1358 declare <vscale x 8 x i16> @llvm.aarch64.sve.smullt.nxv8i16(<vscale x 16 x i8>, <vscale x 16 x i8>)
1359 declare <vscale x 4 x i32> @llvm.aarch64.sve.smullt.nxv4i32(<vscale x 8 x i16>, <vscale x 8 x i16>)
1360 declare <vscale x 2 x i64> @llvm.aarch64.sve.smullt.nxv2i64(<vscale x 4 x i32>, <vscale x 4 x i32>)
1362 declare <vscale x 4 x i32> @llvm.aarch64.sve.smullt.lane.nxv4i32(<vscale x 8 x i16>, <vscale x 8 x i16>, i32)
1363 declare <vscale x 2 x i64> @llvm.aarch64.sve.smullt.lane.nxv2i64(<vscale x 4 x i32>, <vscale x 4 x i32>, i32)
1365 declare <vscale x 8 x i16> @llvm.aarch64.sve.sqdmullb.nxv8i16(<vscale x 16 x i8>, <vscale x 16 x i8>)
1366 declare <vscale x 4 x i32> @llvm.aarch64.sve.sqdmullb.nxv4i32(<vscale x 8 x i16>, <vscale x 8 x i16>)
1367 declare <vscale x 2 x i64> @llvm.aarch64.sve.sqdmullb.nxv2i64(<vscale x 4 x i32>, <vscale x 4 x i32>)
1369 declare <vscale x 4 x i32> @llvm.aarch64.sve.sqdmullb.lane.nxv4i32(<vscale x 8 x i16>, <vscale x 8 x i16>, i32)
1370 declare <vscale x 2 x i64> @llvm.aarch64.sve.sqdmullb.lane.nxv2i64(<vscale x 4 x i32>, <vscale x 4 x i32>, i32)
1372 declare <vscale x 8 x i16> @llvm.aarch64.sve.sqdmullt.nxv8i16(<vscale x 16 x i8>, <vscale x 16 x i8>)
1373 declare <vscale x 4 x i32> @llvm.aarch64.sve.sqdmullt.nxv4i32(<vscale x 8 x i16>, <vscale x 8 x i16>)
1374 declare <vscale x 2 x i64> @llvm.aarch64.sve.sqdmullt.nxv2i64(<vscale x 4 x i32>, <vscale x 4 x i32>)
1376 declare <vscale x 4 x i32> @llvm.aarch64.sve.sqdmullt.lane.nxv4i32(<vscale x 8 x i16>, <vscale x 8 x i16>, i32)
1377 declare <vscale x 2 x i64> @llvm.aarch64.sve.sqdmullt.lane.nxv2i64(<vscale x 4 x i32>, <vscale x 4 x i32>, i32)
1379 declare <vscale x 8 x i16> @llvm.aarch64.sve.sshllb.nxv8i16(<vscale x 16 x i8>, i32)
1380 declare <vscale x 4 x i32> @llvm.aarch64.sve.sshllb.nxv4i32(<vscale x 8 x i16>, i32)
1381 declare <vscale x 2 x i64> @llvm.aarch64.sve.sshllb.nxv2i64(<vscale x 4 x i32>, i32)
1383 declare <vscale x 8 x i16> @llvm.aarch64.sve.sshllt.nxv8i16(<vscale x 16 x i8>, i32)
1384 declare <vscale x 4 x i32> @llvm.aarch64.sve.sshllt.nxv4i32(<vscale x 8 x i16>, i32)
1385 declare <vscale x 2 x i64> @llvm.aarch64.sve.sshllt.nxv2i64(<vscale x 4 x i32>, i32)
1387 declare <vscale x 8 x i16> @llvm.aarch64.sve.ssublb.nxv8i16(<vscale x 16 x i8>, <vscale x 16 x i8>)
1388 declare <vscale x 4 x i32> @llvm.aarch64.sve.ssublb.nxv4i32(<vscale x 8 x i16>, <vscale x 8 x i16>)
1389 declare <vscale x 2 x i64> @llvm.aarch64.sve.ssublb.nxv2i64(<vscale x 4 x i32>, <vscale x 4 x i32>)
1391 declare <vscale x 8 x i16> @llvm.aarch64.sve.ssublt.nxv8i16(<vscale x 16 x i8>, <vscale x 16 x i8>)
1392 declare <vscale x 4 x i32> @llvm.aarch64.sve.ssublt.nxv4i32(<vscale x 8 x i16>, <vscale x 8 x i16>)
1393 declare <vscale x 2 x i64> @llvm.aarch64.sve.ssublt.nxv2i64(<vscale x 4 x i32>, <vscale x 4 x i32>)
1395 declare <vscale x 8 x i16> @llvm.aarch64.sve.ssubwb.nxv8i16(<vscale x 8 x i16>, <vscale x 16 x i8>)
1396 declare <vscale x 4 x i32> @llvm.aarch64.sve.ssubwb.nxv4i32(<vscale x 4 x i32>, <vscale x 8 x i16>)
1397 declare <vscale x 2 x i64> @llvm.aarch64.sve.ssubwb.nxv2i64(<vscale x 2 x i64>, <vscale x 4 x i32>)
1399 declare <vscale x 8 x i16> @llvm.aarch64.sve.ssubwt.nxv8i16(<vscale x 8 x i16>, <vscale x 16 x i8>)
1400 declare <vscale x 4 x i32> @llvm.aarch64.sve.ssubwt.nxv4i32(<vscale x 4 x i32>, <vscale x 8 x i16>)
1401 declare <vscale x 2 x i64> @llvm.aarch64.sve.ssubwt.nxv2i64(<vscale x 2 x i64>, <vscale x 4 x i32>)
1403 declare <vscale x 8 x i16> @llvm.aarch64.sve.uabalb.nxv8i16(<vscale x 8 x i16>, <vscale x 16 x i8>, <vscale x 16 x i8>)
1404 declare <vscale x 4 x i32> @llvm.aarch64.sve.uabalb.nxv4i32(<vscale x 4 x i32>, <vscale x 8 x i16>, <vscale x 8 x i16>)
1405 declare <vscale x 2 x i64> @llvm.aarch64.sve.uabalb.nxv2i64(<vscale x 2 x i64>, <vscale x 4 x i32>, <vscale x 4 x i32>)
1407 declare <vscale x 8 x i16> @llvm.aarch64.sve.uabalt.nxv8i16(<vscale x 8 x i16>, <vscale x 16 x i8>, <vscale x 16 x i8>)
1408 declare <vscale x 4 x i32> @llvm.aarch64.sve.uabalt.nxv4i32(<vscale x 4 x i32>, <vscale x 8 x i16>, <vscale x 8 x i16>)
1409 declare <vscale x 2 x i64> @llvm.aarch64.sve.uabalt.nxv2i64(<vscale x 2 x i64>, <vscale x 4 x i32>, <vscale x 4 x i32>)
1411 declare <vscale x 8 x i16> @llvm.aarch64.sve.uabdlb.nxv8i16(<vscale x 16 x i8>, <vscale x 16 x i8>)
1412 declare <vscale x 4 x i32> @llvm.aarch64.sve.uabdlb.nxv4i32(<vscale x 8 x i16>, <vscale x 8 x i16>)
1413 declare <vscale x 2 x i64> @llvm.aarch64.sve.uabdlb.nxv2i64(<vscale x 4 x i32>, <vscale x 4 x i32>)
1415 declare <vscale x 8 x i16> @llvm.aarch64.sve.uabdlt.nxv8i16(<vscale x 16 x i8>, <vscale x 16 x i8>)
1416 declare <vscale x 4 x i32> @llvm.aarch64.sve.uabdlt.nxv4i32(<vscale x 8 x i16>, <vscale x 8 x i16>)
1417 declare <vscale x 2 x i64> @llvm.aarch64.sve.uabdlt.nxv2i64(<vscale x 4 x i32>, <vscale x 4 x i32>)
1419 declare <vscale x 8 x i16> @llvm.aarch64.sve.uaddlb.nxv8i16(<vscale x 16 x i8>, <vscale x 16 x i8>)
1420 declare <vscale x 4 x i32> @llvm.aarch64.sve.uaddlb.nxv4i32(<vscale x 8 x i16>, <vscale x 8 x i16>)
1421 declare <vscale x 2 x i64> @llvm.aarch64.sve.uaddlb.nxv2i64(<vscale x 4 x i32>, <vscale x 4 x i32>)
1423 declare <vscale x 8 x i16> @llvm.aarch64.sve.uaddlt.nxv8i16(<vscale x 16 x i8>, <vscale x 16 x i8>)
1424 declare <vscale x 4 x i32> @llvm.aarch64.sve.uaddlt.nxv4i32(<vscale x 8 x i16>, <vscale x 8 x i16>)
1425 declare <vscale x 2 x i64> @llvm.aarch64.sve.uaddlt.nxv2i64(<vscale x 4 x i32>, <vscale x 4 x i32>)
1427 declare <vscale x 8 x i16> @llvm.aarch64.sve.uaddwb.nxv8i16(<vscale x 8 x i16>, <vscale x 16 x i8>)
1428 declare <vscale x 4 x i32> @llvm.aarch64.sve.uaddwb.nxv4i32(<vscale x 4 x i32>, <vscale x 8 x i16>)
1429 declare <vscale x 2 x i64> @llvm.aarch64.sve.uaddwb.nxv2i64(<vscale x 2 x i64>, <vscale x 4 x i32>)
1431 declare <vscale x 8 x i16> @llvm.aarch64.sve.uaddwt.nxv8i16(<vscale x 8 x i16>, <vscale x 16 x i8>)
1432 declare <vscale x 4 x i32> @llvm.aarch64.sve.uaddwt.nxv4i32(<vscale x 4 x i32>, <vscale x 8 x i16>)
1433 declare <vscale x 2 x i64> @llvm.aarch64.sve.uaddwt.nxv2i64(<vscale x 2 x i64>, <vscale x 4 x i32>)
1435 declare <vscale x 8 x i16> @llvm.aarch64.sve.umullb.nxv8i16(<vscale x 16 x i8>, <vscale x 16 x i8>)
1436 declare <vscale x 4 x i32> @llvm.aarch64.sve.umullb.nxv4i32(<vscale x 8 x i16>, <vscale x 8 x i16>)
1437 declare <vscale x 2 x i64> @llvm.aarch64.sve.umullb.nxv2i64(<vscale x 4 x i32>, <vscale x 4 x i32>)
1439 declare <vscale x 4 x i32> @llvm.aarch64.sve.umullb.lane.nxv4i32(<vscale x 8 x i16>, <vscale x 8 x i16>, i32)
1440 declare <vscale x 2 x i64> @llvm.aarch64.sve.umullb.lane.nxv2i64(<vscale x 4 x i32>, <vscale x 4 x i32>, i32)
1442 declare <vscale x 8 x i16> @llvm.aarch64.sve.umullt.nxv8i16(<vscale x 16 x i8>, <vscale x 16 x i8>)
1443 declare <vscale x 4 x i32> @llvm.aarch64.sve.umullt.nxv4i32(<vscale x 8 x i16>, <vscale x 8 x i16>)
1444 declare <vscale x 2 x i64> @llvm.aarch64.sve.umullt.nxv2i64(<vscale x 4 x i32>, <vscale x 4 x i32>)
1446 declare <vscale x 4 x i32> @llvm.aarch64.sve.umullt.lane.nxv4i32(<vscale x 8 x i16>, <vscale x 8 x i16>, i32)
1447 declare <vscale x 2 x i64> @llvm.aarch64.sve.umullt.lane.nxv2i64(<vscale x 4 x i32>, <vscale x 4 x i32>, i32)
1449 declare <vscale x 8 x i16> @llvm.aarch64.sve.ushllb.nxv8i16(<vscale x 16 x i8>, i32)
1450 declare <vscale x 4 x i32> @llvm.aarch64.sve.ushllb.nxv4i32(<vscale x 8 x i16>, i32)
1451 declare <vscale x 2 x i64> @llvm.aarch64.sve.ushllb.nxv2i64(<vscale x 4 x i32>, i32)
1453 declare <vscale x 8 x i16> @llvm.aarch64.sve.ushllt.nxv8i16(<vscale x 16 x i8>, i32)
1454 declare <vscale x 4 x i32> @llvm.aarch64.sve.ushllt.nxv4i32(<vscale x 8 x i16>, i32)
1455 declare <vscale x 2 x i64> @llvm.aarch64.sve.ushllt.nxv2i64(<vscale x 4 x i32>, i32)
1457 declare <vscale x 8 x i16> @llvm.aarch64.sve.usublb.nxv8i16(<vscale x 16 x i8>, <vscale x 16 x i8>)
1458 declare <vscale x 4 x i32> @llvm.aarch64.sve.usublb.nxv4i32(<vscale x 8 x i16>, <vscale x 8 x i16>)
1459 declare <vscale x 2 x i64> @llvm.aarch64.sve.usublb.nxv2i64(<vscale x 4 x i32>, <vscale x 4 x i32>)
1461 declare <vscale x 8 x i16> @llvm.aarch64.sve.usublt.nxv8i16(<vscale x 16 x i8>, <vscale x 16 x i8>)
1462 declare <vscale x 4 x i32> @llvm.aarch64.sve.usublt.nxv4i32(<vscale x 8 x i16>, <vscale x 8 x i16>)
1463 declare <vscale x 2 x i64> @llvm.aarch64.sve.usublt.nxv2i64(<vscale x 4 x i32>, <vscale x 4 x i32>)
1465 declare <vscale x 8 x i16> @llvm.aarch64.sve.usubwb.nxv8i16(<vscale x 8 x i16>, <vscale x 16 x i8>)
1466 declare <vscale x 4 x i32> @llvm.aarch64.sve.usubwb.nxv4i32(<vscale x 4 x i32>, <vscale x 8 x i16>)
1467 declare <vscale x 2 x i64> @llvm.aarch64.sve.usubwb.nxv2i64(<vscale x 2 x i64>, <vscale x 4 x i32>)
1469 declare <vscale x 8 x i16> @llvm.aarch64.sve.usubwt.nxv8i16(<vscale x 8 x i16>, <vscale x 16 x i8>)
1470 declare <vscale x 4 x i32> @llvm.aarch64.sve.usubwt.nxv4i32(<vscale x 4 x i32>, <vscale x 8 x i16>)
1471 declare <vscale x 2 x i64> @llvm.aarch64.sve.usubwt.nxv2i64(<vscale x 2 x i64>, <vscale x 4 x i32>)