1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -mtriple=aarch64-linux-gnu -mattr=+sve < %s | FileCheck %s
8 define <vscale x 16 x i8> @abs_i8(<vscale x 16 x i8> %a, <vscale x 16 x i1> %pg, <vscale x 16 x i8> %b) {
11 ; CHECK-NEXT: abs z0.b, p0/m, z1.b
13 %out = call <vscale x 16 x i8> @llvm.aarch64.sve.abs.nxv16i8(<vscale x 16 x i8> %a,
14 <vscale x 16 x i1> %pg,
15 <vscale x 16 x i8> %b)
16 ret <vscale x 16 x i8> %out
19 define <vscale x 8 x i16> @abs_i16(<vscale x 8 x i16> %a, <vscale x 8 x i1> %pg, <vscale x 8 x i16> %b) {
20 ; CHECK-LABEL: abs_i16:
22 ; CHECK-NEXT: abs z0.h, p0/m, z1.h
24 %out = call <vscale x 8 x i16> @llvm.aarch64.sve.abs.nxv8i16(<vscale x 8 x i16> %a,
25 <vscale x 8 x i1> %pg,
26 <vscale x 8 x i16> %b)
27 ret <vscale x 8 x i16> %out
30 define <vscale x 4 x i32> @abs_i32(<vscale x 4 x i32> %a, <vscale x 4 x i1> %pg, <vscale x 4 x i32> %b) {
31 ; CHECK-LABEL: abs_i32:
33 ; CHECK-NEXT: abs z0.s, p0/m, z1.s
35 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.abs.nxv4i32(<vscale x 4 x i32> %a,
36 <vscale x 4 x i1> %pg,
37 <vscale x 4 x i32> %b)
38 ret <vscale x 4 x i32> %out
41 define <vscale x 2 x i64> @abs_i64(<vscale x 2 x i64> %a, <vscale x 2 x i1> %pg, <vscale x 2 x i64> %b) {
42 ; CHECK-LABEL: abs_i64:
44 ; CHECK-NEXT: abs z0.d, p0/m, z1.d
46 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.abs.nxv2i64(<vscale x 2 x i64> %a,
47 <vscale x 2 x i1> %pg,
48 <vscale x 2 x i64> %b)
49 ret <vscale x 2 x i64> %out
56 define <vscale x 16 x i8> @neg_i8(<vscale x 16 x i8> %a, <vscale x 16 x i1> %pg, <vscale x 16 x i8> %b) {
57 ; CHECK-LABEL: neg_i8:
59 ; CHECK-NEXT: neg z0.b, p0/m, z1.b
61 %out = call <vscale x 16 x i8> @llvm.aarch64.sve.neg.nxv16i8(<vscale x 16 x i8> %a,
62 <vscale x 16 x i1> %pg,
63 <vscale x 16 x i8> %b)
64 ret <vscale x 16 x i8> %out
67 define <vscale x 8 x i16> @neg_i16(<vscale x 8 x i16> %a, <vscale x 8 x i1> %pg, <vscale x 8 x i16> %b) {
68 ; CHECK-LABEL: neg_i16:
70 ; CHECK-NEXT: neg z0.h, p0/m, z1.h
72 %out = call <vscale x 8 x i16> @llvm.aarch64.sve.neg.nxv8i16(<vscale x 8 x i16> %a,
73 <vscale x 8 x i1> %pg,
74 <vscale x 8 x i16> %b)
75 ret <vscale x 8 x i16> %out
78 define <vscale x 4 x i32> @neg_i32(<vscale x 4 x i32> %a, <vscale x 4 x i1> %pg, <vscale x 4 x i32> %b) {
79 ; CHECK-LABEL: neg_i32:
81 ; CHECK-NEXT: neg z0.s, p0/m, z1.s
83 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.neg.nxv4i32(<vscale x 4 x i32> %a,
84 <vscale x 4 x i1> %pg,
85 <vscale x 4 x i32> %b)
86 ret <vscale x 4 x i32> %out
89 define <vscale x 2 x i64> @neg_i64(<vscale x 2 x i64> %a, <vscale x 2 x i1> %pg, <vscale x 2 x i64> %b) {
90 ; CHECK-LABEL: neg_i64:
92 ; CHECK-NEXT: neg z0.d, p0/m, z1.d
94 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.neg.nxv2i64(<vscale x 2 x i64> %a,
95 <vscale x 2 x i1> %pg,
96 <vscale x 2 x i64> %b)
97 ret <vscale x 2 x i64> %out
102 define <vscale x 4 x i32> @sdot_i32(<vscale x 4 x i32> %a, <vscale x 16 x i8> %b, <vscale x 16 x i8> %c) {
103 ; CHECK-LABEL: sdot_i32:
105 ; CHECK-NEXT: sdot z0.s, z1.b, z2.b
107 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.sdot.nxv4i32(<vscale x 4 x i32> %a,
108 <vscale x 16 x i8> %b,
109 <vscale x 16 x i8> %c)
110 ret <vscale x 4 x i32> %out
113 define <vscale x 2 x i64> @sdot_i64(<vscale x 2 x i64> %a, <vscale x 8 x i16> %b, <vscale x 8 x i16> %c) {
114 ; CHECK-LABEL: sdot_i64:
116 ; CHECK-NEXT: sdot z0.d, z1.h, z2.h
118 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.sdot.nxv2i64(<vscale x 2 x i64> %a,
119 <vscale x 8 x i16> %b,
120 <vscale x 8 x i16> %c)
121 ret <vscale x 2 x i64> %out
124 define <vscale x 2 x i64> @test_sdot_i64_zero(<vscale x 2 x i64> %a, <vscale x 8 x i16> %b, <vscale x 8 x i16> %c) {
125 ; CHECK-LABEL: test_sdot_i64_zero:
126 ; CHECK: // %bb.0: // %entry
127 ; CHECK-NEXT: sdot z0.d, z1.h, z2.h
130 %vdot1.i = call <vscale x 2 x i64> @llvm.aarch64.sve.sdot.nxv2i64(<vscale x 2 x i64> zeroinitializer, <vscale x 8 x i16> %b, <vscale x 8 x i16> %c)
131 %ret = add <vscale x 2 x i64> %vdot1.i, %a
132 ret <vscale x 2 x i64> %ret
135 define <vscale x 4 x i32> @test_sdot_i32_zero(<vscale x 4 x i32> %a, <vscale x 16 x i8> %b, <vscale x 16 x i8> %c) {
136 ; CHECK-LABEL: test_sdot_i32_zero:
137 ; CHECK: // %bb.0: // %entry
138 ; CHECK-NEXT: sdot z0.s, z1.b, z2.b
141 %vdot1.i = call <vscale x 4 x i32> @llvm.aarch64.sve.sdot.nxv4i32(<vscale x 4 x i32> zeroinitializer, <vscale x 16 x i8> %b, <vscale x 16 x i8> %c)
142 %ret = add <vscale x 4 x i32> %vdot1.i, %a
143 ret <vscale x 4 x i32> %ret
148 define <vscale x 4 x i32> @sdot_lane_i32(<vscale x 4 x i32> %a, <vscale x 16 x i8> %b, <vscale x 16 x i8> %c) {
149 ; CHECK-LABEL: sdot_lane_i32:
151 ; CHECK-NEXT: sdot z0.s, z1.b, z2.b[2]
153 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.sdot.lane.nxv4i32(<vscale x 4 x i32> %a,
154 <vscale x 16 x i8> %b,
155 <vscale x 16 x i8> %c,
157 ret <vscale x 4 x i32> %out
160 define <vscale x 2 x i64> @sdot_lane_i64(<vscale x 2 x i64> %a, <vscale x 8 x i16> %b, <vscale x 8 x i16> %c) {
161 ; CHECK-LABEL: sdot_lane_i64:
163 ; CHECK-NEXT: sdot z0.d, z1.h, z2.h[1]
165 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.sdot.lane.nxv2i64(<vscale x 2 x i64> %a,
166 <vscale x 8 x i16> %b,
167 <vscale x 8 x i16> %c,
169 ret <vscale x 2 x i64> %out
174 define <vscale x 16 x i8> @sqadd_i8(<vscale x 16 x i8> %a, <vscale x 16 x i8> %b) {
175 ; CHECK-LABEL: sqadd_i8:
177 ; CHECK-NEXT: sqadd z0.b, z0.b, z1.b
179 %out = call <vscale x 16 x i8> @llvm.aarch64.sve.sqadd.x.nxv16i8(<vscale x 16 x i8> %a,
180 <vscale x 16 x i8> %b)
181 ret <vscale x 16 x i8> %out
184 define <vscale x 8 x i16> @sqadd_i16(<vscale x 8 x i16> %a, <vscale x 8 x i16> %b) {
185 ; CHECK-LABEL: sqadd_i16:
187 ; CHECK-NEXT: sqadd z0.h, z0.h, z1.h
189 %out = call <vscale x 8 x i16> @llvm.aarch64.sve.sqadd.x.nxv8i16(<vscale x 8 x i16> %a,
190 <vscale x 8 x i16> %b)
191 ret <vscale x 8 x i16> %out
194 define <vscale x 4 x i32> @sqadd_i32(<vscale x 4 x i32> %a, <vscale x 4 x i32> %b) {
195 ; CHECK-LABEL: sqadd_i32:
197 ; CHECK-NEXT: sqadd z0.s, z0.s, z1.s
199 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.sqadd.x.nxv4i32(<vscale x 4 x i32> %a,
200 <vscale x 4 x i32> %b)
201 ret <vscale x 4 x i32> %out
204 define <vscale x 2 x i64> @sqadd_i64(<vscale x 2 x i64> %a, <vscale x 2 x i64> %b) {
205 ; CHECK-LABEL: sqadd_i64:
207 ; CHECK-NEXT: sqadd z0.d, z0.d, z1.d
209 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.sqadd.x.nxv2i64(<vscale x 2 x i64> %a,
210 <vscale x 2 x i64> %b)
211 ret <vscale x 2 x i64> %out
216 define <vscale x 16 x i8> @sqsub_i8(<vscale x 16 x i8> %a, <vscale x 16 x i8> %b) {
217 ; CHECK-LABEL: sqsub_i8:
219 ; CHECK-NEXT: sqsub z0.b, z0.b, z1.b
221 %out = call <vscale x 16 x i8> @llvm.aarch64.sve.sqsub.x.nxv16i8(<vscale x 16 x i8> %a,
222 <vscale x 16 x i8> %b)
223 ret <vscale x 16 x i8> %out
226 define <vscale x 8 x i16> @sqsub_i16(<vscale x 8 x i16> %a, <vscale x 8 x i16> %b) {
227 ; CHECK-LABEL: sqsub_i16:
229 ; CHECK-NEXT: sqsub z0.h, z0.h, z1.h
231 %out = call <vscale x 8 x i16> @llvm.aarch64.sve.sqsub.x.nxv8i16(<vscale x 8 x i16> %a,
232 <vscale x 8 x i16> %b)
233 ret <vscale x 8 x i16> %out
236 define <vscale x 4 x i32> @sqsub_i32(<vscale x 4 x i32> %a, <vscale x 4 x i32> %b) {
237 ; CHECK-LABEL: sqsub_i32:
239 ; CHECK-NEXT: sqsub z0.s, z0.s, z1.s
241 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.sqsub.x.nxv4i32(<vscale x 4 x i32> %a,
242 <vscale x 4 x i32> %b)
243 ret <vscale x 4 x i32> %out
246 define <vscale x 2 x i64> @sqsub_i64(<vscale x 2 x i64> %a, <vscale x 2 x i64> %b) {
247 ; CHECK-LABEL: sqsub_i64:
249 ; CHECK-NEXT: sqsub z0.d, z0.d, z1.d
251 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.sqsub.x.nxv2i64(<vscale x 2 x i64> %a,
252 <vscale x 2 x i64> %b)
253 ret <vscale x 2 x i64> %out
258 define <vscale x 4 x i32> @udot_i32(<vscale x 4 x i32> %a, <vscale x 16 x i8> %b, <vscale x 16 x i8> %c) {
259 ; CHECK-LABEL: udot_i32:
261 ; CHECK-NEXT: udot z0.s, z1.b, z2.b
263 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.udot.nxv4i32(<vscale x 4 x i32> %a,
264 <vscale x 16 x i8> %b,
265 <vscale x 16 x i8> %c)
266 ret <vscale x 4 x i32> %out
269 define <vscale x 2 x i64> @udot_i64(<vscale x 2 x i64> %a, <vscale x 8 x i16> %b, <vscale x 8 x i16> %c) {
270 ; CHECK-LABEL: udot_i64:
272 ; CHECK-NEXT: udot z0.d, z1.h, z2.h
274 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.udot.nxv2i64(<vscale x 2 x i64> %a,
275 <vscale x 8 x i16> %b,
276 <vscale x 8 x i16> %c)
277 ret <vscale x 2 x i64> %out
280 define <vscale x 2 x i64> @test_udot_i64_zero(<vscale x 2 x i64> %a, <vscale x 8 x i16> %b, <vscale x 8 x i16> %c) {
281 ; CHECK-LABEL: test_udot_i64_zero:
282 ; CHECK: // %bb.0: // %entry
283 ; CHECK-NEXT: udot z0.d, z1.h, z2.h
286 %vdot1.i = call <vscale x 2 x i64> @llvm.aarch64.sve.udot.nxv2i64(<vscale x 2 x i64> zeroinitializer, <vscale x 8 x i16> %b, <vscale x 8 x i16> %c)
287 %ret = add <vscale x 2 x i64> %vdot1.i, %a
288 ret <vscale x 2 x i64> %ret
291 define <vscale x 4 x i32> @test_udot_i32_zero(<vscale x 4 x i32> %a, <vscale x 16 x i8> %b, <vscale x 16 x i8> %c) {
292 ; CHECK-LABEL: test_udot_i32_zero:
293 ; CHECK: // %bb.0: // %entry
294 ; CHECK-NEXT: udot z0.s, z1.b, z2.b
297 %vdot1.i = call <vscale x 4 x i32> @llvm.aarch64.sve.udot.nxv4i32(<vscale x 4 x i32> zeroinitializer, <vscale x 16 x i8> %b, <vscale x 16 x i8> %c)
298 %ret = add <vscale x 4 x i32> %vdot1.i, %a
299 ret <vscale x 4 x i32> %ret
304 define <vscale x 4 x i32> @udot_lane_i32(<vscale x 4 x i32> %a, <vscale x 16 x i8> %b, <vscale x 16 x i8> %c) {
305 ; CHECK-LABEL: udot_lane_i32:
307 ; CHECK-NEXT: udot z0.s, z1.b, z2.b[2]
309 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.udot.lane.nxv4i32(<vscale x 4 x i32> %a,
310 <vscale x 16 x i8> %b,
311 <vscale x 16 x i8> %c,
313 ret <vscale x 4 x i32> %out
318 define <vscale x 16 x i8> @uqadd_i8(<vscale x 16 x i8> %a, <vscale x 16 x i8> %b) {
319 ; CHECK-LABEL: uqadd_i8:
321 ; CHECK-NEXT: uqadd z0.b, z0.b, z1.b
323 %out = call <vscale x 16 x i8> @llvm.aarch64.sve.uqadd.x.nxv16i8(<vscale x 16 x i8> %a,
324 <vscale x 16 x i8> %b)
325 ret <vscale x 16 x i8> %out
328 define <vscale x 8 x i16> @uqadd_i16(<vscale x 8 x i16> %a, <vscale x 8 x i16> %b) {
329 ; CHECK-LABEL: uqadd_i16:
331 ; CHECK-NEXT: uqadd z0.h, z0.h, z1.h
333 %out = call <vscale x 8 x i16> @llvm.aarch64.sve.uqadd.x.nxv8i16(<vscale x 8 x i16> %a,
334 <vscale x 8 x i16> %b)
335 ret <vscale x 8 x i16> %out
338 define <vscale x 4 x i32> @uqadd_i32(<vscale x 4 x i32> %a, <vscale x 4 x i32> %b) {
339 ; CHECK-LABEL: uqadd_i32:
341 ; CHECK-NEXT: uqadd z0.s, z0.s, z1.s
343 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.uqadd.x.nxv4i32(<vscale x 4 x i32> %a,
344 <vscale x 4 x i32> %b)
345 ret <vscale x 4 x i32> %out
348 define <vscale x 2 x i64> @uqadd_i64(<vscale x 2 x i64> %a, <vscale x 2 x i64> %b) {
349 ; CHECK-LABEL: uqadd_i64:
351 ; CHECK-NEXT: uqadd z0.d, z0.d, z1.d
353 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.uqadd.x.nxv2i64(<vscale x 2 x i64> %a,
354 <vscale x 2 x i64> %b)
355 ret <vscale x 2 x i64> %out
360 define <vscale x 16 x i8> @uqsub_i8(<vscale x 16 x i8> %a, <vscale x 16 x i8> %b) {
361 ; CHECK-LABEL: uqsub_i8:
363 ; CHECK-NEXT: uqsub z0.b, z0.b, z1.b
365 %out = call <vscale x 16 x i8> @llvm.aarch64.sve.uqsub.x.nxv16i8(<vscale x 16 x i8> %a,
366 <vscale x 16 x i8> %b)
367 ret <vscale x 16 x i8> %out
370 define <vscale x 8 x i16> @uqsub_i16(<vscale x 8 x i16> %a, <vscale x 8 x i16> %b) {
371 ; CHECK-LABEL: uqsub_i16:
373 ; CHECK-NEXT: uqsub z0.h, z0.h, z1.h
375 %out = call <vscale x 8 x i16> @llvm.aarch64.sve.uqsub.x.nxv8i16(<vscale x 8 x i16> %a,
376 <vscale x 8 x i16> %b)
377 ret <vscale x 8 x i16> %out
380 define <vscale x 4 x i32> @uqsub_i32(<vscale x 4 x i32> %a, <vscale x 4 x i32> %b) {
381 ; CHECK-LABEL: uqsub_i32:
383 ; CHECK-NEXT: uqsub z0.s, z0.s, z1.s
385 %out = call <vscale x 4 x i32> @llvm.aarch64.sve.uqsub.x.nxv4i32(<vscale x 4 x i32> %a,
386 <vscale x 4 x i32> %b)
387 ret <vscale x 4 x i32> %out
390 define <vscale x 2 x i64> @uqsub_i64(<vscale x 2 x i64> %a, <vscale x 2 x i64> %b) {
391 ; CHECK-LABEL: uqsub_i64:
393 ; CHECK-NEXT: uqsub z0.d, z0.d, z1.d
395 %out = call <vscale x 2 x i64> @llvm.aarch64.sve.uqsub.x.nxv2i64(<vscale x 2 x i64> %a,
396 <vscale x 2 x i64> %b)
397 ret <vscale x 2 x i64> %out
400 declare <vscale x 16 x i8> @llvm.aarch64.sve.abs.nxv16i8(<vscale x 16 x i8>, <vscale x 16 x i1>, <vscale x 16 x i8>)
401 declare <vscale x 8 x i16> @llvm.aarch64.sve.abs.nxv8i16(<vscale x 8 x i16>, <vscale x 8 x i1>, <vscale x 8 x i16>)
402 declare <vscale x 4 x i32> @llvm.aarch64.sve.abs.nxv4i32(<vscale x 4 x i32>, <vscale x 4 x i1>, <vscale x 4 x i32>)
403 declare <vscale x 2 x i64> @llvm.aarch64.sve.abs.nxv2i64(<vscale x 2 x i64>, <vscale x 2 x i1>, <vscale x 2 x i64>)
405 declare <vscale x 16 x i8> @llvm.aarch64.sve.neg.nxv16i8(<vscale x 16 x i8>, <vscale x 16 x i1>, <vscale x 16 x i8>)
406 declare <vscale x 8 x i16> @llvm.aarch64.sve.neg.nxv8i16(<vscale x 8 x i16>, <vscale x 8 x i1>, <vscale x 8 x i16>)
407 declare <vscale x 4 x i32> @llvm.aarch64.sve.neg.nxv4i32(<vscale x 4 x i32>, <vscale x 4 x i1>, <vscale x 4 x i32>)
408 declare <vscale x 2 x i64> @llvm.aarch64.sve.neg.nxv2i64(<vscale x 2 x i64>, <vscale x 2 x i1>, <vscale x 2 x i64>)
410 declare <vscale x 4 x i32> @llvm.aarch64.sve.sdot.nxv4i32(<vscale x 4 x i32>, <vscale x 16 x i8>, <vscale x 16 x i8>)
411 declare <vscale x 2 x i64> @llvm.aarch64.sve.sdot.nxv2i64(<vscale x 2 x i64>, <vscale x 8 x i16>, <vscale x 8 x i16>)
413 declare <vscale x 4 x i32> @llvm.aarch64.sve.sdot.lane.nxv4i32(<vscale x 4 x i32>, <vscale x 16 x i8>, <vscale x 16 x i8>, i32)
414 declare <vscale x 2 x i64> @llvm.aarch64.sve.sdot.lane.nxv2i64(<vscale x 2 x i64>, <vscale x 8 x i16>, <vscale x 8 x i16>, i32)
416 declare <vscale x 16 x i8> @llvm.aarch64.sve.sqadd.x.nxv16i8(<vscale x 16 x i8>, <vscale x 16 x i8>)
417 declare <vscale x 8 x i16> @llvm.aarch64.sve.sqadd.x.nxv8i16(<vscale x 8 x i16>, <vscale x 8 x i16>)
418 declare <vscale x 4 x i32> @llvm.aarch64.sve.sqadd.x.nxv4i32(<vscale x 4 x i32>, <vscale x 4 x i32>)
419 declare <vscale x 2 x i64> @llvm.aarch64.sve.sqadd.x.nxv2i64(<vscale x 2 x i64>, <vscale x 2 x i64>)
421 declare <vscale x 16 x i8> @llvm.aarch64.sve.sqsub.x.nxv16i8(<vscale x 16 x i8>, <vscale x 16 x i8>)
422 declare <vscale x 8 x i16> @llvm.aarch64.sve.sqsub.x.nxv8i16(<vscale x 8 x i16>, <vscale x 8 x i16>)
423 declare <vscale x 4 x i32> @llvm.aarch64.sve.sqsub.x.nxv4i32(<vscale x 4 x i32>, <vscale x 4 x i32>)
424 declare <vscale x 2 x i64> @llvm.aarch64.sve.sqsub.x.nxv2i64(<vscale x 2 x i64>, <vscale x 2 x i64>)
426 declare <vscale x 4 x i32> @llvm.aarch64.sve.udot.nxv4i32(<vscale x 4 x i32>, <vscale x 16 x i8>, <vscale x 16 x i8>)
427 declare <vscale x 2 x i64> @llvm.aarch64.sve.udot.nxv2i64(<vscale x 2 x i64>, <vscale x 8 x i16>, <vscale x 8 x i16>)
429 declare <vscale x 4 x i32> @llvm.aarch64.sve.udot.lane.nxv4i32(<vscale x 4 x i32>, <vscale x 16 x i8>, <vscale x 16 x i8>, i32)
430 declare <vscale x 2 x i64> @llvm.aarch64.sve.udot.lane.nxv2i64(<vscale x 2 x i64>, <vscale x 8 x i16>, <vscale x 8 x i16>, i32)
432 declare <vscale x 16 x i8> @llvm.aarch64.sve.uqadd.x.nxv16i8(<vscale x 16 x i8>, <vscale x 16 x i8>)
433 declare <vscale x 8 x i16> @llvm.aarch64.sve.uqadd.x.nxv8i16(<vscale x 8 x i16>, <vscale x 8 x i16>)
434 declare <vscale x 4 x i32> @llvm.aarch64.sve.uqadd.x.nxv4i32(<vscale x 4 x i32>, <vscale x 4 x i32>)
435 declare <vscale x 2 x i64> @llvm.aarch64.sve.uqadd.x.nxv2i64(<vscale x 2 x i64>, <vscale x 2 x i64>)
437 declare <vscale x 16 x i8> @llvm.aarch64.sve.uqsub.x.nxv16i8(<vscale x 16 x i8>, <vscale x 16 x i8>)
438 declare <vscale x 8 x i16> @llvm.aarch64.sve.uqsub.x.nxv8i16(<vscale x 8 x i16>, <vscale x 8 x i16>)
439 declare <vscale x 4 x i32> @llvm.aarch64.sve.uqsub.x.nxv4i32(<vscale x 4 x i32>, <vscale x 4 x i32>)
440 declare <vscale x 2 x i64> @llvm.aarch64.sve.uqsub.x.nxv2i64(<vscale x 2 x i64>, <vscale x 2 x i64>)