[ORC] Add std::tuple support to SimplePackedSerialization.
[llvm-project.git] / llvm / test / CodeGen / AArch64 / GlobalISel / select-vector-icmp.mir
blob55313a43136753f88a17c4cdbebb862785b2349c
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=aarch64-- -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s
4 --- |
5   ; ModuleID = 'icmp-autogen-tests-with-ne.ll'
6   source_filename = "icmp-autogen-tests-with-ne.ll"
7   target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"
8   target triple = "aarch64"
10   define <2 x i1> @test_v2i64_eq(<2 x i64> %v1, <2 x i64> %v2) {
11     %cmp = icmp eq <2 x i64> %v1, %v2
12     ret <2 x i1> %cmp
13   }
15   define <4 x i1> @test_v4i32_eq(<4 x i32> %v1, <4 x i32> %v2) {
16     %cmp = icmp eq <4 x i32> %v1, %v2
17     ret <4 x i1> %cmp
18   }
20   define <2 x i1> @test_v2i32_eq(<2 x i32> %v1, <2 x i32> %v2) {
21     %cmp = icmp eq <2 x i32> %v1, %v2
22     ret <2 x i1> %cmp
23   }
25   define <2 x i1> @test_v2i16_eq(<2 x i16> %v1, <2 x i16> %v2) {
26     %cmp = icmp eq <2 x i16> %v1, %v2
27     ret <2 x i1> %cmp
28   }
30   define <8 x i1> @test_v8i16_eq(<8 x i16> %v1, <8 x i16> %v2) {
31     %cmp = icmp eq <8 x i16> %v1, %v2
32     ret <8 x i1> %cmp
33   }
35   define <4 x i1> @test_v4i16_eq(<4 x i16> %v1, <4 x i16> %v2) {
36     %cmp = icmp eq <4 x i16> %v1, %v2
37     ret <4 x i1> %cmp
38   }
40   define <16 x i1> @test_v16i8_eq(<16 x i8> %v1, <16 x i8> %v2) {
41     %cmp = icmp eq <16 x i8> %v1, %v2
42     ret <16 x i1> %cmp
43   }
45   define <8 x i1> @test_v8i8_eq(<8 x i8> %v1, <8 x i8> %v2) {
46     %cmp = icmp eq <8 x i8> %v1, %v2
47     ret <8 x i1> %cmp
48   }
50   define <2 x i1> @test_v2i64_ne(<2 x i64> %v1, <2 x i64> %v2) {
51     %cmp = icmp ne <2 x i64> %v1, %v2
52     ret <2 x i1> %cmp
53   }
55   define <4 x i1> @test_v4i32_ne(<4 x i32> %v1, <4 x i32> %v2) {
56     %cmp = icmp ne <4 x i32> %v1, %v2
57     ret <4 x i1> %cmp
58   }
60   define <2 x i1> @test_v2i32_ne(<2 x i32> %v1, <2 x i32> %v2) {
61     %cmp = icmp ne <2 x i32> %v1, %v2
62     ret <2 x i1> %cmp
63   }
65   define <2 x i1> @test_v2i16_ne(<2 x i16> %v1, <2 x i16> %v2) {
66     %cmp = icmp ne <2 x i16> %v1, %v2
67     ret <2 x i1> %cmp
68   }
70   define <8 x i1> @test_v8i16_ne(<8 x i16> %v1, <8 x i16> %v2) {
71     %cmp = icmp ne <8 x i16> %v1, %v2
72     ret <8 x i1> %cmp
73   }
75   define <4 x i1> @test_v4i16_ne(<4 x i16> %v1, <4 x i16> %v2) {
76     %cmp = icmp ne <4 x i16> %v1, %v2
77     ret <4 x i1> %cmp
78   }
80   define <16 x i1> @test_v16i8_ne(<16 x i8> %v1, <16 x i8> %v2) {
81     %cmp = icmp ne <16 x i8> %v1, %v2
82     ret <16 x i1> %cmp
83   }
85   define <8 x i1> @test_v8i8_ne(<8 x i8> %v1, <8 x i8> %v2) {
86     %cmp = icmp ne <8 x i8> %v1, %v2
87     ret <8 x i1> %cmp
88   }
90   define <2 x i1> @test_v2i64_ugt(<2 x i64> %v1, <2 x i64> %v2) {
91     %cmp = icmp ugt <2 x i64> %v1, %v2
92     ret <2 x i1> %cmp
93   }
95   define <4 x i1> @test_v4i32_ugt(<4 x i32> %v1, <4 x i32> %v2) {
96     %cmp = icmp ugt <4 x i32> %v1, %v2
97     ret <4 x i1> %cmp
98   }
100   define <2 x i1> @test_v2i32_ugt(<2 x i32> %v1, <2 x i32> %v2) {
101     %cmp = icmp ugt <2 x i32> %v1, %v2
102     ret <2 x i1> %cmp
103   }
105   define <2 x i1> @test_v2i16_ugt(<2 x i16> %v1, <2 x i16> %v2) {
106     %cmp = icmp ugt <2 x i16> %v1, %v2
107     ret <2 x i1> %cmp
108   }
110   define <8 x i1> @test_v8i16_ugt(<8 x i16> %v1, <8 x i16> %v2) {
111     %cmp = icmp ugt <8 x i16> %v1, %v2
112     ret <8 x i1> %cmp
113   }
115   define <4 x i1> @test_v4i16_ugt(<4 x i16> %v1, <4 x i16> %v2) {
116     %cmp = icmp ugt <4 x i16> %v1, %v2
117     ret <4 x i1> %cmp
118   }
120   define <16 x i1> @test_v16i8_ugt(<16 x i8> %v1, <16 x i8> %v2) {
121     %cmp = icmp ugt <16 x i8> %v1, %v2
122     ret <16 x i1> %cmp
123   }
125   define <8 x i1> @test_v8i8_ugt(<8 x i8> %v1, <8 x i8> %v2) {
126     %cmp = icmp ugt <8 x i8> %v1, %v2
127     ret <8 x i1> %cmp
128   }
130   define <2 x i1> @test_v2i64_uge(<2 x i64> %v1, <2 x i64> %v2) {
131     %cmp = icmp uge <2 x i64> %v1, %v2
132     ret <2 x i1> %cmp
133   }
135   define <4 x i1> @test_v4i32_uge(<4 x i32> %v1, <4 x i32> %v2) {
136     %cmp = icmp uge <4 x i32> %v1, %v2
137     ret <4 x i1> %cmp
138   }
140   define <2 x i1> @test_v2i32_uge(<2 x i32> %v1, <2 x i32> %v2) {
141     %cmp = icmp uge <2 x i32> %v1, %v2
142     ret <2 x i1> %cmp
143   }
145   define <2 x i1> @test_v2i16_uge(<2 x i16> %v1, <2 x i16> %v2) {
146     %cmp = icmp uge <2 x i16> %v1, %v2
147     ret <2 x i1> %cmp
148   }
150   define <8 x i1> @test_v8i16_uge(<8 x i16> %v1, <8 x i16> %v2) {
151     %cmp = icmp uge <8 x i16> %v1, %v2
152     ret <8 x i1> %cmp
153   }
155   define <4 x i1> @test_v4i16_uge(<4 x i16> %v1, <4 x i16> %v2) {
156     %cmp = icmp uge <4 x i16> %v1, %v2
157     ret <4 x i1> %cmp
158   }
160   define <16 x i1> @test_v16i8_uge(<16 x i8> %v1, <16 x i8> %v2) {
161     %cmp = icmp uge <16 x i8> %v1, %v2
162     ret <16 x i1> %cmp
163   }
165   define <8 x i1> @test_v8i8_uge(<8 x i8> %v1, <8 x i8> %v2) {
166     %cmp = icmp uge <8 x i8> %v1, %v2
167     ret <8 x i1> %cmp
168   }
170   define <2 x i1> @test_v2i64_ult(<2 x i64> %v1, <2 x i64> %v2) {
171     %cmp = icmp ult <2 x i64> %v1, %v2
172     ret <2 x i1> %cmp
173   }
175   define <4 x i1> @test_v4i32_ult(<4 x i32> %v1, <4 x i32> %v2) {
176     %cmp = icmp ult <4 x i32> %v1, %v2
177     ret <4 x i1> %cmp
178   }
180   define <2 x i1> @test_v2i32_ult(<2 x i32> %v1, <2 x i32> %v2) {
181     %cmp = icmp ult <2 x i32> %v1, %v2
182     ret <2 x i1> %cmp
183   }
185   define <2 x i1> @test_v2i16_ult(<2 x i16> %v1, <2 x i16> %v2) {
186     %cmp = icmp ult <2 x i16> %v1, %v2
187     ret <2 x i1> %cmp
188   }
190   define <8 x i1> @test_v8i16_ult(<8 x i16> %v1, <8 x i16> %v2) {
191     %cmp = icmp ult <8 x i16> %v1, %v2
192     ret <8 x i1> %cmp
193   }
195   define <4 x i1> @test_v4i16_ult(<4 x i16> %v1, <4 x i16> %v2) {
196     %cmp = icmp ult <4 x i16> %v1, %v2
197     ret <4 x i1> %cmp
198   }
200   define <16 x i1> @test_v16i8_ult(<16 x i8> %v1, <16 x i8> %v2) {
201     %cmp = icmp ult <16 x i8> %v1, %v2
202     ret <16 x i1> %cmp
203   }
205   define <8 x i1> @test_v8i8_ult(<8 x i8> %v1, <8 x i8> %v2) {
206     %cmp = icmp ult <8 x i8> %v1, %v2
207     ret <8 x i1> %cmp
208   }
210   define <2 x i1> @test_v2i64_ule(<2 x i64> %v1, <2 x i64> %v2) {
211     %cmp = icmp ule <2 x i64> %v1, %v2
212     ret <2 x i1> %cmp
213   }
215   define <4 x i1> @test_v4i32_ule(<4 x i32> %v1, <4 x i32> %v2) {
216     %cmp = icmp ule <4 x i32> %v1, %v2
217     ret <4 x i1> %cmp
218   }
220   define <2 x i1> @test_v2i32_ule(<2 x i32> %v1, <2 x i32> %v2) {
221     %cmp = icmp ule <2 x i32> %v1, %v2
222     ret <2 x i1> %cmp
223   }
225   define <2 x i1> @test_v2i16_ule(<2 x i16> %v1, <2 x i16> %v2) {
226     %cmp = icmp ule <2 x i16> %v1, %v2
227     ret <2 x i1> %cmp
228   }
230   define <8 x i1> @test_v8i16_ule(<8 x i16> %v1, <8 x i16> %v2) {
231     %cmp = icmp ule <8 x i16> %v1, %v2
232     ret <8 x i1> %cmp
233   }
235   define <4 x i1> @test_v4i16_ule(<4 x i16> %v1, <4 x i16> %v2) {
236     %cmp = icmp ule <4 x i16> %v1, %v2
237     ret <4 x i1> %cmp
238   }
240   define <16 x i1> @test_v16i8_ule(<16 x i8> %v1, <16 x i8> %v2) {
241     %cmp = icmp ule <16 x i8> %v1, %v2
242     ret <16 x i1> %cmp
243   }
245   define <8 x i1> @test_v8i8_ule(<8 x i8> %v1, <8 x i8> %v2) {
246     %cmp = icmp ule <8 x i8> %v1, %v2
247     ret <8 x i1> %cmp
248   }
250   define <2 x i1> @test_v2i64_sgt(<2 x i64> %v1, <2 x i64> %v2) {
251     %cmp = icmp sgt <2 x i64> %v1, %v2
252     ret <2 x i1> %cmp
253   }
255   define <4 x i1> @test_v4i32_sgt(<4 x i32> %v1, <4 x i32> %v2) {
256     %cmp = icmp sgt <4 x i32> %v1, %v2
257     ret <4 x i1> %cmp
258   }
260   define <2 x i1> @test_v2i32_sgt(<2 x i32> %v1, <2 x i32> %v2) {
261     %cmp = icmp sgt <2 x i32> %v1, %v2
262     ret <2 x i1> %cmp
263   }
265   define <2 x i1> @test_v2i16_sgt(<2 x i16> %v1, <2 x i16> %v2) {
266     %cmp = icmp sgt <2 x i16> %v1, %v2
267     ret <2 x i1> %cmp
268   }
270   define <8 x i1> @test_v8i16_sgt(<8 x i16> %v1, <8 x i16> %v2) {
271     %cmp = icmp sgt <8 x i16> %v1, %v2
272     ret <8 x i1> %cmp
273   }
275   define <4 x i1> @test_v4i16_sgt(<4 x i16> %v1, <4 x i16> %v2) {
276     %cmp = icmp sgt <4 x i16> %v1, %v2
277     ret <4 x i1> %cmp
278   }
280   define <16 x i1> @test_v16i8_sgt(<16 x i8> %v1, <16 x i8> %v2) {
281     %cmp = icmp sgt <16 x i8> %v1, %v2
282     ret <16 x i1> %cmp
283   }
285   define <8 x i1> @test_v8i8_sgt(<8 x i8> %v1, <8 x i8> %v2) {
286     %cmp = icmp sgt <8 x i8> %v1, %v2
287     ret <8 x i1> %cmp
288   }
290   define <2 x i1> @test_v2i64_sge(<2 x i64> %v1, <2 x i64> %v2) {
291     %cmp = icmp sge <2 x i64> %v1, %v2
292     ret <2 x i1> %cmp
293   }
295   define <4 x i1> @test_v4i32_sge(<4 x i32> %v1, <4 x i32> %v2) {
296     %cmp = icmp sge <4 x i32> %v1, %v2
297     ret <4 x i1> %cmp
298   }
300   define <2 x i1> @test_v2i32_sge(<2 x i32> %v1, <2 x i32> %v2) {
301     %cmp = icmp sge <2 x i32> %v1, %v2
302     ret <2 x i1> %cmp
303   }
305   define <2 x i1> @test_v2i16_sge(<2 x i16> %v1, <2 x i16> %v2) {
306     %cmp = icmp sge <2 x i16> %v1, %v2
307     ret <2 x i1> %cmp
308   }
310   define <8 x i1> @test_v8i16_sge(<8 x i16> %v1, <8 x i16> %v2) {
311     %cmp = icmp sge <8 x i16> %v1, %v2
312     ret <8 x i1> %cmp
313   }
315   define <4 x i1> @test_v4i16_sge(<4 x i16> %v1, <4 x i16> %v2) {
316     %cmp = icmp sge <4 x i16> %v1, %v2
317     ret <4 x i1> %cmp
318   }
320   define <16 x i1> @test_v16i8_sge(<16 x i8> %v1, <16 x i8> %v2) {
321     %cmp = icmp sge <16 x i8> %v1, %v2
322     ret <16 x i1> %cmp
323   }
325   define <8 x i1> @test_v8i8_sge(<8 x i8> %v1, <8 x i8> %v2) {
326     %cmp = icmp sge <8 x i8> %v1, %v2
327     ret <8 x i1> %cmp
328   }
330   define <2 x i1> @test_v2i64_slt(<2 x i64> %v1, <2 x i64> %v2) {
331     %cmp = icmp slt <2 x i64> %v1, %v2
332     ret <2 x i1> %cmp
333   }
335   define <4 x i1> @test_v4i32_slt(<4 x i32> %v1, <4 x i32> %v2) {
336     %cmp = icmp slt <4 x i32> %v1, %v2
337     ret <4 x i1> %cmp
338   }
340   define <2 x i1> @test_v2i32_slt(<2 x i32> %v1, <2 x i32> %v2) {
341     %cmp = icmp slt <2 x i32> %v1, %v2
342     ret <2 x i1> %cmp
343   }
345   define <2 x i1> @test_v2i16_slt(<2 x i16> %v1, <2 x i16> %v2) {
346     %cmp = icmp slt <2 x i16> %v1, %v2
347     ret <2 x i1> %cmp
348   }
350   define <8 x i1> @test_v8i16_slt(<8 x i16> %v1, <8 x i16> %v2) {
351     %cmp = icmp slt <8 x i16> %v1, %v2
352     ret <8 x i1> %cmp
353   }
355   define <4 x i1> @test_v4i16_slt(<4 x i16> %v1, <4 x i16> %v2) {
356     %cmp = icmp slt <4 x i16> %v1, %v2
357     ret <4 x i1> %cmp
358   }
360   define <16 x i1> @test_v16i8_slt(<16 x i8> %v1, <16 x i8> %v2) {
361     %cmp = icmp slt <16 x i8> %v1, %v2
362     ret <16 x i1> %cmp
363   }
365   define <8 x i1> @test_v8i8_slt(<8 x i8> %v1, <8 x i8> %v2) {
366     %cmp = icmp slt <8 x i8> %v1, %v2
367     ret <8 x i1> %cmp
368   }
370   define <2 x i1> @test_v2i64_sle(<2 x i64> %v1, <2 x i64> %v2) {
371     %cmp = icmp sle <2 x i64> %v1, %v2
372     ret <2 x i1> %cmp
373   }
375   define <4 x i1> @test_v4i32_sle(<4 x i32> %v1, <4 x i32> %v2) {
376     %cmp = icmp sle <4 x i32> %v1, %v2
377     ret <4 x i1> %cmp
378   }
380   define <2 x i1> @test_v2i32_sle(<2 x i32> %v1, <2 x i32> %v2) {
381     %cmp = icmp sle <2 x i32> %v1, %v2
382     ret <2 x i1> %cmp
383   }
385   define <2 x i1> @test_v2i16_sle(<2 x i16> %v1, <2 x i16> %v2) {
386     %cmp = icmp sle <2 x i16> %v1, %v2
387     ret <2 x i1> %cmp
388   }
390   define <8 x i1> @test_v8i16_sle(<8 x i16> %v1, <8 x i16> %v2) {
391     %cmp = icmp sle <8 x i16> %v1, %v2
392     ret <8 x i1> %cmp
393   }
395   define <4 x i1> @test_v4i16_sle(<4 x i16> %v1, <4 x i16> %v2) {
396     %cmp = icmp sle <4 x i16> %v1, %v2
397     ret <4 x i1> %cmp
398   }
400   define <16 x i1> @test_v16i8_sle(<16 x i8> %v1, <16 x i8> %v2) {
401     %cmp = icmp sle <16 x i8> %v1, %v2
402     ret <16 x i1> %cmp
403   }
405   define <8 x i1> @test_v8i8_sle(<8 x i8> %v1, <8 x i8> %v2) {
406     %cmp = icmp sle <8 x i8> %v1, %v2
407     ret <8 x i1> %cmp
408   }
412 name:            test_v2i64_eq
413 alignment:       4
414 legalized:       true
415 regBankSelected: true
416 tracksRegLiveness: true
417 registers:
418   - { id: 0, class: fpr }
419   - { id: 1, class: fpr }
420   - { id: 2, class: _ }
421   - { id: 3, class: fpr }
422   - { id: 4, class: fpr }
423 machineFunctionInfo: {}
424 body:             |
425   bb.1 (%ir-block.0):
426     liveins: $q0, $q1
428     ; CHECK-LABEL: name: test_v2i64_eq
429     ; CHECK: liveins: $q0, $q1
430     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
431     ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
432     ; CHECK: [[CMEQv2i64_:%[0-9]+]]:fpr128 = CMEQv2i64 [[COPY]], [[COPY1]]
433     ; CHECK: [[XTNv2i32_:%[0-9]+]]:fpr64 = XTNv2i32 [[CMEQv2i64_]]
434     ; CHECK: $d0 = COPY [[XTNv2i32_]]
435     ; CHECK: RET_ReallyLR implicit $d0
436     %0:fpr(<2 x s64>) = COPY $q0
437     %1:fpr(<2 x s64>) = COPY $q1
438     %4:fpr(<2 x s64>) = G_ICMP intpred(eq), %0(<2 x s64>), %1
439     %3:fpr(<2 x s32>) = G_TRUNC %4(<2 x s64>)
440     $d0 = COPY %3(<2 x s32>)
441     RET_ReallyLR implicit $d0
445 name:            test_v4i32_eq
446 alignment:       4
447 legalized:       true
448 regBankSelected: true
449 tracksRegLiveness: true
450 registers:
451   - { id: 0, class: fpr }
452   - { id: 1, class: fpr }
453   - { id: 2, class: _ }
454   - { id: 3, class: fpr }
455   - { id: 4, class: fpr }
456 machineFunctionInfo: {}
457 body:             |
458   bb.1 (%ir-block.0):
459     liveins: $q0, $q1
461     ; CHECK-LABEL: name: test_v4i32_eq
462     ; CHECK: liveins: $q0, $q1
463     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
464     ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
465     ; CHECK: [[CMEQv4i32_:%[0-9]+]]:fpr128 = CMEQv4i32 [[COPY]], [[COPY1]]
466     ; CHECK: [[XTNv4i16_:%[0-9]+]]:fpr64 = XTNv4i16 [[CMEQv4i32_]]
467     ; CHECK: $d0 = COPY [[XTNv4i16_]]
468     ; CHECK: RET_ReallyLR implicit $d0
469     %0:fpr(<4 x s32>) = COPY $q0
470     %1:fpr(<4 x s32>) = COPY $q1
471     %4:fpr(<4 x s32>) = G_ICMP intpred(eq), %0(<4 x s32>), %1
472     %3:fpr(<4 x s16>) = G_TRUNC %4(<4 x s32>)
473     $d0 = COPY %3(<4 x s16>)
474     RET_ReallyLR implicit $d0
478 name:            test_v2i32_eq
479 alignment:       4
480 legalized:       true
481 regBankSelected: true
482 tracksRegLiveness: true
483 registers:
484   - { id: 0, class: fpr }
485   - { id: 1, class: fpr }
486   - { id: 2, class: _ }
487   - { id: 3, class: fpr }
488   - { id: 4, class: fpr }
489 machineFunctionInfo: {}
490 body:             |
491   bb.1 (%ir-block.0):
492     liveins: $d0, $d1
494     ; CHECK-LABEL: name: test_v2i32_eq
495     ; CHECK: liveins: $d0, $d1
496     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
497     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
498     ; CHECK: [[CMEQv2i32_:%[0-9]+]]:fpr64 = CMEQv2i32 [[COPY]], [[COPY1]]
499     ; CHECK: $d0 = COPY [[CMEQv2i32_]]
500     ; CHECK: RET_ReallyLR implicit $d0
501     %0:fpr(<2 x s32>) = COPY $d0
502     %1:fpr(<2 x s32>) = COPY $d1
503     %4:fpr(<2 x s32>) = G_ICMP intpred(eq), %0(<2 x s32>), %1
504     %3:fpr(<2 x s32>) = COPY %4(<2 x s32>)
505     $d0 = COPY %3(<2 x s32>)
506     RET_ReallyLR implicit $d0
510 name:            test_v2i16_eq
511 alignment:       4
512 legalized:       true
513 regBankSelected: true
514 tracksRegLiveness: true
515 registers:
516   - { id: 0, class: _ }
517   - { id: 1, class: _ }
518   - { id: 2, class: fpr }
519   - { id: 3, class: fpr }
520   - { id: 4, class: _ }
521   - { id: 5, class: fpr }
522   - { id: 6, class: _ }
523   - { id: 7, class: fpr }
524   - { id: 8, class: fpr }
525   - { id: 9, class: fpr }
526   - { id: 10, class: gpr }
527   - { id: 11, class: fpr }
528   - { id: 12, class: fpr }
529   - { id: 13, class: gpr }
530   - { id: 14, class: fpr }
531   - { id: 15, class: fpr }
532 machineFunctionInfo: {}
533 body:             |
534   bb.1 (%ir-block.0):
535     liveins: $d0, $d1
537     ; CHECK-LABEL: name: test_v2i16_eq
538     ; CHECK: liveins: $d0, $d1
539     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
540     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
541     ; CHECK: [[ADRP:%[0-9]+]]:gpr64common = ADRP target-flags(aarch64-page) %const.0
542     ; CHECK: [[LDRDui:%[0-9]+]]:fpr64 = LDRDui [[ADRP]], target-flags(aarch64-pageoff, aarch64-nc) %const.0
543     ; CHECK: [[ANDv8i8_:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY]], [[LDRDui]]
544     ; CHECK: [[ADRP1:%[0-9]+]]:gpr64common = ADRP target-flags(aarch64-page) %const.0
545     ; CHECK: [[LDRDui1:%[0-9]+]]:fpr64 = LDRDui [[ADRP1]], target-flags(aarch64-pageoff, aarch64-nc) %const.0
546     ; CHECK: [[ANDv8i8_1:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY1]], [[LDRDui1]]
547     ; CHECK: [[CMEQv2i32_:%[0-9]+]]:fpr64 = CMEQv2i32 [[ANDv8i8_]], [[ANDv8i8_1]]
548     ; CHECK: $d0 = COPY [[CMEQv2i32_]]
549     ; CHECK: RET_ReallyLR implicit $d0
550     %2:fpr(<2 x s32>) = COPY $d0
551     %3:fpr(<2 x s32>) = COPY $d1
552     %13:gpr(s32) = G_CONSTANT i32 65535
553     %14:fpr(<2 x s32>) = G_BUILD_VECTOR %13(s32), %13(s32)
554     %15:fpr(<2 x s32>) = COPY %2(<2 x s32>)
555     %7:fpr(<2 x s32>) = G_AND %15, %14
556     %10:gpr(s32) = G_CONSTANT i32 65535
557     %11:fpr(<2 x s32>) = G_BUILD_VECTOR %10(s32), %10(s32)
558     %12:fpr(<2 x s32>) = COPY %3(<2 x s32>)
559     %8:fpr(<2 x s32>) = G_AND %12, %11
560     %9:fpr(<2 x s32>) = G_ICMP intpred(eq), %7(<2 x s32>), %8
561     %5:fpr(<2 x s32>) = COPY %9(<2 x s32>)
562     $d0 = COPY %5(<2 x s32>)
563     RET_ReallyLR implicit $d0
567 name:            test_v8i16_eq
568 alignment:       4
569 legalized:       true
570 regBankSelected: true
571 tracksRegLiveness: true
572 registers:
573   - { id: 0, class: fpr }
574   - { id: 1, class: fpr }
575   - { id: 2, class: _ }
576   - { id: 3, class: fpr }
577   - { id: 4, class: fpr }
578 machineFunctionInfo: {}
579 body:             |
580   bb.1 (%ir-block.0):
581     liveins: $q0, $q1
583     ; CHECK-LABEL: name: test_v8i16_eq
584     ; CHECK: liveins: $q0, $q1
585     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
586     ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
587     ; CHECK: [[CMEQv8i16_:%[0-9]+]]:fpr128 = CMEQv8i16 [[COPY]], [[COPY1]]
588     ; CHECK: [[XTNv8i8_:%[0-9]+]]:fpr64 = XTNv8i8 [[CMEQv8i16_]]
589     ; CHECK: $d0 = COPY [[XTNv8i8_]]
590     ; CHECK: RET_ReallyLR implicit $d0
591     %0:fpr(<8 x s16>) = COPY $q0
592     %1:fpr(<8 x s16>) = COPY $q1
593     %4:fpr(<8 x s16>) = G_ICMP intpred(eq), %0(<8 x s16>), %1
594     %3:fpr(<8 x s8>) = G_TRUNC %4(<8 x s16>)
595     $d0 = COPY %3(<8 x s8>)
596     RET_ReallyLR implicit $d0
600 name:            test_v4i16_eq
601 alignment:       4
602 legalized:       true
603 regBankSelected: true
604 tracksRegLiveness: true
605 registers:
606   - { id: 0, class: fpr }
607   - { id: 1, class: fpr }
608   - { id: 2, class: _ }
609   - { id: 3, class: fpr }
610   - { id: 4, class: fpr }
611 machineFunctionInfo: {}
612 body:             |
613   bb.1 (%ir-block.0):
614     liveins: $d0, $d1
616     ; CHECK-LABEL: name: test_v4i16_eq
617     ; CHECK: liveins: $d0, $d1
618     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
619     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
620     ; CHECK: [[CMEQv4i16_:%[0-9]+]]:fpr64 = CMEQv4i16 [[COPY]], [[COPY1]]
621     ; CHECK: $d0 = COPY [[CMEQv4i16_]]
622     ; CHECK: RET_ReallyLR implicit $d0
623     %0:fpr(<4 x s16>) = COPY $d0
624     %1:fpr(<4 x s16>) = COPY $d1
625     %4:fpr(<4 x s16>) = G_ICMP intpred(eq), %0(<4 x s16>), %1
626     %3:fpr(<4 x s16>) = COPY %4(<4 x s16>)
627     $d0 = COPY %3(<4 x s16>)
628     RET_ReallyLR implicit $d0
632 name:            test_v16i8_eq
633 alignment:       4
634 legalized:       true
635 regBankSelected: true
636 tracksRegLiveness: true
637 registers:
638   - { id: 0, class: fpr }
639   - { id: 1, class: fpr }
640   - { id: 2, class: _ }
641   - { id: 3, class: fpr }
642   - { id: 4, class: fpr }
643 machineFunctionInfo: {}
644 body:             |
645   bb.1 (%ir-block.0):
646     liveins: $q0, $q1
648     ; CHECK-LABEL: name: test_v16i8_eq
649     ; CHECK: liveins: $q0, $q1
650     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
651     ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
652     ; CHECK: [[CMEQv16i8_:%[0-9]+]]:fpr128 = CMEQv16i8 [[COPY]], [[COPY1]]
653     ; CHECK: $q0 = COPY [[CMEQv16i8_]]
654     ; CHECK: RET_ReallyLR implicit $q0
655     %0:fpr(<16 x s8>) = COPY $q0
656     %1:fpr(<16 x s8>) = COPY $q1
657     %4:fpr(<16 x s8>) = G_ICMP intpred(eq), %0(<16 x s8>), %1
658     %3:fpr(<16 x s8>) = COPY %4(<16 x s8>)
659     $q0 = COPY %3(<16 x s8>)
660     RET_ReallyLR implicit $q0
664 name:            test_v8i8_eq
665 alignment:       4
666 legalized:       true
667 regBankSelected: true
668 tracksRegLiveness: true
669 registers:
670   - { id: 0, class: fpr }
671   - { id: 1, class: fpr }
672   - { id: 2, class: _ }
673   - { id: 3, class: fpr }
674   - { id: 4, class: fpr }
675 machineFunctionInfo: {}
676 body:             |
677   bb.1 (%ir-block.0):
678     liveins: $d0, $d1
680     ; CHECK-LABEL: name: test_v8i8_eq
681     ; CHECK: liveins: $d0, $d1
682     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
683     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
684     ; CHECK: [[CMEQv8i8_:%[0-9]+]]:fpr64 = CMEQv8i8 [[COPY]], [[COPY1]]
685     ; CHECK: $d0 = COPY [[CMEQv8i8_]]
686     ; CHECK: RET_ReallyLR implicit $d0
687     %0:fpr(<8 x s8>) = COPY $d0
688     %1:fpr(<8 x s8>) = COPY $d1
689     %4:fpr(<8 x s8>) = G_ICMP intpred(eq), %0(<8 x s8>), %1
690     %3:fpr(<8 x s8>) = COPY %4(<8 x s8>)
691     $d0 = COPY %3(<8 x s8>)
692     RET_ReallyLR implicit $d0
696 name:            test_v2i64_ne
697 alignment:       4
698 legalized:       true
699 regBankSelected: true
700 tracksRegLiveness: true
701 registers:
702   - { id: 0, class: fpr }
703   - { id: 1, class: fpr }
704   - { id: 2, class: _ }
705   - { id: 3, class: fpr }
706   - { id: 4, class: fpr }
707 machineFunctionInfo: {}
708 body:             |
709   bb.1 (%ir-block.0):
710     liveins: $q0, $q1
712     ; CHECK-LABEL: name: test_v2i64_ne
713     ; CHECK: liveins: $q0, $q1
714     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
715     ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
716     ; CHECK: [[CMEQv2i64_:%[0-9]+]]:fpr128 = CMEQv2i64 [[COPY]], [[COPY1]]
717     ; CHECK: [[NOTv16i8_:%[0-9]+]]:fpr128 = NOTv16i8 [[CMEQv2i64_]]
718     ; CHECK: [[XTNv2i32_:%[0-9]+]]:fpr64 = XTNv2i32 [[NOTv16i8_]]
719     ; CHECK: $d0 = COPY [[XTNv2i32_]]
720     ; CHECK: RET_ReallyLR implicit $d0
721     %0:fpr(<2 x s64>) = COPY $q0
722     %1:fpr(<2 x s64>) = COPY $q1
723     %4:fpr(<2 x s64>) = G_ICMP intpred(ne), %0(<2 x s64>), %1
724     %3:fpr(<2 x s32>) = G_TRUNC %4(<2 x s64>)
725     $d0 = COPY %3(<2 x s32>)
726     RET_ReallyLR implicit $d0
730 name:            test_v4i32_ne
731 alignment:       4
732 legalized:       true
733 regBankSelected: true
734 tracksRegLiveness: true
735 registers:
736   - { id: 0, class: fpr }
737   - { id: 1, class: fpr }
738   - { id: 2, class: _ }
739   - { id: 3, class: fpr }
740   - { id: 4, class: fpr }
741 machineFunctionInfo: {}
742 body:             |
743   bb.1 (%ir-block.0):
744     liveins: $q0, $q1
746     ; CHECK-LABEL: name: test_v4i32_ne
747     ; CHECK: liveins: $q0, $q1
748     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
749     ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
750     ; CHECK: [[CMEQv4i32_:%[0-9]+]]:fpr128 = CMEQv4i32 [[COPY]], [[COPY1]]
751     ; CHECK: [[NOTv16i8_:%[0-9]+]]:fpr128 = NOTv16i8 [[CMEQv4i32_]]
752     ; CHECK: [[XTNv4i16_:%[0-9]+]]:fpr64 = XTNv4i16 [[NOTv16i8_]]
753     ; CHECK: $d0 = COPY [[XTNv4i16_]]
754     ; CHECK: RET_ReallyLR implicit $d0
755     %0:fpr(<4 x s32>) = COPY $q0
756     %1:fpr(<4 x s32>) = COPY $q1
757     %4:fpr(<4 x s32>) = G_ICMP intpred(ne), %0(<4 x s32>), %1
758     %3:fpr(<4 x s16>) = G_TRUNC %4(<4 x s32>)
759     $d0 = COPY %3(<4 x s16>)
760     RET_ReallyLR implicit $d0
764 name:            test_v2i32_ne
765 alignment:       4
766 legalized:       true
767 regBankSelected: true
768 tracksRegLiveness: true
769 registers:
770   - { id: 0, class: fpr }
771   - { id: 1, class: fpr }
772   - { id: 2, class: _ }
773   - { id: 3, class: fpr }
774   - { id: 4, class: fpr }
775 machineFunctionInfo: {}
776 body:             |
777   bb.1 (%ir-block.0):
778     liveins: $d0, $d1
780     ; CHECK-LABEL: name: test_v2i32_ne
781     ; CHECK: liveins: $d0, $d1
782     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
783     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
784     ; CHECK: [[CMEQv2i32_:%[0-9]+]]:fpr64 = CMEQv2i32 [[COPY]], [[COPY1]]
785     ; CHECK: [[NOTv8i8_:%[0-9]+]]:fpr64 = NOTv8i8 [[CMEQv2i32_]]
786     ; CHECK: $d0 = COPY [[NOTv8i8_]]
787     ; CHECK: RET_ReallyLR implicit $d0
788     %0:fpr(<2 x s32>) = COPY $d0
789     %1:fpr(<2 x s32>) = COPY $d1
790     %4:fpr(<2 x s32>) = G_ICMP intpred(ne), %0(<2 x s32>), %1
791     %3:fpr(<2 x s32>) = COPY %4(<2 x s32>)
792     $d0 = COPY %3(<2 x s32>)
793     RET_ReallyLR implicit $d0
797 name:            test_v2i16_ne
798 alignment:       4
799 legalized:       true
800 regBankSelected: true
801 tracksRegLiveness: true
802 registers:
803   - { id: 0, class: _ }
804   - { id: 1, class: _ }
805   - { id: 2, class: fpr }
806   - { id: 3, class: fpr }
807   - { id: 4, class: _ }
808   - { id: 5, class: fpr }
809   - { id: 6, class: _ }
810   - { id: 7, class: fpr }
811   - { id: 8, class: fpr }
812   - { id: 9, class: fpr }
813   - { id: 10, class: gpr }
814   - { id: 11, class: fpr }
815   - { id: 12, class: fpr }
816   - { id: 13, class: gpr }
817   - { id: 14, class: fpr }
818   - { id: 15, class: fpr }
819 machineFunctionInfo: {}
820 body:             |
821   bb.1 (%ir-block.0):
822     liveins: $d0, $d1
824     ; CHECK-LABEL: name: test_v2i16_ne
825     ; CHECK: liveins: $d0, $d1
826     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
827     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
828     ; CHECK: [[ADRP:%[0-9]+]]:gpr64common = ADRP target-flags(aarch64-page) %const.0
829     ; CHECK: [[LDRDui:%[0-9]+]]:fpr64 = LDRDui [[ADRP]], target-flags(aarch64-pageoff, aarch64-nc) %const.0
830     ; CHECK: [[ANDv8i8_:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY]], [[LDRDui]]
831     ; CHECK: [[ADRP1:%[0-9]+]]:gpr64common = ADRP target-flags(aarch64-page) %const.0
832     ; CHECK: [[LDRDui1:%[0-9]+]]:fpr64 = LDRDui [[ADRP1]], target-flags(aarch64-pageoff, aarch64-nc) %const.0
833     ; CHECK: [[ANDv8i8_1:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY1]], [[LDRDui1]]
834     ; CHECK: [[CMEQv2i32_:%[0-9]+]]:fpr64 = CMEQv2i32 [[ANDv8i8_]], [[ANDv8i8_1]]
835     ; CHECK: [[NOTv8i8_:%[0-9]+]]:fpr64 = NOTv8i8 [[CMEQv2i32_]]
836     ; CHECK: $d0 = COPY [[NOTv8i8_]]
837     ; CHECK: RET_ReallyLR implicit $d0
838     %2:fpr(<2 x s32>) = COPY $d0
839     %3:fpr(<2 x s32>) = COPY $d1
840     %13:gpr(s32) = G_CONSTANT i32 65535
841     %14:fpr(<2 x s32>) = G_BUILD_VECTOR %13(s32), %13(s32)
842     %15:fpr(<2 x s32>) = COPY %2(<2 x s32>)
843     %7:fpr(<2 x s32>) = G_AND %15, %14
844     %10:gpr(s32) = G_CONSTANT i32 65535
845     %11:fpr(<2 x s32>) = G_BUILD_VECTOR %10(s32), %10(s32)
846     %12:fpr(<2 x s32>) = COPY %3(<2 x s32>)
847     %8:fpr(<2 x s32>) = G_AND %12, %11
848     %9:fpr(<2 x s32>) = G_ICMP intpred(ne), %7(<2 x s32>), %8
849     %5:fpr(<2 x s32>) = COPY %9(<2 x s32>)
850     $d0 = COPY %5(<2 x s32>)
851     RET_ReallyLR implicit $d0
855 name:            test_v8i16_ne
856 alignment:       4
857 legalized:       true
858 regBankSelected: true
859 tracksRegLiveness: true
860 registers:
861   - { id: 0, class: fpr }
862   - { id: 1, class: fpr }
863   - { id: 2, class: _ }
864   - { id: 3, class: fpr }
865   - { id: 4, class: fpr }
866 machineFunctionInfo: {}
867 body:             |
868   bb.1 (%ir-block.0):
869     liveins: $q0, $q1
871     ; CHECK-LABEL: name: test_v8i16_ne
872     ; CHECK: liveins: $q0, $q1
873     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
874     ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
875     ; CHECK: [[CMEQv8i16_:%[0-9]+]]:fpr128 = CMEQv8i16 [[COPY]], [[COPY1]]
876     ; CHECK: [[NOTv16i8_:%[0-9]+]]:fpr128 = NOTv16i8 [[CMEQv8i16_]]
877     ; CHECK: [[XTNv8i8_:%[0-9]+]]:fpr64 = XTNv8i8 [[NOTv16i8_]]
878     ; CHECK: $d0 = COPY [[XTNv8i8_]]
879     ; CHECK: RET_ReallyLR implicit $d0
880     %0:fpr(<8 x s16>) = COPY $q0
881     %1:fpr(<8 x s16>) = COPY $q1
882     %4:fpr(<8 x s16>) = G_ICMP intpred(ne), %0(<8 x s16>), %1
883     %3:fpr(<8 x s8>) = G_TRUNC %4(<8 x s16>)
884     $d0 = COPY %3(<8 x s8>)
885     RET_ReallyLR implicit $d0
889 name:            test_v4i16_ne
890 alignment:       4
891 legalized:       true
892 regBankSelected: true
893 tracksRegLiveness: true
894 registers:
895   - { id: 0, class: fpr }
896   - { id: 1, class: fpr }
897   - { id: 2, class: _ }
898   - { id: 3, class: fpr }
899   - { id: 4, class: fpr }
900 machineFunctionInfo: {}
901 body:             |
902   bb.1 (%ir-block.0):
903     liveins: $d0, $d1
905     ; CHECK-LABEL: name: test_v4i16_ne
906     ; CHECK: liveins: $d0, $d1
907     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
908     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
909     ; CHECK: [[CMEQv4i16_:%[0-9]+]]:fpr64 = CMEQv4i16 [[COPY]], [[COPY1]]
910     ; CHECK: [[NOTv8i8_:%[0-9]+]]:fpr64 = NOTv8i8 [[CMEQv4i16_]]
911     ; CHECK: $d0 = COPY [[NOTv8i8_]]
912     ; CHECK: RET_ReallyLR implicit $d0
913     %0:fpr(<4 x s16>) = COPY $d0
914     %1:fpr(<4 x s16>) = COPY $d1
915     %4:fpr(<4 x s16>) = G_ICMP intpred(ne), %0(<4 x s16>), %1
916     %3:fpr(<4 x s16>) = COPY %4(<4 x s16>)
917     $d0 = COPY %3(<4 x s16>)
918     RET_ReallyLR implicit $d0
922 name:            test_v16i8_ne
923 alignment:       4
924 legalized:       true
925 regBankSelected: true
926 tracksRegLiveness: true
927 registers:
928   - { id: 0, class: fpr }
929   - { id: 1, class: fpr }
930   - { id: 2, class: _ }
931   - { id: 3, class: fpr }
932   - { id: 4, class: fpr }
933 machineFunctionInfo: {}
934 body:             |
935   bb.1 (%ir-block.0):
936     liveins: $q0, $q1
938     ; CHECK-LABEL: name: test_v16i8_ne
939     ; CHECK: liveins: $q0, $q1
940     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
941     ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
942     ; CHECK: [[CMEQv16i8_:%[0-9]+]]:fpr128 = CMEQv16i8 [[COPY]], [[COPY1]]
943     ; CHECK: [[NOTv16i8_:%[0-9]+]]:fpr128 = NOTv16i8 [[CMEQv16i8_]]
944     ; CHECK: $q0 = COPY [[NOTv16i8_]]
945     ; CHECK: RET_ReallyLR implicit $q0
946     %0:fpr(<16 x s8>) = COPY $q0
947     %1:fpr(<16 x s8>) = COPY $q1
948     %4:fpr(<16 x s8>) = G_ICMP intpred(ne), %0(<16 x s8>), %1
949     %3:fpr(<16 x s8>) = COPY %4(<16 x s8>)
950     $q0 = COPY %3(<16 x s8>)
951     RET_ReallyLR implicit $q0
955 name:            test_v8i8_ne
956 alignment:       4
957 legalized:       true
958 regBankSelected: true
959 tracksRegLiveness: true
960 registers:
961   - { id: 0, class: fpr }
962   - { id: 1, class: fpr }
963   - { id: 2, class: _ }
964   - { id: 3, class: fpr }
965   - { id: 4, class: fpr }
966 machineFunctionInfo: {}
967 body:             |
968   bb.1 (%ir-block.0):
969     liveins: $d0, $d1
971     ; CHECK-LABEL: name: test_v8i8_ne
972     ; CHECK: liveins: $d0, $d1
973     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
974     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
975     ; CHECK: [[CMEQv8i8_:%[0-9]+]]:fpr64 = CMEQv8i8 [[COPY]], [[COPY1]]
976     ; CHECK: [[NOTv8i8_:%[0-9]+]]:fpr64 = NOTv8i8 [[CMEQv8i8_]]
977     ; CHECK: $d0 = COPY [[NOTv8i8_]]
978     ; CHECK: RET_ReallyLR implicit $d0
979     %0:fpr(<8 x s8>) = COPY $d0
980     %1:fpr(<8 x s8>) = COPY $d1
981     %4:fpr(<8 x s8>) = G_ICMP intpred(ne), %0(<8 x s8>), %1
982     %3:fpr(<8 x s8>) = COPY %4(<8 x s8>)
983     $d0 = COPY %3(<8 x s8>)
984     RET_ReallyLR implicit $d0
988 name:            test_v2i64_ugt
989 alignment:       4
990 legalized:       true
991 regBankSelected: true
992 tracksRegLiveness: true
993 registers:
994   - { id: 0, class: fpr }
995   - { id: 1, class: fpr }
996   - { id: 2, class: _ }
997   - { id: 3, class: fpr }
998   - { id: 4, class: fpr }
999 machineFunctionInfo: {}
1000 body:             |
1001   bb.1 (%ir-block.0):
1002     liveins: $q0, $q1
1004     ; CHECK-LABEL: name: test_v2i64_ugt
1005     ; CHECK: liveins: $q0, $q1
1006     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
1007     ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
1008     ; CHECK: [[CMHIv2i64_:%[0-9]+]]:fpr128 = CMHIv2i64 [[COPY]], [[COPY1]]
1009     ; CHECK: [[XTNv2i32_:%[0-9]+]]:fpr64 = XTNv2i32 [[CMHIv2i64_]]
1010     ; CHECK: $d0 = COPY [[XTNv2i32_]]
1011     ; CHECK: RET_ReallyLR implicit $d0
1012     %0:fpr(<2 x s64>) = COPY $q0
1013     %1:fpr(<2 x s64>) = COPY $q1
1014     %4:fpr(<2 x s64>) = G_ICMP intpred(ugt), %0(<2 x s64>), %1
1015     %3:fpr(<2 x s32>) = G_TRUNC %4(<2 x s64>)
1016     $d0 = COPY %3(<2 x s32>)
1017     RET_ReallyLR implicit $d0
1021 name:            test_v4i32_ugt
1022 alignment:       4
1023 legalized:       true
1024 regBankSelected: true
1025 tracksRegLiveness: true
1026 registers:
1027   - { id: 0, class: fpr }
1028   - { id: 1, class: fpr }
1029   - { id: 2, class: _ }
1030   - { id: 3, class: fpr }
1031   - { id: 4, class: fpr }
1032 machineFunctionInfo: {}
1033 body:             |
1034   bb.1 (%ir-block.0):
1035     liveins: $q0, $q1
1037     ; CHECK-LABEL: name: test_v4i32_ugt
1038     ; CHECK: liveins: $q0, $q1
1039     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
1040     ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
1041     ; CHECK: [[CMHIv4i32_:%[0-9]+]]:fpr128 = CMHIv4i32 [[COPY]], [[COPY1]]
1042     ; CHECK: [[XTNv4i16_:%[0-9]+]]:fpr64 = XTNv4i16 [[CMHIv4i32_]]
1043     ; CHECK: $d0 = COPY [[XTNv4i16_]]
1044     ; CHECK: RET_ReallyLR implicit $d0
1045     %0:fpr(<4 x s32>) = COPY $q0
1046     %1:fpr(<4 x s32>) = COPY $q1
1047     %4:fpr(<4 x s32>) = G_ICMP intpred(ugt), %0(<4 x s32>), %1
1048     %3:fpr(<4 x s16>) = G_TRUNC %4(<4 x s32>)
1049     $d0 = COPY %3(<4 x s16>)
1050     RET_ReallyLR implicit $d0
1054 name:            test_v2i32_ugt
1055 alignment:       4
1056 legalized:       true
1057 regBankSelected: true
1058 tracksRegLiveness: true
1059 registers:
1060   - { id: 0, class: fpr }
1061   - { id: 1, class: fpr }
1062   - { id: 2, class: _ }
1063   - { id: 3, class: fpr }
1064   - { id: 4, class: fpr }
1065 machineFunctionInfo: {}
1066 body:             |
1067   bb.1 (%ir-block.0):
1068     liveins: $d0, $d1
1070     ; CHECK-LABEL: name: test_v2i32_ugt
1071     ; CHECK: liveins: $d0, $d1
1072     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
1073     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
1074     ; CHECK: [[CMHIv2i32_:%[0-9]+]]:fpr64 = CMHIv2i32 [[COPY]], [[COPY1]]
1075     ; CHECK: $d0 = COPY [[CMHIv2i32_]]
1076     ; CHECK: RET_ReallyLR implicit $d0
1077     %0:fpr(<2 x s32>) = COPY $d0
1078     %1:fpr(<2 x s32>) = COPY $d1
1079     %4:fpr(<2 x s32>) = G_ICMP intpred(ugt), %0(<2 x s32>), %1
1080     %3:fpr(<2 x s32>) = COPY %4(<2 x s32>)
1081     $d0 = COPY %3(<2 x s32>)
1082     RET_ReallyLR implicit $d0
1086 name:            test_v2i16_ugt
1087 alignment:       4
1088 legalized:       true
1089 regBankSelected: true
1090 tracksRegLiveness: true
1091 registers:
1092   - { id: 0, class: _ }
1093   - { id: 1, class: _ }
1094   - { id: 2, class: fpr }
1095   - { id: 3, class: fpr }
1096   - { id: 4, class: _ }
1097   - { id: 5, class: fpr }
1098   - { id: 6, class: _ }
1099   - { id: 7, class: fpr }
1100   - { id: 8, class: fpr }
1101   - { id: 9, class: fpr }
1102   - { id: 10, class: gpr }
1103   - { id: 11, class: fpr }
1104   - { id: 12, class: fpr }
1105   - { id: 13, class: gpr }
1106   - { id: 14, class: fpr }
1107   - { id: 15, class: fpr }
1108 machineFunctionInfo: {}
1109 body:             |
1110   bb.1 (%ir-block.0):
1111     liveins: $d0, $d1
1113     ; CHECK-LABEL: name: test_v2i16_ugt
1114     ; CHECK: liveins: $d0, $d1
1115     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
1116     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
1117     ; CHECK: [[ADRP:%[0-9]+]]:gpr64common = ADRP target-flags(aarch64-page) %const.0
1118     ; CHECK: [[LDRDui:%[0-9]+]]:fpr64 = LDRDui [[ADRP]], target-flags(aarch64-pageoff, aarch64-nc) %const.0
1119     ; CHECK: [[ANDv8i8_:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY]], [[LDRDui]]
1120     ; CHECK: [[ADRP1:%[0-9]+]]:gpr64common = ADRP target-flags(aarch64-page) %const.0
1121     ; CHECK: [[LDRDui1:%[0-9]+]]:fpr64 = LDRDui [[ADRP1]], target-flags(aarch64-pageoff, aarch64-nc) %const.0
1122     ; CHECK: [[ANDv8i8_1:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY1]], [[LDRDui1]]
1123     ; CHECK: [[CMHIv2i32_:%[0-9]+]]:fpr64 = CMHIv2i32 [[ANDv8i8_]], [[ANDv8i8_1]]
1124     ; CHECK: $d0 = COPY [[CMHIv2i32_]]
1125     ; CHECK: RET_ReallyLR implicit $d0
1126     %2:fpr(<2 x s32>) = COPY $d0
1127     %3:fpr(<2 x s32>) = COPY $d1
1128     %13:gpr(s32) = G_CONSTANT i32 65535
1129     %14:fpr(<2 x s32>) = G_BUILD_VECTOR %13(s32), %13(s32)
1130     %15:fpr(<2 x s32>) = COPY %2(<2 x s32>)
1131     %7:fpr(<2 x s32>) = G_AND %15, %14
1132     %10:gpr(s32) = G_CONSTANT i32 65535
1133     %11:fpr(<2 x s32>) = G_BUILD_VECTOR %10(s32), %10(s32)
1134     %12:fpr(<2 x s32>) = COPY %3(<2 x s32>)
1135     %8:fpr(<2 x s32>) = G_AND %12, %11
1136     %9:fpr(<2 x s32>) = G_ICMP intpred(ugt), %7(<2 x s32>), %8
1137     %5:fpr(<2 x s32>) = COPY %9(<2 x s32>)
1138     $d0 = COPY %5(<2 x s32>)
1139     RET_ReallyLR implicit $d0
1143 name:            test_v8i16_ugt
1144 alignment:       4
1145 legalized:       true
1146 regBankSelected: true
1147 tracksRegLiveness: true
1148 registers:
1149   - { id: 0, class: fpr }
1150   - { id: 1, class: fpr }
1151   - { id: 2, class: _ }
1152   - { id: 3, class: fpr }
1153   - { id: 4, class: fpr }
1154 machineFunctionInfo: {}
1155 body:             |
1156   bb.1 (%ir-block.0):
1157     liveins: $q0, $q1
1159     ; CHECK-LABEL: name: test_v8i16_ugt
1160     ; CHECK: liveins: $q0, $q1
1161     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
1162     ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
1163     ; CHECK: [[CMHIv8i16_:%[0-9]+]]:fpr128 = CMHIv8i16 [[COPY]], [[COPY1]]
1164     ; CHECK: [[XTNv8i8_:%[0-9]+]]:fpr64 = XTNv8i8 [[CMHIv8i16_]]
1165     ; CHECK: $d0 = COPY [[XTNv8i8_]]
1166     ; CHECK: RET_ReallyLR implicit $d0
1167     %0:fpr(<8 x s16>) = COPY $q0
1168     %1:fpr(<8 x s16>) = COPY $q1
1169     %4:fpr(<8 x s16>) = G_ICMP intpred(ugt), %0(<8 x s16>), %1
1170     %3:fpr(<8 x s8>) = G_TRUNC %4(<8 x s16>)
1171     $d0 = COPY %3(<8 x s8>)
1172     RET_ReallyLR implicit $d0
1176 name:            test_v4i16_ugt
1177 alignment:       4
1178 legalized:       true
1179 regBankSelected: true
1180 tracksRegLiveness: true
1181 registers:
1182   - { id: 0, class: fpr }
1183   - { id: 1, class: fpr }
1184   - { id: 2, class: _ }
1185   - { id: 3, class: fpr }
1186   - { id: 4, class: fpr }
1187 machineFunctionInfo: {}
1188 body:             |
1189   bb.1 (%ir-block.0):
1190     liveins: $d0, $d1
1192     ; CHECK-LABEL: name: test_v4i16_ugt
1193     ; CHECK: liveins: $d0, $d1
1194     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
1195     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
1196     ; CHECK: [[CMHIv4i16_:%[0-9]+]]:fpr64 = CMHIv4i16 [[COPY]], [[COPY1]]
1197     ; CHECK: $d0 = COPY [[CMHIv4i16_]]
1198     ; CHECK: RET_ReallyLR implicit $d0
1199     %0:fpr(<4 x s16>) = COPY $d0
1200     %1:fpr(<4 x s16>) = COPY $d1
1201     %4:fpr(<4 x s16>) = G_ICMP intpred(ugt), %0(<4 x s16>), %1
1202     %3:fpr(<4 x s16>) = COPY %4(<4 x s16>)
1203     $d0 = COPY %3(<4 x s16>)
1204     RET_ReallyLR implicit $d0
1208 name:            test_v16i8_ugt
1209 alignment:       4
1210 legalized:       true
1211 regBankSelected: true
1212 tracksRegLiveness: true
1213 registers:
1214   - { id: 0, class: fpr }
1215   - { id: 1, class: fpr }
1216   - { id: 2, class: _ }
1217   - { id: 3, class: fpr }
1218   - { id: 4, class: fpr }
1219 machineFunctionInfo: {}
1220 body:             |
1221   bb.1 (%ir-block.0):
1222     liveins: $q0, $q1
1224     ; CHECK-LABEL: name: test_v16i8_ugt
1225     ; CHECK: liveins: $q0, $q1
1226     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
1227     ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
1228     ; CHECK: [[CMHIv16i8_:%[0-9]+]]:fpr128 = CMHIv16i8 [[COPY]], [[COPY1]]
1229     ; CHECK: $q0 = COPY [[CMHIv16i8_]]
1230     ; CHECK: RET_ReallyLR implicit $q0
1231     %0:fpr(<16 x s8>) = COPY $q0
1232     %1:fpr(<16 x s8>) = COPY $q1
1233     %4:fpr(<16 x s8>) = G_ICMP intpred(ugt), %0(<16 x s8>), %1
1234     %3:fpr(<16 x s8>) = COPY %4(<16 x s8>)
1235     $q0 = COPY %3(<16 x s8>)
1236     RET_ReallyLR implicit $q0
1240 name:            test_v8i8_ugt
1241 alignment:       4
1242 legalized:       true
1243 regBankSelected: true
1244 tracksRegLiveness: true
1245 registers:
1246   - { id: 0, class: fpr }
1247   - { id: 1, class: fpr }
1248   - { id: 2, class: _ }
1249   - { id: 3, class: fpr }
1250   - { id: 4, class: fpr }
1251 machineFunctionInfo: {}
1252 body:             |
1253   bb.1 (%ir-block.0):
1254     liveins: $d0, $d1
1256     ; CHECK-LABEL: name: test_v8i8_ugt
1257     ; CHECK: liveins: $d0, $d1
1258     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
1259     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
1260     ; CHECK: [[CMHIv8i8_:%[0-9]+]]:fpr64 = CMHIv8i8 [[COPY]], [[COPY1]]
1261     ; CHECK: $d0 = COPY [[CMHIv8i8_]]
1262     ; CHECK: RET_ReallyLR implicit $d0
1263     %0:fpr(<8 x s8>) = COPY $d0
1264     %1:fpr(<8 x s8>) = COPY $d1
1265     %4:fpr(<8 x s8>) = G_ICMP intpred(ugt), %0(<8 x s8>), %1
1266     %3:fpr(<8 x s8>) = COPY %4(<8 x s8>)
1267     $d0 = COPY %3(<8 x s8>)
1268     RET_ReallyLR implicit $d0
1272 name:            test_v2i64_uge
1273 alignment:       4
1274 legalized:       true
1275 regBankSelected: true
1276 tracksRegLiveness: true
1277 registers:
1278   - { id: 0, class: fpr }
1279   - { id: 1, class: fpr }
1280   - { id: 2, class: _ }
1281   - { id: 3, class: fpr }
1282   - { id: 4, class: fpr }
1283 machineFunctionInfo: {}
1284 body:             |
1285   bb.1 (%ir-block.0):
1286     liveins: $q0, $q1
1288     ; CHECK-LABEL: name: test_v2i64_uge
1289     ; CHECK: liveins: $q0, $q1
1290     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
1291     ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
1292     ; CHECK: [[CMHSv2i64_:%[0-9]+]]:fpr128 = CMHSv2i64 [[COPY]], [[COPY1]]
1293     ; CHECK: [[XTNv2i32_:%[0-9]+]]:fpr64 = XTNv2i32 [[CMHSv2i64_]]
1294     ; CHECK: $d0 = COPY [[XTNv2i32_]]
1295     ; CHECK: RET_ReallyLR implicit $d0
1296     %0:fpr(<2 x s64>) = COPY $q0
1297     %1:fpr(<2 x s64>) = COPY $q1
1298     %4:fpr(<2 x s64>) = G_ICMP intpred(uge), %0(<2 x s64>), %1
1299     %3:fpr(<2 x s32>) = G_TRUNC %4(<2 x s64>)
1300     $d0 = COPY %3(<2 x s32>)
1301     RET_ReallyLR implicit $d0
1305 name:            test_v4i32_uge
1306 alignment:       4
1307 legalized:       true
1308 regBankSelected: true
1309 tracksRegLiveness: true
1310 registers:
1311   - { id: 0, class: fpr }
1312   - { id: 1, class: fpr }
1313   - { id: 2, class: _ }
1314   - { id: 3, class: fpr }
1315   - { id: 4, class: fpr }
1316 machineFunctionInfo: {}
1317 body:             |
1318   bb.1 (%ir-block.0):
1319     liveins: $q0, $q1
1321     ; CHECK-LABEL: name: test_v4i32_uge
1322     ; CHECK: liveins: $q0, $q1
1323     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
1324     ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
1325     ; CHECK: [[CMHSv4i32_:%[0-9]+]]:fpr128 = CMHSv4i32 [[COPY]], [[COPY1]]
1326     ; CHECK: [[XTNv4i16_:%[0-9]+]]:fpr64 = XTNv4i16 [[CMHSv4i32_]]
1327     ; CHECK: $d0 = COPY [[XTNv4i16_]]
1328     ; CHECK: RET_ReallyLR implicit $d0
1329     %0:fpr(<4 x s32>) = COPY $q0
1330     %1:fpr(<4 x s32>) = COPY $q1
1331     %4:fpr(<4 x s32>) = G_ICMP intpred(uge), %0(<4 x s32>), %1
1332     %3:fpr(<4 x s16>) = G_TRUNC %4(<4 x s32>)
1333     $d0 = COPY %3(<4 x s16>)
1334     RET_ReallyLR implicit $d0
1338 name:            test_v2i32_uge
1339 alignment:       4
1340 legalized:       true
1341 regBankSelected: true
1342 tracksRegLiveness: true
1343 registers:
1344   - { id: 0, class: fpr }
1345   - { id: 1, class: fpr }
1346   - { id: 2, class: _ }
1347   - { id: 3, class: fpr }
1348   - { id: 4, class: fpr }
1349 machineFunctionInfo: {}
1350 body:             |
1351   bb.1 (%ir-block.0):
1352     liveins: $d0, $d1
1354     ; CHECK-LABEL: name: test_v2i32_uge
1355     ; CHECK: liveins: $d0, $d1
1356     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
1357     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
1358     ; CHECK: [[CMHSv2i32_:%[0-9]+]]:fpr64 = CMHSv2i32 [[COPY]], [[COPY1]]
1359     ; CHECK: $d0 = COPY [[CMHSv2i32_]]
1360     ; CHECK: RET_ReallyLR implicit $d0
1361     %0:fpr(<2 x s32>) = COPY $d0
1362     %1:fpr(<2 x s32>) = COPY $d1
1363     %4:fpr(<2 x s32>) = G_ICMP intpred(uge), %0(<2 x s32>), %1
1364     %3:fpr(<2 x s32>) = COPY %4(<2 x s32>)
1365     $d0 = COPY %3(<2 x s32>)
1366     RET_ReallyLR implicit $d0
1370 name:            test_v2i16_uge
1371 alignment:       4
1372 legalized:       true
1373 regBankSelected: true
1374 tracksRegLiveness: true
1375 registers:
1376   - { id: 0, class: _ }
1377   - { id: 1, class: _ }
1378   - { id: 2, class: fpr }
1379   - { id: 3, class: fpr }
1380   - { id: 4, class: _ }
1381   - { id: 5, class: fpr }
1382   - { id: 6, class: _ }
1383   - { id: 7, class: fpr }
1384   - { id: 8, class: fpr }
1385   - { id: 9, class: fpr }
1386   - { id: 10, class: gpr }
1387   - { id: 11, class: fpr }
1388   - { id: 12, class: fpr }
1389   - { id: 13, class: gpr }
1390   - { id: 14, class: fpr }
1391   - { id: 15, class: fpr }
1392 machineFunctionInfo: {}
1393 body:             |
1394   bb.1 (%ir-block.0):
1395     liveins: $d0, $d1
1397     ; CHECK-LABEL: name: test_v2i16_uge
1398     ; CHECK: liveins: $d0, $d1
1399     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
1400     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
1401     ; CHECK: [[ADRP:%[0-9]+]]:gpr64common = ADRP target-flags(aarch64-page) %const.0
1402     ; CHECK: [[LDRDui:%[0-9]+]]:fpr64 = LDRDui [[ADRP]], target-flags(aarch64-pageoff, aarch64-nc) %const.0
1403     ; CHECK: [[ANDv8i8_:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY]], [[LDRDui]]
1404     ; CHECK: [[ADRP1:%[0-9]+]]:gpr64common = ADRP target-flags(aarch64-page) %const.0
1405     ; CHECK: [[LDRDui1:%[0-9]+]]:fpr64 = LDRDui [[ADRP1]], target-flags(aarch64-pageoff, aarch64-nc) %const.0
1406     ; CHECK: [[ANDv8i8_1:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY1]], [[LDRDui1]]
1407     ; CHECK: [[CMHSv2i32_:%[0-9]+]]:fpr64 = CMHSv2i32 [[ANDv8i8_]], [[ANDv8i8_1]]
1408     ; CHECK: $d0 = COPY [[CMHSv2i32_]]
1409     ; CHECK: RET_ReallyLR implicit $d0
1410     %2:fpr(<2 x s32>) = COPY $d0
1411     %3:fpr(<2 x s32>) = COPY $d1
1412     %13:gpr(s32) = G_CONSTANT i32 65535
1413     %14:fpr(<2 x s32>) = G_BUILD_VECTOR %13(s32), %13(s32)
1414     %15:fpr(<2 x s32>) = COPY %2(<2 x s32>)
1415     %7:fpr(<2 x s32>) = G_AND %15, %14
1416     %10:gpr(s32) = G_CONSTANT i32 65535
1417     %11:fpr(<2 x s32>) = G_BUILD_VECTOR %10(s32), %10(s32)
1418     %12:fpr(<2 x s32>) = COPY %3(<2 x s32>)
1419     %8:fpr(<2 x s32>) = G_AND %12, %11
1420     %9:fpr(<2 x s32>) = G_ICMP intpred(uge), %7(<2 x s32>), %8
1421     %5:fpr(<2 x s32>) = COPY %9(<2 x s32>)
1422     $d0 = COPY %5(<2 x s32>)
1423     RET_ReallyLR implicit $d0
1427 name:            test_v8i16_uge
1428 alignment:       4
1429 legalized:       true
1430 regBankSelected: true
1431 tracksRegLiveness: true
1432 registers:
1433   - { id: 0, class: fpr }
1434   - { id: 1, class: fpr }
1435   - { id: 2, class: _ }
1436   - { id: 3, class: fpr }
1437   - { id: 4, class: fpr }
1438 machineFunctionInfo: {}
1439 body:             |
1440   bb.1 (%ir-block.0):
1441     liveins: $q0, $q1
1443     ; CHECK-LABEL: name: test_v8i16_uge
1444     ; CHECK: liveins: $q0, $q1
1445     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
1446     ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
1447     ; CHECK: [[CMHSv8i16_:%[0-9]+]]:fpr128 = CMHSv8i16 [[COPY]], [[COPY1]]
1448     ; CHECK: [[XTNv8i8_:%[0-9]+]]:fpr64 = XTNv8i8 [[CMHSv8i16_]]
1449     ; CHECK: $d0 = COPY [[XTNv8i8_]]
1450     ; CHECK: RET_ReallyLR implicit $d0
1451     %0:fpr(<8 x s16>) = COPY $q0
1452     %1:fpr(<8 x s16>) = COPY $q1
1453     %4:fpr(<8 x s16>) = G_ICMP intpred(uge), %0(<8 x s16>), %1
1454     %3:fpr(<8 x s8>) = G_TRUNC %4(<8 x s16>)
1455     $d0 = COPY %3(<8 x s8>)
1456     RET_ReallyLR implicit $d0
1460 name:            test_v4i16_uge
1461 alignment:       4
1462 legalized:       true
1463 regBankSelected: true
1464 tracksRegLiveness: true
1465 registers:
1466   - { id: 0, class: fpr }
1467   - { id: 1, class: fpr }
1468   - { id: 2, class: _ }
1469   - { id: 3, class: fpr }
1470   - { id: 4, class: fpr }
1471 machineFunctionInfo: {}
1472 body:             |
1473   bb.1 (%ir-block.0):
1474     liveins: $d0, $d1
1476     ; CHECK-LABEL: name: test_v4i16_uge
1477     ; CHECK: liveins: $d0, $d1
1478     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
1479     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
1480     ; CHECK: [[CMHSv4i16_:%[0-9]+]]:fpr64 = CMHSv4i16 [[COPY]], [[COPY1]]
1481     ; CHECK: $d0 = COPY [[CMHSv4i16_]]
1482     ; CHECK: RET_ReallyLR implicit $d0
1483     %0:fpr(<4 x s16>) = COPY $d0
1484     %1:fpr(<4 x s16>) = COPY $d1
1485     %4:fpr(<4 x s16>) = G_ICMP intpred(uge), %0(<4 x s16>), %1
1486     %3:fpr(<4 x s16>) = COPY %4(<4 x s16>)
1487     $d0 = COPY %3(<4 x s16>)
1488     RET_ReallyLR implicit $d0
1492 name:            test_v16i8_uge
1493 alignment:       4
1494 legalized:       true
1495 regBankSelected: true
1496 tracksRegLiveness: true
1497 registers:
1498   - { id: 0, class: fpr }
1499   - { id: 1, class: fpr }
1500   - { id: 2, class: _ }
1501   - { id: 3, class: fpr }
1502   - { id: 4, class: fpr }
1503 machineFunctionInfo: {}
1504 body:             |
1505   bb.1 (%ir-block.0):
1506     liveins: $q0, $q1
1508     ; CHECK-LABEL: name: test_v16i8_uge
1509     ; CHECK: liveins: $q0, $q1
1510     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
1511     ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
1512     ; CHECK: [[CMHSv16i8_:%[0-9]+]]:fpr128 = CMHSv16i8 [[COPY]], [[COPY1]]
1513     ; CHECK: $q0 = COPY [[CMHSv16i8_]]
1514     ; CHECK: RET_ReallyLR implicit $q0
1515     %0:fpr(<16 x s8>) = COPY $q0
1516     %1:fpr(<16 x s8>) = COPY $q1
1517     %4:fpr(<16 x s8>) = G_ICMP intpred(uge), %0(<16 x s8>), %1
1518     %3:fpr(<16 x s8>) = COPY %4(<16 x s8>)
1519     $q0 = COPY %3(<16 x s8>)
1520     RET_ReallyLR implicit $q0
1524 name:            test_v8i8_uge
1525 alignment:       4
1526 legalized:       true
1527 regBankSelected: true
1528 tracksRegLiveness: true
1529 registers:
1530   - { id: 0, class: fpr }
1531   - { id: 1, class: fpr }
1532   - { id: 2, class: _ }
1533   - { id: 3, class: fpr }
1534   - { id: 4, class: fpr }
1535 machineFunctionInfo: {}
1536 body:             |
1537   bb.1 (%ir-block.0):
1538     liveins: $d0, $d1
1540     ; CHECK-LABEL: name: test_v8i8_uge
1541     ; CHECK: liveins: $d0, $d1
1542     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
1543     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
1544     ; CHECK: [[CMHSv8i8_:%[0-9]+]]:fpr64 = CMHSv8i8 [[COPY]], [[COPY1]]
1545     ; CHECK: $d0 = COPY [[CMHSv8i8_]]
1546     ; CHECK: RET_ReallyLR implicit $d0
1547     %0:fpr(<8 x s8>) = COPY $d0
1548     %1:fpr(<8 x s8>) = COPY $d1
1549     %4:fpr(<8 x s8>) = G_ICMP intpred(uge), %0(<8 x s8>), %1
1550     %3:fpr(<8 x s8>) = COPY %4(<8 x s8>)
1551     $d0 = COPY %3(<8 x s8>)
1552     RET_ReallyLR implicit $d0
1556 name:            test_v2i64_ult
1557 alignment:       4
1558 legalized:       true
1559 regBankSelected: true
1560 tracksRegLiveness: true
1561 registers:
1562   - { id: 0, class: fpr }
1563   - { id: 1, class: fpr }
1564   - { id: 2, class: _ }
1565   - { id: 3, class: fpr }
1566   - { id: 4, class: fpr }
1567 machineFunctionInfo: {}
1568 body:             |
1569   bb.1 (%ir-block.0):
1570     liveins: $q0, $q1
1572     ; CHECK-LABEL: name: test_v2i64_ult
1573     ; CHECK: liveins: $q0, $q1
1574     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
1575     ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
1576     ; CHECK: [[CMHIv2i64_:%[0-9]+]]:fpr128 = CMHIv2i64 [[COPY1]], [[COPY]]
1577     ; CHECK: [[XTNv2i32_:%[0-9]+]]:fpr64 = XTNv2i32 [[CMHIv2i64_]]
1578     ; CHECK: $d0 = COPY [[XTNv2i32_]]
1579     ; CHECK: RET_ReallyLR implicit $d0
1580     %0:fpr(<2 x s64>) = COPY $q0
1581     %1:fpr(<2 x s64>) = COPY $q1
1582     %4:fpr(<2 x s64>) = G_ICMP intpred(ult), %0(<2 x s64>), %1
1583     %3:fpr(<2 x s32>) = G_TRUNC %4(<2 x s64>)
1584     $d0 = COPY %3(<2 x s32>)
1585     RET_ReallyLR implicit $d0
1589 name:            test_v4i32_ult
1590 alignment:       4
1591 legalized:       true
1592 regBankSelected: true
1593 tracksRegLiveness: true
1594 registers:
1595   - { id: 0, class: fpr }
1596   - { id: 1, class: fpr }
1597   - { id: 2, class: _ }
1598   - { id: 3, class: fpr }
1599   - { id: 4, class: fpr }
1600 machineFunctionInfo: {}
1601 body:             |
1602   bb.1 (%ir-block.0):
1603     liveins: $q0, $q1
1605     ; CHECK-LABEL: name: test_v4i32_ult
1606     ; CHECK: liveins: $q0, $q1
1607     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
1608     ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
1609     ; CHECK: [[CMHIv4i32_:%[0-9]+]]:fpr128 = CMHIv4i32 [[COPY1]], [[COPY]]
1610     ; CHECK: [[XTNv4i16_:%[0-9]+]]:fpr64 = XTNv4i16 [[CMHIv4i32_]]
1611     ; CHECK: $d0 = COPY [[XTNv4i16_]]
1612     ; CHECK: RET_ReallyLR implicit $d0
1613     %0:fpr(<4 x s32>) = COPY $q0
1614     %1:fpr(<4 x s32>) = COPY $q1
1615     %4:fpr(<4 x s32>) = G_ICMP intpred(ult), %0(<4 x s32>), %1
1616     %3:fpr(<4 x s16>) = G_TRUNC %4(<4 x s32>)
1617     $d0 = COPY %3(<4 x s16>)
1618     RET_ReallyLR implicit $d0
1622 name:            test_v2i32_ult
1623 alignment:       4
1624 legalized:       true
1625 regBankSelected: true
1626 tracksRegLiveness: true
1627 registers:
1628   - { id: 0, class: fpr }
1629   - { id: 1, class: fpr }
1630   - { id: 2, class: _ }
1631   - { id: 3, class: fpr }
1632   - { id: 4, class: fpr }
1633 machineFunctionInfo: {}
1634 body:             |
1635   bb.1 (%ir-block.0):
1636     liveins: $d0, $d1
1638     ; CHECK-LABEL: name: test_v2i32_ult
1639     ; CHECK: liveins: $d0, $d1
1640     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
1641     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
1642     ; CHECK: [[CMHIv2i32_:%[0-9]+]]:fpr64 = CMHIv2i32 [[COPY1]], [[COPY]]
1643     ; CHECK: $d0 = COPY [[CMHIv2i32_]]
1644     ; CHECK: RET_ReallyLR implicit $d0
1645     %0:fpr(<2 x s32>) = COPY $d0
1646     %1:fpr(<2 x s32>) = COPY $d1
1647     %4:fpr(<2 x s32>) = G_ICMP intpred(ult), %0(<2 x s32>), %1
1648     %3:fpr(<2 x s32>) = COPY %4(<2 x s32>)
1649     $d0 = COPY %3(<2 x s32>)
1650     RET_ReallyLR implicit $d0
1654 name:            test_v2i16_ult
1655 alignment:       4
1656 legalized:       true
1657 regBankSelected: true
1658 tracksRegLiveness: true
1659 registers:
1660   - { id: 0, class: _ }
1661   - { id: 1, class: _ }
1662   - { id: 2, class: fpr }
1663   - { id: 3, class: fpr }
1664   - { id: 4, class: _ }
1665   - { id: 5, class: fpr }
1666   - { id: 6, class: _ }
1667   - { id: 7, class: fpr }
1668   - { id: 8, class: fpr }
1669   - { id: 9, class: fpr }
1670   - { id: 10, class: gpr }
1671   - { id: 11, class: fpr }
1672   - { id: 12, class: fpr }
1673   - { id: 13, class: gpr }
1674   - { id: 14, class: fpr }
1675   - { id: 15, class: fpr }
1676 machineFunctionInfo: {}
1677 body:             |
1678   bb.1 (%ir-block.0):
1679     liveins: $d0, $d1
1681     ; CHECK-LABEL: name: test_v2i16_ult
1682     ; CHECK: liveins: $d0, $d1
1683     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
1684     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
1685     ; CHECK: [[ADRP:%[0-9]+]]:gpr64common = ADRP target-flags(aarch64-page) %const.0
1686     ; CHECK: [[LDRDui:%[0-9]+]]:fpr64 = LDRDui [[ADRP]], target-flags(aarch64-pageoff, aarch64-nc) %const.0
1687     ; CHECK: [[ANDv8i8_:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY]], [[LDRDui]]
1688     ; CHECK: [[ADRP1:%[0-9]+]]:gpr64common = ADRP target-flags(aarch64-page) %const.0
1689     ; CHECK: [[LDRDui1:%[0-9]+]]:fpr64 = LDRDui [[ADRP1]], target-flags(aarch64-pageoff, aarch64-nc) %const.0
1690     ; CHECK: [[ANDv8i8_1:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY1]], [[LDRDui1]]
1691     ; CHECK: [[CMHIv2i32_:%[0-9]+]]:fpr64 = CMHIv2i32 [[ANDv8i8_1]], [[ANDv8i8_]]
1692     ; CHECK: $d0 = COPY [[CMHIv2i32_]]
1693     ; CHECK: RET_ReallyLR implicit $d0
1694     %2:fpr(<2 x s32>) = COPY $d0
1695     %3:fpr(<2 x s32>) = COPY $d1
1696     %13:gpr(s32) = G_CONSTANT i32 65535
1697     %14:fpr(<2 x s32>) = G_BUILD_VECTOR %13(s32), %13(s32)
1698     %15:fpr(<2 x s32>) = COPY %2(<2 x s32>)
1699     %7:fpr(<2 x s32>) = G_AND %15, %14
1700     %10:gpr(s32) = G_CONSTANT i32 65535
1701     %11:fpr(<2 x s32>) = G_BUILD_VECTOR %10(s32), %10(s32)
1702     %12:fpr(<2 x s32>) = COPY %3(<2 x s32>)
1703     %8:fpr(<2 x s32>) = G_AND %12, %11
1704     %9:fpr(<2 x s32>) = G_ICMP intpred(ult), %7(<2 x s32>), %8
1705     %5:fpr(<2 x s32>) = COPY %9(<2 x s32>)
1706     $d0 = COPY %5(<2 x s32>)
1707     RET_ReallyLR implicit $d0
1711 name:            test_v8i16_ult
1712 alignment:       4
1713 legalized:       true
1714 regBankSelected: true
1715 tracksRegLiveness: true
1716 registers:
1717   - { id: 0, class: fpr }
1718   - { id: 1, class: fpr }
1719   - { id: 2, class: _ }
1720   - { id: 3, class: fpr }
1721   - { id: 4, class: fpr }
1722 machineFunctionInfo: {}
1723 body:             |
1724   bb.1 (%ir-block.0):
1725     liveins: $q0, $q1
1727     ; CHECK-LABEL: name: test_v8i16_ult
1728     ; CHECK: liveins: $q0, $q1
1729     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
1730     ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
1731     ; CHECK: [[CMHIv8i16_:%[0-9]+]]:fpr128 = CMHIv8i16 [[COPY1]], [[COPY]]
1732     ; CHECK: [[XTNv8i8_:%[0-9]+]]:fpr64 = XTNv8i8 [[CMHIv8i16_]]
1733     ; CHECK: $d0 = COPY [[XTNv8i8_]]
1734     ; CHECK: RET_ReallyLR implicit $d0
1735     %0:fpr(<8 x s16>) = COPY $q0
1736     %1:fpr(<8 x s16>) = COPY $q1
1737     %4:fpr(<8 x s16>) = G_ICMP intpred(ult), %0(<8 x s16>), %1
1738     %3:fpr(<8 x s8>) = G_TRUNC %4(<8 x s16>)
1739     $d0 = COPY %3(<8 x s8>)
1740     RET_ReallyLR implicit $d0
1744 name:            test_v4i16_ult
1745 alignment:       4
1746 legalized:       true
1747 regBankSelected: true
1748 tracksRegLiveness: true
1749 registers:
1750   - { id: 0, class: fpr }
1751   - { id: 1, class: fpr }
1752   - { id: 2, class: _ }
1753   - { id: 3, class: fpr }
1754   - { id: 4, class: fpr }
1755 machineFunctionInfo: {}
1756 body:             |
1757   bb.1 (%ir-block.0):
1758     liveins: $d0, $d1
1760     ; CHECK-LABEL: name: test_v4i16_ult
1761     ; CHECK: liveins: $d0, $d1
1762     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
1763     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
1764     ; CHECK: [[CMHIv4i16_:%[0-9]+]]:fpr64 = CMHIv4i16 [[COPY1]], [[COPY]]
1765     ; CHECK: $d0 = COPY [[CMHIv4i16_]]
1766     ; CHECK: RET_ReallyLR implicit $d0
1767     %0:fpr(<4 x s16>) = COPY $d0
1768     %1:fpr(<4 x s16>) = COPY $d1
1769     %4:fpr(<4 x s16>) = G_ICMP intpred(ult), %0(<4 x s16>), %1
1770     %3:fpr(<4 x s16>) = COPY %4(<4 x s16>)
1771     $d0 = COPY %3(<4 x s16>)
1772     RET_ReallyLR implicit $d0
1776 name:            test_v16i8_ult
1777 alignment:       4
1778 legalized:       true
1779 regBankSelected: true
1780 tracksRegLiveness: true
1781 registers:
1782   - { id: 0, class: fpr }
1783   - { id: 1, class: fpr }
1784   - { id: 2, class: _ }
1785   - { id: 3, class: fpr }
1786   - { id: 4, class: fpr }
1787 machineFunctionInfo: {}
1788 body:             |
1789   bb.1 (%ir-block.0):
1790     liveins: $q0, $q1
1792     ; CHECK-LABEL: name: test_v16i8_ult
1793     ; CHECK: liveins: $q0, $q1
1794     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
1795     ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
1796     ; CHECK: [[CMHIv16i8_:%[0-9]+]]:fpr128 = CMHIv16i8 [[COPY1]], [[COPY]]
1797     ; CHECK: $q0 = COPY [[CMHIv16i8_]]
1798     ; CHECK: RET_ReallyLR implicit $q0
1799     %0:fpr(<16 x s8>) = COPY $q0
1800     %1:fpr(<16 x s8>) = COPY $q1
1801     %4:fpr(<16 x s8>) = G_ICMP intpred(ult), %0(<16 x s8>), %1
1802     %3:fpr(<16 x s8>) = COPY %4(<16 x s8>)
1803     $q0 = COPY %3(<16 x s8>)
1804     RET_ReallyLR implicit $q0
1808 name:            test_v8i8_ult
1809 alignment:       4
1810 legalized:       true
1811 regBankSelected: true
1812 tracksRegLiveness: true
1813 registers:
1814   - { id: 0, class: fpr }
1815   - { id: 1, class: fpr }
1816   - { id: 2, class: _ }
1817   - { id: 3, class: fpr }
1818   - { id: 4, class: fpr }
1819 machineFunctionInfo: {}
1820 body:             |
1821   bb.1 (%ir-block.0):
1822     liveins: $d0, $d1
1824     ; CHECK-LABEL: name: test_v8i8_ult
1825     ; CHECK: liveins: $d0, $d1
1826     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
1827     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
1828     ; CHECK: [[CMHIv8i8_:%[0-9]+]]:fpr64 = CMHIv8i8 [[COPY1]], [[COPY]]
1829     ; CHECK: $d0 = COPY [[CMHIv8i8_]]
1830     ; CHECK: RET_ReallyLR implicit $d0
1831     %0:fpr(<8 x s8>) = COPY $d0
1832     %1:fpr(<8 x s8>) = COPY $d1
1833     %4:fpr(<8 x s8>) = G_ICMP intpred(ult), %0(<8 x s8>), %1
1834     %3:fpr(<8 x s8>) = COPY %4(<8 x s8>)
1835     $d0 = COPY %3(<8 x s8>)
1836     RET_ReallyLR implicit $d0
1840 name:            test_v2i64_ule
1841 alignment:       4
1842 legalized:       true
1843 regBankSelected: true
1844 tracksRegLiveness: true
1845 registers:
1846   - { id: 0, class: fpr }
1847   - { id: 1, class: fpr }
1848   - { id: 2, class: _ }
1849   - { id: 3, class: fpr }
1850   - { id: 4, class: fpr }
1851 machineFunctionInfo: {}
1852 body:             |
1853   bb.1 (%ir-block.0):
1854     liveins: $q0, $q1
1856     ; CHECK-LABEL: name: test_v2i64_ule
1857     ; CHECK: liveins: $q0, $q1
1858     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
1859     ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
1860     ; CHECK: [[CMHSv2i64_:%[0-9]+]]:fpr128 = CMHSv2i64 [[COPY1]], [[COPY]]
1861     ; CHECK: [[XTNv2i32_:%[0-9]+]]:fpr64 = XTNv2i32 [[CMHSv2i64_]]
1862     ; CHECK: $d0 = COPY [[XTNv2i32_]]
1863     ; CHECK: RET_ReallyLR implicit $d0
1864     %0:fpr(<2 x s64>) = COPY $q0
1865     %1:fpr(<2 x s64>) = COPY $q1
1866     %4:fpr(<2 x s64>) = G_ICMP intpred(ule), %0(<2 x s64>), %1
1867     %3:fpr(<2 x s32>) = G_TRUNC %4(<2 x s64>)
1868     $d0 = COPY %3(<2 x s32>)
1869     RET_ReallyLR implicit $d0
1873 name:            test_v4i32_ule
1874 alignment:       4
1875 legalized:       true
1876 regBankSelected: true
1877 tracksRegLiveness: true
1878 registers:
1879   - { id: 0, class: fpr }
1880   - { id: 1, class: fpr }
1881   - { id: 2, class: _ }
1882   - { id: 3, class: fpr }
1883   - { id: 4, class: fpr }
1884 machineFunctionInfo: {}
1885 body:             |
1886   bb.1 (%ir-block.0):
1887     liveins: $q0, $q1
1889     ; CHECK-LABEL: name: test_v4i32_ule
1890     ; CHECK: liveins: $q0, $q1
1891     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
1892     ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
1893     ; CHECK: [[CMHSv4i32_:%[0-9]+]]:fpr128 = CMHSv4i32 [[COPY1]], [[COPY]]
1894     ; CHECK: [[XTNv4i16_:%[0-9]+]]:fpr64 = XTNv4i16 [[CMHSv4i32_]]
1895     ; CHECK: $d0 = COPY [[XTNv4i16_]]
1896     ; CHECK: RET_ReallyLR implicit $d0
1897     %0:fpr(<4 x s32>) = COPY $q0
1898     %1:fpr(<4 x s32>) = COPY $q1
1899     %4:fpr(<4 x s32>) = G_ICMP intpred(ule), %0(<4 x s32>), %1
1900     %3:fpr(<4 x s16>) = G_TRUNC %4(<4 x s32>)
1901     $d0 = COPY %3(<4 x s16>)
1902     RET_ReallyLR implicit $d0
1906 name:            test_v2i32_ule
1907 alignment:       4
1908 legalized:       true
1909 regBankSelected: true
1910 tracksRegLiveness: true
1911 registers:
1912   - { id: 0, class: fpr }
1913   - { id: 1, class: fpr }
1914   - { id: 2, class: _ }
1915   - { id: 3, class: fpr }
1916   - { id: 4, class: fpr }
1917 machineFunctionInfo: {}
1918 body:             |
1919   bb.1 (%ir-block.0):
1920     liveins: $d0, $d1
1922     ; CHECK-LABEL: name: test_v2i32_ule
1923     ; CHECK: liveins: $d0, $d1
1924     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
1925     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
1926     ; CHECK: [[CMHSv2i32_:%[0-9]+]]:fpr64 = CMHSv2i32 [[COPY1]], [[COPY]]
1927     ; CHECK: $d0 = COPY [[CMHSv2i32_]]
1928     ; CHECK: RET_ReallyLR implicit $d0
1929     %0:fpr(<2 x s32>) = COPY $d0
1930     %1:fpr(<2 x s32>) = COPY $d1
1931     %4:fpr(<2 x s32>) = G_ICMP intpred(ule), %0(<2 x s32>), %1
1932     %3:fpr(<2 x s32>) = COPY %4(<2 x s32>)
1933     $d0 = COPY %3(<2 x s32>)
1934     RET_ReallyLR implicit $d0
1938 name:            test_v2i16_ule
1939 alignment:       4
1940 legalized:       true
1941 regBankSelected: true
1942 tracksRegLiveness: true
1943 registers:
1944   - { id: 0, class: _ }
1945   - { id: 1, class: _ }
1946   - { id: 2, class: fpr }
1947   - { id: 3, class: fpr }
1948   - { id: 4, class: _ }
1949   - { id: 5, class: fpr }
1950   - { id: 6, class: _ }
1951   - { id: 7, class: fpr }
1952   - { id: 8, class: fpr }
1953   - { id: 9, class: fpr }
1954   - { id: 10, class: gpr }
1955   - { id: 11, class: fpr }
1956   - { id: 12, class: fpr }
1957   - { id: 13, class: gpr }
1958   - { id: 14, class: fpr }
1959   - { id: 15, class: fpr }
1960 machineFunctionInfo: {}
1961 body:             |
1962   bb.1 (%ir-block.0):
1963     liveins: $d0, $d1
1965     ; CHECK-LABEL: name: test_v2i16_ule
1966     ; CHECK: liveins: $d0, $d1
1967     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
1968     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
1969     ; CHECK: [[ADRP:%[0-9]+]]:gpr64common = ADRP target-flags(aarch64-page) %const.0
1970     ; CHECK: [[LDRDui:%[0-9]+]]:fpr64 = LDRDui [[ADRP]], target-flags(aarch64-pageoff, aarch64-nc) %const.0
1971     ; CHECK: [[ANDv8i8_:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY]], [[LDRDui]]
1972     ; CHECK: [[ADRP1:%[0-9]+]]:gpr64common = ADRP target-flags(aarch64-page) %const.0
1973     ; CHECK: [[LDRDui1:%[0-9]+]]:fpr64 = LDRDui [[ADRP1]], target-flags(aarch64-pageoff, aarch64-nc) %const.0
1974     ; CHECK: [[ANDv8i8_1:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY1]], [[LDRDui1]]
1975     ; CHECK: [[CMHSv2i32_:%[0-9]+]]:fpr64 = CMHSv2i32 [[ANDv8i8_1]], [[ANDv8i8_]]
1976     ; CHECK: $d0 = COPY [[CMHSv2i32_]]
1977     ; CHECK: RET_ReallyLR implicit $d0
1978     %2:fpr(<2 x s32>) = COPY $d0
1979     %3:fpr(<2 x s32>) = COPY $d1
1980     %13:gpr(s32) = G_CONSTANT i32 65535
1981     %14:fpr(<2 x s32>) = G_BUILD_VECTOR %13(s32), %13(s32)
1982     %15:fpr(<2 x s32>) = COPY %2(<2 x s32>)
1983     %7:fpr(<2 x s32>) = G_AND %15, %14
1984     %10:gpr(s32) = G_CONSTANT i32 65535
1985     %11:fpr(<2 x s32>) = G_BUILD_VECTOR %10(s32), %10(s32)
1986     %12:fpr(<2 x s32>) = COPY %3(<2 x s32>)
1987     %8:fpr(<2 x s32>) = G_AND %12, %11
1988     %9:fpr(<2 x s32>) = G_ICMP intpred(ule), %7(<2 x s32>), %8
1989     %5:fpr(<2 x s32>) = COPY %9(<2 x s32>)
1990     $d0 = COPY %5(<2 x s32>)
1991     RET_ReallyLR implicit $d0
1995 name:            test_v8i16_ule
1996 alignment:       4
1997 legalized:       true
1998 regBankSelected: true
1999 tracksRegLiveness: true
2000 registers:
2001   - { id: 0, class: fpr }
2002   - { id: 1, class: fpr }
2003   - { id: 2, class: _ }
2004   - { id: 3, class: fpr }
2005   - { id: 4, class: fpr }
2006 machineFunctionInfo: {}
2007 body:             |
2008   bb.1 (%ir-block.0):
2009     liveins: $q0, $q1
2011     ; CHECK-LABEL: name: test_v8i16_ule
2012     ; CHECK: liveins: $q0, $q1
2013     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
2014     ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
2015     ; CHECK: [[CMHSv8i16_:%[0-9]+]]:fpr128 = CMHSv8i16 [[COPY1]], [[COPY]]
2016     ; CHECK: [[XTNv8i8_:%[0-9]+]]:fpr64 = XTNv8i8 [[CMHSv8i16_]]
2017     ; CHECK: $d0 = COPY [[XTNv8i8_]]
2018     ; CHECK: RET_ReallyLR implicit $d0
2019     %0:fpr(<8 x s16>) = COPY $q0
2020     %1:fpr(<8 x s16>) = COPY $q1
2021     %4:fpr(<8 x s16>) = G_ICMP intpred(ule), %0(<8 x s16>), %1
2022     %3:fpr(<8 x s8>) = G_TRUNC %4(<8 x s16>)
2023     $d0 = COPY %3(<8 x s8>)
2024     RET_ReallyLR implicit $d0
2028 name:            test_v4i16_ule
2029 alignment:       4
2030 legalized:       true
2031 regBankSelected: true
2032 tracksRegLiveness: true
2033 registers:
2034   - { id: 0, class: fpr }
2035   - { id: 1, class: fpr }
2036   - { id: 2, class: _ }
2037   - { id: 3, class: fpr }
2038   - { id: 4, class: fpr }
2039 machineFunctionInfo: {}
2040 body:             |
2041   bb.1 (%ir-block.0):
2042     liveins: $d0, $d1
2044     ; CHECK-LABEL: name: test_v4i16_ule
2045     ; CHECK: liveins: $d0, $d1
2046     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
2047     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
2048     ; CHECK: [[CMHSv4i16_:%[0-9]+]]:fpr64 = CMHSv4i16 [[COPY1]], [[COPY]]
2049     ; CHECK: $d0 = COPY [[CMHSv4i16_]]
2050     ; CHECK: RET_ReallyLR implicit $d0
2051     %0:fpr(<4 x s16>) = COPY $d0
2052     %1:fpr(<4 x s16>) = COPY $d1
2053     %4:fpr(<4 x s16>) = G_ICMP intpred(ule), %0(<4 x s16>), %1
2054     %3:fpr(<4 x s16>) = COPY %4(<4 x s16>)
2055     $d0 = COPY %3(<4 x s16>)
2056     RET_ReallyLR implicit $d0
2060 name:            test_v16i8_ule
2061 alignment:       4
2062 legalized:       true
2063 regBankSelected: true
2064 tracksRegLiveness: true
2065 registers:
2066   - { id: 0, class: fpr }
2067   - { id: 1, class: fpr }
2068   - { id: 2, class: _ }
2069   - { id: 3, class: fpr }
2070   - { id: 4, class: fpr }
2071 machineFunctionInfo: {}
2072 body:             |
2073   bb.1 (%ir-block.0):
2074     liveins: $q0, $q1
2076     ; CHECK-LABEL: name: test_v16i8_ule
2077     ; CHECK: liveins: $q0, $q1
2078     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
2079     ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
2080     ; CHECK: [[CMHSv16i8_:%[0-9]+]]:fpr128 = CMHSv16i8 [[COPY1]], [[COPY]]
2081     ; CHECK: $q0 = COPY [[CMHSv16i8_]]
2082     ; CHECK: RET_ReallyLR implicit $q0
2083     %0:fpr(<16 x s8>) = COPY $q0
2084     %1:fpr(<16 x s8>) = COPY $q1
2085     %4:fpr(<16 x s8>) = G_ICMP intpred(ule), %0(<16 x s8>), %1
2086     %3:fpr(<16 x s8>) = COPY %4(<16 x s8>)
2087     $q0 = COPY %3(<16 x s8>)
2088     RET_ReallyLR implicit $q0
2092 name:            test_v8i8_ule
2093 alignment:       4
2094 legalized:       true
2095 regBankSelected: true
2096 tracksRegLiveness: true
2097 registers:
2098   - { id: 0, class: fpr }
2099   - { id: 1, class: fpr }
2100   - { id: 2, class: _ }
2101   - { id: 3, class: fpr }
2102   - { id: 4, class: fpr }
2103 machineFunctionInfo: {}
2104 body:             |
2105   bb.1 (%ir-block.0):
2106     liveins: $d0, $d1
2108     ; CHECK-LABEL: name: test_v8i8_ule
2109     ; CHECK: liveins: $d0, $d1
2110     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
2111     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
2112     ; CHECK: [[CMHSv8i8_:%[0-9]+]]:fpr64 = CMHSv8i8 [[COPY1]], [[COPY]]
2113     ; CHECK: $d0 = COPY [[CMHSv8i8_]]
2114     ; CHECK: RET_ReallyLR implicit $d0
2115     %0:fpr(<8 x s8>) = COPY $d0
2116     %1:fpr(<8 x s8>) = COPY $d1
2117     %4:fpr(<8 x s8>) = G_ICMP intpred(ule), %0(<8 x s8>), %1
2118     %3:fpr(<8 x s8>) = COPY %4(<8 x s8>)
2119     $d0 = COPY %3(<8 x s8>)
2120     RET_ReallyLR implicit $d0
2124 name:            test_v2i64_sgt
2125 alignment:       4
2126 legalized:       true
2127 regBankSelected: true
2128 tracksRegLiveness: true
2129 registers:
2130   - { id: 0, class: fpr }
2131   - { id: 1, class: fpr }
2132   - { id: 2, class: _ }
2133   - { id: 3, class: fpr }
2134   - { id: 4, class: fpr }
2135 machineFunctionInfo: {}
2136 body:             |
2137   bb.1 (%ir-block.0):
2138     liveins: $q0, $q1
2140     ; CHECK-LABEL: name: test_v2i64_sgt
2141     ; CHECK: liveins: $q0, $q1
2142     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
2143     ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
2144     ; CHECK: [[CMGTv2i64_:%[0-9]+]]:fpr128 = CMGTv2i64 [[COPY]], [[COPY1]]
2145     ; CHECK: [[XTNv2i32_:%[0-9]+]]:fpr64 = XTNv2i32 [[CMGTv2i64_]]
2146     ; CHECK: $d0 = COPY [[XTNv2i32_]]
2147     ; CHECK: RET_ReallyLR implicit $d0
2148     %0:fpr(<2 x s64>) = COPY $q0
2149     %1:fpr(<2 x s64>) = COPY $q1
2150     %4:fpr(<2 x s64>) = G_ICMP intpred(sgt), %0(<2 x s64>), %1
2151     %3:fpr(<2 x s32>) = G_TRUNC %4(<2 x s64>)
2152     $d0 = COPY %3(<2 x s32>)
2153     RET_ReallyLR implicit $d0
2157 name:            test_v4i32_sgt
2158 alignment:       4
2159 legalized:       true
2160 regBankSelected: true
2161 tracksRegLiveness: true
2162 registers:
2163   - { id: 0, class: fpr }
2164   - { id: 1, class: fpr }
2165   - { id: 2, class: _ }
2166   - { id: 3, class: fpr }
2167   - { id: 4, class: fpr }
2168 machineFunctionInfo: {}
2169 body:             |
2170   bb.1 (%ir-block.0):
2171     liveins: $q0, $q1
2173     ; CHECK-LABEL: name: test_v4i32_sgt
2174     ; CHECK: liveins: $q0, $q1
2175     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
2176     ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
2177     ; CHECK: [[CMGTv4i32_:%[0-9]+]]:fpr128 = CMGTv4i32 [[COPY]], [[COPY1]]
2178     ; CHECK: [[XTNv4i16_:%[0-9]+]]:fpr64 = XTNv4i16 [[CMGTv4i32_]]
2179     ; CHECK: $d0 = COPY [[XTNv4i16_]]
2180     ; CHECK: RET_ReallyLR implicit $d0
2181     %0:fpr(<4 x s32>) = COPY $q0
2182     %1:fpr(<4 x s32>) = COPY $q1
2183     %4:fpr(<4 x s32>) = G_ICMP intpred(sgt), %0(<4 x s32>), %1
2184     %3:fpr(<4 x s16>) = G_TRUNC %4(<4 x s32>)
2185     $d0 = COPY %3(<4 x s16>)
2186     RET_ReallyLR implicit $d0
2190 name:            test_v2i32_sgt
2191 alignment:       4
2192 legalized:       true
2193 regBankSelected: true
2194 tracksRegLiveness: true
2195 registers:
2196   - { id: 0, class: fpr }
2197   - { id: 1, class: fpr }
2198   - { id: 2, class: _ }
2199   - { id: 3, class: fpr }
2200   - { id: 4, class: fpr }
2201 machineFunctionInfo: {}
2202 body:             |
2203   bb.1 (%ir-block.0):
2204     liveins: $d0, $d1
2206     ; CHECK-LABEL: name: test_v2i32_sgt
2207     ; CHECK: liveins: $d0, $d1
2208     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
2209     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
2210     ; CHECK: [[CMGTv2i32_:%[0-9]+]]:fpr64 = CMGTv2i32 [[COPY]], [[COPY1]]
2211     ; CHECK: $d0 = COPY [[CMGTv2i32_]]
2212     ; CHECK: RET_ReallyLR implicit $d0
2213     %0:fpr(<2 x s32>) = COPY $d0
2214     %1:fpr(<2 x s32>) = COPY $d1
2215     %4:fpr(<2 x s32>) = G_ICMP intpred(sgt), %0(<2 x s32>), %1
2216     %3:fpr(<2 x s32>) = COPY %4(<2 x s32>)
2217     $d0 = COPY %3(<2 x s32>)
2218     RET_ReallyLR implicit $d0
2222 name:            test_v2i16_sgt
2223 alignment:       4
2224 legalized:       true
2225 regBankSelected: true
2226 tracksRegLiveness: true
2227 registers:
2228   - { id: 0, class: _ }
2229   - { id: 1, class: _ }
2230   - { id: 2, class: fpr }
2231   - { id: 3, class: fpr }
2232   - { id: 4, class: _ }
2233   - { id: 5, class: fpr }
2234   - { id: 6, class: _ }
2235   - { id: 7, class: fpr }
2236   - { id: 8, class: fpr }
2237   - { id: 9, class: fpr }
2238   - { id: 10, class: gpr }
2239   - { id: 11, class: fpr }
2240   - { id: 12, class: fpr }
2241   - { id: 13, class: fpr }
2242   - { id: 14, class: gpr }
2243   - { id: 15, class: fpr }
2244   - { id: 16, class: fpr }
2245   - { id: 17, class: fpr }
2246 machineFunctionInfo: {}
2247 body:             |
2248   bb.1 (%ir-block.0):
2249     liveins: $d0, $d1
2251     ; CHECK-LABEL: name: test_v2i16_sgt
2252     ; CHECK: liveins: $d0, $d1
2253     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
2254     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
2255     ; CHECK: [[ADRP:%[0-9]+]]:gpr64common = ADRP target-flags(aarch64-page) %const.0
2256     ; CHECK: [[LDRDui:%[0-9]+]]:fpr64 = LDRDui [[ADRP]], target-flags(aarch64-pageoff, aarch64-nc) %const.0
2257     ; CHECK: [[SHLv2i32_shift:%[0-9]+]]:fpr64 = SHLv2i32_shift [[COPY]], 16
2258     ; CHECK: [[NEGv2i32_:%[0-9]+]]:fpr64 = NEGv2i32 [[LDRDui]]
2259     ; CHECK: [[SSHLv2i32_:%[0-9]+]]:fpr64 = SSHLv2i32 [[SHLv2i32_shift]], [[NEGv2i32_]]
2260     ; CHECK: [[ADRP1:%[0-9]+]]:gpr64common = ADRP target-flags(aarch64-page) %const.0
2261     ; CHECK: [[LDRDui1:%[0-9]+]]:fpr64 = LDRDui [[ADRP1]], target-flags(aarch64-pageoff, aarch64-nc) %const.0
2262     ; CHECK: [[SHLv2i32_shift1:%[0-9]+]]:fpr64 = SHLv2i32_shift [[COPY1]], 16
2263     ; CHECK: [[NEGv2i32_1:%[0-9]+]]:fpr64 = NEGv2i32 [[LDRDui1]]
2264     ; CHECK: [[SSHLv2i32_1:%[0-9]+]]:fpr64 = SSHLv2i32 [[SHLv2i32_shift1]], [[NEGv2i32_1]]
2265     ; CHECK: [[CMGTv2i32_:%[0-9]+]]:fpr64 = CMGTv2i32 [[SSHLv2i32_]], [[SSHLv2i32_1]]
2266     ; CHECK: $d0 = COPY [[CMGTv2i32_]]
2267     ; CHECK: RET_ReallyLR implicit $d0
2268     %2:fpr(<2 x s32>) = COPY $d0
2269     %3:fpr(<2 x s32>) = COPY $d1
2270     %14:gpr(s32) = G_CONSTANT i32 16
2271     %15:fpr(<2 x s32>) = G_BUILD_VECTOR %14(s32), %14(s32)
2272     %16:fpr(<2 x s32>) = COPY %2(<2 x s32>)
2273     %17:fpr(<2 x s32>) = G_SHL %16, %15(<2 x s32>)
2274     %7:fpr(<2 x s32>) = G_ASHR %17, %15(<2 x s32>)
2275     %10:gpr(s32) = G_CONSTANT i32 16
2276     %11:fpr(<2 x s32>) = G_BUILD_VECTOR %10(s32), %10(s32)
2277     %12:fpr(<2 x s32>) = COPY %3(<2 x s32>)
2278     %13:fpr(<2 x s32>) = G_SHL %12, %11(<2 x s32>)
2279     %8:fpr(<2 x s32>) = G_ASHR %13, %11(<2 x s32>)
2280     %9:fpr(<2 x s32>) = G_ICMP intpred(sgt), %7(<2 x s32>), %8
2281     %5:fpr(<2 x s32>) = COPY %9(<2 x s32>)
2282     $d0 = COPY %5(<2 x s32>)
2283     RET_ReallyLR implicit $d0
2287 name:            test_v8i16_sgt
2288 alignment:       4
2289 legalized:       true
2290 regBankSelected: true
2291 tracksRegLiveness: true
2292 registers:
2293   - { id: 0, class: fpr }
2294   - { id: 1, class: fpr }
2295   - { id: 2, class: _ }
2296   - { id: 3, class: fpr }
2297   - { id: 4, class: fpr }
2298 machineFunctionInfo: {}
2299 body:             |
2300   bb.1 (%ir-block.0):
2301     liveins: $q0, $q1
2303     ; CHECK-LABEL: name: test_v8i16_sgt
2304     ; CHECK: liveins: $q0, $q1
2305     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
2306     ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
2307     ; CHECK: [[CMGTv8i16_:%[0-9]+]]:fpr128 = CMGTv8i16 [[COPY]], [[COPY1]]
2308     ; CHECK: [[XTNv8i8_:%[0-9]+]]:fpr64 = XTNv8i8 [[CMGTv8i16_]]
2309     ; CHECK: $d0 = COPY [[XTNv8i8_]]
2310     ; CHECK: RET_ReallyLR implicit $d0
2311     %0:fpr(<8 x s16>) = COPY $q0
2312     %1:fpr(<8 x s16>) = COPY $q1
2313     %4:fpr(<8 x s16>) = G_ICMP intpred(sgt), %0(<8 x s16>), %1
2314     %3:fpr(<8 x s8>) = G_TRUNC %4(<8 x s16>)
2315     $d0 = COPY %3(<8 x s8>)
2316     RET_ReallyLR implicit $d0
2320 name:            test_v4i16_sgt
2321 alignment:       4
2322 legalized:       true
2323 regBankSelected: true
2324 tracksRegLiveness: true
2325 registers:
2326   - { id: 0, class: fpr }
2327   - { id: 1, class: fpr }
2328   - { id: 2, class: _ }
2329   - { id: 3, class: fpr }
2330   - { id: 4, class: fpr }
2331 machineFunctionInfo: {}
2332 body:             |
2333   bb.1 (%ir-block.0):
2334     liveins: $d0, $d1
2336     ; CHECK-LABEL: name: test_v4i16_sgt
2337     ; CHECK: liveins: $d0, $d1
2338     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
2339     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
2340     ; CHECK: [[CMGTv4i16_:%[0-9]+]]:fpr64 = CMGTv4i16 [[COPY]], [[COPY1]]
2341     ; CHECK: $d0 = COPY [[CMGTv4i16_]]
2342     ; CHECK: RET_ReallyLR implicit $d0
2343     %0:fpr(<4 x s16>) = COPY $d0
2344     %1:fpr(<4 x s16>) = COPY $d1
2345     %4:fpr(<4 x s16>) = G_ICMP intpred(sgt), %0(<4 x s16>), %1
2346     %3:fpr(<4 x s16>) = COPY %4(<4 x s16>)
2347     $d0 = COPY %3(<4 x s16>)
2348     RET_ReallyLR implicit $d0
2352 name:            test_v16i8_sgt
2353 alignment:       4
2354 legalized:       true
2355 regBankSelected: true
2356 tracksRegLiveness: true
2357 registers:
2358   - { id: 0, class: fpr }
2359   - { id: 1, class: fpr }
2360   - { id: 2, class: _ }
2361   - { id: 3, class: fpr }
2362   - { id: 4, class: fpr }
2363 machineFunctionInfo: {}
2364 body:             |
2365   bb.1 (%ir-block.0):
2366     liveins: $q0, $q1
2368     ; CHECK-LABEL: name: test_v16i8_sgt
2369     ; CHECK: liveins: $q0, $q1
2370     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
2371     ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
2372     ; CHECK: [[CMGTv16i8_:%[0-9]+]]:fpr128 = CMGTv16i8 [[COPY]], [[COPY1]]
2373     ; CHECK: $q0 = COPY [[CMGTv16i8_]]
2374     ; CHECK: RET_ReallyLR implicit $q0
2375     %0:fpr(<16 x s8>) = COPY $q0
2376     %1:fpr(<16 x s8>) = COPY $q1
2377     %4:fpr(<16 x s8>) = G_ICMP intpred(sgt), %0(<16 x s8>), %1
2378     %3:fpr(<16 x s8>) = COPY %4(<16 x s8>)
2379     $q0 = COPY %3(<16 x s8>)
2380     RET_ReallyLR implicit $q0
2384 name:            test_v8i8_sgt
2385 alignment:       4
2386 legalized:       true
2387 regBankSelected: true
2388 tracksRegLiveness: true
2389 registers:
2390   - { id: 0, class: fpr }
2391   - { id: 1, class: fpr }
2392   - { id: 2, class: _ }
2393   - { id: 3, class: fpr }
2394   - { id: 4, class: fpr }
2395 machineFunctionInfo: {}
2396 body:             |
2397   bb.1 (%ir-block.0):
2398     liveins: $d0, $d1
2400     ; CHECK-LABEL: name: test_v8i8_sgt
2401     ; CHECK: liveins: $d0, $d1
2402     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
2403     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
2404     ; CHECK: [[CMGTv8i8_:%[0-9]+]]:fpr64 = CMGTv8i8 [[COPY]], [[COPY1]]
2405     ; CHECK: $d0 = COPY [[CMGTv8i8_]]
2406     ; CHECK: RET_ReallyLR implicit $d0
2407     %0:fpr(<8 x s8>) = COPY $d0
2408     %1:fpr(<8 x s8>) = COPY $d1
2409     %4:fpr(<8 x s8>) = G_ICMP intpred(sgt), %0(<8 x s8>), %1
2410     %3:fpr(<8 x s8>) = COPY %4(<8 x s8>)
2411     $d0 = COPY %3(<8 x s8>)
2412     RET_ReallyLR implicit $d0
2416 name:            test_v2i64_sge
2417 alignment:       4
2418 legalized:       true
2419 regBankSelected: true
2420 tracksRegLiveness: true
2421 registers:
2422   - { id: 0, class: fpr }
2423   - { id: 1, class: fpr }
2424   - { id: 2, class: _ }
2425   - { id: 3, class: fpr }
2426   - { id: 4, class: fpr }
2427 machineFunctionInfo: {}
2428 body:             |
2429   bb.1 (%ir-block.0):
2430     liveins: $q0, $q1
2432     ; CHECK-LABEL: name: test_v2i64_sge
2433     ; CHECK: liveins: $q0, $q1
2434     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
2435     ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
2436     ; CHECK: [[CMGEv2i64_:%[0-9]+]]:fpr128 = CMGEv2i64 [[COPY]], [[COPY1]]
2437     ; CHECK: [[XTNv2i32_:%[0-9]+]]:fpr64 = XTNv2i32 [[CMGEv2i64_]]
2438     ; CHECK: $d0 = COPY [[XTNv2i32_]]
2439     ; CHECK: RET_ReallyLR implicit $d0
2440     %0:fpr(<2 x s64>) = COPY $q0
2441     %1:fpr(<2 x s64>) = COPY $q1
2442     %4:fpr(<2 x s64>) = G_ICMP intpred(sge), %0(<2 x s64>), %1
2443     %3:fpr(<2 x s32>) = G_TRUNC %4(<2 x s64>)
2444     $d0 = COPY %3(<2 x s32>)
2445     RET_ReallyLR implicit $d0
2449 name:            test_v4i32_sge
2450 alignment:       4
2451 legalized:       true
2452 regBankSelected: true
2453 tracksRegLiveness: true
2454 registers:
2455   - { id: 0, class: fpr }
2456   - { id: 1, class: fpr }
2457   - { id: 2, class: _ }
2458   - { id: 3, class: fpr }
2459   - { id: 4, class: fpr }
2460 machineFunctionInfo: {}
2461 body:             |
2462   bb.1 (%ir-block.0):
2463     liveins: $q0, $q1
2465     ; CHECK-LABEL: name: test_v4i32_sge
2466     ; CHECK: liveins: $q0, $q1
2467     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
2468     ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
2469     ; CHECK: [[CMGEv4i32_:%[0-9]+]]:fpr128 = CMGEv4i32 [[COPY]], [[COPY1]]
2470     ; CHECK: [[XTNv4i16_:%[0-9]+]]:fpr64 = XTNv4i16 [[CMGEv4i32_]]
2471     ; CHECK: $d0 = COPY [[XTNv4i16_]]
2472     ; CHECK: RET_ReallyLR implicit $d0
2473     %0:fpr(<4 x s32>) = COPY $q0
2474     %1:fpr(<4 x s32>) = COPY $q1
2475     %4:fpr(<4 x s32>) = G_ICMP intpred(sge), %0(<4 x s32>), %1
2476     %3:fpr(<4 x s16>) = G_TRUNC %4(<4 x s32>)
2477     $d0 = COPY %3(<4 x s16>)
2478     RET_ReallyLR implicit $d0
2482 name:            test_v2i32_sge
2483 alignment:       4
2484 legalized:       true
2485 regBankSelected: true
2486 tracksRegLiveness: true
2487 registers:
2488   - { id: 0, class: fpr }
2489   - { id: 1, class: fpr }
2490   - { id: 2, class: _ }
2491   - { id: 3, class: fpr }
2492   - { id: 4, class: fpr }
2493 machineFunctionInfo: {}
2494 body:             |
2495   bb.1 (%ir-block.0):
2496     liveins: $d0, $d1
2498     ; CHECK-LABEL: name: test_v2i32_sge
2499     ; CHECK: liveins: $d0, $d1
2500     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
2501     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
2502     ; CHECK: [[CMGEv2i32_:%[0-9]+]]:fpr64 = CMGEv2i32 [[COPY]], [[COPY1]]
2503     ; CHECK: $d0 = COPY [[CMGEv2i32_]]
2504     ; CHECK: RET_ReallyLR implicit $d0
2505     %0:fpr(<2 x s32>) = COPY $d0
2506     %1:fpr(<2 x s32>) = COPY $d1
2507     %4:fpr(<2 x s32>) = G_ICMP intpred(sge), %0(<2 x s32>), %1
2508     %3:fpr(<2 x s32>) = COPY %4(<2 x s32>)
2509     $d0 = COPY %3(<2 x s32>)
2510     RET_ReallyLR implicit $d0
2514 name:            test_v2i16_sge
2515 alignment:       4
2516 legalized:       true
2517 regBankSelected: true
2518 tracksRegLiveness: true
2519 registers:
2520   - { id: 0, class: _ }
2521   - { id: 1, class: _ }
2522   - { id: 2, class: fpr }
2523   - { id: 3, class: fpr }
2524   - { id: 4, class: _ }
2525   - { id: 5, class: fpr }
2526   - { id: 6, class: _ }
2527   - { id: 7, class: fpr }
2528   - { id: 8, class: fpr }
2529   - { id: 9, class: fpr }
2530   - { id: 10, class: gpr }
2531   - { id: 11, class: fpr }
2532   - { id: 12, class: fpr }
2533   - { id: 13, class: fpr }
2534   - { id: 14, class: gpr }
2535   - { id: 15, class: fpr }
2536   - { id: 16, class: fpr }
2537   - { id: 17, class: fpr }
2538 machineFunctionInfo: {}
2539 body:             |
2540   bb.1 (%ir-block.0):
2541     liveins: $d0, $d1
2543     ; CHECK-LABEL: name: test_v2i16_sge
2544     ; CHECK: liveins: $d0, $d1
2545     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
2546     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
2547     ; CHECK: [[ADRP:%[0-9]+]]:gpr64common = ADRP target-flags(aarch64-page) %const.0
2548     ; CHECK: [[LDRDui:%[0-9]+]]:fpr64 = LDRDui [[ADRP]], target-flags(aarch64-pageoff, aarch64-nc) %const.0
2549     ; CHECK: [[SHLv2i32_shift:%[0-9]+]]:fpr64 = SHLv2i32_shift [[COPY]], 16
2550     ; CHECK: [[NEGv2i32_:%[0-9]+]]:fpr64 = NEGv2i32 [[LDRDui]]
2551     ; CHECK: [[SSHLv2i32_:%[0-9]+]]:fpr64 = SSHLv2i32 [[SHLv2i32_shift]], [[NEGv2i32_]]
2552     ; CHECK: [[ADRP1:%[0-9]+]]:gpr64common = ADRP target-flags(aarch64-page) %const.0
2553     ; CHECK: [[LDRDui1:%[0-9]+]]:fpr64 = LDRDui [[ADRP1]], target-flags(aarch64-pageoff, aarch64-nc) %const.0
2554     ; CHECK: [[SHLv2i32_shift1:%[0-9]+]]:fpr64 = SHLv2i32_shift [[COPY1]], 16
2555     ; CHECK: [[NEGv2i32_1:%[0-9]+]]:fpr64 = NEGv2i32 [[LDRDui1]]
2556     ; CHECK: [[SSHLv2i32_1:%[0-9]+]]:fpr64 = SSHLv2i32 [[SHLv2i32_shift1]], [[NEGv2i32_1]]
2557     ; CHECK: [[CMGEv2i32_:%[0-9]+]]:fpr64 = CMGEv2i32 [[SSHLv2i32_]], [[SSHLv2i32_1]]
2558     ; CHECK: $d0 = COPY [[CMGEv2i32_]]
2559     ; CHECK: RET_ReallyLR implicit $d0
2560     %2:fpr(<2 x s32>) = COPY $d0
2561     %3:fpr(<2 x s32>) = COPY $d1
2562     %14:gpr(s32) = G_CONSTANT i32 16
2563     %15:fpr(<2 x s32>) = G_BUILD_VECTOR %14(s32), %14(s32)
2564     %16:fpr(<2 x s32>) = COPY %2(<2 x s32>)
2565     %17:fpr(<2 x s32>) = G_SHL %16, %15(<2 x s32>)
2566     %7:fpr(<2 x s32>) = G_ASHR %17, %15(<2 x s32>)
2567     %10:gpr(s32) = G_CONSTANT i32 16
2568     %11:fpr(<2 x s32>) = G_BUILD_VECTOR %10(s32), %10(s32)
2569     %12:fpr(<2 x s32>) = COPY %3(<2 x s32>)
2570     %13:fpr(<2 x s32>) = G_SHL %12, %11(<2 x s32>)
2571     %8:fpr(<2 x s32>) = G_ASHR %13, %11(<2 x s32>)
2572     %9:fpr(<2 x s32>) = G_ICMP intpred(sge), %7(<2 x s32>), %8
2573     %5:fpr(<2 x s32>) = COPY %9(<2 x s32>)
2574     $d0 = COPY %5(<2 x s32>)
2575     RET_ReallyLR implicit $d0
2579 name:            test_v8i16_sge
2580 alignment:       4
2581 legalized:       true
2582 regBankSelected: true
2583 tracksRegLiveness: true
2584 registers:
2585   - { id: 0, class: fpr }
2586   - { id: 1, class: fpr }
2587   - { id: 2, class: _ }
2588   - { id: 3, class: fpr }
2589   - { id: 4, class: fpr }
2590 machineFunctionInfo: {}
2591 body:             |
2592   bb.1 (%ir-block.0):
2593     liveins: $q0, $q1
2595     ; CHECK-LABEL: name: test_v8i16_sge
2596     ; CHECK: liveins: $q0, $q1
2597     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
2598     ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
2599     ; CHECK: [[CMGEv8i16_:%[0-9]+]]:fpr128 = CMGEv8i16 [[COPY]], [[COPY1]]
2600     ; CHECK: [[XTNv8i8_:%[0-9]+]]:fpr64 = XTNv8i8 [[CMGEv8i16_]]
2601     ; CHECK: $d0 = COPY [[XTNv8i8_]]
2602     ; CHECK: RET_ReallyLR implicit $d0
2603     %0:fpr(<8 x s16>) = COPY $q0
2604     %1:fpr(<8 x s16>) = COPY $q1
2605     %4:fpr(<8 x s16>) = G_ICMP intpred(sge), %0(<8 x s16>), %1
2606     %3:fpr(<8 x s8>) = G_TRUNC %4(<8 x s16>)
2607     $d0 = COPY %3(<8 x s8>)
2608     RET_ReallyLR implicit $d0
2612 name:            test_v4i16_sge
2613 alignment:       4
2614 legalized:       true
2615 regBankSelected: true
2616 tracksRegLiveness: true
2617 registers:
2618   - { id: 0, class: fpr }
2619   - { id: 1, class: fpr }
2620   - { id: 2, class: _ }
2621   - { id: 3, class: fpr }
2622   - { id: 4, class: fpr }
2623 machineFunctionInfo: {}
2624 body:             |
2625   bb.1 (%ir-block.0):
2626     liveins: $d0, $d1
2628     ; CHECK-LABEL: name: test_v4i16_sge
2629     ; CHECK: liveins: $d0, $d1
2630     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
2631     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
2632     ; CHECK: [[CMGEv4i16_:%[0-9]+]]:fpr64 = CMGEv4i16 [[COPY]], [[COPY1]]
2633     ; CHECK: $d0 = COPY [[CMGEv4i16_]]
2634     ; CHECK: RET_ReallyLR implicit $d0
2635     %0:fpr(<4 x s16>) = COPY $d0
2636     %1:fpr(<4 x s16>) = COPY $d1
2637     %4:fpr(<4 x s16>) = G_ICMP intpred(sge), %0(<4 x s16>), %1
2638     %3:fpr(<4 x s16>) = COPY %4(<4 x s16>)
2639     $d0 = COPY %3(<4 x s16>)
2640     RET_ReallyLR implicit $d0
2644 name:            test_v16i8_sge
2645 alignment:       4
2646 legalized:       true
2647 regBankSelected: true
2648 tracksRegLiveness: true
2649 registers:
2650   - { id: 0, class: fpr }
2651   - { id: 1, class: fpr }
2652   - { id: 2, class: _ }
2653   - { id: 3, class: fpr }
2654   - { id: 4, class: fpr }
2655 machineFunctionInfo: {}
2656 body:             |
2657   bb.1 (%ir-block.0):
2658     liveins: $q0, $q1
2660     ; CHECK-LABEL: name: test_v16i8_sge
2661     ; CHECK: liveins: $q0, $q1
2662     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
2663     ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
2664     ; CHECK: [[CMGEv16i8_:%[0-9]+]]:fpr128 = CMGEv16i8 [[COPY]], [[COPY1]]
2665     ; CHECK: $q0 = COPY [[CMGEv16i8_]]
2666     ; CHECK: RET_ReallyLR implicit $q0
2667     %0:fpr(<16 x s8>) = COPY $q0
2668     %1:fpr(<16 x s8>) = COPY $q1
2669     %4:fpr(<16 x s8>) = G_ICMP intpred(sge), %0(<16 x s8>), %1
2670     %3:fpr(<16 x s8>) = COPY %4(<16 x s8>)
2671     $q0 = COPY %3(<16 x s8>)
2672     RET_ReallyLR implicit $q0
2676 name:            test_v8i8_sge
2677 alignment:       4
2678 legalized:       true
2679 regBankSelected: true
2680 tracksRegLiveness: true
2681 registers:
2682   - { id: 0, class: fpr }
2683   - { id: 1, class: fpr }
2684   - { id: 2, class: _ }
2685   - { id: 3, class: fpr }
2686   - { id: 4, class: fpr }
2687 machineFunctionInfo: {}
2688 body:             |
2689   bb.1 (%ir-block.0):
2690     liveins: $d0, $d1
2692     ; CHECK-LABEL: name: test_v8i8_sge
2693     ; CHECK: liveins: $d0, $d1
2694     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
2695     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
2696     ; CHECK: [[CMGEv8i8_:%[0-9]+]]:fpr64 = CMGEv8i8 [[COPY]], [[COPY1]]
2697     ; CHECK: $d0 = COPY [[CMGEv8i8_]]
2698     ; CHECK: RET_ReallyLR implicit $d0
2699     %0:fpr(<8 x s8>) = COPY $d0
2700     %1:fpr(<8 x s8>) = COPY $d1
2701     %4:fpr(<8 x s8>) = G_ICMP intpred(sge), %0(<8 x s8>), %1
2702     %3:fpr(<8 x s8>) = COPY %4(<8 x s8>)
2703     $d0 = COPY %3(<8 x s8>)
2704     RET_ReallyLR implicit $d0
2708 name:            test_v2i64_slt
2709 alignment:       4
2710 legalized:       true
2711 regBankSelected: true
2712 tracksRegLiveness: true
2713 registers:
2714   - { id: 0, class: fpr }
2715   - { id: 1, class: fpr }
2716   - { id: 2, class: _ }
2717   - { id: 3, class: fpr }
2718   - { id: 4, class: fpr }
2719 machineFunctionInfo: {}
2720 body:             |
2721   bb.1 (%ir-block.0):
2722     liveins: $q0, $q1
2724     ; CHECK-LABEL: name: test_v2i64_slt
2725     ; CHECK: liveins: $q0, $q1
2726     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
2727     ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
2728     ; CHECK: [[CMGTv2i64_:%[0-9]+]]:fpr128 = CMGTv2i64 [[COPY1]], [[COPY]]
2729     ; CHECK: [[XTNv2i32_:%[0-9]+]]:fpr64 = XTNv2i32 [[CMGTv2i64_]]
2730     ; CHECK: $d0 = COPY [[XTNv2i32_]]
2731     ; CHECK: RET_ReallyLR implicit $d0
2732     %0:fpr(<2 x s64>) = COPY $q0
2733     %1:fpr(<2 x s64>) = COPY $q1
2734     %4:fpr(<2 x s64>) = G_ICMP intpred(slt), %0(<2 x s64>), %1
2735     %3:fpr(<2 x s32>) = G_TRUNC %4(<2 x s64>)
2736     $d0 = COPY %3(<2 x s32>)
2737     RET_ReallyLR implicit $d0
2741 name:            test_v4i32_slt
2742 alignment:       4
2743 legalized:       true
2744 regBankSelected: true
2745 tracksRegLiveness: true
2746 registers:
2747   - { id: 0, class: fpr }
2748   - { id: 1, class: fpr }
2749   - { id: 2, class: _ }
2750   - { id: 3, class: fpr }
2751   - { id: 4, class: fpr }
2752 machineFunctionInfo: {}
2753 body:             |
2754   bb.1 (%ir-block.0):
2755     liveins: $q0, $q1
2757     ; CHECK-LABEL: name: test_v4i32_slt
2758     ; CHECK: liveins: $q0, $q1
2759     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
2760     ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
2761     ; CHECK: [[CMGTv4i32_:%[0-9]+]]:fpr128 = CMGTv4i32 [[COPY1]], [[COPY]]
2762     ; CHECK: [[XTNv4i16_:%[0-9]+]]:fpr64 = XTNv4i16 [[CMGTv4i32_]]
2763     ; CHECK: $d0 = COPY [[XTNv4i16_]]
2764     ; CHECK: RET_ReallyLR implicit $d0
2765     %0:fpr(<4 x s32>) = COPY $q0
2766     %1:fpr(<4 x s32>) = COPY $q1
2767     %4:fpr(<4 x s32>) = G_ICMP intpred(slt), %0(<4 x s32>), %1
2768     %3:fpr(<4 x s16>) = G_TRUNC %4(<4 x s32>)
2769     $d0 = COPY %3(<4 x s16>)
2770     RET_ReallyLR implicit $d0
2774 name:            test_v2i32_slt
2775 alignment:       4
2776 legalized:       true
2777 regBankSelected: true
2778 tracksRegLiveness: true
2779 registers:
2780   - { id: 0, class: fpr }
2781   - { id: 1, class: fpr }
2782   - { id: 2, class: _ }
2783   - { id: 3, class: fpr }
2784   - { id: 4, class: fpr }
2785 machineFunctionInfo: {}
2786 body:             |
2787   bb.1 (%ir-block.0):
2788     liveins: $d0, $d1
2790     ; CHECK-LABEL: name: test_v2i32_slt
2791     ; CHECK: liveins: $d0, $d1
2792     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
2793     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
2794     ; CHECK: [[CMGTv2i32_:%[0-9]+]]:fpr64 = CMGTv2i32 [[COPY1]], [[COPY]]
2795     ; CHECK: $d0 = COPY [[CMGTv2i32_]]
2796     ; CHECK: RET_ReallyLR implicit $d0
2797     %0:fpr(<2 x s32>) = COPY $d0
2798     %1:fpr(<2 x s32>) = COPY $d1
2799     %4:fpr(<2 x s32>) = G_ICMP intpred(slt), %0(<2 x s32>), %1
2800     %3:fpr(<2 x s32>) = COPY %4(<2 x s32>)
2801     $d0 = COPY %3(<2 x s32>)
2802     RET_ReallyLR implicit $d0
2806 name:            test_v2i16_slt
2807 alignment:       4
2808 legalized:       true
2809 regBankSelected: true
2810 tracksRegLiveness: true
2811 registers:
2812   - { id: 0, class: _ }
2813   - { id: 1, class: _ }
2814   - { id: 2, class: fpr }
2815   - { id: 3, class: fpr }
2816   - { id: 4, class: _ }
2817   - { id: 5, class: fpr }
2818   - { id: 6, class: _ }
2819   - { id: 7, class: fpr }
2820   - { id: 8, class: fpr }
2821   - { id: 9, class: fpr }
2822   - { id: 10, class: gpr }
2823   - { id: 11, class: fpr }
2824   - { id: 12, class: fpr }
2825   - { id: 13, class: fpr }
2826   - { id: 14, class: gpr }
2827   - { id: 15, class: fpr }
2828   - { id: 16, class: fpr }
2829   - { id: 17, class: fpr }
2830 machineFunctionInfo: {}
2831 body:             |
2832   bb.1 (%ir-block.0):
2833     liveins: $d0, $d1
2835     ; CHECK-LABEL: name: test_v2i16_slt
2836     ; CHECK: liveins: $d0, $d1
2837     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
2838     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
2839     ; CHECK: [[ADRP:%[0-9]+]]:gpr64common = ADRP target-flags(aarch64-page) %const.0
2840     ; CHECK: [[LDRDui:%[0-9]+]]:fpr64 = LDRDui [[ADRP]], target-flags(aarch64-pageoff, aarch64-nc) %const.0
2841     ; CHECK: [[SHLv2i32_shift:%[0-9]+]]:fpr64 = SHLv2i32_shift [[COPY]], 16
2842     ; CHECK: [[NEGv2i32_:%[0-9]+]]:fpr64 = NEGv2i32 [[LDRDui]]
2843     ; CHECK: [[SSHLv2i32_:%[0-9]+]]:fpr64 = SSHLv2i32 [[SHLv2i32_shift]], [[NEGv2i32_]]
2844     ; CHECK: [[ADRP1:%[0-9]+]]:gpr64common = ADRP target-flags(aarch64-page) %const.0
2845     ; CHECK: [[LDRDui1:%[0-9]+]]:fpr64 = LDRDui [[ADRP1]], target-flags(aarch64-pageoff, aarch64-nc) %const.0
2846     ; CHECK: [[SHLv2i32_shift1:%[0-9]+]]:fpr64 = SHLv2i32_shift [[COPY1]], 16
2847     ; CHECK: [[NEGv2i32_1:%[0-9]+]]:fpr64 = NEGv2i32 [[LDRDui1]]
2848     ; CHECK: [[SSHLv2i32_1:%[0-9]+]]:fpr64 = SSHLv2i32 [[SHLv2i32_shift1]], [[NEGv2i32_1]]
2849     ; CHECK: [[CMGTv2i32_:%[0-9]+]]:fpr64 = CMGTv2i32 [[SSHLv2i32_1]], [[SSHLv2i32_]]
2850     ; CHECK: $d0 = COPY [[CMGTv2i32_]]
2851     ; CHECK: RET_ReallyLR implicit $d0
2852     %2:fpr(<2 x s32>) = COPY $d0
2853     %3:fpr(<2 x s32>) = COPY $d1
2854     %14:gpr(s32) = G_CONSTANT i32 16
2855     %15:fpr(<2 x s32>) = G_BUILD_VECTOR %14(s32), %14(s32)
2856     %16:fpr(<2 x s32>) = COPY %2(<2 x s32>)
2857     %17:fpr(<2 x s32>) = G_SHL %16, %15(<2 x s32>)
2858     %7:fpr(<2 x s32>) = G_ASHR %17, %15(<2 x s32>)
2859     %10:gpr(s32) = G_CONSTANT i32 16
2860     %11:fpr(<2 x s32>) = G_BUILD_VECTOR %10(s32), %10(s32)
2861     %12:fpr(<2 x s32>) = COPY %3(<2 x s32>)
2862     %13:fpr(<2 x s32>) = G_SHL %12, %11(<2 x s32>)
2863     %8:fpr(<2 x s32>) = G_ASHR %13, %11(<2 x s32>)
2864     %9:fpr(<2 x s32>) = G_ICMP intpred(slt), %7(<2 x s32>), %8
2865     %5:fpr(<2 x s32>) = COPY %9(<2 x s32>)
2866     $d0 = COPY %5(<2 x s32>)
2867     RET_ReallyLR implicit $d0
2871 name:            test_v8i16_slt
2872 alignment:       4
2873 legalized:       true
2874 regBankSelected: true
2875 tracksRegLiveness: true
2876 registers:
2877   - { id: 0, class: fpr }
2878   - { id: 1, class: fpr }
2879   - { id: 2, class: _ }
2880   - { id: 3, class: fpr }
2881   - { id: 4, class: fpr }
2882 machineFunctionInfo: {}
2883 body:             |
2884   bb.1 (%ir-block.0):
2885     liveins: $q0, $q1
2887     ; CHECK-LABEL: name: test_v8i16_slt
2888     ; CHECK: liveins: $q0, $q1
2889     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
2890     ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
2891     ; CHECK: [[CMGTv8i16_:%[0-9]+]]:fpr128 = CMGTv8i16 [[COPY1]], [[COPY]]
2892     ; CHECK: [[XTNv8i8_:%[0-9]+]]:fpr64 = XTNv8i8 [[CMGTv8i16_]]
2893     ; CHECK: $d0 = COPY [[XTNv8i8_]]
2894     ; CHECK: RET_ReallyLR implicit $d0
2895     %0:fpr(<8 x s16>) = COPY $q0
2896     %1:fpr(<8 x s16>) = COPY $q1
2897     %4:fpr(<8 x s16>) = G_ICMP intpred(slt), %0(<8 x s16>), %1
2898     %3:fpr(<8 x s8>) = G_TRUNC %4(<8 x s16>)
2899     $d0 = COPY %3(<8 x s8>)
2900     RET_ReallyLR implicit $d0
2904 name:            test_v4i16_slt
2905 alignment:       4
2906 legalized:       true
2907 regBankSelected: true
2908 tracksRegLiveness: true
2909 registers:
2910   - { id: 0, class: fpr }
2911   - { id: 1, class: fpr }
2912   - { id: 2, class: _ }
2913   - { id: 3, class: fpr }
2914   - { id: 4, class: fpr }
2915 machineFunctionInfo: {}
2916 body:             |
2917   bb.1 (%ir-block.0):
2918     liveins: $d0, $d1
2920     ; CHECK-LABEL: name: test_v4i16_slt
2921     ; CHECK: liveins: $d0, $d1
2922     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
2923     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
2924     ; CHECK: [[CMGTv4i16_:%[0-9]+]]:fpr64 = CMGTv4i16 [[COPY1]], [[COPY]]
2925     ; CHECK: $d0 = COPY [[CMGTv4i16_]]
2926     ; CHECK: RET_ReallyLR implicit $d0
2927     %0:fpr(<4 x s16>) = COPY $d0
2928     %1:fpr(<4 x s16>) = COPY $d1
2929     %4:fpr(<4 x s16>) = G_ICMP intpred(slt), %0(<4 x s16>), %1
2930     %3:fpr(<4 x s16>) = COPY %4(<4 x s16>)
2931     $d0 = COPY %3(<4 x s16>)
2932     RET_ReallyLR implicit $d0
2936 name:            test_v16i8_slt
2937 alignment:       4
2938 legalized:       true
2939 regBankSelected: true
2940 tracksRegLiveness: true
2941 registers:
2942   - { id: 0, class: fpr }
2943   - { id: 1, class: fpr }
2944   - { id: 2, class: _ }
2945   - { id: 3, class: fpr }
2946   - { id: 4, class: fpr }
2947 machineFunctionInfo: {}
2948 body:             |
2949   bb.1 (%ir-block.0):
2950     liveins: $q0, $q1
2952     ; CHECK-LABEL: name: test_v16i8_slt
2953     ; CHECK: liveins: $q0, $q1
2954     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
2955     ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
2956     ; CHECK: [[CMGTv16i8_:%[0-9]+]]:fpr128 = CMGTv16i8 [[COPY1]], [[COPY]]
2957     ; CHECK: $q0 = COPY [[CMGTv16i8_]]
2958     ; CHECK: RET_ReallyLR implicit $q0
2959     %0:fpr(<16 x s8>) = COPY $q0
2960     %1:fpr(<16 x s8>) = COPY $q1
2961     %4:fpr(<16 x s8>) = G_ICMP intpred(slt), %0(<16 x s8>), %1
2962     %3:fpr(<16 x s8>) = COPY %4(<16 x s8>)
2963     $q0 = COPY %3(<16 x s8>)
2964     RET_ReallyLR implicit $q0
2968 name:            test_v8i8_slt
2969 alignment:       4
2970 legalized:       true
2971 regBankSelected: true
2972 tracksRegLiveness: true
2973 registers:
2974   - { id: 0, class: fpr }
2975   - { id: 1, class: fpr }
2976   - { id: 2, class: _ }
2977   - { id: 3, class: fpr }
2978   - { id: 4, class: fpr }
2979 machineFunctionInfo: {}
2980 body:             |
2981   bb.1 (%ir-block.0):
2982     liveins: $d0, $d1
2984     ; CHECK-LABEL: name: test_v8i8_slt
2985     ; CHECK: liveins: $d0, $d1
2986     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
2987     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
2988     ; CHECK: [[CMGTv8i8_:%[0-9]+]]:fpr64 = CMGTv8i8 [[COPY1]], [[COPY]]
2989     ; CHECK: $d0 = COPY [[CMGTv8i8_]]
2990     ; CHECK: RET_ReallyLR implicit $d0
2991     %0:fpr(<8 x s8>) = COPY $d0
2992     %1:fpr(<8 x s8>) = COPY $d1
2993     %4:fpr(<8 x s8>) = G_ICMP intpred(slt), %0(<8 x s8>), %1
2994     %3:fpr(<8 x s8>) = COPY %4(<8 x s8>)
2995     $d0 = COPY %3(<8 x s8>)
2996     RET_ReallyLR implicit $d0
3000 name:            test_v2i64_sle
3001 alignment:       4
3002 legalized:       true
3003 regBankSelected: true
3004 tracksRegLiveness: true
3005 registers:
3006   - { id: 0, class: fpr }
3007   - { id: 1, class: fpr }
3008   - { id: 2, class: _ }
3009   - { id: 3, class: fpr }
3010   - { id: 4, class: fpr }
3011 machineFunctionInfo: {}
3012 body:             |
3013   bb.1 (%ir-block.0):
3014     liveins: $q0, $q1
3016     ; CHECK-LABEL: name: test_v2i64_sle
3017     ; CHECK: liveins: $q0, $q1
3018     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
3019     ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
3020     ; CHECK: [[CMGEv2i64_:%[0-9]+]]:fpr128 = CMGEv2i64 [[COPY1]], [[COPY]]
3021     ; CHECK: [[XTNv2i32_:%[0-9]+]]:fpr64 = XTNv2i32 [[CMGEv2i64_]]
3022     ; CHECK: $d0 = COPY [[XTNv2i32_]]
3023     ; CHECK: RET_ReallyLR implicit $d0
3024     %0:fpr(<2 x s64>) = COPY $q0
3025     %1:fpr(<2 x s64>) = COPY $q1
3026     %4:fpr(<2 x s64>) = G_ICMP intpred(sle), %0(<2 x s64>), %1
3027     %3:fpr(<2 x s32>) = G_TRUNC %4(<2 x s64>)
3028     $d0 = COPY %3(<2 x s32>)
3029     RET_ReallyLR implicit $d0
3033 name:            test_v4i32_sle
3034 alignment:       4
3035 legalized:       true
3036 regBankSelected: true
3037 tracksRegLiveness: true
3038 registers:
3039   - { id: 0, class: fpr }
3040   - { id: 1, class: fpr }
3041   - { id: 2, class: _ }
3042   - { id: 3, class: fpr }
3043   - { id: 4, class: fpr }
3044 machineFunctionInfo: {}
3045 body:             |
3046   bb.1 (%ir-block.0):
3047     liveins: $q0, $q1
3049     ; CHECK-LABEL: name: test_v4i32_sle
3050     ; CHECK: liveins: $q0, $q1
3051     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
3052     ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
3053     ; CHECK: [[CMGEv4i32_:%[0-9]+]]:fpr128 = CMGEv4i32 [[COPY1]], [[COPY]]
3054     ; CHECK: [[XTNv4i16_:%[0-9]+]]:fpr64 = XTNv4i16 [[CMGEv4i32_]]
3055     ; CHECK: $d0 = COPY [[XTNv4i16_]]
3056     ; CHECK: RET_ReallyLR implicit $d0
3057     %0:fpr(<4 x s32>) = COPY $q0
3058     %1:fpr(<4 x s32>) = COPY $q1
3059     %4:fpr(<4 x s32>) = G_ICMP intpred(sle), %0(<4 x s32>), %1
3060     %3:fpr(<4 x s16>) = G_TRUNC %4(<4 x s32>)
3061     $d0 = COPY %3(<4 x s16>)
3062     RET_ReallyLR implicit $d0
3066 name:            test_v2i32_sle
3067 alignment:       4
3068 legalized:       true
3069 regBankSelected: true
3070 tracksRegLiveness: true
3071 registers:
3072   - { id: 0, class: fpr }
3073   - { id: 1, class: fpr }
3074   - { id: 2, class: _ }
3075   - { id: 3, class: fpr }
3076   - { id: 4, class: fpr }
3077 machineFunctionInfo: {}
3078 body:             |
3079   bb.1 (%ir-block.0):
3080     liveins: $d0, $d1
3082     ; CHECK-LABEL: name: test_v2i32_sle
3083     ; CHECK: liveins: $d0, $d1
3084     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
3085     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
3086     ; CHECK: [[CMGEv2i32_:%[0-9]+]]:fpr64 = CMGEv2i32 [[COPY1]], [[COPY]]
3087     ; CHECK: $d0 = COPY [[CMGEv2i32_]]
3088     ; CHECK: RET_ReallyLR implicit $d0
3089     %0:fpr(<2 x s32>) = COPY $d0
3090     %1:fpr(<2 x s32>) = COPY $d1
3091     %4:fpr(<2 x s32>) = G_ICMP intpred(sle), %0(<2 x s32>), %1
3092     %3:fpr(<2 x s32>) = COPY %4(<2 x s32>)
3093     $d0 = COPY %3(<2 x s32>)
3094     RET_ReallyLR implicit $d0
3098 name:            test_v2i16_sle
3099 alignment:       4
3100 legalized:       true
3101 regBankSelected: true
3102 tracksRegLiveness: true
3103 registers:
3104   - { id: 0, class: _ }
3105   - { id: 1, class: _ }
3106   - { id: 2, class: fpr }
3107   - { id: 3, class: fpr }
3108   - { id: 4, class: _ }
3109   - { id: 5, class: fpr }
3110   - { id: 6, class: _ }
3111   - { id: 7, class: fpr }
3112   - { id: 8, class: fpr }
3113   - { id: 9, class: fpr }
3114   - { id: 10, class: gpr }
3115   - { id: 11, class: fpr }
3116   - { id: 12, class: fpr }
3117   - { id: 13, class: fpr }
3118   - { id: 14, class: gpr }
3119   - { id: 15, class: fpr }
3120   - { id: 16, class: fpr }
3121   - { id: 17, class: fpr }
3122 machineFunctionInfo: {}
3123 body:             |
3124   bb.1 (%ir-block.0):
3125     liveins: $d0, $d1
3127     ; CHECK-LABEL: name: test_v2i16_sle
3128     ; CHECK: liveins: $d0, $d1
3129     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
3130     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
3131     ; CHECK: [[ADRP:%[0-9]+]]:gpr64common = ADRP target-flags(aarch64-page) %const.0
3132     ; CHECK: [[LDRDui:%[0-9]+]]:fpr64 = LDRDui [[ADRP]], target-flags(aarch64-pageoff, aarch64-nc) %const.0
3133     ; CHECK: [[SHLv2i32_shift:%[0-9]+]]:fpr64 = SHLv2i32_shift [[COPY]], 16
3134     ; CHECK: [[NEGv2i32_:%[0-9]+]]:fpr64 = NEGv2i32 [[LDRDui]]
3135     ; CHECK: [[SSHLv2i32_:%[0-9]+]]:fpr64 = SSHLv2i32 [[SHLv2i32_shift]], [[NEGv2i32_]]
3136     ; CHECK: [[ADRP1:%[0-9]+]]:gpr64common = ADRP target-flags(aarch64-page) %const.0
3137     ; CHECK: [[LDRDui1:%[0-9]+]]:fpr64 = LDRDui [[ADRP1]], target-flags(aarch64-pageoff, aarch64-nc) %const.0
3138     ; CHECK: [[SHLv2i32_shift1:%[0-9]+]]:fpr64 = SHLv2i32_shift [[COPY1]], 16
3139     ; CHECK: [[NEGv2i32_1:%[0-9]+]]:fpr64 = NEGv2i32 [[LDRDui1]]
3140     ; CHECK: [[SSHLv2i32_1:%[0-9]+]]:fpr64 = SSHLv2i32 [[SHLv2i32_shift1]], [[NEGv2i32_1]]
3141     ; CHECK: [[CMGEv2i32_:%[0-9]+]]:fpr64 = CMGEv2i32 [[SSHLv2i32_1]], [[SSHLv2i32_]]
3142     ; CHECK: $d0 = COPY [[CMGEv2i32_]]
3143     ; CHECK: RET_ReallyLR implicit $d0
3144     %2:fpr(<2 x s32>) = COPY $d0
3145     %3:fpr(<2 x s32>) = COPY $d1
3146     %14:gpr(s32) = G_CONSTANT i32 16
3147     %15:fpr(<2 x s32>) = G_BUILD_VECTOR %14(s32), %14(s32)
3148     %16:fpr(<2 x s32>) = COPY %2(<2 x s32>)
3149     %17:fpr(<2 x s32>) = G_SHL %16, %15(<2 x s32>)
3150     %7:fpr(<2 x s32>) = G_ASHR %17, %15(<2 x s32>)
3151     %10:gpr(s32) = G_CONSTANT i32 16
3152     %11:fpr(<2 x s32>) = G_BUILD_VECTOR %10(s32), %10(s32)
3153     %12:fpr(<2 x s32>) = COPY %3(<2 x s32>)
3154     %13:fpr(<2 x s32>) = G_SHL %12, %11(<2 x s32>)
3155     %8:fpr(<2 x s32>) = G_ASHR %13, %11(<2 x s32>)
3156     %9:fpr(<2 x s32>) = G_ICMP intpred(sle), %7(<2 x s32>), %8
3157     %5:fpr(<2 x s32>) = COPY %9(<2 x s32>)
3158     $d0 = COPY %5(<2 x s32>)
3159     RET_ReallyLR implicit $d0
3163 name:            test_v8i16_sle
3164 alignment:       4
3165 legalized:       true
3166 regBankSelected: true
3167 tracksRegLiveness: true
3168 registers:
3169   - { id: 0, class: fpr }
3170   - { id: 1, class: fpr }
3171   - { id: 2, class: _ }
3172   - { id: 3, class: fpr }
3173   - { id: 4, class: fpr }
3174 machineFunctionInfo: {}
3175 body:             |
3176   bb.1 (%ir-block.0):
3177     liveins: $q0, $q1
3179     ; CHECK-LABEL: name: test_v8i16_sle
3180     ; CHECK: liveins: $q0, $q1
3181     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
3182     ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
3183     ; CHECK: [[CMGEv8i16_:%[0-9]+]]:fpr128 = CMGEv8i16 [[COPY1]], [[COPY]]
3184     ; CHECK: [[XTNv8i8_:%[0-9]+]]:fpr64 = XTNv8i8 [[CMGEv8i16_]]
3185     ; CHECK: $d0 = COPY [[XTNv8i8_]]
3186     ; CHECK: RET_ReallyLR implicit $d0
3187     %0:fpr(<8 x s16>) = COPY $q0
3188     %1:fpr(<8 x s16>) = COPY $q1
3189     %4:fpr(<8 x s16>) = G_ICMP intpred(sle), %0(<8 x s16>), %1
3190     %3:fpr(<8 x s8>) = G_TRUNC %4(<8 x s16>)
3191     $d0 = COPY %3(<8 x s8>)
3192     RET_ReallyLR implicit $d0
3196 name:            test_v4i16_sle
3197 alignment:       4
3198 legalized:       true
3199 regBankSelected: true
3200 tracksRegLiveness: true
3201 registers:
3202   - { id: 0, class: fpr }
3203   - { id: 1, class: fpr }
3204   - { id: 2, class: _ }
3205   - { id: 3, class: fpr }
3206   - { id: 4, class: fpr }
3207 machineFunctionInfo: {}
3208 body:             |
3209   bb.1 (%ir-block.0):
3210     liveins: $d0, $d1
3212     ; CHECK-LABEL: name: test_v4i16_sle
3213     ; CHECK: liveins: $d0, $d1
3214     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
3215     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
3216     ; CHECK: [[CMGEv4i16_:%[0-9]+]]:fpr64 = CMGEv4i16 [[COPY1]], [[COPY]]
3217     ; CHECK: $d0 = COPY [[CMGEv4i16_]]
3218     ; CHECK: RET_ReallyLR implicit $d0
3219     %0:fpr(<4 x s16>) = COPY $d0
3220     %1:fpr(<4 x s16>) = COPY $d1
3221     %4:fpr(<4 x s16>) = G_ICMP intpred(sle), %0(<4 x s16>), %1
3222     %3:fpr(<4 x s16>) = COPY %4(<4 x s16>)
3223     $d0 = COPY %3(<4 x s16>)
3224     RET_ReallyLR implicit $d0
3228 name:            test_v16i8_sle
3229 alignment:       4
3230 legalized:       true
3231 regBankSelected: true
3232 tracksRegLiveness: true
3233 registers:
3234   - { id: 0, class: fpr }
3235   - { id: 1, class: fpr }
3236   - { id: 2, class: _ }
3237   - { id: 3, class: fpr }
3238   - { id: 4, class: fpr }
3239 machineFunctionInfo: {}
3240 body:             |
3241   bb.1 (%ir-block.0):
3242     liveins: $q0, $q1
3244     ; CHECK-LABEL: name: test_v16i8_sle
3245     ; CHECK: liveins: $q0, $q1
3246     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
3247     ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
3248     ; CHECK: [[CMGEv16i8_:%[0-9]+]]:fpr128 = CMGEv16i8 [[COPY1]], [[COPY]]
3249     ; CHECK: $q0 = COPY [[CMGEv16i8_]]
3250     ; CHECK: RET_ReallyLR implicit $q0
3251     %0:fpr(<16 x s8>) = COPY $q0
3252     %1:fpr(<16 x s8>) = COPY $q1
3253     %4:fpr(<16 x s8>) = G_ICMP intpred(sle), %0(<16 x s8>), %1
3254     %3:fpr(<16 x s8>) = COPY %4(<16 x s8>)
3255     $q0 = COPY %3(<16 x s8>)
3256     RET_ReallyLR implicit $q0
3260 name:            test_v8i8_sle
3261 alignment:       4
3262 legalized:       true
3263 regBankSelected: true
3264 tracksRegLiveness: true
3265 registers:
3266   - { id: 0, class: fpr }
3267   - { id: 1, class: fpr }
3268   - { id: 2, class: _ }
3269   - { id: 3, class: fpr }
3270   - { id: 4, class: fpr }
3271 machineFunctionInfo: {}
3272 body:             |
3273   bb.1 (%ir-block.0):
3274     liveins: $d0, $d1
3276     ; CHECK-LABEL: name: test_v8i8_sle
3277     ; CHECK: liveins: $d0, $d1
3278     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
3279     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
3280     ; CHECK: [[CMGEv8i8_:%[0-9]+]]:fpr64 = CMGEv8i8 [[COPY1]], [[COPY]]
3281     ; CHECK: $d0 = COPY [[CMGEv8i8_]]
3282     ; CHECK: RET_ReallyLR implicit $d0
3283     %0:fpr(<8 x s8>) = COPY $d0
3284     %1:fpr(<8 x s8>) = COPY $d1
3285     %4:fpr(<8 x s8>) = G_ICMP intpred(sle), %0(<8 x s8>), %1
3286     %3:fpr(<8 x s8>) = COPY %4(<8 x s8>)
3287     $d0 = COPY %3(<8 x s8>)
3288     RET_ReallyLR implicit $d0