[Instrumentation] Fix a warning
[llvm-project.git] / llvm / test / CodeGen / AArch64 / sve-intrinsics-int-compares-with-imm.ll
blobbb72f0506690b337aba0e2c45f7979e08c07de6e
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
4 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
5 ;;                             Signed Comparisons                             ;;
6 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
9 ; CMPEQ
12 define <vscale x 16 x i1> @ir_cmpeq_b(<vscale x 16 x i8> %a) {
13 ; CHECK-LABEL: ir_cmpeq_b:
14 ; CHECK:       // %bb.0:
15 ; CHECK-NEXT:    ptrue p0.b
16 ; CHECK-NEXT:    cmpeq p0.b, p0/z, z0.b, #4
17 ; CHECK-NEXT:    ret
18   %out = icmp eq <vscale x 16 x i8> %a, splat(i8 4)
19   ret <vscale x 16 x i1> %out
22 define <vscale x 16 x i1> @int_cmpeq_b(<vscale x 16 x i1> %pg, <vscale x 16 x i8> %a) {
23 ; CHECK-LABEL: int_cmpeq_b:
24 ; CHECK:       // %bb.0:
25 ; CHECK-NEXT:    cmpeq p0.b, p0/z, z0.b, #4
26 ; CHECK-NEXT:    ret
27   %out = call <vscale x 16 x i1> @llvm.aarch64.sve.cmpeq.nxv16i8(<vscale x 16 x i1> %pg,
28                                                                  <vscale x 16 x i8> %a,
29                                                                  <vscale x 16 x i8> splat(i8 4))
30   ret <vscale x 16 x i1> %out
33 define <vscale x 16 x i1> @wide_cmpeq_b(<vscale x 16 x i1> %pg, <vscale x 16 x i8> %a) {
34 ; CHECK-LABEL: wide_cmpeq_b:
35 ; CHECK:       // %bb.0:
36 ; CHECK-NEXT:    cmpeq p0.b, p0/z, z0.b, #4
37 ; CHECK-NEXT:    ret
38   %out = call <vscale x 16 x i1> @llvm.aarch64.sve.cmpeq.wide.nxv16i8(<vscale x 16 x i1> %pg,
39                                                                       <vscale x 16 x i8> %a,
40                                                                       <vscale x 2 x i64> splat(i64 4))
41   ret <vscale x 16 x i1> %out
44 define <vscale x 8 x i1> @ir_cmpeq_h(<vscale x 8 x i16> %a) {
45 ; CHECK-LABEL: ir_cmpeq_h:
46 ; CHECK:       // %bb.0:
47 ; CHECK-NEXT:    ptrue p0.h
48 ; CHECK-NEXT:    cmpeq p0.h, p0/z, z0.h, #-16
49 ; CHECK-NEXT:    ret
50   %out = icmp eq <vscale x 8 x i16> %a, splat(i16 -16)
51   ret <vscale x 8 x i1> %out
54 define <vscale x 8 x i1> @int_cmpeq_h(<vscale x 8 x i1> %pg, <vscale x 8 x i16> %a) {
55 ; CHECK-LABEL: int_cmpeq_h:
56 ; CHECK:       // %bb.0:
57 ; CHECK-NEXT:    cmpeq p0.h, p0/z, z0.h, #-16
58 ; CHECK-NEXT:    ret
59   %out = call <vscale x 8 x i1> @llvm.aarch64.sve.cmpeq.nxv8i16(<vscale x 8 x i1> %pg,
60                                                                 <vscale x 8 x i16> %a,
61                                                                 <vscale x 8 x i16> splat(i16 -16))
62   ret <vscale x 8 x i1> %out
65 define <vscale x 8 x i1> @wide_cmpeq_h(<vscale x 8 x i1> %pg, <vscale x 8 x i16> %a) {
66 ; CHECK-LABEL: wide_cmpeq_h:
67 ; CHECK:       // %bb.0:
68 ; CHECK-NEXT:    cmpeq p0.h, p0/z, z0.h, #-16
69 ; CHECK-NEXT:    ret
70   %out = call <vscale x 8 x i1> @llvm.aarch64.sve.cmpeq.wide.nxv8i16(<vscale x 8 x i1> %pg,
71                                                                      <vscale x 8 x i16> %a,
72                                                                      <vscale x 2 x i64> splat(i64 -16))
73   ret <vscale x 8 x i1> %out
76 define <vscale x 4 x i1> @ir_cmpeq_s(<vscale x 4 x i32> %a) {
77 ; CHECK-LABEL: ir_cmpeq_s:
78 ; CHECK:       // %bb.0:
79 ; CHECK-NEXT:    ptrue p0.s
80 ; CHECK-NEXT:    cmpeq p0.s, p0/z, z0.s, #15
81 ; CHECK-NEXT:    ret
82   %out = icmp eq <vscale x 4 x i32> %a, splat(i32 15)
83   ret <vscale x 4 x i1> %out
86 define <vscale x 4 x i1> @int_cmpeq_s(<vscale x 4 x i1> %pg, <vscale x 4 x i32> %a) {
87 ; CHECK-LABEL: int_cmpeq_s:
88 ; CHECK:       // %bb.0:
89 ; CHECK-NEXT:    cmpeq p0.s, p0/z, z0.s, #15
90 ; CHECK-NEXT:    ret
91   %out = call <vscale x 4 x i1> @llvm.aarch64.sve.cmpeq.nxv4i32(<vscale x 4 x i1> %pg,
92                                                                 <vscale x 4 x i32> %a,
93                                                                 <vscale x 4 x i32> splat(i32 15))
94   ret <vscale x 4 x i1> %out
97 define <vscale x 4 x i1> @wide_cmpeq_s(<vscale x 4 x i1> %pg, <vscale x 4 x i32> %a) {
98 ; CHECK-LABEL: wide_cmpeq_s:
99 ; CHECK:       // %bb.0:
100 ; CHECK-NEXT:    cmpeq p0.s, p0/z, z0.s, #15
101 ; CHECK-NEXT:    ret
102   %out = call <vscale x 4 x i1> @llvm.aarch64.sve.cmpeq.wide.nxv4i32(<vscale x 4 x i1> %pg,
103                                                                      <vscale x 4 x i32> %a,
104                                                                      <vscale x 2 x i64> splat(i64 15))
105   ret <vscale x 4 x i1> %out
108 define <vscale x 2 x i1> @ir_cmpeq_d(<vscale x 2 x i64> %a) {
109 ; CHECK-LABEL: ir_cmpeq_d:
110 ; CHECK:       // %bb.0:
111 ; CHECK-NEXT:    ptrue p0.d
112 ; CHECK-NEXT:    cmpeq p0.d, p0/z, z0.d, #0
113 ; CHECK-NEXT:    ret
114   %out = icmp eq <vscale x 2 x i64> %a, zeroinitializer
115   ret <vscale x 2 x i1> %out
118 define <vscale x 2 x i1> @int_cmpeq_d(<vscale x 2 x i1> %pg, <vscale x 2 x i64> %a) {
119 ; CHECK-LABEL: int_cmpeq_d:
120 ; CHECK:       // %bb.0:
121 ; CHECK-NEXT:    cmpeq p0.d, p0/z, z0.d, #0
122 ; CHECK-NEXT:    ret
123   %out = call <vscale x 2 x i1> @llvm.aarch64.sve.cmpeq.nxv2i64(<vscale x 2 x i1> %pg,
124                                                                 <vscale x 2 x i64> %a,
125                                                                 <vscale x 2 x i64> zeroinitializer)
126   ret <vscale x 2 x i1> %out
130 ; CMPGE
133 define <vscale x 16 x i1> @ir_cmpge_b(<vscale x 16 x i8> %a) {
134 ; CHECK-LABEL: ir_cmpge_b:
135 ; CHECK:       // %bb.0:
136 ; CHECK-NEXT:    ptrue p0.b
137 ; CHECK-NEXT:    cmpge p0.b, p0/z, z0.b, #4
138 ; CHECK-NEXT:    ret
139   %out = icmp sge <vscale x 16 x i8> %a, splat(i8 4)
140   ret <vscale x 16 x i1> %out
143 define <vscale x 16 x i1> @int_cmpge_b(<vscale x 16 x i1> %pg, <vscale x 16 x i8> %a) {
144 ; CHECK-LABEL: int_cmpge_b:
145 ; CHECK:       // %bb.0:
146 ; CHECK-NEXT:    cmpge p0.b, p0/z, z0.b, #4
147 ; CHECK-NEXT:    ret
148   %out = call <vscale x 16 x i1> @llvm.aarch64.sve.cmpge.nxv16i8(<vscale x 16 x i1> %pg,
149                                                                  <vscale x 16 x i8> %a,
150                                                                  <vscale x 16 x i8> splat(i8 4))
151   ret <vscale x 16 x i1> %out
154 define <vscale x 16 x i1> @wide_cmpge_b(<vscale x 16 x i1> %pg, <vscale x 16 x i8> %a) {
155 ; CHECK-LABEL: wide_cmpge_b:
156 ; CHECK:       // %bb.0:
157 ; CHECK-NEXT:    cmpge p0.b, p0/z, z0.b, #4
158 ; CHECK-NEXT:    ret
159   %out = call <vscale x 16 x i1> @llvm.aarch64.sve.cmpge.wide.nxv16i8(<vscale x 16 x i1> %pg,
160                                                                       <vscale x 16 x i8> %a,
161                                                                       <vscale x 2 x i64> splat(i64 4))
162   ret <vscale x 16 x i1> %out
165 define <vscale x 8 x i1> @ir_cmpge_h(<vscale x 8 x i16> %a) {
166 ; CHECK-LABEL: ir_cmpge_h:
167 ; CHECK:       // %bb.0:
168 ; CHECK-NEXT:    ptrue p0.h
169 ; CHECK-NEXT:    cmpge p0.h, p0/z, z0.h, #-16
170 ; CHECK-NEXT:    ret
171   %out = icmp sge <vscale x 8 x i16> %a, splat(i16 -16)
172   ret <vscale x 8 x i1> %out
175 define <vscale x 8 x i1> @int_cmpge_h(<vscale x 8 x i1> %pg, <vscale x 8 x i16> %a) {
176 ; CHECK-LABEL: int_cmpge_h:
177 ; CHECK:       // %bb.0:
178 ; CHECK-NEXT:    cmpge p0.h, p0/z, z0.h, #-16
179 ; CHECK-NEXT:    ret
180   %out = call <vscale x 8 x i1> @llvm.aarch64.sve.cmpge.nxv8i16(<vscale x 8 x i1> %pg,
181                                                                 <vscale x 8 x i16> %a,
182                                                                 <vscale x 8 x i16> splat(i16 -16))
183   ret <vscale x 8 x i1> %out
186 define <vscale x 8 x i1> @wide_cmpge_h(<vscale x 8 x i1> %pg, <vscale x 8 x i16> %a) {
187 ; CHECK-LABEL: wide_cmpge_h:
188 ; CHECK:       // %bb.0:
189 ; CHECK-NEXT:    cmpge p0.h, p0/z, z0.h, #-16
190 ; CHECK-NEXT:    ret
191   %out = call <vscale x 8 x i1> @llvm.aarch64.sve.cmpge.wide.nxv8i16(<vscale x 8 x i1> %pg,
192                                                                      <vscale x 8 x i16> %a,
193                                                                      <vscale x 2 x i64> splat(i64 -16))
194   ret <vscale x 8 x i1> %out
197 define <vscale x 4 x i1> @ir_cmpge_s(<vscale x 4 x i32> %a) {
198 ; CHECK-LABEL: ir_cmpge_s:
199 ; CHECK:       // %bb.0:
200 ; CHECK-NEXT:    ptrue p0.s
201 ; CHECK-NEXT:    cmpge p0.s, p0/z, z0.s, #15
202 ; CHECK-NEXT:    ret
203   %out = icmp sge <vscale x 4 x i32> %a, splat(i32 15)
204   ret <vscale x 4 x i1> %out
207 define <vscale x 4 x i1> @int_cmpge_s(<vscale x 4 x i1> %pg, <vscale x 4 x i32> %a) {
208 ; CHECK-LABEL: int_cmpge_s:
209 ; CHECK:       // %bb.0:
210 ; CHECK-NEXT:    cmpge p0.s, p0/z, z0.s, #15
211 ; CHECK-NEXT:    ret
212   %out = call <vscale x 4 x i1> @llvm.aarch64.sve.cmpge.nxv4i32(<vscale x 4 x i1> %pg,
213                                                                 <vscale x 4 x i32> %a,
214                                                                 <vscale x 4 x i32> splat(i32 15))
215   ret <vscale x 4 x i1> %out
218 define <vscale x 4 x i1> @wide_cmpge_s(<vscale x 4 x i1> %pg, <vscale x 4 x i32> %a) {
219 ; CHECK-LABEL: wide_cmpge_s:
220 ; CHECK:       // %bb.0:
221 ; CHECK-NEXT:    cmpge p0.s, p0/z, z0.s, #15
222 ; CHECK-NEXT:    ret
223   %out = call <vscale x 4 x i1> @llvm.aarch64.sve.cmpge.wide.nxv4i32(<vscale x 4 x i1> %pg,
224                                                                      <vscale x 4 x i32> %a,
225                                                                      <vscale x 2 x i64> splat(i64 15))
226   ret <vscale x 4 x i1> %out
229 define <vscale x 2 x i1> @ir_cmpge_d(<vscale x 2 x i64> %a) {
230 ; CHECK-LABEL: ir_cmpge_d:
231 ; CHECK:       // %bb.0:
232 ; CHECK-NEXT:    ptrue p0.d
233 ; CHECK-NEXT:    cmpge p0.d, p0/z, z0.d, #0
234 ; CHECK-NEXT:    ret
235   %out = icmp sge <vscale x 2 x i64> %a, zeroinitializer
236   ret <vscale x 2 x i1> %out
239 define <vscale x 2 x i1> @int_cmpge_d(<vscale x 2 x i1> %pg, <vscale x 2 x i64> %a) {
240 ; CHECK-LABEL: int_cmpge_d:
241 ; CHECK:       // %bb.0:
242 ; CHECK-NEXT:    cmpge p0.d, p0/z, z0.d, #0
243 ; CHECK-NEXT:    ret
244   %out = call <vscale x 2 x i1> @llvm.aarch64.sve.cmpge.nxv2i64(<vscale x 2 x i1> %pg,
245                                                                 <vscale x 2 x i64> %a,
246                                                                 <vscale x 2 x i64> zeroinitializer)
247   ret <vscale x 2 x i1> %out
251 ; CMPGT
254 define <vscale x 16 x i1> @ir_cmpgt_b(<vscale x 16 x i8> %a) {
255 ; CHECK-LABEL: ir_cmpgt_b:
256 ; CHECK:       // %bb.0:
257 ; CHECK-NEXT:    ptrue p0.b
258 ; CHECK-NEXT:    cmpgt p0.b, p0/z, z0.b, #4
259 ; CHECK-NEXT:    ret
260   %out = icmp sgt <vscale x 16 x i8> %a, splat(i8 4)
261   ret <vscale x 16 x i1> %out
264 define <vscale x 16 x i1> @int_cmpgt_b(<vscale x 16 x i1> %pg, <vscale x 16 x i8> %a) {
265 ; CHECK-LABEL: int_cmpgt_b:
266 ; CHECK:       // %bb.0:
267 ; CHECK-NEXT:    cmpgt p0.b, p0/z, z0.b, #4
268 ; CHECK-NEXT:    ret
269   %out = call <vscale x 16 x i1> @llvm.aarch64.sve.cmpgt.nxv16i8(<vscale x 16 x i1> %pg,
270                                                                  <vscale x 16 x i8> %a,
271                                                                  <vscale x 16 x i8> splat(i8 4))
272   ret <vscale x 16 x i1> %out
275 define <vscale x 16 x i1> @wide_cmpgt_b(<vscale x 16 x i1> %pg, <vscale x 16 x i8> %a) {
276 ; CHECK-LABEL: wide_cmpgt_b:
277 ; CHECK:       // %bb.0:
278 ; CHECK-NEXT:    cmpgt p0.b, p0/z, z0.b, #4
279 ; CHECK-NEXT:    ret
280   %out = call <vscale x 16 x i1> @llvm.aarch64.sve.cmpgt.wide.nxv16i8(<vscale x 16 x i1> %pg,
281                                                                       <vscale x 16 x i8> %a,
282                                                                       <vscale x 2 x i64> splat(i64 4))
283   ret <vscale x 16 x i1> %out
286 define <vscale x 8 x i1> @ir_cmpgt_h(<vscale x 8 x i16> %a) {
287 ; CHECK-LABEL: ir_cmpgt_h:
288 ; CHECK:       // %bb.0:
289 ; CHECK-NEXT:    ptrue p0.h
290 ; CHECK-NEXT:    cmpgt p0.h, p0/z, z0.h, #-16
291 ; CHECK-NEXT:    ret
292   %out = icmp sgt <vscale x 8 x i16> %a, splat(i16 -16)
293   ret <vscale x 8 x i1> %out
296 define <vscale x 8 x i1> @int_cmpgt_h(<vscale x 8 x i1> %pg, <vscale x 8 x i16> %a) {
297 ; CHECK-LABEL: int_cmpgt_h:
298 ; CHECK:       // %bb.0:
299 ; CHECK-NEXT:    cmpgt p0.h, p0/z, z0.h, #-16
300 ; CHECK-NEXT:    ret
301   %out = call <vscale x 8 x i1> @llvm.aarch64.sve.cmpgt.nxv8i16(<vscale x 8 x i1> %pg,
302                                                                 <vscale x 8 x i16> %a,
303                                                                 <vscale x 8 x i16> splat(i16 -16))
304   ret <vscale x 8 x i1> %out
307 define <vscale x 8 x i1> @wide_cmpgt_h(<vscale x 8 x i1> %pg, <vscale x 8 x i16> %a) {
308 ; CHECK-LABEL: wide_cmpgt_h:
309 ; CHECK:       // %bb.0:
310 ; CHECK-NEXT:    cmpgt p0.h, p0/z, z0.h, #-16
311 ; CHECK-NEXT:    ret
312   %out = call <vscale x 8 x i1> @llvm.aarch64.sve.cmpgt.wide.nxv8i16(<vscale x 8 x i1> %pg,
313                                                                      <vscale x 8 x i16> %a,
314                                                                      <vscale x 2 x i64> splat(i64 -16))
315   ret <vscale x 8 x i1> %out
318 define <vscale x 4 x i1> @ir_cmpgt_s(<vscale x 4 x i32> %a) {
319 ; CHECK-LABEL: ir_cmpgt_s:
320 ; CHECK:       // %bb.0:
321 ; CHECK-NEXT:    ptrue p0.s
322 ; CHECK-NEXT:    cmpgt p0.s, p0/z, z0.s, #15
323 ; CHECK-NEXT:    ret
324   %out = icmp sgt <vscale x 4 x i32> %a, splat(i32 15)
325   ret <vscale x 4 x i1> %out
328 define <vscale x 4 x i1> @int_cmpgt_s(<vscale x 4 x i1> %pg, <vscale x 4 x i32> %a) {
329 ; CHECK-LABEL: int_cmpgt_s:
330 ; CHECK:       // %bb.0:
331 ; CHECK-NEXT:    cmpgt p0.s, p0/z, z0.s, #15
332 ; CHECK-NEXT:    ret
333   %out = call <vscale x 4 x i1> @llvm.aarch64.sve.cmpgt.nxv4i32(<vscale x 4 x i1> %pg,
334                                                                 <vscale x 4 x i32> %a,
335                                                                 <vscale x 4 x i32> splat(i32 15))
336   ret <vscale x 4 x i1> %out
339 define <vscale x 4 x i1> @wide_cmpgt_s(<vscale x 4 x i1> %pg, <vscale x 4 x i32> %a) {
340 ; CHECK-LABEL: wide_cmpgt_s:
341 ; CHECK:       // %bb.0:
342 ; CHECK-NEXT:    cmpgt p0.s, p0/z, z0.s, #15
343 ; CHECK-NEXT:    ret
344   %out = call <vscale x 4 x i1> @llvm.aarch64.sve.cmpgt.wide.nxv4i32(<vscale x 4 x i1> %pg,
345                                                                      <vscale x 4 x i32> %a,
346                                                                      <vscale x 2 x i64> splat(i64 15))
347   ret <vscale x 4 x i1> %out
350 define <vscale x 2 x i1> @ir_cmpgt_d(<vscale x 2 x i64> %a) {
351 ; CHECK-LABEL: ir_cmpgt_d:
352 ; CHECK:       // %bb.0:
353 ; CHECK-NEXT:    ptrue p0.d
354 ; CHECK-NEXT:    cmpgt p0.d, p0/z, z0.d, #0
355 ; CHECK-NEXT:    ret
356   %out = icmp sgt <vscale x 2 x i64> %a, zeroinitializer
357   ret <vscale x 2 x i1> %out
360 define <vscale x 2 x i1> @int_cmpgt_d(<vscale x 2 x i1> %pg, <vscale x 2 x i64> %a) {
361 ; CHECK-LABEL: int_cmpgt_d:
362 ; CHECK:       // %bb.0:
363 ; CHECK-NEXT:    cmpgt p0.d, p0/z, z0.d, #0
364 ; CHECK-NEXT:    ret
365   %out = call <vscale x 2 x i1> @llvm.aarch64.sve.cmpgt.nxv2i64(<vscale x 2 x i1> %pg,
366                                                                 <vscale x 2 x i64> %a,
367                                                                 <vscale x 2 x i64> zeroinitializer)
368   ret <vscale x 2 x i1> %out
372 ; CMPLE
375 define <vscale x 16 x i1> @ir_cmple_b(<vscale x 16 x i8> %a) {
376 ; CHECK-LABEL: ir_cmple_b:
377 ; CHECK:       // %bb.0:
378 ; CHECK-NEXT:    ptrue p0.b
379 ; CHECK-NEXT:    cmple p0.b, p0/z, z0.b, #4
380 ; CHECK-NEXT:    ret
381   %out = icmp sle <vscale x 16 x i8> %a, splat(i8 4)
382   ret <vscale x 16 x i1> %out
385 define <vscale x 16 x i1> @int_cmple_b(<vscale x 16 x i1> %pg, <vscale x 16 x i8> %a) {
386 ; CHECK-LABEL: int_cmple_b:
387 ; CHECK:       // %bb.0:
388 ; CHECK-NEXT:    cmple p0.b, p0/z, z0.b, #4
389 ; CHECK-NEXT:    ret
390   %out = call <vscale x 16 x i1> @llvm.aarch64.sve.cmpge.nxv16i8(<vscale x 16 x i1> %pg,
391                                                                  <vscale x 16 x i8> splat(i8 4),
392                                                                  <vscale x 16 x i8> %a)
393   ret <vscale x 16 x i1> %out
396 define <vscale x 16 x i1> @wide_cmple_b(<vscale x 16 x i1> %pg, <vscale x 16 x i8> %a) {
397 ; CHECK-LABEL: wide_cmple_b:
398 ; CHECK:       // %bb.0:
399 ; CHECK-NEXT:    cmple p0.b, p0/z, z0.b, #4
400 ; CHECK-NEXT:    ret
401   %out = call <vscale x 16 x i1> @llvm.aarch64.sve.cmple.wide.nxv16i8(<vscale x 16 x i1> %pg,
402                                                                       <vscale x 16 x i8> %a,
403                                                                       <vscale x 2 x i64> splat(i64 4))
404   ret <vscale x 16 x i1> %out
407 define <vscale x 8 x i1> @ir_cmple_h(<vscale x 8 x i16> %a) {
408 ; CHECK-LABEL: ir_cmple_h:
409 ; CHECK:       // %bb.0:
410 ; CHECK-NEXT:    ptrue p0.h
411 ; CHECK-NEXT:    cmple p0.h, p0/z, z0.h, #-16
412 ; CHECK-NEXT:    ret
413   %out = icmp sle <vscale x 8 x i16> %a, splat(i16 -16)
414   ret <vscale x 8 x i1> %out
417 define <vscale x 8 x i1> @int_cmple_h(<vscale x 8 x i1> %pg, <vscale x 8 x i16> %a) {
418 ; CHECK-LABEL: int_cmple_h:
419 ; CHECK:       // %bb.0:
420 ; CHECK-NEXT:    cmple p0.h, p0/z, z0.h, #-16
421 ; CHECK-NEXT:    ret
422   %out = call <vscale x 8 x i1> @llvm.aarch64.sve.cmpge.nxv8i16(<vscale x 8 x i1> %pg,
423                                                                 <vscale x 8 x i16> splat(i16 -16),
424                                                                 <vscale x 8 x i16> %a)
425   ret <vscale x 8 x i1> %out
428 define <vscale x 8 x i1> @wide_cmple_h(<vscale x 8 x i1> %pg, <vscale x 8 x i16> %a) {
429 ; CHECK-LABEL: wide_cmple_h:
430 ; CHECK:       // %bb.0:
431 ; CHECK-NEXT:    cmple p0.h, p0/z, z0.h, #-16
432 ; CHECK-NEXT:    ret
433   %out = call <vscale x 8 x i1> @llvm.aarch64.sve.cmple.wide.nxv8i16(<vscale x 8 x i1> %pg,
434                                                                      <vscale x 8 x i16> %a,
435                                                                      <vscale x 2 x i64> splat(i64 -16))
436   ret <vscale x 8 x i1> %out
439 define <vscale x 4 x i1> @ir_cmple_s(<vscale x 4 x i32> %a) {
440 ; CHECK-LABEL: ir_cmple_s:
441 ; CHECK:       // %bb.0:
442 ; CHECK-NEXT:    ptrue p0.s
443 ; CHECK-NEXT:    cmple p0.s, p0/z, z0.s, #15
444 ; CHECK-NEXT:    ret
445   %out = icmp sle <vscale x 4 x i32> %a, splat(i32 15)
446   ret <vscale x 4 x i1> %out
449 define <vscale x 4 x i1> @int_cmple_s(<vscale x 4 x i1> %pg, <vscale x 4 x i32> %a) {
450 ; CHECK-LABEL: int_cmple_s:
451 ; CHECK:       // %bb.0:
452 ; CHECK-NEXT:    cmple p0.s, p0/z, z0.s, #15
453 ; CHECK-NEXT:    ret
454   %out = call <vscale x 4 x i1> @llvm.aarch64.sve.cmpge.nxv4i32(<vscale x 4 x i1> %pg,
455                                                                 <vscale x 4 x i32> splat(i32 15),
456                                                                 <vscale x 4 x i32> %a)
457   ret <vscale x 4 x i1> %out
460 define <vscale x 4 x i1> @wide_cmple_s(<vscale x 4 x i1> %pg, <vscale x 4 x i32> %a) {
461 ; CHECK-LABEL: wide_cmple_s:
462 ; CHECK:       // %bb.0:
463 ; CHECK-NEXT:    cmple p0.s, p0/z, z0.s, #15
464 ; CHECK-NEXT:    ret
465   %out = call <vscale x 4 x i1> @llvm.aarch64.sve.cmple.wide.nxv4i32(<vscale x 4 x i1> %pg,
466                                                                      <vscale x 4 x i32> %a,
467                                                                      <vscale x 2 x i64> splat(i64 15))
468   ret <vscale x 4 x i1> %out
471 define <vscale x 2 x i1> @ir_cmple_d(<vscale x 2 x i64> %a) {
472 ; CHECK-LABEL: ir_cmple_d:
473 ; CHECK:       // %bb.0:
474 ; CHECK-NEXT:    ptrue p0.d
475 ; CHECK-NEXT:    cmple p0.d, p0/z, z0.d, #0
476 ; CHECK-NEXT:    ret
477   %out = icmp sle <vscale x 2 x i64> %a, zeroinitializer
478   ret <vscale x 2 x i1> %out
481 define <vscale x 2 x i1> @int_cmple_d(<vscale x 2 x i1> %pg, <vscale x 2 x i64> %a) {
482 ; CHECK-LABEL: int_cmple_d:
483 ; CHECK:       // %bb.0:
484 ; CHECK-NEXT:    cmple p0.d, p0/z, z0.d, #0
485 ; CHECK-NEXT:    ret
486   %out = call <vscale x 2 x i1> @llvm.aarch64.sve.cmpge.nxv2i64(<vscale x 2 x i1> %pg,
487                                                                 <vscale x 2 x i64> zeroinitializer,
488                                                                 <vscale x 2 x i64> %a)
489   ret <vscale x 2 x i1> %out
493 ; CMPLT
496 define <vscale x 16 x i1> @ir_cmplt_b(<vscale x 16 x i8> %a) {
497 ; CHECK-LABEL: ir_cmplt_b:
498 ; CHECK:       // %bb.0:
499 ; CHECK-NEXT:    ptrue p0.b
500 ; CHECK-NEXT:    cmplt p0.b, p0/z, z0.b, #4
501 ; CHECK-NEXT:    ret
502   %out = icmp slt <vscale x 16 x i8> %a, splat(i8 4)
503   ret <vscale x 16 x i1> %out
506 define <vscale x 16 x i1> @int_cmplt_b(<vscale x 16 x i1> %pg, <vscale x 16 x i8> %a) {
507 ; CHECK-LABEL: int_cmplt_b:
508 ; CHECK:       // %bb.0:
509 ; CHECK-NEXT:    cmplt p0.b, p0/z, z0.b, #4
510 ; CHECK-NEXT:    ret
511   %out = call <vscale x 16 x i1> @llvm.aarch64.sve.cmpgt.nxv16i8(<vscale x 16 x i1> %pg,
512                                                                  <vscale x 16 x i8> splat(i8 4),
513                                                                  <vscale x 16 x i8> %a)
514   ret <vscale x 16 x i1> %out
517 define <vscale x 16 x i1> @wide_cmplt_b(<vscale x 16 x i1> %pg, <vscale x 16 x i8> %a) {
518 ; CHECK-LABEL: wide_cmplt_b:
519 ; CHECK:       // %bb.0:
520 ; CHECK-NEXT:    cmplt p0.b, p0/z, z0.b, #4
521 ; CHECK-NEXT:    ret
522   %out = call <vscale x 16 x i1> @llvm.aarch64.sve.cmplt.wide.nxv16i8(<vscale x 16 x i1> %pg,
523                                                                       <vscale x 16 x i8> %a,
524                                                                       <vscale x 2 x i64> splat(i64 4))
525   ret <vscale x 16 x i1> %out
528 define <vscale x 8 x i1> @ir_cmplt_h(<vscale x 8 x i16> %a) {
529 ; CHECK-LABEL: ir_cmplt_h:
530 ; CHECK:       // %bb.0:
531 ; CHECK-NEXT:    ptrue p0.h
532 ; CHECK-NEXT:    cmplt p0.h, p0/z, z0.h, #-16
533 ; CHECK-NEXT:    ret
534   %out = icmp slt <vscale x 8 x i16> %a, splat(i16 -16)
535   ret <vscale x 8 x i1> %out
538 define <vscale x 8 x i1> @int_cmplt_h(<vscale x 8 x i1> %pg, <vscale x 8 x i16> %a) {
539 ; CHECK-LABEL: int_cmplt_h:
540 ; CHECK:       // %bb.0:
541 ; CHECK-NEXT:    cmplt p0.h, p0/z, z0.h, #-16
542 ; CHECK-NEXT:    ret
543   %out = call <vscale x 8 x i1> @llvm.aarch64.sve.cmpgt.nxv8i16(<vscale x 8 x i1> %pg,
544                                                                 <vscale x 8 x i16> splat(i16 -16),
545                                                                 <vscale x 8 x i16> %a)
546   ret <vscale x 8 x i1> %out
549 define <vscale x 8 x i1> @wide_cmplt_h(<vscale x 8 x i1> %pg, <vscale x 8 x i16> %a) {
550 ; CHECK-LABEL: wide_cmplt_h:
551 ; CHECK:       // %bb.0:
552 ; CHECK-NEXT:    cmplt p0.h, p0/z, z0.h, #-16
553 ; CHECK-NEXT:    ret
554   %out = call <vscale x 8 x i1> @llvm.aarch64.sve.cmplt.wide.nxv8i16(<vscale x 8 x i1> %pg,
555                                                                      <vscale x 8 x i16> %a,
556                                                                      <vscale x 2 x i64> splat(i64 -16))
557   ret <vscale x 8 x i1> %out
560 define <vscale x 4 x i1> @ir_cmplt_s(<vscale x 4 x i32> %a) {
561 ; CHECK-LABEL: ir_cmplt_s:
562 ; CHECK:       // %bb.0:
563 ; CHECK-NEXT:    ptrue p0.s
564 ; CHECK-NEXT:    cmplt p0.s, p0/z, z0.s, #15
565 ; CHECK-NEXT:    ret
566   %out = icmp slt <vscale x 4 x i32> %a, splat(i32 15)
567   ret <vscale x 4 x i1> %out
570 define <vscale x 4 x i1> @int_cmplt_s(<vscale x 4 x i1> %pg, <vscale x 4 x i32> %a) {
571 ; CHECK-LABEL: int_cmplt_s:
572 ; CHECK:       // %bb.0:
573 ; CHECK-NEXT:    cmplt p0.s, p0/z, z0.s, #15
574 ; CHECK-NEXT:    ret
575   %out = call <vscale x 4 x i1> @llvm.aarch64.sve.cmpgt.nxv4i32(<vscale x 4 x i1> %pg,
576                                                                 <vscale x 4 x i32> splat(i32 15),
577                                                                 <vscale x 4 x i32> %a)
578   ret <vscale x 4 x i1> %out
581 define <vscale x 4 x i1> @wide_cmplt_s(<vscale x 4 x i1> %pg, <vscale x 4 x i32> %a) {
582 ; CHECK-LABEL: wide_cmplt_s:
583 ; CHECK:       // %bb.0:
584 ; CHECK-NEXT:    cmplt p0.s, p0/z, z0.s, #15
585 ; CHECK-NEXT:    ret
586   %out = call <vscale x 4 x i1> @llvm.aarch64.sve.cmplt.wide.nxv4i32(<vscale x 4 x i1> %pg,
587                                                                      <vscale x 4 x i32> %a,
588                                                                      <vscale x 2 x i64> splat(i64 15))
589   ret <vscale x 4 x i1> %out
592 define <vscale x 2 x i1> @ir_cmplt_d(<vscale x 2 x i64> %a) {
593 ; CHECK-LABEL: ir_cmplt_d:
594 ; CHECK:       // %bb.0:
595 ; CHECK-NEXT:    ptrue p0.d
596 ; CHECK-NEXT:    cmplt p0.d, p0/z, z0.d, #0
597 ; CHECK-NEXT:    ret
598   %out = icmp slt <vscale x 2 x i64> %a, zeroinitializer
599   ret <vscale x 2 x i1> %out
602 define <vscale x 2 x i1> @int_cmplt_d(<vscale x 2 x i1> %pg, <vscale x 2 x i64> %a) {
603 ; CHECK-LABEL: int_cmplt_d:
604 ; CHECK:       // %bb.0:
605 ; CHECK-NEXT:    cmplt p0.d, p0/z, z0.d, #0
606 ; CHECK-NEXT:    ret
607   %out = call <vscale x 2 x i1> @llvm.aarch64.sve.cmpgt.nxv2i64(<vscale x 2 x i1> %pg,
608                                                                 <vscale x 2 x i64> zeroinitializer,
609                                                                 <vscale x 2 x i64> %a)
610   ret <vscale x 2 x i1> %out
614 ; CMPNE
617 define <vscale x 16 x i1> @ir_cmpne_b(<vscale x 16 x i8> %a) {
618 ; CHECK-LABEL: ir_cmpne_b:
619 ; CHECK:       // %bb.0:
620 ; CHECK-NEXT:    ptrue p0.b
621 ; CHECK-NEXT:    cmpne p0.b, p0/z, z0.b, #4
622 ; CHECK-NEXT:    ret
623   %out = icmp ne <vscale x 16 x i8> %a, splat(i8 4)
624   ret <vscale x 16 x i1> %out
627 define <vscale x 16 x i1> @int_cmpne_b(<vscale x 16 x i1> %pg, <vscale x 16 x i8> %a) {
628 ; CHECK-LABEL: int_cmpne_b:
629 ; CHECK:       // %bb.0:
630 ; CHECK-NEXT:    cmpne p0.b, p0/z, z0.b, #4
631 ; CHECK-NEXT:    ret
632   %out = call <vscale x 16 x i1> @llvm.aarch64.sve.cmpne.nxv16i8(<vscale x 16 x i1> %pg,
633                                                                  <vscale x 16 x i8> %a,
634                                                                  <vscale x 16 x i8> splat(i8 4))
635   ret <vscale x 16 x i1> %out
638 define <vscale x 16 x i1> @wide_cmpne_b(<vscale x 16 x i1> %pg, <vscale x 16 x i8> %a) {
639 ; CHECK-LABEL: wide_cmpne_b:
640 ; CHECK:       // %bb.0:
641 ; CHECK-NEXT:    cmpne p0.b, p0/z, z0.b, #4
642 ; CHECK-NEXT:    ret
643   %out = call <vscale x 16 x i1> @llvm.aarch64.sve.cmpne.wide.nxv16i8(<vscale x 16 x i1> %pg,
644                                                                       <vscale x 16 x i8> %a,
645                                                                       <vscale x 2 x i64> splat(i64 4))
646   ret <vscale x 16 x i1> %out
649 define <vscale x 8 x i1> @ir_cmpne_h(<vscale x 8 x i16> %a) {
650 ; CHECK-LABEL: ir_cmpne_h:
651 ; CHECK:       // %bb.0:
652 ; CHECK-NEXT:    ptrue p0.h
653 ; CHECK-NEXT:    cmpne p0.h, p0/z, z0.h, #-16
654 ; CHECK-NEXT:    ret
655   %out = icmp ne <vscale x 8 x i16> %a, splat(i16 -16)
656   ret <vscale x 8 x i1> %out
659 define <vscale x 8 x i1> @int_cmpne_h(<vscale x 8 x i1> %pg, <vscale x 8 x i16> %a) {
660 ; CHECK-LABEL: int_cmpne_h:
661 ; CHECK:       // %bb.0:
662 ; CHECK-NEXT:    cmpne p0.h, p0/z, z0.h, #-16
663 ; CHECK-NEXT:    ret
664   %out = call <vscale x 8 x i1> @llvm.aarch64.sve.cmpne.nxv8i16(<vscale x 8 x i1> %pg,
665                                                                 <vscale x 8 x i16> %a,
666                                                                 <vscale x 8 x i16> splat(i16 -16))
667   ret <vscale x 8 x i1> %out
670 define <vscale x 8 x i1> @wide_cmpne_h(<vscale x 8 x i1> %pg, <vscale x 8 x i16> %a) {
671 ; CHECK-LABEL: wide_cmpne_h:
672 ; CHECK:       // %bb.0:
673 ; CHECK-NEXT:    cmpne p0.h, p0/z, z0.h, #-16
674 ; CHECK-NEXT:    ret
675   %out = call <vscale x 8 x i1> @llvm.aarch64.sve.cmpne.wide.nxv8i16(<vscale x 8 x i1> %pg,
676                                                                      <vscale x 8 x i16> %a,
677                                                                      <vscale x 2 x i64> splat(i64 -16))
678   ret <vscale x 8 x i1> %out
681 define <vscale x 4 x i1> @ir_cmpne_s(<vscale x 4 x i32> %a) {
682 ; CHECK-LABEL: ir_cmpne_s:
683 ; CHECK:       // %bb.0:
684 ; CHECK-NEXT:    ptrue p0.s
685 ; CHECK-NEXT:    cmpne p0.s, p0/z, z0.s, #15
686 ; CHECK-NEXT:    ret
687   %out = icmp ne <vscale x 4 x i32> %a, splat(i32 15)
688   ret <vscale x 4 x i1> %out
691 define <vscale x 4 x i1> @int_cmpne_s(<vscale x 4 x i1> %pg, <vscale x 4 x i32> %a) {
692 ; CHECK-LABEL: int_cmpne_s:
693 ; CHECK:       // %bb.0:
694 ; CHECK-NEXT:    cmpne p0.s, p0/z, z0.s, #15
695 ; CHECK-NEXT:    ret
696   %out = call <vscale x 4 x i1> @llvm.aarch64.sve.cmpne.nxv4i32(<vscale x 4 x i1> %pg,
697                                                                 <vscale x 4 x i32> %a,
698                                                                 <vscale x 4 x i32> splat(i32 15))
699   ret <vscale x 4 x i1> %out
702 define <vscale x 4 x i1> @wide_cmpne_s(<vscale x 4 x i1> %pg, <vscale x 4 x i32> %a) {
703 ; CHECK-LABEL: wide_cmpne_s:
704 ; CHECK:       // %bb.0:
705 ; CHECK-NEXT:    cmpne p0.s, p0/z, z0.s, #15
706 ; CHECK-NEXT:    ret
707   %out = call <vscale x 4 x i1> @llvm.aarch64.sve.cmpne.wide.nxv4i32(<vscale x 4 x i1> %pg,
708                                                                      <vscale x 4 x i32> %a,
709                                                                      <vscale x 2 x i64> splat(i64 15))
710   ret <vscale x 4 x i1> %out
713 define <vscale x 2 x i1> @ir_cmpne_d(<vscale x 2 x i64> %a) {
714 ; CHECK-LABEL: ir_cmpne_d:
715 ; CHECK:       // %bb.0:
716 ; CHECK-NEXT:    ptrue p0.d
717 ; CHECK-NEXT:    cmpne p0.d, p0/z, z0.d, #0
718 ; CHECK-NEXT:    ret
719   %out = icmp ne <vscale x 2 x i64> %a, zeroinitializer
720   ret <vscale x 2 x i1> %out
723 define <vscale x 2 x i1> @int_cmpne_d(<vscale x 2 x i1> %pg, <vscale x 2 x i64> %a) {
724 ; CHECK-LABEL: int_cmpne_d:
725 ; CHECK:       // %bb.0:
726 ; CHECK-NEXT:    cmpne p0.d, p0/z, z0.d, #0
727 ; CHECK-NEXT:    ret
728   %out = call <vscale x 2 x i1> @llvm.aarch64.sve.cmpne.nxv2i64(<vscale x 2 x i1> %pg,
729                                                                 <vscale x 2 x i64> %a,
730                                                                 <vscale x 2 x i64> zeroinitializer)
731   ret <vscale x 2 x i1> %out
734 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
735 ;;                            Unsigned Comparisons                            ;;
736 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
739 ; CMPHI
742 define <vscale x 16 x i1> @ir_cmphi_b(<vscale x 16 x i8> %a) {
743 ; CHECK-LABEL: ir_cmphi_b:
744 ; CHECK:       // %bb.0:
745 ; CHECK-NEXT:    ptrue p0.b
746 ; CHECK-NEXT:    cmphi p0.b, p0/z, z0.b, #4
747 ; CHECK-NEXT:    ret
748   %out = icmp ugt <vscale x 16 x i8> %a, splat(i8 4)
749   ret <vscale x 16 x i1> %out
752 define <vscale x 16 x i1> @int_cmphi_b(<vscale x 16 x i1> %pg, <vscale x 16 x i8> %a) {
753 ; CHECK-LABEL: int_cmphi_b:
754 ; CHECK:       // %bb.0:
755 ; CHECK-NEXT:    cmphi p0.b, p0/z, z0.b, #4
756 ; CHECK-NEXT:    ret
757   %out = call <vscale x 16 x i1> @llvm.aarch64.sve.cmphi.nxv16i8(<vscale x 16 x i1> %pg,
758                                                                  <vscale x 16 x i8> %a,
759                                                                  <vscale x 16 x i8> splat(i8 4))
760   ret <vscale x 16 x i1> %out
763 define <vscale x 16 x i1> @wide_cmphi_b(<vscale x 16 x i1> %pg, <vscale x 16 x i8> %a) {
764 ; CHECK-LABEL: wide_cmphi_b:
765 ; CHECK:       // %bb.0:
766 ; CHECK-NEXT:    cmphi p0.b, p0/z, z0.b, #4
767 ; CHECK-NEXT:    ret
768   %out = call <vscale x 16 x i1> @llvm.aarch64.sve.cmphi.wide.nxv16i8(<vscale x 16 x i1> %pg,
769                                                                       <vscale x 16 x i8> %a,
770                                                                       <vscale x 2 x i64> splat(i64 4))
771   ret <vscale x 16 x i1> %out
774 define <vscale x 8 x i1> @ir_cmphi_h(<vscale x 8 x i16> %a) {
775 ; CHECK-LABEL: ir_cmphi_h:
776 ; CHECK:       // %bb.0:
777 ; CHECK-NEXT:    ptrue p0.h
778 ; CHECK-NEXT:    cmpne p0.h, p0/z, z0.h, #0
779 ; CHECK-NEXT:    ret
780   %out = icmp ugt <vscale x 8 x i16> %a, zeroinitializer
781   ret <vscale x 8 x i1> %out
784 define <vscale x 8 x i1> @int_cmphi_h(<vscale x 8 x i1> %pg, <vscale x 8 x i16> %a) {
785 ; CHECK-LABEL: int_cmphi_h:
786 ; CHECK:       // %bb.0:
787 ; CHECK-NEXT:    cmphi p0.h, p0/z, z0.h, #0
788 ; CHECK-NEXT:    ret
789   %out = call <vscale x 8 x i1> @llvm.aarch64.sve.cmphi.nxv8i16(<vscale x 8 x i1> %pg,
790                                                                 <vscale x 8 x i16> %a,
791                                                                 <vscale x 8 x i16> zeroinitializer)
792   ret <vscale x 8 x i1> %out
795 define <vscale x 8 x i1> @wide_cmphi_h(<vscale x 8 x i1> %pg, <vscale x 8 x i16> %a) {
796 ; CHECK-LABEL: wide_cmphi_h:
797 ; CHECK:       // %bb.0:
798 ; CHECK-NEXT:    cmphi p0.h, p0/z, z0.h, #0
799 ; CHECK-NEXT:    ret
800   %out = call <vscale x 8 x i1> @llvm.aarch64.sve.cmphi.wide.nxv8i16(<vscale x 8 x i1> %pg,
801                                                                      <vscale x 8 x i16> %a,
802                                                                      <vscale x 2 x i64> zeroinitializer)
803   ret <vscale x 8 x i1> %out
806 define <vscale x 4 x i1> @ir_cmphi_s(<vscale x 4 x i32> %a) {
807 ; CHECK-LABEL: ir_cmphi_s:
808 ; CHECK:       // %bb.0:
809 ; CHECK-NEXT:    ptrue p0.s
810 ; CHECK-NEXT:    cmphi p0.s, p0/z, z0.s, #68
811 ; CHECK-NEXT:    ret
812   %out = icmp ugt <vscale x 4 x i32> %a, splat(i32 68)
813   ret <vscale x 4 x i1> %out
816 define <vscale x 4 x i1> @int_cmphi_s(<vscale x 4 x i1> %pg, <vscale x 4 x i32> %a) {
817 ; CHECK-LABEL: int_cmphi_s:
818 ; CHECK:       // %bb.0:
819 ; CHECK-NEXT:    cmphi p0.s, p0/z, z0.s, #68
820 ; CHECK-NEXT:    ret
821   %out = call <vscale x 4 x i1> @llvm.aarch64.sve.cmphi.nxv4i32(<vscale x 4 x i1> %pg,
822                                                                 <vscale x 4 x i32> %a,
823                                                                 <vscale x 4 x i32> splat(i32 68))
824   ret <vscale x 4 x i1> %out
827 define <vscale x 4 x i1> @wide_cmphi_s(<vscale x 4 x i1> %pg, <vscale x 4 x i32> %a) {
828 ; CHECK-LABEL: wide_cmphi_s:
829 ; CHECK:       // %bb.0:
830 ; CHECK-NEXT:    cmphi p0.s, p0/z, z0.s, #68
831 ; CHECK-NEXT:    ret
832   %out = call <vscale x 4 x i1> @llvm.aarch64.sve.cmphi.wide.nxv4i32(<vscale x 4 x i1> %pg,
833                                                                      <vscale x 4 x i32> %a,
834                                                                      <vscale x 2 x i64> splat(i64 68))
835   ret <vscale x 4 x i1> %out
838 define <vscale x 2 x i1> @ir_cmphi_d(<vscale x 2 x i64> %a) {
839 ; CHECK-LABEL: ir_cmphi_d:
840 ; CHECK:       // %bb.0:
841 ; CHECK-NEXT:    ptrue p0.d
842 ; CHECK-NEXT:    cmphi p0.d, p0/z, z0.d, #127
843 ; CHECK-NEXT:    ret
844   %out = icmp ugt <vscale x 2 x i64> %a, splat(i64 127)
845   ret <vscale x 2 x i1> %out
848 define <vscale x 2 x i1> @int_cmphi_d(<vscale x 2 x i1> %pg, <vscale x 2 x i64> %a) {
849 ; CHECK-LABEL: int_cmphi_d:
850 ; CHECK:       // %bb.0:
851 ; CHECK-NEXT:    cmphi p0.d, p0/z, z0.d, #127
852 ; CHECK-NEXT:    ret
853   %out = call <vscale x 2 x i1> @llvm.aarch64.sve.cmphi.nxv2i64(<vscale x 2 x i1> %pg,
854                                                                 <vscale x 2 x i64> %a,
855                                                                 <vscale x 2 x i64> splat(i64 127))
856   ret <vscale x 2 x i1> %out
860 ; CMPHS
863 define <vscale x 16 x i1> @ir_cmphs_b(<vscale x 16 x i8> %a) {
864 ; CHECK-LABEL: ir_cmphs_b:
865 ; CHECK:       // %bb.0:
866 ; CHECK-NEXT:    ptrue p0.b
867 ; CHECK-NEXT:    cmphs p0.b, p0/z, z0.b, #4
868 ; CHECK-NEXT:    ret
869   %out = icmp uge <vscale x 16 x i8> %a, splat(i8 4)
870   ret <vscale x 16 x i1> %out
873 define <vscale x 16 x i1> @int_cmphs_b(<vscale x 16 x i1> %pg, <vscale x 16 x i8> %a) {
874 ; CHECK-LABEL: int_cmphs_b:
875 ; CHECK:       // %bb.0:
876 ; CHECK-NEXT:    cmphs p0.b, p0/z, z0.b, #4
877 ; CHECK-NEXT:    ret
878   %out = call <vscale x 16 x i1> @llvm.aarch64.sve.cmphs.nxv16i8(<vscale x 16 x i1> %pg,
879                                                                  <vscale x 16 x i8> %a,
880                                                                  <vscale x 16 x i8> splat(i8 4))
881   ret <vscale x 16 x i1> %out
884 define <vscale x 16 x i1> @wide_cmphs_b(<vscale x 16 x i1> %pg, <vscale x 16 x i8> %a) {
885 ; CHECK-LABEL: wide_cmphs_b:
886 ; CHECK:       // %bb.0:
887 ; CHECK-NEXT:    cmphs p0.b, p0/z, z0.b, #4
888 ; CHECK-NEXT:    ret
889   %out = call <vscale x 16 x i1> @llvm.aarch64.sve.cmphs.wide.nxv16i8(<vscale x 16 x i1> %pg,
890                                                                       <vscale x 16 x i8> %a,
891                                                                       <vscale x 2 x i64> splat(i64 4))
892   ret <vscale x 16 x i1> %out
895 define <vscale x 8 x i1> @ir_cmphs_h(<vscale x 8 x i16> %a) {
896 ; CHECK-LABEL: ir_cmphs_h:
897 ; CHECK:       // %bb.0:
898 ; CHECK-NEXT:    ptrue p0.h
899 ; CHECK-NEXT:    ret
900   %out = icmp uge <vscale x 8 x i16> %a, zeroinitializer
901   ret <vscale x 8 x i1> %out
904 define <vscale x 8 x i1> @int_cmphs_h(<vscale x 8 x i1> %pg, <vscale x 8 x i16> %a) {
905 ; CHECK-LABEL: int_cmphs_h:
906 ; CHECK:       // %bb.0:
907 ; CHECK-NEXT:    cmphs p0.h, p0/z, z0.h, #0
908 ; CHECK-NEXT:    ret
909   %out = call <vscale x 8 x i1> @llvm.aarch64.sve.cmphs.nxv8i16(<vscale x 8 x i1> %pg,
910                                                                 <vscale x 8 x i16> %a,
911                                                                 <vscale x 8 x i16> zeroinitializer)
912   ret <vscale x 8 x i1> %out
915 define <vscale x 8 x i1> @wide_cmphs_h(<vscale x 8 x i1> %pg, <vscale x 8 x i16> %a) {
916 ; CHECK-LABEL: wide_cmphs_h:
917 ; CHECK:       // %bb.0:
918 ; CHECK-NEXT:    cmphs p0.h, p0/z, z0.h, #0
919 ; CHECK-NEXT:    ret
920   %out = call <vscale x 8 x i1> @llvm.aarch64.sve.cmphs.wide.nxv8i16(<vscale x 8 x i1> %pg,
921                                                                      <vscale x 8 x i16> %a,
922                                                                      <vscale x 2 x i64> zeroinitializer)
923   ret <vscale x 8 x i1> %out
926 define <vscale x 4 x i1> @ir_cmphs_s(<vscale x 4 x i32> %a) {
927 ; CHECK-LABEL: ir_cmphs_s:
928 ; CHECK:       // %bb.0:
929 ; CHECK-NEXT:    ptrue p0.s
930 ; CHECK-NEXT:    cmphs p0.s, p0/z, z0.s, #68
931 ; CHECK-NEXT:    ret
932   %out = icmp uge <vscale x 4 x i32> %a, splat(i32 68)
933   ret <vscale x 4 x i1> %out
936 define <vscale x 4 x i1> @int_cmphs_s(<vscale x 4 x i1> %pg, <vscale x 4 x i32> %a) {
937 ; CHECK-LABEL: int_cmphs_s:
938 ; CHECK:       // %bb.0:
939 ; CHECK-NEXT:    cmphs p0.s, p0/z, z0.s, #68
940 ; CHECK-NEXT:    ret
941   %out = call <vscale x 4 x i1> @llvm.aarch64.sve.cmphs.nxv4i32(<vscale x 4 x i1> %pg,
942                                                                 <vscale x 4 x i32> %a,
943                                                                 <vscale x 4 x i32> splat(i32 68))
944   ret <vscale x 4 x i1> %out
947 define <vscale x 4 x i1> @wide_cmphs_s(<vscale x 4 x i1> %pg, <vscale x 4 x i32> %a) {
948 ; CHECK-LABEL: wide_cmphs_s:
949 ; CHECK:       // %bb.0:
950 ; CHECK-NEXT:    cmphs p0.s, p0/z, z0.s, #68
951 ; CHECK-NEXT:    ret
952   %out = call <vscale x 4 x i1> @llvm.aarch64.sve.cmphs.wide.nxv4i32(<vscale x 4 x i1> %pg,
953                                                                      <vscale x 4 x i32> %a,
954                                                                      <vscale x 2 x i64> splat(i64 68))
955   ret <vscale x 4 x i1> %out
958 define <vscale x 2 x i1> @ir_cmphs_d(<vscale x 2 x i64> %a) {
959 ; CHECK-LABEL: ir_cmphs_d:
960 ; CHECK:       // %bb.0:
961 ; CHECK-NEXT:    ptrue p0.d
962 ; CHECK-NEXT:    cmphs p0.d, p0/z, z0.d, #127
963 ; CHECK-NEXT:    ret
964   %out = icmp uge <vscale x 2 x i64> %a, splat(i64 127)
965   ret <vscale x 2 x i1> %out
968 define <vscale x 2 x i1> @int_cmphs_d(<vscale x 2 x i1> %pg, <vscale x 2 x i64> %a) {
969 ; CHECK-LABEL: int_cmphs_d:
970 ; CHECK:       // %bb.0:
971 ; CHECK-NEXT:    cmphs p0.d, p0/z, z0.d, #127
972 ; CHECK-NEXT:    ret
973   %out = call <vscale x 2 x i1> @llvm.aarch64.sve.cmphs.nxv2i64(<vscale x 2 x i1> %pg,
974                                                                 <vscale x 2 x i64> %a,
975                                                                 <vscale x 2 x i64> splat(i64 127))
976   ret <vscale x 2 x i1> %out
980 ; CMPLO
983 define <vscale x 16 x i1> @ir_cmplo_b(<vscale x 16 x i8> %a) {
984 ; CHECK-LABEL: ir_cmplo_b:
985 ; CHECK:       // %bb.0:
986 ; CHECK-NEXT:    ptrue p0.b
987 ; CHECK-NEXT:    cmplo p0.b, p0/z, z0.b, #4
988 ; CHECK-NEXT:    ret
989   %out = icmp ult <vscale x 16 x i8> %a, splat(i8 4)
990   ret <vscale x 16 x i1> %out
993 define <vscale x 16 x i1> @int_cmplo_b(<vscale x 16 x i1> %pg, <vscale x 16 x i8> %a) {
994 ; CHECK-LABEL: int_cmplo_b:
995 ; CHECK:       // %bb.0:
996 ; CHECK-NEXT:    cmplo p0.b, p0/z, z0.b, #4
997 ; CHECK-NEXT:    ret
998   %out = call <vscale x 16 x i1> @llvm.aarch64.sve.cmphi.nxv16i8(<vscale x 16 x i1> %pg,
999                                                                  <vscale x 16 x i8> splat(i8 4),
1000                                                                  <vscale x 16 x i8> %a)
1001   ret <vscale x 16 x i1> %out
1004 define <vscale x 16 x i1> @wide_cmplo_b(<vscale x 16 x i1> %pg, <vscale x 16 x i8> %a) {
1005 ; CHECK-LABEL: wide_cmplo_b:
1006 ; CHECK:       // %bb.0:
1007 ; CHECK-NEXT:    cmplo p0.b, p0/z, z0.b, #4
1008 ; CHECK-NEXT:    ret
1009   %out = call <vscale x 16 x i1> @llvm.aarch64.sve.cmplo.wide.nxv16i8(<vscale x 16 x i1> %pg,
1010                                                                       <vscale x 16 x i8> %a,
1011                                                                       <vscale x 2 x i64> splat(i64 4))
1012   ret <vscale x 16 x i1> %out
1015 define <vscale x 8 x i1> @ir_cmplo_h(<vscale x 8 x i16> %a) {
1016 ; CHECK-LABEL: ir_cmplo_h:
1017 ; CHECK:       // %bb.0:
1018 ; CHECK-NEXT:    ptrue p0.h
1019 ; CHECK-NEXT:    cmplo p0.h, p0/z, z0.h, #2
1020 ; CHECK-NEXT:    ret
1021   %out = icmp ult <vscale x 8 x i16> %a, splat(i16 2)
1022   ret <vscale x 8 x i1> %out
1025 define <vscale x 8 x i1> @int_cmplo_h(<vscale x 8 x i1> %pg, <vscale x 8 x i16> %a) {
1026 ; CHECK-LABEL: int_cmplo_h:
1027 ; CHECK:       // %bb.0:
1028 ; CHECK-NEXT:    cmplo p0.h, p0/z, z0.h, #3
1029 ; CHECK-NEXT:    ret
1030   %out = call <vscale x 8 x i1> @llvm.aarch64.sve.cmphi.nxv8i16(<vscale x 8 x i1> %pg,
1031                                                                 <vscale x 8 x i16> splat(i16 3),
1032                                                                 <vscale x 8 x i16> %a)
1033   ret <vscale x 8 x i1> %out
1036 define <vscale x 8 x i1> @wide_cmplo_h(<vscale x 8 x i1> %pg, <vscale x 8 x i16> %a) {
1037 ; CHECK-LABEL: wide_cmplo_h:
1038 ; CHECK:       // %bb.0:
1039 ; CHECK-NEXT:    cmplo p0.h, p0/z, z0.h, #4
1040 ; CHECK-NEXT:    ret
1041   %out = call <vscale x 8 x i1> @llvm.aarch64.sve.cmplo.wide.nxv8i16(<vscale x 8 x i1> %pg,
1042                                                                      <vscale x 8 x i16> %a,
1043                                                                      <vscale x 2 x i64> splat(i64 4))
1044   ret <vscale x 8 x i1> %out
1047 define <vscale x 4 x i1> @ir_cmplo_s(<vscale x 4 x i32> %a) {
1048 ; CHECK-LABEL: ir_cmplo_s:
1049 ; CHECK:       // %bb.0:
1050 ; CHECK-NEXT:    ptrue p0.s
1051 ; CHECK-NEXT:    cmplo p0.s, p0/z, z0.s, #68
1052 ; CHECK-NEXT:    ret
1053   %out = icmp ult <vscale x 4 x i32> %a, splat(i32 68)
1054   ret <vscale x 4 x i1> %out
1057 define <vscale x 4 x i1> @int_cmplo_s(<vscale x 4 x i1> %pg, <vscale x 4 x i32> %a) {
1058 ; CHECK-LABEL: int_cmplo_s:
1059 ; CHECK:       // %bb.0:
1060 ; CHECK-NEXT:    cmplo p0.s, p0/z, z0.s, #68
1061 ; CHECK-NEXT:    ret
1062   %out = call <vscale x 4 x i1> @llvm.aarch64.sve.cmphi.nxv4i32(<vscale x 4 x i1> %pg,
1063                                                                 <vscale x 4 x i32> splat(i32 68),
1064                                                                 <vscale x 4 x i32> %a)
1065   ret <vscale x 4 x i1> %out
1068 define <vscale x 4 x i1> @wide_cmplo_s(<vscale x 4 x i1> %pg, <vscale x 4 x i32> %a) {
1069 ; CHECK-LABEL: wide_cmplo_s:
1070 ; CHECK:       // %bb.0:
1071 ; CHECK-NEXT:    cmplo p0.s, p0/z, z0.s, #68
1072 ; CHECK-NEXT:    ret
1073   %out = call <vscale x 4 x i1> @llvm.aarch64.sve.cmplo.wide.nxv4i32(<vscale x 4 x i1> %pg,
1074                                                                      <vscale x 4 x i32> %a,
1075                                                                      <vscale x 2 x i64> splat(i64 68))
1076   ret <vscale x 4 x i1> %out
1079 define <vscale x 2 x i1> @ir_cmplo_d(<vscale x 2 x i64> %a) {
1080 ; CHECK-LABEL: ir_cmplo_d:
1081 ; CHECK:       // %bb.0:
1082 ; CHECK-NEXT:    ptrue p0.d
1083 ; CHECK-NEXT:    cmplo p0.d, p0/z, z0.d, #127
1084 ; CHECK-NEXT:    ret
1085   %out = icmp ult <vscale x 2 x i64> %a, splat(i64 127)
1086   ret <vscale x 2 x i1> %out
1089 define <vscale x 2 x i1> @int_cmplo_d(<vscale x 2 x i1> %pg, <vscale x 2 x i64> %a) {
1090 ; CHECK-LABEL: int_cmplo_d:
1091 ; CHECK:       // %bb.0:
1092 ; CHECK-NEXT:    cmplo p0.d, p0/z, z0.d, #127
1093 ; CHECK-NEXT:    ret
1094   %out = call <vscale x 2 x i1> @llvm.aarch64.sve.cmphi.nxv2i64(<vscale x 2 x i1> %pg,
1095                                                                 <vscale x 2 x i64> splat(i64 127),
1096                                                                 <vscale x 2 x i64> %a)
1097   ret <vscale x 2 x i1> %out
1101 ; CMPLS
1104 define <vscale x 16 x i1> @ir_cmpls_b(<vscale x 16 x i8> %a) {
1105 ; CHECK-LABEL: ir_cmpls_b:
1106 ; CHECK:       // %bb.0:
1107 ; CHECK-NEXT:    ptrue p0.b
1108 ; CHECK-NEXT:    cmpls p0.b, p0/z, z0.b, #4
1109 ; CHECK-NEXT:    ret
1110   %out = icmp ule <vscale x 16 x i8> %a, splat(i8 4)
1111   ret <vscale x 16 x i1> %out
1114 define <vscale x 16 x i1> @int_cmpls_b(<vscale x 16 x i1> %pg, <vscale x 16 x i8> %a) {
1115 ; CHECK-LABEL: int_cmpls_b:
1116 ; CHECK:       // %bb.0:
1117 ; CHECK-NEXT:    cmpls p0.b, p0/z, z0.b, #4
1118 ; CHECK-NEXT:    ret
1119   %out = call <vscale x 16 x i1> @llvm.aarch64.sve.cmphs.nxv16i8(<vscale x 16 x i1> %pg,
1120                                                                  <vscale x 16 x i8> splat(i8 4),
1121                                                                  <vscale x 16 x i8> %a)
1122   ret <vscale x 16 x i1> %out
1125 define <vscale x 16 x i1> @wide_cmpls_b(<vscale x 16 x i1> %pg, <vscale x 16 x i8> %a) {
1126 ; CHECK-LABEL: wide_cmpls_b:
1127 ; CHECK:       // %bb.0:
1128 ; CHECK-NEXT:    cmpls p0.b, p0/z, z0.b, #4
1129 ; CHECK-NEXT:    ret
1130   %out = call <vscale x 16 x i1> @llvm.aarch64.sve.cmpls.wide.nxv16i8(<vscale x 16 x i1> %pg,
1131                                                                       <vscale x 16 x i8> %a,
1132                                                                       <vscale x 2 x i64> splat(i64 4))
1133   ret <vscale x 16 x i1> %out
1136 define <vscale x 8 x i1> @ir_cmpls_h(<vscale x 8 x i16> %a) {
1137 ; CHECK-LABEL: ir_cmpls_h:
1138 ; CHECK:       // %bb.0:
1139 ; CHECK-NEXT:    ptrue p0.h
1140 ; CHECK-NEXT:    cmpls p0.h, p0/z, z0.h, #0
1141 ; CHECK-NEXT:    ret
1142   %out = icmp ule <vscale x 8 x i16> %a, zeroinitializer
1143   ret <vscale x 8 x i1> %out
1146 define <vscale x 8 x i1> @int_cmpls_h(<vscale x 8 x i1> %pg, <vscale x 8 x i16> %a) {
1147 ; CHECK-LABEL: int_cmpls_h:
1148 ; CHECK:       // %bb.0:
1149 ; CHECK-NEXT:    cmpls p0.h, p0/z, z0.h, #0
1150 ; CHECK-NEXT:    ret
1151   %out = call <vscale x 8 x i1> @llvm.aarch64.sve.cmphs.nxv8i16(<vscale x 8 x i1> %pg,
1152                                                                 <vscale x 8 x i16> zeroinitializer,
1153                                                                 <vscale x 8 x i16> %a)
1154   ret <vscale x 8 x i1> %out
1157 define <vscale x 8 x i1> @wide_cmpls_h(<vscale x 8 x i1> %pg, <vscale x 8 x i16> %a) {
1158 ; CHECK-LABEL: wide_cmpls_h:
1159 ; CHECK:       // %bb.0:
1160 ; CHECK-NEXT:    cmpls p0.h, p0/z, z0.h, #0
1161 ; CHECK-NEXT:    ret
1162   %out = call <vscale x 8 x i1> @llvm.aarch64.sve.cmpls.wide.nxv8i16(<vscale x 8 x i1> %pg,
1163                                                                      <vscale x 8 x i16> %a,
1164                                                                      <vscale x 2 x i64> zeroinitializer)
1165   ret <vscale x 8 x i1> %out
1168 define <vscale x 4 x i1> @ir_cmpls_s(<vscale x 4 x i32> %a) {
1169 ; CHECK-LABEL: ir_cmpls_s:
1170 ; CHECK:       // %bb.0:
1171 ; CHECK-NEXT:    ptrue p0.s
1172 ; CHECK-NEXT:    cmpls p0.s, p0/z, z0.s, #68
1173 ; CHECK-NEXT:    ret
1174   %out = icmp ule <vscale x 4 x i32> %a, splat(i32 68)
1175   ret <vscale x 4 x i1> %out
1178 define <vscale x 4 x i1> @int_cmpls_s(<vscale x 4 x i1> %pg, <vscale x 4 x i32> %a) {
1179 ; CHECK-LABEL: int_cmpls_s:
1180 ; CHECK:       // %bb.0:
1181 ; CHECK-NEXT:    cmpls p0.s, p0/z, z0.s, #68
1182 ; CHECK-NEXT:    ret
1183   %out = call <vscale x 4 x i1> @llvm.aarch64.sve.cmphs.nxv4i32(<vscale x 4 x i1> %pg,
1184                                                                 <vscale x 4 x i32> splat(i32 68),
1185                                                                 <vscale x 4 x i32> %a)
1186   ret <vscale x 4 x i1> %out
1189 define <vscale x 4 x i1> @wide_cmpls_s(<vscale x 4 x i1> %pg, <vscale x 4 x i32> %a) {
1190 ; CHECK-LABEL: wide_cmpls_s:
1191 ; CHECK:       // %bb.0:
1192 ; CHECK-NEXT:    cmpls p0.s, p0/z, z0.s, #68
1193 ; CHECK-NEXT:    ret
1194   %out = call <vscale x 4 x i1> @llvm.aarch64.sve.cmpls.wide.nxv4i32(<vscale x 4 x i1> %pg,
1195                                                                      <vscale x 4 x i32> %a,
1196                                                                      <vscale x 2 x i64> splat(i64 68))
1197   ret <vscale x 4 x i1> %out
1200 define <vscale x 2 x i1> @ir_cmpls_d(<vscale x 2 x i64> %a) {
1201 ; CHECK-LABEL: ir_cmpls_d:
1202 ; CHECK:       // %bb.0:
1203 ; CHECK-NEXT:    ptrue p0.d
1204 ; CHECK-NEXT:    cmpls p0.d, p0/z, z0.d, #127
1205 ; CHECK-NEXT:    ret
1206   %out = icmp ule <vscale x 2 x i64> %a, splat(i64 127)
1207   ret <vscale x 2 x i1> %out
1210 define <vscale x 2 x i1> @int_cmpls_d(<vscale x 2 x i1> %pg, <vscale x 2 x i64> %a) {
1211 ; CHECK-LABEL: int_cmpls_d:
1212 ; CHECK:       // %bb.0:
1213 ; CHECK-NEXT:    cmpls p0.d, p0/z, z0.d, #127
1214 ; CHECK-NEXT:    ret
1215   %out = call <vscale x 2 x i1> @llvm.aarch64.sve.cmphs.nxv2i64(<vscale x 2 x i1> %pg,
1216                                                                 <vscale x 2 x i64> splat(i64 127),
1217                                                                 <vscale x 2 x i64> %a)
1218   ret <vscale x 2 x i1> %out
1221 declare <vscale x 16 x i1> @llvm.aarch64.sve.cmpeq.nxv16i8(<vscale x 16 x i1>, <vscale x 16 x i8>, <vscale x 16 x i8>)
1222 declare <vscale x 8 x i1> @llvm.aarch64.sve.cmpeq.nxv8i16(<vscale x 8 x i1>, <vscale x 8 x i16>, <vscale x 8 x i16>)
1223 declare <vscale x 4 x i1> @llvm.aarch64.sve.cmpeq.nxv4i32(<vscale x 4 x i1>, <vscale x 4 x i32>, <vscale x 4 x i32>)
1224 declare <vscale x 2 x i1> @llvm.aarch64.sve.cmpeq.nxv2i64(<vscale x 2 x i1>, <vscale x 2 x i64>, <vscale x 2 x i64>)
1225 declare <vscale x 16 x i1> @llvm.aarch64.sve.cmpeq.wide.nxv16i8(<vscale x 16 x i1>, <vscale x 16 x i8>, <vscale x 2 x i64>)
1226 declare <vscale x 8 x i1> @llvm.aarch64.sve.cmpeq.wide.nxv8i16(<vscale x 8 x i1>, <vscale x 8 x i16>, <vscale x 2 x i64>)
1227 declare <vscale x 4 x i1> @llvm.aarch64.sve.cmpeq.wide.nxv4i32(<vscale x 4 x i1>, <vscale x 4 x i32>, <vscale x 2 x i64>)
1229 declare <vscale x 16 x i1> @llvm.aarch64.sve.cmpge.nxv16i8(<vscale x 16 x i1>, <vscale x 16 x i8>, <vscale x 16 x i8>)
1230 declare <vscale x 8 x i1> @llvm.aarch64.sve.cmpge.nxv8i16(<vscale x 8 x i1>, <vscale x 8 x i16>, <vscale x 8 x i16>)
1231 declare <vscale x 4 x i1> @llvm.aarch64.sve.cmpge.nxv4i32(<vscale x 4 x i1>, <vscale x 4 x i32>, <vscale x 4 x i32>)
1232 declare <vscale x 2 x i1> @llvm.aarch64.sve.cmpge.nxv2i64(<vscale x 2 x i1>, <vscale x 2 x i64>, <vscale x 2 x i64>)
1233 declare <vscale x 16 x i1> @llvm.aarch64.sve.cmpge.wide.nxv16i8(<vscale x 16 x i1>, <vscale x 16 x i8>, <vscale x 2 x i64>)
1234 declare <vscale x 8 x i1> @llvm.aarch64.sve.cmpge.wide.nxv8i16(<vscale x 8 x i1>, <vscale x 8 x i16>, <vscale x 2 x i64>)
1235 declare <vscale x 4 x i1> @llvm.aarch64.sve.cmpge.wide.nxv4i32(<vscale x 4 x i1>, <vscale x 4 x i32>, <vscale x 2 x i64>)
1237 declare <vscale x 16 x i1> @llvm.aarch64.sve.cmpgt.nxv16i8(<vscale x 16 x i1>, <vscale x 16 x i8>, <vscale x 16 x i8>)
1238 declare <vscale x 8 x i1> @llvm.aarch64.sve.cmpgt.nxv8i16(<vscale x 8 x i1>, <vscale x 8 x i16>, <vscale x 8 x i16>)
1239 declare <vscale x 4 x i1> @llvm.aarch64.sve.cmpgt.nxv4i32(<vscale x 4 x i1>, <vscale x 4 x i32>, <vscale x 4 x i32>)
1240 declare <vscale x 2 x i1> @llvm.aarch64.sve.cmpgt.nxv2i64(<vscale x 2 x i1>, <vscale x 2 x i64>, <vscale x 2 x i64>)
1241 declare <vscale x 16 x i1> @llvm.aarch64.sve.cmpgt.wide.nxv16i8(<vscale x 16 x i1>, <vscale x 16 x i8>, <vscale x 2 x i64>)
1242 declare <vscale x 8 x i1> @llvm.aarch64.sve.cmpgt.wide.nxv8i16(<vscale x 8 x i1>, <vscale x 8 x i16>, <vscale x 2 x i64>)
1243 declare <vscale x 4 x i1> @llvm.aarch64.sve.cmpgt.wide.nxv4i32(<vscale x 4 x i1>, <vscale x 4 x i32>, <vscale x 2 x i64>)
1245 declare <vscale x 16 x i1> @llvm.aarch64.sve.cmphi.nxv16i8(<vscale x 16 x i1>, <vscale x 16 x i8>, <vscale x 16 x i8>)
1246 declare <vscale x 8 x i1> @llvm.aarch64.sve.cmphi.nxv8i16(<vscale x 8 x i1>, <vscale x 8 x i16>, <vscale x 8 x i16>)
1247 declare <vscale x 4 x i1> @llvm.aarch64.sve.cmphi.nxv4i32(<vscale x 4 x i1>, <vscale x 4 x i32>, <vscale x 4 x i32>)
1248 declare <vscale x 2 x i1> @llvm.aarch64.sve.cmphi.nxv2i64(<vscale x 2 x i1>, <vscale x 2 x i64>, <vscale x 2 x i64>)
1249 declare <vscale x 16 x i1> @llvm.aarch64.sve.cmphi.wide.nxv16i8(<vscale x 16 x i1>, <vscale x 16 x i8>, <vscale x 2 x i64>)
1250 declare <vscale x 8 x i1> @llvm.aarch64.sve.cmphi.wide.nxv8i16(<vscale x 8 x i1>, <vscale x 8 x i16>, <vscale x 2 x i64>)
1251 declare <vscale x 4 x i1> @llvm.aarch64.sve.cmphi.wide.nxv4i32(<vscale x 4 x i1>, <vscale x 4 x i32>, <vscale x 2 x i64>)
1253 declare <vscale x 16 x i1> @llvm.aarch64.sve.cmphs.nxv16i8(<vscale x 16 x i1>, <vscale x 16 x i8>, <vscale x 16 x i8>)
1254 declare <vscale x 8 x i1> @llvm.aarch64.sve.cmphs.nxv8i16(<vscale x 8 x i1>, <vscale x 8 x i16>, <vscale x 8 x i16>)
1255 declare <vscale x 4 x i1> @llvm.aarch64.sve.cmphs.nxv4i32(<vscale x 4 x i1>, <vscale x 4 x i32>, <vscale x 4 x i32>)
1256 declare <vscale x 2 x i1> @llvm.aarch64.sve.cmphs.nxv2i64(<vscale x 2 x i1>, <vscale x 2 x i64>, <vscale x 2 x i64>)
1257 declare <vscale x 16 x i1> @llvm.aarch64.sve.cmphs.wide.nxv16i8(<vscale x 16 x i1>, <vscale x 16 x i8>, <vscale x 2 x i64>)
1258 declare <vscale x 8 x i1> @llvm.aarch64.sve.cmphs.wide.nxv8i16(<vscale x 8 x i1>, <vscale x 8 x i16>, <vscale x 2 x i64>)
1259 declare <vscale x 4 x i1> @llvm.aarch64.sve.cmphs.wide.nxv4i32(<vscale x 4 x i1>, <vscale x 4 x i32>, <vscale x 2 x i64>)
1261 declare <vscale x 16 x i1> @llvm.aarch64.sve.cmple.wide.nxv16i8(<vscale x 16 x i1>, <vscale x 16 x i8>, <vscale x 2 x i64>)
1262 declare <vscale x 8 x i1> @llvm.aarch64.sve.cmple.wide.nxv8i16(<vscale x 8 x i1>, <vscale x 8 x i16>, <vscale x 2 x i64>)
1263 declare <vscale x 4 x i1> @llvm.aarch64.sve.cmple.wide.nxv4i32(<vscale x 4 x i1>, <vscale x 4 x i32>, <vscale x 2 x i64>)
1265 declare <vscale x 16 x i1> @llvm.aarch64.sve.cmplo.wide.nxv16i8(<vscale x 16 x i1>, <vscale x 16 x i8>, <vscale x 2 x i64>)
1266 declare <vscale x 8 x i1> @llvm.aarch64.sve.cmplo.wide.nxv8i16(<vscale x 8 x i1>, <vscale x 8 x i16>, <vscale x 2 x i64>)
1267 declare <vscale x 4 x i1> @llvm.aarch64.sve.cmplo.wide.nxv4i32(<vscale x 4 x i1>, <vscale x 4 x i32>, <vscale x 2 x i64>)
1269 declare <vscale x 16 x i1> @llvm.aarch64.sve.cmpls.wide.nxv16i8(<vscale x 16 x i1>, <vscale x 16 x i8>, <vscale x 2 x i64>)
1270 declare <vscale x 8 x i1> @llvm.aarch64.sve.cmpls.wide.nxv8i16(<vscale x 8 x i1>, <vscale x 8 x i16>, <vscale x 2 x i64>)
1271 declare <vscale x 4 x i1> @llvm.aarch64.sve.cmpls.wide.nxv4i32(<vscale x 4 x i1>, <vscale x 4 x i32>, <vscale x 2 x i64>)
1273 declare <vscale x 16 x i1> @llvm.aarch64.sve.cmplt.wide.nxv16i8(<vscale x 16 x i1>, <vscale x 16 x i8>, <vscale x 2 x i64>)
1274 declare <vscale x 8 x i1> @llvm.aarch64.sve.cmplt.wide.nxv8i16(<vscale x 8 x i1>, <vscale x 8 x i16>, <vscale x 2 x i64>)
1275 declare <vscale x 4 x i1> @llvm.aarch64.sve.cmplt.wide.nxv4i32(<vscale x 4 x i1>, <vscale x 4 x i32>, <vscale x 2 x i64>)
1277 declare <vscale x 16 x i1> @llvm.aarch64.sve.cmpne.nxv16i8(<vscale x 16 x i1>, <vscale x 16 x i8>, <vscale x 16 x i8>)
1278 declare <vscale x 8 x i1> @llvm.aarch64.sve.cmpne.nxv8i16(<vscale x 8 x i1>, <vscale x 8 x i16>, <vscale x 8 x i16>)
1279 declare <vscale x 4 x i1> @llvm.aarch64.sve.cmpne.nxv4i32(<vscale x 4 x i1>, <vscale x 4 x i32>, <vscale x 4 x i32>)
1280 declare <vscale x 2 x i1> @llvm.aarch64.sve.cmpne.nxv2i64(<vscale x 2 x i1>, <vscale x 2 x i64>, <vscale x 2 x i64>)
1281 declare <vscale x 16 x i1> @llvm.aarch64.sve.cmpne.wide.nxv16i8(<vscale x 16 x i1>, <vscale x 16 x i8>, <vscale x 2 x i64>)
1282 declare <vscale x 8 x i1> @llvm.aarch64.sve.cmpne.wide.nxv8i16(<vscale x 8 x i1>, <vscale x 8 x i16>, <vscale x 2 x i64>)
1283 declare <vscale x 4 x i1> @llvm.aarch64.sve.cmpne.wide.nxv4i32(<vscale x 4 x i1>, <vscale x 4 x i32>, <vscale x 2 x i64>)