1 ; RUN: llc -mtriple=aarch64-linux-gnu -mattr=+sve2 < %s | FileCheck %s
7 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) {
8 ; CHECK-LABEL: sabalb_b:
9 ; CHECK: sabalb z0.h, z1.b, z2.b
11 %out = call <vscale x 8 x i16> @llvm.aarch64.sve.sabalb.nxv8i16(<vscale x 8 x i16> %a,
12 <vscale x 16 x i8> %b,
13 <vscale x 16 x i8> %c)
14 ret <vscale x 8 x i16> %out
17 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) {
18 ; CHECK-LABEL: sabalb_h:
19 ; CHECK: sabalb z0.s, z1.h, z2.h
21 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.sabalb.nxv4i32(<vscale x 4 x i32> %a,
22 <vscale x 8 x i16> %b,
23 <vscale x 8 x i16> %c)
24 ret <vscale x 4 x i32> %out
27 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) {
28 ; CHECK-LABEL: sabalb_s:
29 ; CHECK: sabalb z0.d, z1.s, z2.s
31 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.sabalb.nxv2i64(<vscale x 2 x i64> %a,
32 <vscale x 4 x i32> %b,
33 <vscale x 4 x i32> %c)
34 ret <vscale x 2 x i64> %out
41 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) {
42 ; CHECK-LABEL: sabalt_b:
43 ; CHECK: sabalt z0.h, z1.b, z2.b
45 %out = call <vscale x 8 x i16> @llvm.aarch64.sve.sabalt.nxv8i16(<vscale x 8 x i16> %a,
46 <vscale x 16 x i8> %b,
47 <vscale x 16 x i8> %c)
48 ret <vscale x 8 x i16> %out
51 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) {
52 ; CHECK-LABEL: sabalt_h:
53 ; CHECK: sabalt z0.s, z1.h, z2.h
55 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.sabalt.nxv4i32(<vscale x 4 x i32> %a,
56 <vscale x 8 x i16> %b,
57 <vscale x 8 x i16> %c)
58 ret <vscale x 4 x i32> %out
61 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) {
62 ; CHECK-LABEL: sabalt_s:
63 ; CHECK: sabalt z0.d, z1.s, z2.s
65 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.sabalt.nxv2i64(<vscale x 2 x i64> %a,
66 <vscale x 4 x i32> %b,
67 <vscale x 4 x i32> %c)
68 ret <vscale x 2 x i64> %out
75 define <vscale x 8 x i16> @sabdlb_b(<vscale x 16 x i8> %a, <vscale x 16 x i8> %b) {
76 ; CHECK-LABEL: sabdlb_b:
77 ; CHECK: sabdlb z0.h, z0.b, z1.b
79 %out = call <vscale x 8 x i16> @llvm.aarch64.sve.sabdlb.nxv8i16(<vscale x 16 x i8> %a,
80 <vscale x 16 x i8> %b)
81 ret <vscale x 8 x i16> %out
84 define <vscale x 4 x i32> @sabdlb_h(<vscale x 8 x i16> %a, <vscale x 8 x i16> %b) {
85 ; CHECK-LABEL: sabdlb_h:
86 ; CHECK: sabdlb z0.s, z0.h, z1.h
88 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.sabdlb.nxv4i32(<vscale x 8 x i16> %a,
89 <vscale x 8 x i16> %b)
90 ret <vscale x 4 x i32> %out
93 define <vscale x 2 x i64> @sabdlb_s(<vscale x 4 x i32> %a, <vscale x 4 x i32> %b) {
94 ; CHECK-LABEL: sabdlb_s:
95 ; CHECK: sabdlb z0.d, z0.s, z1.s
97 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.sabdlb.nxv2i64(<vscale x 4 x i32> %a,
98 <vscale x 4 x i32> %b)
99 ret <vscale x 2 x i64> %out
106 define <vscale x 8 x i16> @sabdlt_b(<vscale x 16 x i8> %a, <vscale x 16 x i8> %b) {
107 ; CHECK-LABEL: sabdlt_b:
108 ; CHECK: sabdlt z0.h, z0.b, z1.b
110 %out = call <vscale x 8 x i16> @llvm.aarch64.sve.sabdlt.nxv8i16(<vscale x 16 x i8> %a,
111 <vscale x 16 x i8> %b)
112 ret <vscale x 8 x i16> %out
115 define <vscale x 4 x i32> @sabdlt_h(<vscale x 8 x i16> %a, <vscale x 8 x i16> %b) {
116 ; CHECK-LABEL: sabdlt_h:
117 ; CHECK: sabdlt z0.s, z0.h, z1.h
119 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.sabdlt.nxv4i32(<vscale x 8 x i16> %a,
120 <vscale x 8 x i16> %b)
121 ret <vscale x 4 x i32> %out
124 define <vscale x 2 x i64> @sabdlt_s(<vscale x 4 x i32> %a, <vscale x 4 x i32> %b) {
125 ; CHECK-LABEL: sabdlt_s:
126 ; CHECK: sabdlt z0.d, z0.s, z1.s
128 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.sabdlt.nxv2i64(<vscale x 4 x i32> %a,
129 <vscale x 4 x i32> %b)
130 ret <vscale x 2 x i64> %out
137 define <vscale x 8 x i16> @saddlb_b(<vscale x 16 x i8> %a, <vscale x 16 x i8> %b) {
138 ; CHECK-LABEL: saddlb_b:
139 ; CHECK: saddlb z0.h, z0.b, z1.b
141 %out = call <vscale x 8 x i16> @llvm.aarch64.sve.saddlb.nxv8i16(<vscale x 16 x i8> %a,
142 <vscale x 16 x i8> %b)
143 ret <vscale x 8 x i16> %out
146 define <vscale x 4 x i32> @saddlb_h(<vscale x 8 x i16> %a, <vscale x 8 x i16> %b) {
147 ; CHECK-LABEL: saddlb_h:
148 ; CHECK: saddlb z0.s, z0.h, z1.h
150 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.saddlb.nxv4i32(<vscale x 8 x i16> %a,
151 <vscale x 8 x i16> %b)
152 ret <vscale x 4 x i32> %out
155 define <vscale x 2 x i64> @saddlb_s(<vscale x 4 x i32> %a, <vscale x 4 x i32> %b) {
156 ; CHECK-LABEL: saddlb_s:
157 ; CHECK: saddlb z0.d, z0.s, z1.s
159 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.saddlb.nxv2i64(<vscale x 4 x i32> %a,
160 <vscale x 4 x i32> %b)
161 ret <vscale x 2 x i64> %out
168 define <vscale x 8 x i16> @saddlt_b(<vscale x 16 x i8> %a, <vscale x 16 x i8> %b) {
169 ; CHECK-LABEL: saddlt_b:
170 ; CHECK: saddlt z0.h, z0.b, z1.b
172 %out = call <vscale x 8 x i16> @llvm.aarch64.sve.saddlt.nxv8i16(<vscale x 16 x i8> %a,
173 <vscale x 16 x i8> %b)
174 ret <vscale x 8 x i16> %out
177 define <vscale x 4 x i32> @saddlt_h(<vscale x 8 x i16> %a, <vscale x 8 x i16> %b) {
178 ; CHECK-LABEL: saddlt_h:
179 ; CHECK: saddlt z0.s, z0.h, z1.h
181 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.saddlt.nxv4i32(<vscale x 8 x i16> %a,
182 <vscale x 8 x i16> %b)
183 ret <vscale x 4 x i32> %out
186 define <vscale x 2 x i64> @saddlt_s(<vscale x 4 x i32> %a, <vscale x 4 x i32> %b) {
187 ; CHECK-LABEL: saddlt_s:
188 ; CHECK: saddlt z0.d, z0.s, z1.s
190 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.saddlt.nxv2i64(<vscale x 4 x i32> %a,
191 <vscale x 4 x i32> %b)
192 ret <vscale x 2 x i64> %out
199 define <vscale x 8 x i16> @saddwb_b(<vscale x 8 x i16> %a, <vscale x 16 x i8> %b) {
200 ; CHECK-LABEL: saddwb_b:
201 ; CHECK: saddwb z0.h, z0.h, z1.b
203 %out = call <vscale x 8 x i16> @llvm.aarch64.sve.saddwb.nxv8i16(<vscale x 8 x i16> %a,
204 <vscale x 16 x i8> %b)
205 ret <vscale x 8 x i16> %out
208 define <vscale x 4 x i32> @saddwb_h(<vscale x 4 x i32> %a, <vscale x 8 x i16> %b) {
209 ; CHECK-LABEL: saddwb_h:
210 ; CHECK: saddwb z0.s, z0.s, z1.h
212 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.saddwb.nxv4i32(<vscale x 4 x i32> %a,
213 <vscale x 8 x i16> %b)
214 ret <vscale x 4 x i32> %out
217 define <vscale x 2 x i64> @saddwb_s(<vscale x 2 x i64> %a, <vscale x 4 x i32> %b) {
218 ; CHECK-LABEL: saddwb_s:
219 ; CHECK: saddwb z0.d, z0.d, z1.s
221 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.saddwb.nxv2i64(<vscale x 2 x i64> %a,
222 <vscale x 4 x i32> %b)
223 ret <vscale x 2 x i64> %out
230 define <vscale x 8 x i16> @saddwt_b(<vscale x 8 x i16> %a, <vscale x 16 x i8> %b) {
231 ; CHECK-LABEL: saddwt_b:
232 ; CHECK: saddwt z0.h, z0.h, z1.b
234 %out = call <vscale x 8 x i16> @llvm.aarch64.sve.saddwt.nxv8i16(<vscale x 8 x i16> %a,
235 <vscale x 16 x i8> %b)
236 ret <vscale x 8 x i16> %out
239 define <vscale x 4 x i32> @saddwt_h(<vscale x 4 x i32> %a, <vscale x 8 x i16> %b) {
240 ; CHECK-LABEL: saddwt_h:
241 ; CHECK: saddwt z0.s, z0.s, z1.h
243 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.saddwt.nxv4i32(<vscale x 4 x i32> %a,
244 <vscale x 8 x i16> %b)
245 ret <vscale x 4 x i32> %out
248 define <vscale x 2 x i64> @saddwt_s(<vscale x 2 x i64> %a, <vscale x 4 x i32> %b) {
249 ; CHECK-LABEL: saddwt_s:
250 ; CHECK: saddwt z0.d, z0.d, z1.s
252 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.saddwt.nxv2i64(<vscale x 2 x i64> %a,
253 <vscale x 4 x i32> %b)
254 ret <vscale x 2 x i64> %out
262 define <vscale x 8 x i16> @smullb_b(<vscale x 16 x i8> %a, <vscale x 16 x i8> %b) {
263 ; CHECK-LABEL: smullb_b:
264 ; CHECK: smullb z0.h, z0.b, z1.b
266 %out = call <vscale x 8 x i16> @llvm.aarch64.sve.smullb.nxv8i16(<vscale x 16 x i8> %a,
267 <vscale x 16 x i8> %b)
268 ret <vscale x 8 x i16> %out
271 define <vscale x 4 x i32> @smullb_h(<vscale x 8 x i16> %a, <vscale x 8 x i16> %b) {
272 ; CHECK-LABEL: smullb_h:
273 ; CHECK: smullb z0.s, z0.h, z1.h
275 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.smullb.nxv4i32(<vscale x 8 x i16> %a,
276 <vscale x 8 x i16> %b)
277 ret <vscale x 4 x i32> %out
280 define <vscale x 2 x i64> @smullb_s(<vscale x 4 x i32> %a, <vscale x 4 x i32> %b) {
281 ; CHECK-LABEL: smullb_s:
282 ; CHECK: smullb z0.d, z0.s, z1.s
284 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.smullb.nxv2i64(<vscale x 4 x i32> %a,
285 <vscale x 4 x i32> %b)
286 ret <vscale x 2 x i64> %out
293 define <vscale x 4 x i32> @smullb_lane_h(<vscale x 8 x i16> %a, <vscale x 8 x i16> %b) {
294 ; CHECK-LABEL: smullb_lane_h:
295 ; CHECK: smullb z0.s, z0.h, z1.h[4]
297 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.smullb.lane.nxv4i32(<vscale x 8 x i16> %a,
298 <vscale x 8 x i16> %b,
300 ret <vscale x 4 x i32> %out
303 define <vscale x 2 x i64> @smullb_lane_s(<vscale x 4 x i32> %a, <vscale x 4 x i32> %b) {
304 ; CHECK-LABEL: smullb_lane_s:
305 ; CHECK: smullb z0.d, z0.s, z1.s[3]
307 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.smullb.lane.nxv2i64(<vscale x 4 x i32> %a,
308 <vscale x 4 x i32> %b,
310 ret <vscale x 2 x i64> %out
317 define <vscale x 8 x i16> @smullt_b(<vscale x 16 x i8> %a, <vscale x 16 x i8> %b) {
318 ; CHECK-LABEL: smullt_b:
319 ; CHECK: smullt z0.h, z0.b, z1.b
321 %out = call <vscale x 8 x i16> @llvm.aarch64.sve.smullt.nxv8i16(<vscale x 16 x i8> %a,
322 <vscale x 16 x i8> %b)
323 ret <vscale x 8 x i16> %out
326 define <vscale x 4 x i32> @smullt_h(<vscale x 8 x i16> %a, <vscale x 8 x i16> %b) {
327 ; CHECK-LABEL: smullt_h:
328 ; CHECK: smullt z0.s, z0.h, z1.h
330 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.smullt.nxv4i32(<vscale x 8 x i16> %a,
331 <vscale x 8 x i16> %b)
332 ret <vscale x 4 x i32> %out
335 define <vscale x 2 x i64> @smullt_s(<vscale x 4 x i32> %a, <vscale x 4 x i32> %b) {
336 ; CHECK-LABEL: smullt_s:
337 ; CHECK: smullt z0.d, z0.s, z1.s
339 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.smullt.nxv2i64(<vscale x 4 x i32> %a,
340 <vscale x 4 x i32> %b)
341 ret <vscale x 2 x i64> %out
348 define <vscale x 4 x i32> @smullt_lane_h(<vscale x 8 x i16> %a, <vscale x 8 x i16> %b) {
349 ; CHECK-LABEL: smullt_lane_h:
350 ; CHECK: smullt z0.s, z0.h, z1.h[5]
352 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.smullt.lane.nxv4i32(<vscale x 8 x i16> %a,
353 <vscale x 8 x i16> %b,
355 ret <vscale x 4 x i32> %out
358 define <vscale x 2 x i64> @smullt_lane_s(<vscale x 4 x i32> %a, <vscale x 4 x i32> %b) {
359 ; CHECK-LABEL: smullt_lane_s:
360 ; CHECK: smullt z0.d, z0.s, z1.s[2]
362 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.smullt.lane.nxv2i64(<vscale x 4 x i32> %a,
363 <vscale x 4 x i32> %b,
365 ret <vscale x 2 x i64> %out
372 define <vscale x 8 x i16> @sqdmullb_b(<vscale x 16 x i8> %a, <vscale x 16 x i8> %b) {
373 ; CHECK-LABEL: sqdmullb_b:
374 ; CHECK: sqdmullb z0.h, z0.b, z1.b
376 %out = call <vscale x 8 x i16> @llvm.aarch64.sve.sqdmullb.nxv8i16(<vscale x 16 x i8> %a,
377 <vscale x 16 x i8> %b)
378 ret <vscale x 8 x i16> %out
381 define <vscale x 4 x i32> @sqdmullb_h(<vscale x 8 x i16> %a, <vscale x 8 x i16> %b) {
382 ; CHECK-LABEL: sqdmullb_h:
383 ; CHECK: sqdmullb z0.s, z0.h, z1.h
385 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.sqdmullb.nxv4i32(<vscale x 8 x i16> %a,
386 <vscale x 8 x i16> %b)
387 ret <vscale x 4 x i32> %out
390 define <vscale x 2 x i64> @sqdmullb_s(<vscale x 4 x i32> %a, <vscale x 4 x i32> %b) {
391 ; CHECK-LABEL: sqdmullb_s:
392 ; CHECK: sqdmullb z0.d, z0.s, z1.s
394 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.sqdmullb.nxv2i64(<vscale x 4 x i32> %a,
395 <vscale x 4 x i32> %b)
396 ret <vscale x 2 x i64> %out
403 define <vscale x 4 x i32> @sqdmullb_lane_h(<vscale x 8 x i16> %a, <vscale x 8 x i16> %b) {
404 ; CHECK-LABEL: sqdmullb_lane_h:
405 ; CHECK: sqdmullb z0.s, z0.h, z1.h[2]
407 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.sqdmullb.lane.nxv4i32(<vscale x 8 x i16> %a,
408 <vscale x 8 x i16> %b,
410 ret <vscale x 4 x i32> %out
413 define <vscale x 2 x i64> @sqdmullb_lane_s(<vscale x 4 x i32> %a, <vscale x 4 x i32> %b) {
414 ; CHECK-LABEL: sqdmullb_lane_s:
415 ; CHECK: sqdmullb z0.d, z0.s, z1.s[1]
417 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.sqdmullb.lane.nxv2i64(<vscale x 4 x i32> %a,
418 <vscale x 4 x i32> %b,
420 ret <vscale x 2 x i64> %out
427 define <vscale x 8 x i16> @sqdmullt_b(<vscale x 16 x i8> %a, <vscale x 16 x i8> %b) {
428 ; CHECK-LABEL: sqdmullt_b:
429 ; CHECK: sqdmullt z0.h, z0.b, z1.b
431 %out = call <vscale x 8 x i16> @llvm.aarch64.sve.sqdmullt.nxv8i16(<vscale x 16 x i8> %a,
432 <vscale x 16 x i8> %b)
433 ret <vscale x 8 x i16> %out
436 define <vscale x 4 x i32> @sqdmullt_h(<vscale x 8 x i16> %a, <vscale x 8 x i16> %b) {
437 ; CHECK-LABEL: sqdmullt_h:
438 ; CHECK: sqdmullt z0.s, z0.h, z1.h
440 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.sqdmullt.nxv4i32(<vscale x 8 x i16> %a,
441 <vscale x 8 x i16> %b)
442 ret <vscale x 4 x i32> %out
445 define <vscale x 2 x i64> @sqdmullt_s(<vscale x 4 x i32> %a, <vscale x 4 x i32> %b) {
446 ; CHECK-LABEL: sqdmullt_s:
447 ; CHECK: sqdmullt z0.d, z0.s, z1.s
449 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.sqdmullt.nxv2i64(<vscale x 4 x i32> %a,
450 <vscale x 4 x i32> %b)
451 ret <vscale x 2 x i64> %out
458 define <vscale x 4 x i32> @sqdmullt_lane_h(<vscale x 8 x i16> %a, <vscale x 8 x i16> %b) {
459 ; CHECK-LABEL: sqdmullt_lane_h:
460 ; CHECK: sqdmullt z0.s, z0.h, z1.h[3]
462 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.sqdmullt.lane.nxv4i32(<vscale x 8 x i16> %a,
463 <vscale x 8 x i16> %b,
465 ret <vscale x 4 x i32> %out
468 define <vscale x 2 x i64> @sqdmullt_lane_s(<vscale x 4 x i32> %a, <vscale x 4 x i32> %b) {
469 ; CHECK-LABEL: sqdmullt_lane_s:
470 ; CHECK: sqdmullt z0.d, z0.s, z1.s[0]
472 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.sqdmullt.lane.nxv2i64(<vscale x 4 x i32> %a,
473 <vscale x 4 x i32> %b,
475 ret <vscale x 2 x i64> %out
482 define <vscale x 8 x i16> @ssublb_b(<vscale x 16 x i8> %a, <vscale x 16 x i8> %b) {
483 ; CHECK-LABEL: ssublb_b:
484 ; CHECK: ssublb z0.h, z0.b, z1.b
486 %out = call <vscale x 8 x i16> @llvm.aarch64.sve.ssublb.nxv8i16(<vscale x 16 x i8> %a,
487 <vscale x 16 x i8> %b)
488 ret <vscale x 8 x i16> %out
491 define <vscale x 4 x i32> @ssublb_h(<vscale x 8 x i16> %a, <vscale x 8 x i16> %b) {
492 ; CHECK-LABEL: ssublb_h:
493 ; CHECK: ssublb z0.s, z0.h, z1.h
495 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.ssublb.nxv4i32(<vscale x 8 x i16> %a,
496 <vscale x 8 x i16> %b)
497 ret <vscale x 4 x i32> %out
500 define <vscale x 2 x i64> @ssublb_s(<vscale x 4 x i32> %a, <vscale x 4 x i32> %b) {
501 ; CHECK-LABEL: ssublb_s:
502 ; CHECK: ssublb z0.d, z0.s, z1.s
504 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.ssublb.nxv2i64(<vscale x 4 x i32> %a,
505 <vscale x 4 x i32> %b)
506 ret <vscale x 2 x i64> %out
513 define <vscale x 8 x i16> @sshllb_b(<vscale x 16 x i8> %a) {
514 ; CHECK-LABEL: sshllb_b:
515 ; CHECK: sshllb z0.h, z0.b, #0
517 %out = call <vscale x 8 x i16> @llvm.aarch64.sve.sshllb.nxv8i16(<vscale x 16 x i8> %a, i32 0)
518 ret <vscale x 8 x i16> %out
521 define <vscale x 4 x i32> @sshllb_h(<vscale x 8 x i16> %a) {
522 ; CHECK-LABEL: sshllb_h:
523 ; CHECK: sshllb z0.s, z0.h, #1
525 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.sshllb.nxv4i32(<vscale x 8 x i16> %a, i32 1)
526 ret <vscale x 4 x i32> %out
529 define <vscale x 2 x i64> @sshllb_s(<vscale x 4 x i32> %a) {
530 ; CHECK-LABEL: sshllb_s:
531 ; CHECK: sshllb z0.d, z0.s, #2
533 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.sshllb.nxv2i64(<vscale x 4 x i32> %a, i32 2)
534 ret <vscale x 2 x i64> %out
541 define <vscale x 8 x i16> @sshllt_b(<vscale x 16 x i8> %a) {
542 ; CHECK-LABEL: sshllt_b:
543 ; CHECK: sshllt z0.h, z0.b, #3
545 %out = call <vscale x 8 x i16> @llvm.aarch64.sve.sshllt.nxv8i16(<vscale x 16 x i8> %a, i32 3)
546 ret <vscale x 8 x i16> %out
549 define <vscale x 4 x i32> @sshllt_h(<vscale x 8 x i16> %a) {
550 ; CHECK-LABEL: sshllt_h:
551 ; CHECK: sshllt z0.s, z0.h, #4
553 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.sshllt.nxv4i32(<vscale x 8 x i16> %a, i32 4)
554 ret <vscale x 4 x i32> %out
557 define <vscale x 2 x i64> @sshllt_s(<vscale x 4 x i32> %a) {
558 ; CHECK-LABEL: sshllt_s:
559 ; CHECK: sshllt z0.d, z0.s, #5
561 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.sshllt.nxv2i64(<vscale x 4 x i32> %a, i32 5)
562 ret <vscale x 2 x i64> %out
569 define <vscale x 8 x i16> @ssublt_b(<vscale x 16 x i8> %a, <vscale x 16 x i8> %b) {
570 ; CHECK-LABEL: ssublt_b:
571 ; CHECK: ssublt z0.h, z0.b, z1.b
573 %out = call <vscale x 8 x i16> @llvm.aarch64.sve.ssublt.nxv8i16(<vscale x 16 x i8> %a,
574 <vscale x 16 x i8> %b)
575 ret <vscale x 8 x i16> %out
578 define <vscale x 4 x i32> @ssublt_h(<vscale x 8 x i16> %a, <vscale x 8 x i16> %b) {
579 ; CHECK-LABEL: ssublt_h:
580 ; CHECK: ssublt z0.s, z0.h, z1.h
582 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.ssublt.nxv4i32(<vscale x 8 x i16> %a,
583 <vscale x 8 x i16> %b)
584 ret <vscale x 4 x i32> %out
587 define <vscale x 2 x i64> @ssublt_s(<vscale x 4 x i32> %a, <vscale x 4 x i32> %b) {
588 ; CHECK-LABEL: ssublt_s:
589 ; CHECK: ssublt z0.d, z0.s, z1.s
591 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.ssublt.nxv2i64(<vscale x 4 x i32> %a,
592 <vscale x 4 x i32> %b)
593 ret <vscale x 2 x i64> %out
600 define <vscale x 8 x i16> @ssubwb_b(<vscale x 8 x i16> %a, <vscale x 16 x i8> %b) {
601 ; CHECK-LABEL: ssubwb_b:
602 ; CHECK: ssubwb z0.h, z0.h, z1.b
604 %out = call <vscale x 8 x i16> @llvm.aarch64.sve.ssubwb.nxv8i16(<vscale x 8 x i16> %a,
605 <vscale x 16 x i8> %b)
606 ret <vscale x 8 x i16> %out
609 define <vscale x 4 x i32> @ssubwb_h(<vscale x 4 x i32> %a, <vscale x 8 x i16> %b) {
610 ; CHECK-LABEL: ssubwb_h:
611 ; CHECK: ssubwb z0.s, z0.s, z1.h
613 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.ssubwb.nxv4i32(<vscale x 4 x i32> %a,
614 <vscale x 8 x i16> %b)
615 ret <vscale x 4 x i32> %out
618 define <vscale x 2 x i64> @ssubwb_s(<vscale x 2 x i64> %a, <vscale x 4 x i32> %b) {
619 ; CHECK-LABEL: ssubwb_s:
620 ; CHECK: ssubwb z0.d, z0.d, z1.s
622 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.ssubwb.nxv2i64(<vscale x 2 x i64> %a,
623 <vscale x 4 x i32> %b)
624 ret <vscale x 2 x i64> %out
631 define <vscale x 8 x i16> @ssubwt_b(<vscale x 8 x i16> %a, <vscale x 16 x i8> %b) {
632 ; CHECK-LABEL: ssubwt_b:
633 ; CHECK: ssubwt z0.h, z0.h, z1.b
635 %out = call <vscale x 8 x i16> @llvm.aarch64.sve.ssubwt.nxv8i16(<vscale x 8 x i16> %a,
636 <vscale x 16 x i8> %b)
637 ret <vscale x 8 x i16> %out
640 define <vscale x 4 x i32> @ssubwt_h(<vscale x 4 x i32> %a, <vscale x 8 x i16> %b) {
641 ; CHECK-LABEL: ssubwt_h:
642 ; CHECK: ssubwt z0.s, z0.s, z1.h
644 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.ssubwt.nxv4i32(<vscale x 4 x i32> %a,
645 <vscale x 8 x i16> %b)
646 ret <vscale x 4 x i32> %out
649 define <vscale x 2 x i64> @ssubwt_s(<vscale x 2 x i64> %a, <vscale x 4 x i32> %b) {
650 ; CHECK-LABEL: ssubwt_s:
651 ; CHECK: ssubwt z0.d, z0.d, z1.s
653 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.ssubwt.nxv2i64(<vscale x 2 x i64> %a,
654 <vscale x 4 x i32> %b)
655 ret <vscale x 2 x i64> %out
662 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) {
663 ; CHECK-LABEL: uabalb_b:
664 ; CHECK: uabalb z0.h, z1.b, z2.b
666 %out = call <vscale x 8 x i16> @llvm.aarch64.sve.uabalb.nxv8i16(<vscale x 8 x i16> %a,
667 <vscale x 16 x i8> %b,
668 <vscale x 16 x i8> %c)
669 ret <vscale x 8 x i16> %out
672 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) {
673 ; CHECK-LABEL: uabalb_h:
674 ; CHECK: uabalb z0.s, z1.h, z2.h
676 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.uabalb.nxv4i32(<vscale x 4 x i32> %a,
677 <vscale x 8 x i16> %b,
678 <vscale x 8 x i16> %c)
679 ret <vscale x 4 x i32> %out
682 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) {
683 ; CHECK-LABEL: uabalb_s:
684 ; CHECK: uabalb z0.d, z1.s, z2.s
686 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.uabalb.nxv2i64(<vscale x 2 x i64> %a,
687 <vscale x 4 x i32> %b,
688 <vscale x 4 x i32> %c)
689 ret <vscale x 2 x i64> %out
696 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) {
697 ; CHECK-LABEL: uabalt_b:
698 ; CHECK: uabalt z0.h, z1.b, z2.b
700 %out = call <vscale x 8 x i16> @llvm.aarch64.sve.uabalt.nxv8i16(<vscale x 8 x i16> %a,
701 <vscale x 16 x i8> %b,
702 <vscale x 16 x i8> %c)
703 ret <vscale x 8 x i16> %out
706 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) {
707 ; CHECK-LABEL: uabalt_h:
708 ; CHECK: uabalt z0.s, z1.h, z2.h
710 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.uabalt.nxv4i32(<vscale x 4 x i32> %a,
711 <vscale x 8 x i16> %b,
712 <vscale x 8 x i16> %c)
713 ret <vscale x 4 x i32> %out
716 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) {
717 ; CHECK-LABEL: uabalt_s:
718 ; CHECK: uabalt z0.d, z1.s, z2.s
720 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.uabalt.nxv2i64(<vscale x 2 x i64> %a,
721 <vscale x 4 x i32> %b,
722 <vscale x 4 x i32> %c)
723 ret <vscale x 2 x i64> %out
730 define <vscale x 8 x i16> @uabdlb_b(<vscale x 16 x i8> %a, <vscale x 16 x i8> %b) {
731 ; CHECK-LABEL: uabdlb_b:
732 ; CHECK: uabdlb z0.h, z0.b, z1.b
734 %out = call <vscale x 8 x i16> @llvm.aarch64.sve.uabdlb.nxv8i16(<vscale x 16 x i8> %a,
735 <vscale x 16 x i8> %b)
736 ret <vscale x 8 x i16> %out
739 define <vscale x 4 x i32> @uabdlb_h(<vscale x 8 x i16> %a, <vscale x 8 x i16> %b) {
740 ; CHECK-LABEL: uabdlb_h:
741 ; CHECK: uabdlb z0.s, z0.h, z1.h
743 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.uabdlb.nxv4i32(<vscale x 8 x i16> %a,
744 <vscale x 8 x i16> %b)
745 ret <vscale x 4 x i32> %out
748 define <vscale x 2 x i64> @uabdlb_s(<vscale x 4 x i32> %a, <vscale x 4 x i32> %b) {
749 ; CHECK-LABEL: uabdlb_s:
750 ; CHECK: uabdlb z0.d, z0.s, z1.s
752 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.uabdlb.nxv2i64(<vscale x 4 x i32> %a,
753 <vscale x 4 x i32> %b)
754 ret <vscale x 2 x i64> %out
761 define <vscale x 8 x i16> @uabdlt_b(<vscale x 16 x i8> %a, <vscale x 16 x i8> %b) {
762 ; CHECK-LABEL: uabdlt_b:
763 ; CHECK: uabdlt z0.h, z0.b, z1.b
765 %out = call <vscale x 8 x i16> @llvm.aarch64.sve.uabdlt.nxv8i16(<vscale x 16 x i8> %a,
766 <vscale x 16 x i8> %b)
767 ret <vscale x 8 x i16> %out
770 define <vscale x 4 x i32> @uabdlt_h(<vscale x 8 x i16> %a, <vscale x 8 x i16> %b) {
771 ; CHECK-LABEL: uabdlt_h:
772 ; CHECK: uabdlt z0.s, z0.h, z1.h
774 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.uabdlt.nxv4i32(<vscale x 8 x i16> %a,
775 <vscale x 8 x i16> %b)
776 ret <vscale x 4 x i32> %out
779 define <vscale x 2 x i64> @uabdlt_s(<vscale x 4 x i32> %a, <vscale x 4 x i32> %b) {
780 ; CHECK-LABEL: uabdlt_s:
781 ; CHECK: uabdlt z0.d, z0.s, z1.s
783 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.uabdlt.nxv2i64(<vscale x 4 x i32> %a,
784 <vscale x 4 x i32> %b)
785 ret <vscale x 2 x i64> %out
792 define <vscale x 8 x i16> @uaddlb_b(<vscale x 16 x i8> %a, <vscale x 16 x i8> %b) {
793 ; CHECK-LABEL: uaddlb_b:
794 ; CHECK: uaddlb z0.h, z0.b, z1.b
796 %out = call <vscale x 8 x i16> @llvm.aarch64.sve.uaddlb.nxv8i16(<vscale x 16 x i8> %a,
797 <vscale x 16 x i8> %b)
798 ret <vscale x 8 x i16> %out
801 define <vscale x 4 x i32> @uaddlb_h(<vscale x 8 x i16> %a, <vscale x 8 x i16> %b) {
802 ; CHECK-LABEL: uaddlb_h:
803 ; CHECK: uaddlb z0.s, z0.h, z1.h
805 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.uaddlb.nxv4i32(<vscale x 8 x i16> %a,
806 <vscale x 8 x i16> %b)
807 ret <vscale x 4 x i32> %out
810 define <vscale x 2 x i64> @uaddlb_s(<vscale x 4 x i32> %a, <vscale x 4 x i32> %b) {
811 ; CHECK-LABEL: uaddlb_s:
812 ; CHECK: uaddlb z0.d, z0.s, z1.s
814 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.uaddlb.nxv2i64(<vscale x 4 x i32> %a,
815 <vscale x 4 x i32> %b)
816 ret <vscale x 2 x i64> %out
823 define <vscale x 8 x i16> @uaddlt_b(<vscale x 16 x i8> %a, <vscale x 16 x i8> %b) {
824 ; CHECK-LABEL: uaddlt_b:
825 ; CHECK: uaddlt z0.h, z0.b, z1.b
827 %out = call <vscale x 8 x i16> @llvm.aarch64.sve.uaddlt.nxv8i16(<vscale x 16 x i8> %a,
828 <vscale x 16 x i8> %b)
829 ret <vscale x 8 x i16> %out
832 define <vscale x 4 x i32> @uaddlt_h(<vscale x 8 x i16> %a, <vscale x 8 x i16> %b) {
833 ; CHECK-LABEL: uaddlt_h:
834 ; CHECK: uaddlt z0.s, z0.h, z1.h
836 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.uaddlt.nxv4i32(<vscale x 8 x i16> %a,
837 <vscale x 8 x i16> %b)
838 ret <vscale x 4 x i32> %out
841 define <vscale x 2 x i64> @uaddlt_s(<vscale x 4 x i32> %a, <vscale x 4 x i32> %b) {
842 ; CHECK-LABEL: uaddlt_s:
843 ; CHECK: uaddlt z0.d, z0.s, z1.s
845 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.uaddlt.nxv2i64(<vscale x 4 x i32> %a,
846 <vscale x 4 x i32> %b)
847 ret <vscale x 2 x i64> %out
854 define <vscale x 8 x i16> @uaddwb_b(<vscale x 8 x i16> %a, <vscale x 16 x i8> %b) {
855 ; CHECK-LABEL: uaddwb_b:
856 ; CHECK: uaddwb z0.h, z0.h, z1.b
858 %out = call <vscale x 8 x i16> @llvm.aarch64.sve.uaddwb.nxv8i16(<vscale x 8 x i16> %a,
859 <vscale x 16 x i8> %b)
860 ret <vscale x 8 x i16> %out
863 define <vscale x 4 x i32> @uaddwb_h(<vscale x 4 x i32> %a, <vscale x 8 x i16> %b) {
864 ; CHECK-LABEL: uaddwb_h:
865 ; CHECK: uaddwb z0.s, z0.s, z1.h
867 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.uaddwb.nxv4i32(<vscale x 4 x i32> %a,
868 <vscale x 8 x i16> %b)
869 ret <vscale x 4 x i32> %out
872 define <vscale x 2 x i64> @uaddwb_s(<vscale x 2 x i64> %a, <vscale x 4 x i32> %b) {
873 ; CHECK-LABEL: uaddwb_s:
874 ; CHECK: uaddwb z0.d, z0.d, z1.s
876 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.uaddwb.nxv2i64(<vscale x 2 x i64> %a,
877 <vscale x 4 x i32> %b)
878 ret <vscale x 2 x i64> %out
885 define <vscale x 8 x i16> @uaddwt_b(<vscale x 8 x i16> %a, <vscale x 16 x i8> %b) {
886 ; CHECK-LABEL: uaddwt_b:
887 ; CHECK: uaddwt z0.h, z0.h, z1.b
889 %out = call <vscale x 8 x i16> @llvm.aarch64.sve.uaddwt.nxv8i16(<vscale x 8 x i16> %a,
890 <vscale x 16 x i8> %b)
891 ret <vscale x 8 x i16> %out
894 define <vscale x 4 x i32> @uaddwt_h(<vscale x 4 x i32> %a, <vscale x 8 x i16> %b) {
895 ; CHECK-LABEL: uaddwt_h:
896 ; CHECK: uaddwt z0.s, z0.s, z1.h
898 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.uaddwt.nxv4i32(<vscale x 4 x i32> %a,
899 <vscale x 8 x i16> %b)
900 ret <vscale x 4 x i32> %out
903 define <vscale x 2 x i64> @uaddwt_s(<vscale x 2 x i64> %a, <vscale x 4 x i32> %b) {
904 ; CHECK-LABEL: uaddwt_s:
905 ; CHECK: uaddwt z0.d, z0.d, z1.s
907 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.uaddwt.nxv2i64(<vscale x 2 x i64> %a,
908 <vscale x 4 x i32> %b)
909 ret <vscale x 2 x i64> %out
916 define <vscale x 8 x i16> @umullb_b(<vscale x 16 x i8> %a, <vscale x 16 x i8> %b) {
917 ; CHECK-LABEL: umullb_b:
918 ; CHECK: umullb z0.h, z0.b, z1.b
920 %out = call <vscale x 8 x i16> @llvm.aarch64.sve.umullb.nxv8i16(<vscale x 16 x i8> %a,
921 <vscale x 16 x i8> %b)
922 ret <vscale x 8 x i16> %out
925 define <vscale x 4 x i32> @umullb_h(<vscale x 8 x i16> %a, <vscale x 8 x i16> %b) {
926 ; CHECK-LABEL: umullb_h:
927 ; CHECK: umullb z0.s, z0.h, z1.h
929 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.umullb.nxv4i32(<vscale x 8 x i16> %a,
930 <vscale x 8 x i16> %b)
931 ret <vscale x 4 x i32> %out
934 define <vscale x 2 x i64> @umullb_s(<vscale x 4 x i32> %a, <vscale x 4 x i32> %b) {
935 ; CHECK-LABEL: umullb_s:
936 ; CHECK: umullb z0.d, z0.s, z1.s
938 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.umullb.nxv2i64(<vscale x 4 x i32> %a,
939 <vscale x 4 x i32> %b)
940 ret <vscale x 2 x i64> %out
947 define <vscale x 4 x i32> @umullb_lane_h(<vscale x 8 x i16> %a, <vscale x 8 x i16> %b) {
948 ; CHECK-LABEL: umullb_lane_h:
949 ; CHECK: umullb z0.s, z0.h, z1.h[0]
951 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.umullb.lane.nxv4i32(<vscale x 8 x i16> %a,
952 <vscale x 8 x i16> %b,
954 ret <vscale x 4 x i32> %out
958 define <vscale x 2 x i64> @umullb_lane_s(<vscale x 4 x i32> %a, <vscale x 4 x i32> %b) {
959 ; CHECK-LABEL: umullb_lane_s:
960 ; CHECK: umullb z0.d, z0.s, z1.s[3]
962 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.umullb.lane.nxv2i64(<vscale x 4 x i32> %a,
963 <vscale x 4 x i32> %b,
965 ret <vscale x 2 x i64> %out
972 define <vscale x 8 x i16> @umullt_b(<vscale x 16 x i8> %a, <vscale x 16 x i8> %b) {
973 ; CHECK-LABEL: umullt_b:
974 ; CHECK: umullt z0.h, z0.b, z1.b
976 %out = call <vscale x 8 x i16> @llvm.aarch64.sve.umullt.nxv8i16(<vscale x 16 x i8> %a,
977 <vscale x 16 x i8> %b)
978 ret <vscale x 8 x i16> %out
981 define <vscale x 4 x i32> @umullt_h(<vscale x 8 x i16> %a, <vscale x 8 x i16> %b) {
982 ; CHECK-LABEL: umullt_h:
983 ; CHECK: umullt z0.s, z0.h, z1.h
985 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.umullt.nxv4i32(<vscale x 8 x i16> %a,
986 <vscale x 8 x i16> %b)
987 ret <vscale x 4 x i32> %out
990 define <vscale x 2 x i64> @umullt_s(<vscale x 4 x i32> %a, <vscale x 4 x i32> %b) {
991 ; CHECK-LABEL: umullt_s:
992 ; CHECK: umullt z0.d, z0.s, z1.s
994 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.umullt.nxv2i64(<vscale x 4 x i32> %a,
995 <vscale x 4 x i32> %b)
996 ret <vscale x 2 x i64> %out
1003 define <vscale x 4 x i32> @umullt_lane_h(<vscale x 8 x i16> %a, <vscale x 8 x i16> %b) {
1004 ; CHECK-LABEL: umullt_lane_h:
1005 ; CHECK: umullt z0.s, z0.h, z1.h[1]
1007 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.umullt.lane.nxv4i32(<vscale x 8 x i16> %a,
1008 <vscale x 8 x i16> %b,
1010 ret <vscale x 4 x i32> %out
1013 define <vscale x 2 x i64> @umullt_lane_s(<vscale x 4 x i32> %a, <vscale x 4 x i32> %b) {
1014 ; CHECK-LABEL: umullt_lane_s:
1015 ; CHECK: umullt z0.d, z0.s, z1.s[2]
1017 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.umullt.lane.nxv2i64(<vscale x 4 x i32> %a,
1018 <vscale x 4 x i32> %b,
1020 ret <vscale x 2 x i64> %out
1027 define <vscale x 8 x i16> @ushllb_b(<vscale x 16 x i8> %a) {
1028 ; CHECK-LABEL: ushllb_b:
1029 ; CHECK: ushllb z0.h, z0.b, #6
1031 %out = call <vscale x 8 x i16> @llvm.aarch64.sve.ushllb.nxv8i16(<vscale x 16 x i8> %a, i32 6)
1032 ret <vscale x 8 x i16> %out
1035 define <vscale x 4 x i32> @ushllb_h(<vscale x 8 x i16> %a) {
1036 ; CHECK-LABEL: ushllb_h:
1037 ; CHECK: ushllb z0.s, z0.h, #7
1039 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.ushllb.nxv4i32(<vscale x 8 x i16> %a, i32 7)
1040 ret <vscale x 4 x i32> %out
1043 define <vscale x 2 x i64> @ushllb_s(<vscale x 4 x i32> %a) {
1044 ; CHECK-LABEL: ushllb_s:
1045 ; CHECK: ushllb z0.d, z0.s, #8
1047 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.ushllb.nxv2i64(<vscale x 4 x i32> %a, i32 8)
1048 ret <vscale x 2 x i64> %out
1055 define <vscale x 8 x i16> @ushllt_b(<vscale x 16 x i8> %a) {
1056 ; CHECK-LABEL: ushllt_b:
1057 ; CHECK: ushllt z0.h, z0.b, #7
1059 %out = call <vscale x 8 x i16> @llvm.aarch64.sve.ushllt.nxv8i16(<vscale x 16 x i8> %a, i32 7)
1060 ret <vscale x 8 x i16> %out
1063 define <vscale x 4 x i32> @ushllt_h(<vscale x 8 x i16> %a) {
1064 ; CHECK-LABEL: ushllt_h:
1065 ; CHECK: ushllt z0.s, z0.h, #15
1067 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.ushllt.nxv4i32(<vscale x 8 x i16> %a, i32 15)
1068 ret <vscale x 4 x i32> %out
1071 define <vscale x 2 x i64> @ushllt_s(<vscale x 4 x i32> %a) {
1072 ; CHECK-LABEL: ushllt_s:
1073 ; CHECK: ushllt z0.d, z0.s, #31
1075 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.ushllt.nxv2i64(<vscale x 4 x i32> %a, i32 31)
1076 ret <vscale x 2 x i64> %out
1083 define <vscale x 8 x i16> @usublb_b(<vscale x 16 x i8> %a, <vscale x 16 x i8> %b) {
1084 ; CHECK-LABEL: usublb_b:
1085 ; CHECK: usublb z0.h, z0.b, z1.b
1087 %out = call <vscale x 8 x i16> @llvm.aarch64.sve.usublb.nxv8i16(<vscale x 16 x i8> %a,
1088 <vscale x 16 x i8> %b)
1089 ret <vscale x 8 x i16> %out
1092 define <vscale x 4 x i32> @usublb_h(<vscale x 8 x i16> %a, <vscale x 8 x i16> %b) {
1093 ; CHECK-LABEL: usublb_h:
1094 ; CHECK: usublb z0.s, z0.h, z1.h
1096 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.usublb.nxv4i32(<vscale x 8 x i16> %a,
1097 <vscale x 8 x i16> %b)
1098 ret <vscale x 4 x i32> %out
1101 define <vscale x 2 x i64> @usublb_s(<vscale x 4 x i32> %a, <vscale x 4 x i32> %b) {
1102 ; CHECK-LABEL: usublb_s:
1103 ; CHECK: usublb z0.d, z0.s, z1.s
1105 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.usublb.nxv2i64(<vscale x 4 x i32> %a,
1106 <vscale x 4 x i32> %b)
1107 ret <vscale x 2 x i64> %out
1114 define <vscale x 8 x i16> @usublt_b(<vscale x 16 x i8> %a, <vscale x 16 x i8> %b) {
1115 ; CHECK-LABEL: usublt_b:
1116 ; CHECK: usublt z0.h, z0.b, z1.b
1118 %out = call <vscale x 8 x i16> @llvm.aarch64.sve.usublt.nxv8i16(<vscale x 16 x i8> %a,
1119 <vscale x 16 x i8> %b)
1120 ret <vscale x 8 x i16> %out
1123 define <vscale x 4 x i32> @usublt_h(<vscale x 8 x i16> %a, <vscale x 8 x i16> %b) {
1124 ; CHECK-LABEL: usublt_h:
1125 ; CHECK: usublt z0.s, z0.h, z1.h
1127 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.usublt.nxv4i32(<vscale x 8 x i16> %a,
1128 <vscale x 8 x i16> %b)
1129 ret <vscale x 4 x i32> %out
1132 define <vscale x 2 x i64> @usublt_s(<vscale x 4 x i32> %a, <vscale x 4 x i32> %b) {
1133 ; CHECK-LABEL: usublt_s:
1134 ; CHECK: usublt z0.d, z0.s, z1.s
1136 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.usublt.nxv2i64(<vscale x 4 x i32> %a,
1137 <vscale x 4 x i32> %b)
1138 ret <vscale x 2 x i64> %out
1145 define <vscale x 8 x i16> @usubwb_b(<vscale x 8 x i16> %a, <vscale x 16 x i8> %b) {
1146 ; CHECK-LABEL: usubwb_b:
1147 ; CHECK: usubwb z0.h, z0.h, z1.b
1149 %out = call <vscale x 8 x i16> @llvm.aarch64.sve.usubwb.nxv8i16(<vscale x 8 x i16> %a,
1150 <vscale x 16 x i8> %b)
1151 ret <vscale x 8 x i16> %out
1154 define <vscale x 4 x i32> @usubwb_h(<vscale x 4 x i32> %a, <vscale x 8 x i16> %b) {
1155 ; CHECK-LABEL: usubwb_h:
1156 ; CHECK: usubwb z0.s, z0.s, z1.h
1158 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.usubwb.nxv4i32(<vscale x 4 x i32> %a,
1159 <vscale x 8 x i16> %b)
1160 ret <vscale x 4 x i32> %out
1163 define <vscale x 2 x i64> @usubwb_s(<vscale x 2 x i64> %a, <vscale x 4 x i32> %b) {
1164 ; CHECK-LABEL: usubwb_s:
1165 ; CHECK: usubwb z0.d, z0.d, z1.s
1167 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.usubwb.nxv2i64(<vscale x 2 x i64> %a,
1168 <vscale x 4 x i32> %b)
1169 ret <vscale x 2 x i64> %out
1176 define <vscale x 8 x i16> @usubwt_b(<vscale x 8 x i16> %a, <vscale x 16 x i8> %b) {
1177 ; CHECK-LABEL: usubwt_b:
1178 ; CHECK: usubwt z0.h, z0.h, z1.b
1180 %out = call <vscale x 8 x i16> @llvm.aarch64.sve.usubwt.nxv8i16(<vscale x 8 x i16> %a,
1181 <vscale x 16 x i8> %b)
1182 ret <vscale x 8 x i16> %out
1185 define <vscale x 4 x i32> @usubwt_h(<vscale x 4 x i32> %a, <vscale x 8 x i16> %b) {
1186 ; CHECK-LABEL: usubwt_h:
1187 ; CHECK: usubwt z0.s, z0.s, z1.h
1189 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.usubwt.nxv4i32(<vscale x 4 x i32> %a,
1190 <vscale x 8 x i16> %b)
1191 ret <vscale x 4 x i32> %out
1194 define <vscale x 2 x i64> @usubwt_s(<vscale x 2 x i64> %a, <vscale x 4 x i32> %b) {
1195 ; CHECK-LABEL: usubwt_s:
1196 ; CHECK: usubwt z0.d, z0.d, z1.s
1198 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.usubwt.nxv2i64(<vscale x 2 x i64> %a,
1199 <vscale x 4 x i32> %b)
1200 ret <vscale x 2 x i64> %out
1203 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>)
1204 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>)
1205 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>)
1207 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>)
1208 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>)
1209 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>)
1211 declare <vscale x 8 x i16> @llvm.aarch64.sve.sabdlb.nxv8i16(<vscale x 16 x i8>, <vscale x 16 x i8>)
1212 declare <vscale x 4 x i32> @llvm.aarch64.sve.sabdlb.nxv4i32(<vscale x 8 x i16>, <vscale x 8 x i16>)
1213 declare <vscale x 2 x i64> @llvm.aarch64.sve.sabdlb.nxv2i64(<vscale x 4 x i32>, <vscale x 4 x i32>)
1215 declare <vscale x 8 x i16> @llvm.aarch64.sve.sabdlt.nxv8i16(<vscale x 16 x i8>, <vscale x 16 x i8>)
1216 declare <vscale x 4 x i32> @llvm.aarch64.sve.sabdlt.nxv4i32(<vscale x 8 x i16>, <vscale x 8 x i16>)
1217 declare <vscale x 2 x i64> @llvm.aarch64.sve.sabdlt.nxv2i64(<vscale x 4 x i32>, <vscale x 4 x i32>)
1219 declare <vscale x 8 x i16> @llvm.aarch64.sve.saddlb.nxv8i16(<vscale x 16 x i8>, <vscale x 16 x i8>)
1220 declare <vscale x 4 x i32> @llvm.aarch64.sve.saddlb.nxv4i32(<vscale x 8 x i16>, <vscale x 8 x i16>)
1221 declare <vscale x 2 x i64> @llvm.aarch64.sve.saddlb.nxv2i64(<vscale x 4 x i32>, <vscale x 4 x i32>)
1223 declare <vscale x 8 x i16> @llvm.aarch64.sve.saddlt.nxv8i16(<vscale x 16 x i8>, <vscale x 16 x i8>)
1224 declare <vscale x 4 x i32> @llvm.aarch64.sve.saddlt.nxv4i32(<vscale x 8 x i16>, <vscale x 8 x i16>)
1225 declare <vscale x 2 x i64> @llvm.aarch64.sve.saddlt.nxv2i64(<vscale x 4 x i32>, <vscale x 4 x i32>)
1227 declare <vscale x 8 x i16> @llvm.aarch64.sve.saddwb.nxv8i16(<vscale x 8 x i16>, <vscale x 16 x i8>)
1228 declare <vscale x 4 x i32> @llvm.aarch64.sve.saddwb.nxv4i32(<vscale x 4 x i32>, <vscale x 8 x i16>)
1229 declare <vscale x 2 x i64> @llvm.aarch64.sve.saddwb.nxv2i64(<vscale x 2 x i64>, <vscale x 4 x i32>)
1231 declare <vscale x 8 x i16> @llvm.aarch64.sve.saddwt.nxv8i16(<vscale x 8 x i16>, <vscale x 16 x i8>)
1232 declare <vscale x 4 x i32> @llvm.aarch64.sve.saddwt.nxv4i32(<vscale x 4 x i32>, <vscale x 8 x i16>)
1233 declare <vscale x 2 x i64> @llvm.aarch64.sve.saddwt.nxv2i64(<vscale x 2 x i64>, <vscale x 4 x i32>)
1235 declare <vscale x 8 x i16> @llvm.aarch64.sve.smullb.nxv8i16(<vscale x 16 x i8>, <vscale x 16 x i8>)
1236 declare <vscale x 4 x i32> @llvm.aarch64.sve.smullb.nxv4i32(<vscale x 8 x i16>, <vscale x 8 x i16>)
1237 declare <vscale x 2 x i64> @llvm.aarch64.sve.smullb.nxv2i64(<vscale x 4 x i32>, <vscale x 4 x i32>)
1239 declare <vscale x 4 x i32> @llvm.aarch64.sve.smullb.lane.nxv4i32(<vscale x 8 x i16>, <vscale x 8 x i16>, i32)
1240 declare <vscale x 2 x i64> @llvm.aarch64.sve.smullb.lane.nxv2i64(<vscale x 4 x i32>, <vscale x 4 x i32>, i32)
1242 declare <vscale x 8 x i16> @llvm.aarch64.sve.smullt.nxv8i16(<vscale x 16 x i8>, <vscale x 16 x i8>)
1243 declare <vscale x 4 x i32> @llvm.aarch64.sve.smullt.nxv4i32(<vscale x 8 x i16>, <vscale x 8 x i16>)
1244 declare <vscale x 2 x i64> @llvm.aarch64.sve.smullt.nxv2i64(<vscale x 4 x i32>, <vscale x 4 x i32>)
1246 declare <vscale x 4 x i32> @llvm.aarch64.sve.smullt.lane.nxv4i32(<vscale x 8 x i16>, <vscale x 8 x i16>, i32)
1247 declare <vscale x 2 x i64> @llvm.aarch64.sve.smullt.lane.nxv2i64(<vscale x 4 x i32>, <vscale x 4 x i32>, i32)
1249 declare <vscale x 8 x i16> @llvm.aarch64.sve.sqdmullb.nxv8i16(<vscale x 16 x i8>, <vscale x 16 x i8>)
1250 declare <vscale x 4 x i32> @llvm.aarch64.sve.sqdmullb.nxv4i32(<vscale x 8 x i16>, <vscale x 8 x i16>)
1251 declare <vscale x 2 x i64> @llvm.aarch64.sve.sqdmullb.nxv2i64(<vscale x 4 x i32>, <vscale x 4 x i32>)
1253 declare <vscale x 4 x i32> @llvm.aarch64.sve.sqdmullb.lane.nxv4i32(<vscale x 8 x i16>, <vscale x 8 x i16>, i32)
1254 declare <vscale x 2 x i64> @llvm.aarch64.sve.sqdmullb.lane.nxv2i64(<vscale x 4 x i32>, <vscale x 4 x i32>, i32)
1256 declare <vscale x 8 x i16> @llvm.aarch64.sve.sqdmullt.nxv8i16(<vscale x 16 x i8>, <vscale x 16 x i8>)
1257 declare <vscale x 4 x i32> @llvm.aarch64.sve.sqdmullt.nxv4i32(<vscale x 8 x i16>, <vscale x 8 x i16>)
1258 declare <vscale x 2 x i64> @llvm.aarch64.sve.sqdmullt.nxv2i64(<vscale x 4 x i32>, <vscale x 4 x i32>)
1260 declare <vscale x 4 x i32> @llvm.aarch64.sve.sqdmullt.lane.nxv4i32(<vscale x 8 x i16>, <vscale x 8 x i16>, i32)
1261 declare <vscale x 2 x i64> @llvm.aarch64.sve.sqdmullt.lane.nxv2i64(<vscale x 4 x i32>, <vscale x 4 x i32>, i32)
1263 declare <vscale x 8 x i16> @llvm.aarch64.sve.sshllb.nxv8i16(<vscale x 16 x i8>, i32)
1264 declare <vscale x 4 x i32> @llvm.aarch64.sve.sshllb.nxv4i32(<vscale x 8 x i16>, i32)
1265 declare <vscale x 2 x i64> @llvm.aarch64.sve.sshllb.nxv2i64(<vscale x 4 x i32>, i32)
1267 declare <vscale x 8 x i16> @llvm.aarch64.sve.sshllt.nxv8i16(<vscale x 16 x i8>, i32)
1268 declare <vscale x 4 x i32> @llvm.aarch64.sve.sshllt.nxv4i32(<vscale x 8 x i16>, i32)
1269 declare <vscale x 2 x i64> @llvm.aarch64.sve.sshllt.nxv2i64(<vscale x 4 x i32>, i32)
1271 declare <vscale x 8 x i16> @llvm.aarch64.sve.ssublb.nxv8i16(<vscale x 16 x i8>, <vscale x 16 x i8>)
1272 declare <vscale x 4 x i32> @llvm.aarch64.sve.ssublb.nxv4i32(<vscale x 8 x i16>, <vscale x 8 x i16>)
1273 declare <vscale x 2 x i64> @llvm.aarch64.sve.ssublb.nxv2i64(<vscale x 4 x i32>, <vscale x 4 x i32>)
1275 declare <vscale x 8 x i16> @llvm.aarch64.sve.ssublt.nxv8i16(<vscale x 16 x i8>, <vscale x 16 x i8>)
1276 declare <vscale x 4 x i32> @llvm.aarch64.sve.ssublt.nxv4i32(<vscale x 8 x i16>, <vscale x 8 x i16>)
1277 declare <vscale x 2 x i64> @llvm.aarch64.sve.ssublt.nxv2i64(<vscale x 4 x i32>, <vscale x 4 x i32>)
1279 declare <vscale x 8 x i16> @llvm.aarch64.sve.ssubwb.nxv8i16(<vscale x 8 x i16>, <vscale x 16 x i8>)
1280 declare <vscale x 4 x i32> @llvm.aarch64.sve.ssubwb.nxv4i32(<vscale x 4 x i32>, <vscale x 8 x i16>)
1281 declare <vscale x 2 x i64> @llvm.aarch64.sve.ssubwb.nxv2i64(<vscale x 2 x i64>, <vscale x 4 x i32>)
1283 declare <vscale x 8 x i16> @llvm.aarch64.sve.ssubwt.nxv8i16(<vscale x 8 x i16>, <vscale x 16 x i8>)
1284 declare <vscale x 4 x i32> @llvm.aarch64.sve.ssubwt.nxv4i32(<vscale x 4 x i32>, <vscale x 8 x i16>)
1285 declare <vscale x 2 x i64> @llvm.aarch64.sve.ssubwt.nxv2i64(<vscale x 2 x i64>, <vscale x 4 x i32>)
1287 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>)
1288 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>)
1289 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>)
1291 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>)
1292 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>)
1293 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>)
1295 declare <vscale x 8 x i16> @llvm.aarch64.sve.uabdlb.nxv8i16(<vscale x 16 x i8>, <vscale x 16 x i8>)
1296 declare <vscale x 4 x i32> @llvm.aarch64.sve.uabdlb.nxv4i32(<vscale x 8 x i16>, <vscale x 8 x i16>)
1297 declare <vscale x 2 x i64> @llvm.aarch64.sve.uabdlb.nxv2i64(<vscale x 4 x i32>, <vscale x 4 x i32>)
1299 declare <vscale x 8 x i16> @llvm.aarch64.sve.uabdlt.nxv8i16(<vscale x 16 x i8>, <vscale x 16 x i8>)
1300 declare <vscale x 4 x i32> @llvm.aarch64.sve.uabdlt.nxv4i32(<vscale x 8 x i16>, <vscale x 8 x i16>)
1301 declare <vscale x 2 x i64> @llvm.aarch64.sve.uabdlt.nxv2i64(<vscale x 4 x i32>, <vscale x 4 x i32>)
1303 declare <vscale x 8 x i16> @llvm.aarch64.sve.uaddlb.nxv8i16(<vscale x 16 x i8>, <vscale x 16 x i8>)
1304 declare <vscale x 4 x i32> @llvm.aarch64.sve.uaddlb.nxv4i32(<vscale x 8 x i16>, <vscale x 8 x i16>)
1305 declare <vscale x 2 x i64> @llvm.aarch64.sve.uaddlb.nxv2i64(<vscale x 4 x i32>, <vscale x 4 x i32>)
1307 declare <vscale x 8 x i16> @llvm.aarch64.sve.uaddlt.nxv8i16(<vscale x 16 x i8>, <vscale x 16 x i8>)
1308 declare <vscale x 4 x i32> @llvm.aarch64.sve.uaddlt.nxv4i32(<vscale x 8 x i16>, <vscale x 8 x i16>)
1309 declare <vscale x 2 x i64> @llvm.aarch64.sve.uaddlt.nxv2i64(<vscale x 4 x i32>, <vscale x 4 x i32>)
1311 declare <vscale x 8 x i16> @llvm.aarch64.sve.uaddwb.nxv8i16(<vscale x 8 x i16>, <vscale x 16 x i8>)
1312 declare <vscale x 4 x i32> @llvm.aarch64.sve.uaddwb.nxv4i32(<vscale x 4 x i32>, <vscale x 8 x i16>)
1313 declare <vscale x 2 x i64> @llvm.aarch64.sve.uaddwb.nxv2i64(<vscale x 2 x i64>, <vscale x 4 x i32>)
1315 declare <vscale x 8 x i16> @llvm.aarch64.sve.uaddwt.nxv8i16(<vscale x 8 x i16>, <vscale x 16 x i8>)
1316 declare <vscale x 4 x i32> @llvm.aarch64.sve.uaddwt.nxv4i32(<vscale x 4 x i32>, <vscale x 8 x i16>)
1317 declare <vscale x 2 x i64> @llvm.aarch64.sve.uaddwt.nxv2i64(<vscale x 2 x i64>, <vscale x 4 x i32>)
1319 declare <vscale x 8 x i16> @llvm.aarch64.sve.umullb.nxv8i16(<vscale x 16 x i8>, <vscale x 16 x i8>)
1320 declare <vscale x 4 x i32> @llvm.aarch64.sve.umullb.nxv4i32(<vscale x 8 x i16>, <vscale x 8 x i16>)
1321 declare <vscale x 2 x i64> @llvm.aarch64.sve.umullb.nxv2i64(<vscale x 4 x i32>, <vscale x 4 x i32>)
1323 declare <vscale x 4 x i32> @llvm.aarch64.sve.umullb.lane.nxv4i32(<vscale x 8 x i16>, <vscale x 8 x i16>, i32)
1324 declare <vscale x 2 x i64> @llvm.aarch64.sve.umullb.lane.nxv2i64(<vscale x 4 x i32>, <vscale x 4 x i32>, i32)
1326 declare <vscale x 8 x i16> @llvm.aarch64.sve.umullt.nxv8i16(<vscale x 16 x i8>, <vscale x 16 x i8>)
1327 declare <vscale x 4 x i32> @llvm.aarch64.sve.umullt.nxv4i32(<vscale x 8 x i16>, <vscale x 8 x i16>)
1328 declare <vscale x 2 x i64> @llvm.aarch64.sve.umullt.nxv2i64(<vscale x 4 x i32>, <vscale x 4 x i32>)
1330 declare <vscale x 4 x i32> @llvm.aarch64.sve.umullt.lane.nxv4i32(<vscale x 8 x i16>, <vscale x 8 x i16>, i32)
1331 declare <vscale x 2 x i64> @llvm.aarch64.sve.umullt.lane.nxv2i64(<vscale x 4 x i32>, <vscale x 4 x i32>, i32)
1333 declare <vscale x 8 x i16> @llvm.aarch64.sve.ushllb.nxv8i16(<vscale x 16 x i8>, i32)
1334 declare <vscale x 4 x i32> @llvm.aarch64.sve.ushllb.nxv4i32(<vscale x 8 x i16>, i32)
1335 declare <vscale x 2 x i64> @llvm.aarch64.sve.ushllb.nxv2i64(<vscale x 4 x i32>, i32)
1337 declare <vscale x 8 x i16> @llvm.aarch64.sve.ushllt.nxv8i16(<vscale x 16 x i8>, i32)
1338 declare <vscale x 4 x i32> @llvm.aarch64.sve.ushllt.nxv4i32(<vscale x 8 x i16>, i32)
1339 declare <vscale x 2 x i64> @llvm.aarch64.sve.ushllt.nxv2i64(<vscale x 4 x i32>, i32)
1341 declare <vscale x 8 x i16> @llvm.aarch64.sve.usublb.nxv8i16(<vscale x 16 x i8>, <vscale x 16 x i8>)
1342 declare <vscale x 4 x i32> @llvm.aarch64.sve.usublb.nxv4i32(<vscale x 8 x i16>, <vscale x 8 x i16>)
1343 declare <vscale x 2 x i64> @llvm.aarch64.sve.usublb.nxv2i64(<vscale x 4 x i32>, <vscale x 4 x i32>)
1345 declare <vscale x 8 x i16> @llvm.aarch64.sve.usublt.nxv8i16(<vscale x 16 x i8>, <vscale x 16 x i8>)
1346 declare <vscale x 4 x i32> @llvm.aarch64.sve.usublt.nxv4i32(<vscale x 8 x i16>, <vscale x 8 x i16>)
1347 declare <vscale x 2 x i64> @llvm.aarch64.sve.usublt.nxv2i64(<vscale x 4 x i32>, <vscale x 4 x i32>)
1349 declare <vscale x 8 x i16> @llvm.aarch64.sve.usubwb.nxv8i16(<vscale x 8 x i16>, <vscale x 16 x i8>)
1350 declare <vscale x 4 x i32> @llvm.aarch64.sve.usubwb.nxv4i32(<vscale x 4 x i32>, <vscale x 8 x i16>)
1351 declare <vscale x 2 x i64> @llvm.aarch64.sve.usubwb.nxv2i64(<vscale x 2 x i64>, <vscale x 4 x i32>)
1353 declare <vscale x 8 x i16> @llvm.aarch64.sve.usubwt.nxv8i16(<vscale x 8 x i16>, <vscale x 16 x i8>)
1354 declare <vscale x 4 x i32> @llvm.aarch64.sve.usubwt.nxv4i32(<vscale x 4 x i32>, <vscale x 8 x i16>)
1355 declare <vscale x 2 x i64> @llvm.aarch64.sve.usubwt.nxv2i64(<vscale x 2 x i64>, <vscale x 4 x i32>)