[MIParser] Set RegClassOrRegBank during instruction parsing
[llvm-complete.git] / test / CodeGen / AArch64 / GlobalISel / select-vector-icmp.mir
blobf22734946331d6f24307b49f6d2cab4c708b0e2d
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: [[MOVi32imm:%[0-9]+]]:gpr32 = MOVi32imm 65535
542     ; CHECK: [[DEF:%[0-9]+]]:fpr128 = IMPLICIT_DEF
543     ; CHECK: [[INSERT_SUBREG:%[0-9]+]]:fpr128 = INSERT_SUBREG [[DEF]], [[MOVi32imm]], %subreg.ssub
544     ; CHECK: [[INSvi32gpr:%[0-9]+]]:fpr128 = INSvi32gpr [[INSERT_SUBREG]], 1, [[MOVi32imm]]
545     ; CHECK: [[COPY2:%[0-9]+]]:fpr64 = COPY [[INSvi32gpr]].dsub
546     ; CHECK: [[ANDv8i8_:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY]], [[COPY2]]
547     ; CHECK: [[MOVi32imm1:%[0-9]+]]:gpr32 = MOVi32imm 65535
548     ; CHECK: [[DEF1:%[0-9]+]]:fpr128 = IMPLICIT_DEF
549     ; CHECK: [[INSERT_SUBREG1:%[0-9]+]]:fpr128 = INSERT_SUBREG [[DEF1]], [[MOVi32imm1]], %subreg.ssub
550     ; CHECK: [[INSvi32gpr1:%[0-9]+]]:fpr128 = INSvi32gpr [[INSERT_SUBREG1]], 1, [[MOVi32imm1]]
551     ; CHECK: [[COPY3:%[0-9]+]]:fpr64 = COPY [[INSvi32gpr1]].dsub
552     ; CHECK: [[ANDv8i8_1:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY1]], [[COPY3]]
553     ; CHECK: [[CMEQv2i32_:%[0-9]+]]:fpr64 = CMEQv2i32 [[ANDv8i8_]], [[ANDv8i8_1]]
554     ; CHECK: $d0 = COPY [[CMEQv2i32_]]
555     ; CHECK: RET_ReallyLR implicit $d0
556     %2:fpr(<2 x s32>) = COPY $d0
557     %3:fpr(<2 x s32>) = COPY $d1
558     %13:gpr(s32) = G_CONSTANT i32 65535
559     %14:fpr(<2 x s32>) = G_BUILD_VECTOR %13(s32), %13(s32)
560     %15:fpr(<2 x s32>) = COPY %2(<2 x s32>)
561     %7:fpr(<2 x s32>) = G_AND %15, %14
562     %10:gpr(s32) = G_CONSTANT i32 65535
563     %11:fpr(<2 x s32>) = G_BUILD_VECTOR %10(s32), %10(s32)
564     %12:fpr(<2 x s32>) = COPY %3(<2 x s32>)
565     %8:fpr(<2 x s32>) = G_AND %12, %11
566     %9:fpr(<2 x s32>) = G_ICMP intpred(eq), %7(<2 x s32>), %8
567     %5:fpr(<2 x s32>) = COPY %9(<2 x s32>)
568     $d0 = COPY %5(<2 x s32>)
569     RET_ReallyLR implicit $d0
573 name:            test_v8i16_eq
574 alignment:       4
575 legalized:       true
576 regBankSelected: true
577 tracksRegLiveness: true
578 registers:
579   - { id: 0, class: fpr }
580   - { id: 1, class: fpr }
581   - { id: 2, class: _ }
582   - { id: 3, class: fpr }
583   - { id: 4, class: fpr }
584 machineFunctionInfo: {}
585 body:             |
586   bb.1 (%ir-block.0):
587     liveins: $q0, $q1
589     ; CHECK-LABEL: name: test_v8i16_eq
590     ; CHECK: liveins: $q0, $q1
591     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
592     ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
593     ; CHECK: [[CMEQv8i16_:%[0-9]+]]:fpr128 = CMEQv8i16 [[COPY]], [[COPY1]]
594     ; CHECK: [[XTNv8i8_:%[0-9]+]]:fpr64 = XTNv8i8 [[CMEQv8i16_]]
595     ; CHECK: $d0 = COPY [[XTNv8i8_]]
596     ; CHECK: RET_ReallyLR implicit $d0
597     %0:fpr(<8 x s16>) = COPY $q0
598     %1:fpr(<8 x s16>) = COPY $q1
599     %4:fpr(<8 x s16>) = G_ICMP intpred(eq), %0(<8 x s16>), %1
600     %3:fpr(<8 x s8>) = G_TRUNC %4(<8 x s16>)
601     $d0 = COPY %3(<8 x s8>)
602     RET_ReallyLR implicit $d0
606 name:            test_v4i16_eq
607 alignment:       4
608 legalized:       true
609 regBankSelected: true
610 tracksRegLiveness: true
611 registers:
612   - { id: 0, class: fpr }
613   - { id: 1, class: fpr }
614   - { id: 2, class: _ }
615   - { id: 3, class: fpr }
616   - { id: 4, class: fpr }
617 machineFunctionInfo: {}
618 body:             |
619   bb.1 (%ir-block.0):
620     liveins: $d0, $d1
622     ; CHECK-LABEL: name: test_v4i16_eq
623     ; CHECK: liveins: $d0, $d1
624     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
625     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
626     ; CHECK: [[CMEQv4i16_:%[0-9]+]]:fpr64 = CMEQv4i16 [[COPY]], [[COPY1]]
627     ; CHECK: $d0 = COPY [[CMEQv4i16_]]
628     ; CHECK: RET_ReallyLR implicit $d0
629     %0:fpr(<4 x s16>) = COPY $d0
630     %1:fpr(<4 x s16>) = COPY $d1
631     %4:fpr(<4 x s16>) = G_ICMP intpred(eq), %0(<4 x s16>), %1
632     %3:fpr(<4 x s16>) = COPY %4(<4 x s16>)
633     $d0 = COPY %3(<4 x s16>)
634     RET_ReallyLR implicit $d0
638 name:            test_v16i8_eq
639 alignment:       4
640 legalized:       true
641 regBankSelected: true
642 tracksRegLiveness: true
643 registers:
644   - { id: 0, class: fpr }
645   - { id: 1, class: fpr }
646   - { id: 2, class: _ }
647   - { id: 3, class: fpr }
648   - { id: 4, class: fpr }
649 machineFunctionInfo: {}
650 body:             |
651   bb.1 (%ir-block.0):
652     liveins: $q0, $q1
654     ; CHECK-LABEL: name: test_v16i8_eq
655     ; CHECK: liveins: $q0, $q1
656     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
657     ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
658     ; CHECK: [[CMEQv16i8_:%[0-9]+]]:fpr128 = CMEQv16i8 [[COPY]], [[COPY1]]
659     ; CHECK: $q0 = COPY [[CMEQv16i8_]]
660     ; CHECK: RET_ReallyLR implicit $q0
661     %0:fpr(<16 x s8>) = COPY $q0
662     %1:fpr(<16 x s8>) = COPY $q1
663     %4:fpr(<16 x s8>) = G_ICMP intpred(eq), %0(<16 x s8>), %1
664     %3:fpr(<16 x s8>) = COPY %4(<16 x s8>)
665     $q0 = COPY %3(<16 x s8>)
666     RET_ReallyLR implicit $q0
670 name:            test_v8i8_eq
671 alignment:       4
672 legalized:       true
673 regBankSelected: true
674 tracksRegLiveness: true
675 registers:
676   - { id: 0, class: fpr }
677   - { id: 1, class: fpr }
678   - { id: 2, class: _ }
679   - { id: 3, class: fpr }
680   - { id: 4, class: fpr }
681 machineFunctionInfo: {}
682 body:             |
683   bb.1 (%ir-block.0):
684     liveins: $d0, $d1
686     ; CHECK-LABEL: name: test_v8i8_eq
687     ; CHECK: liveins: $d0, $d1
688     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
689     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
690     ; CHECK: [[CMEQv8i8_:%[0-9]+]]:fpr64 = CMEQv8i8 [[COPY]], [[COPY1]]
691     ; CHECK: $d0 = COPY [[CMEQv8i8_]]
692     ; CHECK: RET_ReallyLR implicit $d0
693     %0:fpr(<8 x s8>) = COPY $d0
694     %1:fpr(<8 x s8>) = COPY $d1
695     %4:fpr(<8 x s8>) = G_ICMP intpred(eq), %0(<8 x s8>), %1
696     %3:fpr(<8 x s8>) = COPY %4(<8 x s8>)
697     $d0 = COPY %3(<8 x s8>)
698     RET_ReallyLR implicit $d0
702 name:            test_v2i64_ne
703 alignment:       4
704 legalized:       true
705 regBankSelected: true
706 tracksRegLiveness: true
707 registers:
708   - { id: 0, class: fpr }
709   - { id: 1, class: fpr }
710   - { id: 2, class: _ }
711   - { id: 3, class: fpr }
712   - { id: 4, class: fpr }
713 machineFunctionInfo: {}
714 body:             |
715   bb.1 (%ir-block.0):
716     liveins: $q0, $q1
718     ; CHECK-LABEL: name: test_v2i64_ne
719     ; CHECK: liveins: $q0, $q1
720     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
721     ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
722     ; CHECK: [[CMEQv2i64_:%[0-9]+]]:fpr128 = CMEQv2i64 [[COPY]], [[COPY1]]
723     ; CHECK: [[NOTv16i8_:%[0-9]+]]:fpr128 = NOTv16i8 [[CMEQv2i64_]]
724     ; CHECK: [[XTNv2i32_:%[0-9]+]]:fpr64 = XTNv2i32 [[NOTv16i8_]]
725     ; CHECK: $d0 = COPY [[XTNv2i32_]]
726     ; CHECK: RET_ReallyLR implicit $d0
727     %0:fpr(<2 x s64>) = COPY $q0
728     %1:fpr(<2 x s64>) = COPY $q1
729     %4:fpr(<2 x s64>) = G_ICMP intpred(ne), %0(<2 x s64>), %1
730     %3:fpr(<2 x s32>) = G_TRUNC %4(<2 x s64>)
731     $d0 = COPY %3(<2 x s32>)
732     RET_ReallyLR implicit $d0
736 name:            test_v4i32_ne
737 alignment:       4
738 legalized:       true
739 regBankSelected: true
740 tracksRegLiveness: true
741 registers:
742   - { id: 0, class: fpr }
743   - { id: 1, class: fpr }
744   - { id: 2, class: _ }
745   - { id: 3, class: fpr }
746   - { id: 4, class: fpr }
747 machineFunctionInfo: {}
748 body:             |
749   bb.1 (%ir-block.0):
750     liveins: $q0, $q1
752     ; CHECK-LABEL: name: test_v4i32_ne
753     ; CHECK: liveins: $q0, $q1
754     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
755     ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
756     ; CHECK: [[CMEQv4i32_:%[0-9]+]]:fpr128 = CMEQv4i32 [[COPY]], [[COPY1]]
757     ; CHECK: [[NOTv16i8_:%[0-9]+]]:fpr128 = NOTv16i8 [[CMEQv4i32_]]
758     ; CHECK: [[XTNv4i16_:%[0-9]+]]:fpr64 = XTNv4i16 [[NOTv16i8_]]
759     ; CHECK: $d0 = COPY [[XTNv4i16_]]
760     ; CHECK: RET_ReallyLR implicit $d0
761     %0:fpr(<4 x s32>) = COPY $q0
762     %1:fpr(<4 x s32>) = COPY $q1
763     %4:fpr(<4 x s32>) = G_ICMP intpred(ne), %0(<4 x s32>), %1
764     %3:fpr(<4 x s16>) = G_TRUNC %4(<4 x s32>)
765     $d0 = COPY %3(<4 x s16>)
766     RET_ReallyLR implicit $d0
770 name:            test_v2i32_ne
771 alignment:       4
772 legalized:       true
773 regBankSelected: true
774 tracksRegLiveness: true
775 registers:
776   - { id: 0, class: fpr }
777   - { id: 1, class: fpr }
778   - { id: 2, class: _ }
779   - { id: 3, class: fpr }
780   - { id: 4, class: fpr }
781 machineFunctionInfo: {}
782 body:             |
783   bb.1 (%ir-block.0):
784     liveins: $d0, $d1
786     ; CHECK-LABEL: name: test_v2i32_ne
787     ; CHECK: liveins: $d0, $d1
788     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
789     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
790     ; CHECK: [[CMEQv2i32_:%[0-9]+]]:fpr64 = CMEQv2i32 [[COPY]], [[COPY1]]
791     ; CHECK: [[NOTv8i8_:%[0-9]+]]:fpr64 = NOTv8i8 [[CMEQv2i32_]]
792     ; CHECK: $d0 = COPY [[NOTv8i8_]]
793     ; CHECK: RET_ReallyLR implicit $d0
794     %0:fpr(<2 x s32>) = COPY $d0
795     %1:fpr(<2 x s32>) = COPY $d1
796     %4:fpr(<2 x s32>) = G_ICMP intpred(ne), %0(<2 x s32>), %1
797     %3:fpr(<2 x s32>) = COPY %4(<2 x s32>)
798     $d0 = COPY %3(<2 x s32>)
799     RET_ReallyLR implicit $d0
803 name:            test_v2i16_ne
804 alignment:       4
805 legalized:       true
806 regBankSelected: true
807 tracksRegLiveness: true
808 registers:
809   - { id: 0, class: _ }
810   - { id: 1, class: _ }
811   - { id: 2, class: fpr }
812   - { id: 3, class: fpr }
813   - { id: 4, class: _ }
814   - { id: 5, class: fpr }
815   - { id: 6, class: _ }
816   - { id: 7, class: fpr }
817   - { id: 8, class: fpr }
818   - { id: 9, class: fpr }
819   - { id: 10, class: gpr }
820   - { id: 11, class: fpr }
821   - { id: 12, class: fpr }
822   - { id: 13, class: gpr }
823   - { id: 14, class: fpr }
824   - { id: 15, class: fpr }
825 machineFunctionInfo: {}
826 body:             |
827   bb.1 (%ir-block.0):
828     liveins: $d0, $d1
830     ; CHECK-LABEL: name: test_v2i16_ne
831     ; CHECK: liveins: $d0, $d1
832     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
833     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
834     ; CHECK: [[MOVi32imm:%[0-9]+]]:gpr32 = MOVi32imm 65535
835     ; CHECK: [[DEF:%[0-9]+]]:fpr128 = IMPLICIT_DEF
836     ; CHECK: [[INSERT_SUBREG:%[0-9]+]]:fpr128 = INSERT_SUBREG [[DEF]], [[MOVi32imm]], %subreg.ssub
837     ; CHECK: [[INSvi32gpr:%[0-9]+]]:fpr128 = INSvi32gpr [[INSERT_SUBREG]], 1, [[MOVi32imm]]
838     ; CHECK: [[COPY2:%[0-9]+]]:fpr64 = COPY [[INSvi32gpr]].dsub
839     ; CHECK: [[ANDv8i8_:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY]], [[COPY2]]
840     ; CHECK: [[MOVi32imm1:%[0-9]+]]:gpr32 = MOVi32imm 65535
841     ; CHECK: [[DEF1:%[0-9]+]]:fpr128 = IMPLICIT_DEF
842     ; CHECK: [[INSERT_SUBREG1:%[0-9]+]]:fpr128 = INSERT_SUBREG [[DEF1]], [[MOVi32imm1]], %subreg.ssub
843     ; CHECK: [[INSvi32gpr1:%[0-9]+]]:fpr128 = INSvi32gpr [[INSERT_SUBREG1]], 1, [[MOVi32imm1]]
844     ; CHECK: [[COPY3:%[0-9]+]]:fpr64 = COPY [[INSvi32gpr1]].dsub
845     ; CHECK: [[ANDv8i8_1:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY1]], [[COPY3]]
846     ; CHECK: [[CMEQv2i32_:%[0-9]+]]:fpr64 = CMEQv2i32 [[ANDv8i8_]], [[ANDv8i8_1]]
847     ; CHECK: [[NOTv8i8_:%[0-9]+]]:fpr64 = NOTv8i8 [[CMEQv2i32_]]
848     ; CHECK: $d0 = COPY [[NOTv8i8_]]
849     ; CHECK: RET_ReallyLR implicit $d0
850     %2:fpr(<2 x s32>) = COPY $d0
851     %3:fpr(<2 x s32>) = COPY $d1
852     %13:gpr(s32) = G_CONSTANT i32 65535
853     %14:fpr(<2 x s32>) = G_BUILD_VECTOR %13(s32), %13(s32)
854     %15:fpr(<2 x s32>) = COPY %2(<2 x s32>)
855     %7:fpr(<2 x s32>) = G_AND %15, %14
856     %10:gpr(s32) = G_CONSTANT i32 65535
857     %11:fpr(<2 x s32>) = G_BUILD_VECTOR %10(s32), %10(s32)
858     %12:fpr(<2 x s32>) = COPY %3(<2 x s32>)
859     %8:fpr(<2 x s32>) = G_AND %12, %11
860     %9:fpr(<2 x s32>) = G_ICMP intpred(ne), %7(<2 x s32>), %8
861     %5:fpr(<2 x s32>) = COPY %9(<2 x s32>)
862     $d0 = COPY %5(<2 x s32>)
863     RET_ReallyLR implicit $d0
867 name:            test_v8i16_ne
868 alignment:       4
869 legalized:       true
870 regBankSelected: true
871 tracksRegLiveness: true
872 registers:
873   - { id: 0, class: fpr }
874   - { id: 1, class: fpr }
875   - { id: 2, class: _ }
876   - { id: 3, class: fpr }
877   - { id: 4, class: fpr }
878 machineFunctionInfo: {}
879 body:             |
880   bb.1 (%ir-block.0):
881     liveins: $q0, $q1
883     ; CHECK-LABEL: name: test_v8i16_ne
884     ; CHECK: liveins: $q0, $q1
885     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
886     ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
887     ; CHECK: [[CMEQv8i16_:%[0-9]+]]:fpr128 = CMEQv8i16 [[COPY]], [[COPY1]]
888     ; CHECK: [[NOTv16i8_:%[0-9]+]]:fpr128 = NOTv16i8 [[CMEQv8i16_]]
889     ; CHECK: [[XTNv8i8_:%[0-9]+]]:fpr64 = XTNv8i8 [[NOTv16i8_]]
890     ; CHECK: $d0 = COPY [[XTNv8i8_]]
891     ; CHECK: RET_ReallyLR implicit $d0
892     %0:fpr(<8 x s16>) = COPY $q0
893     %1:fpr(<8 x s16>) = COPY $q1
894     %4:fpr(<8 x s16>) = G_ICMP intpred(ne), %0(<8 x s16>), %1
895     %3:fpr(<8 x s8>) = G_TRUNC %4(<8 x s16>)
896     $d0 = COPY %3(<8 x s8>)
897     RET_ReallyLR implicit $d0
901 name:            test_v4i16_ne
902 alignment:       4
903 legalized:       true
904 regBankSelected: true
905 tracksRegLiveness: true
906 registers:
907   - { id: 0, class: fpr }
908   - { id: 1, class: fpr }
909   - { id: 2, class: _ }
910   - { id: 3, class: fpr }
911   - { id: 4, class: fpr }
912 machineFunctionInfo: {}
913 body:             |
914   bb.1 (%ir-block.0):
915     liveins: $d0, $d1
917     ; CHECK-LABEL: name: test_v4i16_ne
918     ; CHECK: liveins: $d0, $d1
919     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
920     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
921     ; CHECK: [[CMEQv4i16_:%[0-9]+]]:fpr64 = CMEQv4i16 [[COPY]], [[COPY1]]
922     ; CHECK: [[NOTv8i8_:%[0-9]+]]:fpr64 = NOTv8i8 [[CMEQv4i16_]]
923     ; CHECK: $d0 = COPY [[NOTv8i8_]]
924     ; CHECK: RET_ReallyLR implicit $d0
925     %0:fpr(<4 x s16>) = COPY $d0
926     %1:fpr(<4 x s16>) = COPY $d1
927     %4:fpr(<4 x s16>) = G_ICMP intpred(ne), %0(<4 x s16>), %1
928     %3:fpr(<4 x s16>) = COPY %4(<4 x s16>)
929     $d0 = COPY %3(<4 x s16>)
930     RET_ReallyLR implicit $d0
934 name:            test_v16i8_ne
935 alignment:       4
936 legalized:       true
937 regBankSelected: true
938 tracksRegLiveness: true
939 registers:
940   - { id: 0, class: fpr }
941   - { id: 1, class: fpr }
942   - { id: 2, class: _ }
943   - { id: 3, class: fpr }
944   - { id: 4, class: fpr }
945 machineFunctionInfo: {}
946 body:             |
947   bb.1 (%ir-block.0):
948     liveins: $q0, $q1
950     ; CHECK-LABEL: name: test_v16i8_ne
951     ; CHECK: liveins: $q0, $q1
952     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
953     ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
954     ; CHECK: [[CMEQv16i8_:%[0-9]+]]:fpr128 = CMEQv16i8 [[COPY]], [[COPY1]]
955     ; CHECK: [[NOTv16i8_:%[0-9]+]]:fpr128 = NOTv16i8 [[CMEQv16i8_]]
956     ; CHECK: $q0 = COPY [[NOTv16i8_]]
957     ; CHECK: RET_ReallyLR implicit $q0
958     %0:fpr(<16 x s8>) = COPY $q0
959     %1:fpr(<16 x s8>) = COPY $q1
960     %4:fpr(<16 x s8>) = G_ICMP intpred(ne), %0(<16 x s8>), %1
961     %3:fpr(<16 x s8>) = COPY %4(<16 x s8>)
962     $q0 = COPY %3(<16 x s8>)
963     RET_ReallyLR implicit $q0
967 name:            test_v8i8_ne
968 alignment:       4
969 legalized:       true
970 regBankSelected: true
971 tracksRegLiveness: true
972 registers:
973   - { id: 0, class: fpr }
974   - { id: 1, class: fpr }
975   - { id: 2, class: _ }
976   - { id: 3, class: fpr }
977   - { id: 4, class: fpr }
978 machineFunctionInfo: {}
979 body:             |
980   bb.1 (%ir-block.0):
981     liveins: $d0, $d1
983     ; CHECK-LABEL: name: test_v8i8_ne
984     ; CHECK: liveins: $d0, $d1
985     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
986     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
987     ; CHECK: [[CMEQv8i8_:%[0-9]+]]:fpr64 = CMEQv8i8 [[COPY]], [[COPY1]]
988     ; CHECK: [[NOTv8i8_:%[0-9]+]]:fpr64 = NOTv8i8 [[CMEQv8i8_]]
989     ; CHECK: $d0 = COPY [[NOTv8i8_]]
990     ; CHECK: RET_ReallyLR implicit $d0
991     %0:fpr(<8 x s8>) = COPY $d0
992     %1:fpr(<8 x s8>) = COPY $d1
993     %4:fpr(<8 x s8>) = G_ICMP intpred(ne), %0(<8 x s8>), %1
994     %3:fpr(<8 x s8>) = COPY %4(<8 x s8>)
995     $d0 = COPY %3(<8 x s8>)
996     RET_ReallyLR implicit $d0
1000 name:            test_v2i64_ugt
1001 alignment:       4
1002 legalized:       true
1003 regBankSelected: true
1004 tracksRegLiveness: true
1005 registers:
1006   - { id: 0, class: fpr }
1007   - { id: 1, class: fpr }
1008   - { id: 2, class: _ }
1009   - { id: 3, class: fpr }
1010   - { id: 4, class: fpr }
1011 machineFunctionInfo: {}
1012 body:             |
1013   bb.1 (%ir-block.0):
1014     liveins: $q0, $q1
1016     ; CHECK-LABEL: name: test_v2i64_ugt
1017     ; CHECK: liveins: $q0, $q1
1018     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
1019     ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
1020     ; CHECK: [[CMHIv2i64_:%[0-9]+]]:fpr128 = CMHIv2i64 [[COPY]], [[COPY1]]
1021     ; CHECK: [[XTNv2i32_:%[0-9]+]]:fpr64 = XTNv2i32 [[CMHIv2i64_]]
1022     ; CHECK: $d0 = COPY [[XTNv2i32_]]
1023     ; CHECK: RET_ReallyLR implicit $d0
1024     %0:fpr(<2 x s64>) = COPY $q0
1025     %1:fpr(<2 x s64>) = COPY $q1
1026     %4:fpr(<2 x s64>) = G_ICMP intpred(ugt), %0(<2 x s64>), %1
1027     %3:fpr(<2 x s32>) = G_TRUNC %4(<2 x s64>)
1028     $d0 = COPY %3(<2 x s32>)
1029     RET_ReallyLR implicit $d0
1033 name:            test_v4i32_ugt
1034 alignment:       4
1035 legalized:       true
1036 regBankSelected: true
1037 tracksRegLiveness: true
1038 registers:
1039   - { id: 0, class: fpr }
1040   - { id: 1, class: fpr }
1041   - { id: 2, class: _ }
1042   - { id: 3, class: fpr }
1043   - { id: 4, class: fpr }
1044 machineFunctionInfo: {}
1045 body:             |
1046   bb.1 (%ir-block.0):
1047     liveins: $q0, $q1
1049     ; CHECK-LABEL: name: test_v4i32_ugt
1050     ; CHECK: liveins: $q0, $q1
1051     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
1052     ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
1053     ; CHECK: [[CMHIv4i32_:%[0-9]+]]:fpr128 = CMHIv4i32 [[COPY]], [[COPY1]]
1054     ; CHECK: [[XTNv4i16_:%[0-9]+]]:fpr64 = XTNv4i16 [[CMHIv4i32_]]
1055     ; CHECK: $d0 = COPY [[XTNv4i16_]]
1056     ; CHECK: RET_ReallyLR implicit $d0
1057     %0:fpr(<4 x s32>) = COPY $q0
1058     %1:fpr(<4 x s32>) = COPY $q1
1059     %4:fpr(<4 x s32>) = G_ICMP intpred(ugt), %0(<4 x s32>), %1
1060     %3:fpr(<4 x s16>) = G_TRUNC %4(<4 x s32>)
1061     $d0 = COPY %3(<4 x s16>)
1062     RET_ReallyLR implicit $d0
1066 name:            test_v2i32_ugt
1067 alignment:       4
1068 legalized:       true
1069 regBankSelected: true
1070 tracksRegLiveness: true
1071 registers:
1072   - { id: 0, class: fpr }
1073   - { id: 1, class: fpr }
1074   - { id: 2, class: _ }
1075   - { id: 3, class: fpr }
1076   - { id: 4, class: fpr }
1077 machineFunctionInfo: {}
1078 body:             |
1079   bb.1 (%ir-block.0):
1080     liveins: $d0, $d1
1082     ; CHECK-LABEL: name: test_v2i32_ugt
1083     ; CHECK: liveins: $d0, $d1
1084     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
1085     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
1086     ; CHECK: [[CMHIv2i32_:%[0-9]+]]:fpr64 = CMHIv2i32 [[COPY]], [[COPY1]]
1087     ; CHECK: $d0 = COPY [[CMHIv2i32_]]
1088     ; CHECK: RET_ReallyLR implicit $d0
1089     %0:fpr(<2 x s32>) = COPY $d0
1090     %1:fpr(<2 x s32>) = COPY $d1
1091     %4:fpr(<2 x s32>) = G_ICMP intpred(ugt), %0(<2 x s32>), %1
1092     %3:fpr(<2 x s32>) = COPY %4(<2 x s32>)
1093     $d0 = COPY %3(<2 x s32>)
1094     RET_ReallyLR implicit $d0
1098 name:            test_v2i16_ugt
1099 alignment:       4
1100 legalized:       true
1101 regBankSelected: true
1102 tracksRegLiveness: true
1103 registers:
1104   - { id: 0, class: _ }
1105   - { id: 1, class: _ }
1106   - { id: 2, class: fpr }
1107   - { id: 3, class: fpr }
1108   - { id: 4, class: _ }
1109   - { id: 5, class: fpr }
1110   - { id: 6, class: _ }
1111   - { id: 7, class: fpr }
1112   - { id: 8, class: fpr }
1113   - { id: 9, class: fpr }
1114   - { id: 10, class: gpr }
1115   - { id: 11, class: fpr }
1116   - { id: 12, class: fpr }
1117   - { id: 13, class: gpr }
1118   - { id: 14, class: fpr }
1119   - { id: 15, class: fpr }
1120 machineFunctionInfo: {}
1121 body:             |
1122   bb.1 (%ir-block.0):
1123     liveins: $d0, $d1
1125     ; CHECK-LABEL: name: test_v2i16_ugt
1126     ; CHECK: liveins: $d0, $d1
1127     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
1128     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
1129     ; CHECK: [[MOVi32imm:%[0-9]+]]:gpr32 = MOVi32imm 65535
1130     ; CHECK: [[DEF:%[0-9]+]]:fpr128 = IMPLICIT_DEF
1131     ; CHECK: [[INSERT_SUBREG:%[0-9]+]]:fpr128 = INSERT_SUBREG [[DEF]], [[MOVi32imm]], %subreg.ssub
1132     ; CHECK: [[INSvi32gpr:%[0-9]+]]:fpr128 = INSvi32gpr [[INSERT_SUBREG]], 1, [[MOVi32imm]]
1133     ; CHECK: [[COPY2:%[0-9]+]]:fpr64 = COPY [[INSvi32gpr]].dsub
1134     ; CHECK: [[ANDv8i8_:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY]], [[COPY2]]
1135     ; CHECK: [[MOVi32imm1:%[0-9]+]]:gpr32 = MOVi32imm 65535
1136     ; CHECK: [[DEF1:%[0-9]+]]:fpr128 = IMPLICIT_DEF
1137     ; CHECK: [[INSERT_SUBREG1:%[0-9]+]]:fpr128 = INSERT_SUBREG [[DEF1]], [[MOVi32imm1]], %subreg.ssub
1138     ; CHECK: [[INSvi32gpr1:%[0-9]+]]:fpr128 = INSvi32gpr [[INSERT_SUBREG1]], 1, [[MOVi32imm1]]
1139     ; CHECK: [[COPY3:%[0-9]+]]:fpr64 = COPY [[INSvi32gpr1]].dsub
1140     ; CHECK: [[ANDv8i8_1:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY1]], [[COPY3]]
1141     ; CHECK: [[CMHIv2i32_:%[0-9]+]]:fpr64 = CMHIv2i32 [[ANDv8i8_]], [[ANDv8i8_1]]
1142     ; CHECK: $d0 = COPY [[CMHIv2i32_]]
1143     ; CHECK: RET_ReallyLR implicit $d0
1144     %2:fpr(<2 x s32>) = COPY $d0
1145     %3:fpr(<2 x s32>) = COPY $d1
1146     %13:gpr(s32) = G_CONSTANT i32 65535
1147     %14:fpr(<2 x s32>) = G_BUILD_VECTOR %13(s32), %13(s32)
1148     %15:fpr(<2 x s32>) = COPY %2(<2 x s32>)
1149     %7:fpr(<2 x s32>) = G_AND %15, %14
1150     %10:gpr(s32) = G_CONSTANT i32 65535
1151     %11:fpr(<2 x s32>) = G_BUILD_VECTOR %10(s32), %10(s32)
1152     %12:fpr(<2 x s32>) = COPY %3(<2 x s32>)
1153     %8:fpr(<2 x s32>) = G_AND %12, %11
1154     %9:fpr(<2 x s32>) = G_ICMP intpred(ugt), %7(<2 x s32>), %8
1155     %5:fpr(<2 x s32>) = COPY %9(<2 x s32>)
1156     $d0 = COPY %5(<2 x s32>)
1157     RET_ReallyLR implicit $d0
1161 name:            test_v8i16_ugt
1162 alignment:       4
1163 legalized:       true
1164 regBankSelected: true
1165 tracksRegLiveness: true
1166 registers:
1167   - { id: 0, class: fpr }
1168   - { id: 1, class: fpr }
1169   - { id: 2, class: _ }
1170   - { id: 3, class: fpr }
1171   - { id: 4, class: fpr }
1172 machineFunctionInfo: {}
1173 body:             |
1174   bb.1 (%ir-block.0):
1175     liveins: $q0, $q1
1177     ; CHECK-LABEL: name: test_v8i16_ugt
1178     ; CHECK: liveins: $q0, $q1
1179     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
1180     ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
1181     ; CHECK: [[CMHIv8i16_:%[0-9]+]]:fpr128 = CMHIv8i16 [[COPY]], [[COPY1]]
1182     ; CHECK: [[XTNv8i8_:%[0-9]+]]:fpr64 = XTNv8i8 [[CMHIv8i16_]]
1183     ; CHECK: $d0 = COPY [[XTNv8i8_]]
1184     ; CHECK: RET_ReallyLR implicit $d0
1185     %0:fpr(<8 x s16>) = COPY $q0
1186     %1:fpr(<8 x s16>) = COPY $q1
1187     %4:fpr(<8 x s16>) = G_ICMP intpred(ugt), %0(<8 x s16>), %1
1188     %3:fpr(<8 x s8>) = G_TRUNC %4(<8 x s16>)
1189     $d0 = COPY %3(<8 x s8>)
1190     RET_ReallyLR implicit $d0
1194 name:            test_v4i16_ugt
1195 alignment:       4
1196 legalized:       true
1197 regBankSelected: true
1198 tracksRegLiveness: true
1199 registers:
1200   - { id: 0, class: fpr }
1201   - { id: 1, class: fpr }
1202   - { id: 2, class: _ }
1203   - { id: 3, class: fpr }
1204   - { id: 4, class: fpr }
1205 machineFunctionInfo: {}
1206 body:             |
1207   bb.1 (%ir-block.0):
1208     liveins: $d0, $d1
1210     ; CHECK-LABEL: name: test_v4i16_ugt
1211     ; CHECK: liveins: $d0, $d1
1212     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
1213     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
1214     ; CHECK: [[CMHIv4i16_:%[0-9]+]]:fpr64 = CMHIv4i16 [[COPY]], [[COPY1]]
1215     ; CHECK: $d0 = COPY [[CMHIv4i16_]]
1216     ; CHECK: RET_ReallyLR implicit $d0
1217     %0:fpr(<4 x s16>) = COPY $d0
1218     %1:fpr(<4 x s16>) = COPY $d1
1219     %4:fpr(<4 x s16>) = G_ICMP intpred(ugt), %0(<4 x s16>), %1
1220     %3:fpr(<4 x s16>) = COPY %4(<4 x s16>)
1221     $d0 = COPY %3(<4 x s16>)
1222     RET_ReallyLR implicit $d0
1226 name:            test_v16i8_ugt
1227 alignment:       4
1228 legalized:       true
1229 regBankSelected: true
1230 tracksRegLiveness: true
1231 registers:
1232   - { id: 0, class: fpr }
1233   - { id: 1, class: fpr }
1234   - { id: 2, class: _ }
1235   - { id: 3, class: fpr }
1236   - { id: 4, class: fpr }
1237 machineFunctionInfo: {}
1238 body:             |
1239   bb.1 (%ir-block.0):
1240     liveins: $q0, $q1
1242     ; CHECK-LABEL: name: test_v16i8_ugt
1243     ; CHECK: liveins: $q0, $q1
1244     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
1245     ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
1246     ; CHECK: [[CMHIv16i8_:%[0-9]+]]:fpr128 = CMHIv16i8 [[COPY]], [[COPY1]]
1247     ; CHECK: $q0 = COPY [[CMHIv16i8_]]
1248     ; CHECK: RET_ReallyLR implicit $q0
1249     %0:fpr(<16 x s8>) = COPY $q0
1250     %1:fpr(<16 x s8>) = COPY $q1
1251     %4:fpr(<16 x s8>) = G_ICMP intpred(ugt), %0(<16 x s8>), %1
1252     %3:fpr(<16 x s8>) = COPY %4(<16 x s8>)
1253     $q0 = COPY %3(<16 x s8>)
1254     RET_ReallyLR implicit $q0
1258 name:            test_v8i8_ugt
1259 alignment:       4
1260 legalized:       true
1261 regBankSelected: true
1262 tracksRegLiveness: true
1263 registers:
1264   - { id: 0, class: fpr }
1265   - { id: 1, class: fpr }
1266   - { id: 2, class: _ }
1267   - { id: 3, class: fpr }
1268   - { id: 4, class: fpr }
1269 machineFunctionInfo: {}
1270 body:             |
1271   bb.1 (%ir-block.0):
1272     liveins: $d0, $d1
1274     ; CHECK-LABEL: name: test_v8i8_ugt
1275     ; CHECK: liveins: $d0, $d1
1276     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
1277     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
1278     ; CHECK: [[CMHIv8i8_:%[0-9]+]]:fpr64 = CMHIv8i8 [[COPY]], [[COPY1]]
1279     ; CHECK: $d0 = COPY [[CMHIv8i8_]]
1280     ; CHECK: RET_ReallyLR implicit $d0
1281     %0:fpr(<8 x s8>) = COPY $d0
1282     %1:fpr(<8 x s8>) = COPY $d1
1283     %4:fpr(<8 x s8>) = G_ICMP intpred(ugt), %0(<8 x s8>), %1
1284     %3:fpr(<8 x s8>) = COPY %4(<8 x s8>)
1285     $d0 = COPY %3(<8 x s8>)
1286     RET_ReallyLR implicit $d0
1290 name:            test_v2i64_uge
1291 alignment:       4
1292 legalized:       true
1293 regBankSelected: true
1294 tracksRegLiveness: true
1295 registers:
1296   - { id: 0, class: fpr }
1297   - { id: 1, class: fpr }
1298   - { id: 2, class: _ }
1299   - { id: 3, class: fpr }
1300   - { id: 4, class: fpr }
1301 machineFunctionInfo: {}
1302 body:             |
1303   bb.1 (%ir-block.0):
1304     liveins: $q0, $q1
1306     ; CHECK-LABEL: name: test_v2i64_uge
1307     ; CHECK: liveins: $q0, $q1
1308     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
1309     ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
1310     ; CHECK: [[CMHSv2i64_:%[0-9]+]]:fpr128 = CMHSv2i64 [[COPY]], [[COPY1]]
1311     ; CHECK: [[XTNv2i32_:%[0-9]+]]:fpr64 = XTNv2i32 [[CMHSv2i64_]]
1312     ; CHECK: $d0 = COPY [[XTNv2i32_]]
1313     ; CHECK: RET_ReallyLR implicit $d0
1314     %0:fpr(<2 x s64>) = COPY $q0
1315     %1:fpr(<2 x s64>) = COPY $q1
1316     %4:fpr(<2 x s64>) = G_ICMP intpred(uge), %0(<2 x s64>), %1
1317     %3:fpr(<2 x s32>) = G_TRUNC %4(<2 x s64>)
1318     $d0 = COPY %3(<2 x s32>)
1319     RET_ReallyLR implicit $d0
1323 name:            test_v4i32_uge
1324 alignment:       4
1325 legalized:       true
1326 regBankSelected: true
1327 tracksRegLiveness: true
1328 registers:
1329   - { id: 0, class: fpr }
1330   - { id: 1, class: fpr }
1331   - { id: 2, class: _ }
1332   - { id: 3, class: fpr }
1333   - { id: 4, class: fpr }
1334 machineFunctionInfo: {}
1335 body:             |
1336   bb.1 (%ir-block.0):
1337     liveins: $q0, $q1
1339     ; CHECK-LABEL: name: test_v4i32_uge
1340     ; CHECK: liveins: $q0, $q1
1341     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
1342     ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
1343     ; CHECK: [[CMHSv4i32_:%[0-9]+]]:fpr128 = CMHSv4i32 [[COPY]], [[COPY1]]
1344     ; CHECK: [[XTNv4i16_:%[0-9]+]]:fpr64 = XTNv4i16 [[CMHSv4i32_]]
1345     ; CHECK: $d0 = COPY [[XTNv4i16_]]
1346     ; CHECK: RET_ReallyLR implicit $d0
1347     %0:fpr(<4 x s32>) = COPY $q0
1348     %1:fpr(<4 x s32>) = COPY $q1
1349     %4:fpr(<4 x s32>) = G_ICMP intpred(uge), %0(<4 x s32>), %1
1350     %3:fpr(<4 x s16>) = G_TRUNC %4(<4 x s32>)
1351     $d0 = COPY %3(<4 x s16>)
1352     RET_ReallyLR implicit $d0
1356 name:            test_v2i32_uge
1357 alignment:       4
1358 legalized:       true
1359 regBankSelected: true
1360 tracksRegLiveness: true
1361 registers:
1362   - { id: 0, class: fpr }
1363   - { id: 1, class: fpr }
1364   - { id: 2, class: _ }
1365   - { id: 3, class: fpr }
1366   - { id: 4, class: fpr }
1367 machineFunctionInfo: {}
1368 body:             |
1369   bb.1 (%ir-block.0):
1370     liveins: $d0, $d1
1372     ; CHECK-LABEL: name: test_v2i32_uge
1373     ; CHECK: liveins: $d0, $d1
1374     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
1375     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
1376     ; CHECK: [[CMHSv2i32_:%[0-9]+]]:fpr64 = CMHSv2i32 [[COPY]], [[COPY1]]
1377     ; CHECK: $d0 = COPY [[CMHSv2i32_]]
1378     ; CHECK: RET_ReallyLR implicit $d0
1379     %0:fpr(<2 x s32>) = COPY $d0
1380     %1:fpr(<2 x s32>) = COPY $d1
1381     %4:fpr(<2 x s32>) = G_ICMP intpred(uge), %0(<2 x s32>), %1
1382     %3:fpr(<2 x s32>) = COPY %4(<2 x s32>)
1383     $d0 = COPY %3(<2 x s32>)
1384     RET_ReallyLR implicit $d0
1388 name:            test_v2i16_uge
1389 alignment:       4
1390 legalized:       true
1391 regBankSelected: true
1392 tracksRegLiveness: true
1393 registers:
1394   - { id: 0, class: _ }
1395   - { id: 1, class: _ }
1396   - { id: 2, class: fpr }
1397   - { id: 3, class: fpr }
1398   - { id: 4, class: _ }
1399   - { id: 5, class: fpr }
1400   - { id: 6, class: _ }
1401   - { id: 7, class: fpr }
1402   - { id: 8, class: fpr }
1403   - { id: 9, class: fpr }
1404   - { id: 10, class: gpr }
1405   - { id: 11, class: fpr }
1406   - { id: 12, class: fpr }
1407   - { id: 13, class: gpr }
1408   - { id: 14, class: fpr }
1409   - { id: 15, class: fpr }
1410 machineFunctionInfo: {}
1411 body:             |
1412   bb.1 (%ir-block.0):
1413     liveins: $d0, $d1
1415     ; CHECK-LABEL: name: test_v2i16_uge
1416     ; CHECK: liveins: $d0, $d1
1417     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
1418     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
1419     ; CHECK: [[MOVi32imm:%[0-9]+]]:gpr32 = MOVi32imm 65535
1420     ; CHECK: [[DEF:%[0-9]+]]:fpr128 = IMPLICIT_DEF
1421     ; CHECK: [[INSERT_SUBREG:%[0-9]+]]:fpr128 = INSERT_SUBREG [[DEF]], [[MOVi32imm]], %subreg.ssub
1422     ; CHECK: [[INSvi32gpr:%[0-9]+]]:fpr128 = INSvi32gpr [[INSERT_SUBREG]], 1, [[MOVi32imm]]
1423     ; CHECK: [[COPY2:%[0-9]+]]:fpr64 = COPY [[INSvi32gpr]].dsub
1424     ; CHECK: [[ANDv8i8_:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY]], [[COPY2]]
1425     ; CHECK: [[MOVi32imm1:%[0-9]+]]:gpr32 = MOVi32imm 65535
1426     ; CHECK: [[DEF1:%[0-9]+]]:fpr128 = IMPLICIT_DEF
1427     ; CHECK: [[INSERT_SUBREG1:%[0-9]+]]:fpr128 = INSERT_SUBREG [[DEF1]], [[MOVi32imm1]], %subreg.ssub
1428     ; CHECK: [[INSvi32gpr1:%[0-9]+]]:fpr128 = INSvi32gpr [[INSERT_SUBREG1]], 1, [[MOVi32imm1]]
1429     ; CHECK: [[COPY3:%[0-9]+]]:fpr64 = COPY [[INSvi32gpr1]].dsub
1430     ; CHECK: [[ANDv8i8_1:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY1]], [[COPY3]]
1431     ; CHECK: [[CMHSv2i32_:%[0-9]+]]:fpr64 = CMHSv2i32 [[ANDv8i8_]], [[ANDv8i8_1]]
1432     ; CHECK: $d0 = COPY [[CMHSv2i32_]]
1433     ; CHECK: RET_ReallyLR implicit $d0
1434     %2:fpr(<2 x s32>) = COPY $d0
1435     %3:fpr(<2 x s32>) = COPY $d1
1436     %13:gpr(s32) = G_CONSTANT i32 65535
1437     %14:fpr(<2 x s32>) = G_BUILD_VECTOR %13(s32), %13(s32)
1438     %15:fpr(<2 x s32>) = COPY %2(<2 x s32>)
1439     %7:fpr(<2 x s32>) = G_AND %15, %14
1440     %10:gpr(s32) = G_CONSTANT i32 65535
1441     %11:fpr(<2 x s32>) = G_BUILD_VECTOR %10(s32), %10(s32)
1442     %12:fpr(<2 x s32>) = COPY %3(<2 x s32>)
1443     %8:fpr(<2 x s32>) = G_AND %12, %11
1444     %9:fpr(<2 x s32>) = G_ICMP intpred(uge), %7(<2 x s32>), %8
1445     %5:fpr(<2 x s32>) = COPY %9(<2 x s32>)
1446     $d0 = COPY %5(<2 x s32>)
1447     RET_ReallyLR implicit $d0
1451 name:            test_v8i16_uge
1452 alignment:       4
1453 legalized:       true
1454 regBankSelected: true
1455 tracksRegLiveness: true
1456 registers:
1457   - { id: 0, class: fpr }
1458   - { id: 1, class: fpr }
1459   - { id: 2, class: _ }
1460   - { id: 3, class: fpr }
1461   - { id: 4, class: fpr }
1462 machineFunctionInfo: {}
1463 body:             |
1464   bb.1 (%ir-block.0):
1465     liveins: $q0, $q1
1467     ; CHECK-LABEL: name: test_v8i16_uge
1468     ; CHECK: liveins: $q0, $q1
1469     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
1470     ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
1471     ; CHECK: [[CMHSv8i16_:%[0-9]+]]:fpr128 = CMHSv8i16 [[COPY]], [[COPY1]]
1472     ; CHECK: [[XTNv8i8_:%[0-9]+]]:fpr64 = XTNv8i8 [[CMHSv8i16_]]
1473     ; CHECK: $d0 = COPY [[XTNv8i8_]]
1474     ; CHECK: RET_ReallyLR implicit $d0
1475     %0:fpr(<8 x s16>) = COPY $q0
1476     %1:fpr(<8 x s16>) = COPY $q1
1477     %4:fpr(<8 x s16>) = G_ICMP intpred(uge), %0(<8 x s16>), %1
1478     %3:fpr(<8 x s8>) = G_TRUNC %4(<8 x s16>)
1479     $d0 = COPY %3(<8 x s8>)
1480     RET_ReallyLR implicit $d0
1484 name:            test_v4i16_uge
1485 alignment:       4
1486 legalized:       true
1487 regBankSelected: true
1488 tracksRegLiveness: true
1489 registers:
1490   - { id: 0, class: fpr }
1491   - { id: 1, class: fpr }
1492   - { id: 2, class: _ }
1493   - { id: 3, class: fpr }
1494   - { id: 4, class: fpr }
1495 machineFunctionInfo: {}
1496 body:             |
1497   bb.1 (%ir-block.0):
1498     liveins: $d0, $d1
1500     ; CHECK-LABEL: name: test_v4i16_uge
1501     ; CHECK: liveins: $d0, $d1
1502     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
1503     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
1504     ; CHECK: [[CMHSv4i16_:%[0-9]+]]:fpr64 = CMHSv4i16 [[COPY]], [[COPY1]]
1505     ; CHECK: $d0 = COPY [[CMHSv4i16_]]
1506     ; CHECK: RET_ReallyLR implicit $d0
1507     %0:fpr(<4 x s16>) = COPY $d0
1508     %1:fpr(<4 x s16>) = COPY $d1
1509     %4:fpr(<4 x s16>) = G_ICMP intpred(uge), %0(<4 x s16>), %1
1510     %3:fpr(<4 x s16>) = COPY %4(<4 x s16>)
1511     $d0 = COPY %3(<4 x s16>)
1512     RET_ReallyLR implicit $d0
1516 name:            test_v16i8_uge
1517 alignment:       4
1518 legalized:       true
1519 regBankSelected: true
1520 tracksRegLiveness: true
1521 registers:
1522   - { id: 0, class: fpr }
1523   - { id: 1, class: fpr }
1524   - { id: 2, class: _ }
1525   - { id: 3, class: fpr }
1526   - { id: 4, class: fpr }
1527 machineFunctionInfo: {}
1528 body:             |
1529   bb.1 (%ir-block.0):
1530     liveins: $q0, $q1
1532     ; CHECK-LABEL: name: test_v16i8_uge
1533     ; CHECK: liveins: $q0, $q1
1534     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
1535     ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
1536     ; CHECK: [[CMHSv16i8_:%[0-9]+]]:fpr128 = CMHSv16i8 [[COPY]], [[COPY1]]
1537     ; CHECK: $q0 = COPY [[CMHSv16i8_]]
1538     ; CHECK: RET_ReallyLR implicit $q0
1539     %0:fpr(<16 x s8>) = COPY $q0
1540     %1:fpr(<16 x s8>) = COPY $q1
1541     %4:fpr(<16 x s8>) = G_ICMP intpred(uge), %0(<16 x s8>), %1
1542     %3:fpr(<16 x s8>) = COPY %4(<16 x s8>)
1543     $q0 = COPY %3(<16 x s8>)
1544     RET_ReallyLR implicit $q0
1548 name:            test_v8i8_uge
1549 alignment:       4
1550 legalized:       true
1551 regBankSelected: true
1552 tracksRegLiveness: true
1553 registers:
1554   - { id: 0, class: fpr }
1555   - { id: 1, class: fpr }
1556   - { id: 2, class: _ }
1557   - { id: 3, class: fpr }
1558   - { id: 4, class: fpr }
1559 machineFunctionInfo: {}
1560 body:             |
1561   bb.1 (%ir-block.0):
1562     liveins: $d0, $d1
1564     ; CHECK-LABEL: name: test_v8i8_uge
1565     ; CHECK: liveins: $d0, $d1
1566     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
1567     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
1568     ; CHECK: [[CMHSv8i8_:%[0-9]+]]:fpr64 = CMHSv8i8 [[COPY]], [[COPY1]]
1569     ; CHECK: $d0 = COPY [[CMHSv8i8_]]
1570     ; CHECK: RET_ReallyLR implicit $d0
1571     %0:fpr(<8 x s8>) = COPY $d0
1572     %1:fpr(<8 x s8>) = COPY $d1
1573     %4:fpr(<8 x s8>) = G_ICMP intpred(uge), %0(<8 x s8>), %1
1574     %3:fpr(<8 x s8>) = COPY %4(<8 x s8>)
1575     $d0 = COPY %3(<8 x s8>)
1576     RET_ReallyLR implicit $d0
1580 name:            test_v2i64_ult
1581 alignment:       4
1582 legalized:       true
1583 regBankSelected: true
1584 tracksRegLiveness: true
1585 registers:
1586   - { id: 0, class: fpr }
1587   - { id: 1, class: fpr }
1588   - { id: 2, class: _ }
1589   - { id: 3, class: fpr }
1590   - { id: 4, class: fpr }
1591 machineFunctionInfo: {}
1592 body:             |
1593   bb.1 (%ir-block.0):
1594     liveins: $q0, $q1
1596     ; CHECK-LABEL: name: test_v2i64_ult
1597     ; CHECK: liveins: $q0, $q1
1598     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
1599     ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
1600     ; CHECK: [[CMHIv2i64_:%[0-9]+]]:fpr128 = CMHIv2i64 [[COPY1]], [[COPY]]
1601     ; CHECK: [[XTNv2i32_:%[0-9]+]]:fpr64 = XTNv2i32 [[CMHIv2i64_]]
1602     ; CHECK: $d0 = COPY [[XTNv2i32_]]
1603     ; CHECK: RET_ReallyLR implicit $d0
1604     %0:fpr(<2 x s64>) = COPY $q0
1605     %1:fpr(<2 x s64>) = COPY $q1
1606     %4:fpr(<2 x s64>) = G_ICMP intpred(ult), %0(<2 x s64>), %1
1607     %3:fpr(<2 x s32>) = G_TRUNC %4(<2 x s64>)
1608     $d0 = COPY %3(<2 x s32>)
1609     RET_ReallyLR implicit $d0
1613 name:            test_v4i32_ult
1614 alignment:       4
1615 legalized:       true
1616 regBankSelected: true
1617 tracksRegLiveness: true
1618 registers:
1619   - { id: 0, class: fpr }
1620   - { id: 1, class: fpr }
1621   - { id: 2, class: _ }
1622   - { id: 3, class: fpr }
1623   - { id: 4, class: fpr }
1624 machineFunctionInfo: {}
1625 body:             |
1626   bb.1 (%ir-block.0):
1627     liveins: $q0, $q1
1629     ; CHECK-LABEL: name: test_v4i32_ult
1630     ; CHECK: liveins: $q0, $q1
1631     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
1632     ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
1633     ; CHECK: [[CMHIv4i32_:%[0-9]+]]:fpr128 = CMHIv4i32 [[COPY1]], [[COPY]]
1634     ; CHECK: [[XTNv4i16_:%[0-9]+]]:fpr64 = XTNv4i16 [[CMHIv4i32_]]
1635     ; CHECK: $d0 = COPY [[XTNv4i16_]]
1636     ; CHECK: RET_ReallyLR implicit $d0
1637     %0:fpr(<4 x s32>) = COPY $q0
1638     %1:fpr(<4 x s32>) = COPY $q1
1639     %4:fpr(<4 x s32>) = G_ICMP intpred(ult), %0(<4 x s32>), %1
1640     %3:fpr(<4 x s16>) = G_TRUNC %4(<4 x s32>)
1641     $d0 = COPY %3(<4 x s16>)
1642     RET_ReallyLR implicit $d0
1646 name:            test_v2i32_ult
1647 alignment:       4
1648 legalized:       true
1649 regBankSelected: true
1650 tracksRegLiveness: true
1651 registers:
1652   - { id: 0, class: fpr }
1653   - { id: 1, class: fpr }
1654   - { id: 2, class: _ }
1655   - { id: 3, class: fpr }
1656   - { id: 4, class: fpr }
1657 machineFunctionInfo: {}
1658 body:             |
1659   bb.1 (%ir-block.0):
1660     liveins: $d0, $d1
1662     ; CHECK-LABEL: name: test_v2i32_ult
1663     ; CHECK: liveins: $d0, $d1
1664     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
1665     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
1666     ; CHECK: [[CMHIv2i32_:%[0-9]+]]:fpr64 = CMHIv2i32 [[COPY1]], [[COPY]]
1667     ; CHECK: $d0 = COPY [[CMHIv2i32_]]
1668     ; CHECK: RET_ReallyLR implicit $d0
1669     %0:fpr(<2 x s32>) = COPY $d0
1670     %1:fpr(<2 x s32>) = COPY $d1
1671     %4:fpr(<2 x s32>) = G_ICMP intpred(ult), %0(<2 x s32>), %1
1672     %3:fpr(<2 x s32>) = COPY %4(<2 x s32>)
1673     $d0 = COPY %3(<2 x s32>)
1674     RET_ReallyLR implicit $d0
1678 name:            test_v2i16_ult
1679 alignment:       4
1680 legalized:       true
1681 regBankSelected: true
1682 tracksRegLiveness: true
1683 registers:
1684   - { id: 0, class: _ }
1685   - { id: 1, class: _ }
1686   - { id: 2, class: fpr }
1687   - { id: 3, class: fpr }
1688   - { id: 4, class: _ }
1689   - { id: 5, class: fpr }
1690   - { id: 6, class: _ }
1691   - { id: 7, class: fpr }
1692   - { id: 8, class: fpr }
1693   - { id: 9, class: fpr }
1694   - { id: 10, class: gpr }
1695   - { id: 11, class: fpr }
1696   - { id: 12, class: fpr }
1697   - { id: 13, class: gpr }
1698   - { id: 14, class: fpr }
1699   - { id: 15, class: fpr }
1700 machineFunctionInfo: {}
1701 body:             |
1702   bb.1 (%ir-block.0):
1703     liveins: $d0, $d1
1705     ; CHECK-LABEL: name: test_v2i16_ult
1706     ; CHECK: liveins: $d0, $d1
1707     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
1708     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
1709     ; CHECK: [[MOVi32imm:%[0-9]+]]:gpr32 = MOVi32imm 65535
1710     ; CHECK: [[DEF:%[0-9]+]]:fpr128 = IMPLICIT_DEF
1711     ; CHECK: [[INSERT_SUBREG:%[0-9]+]]:fpr128 = INSERT_SUBREG [[DEF]], [[MOVi32imm]], %subreg.ssub
1712     ; CHECK: [[INSvi32gpr:%[0-9]+]]:fpr128 = INSvi32gpr [[INSERT_SUBREG]], 1, [[MOVi32imm]]
1713     ; CHECK: [[COPY2:%[0-9]+]]:fpr64 = COPY [[INSvi32gpr]].dsub
1714     ; CHECK: [[ANDv8i8_:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY]], [[COPY2]]
1715     ; CHECK: [[MOVi32imm1:%[0-9]+]]:gpr32 = MOVi32imm 65535
1716     ; CHECK: [[DEF1:%[0-9]+]]:fpr128 = IMPLICIT_DEF
1717     ; CHECK: [[INSERT_SUBREG1:%[0-9]+]]:fpr128 = INSERT_SUBREG [[DEF1]], [[MOVi32imm1]], %subreg.ssub
1718     ; CHECK: [[INSvi32gpr1:%[0-9]+]]:fpr128 = INSvi32gpr [[INSERT_SUBREG1]], 1, [[MOVi32imm1]]
1719     ; CHECK: [[COPY3:%[0-9]+]]:fpr64 = COPY [[INSvi32gpr1]].dsub
1720     ; CHECK: [[ANDv8i8_1:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY1]], [[COPY3]]
1721     ; CHECK: [[CMHIv2i32_:%[0-9]+]]:fpr64 = CMHIv2i32 [[ANDv8i8_1]], [[ANDv8i8_]]
1722     ; CHECK: $d0 = COPY [[CMHIv2i32_]]
1723     ; CHECK: RET_ReallyLR implicit $d0
1724     %2:fpr(<2 x s32>) = COPY $d0
1725     %3:fpr(<2 x s32>) = COPY $d1
1726     %13:gpr(s32) = G_CONSTANT i32 65535
1727     %14:fpr(<2 x s32>) = G_BUILD_VECTOR %13(s32), %13(s32)
1728     %15:fpr(<2 x s32>) = COPY %2(<2 x s32>)
1729     %7:fpr(<2 x s32>) = G_AND %15, %14
1730     %10:gpr(s32) = G_CONSTANT i32 65535
1731     %11:fpr(<2 x s32>) = G_BUILD_VECTOR %10(s32), %10(s32)
1732     %12:fpr(<2 x s32>) = COPY %3(<2 x s32>)
1733     %8:fpr(<2 x s32>) = G_AND %12, %11
1734     %9:fpr(<2 x s32>) = G_ICMP intpred(ult), %7(<2 x s32>), %8
1735     %5:fpr(<2 x s32>) = COPY %9(<2 x s32>)
1736     $d0 = COPY %5(<2 x s32>)
1737     RET_ReallyLR implicit $d0
1741 name:            test_v8i16_ult
1742 alignment:       4
1743 legalized:       true
1744 regBankSelected: true
1745 tracksRegLiveness: true
1746 registers:
1747   - { id: 0, class: fpr }
1748   - { id: 1, class: fpr }
1749   - { id: 2, class: _ }
1750   - { id: 3, class: fpr }
1751   - { id: 4, class: fpr }
1752 machineFunctionInfo: {}
1753 body:             |
1754   bb.1 (%ir-block.0):
1755     liveins: $q0, $q1
1757     ; CHECK-LABEL: name: test_v8i16_ult
1758     ; CHECK: liveins: $q0, $q1
1759     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
1760     ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
1761     ; CHECK: [[CMHIv8i16_:%[0-9]+]]:fpr128 = CMHIv8i16 [[COPY1]], [[COPY]]
1762     ; CHECK: [[XTNv8i8_:%[0-9]+]]:fpr64 = XTNv8i8 [[CMHIv8i16_]]
1763     ; CHECK: $d0 = COPY [[XTNv8i8_]]
1764     ; CHECK: RET_ReallyLR implicit $d0
1765     %0:fpr(<8 x s16>) = COPY $q0
1766     %1:fpr(<8 x s16>) = COPY $q1
1767     %4:fpr(<8 x s16>) = G_ICMP intpred(ult), %0(<8 x s16>), %1
1768     %3:fpr(<8 x s8>) = G_TRUNC %4(<8 x s16>)
1769     $d0 = COPY %3(<8 x s8>)
1770     RET_ReallyLR implicit $d0
1774 name:            test_v4i16_ult
1775 alignment:       4
1776 legalized:       true
1777 regBankSelected: true
1778 tracksRegLiveness: true
1779 registers:
1780   - { id: 0, class: fpr }
1781   - { id: 1, class: fpr }
1782   - { id: 2, class: _ }
1783   - { id: 3, class: fpr }
1784   - { id: 4, class: fpr }
1785 machineFunctionInfo: {}
1786 body:             |
1787   bb.1 (%ir-block.0):
1788     liveins: $d0, $d1
1790     ; CHECK-LABEL: name: test_v4i16_ult
1791     ; CHECK: liveins: $d0, $d1
1792     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
1793     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
1794     ; CHECK: [[CMHIv4i16_:%[0-9]+]]:fpr64 = CMHIv4i16 [[COPY1]], [[COPY]]
1795     ; CHECK: $d0 = COPY [[CMHIv4i16_]]
1796     ; CHECK: RET_ReallyLR implicit $d0
1797     %0:fpr(<4 x s16>) = COPY $d0
1798     %1:fpr(<4 x s16>) = COPY $d1
1799     %4:fpr(<4 x s16>) = G_ICMP intpred(ult), %0(<4 x s16>), %1
1800     %3:fpr(<4 x s16>) = COPY %4(<4 x s16>)
1801     $d0 = COPY %3(<4 x s16>)
1802     RET_ReallyLR implicit $d0
1806 name:            test_v16i8_ult
1807 alignment:       4
1808 legalized:       true
1809 regBankSelected: true
1810 tracksRegLiveness: true
1811 registers:
1812   - { id: 0, class: fpr }
1813   - { id: 1, class: fpr }
1814   - { id: 2, class: _ }
1815   - { id: 3, class: fpr }
1816   - { id: 4, class: fpr }
1817 machineFunctionInfo: {}
1818 body:             |
1819   bb.1 (%ir-block.0):
1820     liveins: $q0, $q1
1822     ; CHECK-LABEL: name: test_v16i8_ult
1823     ; CHECK: liveins: $q0, $q1
1824     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
1825     ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
1826     ; CHECK: [[CMHIv16i8_:%[0-9]+]]:fpr128 = CMHIv16i8 [[COPY1]], [[COPY]]
1827     ; CHECK: $q0 = COPY [[CMHIv16i8_]]
1828     ; CHECK: RET_ReallyLR implicit $q0
1829     %0:fpr(<16 x s8>) = COPY $q0
1830     %1:fpr(<16 x s8>) = COPY $q1
1831     %4:fpr(<16 x s8>) = G_ICMP intpred(ult), %0(<16 x s8>), %1
1832     %3:fpr(<16 x s8>) = COPY %4(<16 x s8>)
1833     $q0 = COPY %3(<16 x s8>)
1834     RET_ReallyLR implicit $q0
1838 name:            test_v8i8_ult
1839 alignment:       4
1840 legalized:       true
1841 regBankSelected: true
1842 tracksRegLiveness: true
1843 registers:
1844   - { id: 0, class: fpr }
1845   - { id: 1, class: fpr }
1846   - { id: 2, class: _ }
1847   - { id: 3, class: fpr }
1848   - { id: 4, class: fpr }
1849 machineFunctionInfo: {}
1850 body:             |
1851   bb.1 (%ir-block.0):
1852     liveins: $d0, $d1
1854     ; CHECK-LABEL: name: test_v8i8_ult
1855     ; CHECK: liveins: $d0, $d1
1856     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
1857     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
1858     ; CHECK: [[CMHIv8i8_:%[0-9]+]]:fpr64 = CMHIv8i8 [[COPY1]], [[COPY]]
1859     ; CHECK: $d0 = COPY [[CMHIv8i8_]]
1860     ; CHECK: RET_ReallyLR implicit $d0
1861     %0:fpr(<8 x s8>) = COPY $d0
1862     %1:fpr(<8 x s8>) = COPY $d1
1863     %4:fpr(<8 x s8>) = G_ICMP intpred(ult), %0(<8 x s8>), %1
1864     %3:fpr(<8 x s8>) = COPY %4(<8 x s8>)
1865     $d0 = COPY %3(<8 x s8>)
1866     RET_ReallyLR implicit $d0
1870 name:            test_v2i64_ule
1871 alignment:       4
1872 legalized:       true
1873 regBankSelected: true
1874 tracksRegLiveness: true
1875 registers:
1876   - { id: 0, class: fpr }
1877   - { id: 1, class: fpr }
1878   - { id: 2, class: _ }
1879   - { id: 3, class: fpr }
1880   - { id: 4, class: fpr }
1881 machineFunctionInfo: {}
1882 body:             |
1883   bb.1 (%ir-block.0):
1884     liveins: $q0, $q1
1886     ; CHECK-LABEL: name: test_v2i64_ule
1887     ; CHECK: liveins: $q0, $q1
1888     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
1889     ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
1890     ; CHECK: [[CMHSv2i64_:%[0-9]+]]:fpr128 = CMHSv2i64 [[COPY1]], [[COPY]]
1891     ; CHECK: [[XTNv2i32_:%[0-9]+]]:fpr64 = XTNv2i32 [[CMHSv2i64_]]
1892     ; CHECK: $d0 = COPY [[XTNv2i32_]]
1893     ; CHECK: RET_ReallyLR implicit $d0
1894     %0:fpr(<2 x s64>) = COPY $q0
1895     %1:fpr(<2 x s64>) = COPY $q1
1896     %4:fpr(<2 x s64>) = G_ICMP intpred(ule), %0(<2 x s64>), %1
1897     %3:fpr(<2 x s32>) = G_TRUNC %4(<2 x s64>)
1898     $d0 = COPY %3(<2 x s32>)
1899     RET_ReallyLR implicit $d0
1903 name:            test_v4i32_ule
1904 alignment:       4
1905 legalized:       true
1906 regBankSelected: true
1907 tracksRegLiveness: true
1908 registers:
1909   - { id: 0, class: fpr }
1910   - { id: 1, class: fpr }
1911   - { id: 2, class: _ }
1912   - { id: 3, class: fpr }
1913   - { id: 4, class: fpr }
1914 machineFunctionInfo: {}
1915 body:             |
1916   bb.1 (%ir-block.0):
1917     liveins: $q0, $q1
1919     ; CHECK-LABEL: name: test_v4i32_ule
1920     ; CHECK: liveins: $q0, $q1
1921     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
1922     ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
1923     ; CHECK: [[CMHSv4i32_:%[0-9]+]]:fpr128 = CMHSv4i32 [[COPY1]], [[COPY]]
1924     ; CHECK: [[XTNv4i16_:%[0-9]+]]:fpr64 = XTNv4i16 [[CMHSv4i32_]]
1925     ; CHECK: $d0 = COPY [[XTNv4i16_]]
1926     ; CHECK: RET_ReallyLR implicit $d0
1927     %0:fpr(<4 x s32>) = COPY $q0
1928     %1:fpr(<4 x s32>) = COPY $q1
1929     %4:fpr(<4 x s32>) = G_ICMP intpred(ule), %0(<4 x s32>), %1
1930     %3:fpr(<4 x s16>) = G_TRUNC %4(<4 x s32>)
1931     $d0 = COPY %3(<4 x s16>)
1932     RET_ReallyLR implicit $d0
1936 name:            test_v2i32_ule
1937 alignment:       4
1938 legalized:       true
1939 regBankSelected: true
1940 tracksRegLiveness: true
1941 registers:
1942   - { id: 0, class: fpr }
1943   - { id: 1, class: fpr }
1944   - { id: 2, class: _ }
1945   - { id: 3, class: fpr }
1946   - { id: 4, class: fpr }
1947 machineFunctionInfo: {}
1948 body:             |
1949   bb.1 (%ir-block.0):
1950     liveins: $d0, $d1
1952     ; CHECK-LABEL: name: test_v2i32_ule
1953     ; CHECK: liveins: $d0, $d1
1954     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
1955     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
1956     ; CHECK: [[CMHSv2i32_:%[0-9]+]]:fpr64 = CMHSv2i32 [[COPY1]], [[COPY]]
1957     ; CHECK: $d0 = COPY [[CMHSv2i32_]]
1958     ; CHECK: RET_ReallyLR implicit $d0
1959     %0:fpr(<2 x s32>) = COPY $d0
1960     %1:fpr(<2 x s32>) = COPY $d1
1961     %4:fpr(<2 x s32>) = G_ICMP intpred(ule), %0(<2 x s32>), %1
1962     %3:fpr(<2 x s32>) = COPY %4(<2 x s32>)
1963     $d0 = COPY %3(<2 x s32>)
1964     RET_ReallyLR implicit $d0
1968 name:            test_v2i16_ule
1969 alignment:       4
1970 legalized:       true
1971 regBankSelected: true
1972 tracksRegLiveness: true
1973 registers:
1974   - { id: 0, class: _ }
1975   - { id: 1, class: _ }
1976   - { id: 2, class: fpr }
1977   - { id: 3, class: fpr }
1978   - { id: 4, class: _ }
1979   - { id: 5, class: fpr }
1980   - { id: 6, class: _ }
1981   - { id: 7, class: fpr }
1982   - { id: 8, class: fpr }
1983   - { id: 9, class: fpr }
1984   - { id: 10, class: gpr }
1985   - { id: 11, class: fpr }
1986   - { id: 12, class: fpr }
1987   - { id: 13, class: gpr }
1988   - { id: 14, class: fpr }
1989   - { id: 15, class: fpr }
1990 machineFunctionInfo: {}
1991 body:             |
1992   bb.1 (%ir-block.0):
1993     liveins: $d0, $d1
1995     ; CHECK-LABEL: name: test_v2i16_ule
1996     ; CHECK: liveins: $d0, $d1
1997     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
1998     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
1999     ; CHECK: [[MOVi32imm:%[0-9]+]]:gpr32 = MOVi32imm 65535
2000     ; CHECK: [[DEF:%[0-9]+]]:fpr128 = IMPLICIT_DEF
2001     ; CHECK: [[INSERT_SUBREG:%[0-9]+]]:fpr128 = INSERT_SUBREG [[DEF]], [[MOVi32imm]], %subreg.ssub
2002     ; CHECK: [[INSvi32gpr:%[0-9]+]]:fpr128 = INSvi32gpr [[INSERT_SUBREG]], 1, [[MOVi32imm]]
2003     ; CHECK: [[COPY2:%[0-9]+]]:fpr64 = COPY [[INSvi32gpr]].dsub
2004     ; CHECK: [[ANDv8i8_:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY]], [[COPY2]]
2005     ; CHECK: [[MOVi32imm1:%[0-9]+]]:gpr32 = MOVi32imm 65535
2006     ; CHECK: [[DEF1:%[0-9]+]]:fpr128 = IMPLICIT_DEF
2007     ; CHECK: [[INSERT_SUBREG1:%[0-9]+]]:fpr128 = INSERT_SUBREG [[DEF1]], [[MOVi32imm1]], %subreg.ssub
2008     ; CHECK: [[INSvi32gpr1:%[0-9]+]]:fpr128 = INSvi32gpr [[INSERT_SUBREG1]], 1, [[MOVi32imm1]]
2009     ; CHECK: [[COPY3:%[0-9]+]]:fpr64 = COPY [[INSvi32gpr1]].dsub
2010     ; CHECK: [[ANDv8i8_1:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY1]], [[COPY3]]
2011     ; CHECK: [[CMHSv2i32_:%[0-9]+]]:fpr64 = CMHSv2i32 [[ANDv8i8_1]], [[ANDv8i8_]]
2012     ; CHECK: $d0 = COPY [[CMHSv2i32_]]
2013     ; CHECK: RET_ReallyLR implicit $d0
2014     %2:fpr(<2 x s32>) = COPY $d0
2015     %3:fpr(<2 x s32>) = COPY $d1
2016     %13:gpr(s32) = G_CONSTANT i32 65535
2017     %14:fpr(<2 x s32>) = G_BUILD_VECTOR %13(s32), %13(s32)
2018     %15:fpr(<2 x s32>) = COPY %2(<2 x s32>)
2019     %7:fpr(<2 x s32>) = G_AND %15, %14
2020     %10:gpr(s32) = G_CONSTANT i32 65535
2021     %11:fpr(<2 x s32>) = G_BUILD_VECTOR %10(s32), %10(s32)
2022     %12:fpr(<2 x s32>) = COPY %3(<2 x s32>)
2023     %8:fpr(<2 x s32>) = G_AND %12, %11
2024     %9:fpr(<2 x s32>) = G_ICMP intpred(ule), %7(<2 x s32>), %8
2025     %5:fpr(<2 x s32>) = COPY %9(<2 x s32>)
2026     $d0 = COPY %5(<2 x s32>)
2027     RET_ReallyLR implicit $d0
2031 name:            test_v8i16_ule
2032 alignment:       4
2033 legalized:       true
2034 regBankSelected: true
2035 tracksRegLiveness: true
2036 registers:
2037   - { id: 0, class: fpr }
2038   - { id: 1, class: fpr }
2039   - { id: 2, class: _ }
2040   - { id: 3, class: fpr }
2041   - { id: 4, class: fpr }
2042 machineFunctionInfo: {}
2043 body:             |
2044   bb.1 (%ir-block.0):
2045     liveins: $q0, $q1
2047     ; CHECK-LABEL: name: test_v8i16_ule
2048     ; CHECK: liveins: $q0, $q1
2049     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
2050     ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
2051     ; CHECK: [[CMHSv8i16_:%[0-9]+]]:fpr128 = CMHSv8i16 [[COPY1]], [[COPY]]
2052     ; CHECK: [[XTNv8i8_:%[0-9]+]]:fpr64 = XTNv8i8 [[CMHSv8i16_]]
2053     ; CHECK: $d0 = COPY [[XTNv8i8_]]
2054     ; CHECK: RET_ReallyLR implicit $d0
2055     %0:fpr(<8 x s16>) = COPY $q0
2056     %1:fpr(<8 x s16>) = COPY $q1
2057     %4:fpr(<8 x s16>) = G_ICMP intpred(ule), %0(<8 x s16>), %1
2058     %3:fpr(<8 x s8>) = G_TRUNC %4(<8 x s16>)
2059     $d0 = COPY %3(<8 x s8>)
2060     RET_ReallyLR implicit $d0
2064 name:            test_v4i16_ule
2065 alignment:       4
2066 legalized:       true
2067 regBankSelected: true
2068 tracksRegLiveness: true
2069 registers:
2070   - { id: 0, class: fpr }
2071   - { id: 1, class: fpr }
2072   - { id: 2, class: _ }
2073   - { id: 3, class: fpr }
2074   - { id: 4, class: fpr }
2075 machineFunctionInfo: {}
2076 body:             |
2077   bb.1 (%ir-block.0):
2078     liveins: $d0, $d1
2080     ; CHECK-LABEL: name: test_v4i16_ule
2081     ; CHECK: liveins: $d0, $d1
2082     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
2083     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
2084     ; CHECK: [[CMHSv4i16_:%[0-9]+]]:fpr64 = CMHSv4i16 [[COPY1]], [[COPY]]
2085     ; CHECK: $d0 = COPY [[CMHSv4i16_]]
2086     ; CHECK: RET_ReallyLR implicit $d0
2087     %0:fpr(<4 x s16>) = COPY $d0
2088     %1:fpr(<4 x s16>) = COPY $d1
2089     %4:fpr(<4 x s16>) = G_ICMP intpred(ule), %0(<4 x s16>), %1
2090     %3:fpr(<4 x s16>) = COPY %4(<4 x s16>)
2091     $d0 = COPY %3(<4 x s16>)
2092     RET_ReallyLR implicit $d0
2096 name:            test_v16i8_ule
2097 alignment:       4
2098 legalized:       true
2099 regBankSelected: true
2100 tracksRegLiveness: true
2101 registers:
2102   - { id: 0, class: fpr }
2103   - { id: 1, class: fpr }
2104   - { id: 2, class: _ }
2105   - { id: 3, class: fpr }
2106   - { id: 4, class: fpr }
2107 machineFunctionInfo: {}
2108 body:             |
2109   bb.1 (%ir-block.0):
2110     liveins: $q0, $q1
2112     ; CHECK-LABEL: name: test_v16i8_ule
2113     ; CHECK: liveins: $q0, $q1
2114     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
2115     ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
2116     ; CHECK: [[CMHSv16i8_:%[0-9]+]]:fpr128 = CMHSv16i8 [[COPY1]], [[COPY]]
2117     ; CHECK: $q0 = COPY [[CMHSv16i8_]]
2118     ; CHECK: RET_ReallyLR implicit $q0
2119     %0:fpr(<16 x s8>) = COPY $q0
2120     %1:fpr(<16 x s8>) = COPY $q1
2121     %4:fpr(<16 x s8>) = G_ICMP intpred(ule), %0(<16 x s8>), %1
2122     %3:fpr(<16 x s8>) = COPY %4(<16 x s8>)
2123     $q0 = COPY %3(<16 x s8>)
2124     RET_ReallyLR implicit $q0
2128 name:            test_v8i8_ule
2129 alignment:       4
2130 legalized:       true
2131 regBankSelected: true
2132 tracksRegLiveness: true
2133 registers:
2134   - { id: 0, class: fpr }
2135   - { id: 1, class: fpr }
2136   - { id: 2, class: _ }
2137   - { id: 3, class: fpr }
2138   - { id: 4, class: fpr }
2139 machineFunctionInfo: {}
2140 body:             |
2141   bb.1 (%ir-block.0):
2142     liveins: $d0, $d1
2144     ; CHECK-LABEL: name: test_v8i8_ule
2145     ; CHECK: liveins: $d0, $d1
2146     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
2147     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
2148     ; CHECK: [[CMHSv8i8_:%[0-9]+]]:fpr64 = CMHSv8i8 [[COPY1]], [[COPY]]
2149     ; CHECK: $d0 = COPY [[CMHSv8i8_]]
2150     ; CHECK: RET_ReallyLR implicit $d0
2151     %0:fpr(<8 x s8>) = COPY $d0
2152     %1:fpr(<8 x s8>) = COPY $d1
2153     %4:fpr(<8 x s8>) = G_ICMP intpred(ule), %0(<8 x s8>), %1
2154     %3:fpr(<8 x s8>) = COPY %4(<8 x s8>)
2155     $d0 = COPY %3(<8 x s8>)
2156     RET_ReallyLR implicit $d0
2160 name:            test_v2i64_sgt
2161 alignment:       4
2162 legalized:       true
2163 regBankSelected: true
2164 tracksRegLiveness: true
2165 registers:
2166   - { id: 0, class: fpr }
2167   - { id: 1, class: fpr }
2168   - { id: 2, class: _ }
2169   - { id: 3, class: fpr }
2170   - { id: 4, class: fpr }
2171 machineFunctionInfo: {}
2172 body:             |
2173   bb.1 (%ir-block.0):
2174     liveins: $q0, $q1
2176     ; CHECK-LABEL: name: test_v2i64_sgt
2177     ; CHECK: liveins: $q0, $q1
2178     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
2179     ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
2180     ; CHECK: [[CMGTv2i64_:%[0-9]+]]:fpr128 = CMGTv2i64 [[COPY]], [[COPY1]]
2181     ; CHECK: [[XTNv2i32_:%[0-9]+]]:fpr64 = XTNv2i32 [[CMGTv2i64_]]
2182     ; CHECK: $d0 = COPY [[XTNv2i32_]]
2183     ; CHECK: RET_ReallyLR implicit $d0
2184     %0:fpr(<2 x s64>) = COPY $q0
2185     %1:fpr(<2 x s64>) = COPY $q1
2186     %4:fpr(<2 x s64>) = G_ICMP intpred(sgt), %0(<2 x s64>), %1
2187     %3:fpr(<2 x s32>) = G_TRUNC %4(<2 x s64>)
2188     $d0 = COPY %3(<2 x s32>)
2189     RET_ReallyLR implicit $d0
2193 name:            test_v4i32_sgt
2194 alignment:       4
2195 legalized:       true
2196 regBankSelected: true
2197 tracksRegLiveness: true
2198 registers:
2199   - { id: 0, class: fpr }
2200   - { id: 1, class: fpr }
2201   - { id: 2, class: _ }
2202   - { id: 3, class: fpr }
2203   - { id: 4, class: fpr }
2204 machineFunctionInfo: {}
2205 body:             |
2206   bb.1 (%ir-block.0):
2207     liveins: $q0, $q1
2209     ; CHECK-LABEL: name: test_v4i32_sgt
2210     ; CHECK: liveins: $q0, $q1
2211     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
2212     ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
2213     ; CHECK: [[CMGTv4i32_:%[0-9]+]]:fpr128 = CMGTv4i32 [[COPY]], [[COPY1]]
2214     ; CHECK: [[XTNv4i16_:%[0-9]+]]:fpr64 = XTNv4i16 [[CMGTv4i32_]]
2215     ; CHECK: $d0 = COPY [[XTNv4i16_]]
2216     ; CHECK: RET_ReallyLR implicit $d0
2217     %0:fpr(<4 x s32>) = COPY $q0
2218     %1:fpr(<4 x s32>) = COPY $q1
2219     %4:fpr(<4 x s32>) = G_ICMP intpred(sgt), %0(<4 x s32>), %1
2220     %3:fpr(<4 x s16>) = G_TRUNC %4(<4 x s32>)
2221     $d0 = COPY %3(<4 x s16>)
2222     RET_ReallyLR implicit $d0
2226 name:            test_v2i32_sgt
2227 alignment:       4
2228 legalized:       true
2229 regBankSelected: true
2230 tracksRegLiveness: true
2231 registers:
2232   - { id: 0, class: fpr }
2233   - { id: 1, class: fpr }
2234   - { id: 2, class: _ }
2235   - { id: 3, class: fpr }
2236   - { id: 4, class: fpr }
2237 machineFunctionInfo: {}
2238 body:             |
2239   bb.1 (%ir-block.0):
2240     liveins: $d0, $d1
2242     ; CHECK-LABEL: name: test_v2i32_sgt
2243     ; CHECK: liveins: $d0, $d1
2244     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
2245     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
2246     ; CHECK: [[CMGTv2i32_:%[0-9]+]]:fpr64 = CMGTv2i32 [[COPY]], [[COPY1]]
2247     ; CHECK: $d0 = COPY [[CMGTv2i32_]]
2248     ; CHECK: RET_ReallyLR implicit $d0
2249     %0:fpr(<2 x s32>) = COPY $d0
2250     %1:fpr(<2 x s32>) = COPY $d1
2251     %4:fpr(<2 x s32>) = G_ICMP intpred(sgt), %0(<2 x s32>), %1
2252     %3:fpr(<2 x s32>) = COPY %4(<2 x s32>)
2253     $d0 = COPY %3(<2 x s32>)
2254     RET_ReallyLR implicit $d0
2258 name:            test_v2i16_sgt
2259 alignment:       4
2260 legalized:       true
2261 regBankSelected: true
2262 tracksRegLiveness: true
2263 registers:
2264   - { id: 0, class: _ }
2265   - { id: 1, class: _ }
2266   - { id: 2, class: fpr }
2267   - { id: 3, class: fpr }
2268   - { id: 4, class: _ }
2269   - { id: 5, class: fpr }
2270   - { id: 6, class: _ }
2271   - { id: 7, class: fpr }
2272   - { id: 8, class: fpr }
2273   - { id: 9, class: fpr }
2274   - { id: 10, class: gpr }
2275   - { id: 11, class: fpr }
2276   - { id: 12, class: fpr }
2277   - { id: 13, class: fpr }
2278   - { id: 14, class: gpr }
2279   - { id: 15, class: fpr }
2280   - { id: 16, class: fpr }
2281   - { id: 17, class: fpr }
2282 machineFunctionInfo: {}
2283 body:             |
2284   bb.1 (%ir-block.0):
2285     liveins: $d0, $d1
2287     ; CHECK-LABEL: name: test_v2i16_sgt
2288     ; CHECK: liveins: $d0, $d1
2289     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
2290     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
2291     ; CHECK: [[MOVi32imm:%[0-9]+]]:gpr32 = MOVi32imm 16
2292     ; CHECK: [[DEF:%[0-9]+]]:fpr128 = IMPLICIT_DEF
2293     ; CHECK: [[INSERT_SUBREG:%[0-9]+]]:fpr128 = INSERT_SUBREG [[DEF]], [[MOVi32imm]], %subreg.ssub
2294     ; CHECK: [[INSvi32gpr:%[0-9]+]]:fpr128 = INSvi32gpr [[INSERT_SUBREG]], 1, [[MOVi32imm]]
2295     ; CHECK: [[COPY2:%[0-9]+]]:fpr64 = COPY [[INSvi32gpr]].dsub
2296     ; CHECK: [[USHLv2i32_:%[0-9]+]]:fpr64 = USHLv2i32 [[COPY]], [[COPY2]]
2297     ; CHECK: [[NEGv2i32_:%[0-9]+]]:fpr64 = NEGv2i32 [[COPY2]]
2298     ; CHECK: [[SSHLv2i32_:%[0-9]+]]:fpr64 = SSHLv2i32 [[USHLv2i32_]], [[NEGv2i32_]]
2299     ; CHECK: [[MOVi32imm1:%[0-9]+]]:gpr32 = MOVi32imm 16
2300     ; CHECK: [[DEF1:%[0-9]+]]:fpr128 = IMPLICIT_DEF
2301     ; CHECK: [[INSERT_SUBREG1:%[0-9]+]]:fpr128 = INSERT_SUBREG [[DEF1]], [[MOVi32imm1]], %subreg.ssub
2302     ; CHECK: [[INSvi32gpr1:%[0-9]+]]:fpr128 = INSvi32gpr [[INSERT_SUBREG1]], 1, [[MOVi32imm1]]
2303     ; CHECK: [[COPY3:%[0-9]+]]:fpr64 = COPY [[INSvi32gpr1]].dsub
2304     ; CHECK: [[USHLv2i32_1:%[0-9]+]]:fpr64 = USHLv2i32 [[COPY1]], [[COPY3]]
2305     ; CHECK: [[NEGv2i32_1:%[0-9]+]]:fpr64 = NEGv2i32 [[COPY3]]
2306     ; CHECK: [[SSHLv2i32_1:%[0-9]+]]:fpr64 = SSHLv2i32 [[USHLv2i32_1]], [[NEGv2i32_1]]
2307     ; CHECK: [[CMGTv2i32_:%[0-9]+]]:fpr64 = CMGTv2i32 [[SSHLv2i32_]], [[SSHLv2i32_1]]
2308     ; CHECK: $d0 = COPY [[CMGTv2i32_]]
2309     ; CHECK: RET_ReallyLR implicit $d0
2310     %2:fpr(<2 x s32>) = COPY $d0
2311     %3:fpr(<2 x s32>) = COPY $d1
2312     %14:gpr(s32) = G_CONSTANT i32 16
2313     %15:fpr(<2 x s32>) = G_BUILD_VECTOR %14(s32), %14(s32)
2314     %16:fpr(<2 x s32>) = COPY %2(<2 x s32>)
2315     %17:fpr(<2 x s32>) = G_SHL %16, %15(<2 x s32>)
2316     %7:fpr(<2 x s32>) = G_ASHR %17, %15(<2 x s32>)
2317     %10:gpr(s32) = G_CONSTANT i32 16
2318     %11:fpr(<2 x s32>) = G_BUILD_VECTOR %10(s32), %10(s32)
2319     %12:fpr(<2 x s32>) = COPY %3(<2 x s32>)
2320     %13:fpr(<2 x s32>) = G_SHL %12, %11(<2 x s32>)
2321     %8:fpr(<2 x s32>) = G_ASHR %13, %11(<2 x s32>)
2322     %9:fpr(<2 x s32>) = G_ICMP intpred(sgt), %7(<2 x s32>), %8
2323     %5:fpr(<2 x s32>) = COPY %9(<2 x s32>)
2324     $d0 = COPY %5(<2 x s32>)
2325     RET_ReallyLR implicit $d0
2329 name:            test_v8i16_sgt
2330 alignment:       4
2331 legalized:       true
2332 regBankSelected: true
2333 tracksRegLiveness: true
2334 registers:
2335   - { id: 0, class: fpr }
2336   - { id: 1, class: fpr }
2337   - { id: 2, class: _ }
2338   - { id: 3, class: fpr }
2339   - { id: 4, class: fpr }
2340 machineFunctionInfo: {}
2341 body:             |
2342   bb.1 (%ir-block.0):
2343     liveins: $q0, $q1
2345     ; CHECK-LABEL: name: test_v8i16_sgt
2346     ; CHECK: liveins: $q0, $q1
2347     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
2348     ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
2349     ; CHECK: [[CMGTv8i16_:%[0-9]+]]:fpr128 = CMGTv8i16 [[COPY]], [[COPY1]]
2350     ; CHECK: [[XTNv8i8_:%[0-9]+]]:fpr64 = XTNv8i8 [[CMGTv8i16_]]
2351     ; CHECK: $d0 = COPY [[XTNv8i8_]]
2352     ; CHECK: RET_ReallyLR implicit $d0
2353     %0:fpr(<8 x s16>) = COPY $q0
2354     %1:fpr(<8 x s16>) = COPY $q1
2355     %4:fpr(<8 x s16>) = G_ICMP intpred(sgt), %0(<8 x s16>), %1
2356     %3:fpr(<8 x s8>) = G_TRUNC %4(<8 x s16>)
2357     $d0 = COPY %3(<8 x s8>)
2358     RET_ReallyLR implicit $d0
2362 name:            test_v4i16_sgt
2363 alignment:       4
2364 legalized:       true
2365 regBankSelected: true
2366 tracksRegLiveness: true
2367 registers:
2368   - { id: 0, class: fpr }
2369   - { id: 1, class: fpr }
2370   - { id: 2, class: _ }
2371   - { id: 3, class: fpr }
2372   - { id: 4, class: fpr }
2373 machineFunctionInfo: {}
2374 body:             |
2375   bb.1 (%ir-block.0):
2376     liveins: $d0, $d1
2378     ; CHECK-LABEL: name: test_v4i16_sgt
2379     ; CHECK: liveins: $d0, $d1
2380     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
2381     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
2382     ; CHECK: [[CMGTv4i16_:%[0-9]+]]:fpr64 = CMGTv4i16 [[COPY]], [[COPY1]]
2383     ; CHECK: $d0 = COPY [[CMGTv4i16_]]
2384     ; CHECK: RET_ReallyLR implicit $d0
2385     %0:fpr(<4 x s16>) = COPY $d0
2386     %1:fpr(<4 x s16>) = COPY $d1
2387     %4:fpr(<4 x s16>) = G_ICMP intpred(sgt), %0(<4 x s16>), %1
2388     %3:fpr(<4 x s16>) = COPY %4(<4 x s16>)
2389     $d0 = COPY %3(<4 x s16>)
2390     RET_ReallyLR implicit $d0
2394 name:            test_v16i8_sgt
2395 alignment:       4
2396 legalized:       true
2397 regBankSelected: true
2398 tracksRegLiveness: true
2399 registers:
2400   - { id: 0, class: fpr }
2401   - { id: 1, class: fpr }
2402   - { id: 2, class: _ }
2403   - { id: 3, class: fpr }
2404   - { id: 4, class: fpr }
2405 machineFunctionInfo: {}
2406 body:             |
2407   bb.1 (%ir-block.0):
2408     liveins: $q0, $q1
2410     ; CHECK-LABEL: name: test_v16i8_sgt
2411     ; CHECK: liveins: $q0, $q1
2412     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
2413     ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
2414     ; CHECK: [[CMGTv16i8_:%[0-9]+]]:fpr128 = CMGTv16i8 [[COPY]], [[COPY1]]
2415     ; CHECK: $q0 = COPY [[CMGTv16i8_]]
2416     ; CHECK: RET_ReallyLR implicit $q0
2417     %0:fpr(<16 x s8>) = COPY $q0
2418     %1:fpr(<16 x s8>) = COPY $q1
2419     %4:fpr(<16 x s8>) = G_ICMP intpred(sgt), %0(<16 x s8>), %1
2420     %3:fpr(<16 x s8>) = COPY %4(<16 x s8>)
2421     $q0 = COPY %3(<16 x s8>)
2422     RET_ReallyLR implicit $q0
2426 name:            test_v8i8_sgt
2427 alignment:       4
2428 legalized:       true
2429 regBankSelected: true
2430 tracksRegLiveness: true
2431 registers:
2432   - { id: 0, class: fpr }
2433   - { id: 1, class: fpr }
2434   - { id: 2, class: _ }
2435   - { id: 3, class: fpr }
2436   - { id: 4, class: fpr }
2437 machineFunctionInfo: {}
2438 body:             |
2439   bb.1 (%ir-block.0):
2440     liveins: $d0, $d1
2442     ; CHECK-LABEL: name: test_v8i8_sgt
2443     ; CHECK: liveins: $d0, $d1
2444     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
2445     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
2446     ; CHECK: [[CMGTv8i8_:%[0-9]+]]:fpr64 = CMGTv8i8 [[COPY]], [[COPY1]]
2447     ; CHECK: $d0 = COPY [[CMGTv8i8_]]
2448     ; CHECK: RET_ReallyLR implicit $d0
2449     %0:fpr(<8 x s8>) = COPY $d0
2450     %1:fpr(<8 x s8>) = COPY $d1
2451     %4:fpr(<8 x s8>) = G_ICMP intpred(sgt), %0(<8 x s8>), %1
2452     %3:fpr(<8 x s8>) = COPY %4(<8 x s8>)
2453     $d0 = COPY %3(<8 x s8>)
2454     RET_ReallyLR implicit $d0
2458 name:            test_v2i64_sge
2459 alignment:       4
2460 legalized:       true
2461 regBankSelected: true
2462 tracksRegLiveness: true
2463 registers:
2464   - { id: 0, class: fpr }
2465   - { id: 1, class: fpr }
2466   - { id: 2, class: _ }
2467   - { id: 3, class: fpr }
2468   - { id: 4, class: fpr }
2469 machineFunctionInfo: {}
2470 body:             |
2471   bb.1 (%ir-block.0):
2472     liveins: $q0, $q1
2474     ; CHECK-LABEL: name: test_v2i64_sge
2475     ; CHECK: liveins: $q0, $q1
2476     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
2477     ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
2478     ; CHECK: [[CMGEv2i64_:%[0-9]+]]:fpr128 = CMGEv2i64 [[COPY]], [[COPY1]]
2479     ; CHECK: [[XTNv2i32_:%[0-9]+]]:fpr64 = XTNv2i32 [[CMGEv2i64_]]
2480     ; CHECK: $d0 = COPY [[XTNv2i32_]]
2481     ; CHECK: RET_ReallyLR implicit $d0
2482     %0:fpr(<2 x s64>) = COPY $q0
2483     %1:fpr(<2 x s64>) = COPY $q1
2484     %4:fpr(<2 x s64>) = G_ICMP intpred(sge), %0(<2 x s64>), %1
2485     %3:fpr(<2 x s32>) = G_TRUNC %4(<2 x s64>)
2486     $d0 = COPY %3(<2 x s32>)
2487     RET_ReallyLR implicit $d0
2491 name:            test_v4i32_sge
2492 alignment:       4
2493 legalized:       true
2494 regBankSelected: true
2495 tracksRegLiveness: true
2496 registers:
2497   - { id: 0, class: fpr }
2498   - { id: 1, class: fpr }
2499   - { id: 2, class: _ }
2500   - { id: 3, class: fpr }
2501   - { id: 4, class: fpr }
2502 machineFunctionInfo: {}
2503 body:             |
2504   bb.1 (%ir-block.0):
2505     liveins: $q0, $q1
2507     ; CHECK-LABEL: name: test_v4i32_sge
2508     ; CHECK: liveins: $q0, $q1
2509     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
2510     ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
2511     ; CHECK: [[CMGEv4i32_:%[0-9]+]]:fpr128 = CMGEv4i32 [[COPY]], [[COPY1]]
2512     ; CHECK: [[XTNv4i16_:%[0-9]+]]:fpr64 = XTNv4i16 [[CMGEv4i32_]]
2513     ; CHECK: $d0 = COPY [[XTNv4i16_]]
2514     ; CHECK: RET_ReallyLR implicit $d0
2515     %0:fpr(<4 x s32>) = COPY $q0
2516     %1:fpr(<4 x s32>) = COPY $q1
2517     %4:fpr(<4 x s32>) = G_ICMP intpred(sge), %0(<4 x s32>), %1
2518     %3:fpr(<4 x s16>) = G_TRUNC %4(<4 x s32>)
2519     $d0 = COPY %3(<4 x s16>)
2520     RET_ReallyLR implicit $d0
2524 name:            test_v2i32_sge
2525 alignment:       4
2526 legalized:       true
2527 regBankSelected: true
2528 tracksRegLiveness: true
2529 registers:
2530   - { id: 0, class: fpr }
2531   - { id: 1, class: fpr }
2532   - { id: 2, class: _ }
2533   - { id: 3, class: fpr }
2534   - { id: 4, class: fpr }
2535 machineFunctionInfo: {}
2536 body:             |
2537   bb.1 (%ir-block.0):
2538     liveins: $d0, $d1
2540     ; CHECK-LABEL: name: test_v2i32_sge
2541     ; CHECK: liveins: $d0, $d1
2542     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
2543     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
2544     ; CHECK: [[CMGEv2i32_:%[0-9]+]]:fpr64 = CMGEv2i32 [[COPY]], [[COPY1]]
2545     ; CHECK: $d0 = COPY [[CMGEv2i32_]]
2546     ; CHECK: RET_ReallyLR implicit $d0
2547     %0:fpr(<2 x s32>) = COPY $d0
2548     %1:fpr(<2 x s32>) = COPY $d1
2549     %4:fpr(<2 x s32>) = G_ICMP intpred(sge), %0(<2 x s32>), %1
2550     %3:fpr(<2 x s32>) = COPY %4(<2 x s32>)
2551     $d0 = COPY %3(<2 x s32>)
2552     RET_ReallyLR implicit $d0
2556 name:            test_v2i16_sge
2557 alignment:       4
2558 legalized:       true
2559 regBankSelected: true
2560 tracksRegLiveness: true
2561 registers:
2562   - { id: 0, class: _ }
2563   - { id: 1, class: _ }
2564   - { id: 2, class: fpr }
2565   - { id: 3, class: fpr }
2566   - { id: 4, class: _ }
2567   - { id: 5, class: fpr }
2568   - { id: 6, class: _ }
2569   - { id: 7, class: fpr }
2570   - { id: 8, class: fpr }
2571   - { id: 9, class: fpr }
2572   - { id: 10, class: gpr }
2573   - { id: 11, class: fpr }
2574   - { id: 12, class: fpr }
2575   - { id: 13, class: fpr }
2576   - { id: 14, class: gpr }
2577   - { id: 15, class: fpr }
2578   - { id: 16, class: fpr }
2579   - { id: 17, class: fpr }
2580 machineFunctionInfo: {}
2581 body:             |
2582   bb.1 (%ir-block.0):
2583     liveins: $d0, $d1
2585     ; CHECK-LABEL: name: test_v2i16_sge
2586     ; CHECK: liveins: $d0, $d1
2587     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
2588     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
2589     ; CHECK: [[MOVi32imm:%[0-9]+]]:gpr32 = MOVi32imm 16
2590     ; CHECK: [[DEF:%[0-9]+]]:fpr128 = IMPLICIT_DEF
2591     ; CHECK: [[INSERT_SUBREG:%[0-9]+]]:fpr128 = INSERT_SUBREG [[DEF]], [[MOVi32imm]], %subreg.ssub
2592     ; CHECK: [[INSvi32gpr:%[0-9]+]]:fpr128 = INSvi32gpr [[INSERT_SUBREG]], 1, [[MOVi32imm]]
2593     ; CHECK: [[COPY2:%[0-9]+]]:fpr64 = COPY [[INSvi32gpr]].dsub
2594     ; CHECK: [[USHLv2i32_:%[0-9]+]]:fpr64 = USHLv2i32 [[COPY]], [[COPY2]]
2595     ; CHECK: [[NEGv2i32_:%[0-9]+]]:fpr64 = NEGv2i32 [[COPY2]]
2596     ; CHECK: [[SSHLv2i32_:%[0-9]+]]:fpr64 = SSHLv2i32 [[USHLv2i32_]], [[NEGv2i32_]]
2597     ; CHECK: [[MOVi32imm1:%[0-9]+]]:gpr32 = MOVi32imm 16
2598     ; CHECK: [[DEF1:%[0-9]+]]:fpr128 = IMPLICIT_DEF
2599     ; CHECK: [[INSERT_SUBREG1:%[0-9]+]]:fpr128 = INSERT_SUBREG [[DEF1]], [[MOVi32imm1]], %subreg.ssub
2600     ; CHECK: [[INSvi32gpr1:%[0-9]+]]:fpr128 = INSvi32gpr [[INSERT_SUBREG1]], 1, [[MOVi32imm1]]
2601     ; CHECK: [[COPY3:%[0-9]+]]:fpr64 = COPY [[INSvi32gpr1]].dsub
2602     ; CHECK: [[USHLv2i32_1:%[0-9]+]]:fpr64 = USHLv2i32 [[COPY1]], [[COPY3]]
2603     ; CHECK: [[NEGv2i32_1:%[0-9]+]]:fpr64 = NEGv2i32 [[COPY3]]
2604     ; CHECK: [[SSHLv2i32_1:%[0-9]+]]:fpr64 = SSHLv2i32 [[USHLv2i32_1]], [[NEGv2i32_1]]
2605     ; CHECK: [[CMGEv2i32_:%[0-9]+]]:fpr64 = CMGEv2i32 [[SSHLv2i32_]], [[SSHLv2i32_1]]
2606     ; CHECK: $d0 = COPY [[CMGEv2i32_]]
2607     ; CHECK: RET_ReallyLR implicit $d0
2608     %2:fpr(<2 x s32>) = COPY $d0
2609     %3:fpr(<2 x s32>) = COPY $d1
2610     %14:gpr(s32) = G_CONSTANT i32 16
2611     %15:fpr(<2 x s32>) = G_BUILD_VECTOR %14(s32), %14(s32)
2612     %16:fpr(<2 x s32>) = COPY %2(<2 x s32>)
2613     %17:fpr(<2 x s32>) = G_SHL %16, %15(<2 x s32>)
2614     %7:fpr(<2 x s32>) = G_ASHR %17, %15(<2 x s32>)
2615     %10:gpr(s32) = G_CONSTANT i32 16
2616     %11:fpr(<2 x s32>) = G_BUILD_VECTOR %10(s32), %10(s32)
2617     %12:fpr(<2 x s32>) = COPY %3(<2 x s32>)
2618     %13:fpr(<2 x s32>) = G_SHL %12, %11(<2 x s32>)
2619     %8:fpr(<2 x s32>) = G_ASHR %13, %11(<2 x s32>)
2620     %9:fpr(<2 x s32>) = G_ICMP intpred(sge), %7(<2 x s32>), %8
2621     %5:fpr(<2 x s32>) = COPY %9(<2 x s32>)
2622     $d0 = COPY %5(<2 x s32>)
2623     RET_ReallyLR implicit $d0
2627 name:            test_v8i16_sge
2628 alignment:       4
2629 legalized:       true
2630 regBankSelected: true
2631 tracksRegLiveness: true
2632 registers:
2633   - { id: 0, class: fpr }
2634   - { id: 1, class: fpr }
2635   - { id: 2, class: _ }
2636   - { id: 3, class: fpr }
2637   - { id: 4, class: fpr }
2638 machineFunctionInfo: {}
2639 body:             |
2640   bb.1 (%ir-block.0):
2641     liveins: $q0, $q1
2643     ; CHECK-LABEL: name: test_v8i16_sge
2644     ; CHECK: liveins: $q0, $q1
2645     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
2646     ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
2647     ; CHECK: [[CMGEv8i16_:%[0-9]+]]:fpr128 = CMGEv8i16 [[COPY]], [[COPY1]]
2648     ; CHECK: [[XTNv8i8_:%[0-9]+]]:fpr64 = XTNv8i8 [[CMGEv8i16_]]
2649     ; CHECK: $d0 = COPY [[XTNv8i8_]]
2650     ; CHECK: RET_ReallyLR implicit $d0
2651     %0:fpr(<8 x s16>) = COPY $q0
2652     %1:fpr(<8 x s16>) = COPY $q1
2653     %4:fpr(<8 x s16>) = G_ICMP intpred(sge), %0(<8 x s16>), %1
2654     %3:fpr(<8 x s8>) = G_TRUNC %4(<8 x s16>)
2655     $d0 = COPY %3(<8 x s8>)
2656     RET_ReallyLR implicit $d0
2660 name:            test_v4i16_sge
2661 alignment:       4
2662 legalized:       true
2663 regBankSelected: true
2664 tracksRegLiveness: true
2665 registers:
2666   - { id: 0, class: fpr }
2667   - { id: 1, class: fpr }
2668   - { id: 2, class: _ }
2669   - { id: 3, class: fpr }
2670   - { id: 4, class: fpr }
2671 machineFunctionInfo: {}
2672 body:             |
2673   bb.1 (%ir-block.0):
2674     liveins: $d0, $d1
2676     ; CHECK-LABEL: name: test_v4i16_sge
2677     ; CHECK: liveins: $d0, $d1
2678     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
2679     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
2680     ; CHECK: [[CMGEv4i16_:%[0-9]+]]:fpr64 = CMGEv4i16 [[COPY]], [[COPY1]]
2681     ; CHECK: $d0 = COPY [[CMGEv4i16_]]
2682     ; CHECK: RET_ReallyLR implicit $d0
2683     %0:fpr(<4 x s16>) = COPY $d0
2684     %1:fpr(<4 x s16>) = COPY $d1
2685     %4:fpr(<4 x s16>) = G_ICMP intpred(sge), %0(<4 x s16>), %1
2686     %3:fpr(<4 x s16>) = COPY %4(<4 x s16>)
2687     $d0 = COPY %3(<4 x s16>)
2688     RET_ReallyLR implicit $d0
2692 name:            test_v16i8_sge
2693 alignment:       4
2694 legalized:       true
2695 regBankSelected: true
2696 tracksRegLiveness: true
2697 registers:
2698   - { id: 0, class: fpr }
2699   - { id: 1, class: fpr }
2700   - { id: 2, class: _ }
2701   - { id: 3, class: fpr }
2702   - { id: 4, class: fpr }
2703 machineFunctionInfo: {}
2704 body:             |
2705   bb.1 (%ir-block.0):
2706     liveins: $q0, $q1
2708     ; CHECK-LABEL: name: test_v16i8_sge
2709     ; CHECK: liveins: $q0, $q1
2710     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
2711     ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
2712     ; CHECK: [[CMGEv16i8_:%[0-9]+]]:fpr128 = CMGEv16i8 [[COPY]], [[COPY1]]
2713     ; CHECK: $q0 = COPY [[CMGEv16i8_]]
2714     ; CHECK: RET_ReallyLR implicit $q0
2715     %0:fpr(<16 x s8>) = COPY $q0
2716     %1:fpr(<16 x s8>) = COPY $q1
2717     %4:fpr(<16 x s8>) = G_ICMP intpred(sge), %0(<16 x s8>), %1
2718     %3:fpr(<16 x s8>) = COPY %4(<16 x s8>)
2719     $q0 = COPY %3(<16 x s8>)
2720     RET_ReallyLR implicit $q0
2724 name:            test_v8i8_sge
2725 alignment:       4
2726 legalized:       true
2727 regBankSelected: true
2728 tracksRegLiveness: true
2729 registers:
2730   - { id: 0, class: fpr }
2731   - { id: 1, class: fpr }
2732   - { id: 2, class: _ }
2733   - { id: 3, class: fpr }
2734   - { id: 4, class: fpr }
2735 machineFunctionInfo: {}
2736 body:             |
2737   bb.1 (%ir-block.0):
2738     liveins: $d0, $d1
2740     ; CHECK-LABEL: name: test_v8i8_sge
2741     ; CHECK: liveins: $d0, $d1
2742     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
2743     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
2744     ; CHECK: [[CMGEv8i8_:%[0-9]+]]:fpr64 = CMGEv8i8 [[COPY]], [[COPY1]]
2745     ; CHECK: $d0 = COPY [[CMGEv8i8_]]
2746     ; CHECK: RET_ReallyLR implicit $d0
2747     %0:fpr(<8 x s8>) = COPY $d0
2748     %1:fpr(<8 x s8>) = COPY $d1
2749     %4:fpr(<8 x s8>) = G_ICMP intpred(sge), %0(<8 x s8>), %1
2750     %3:fpr(<8 x s8>) = COPY %4(<8 x s8>)
2751     $d0 = COPY %3(<8 x s8>)
2752     RET_ReallyLR implicit $d0
2756 name:            test_v2i64_slt
2757 alignment:       4
2758 legalized:       true
2759 regBankSelected: true
2760 tracksRegLiveness: true
2761 registers:
2762   - { id: 0, class: fpr }
2763   - { id: 1, class: fpr }
2764   - { id: 2, class: _ }
2765   - { id: 3, class: fpr }
2766   - { id: 4, class: fpr }
2767 machineFunctionInfo: {}
2768 body:             |
2769   bb.1 (%ir-block.0):
2770     liveins: $q0, $q1
2772     ; CHECK-LABEL: name: test_v2i64_slt
2773     ; CHECK: liveins: $q0, $q1
2774     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
2775     ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
2776     ; CHECK: [[CMGTv2i64_:%[0-9]+]]:fpr128 = CMGTv2i64 [[COPY1]], [[COPY]]
2777     ; CHECK: [[XTNv2i32_:%[0-9]+]]:fpr64 = XTNv2i32 [[CMGTv2i64_]]
2778     ; CHECK: $d0 = COPY [[XTNv2i32_]]
2779     ; CHECK: RET_ReallyLR implicit $d0
2780     %0:fpr(<2 x s64>) = COPY $q0
2781     %1:fpr(<2 x s64>) = COPY $q1
2782     %4:fpr(<2 x s64>) = G_ICMP intpred(slt), %0(<2 x s64>), %1
2783     %3:fpr(<2 x s32>) = G_TRUNC %4(<2 x s64>)
2784     $d0 = COPY %3(<2 x s32>)
2785     RET_ReallyLR implicit $d0
2789 name:            test_v4i32_slt
2790 alignment:       4
2791 legalized:       true
2792 regBankSelected: true
2793 tracksRegLiveness: true
2794 registers:
2795   - { id: 0, class: fpr }
2796   - { id: 1, class: fpr }
2797   - { id: 2, class: _ }
2798   - { id: 3, class: fpr }
2799   - { id: 4, class: fpr }
2800 machineFunctionInfo: {}
2801 body:             |
2802   bb.1 (%ir-block.0):
2803     liveins: $q0, $q1
2805     ; CHECK-LABEL: name: test_v4i32_slt
2806     ; CHECK: liveins: $q0, $q1
2807     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
2808     ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
2809     ; CHECK: [[CMGTv4i32_:%[0-9]+]]:fpr128 = CMGTv4i32 [[COPY1]], [[COPY]]
2810     ; CHECK: [[XTNv4i16_:%[0-9]+]]:fpr64 = XTNv4i16 [[CMGTv4i32_]]
2811     ; CHECK: $d0 = COPY [[XTNv4i16_]]
2812     ; CHECK: RET_ReallyLR implicit $d0
2813     %0:fpr(<4 x s32>) = COPY $q0
2814     %1:fpr(<4 x s32>) = COPY $q1
2815     %4:fpr(<4 x s32>) = G_ICMP intpred(slt), %0(<4 x s32>), %1
2816     %3:fpr(<4 x s16>) = G_TRUNC %4(<4 x s32>)
2817     $d0 = COPY %3(<4 x s16>)
2818     RET_ReallyLR implicit $d0
2822 name:            test_v2i32_slt
2823 alignment:       4
2824 legalized:       true
2825 regBankSelected: true
2826 tracksRegLiveness: true
2827 registers:
2828   - { id: 0, class: fpr }
2829   - { id: 1, class: fpr }
2830   - { id: 2, class: _ }
2831   - { id: 3, class: fpr }
2832   - { id: 4, class: fpr }
2833 machineFunctionInfo: {}
2834 body:             |
2835   bb.1 (%ir-block.0):
2836     liveins: $d0, $d1
2838     ; CHECK-LABEL: name: test_v2i32_slt
2839     ; CHECK: liveins: $d0, $d1
2840     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
2841     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
2842     ; CHECK: [[CMGTv2i32_:%[0-9]+]]:fpr64 = CMGTv2i32 [[COPY1]], [[COPY]]
2843     ; CHECK: $d0 = COPY [[CMGTv2i32_]]
2844     ; CHECK: RET_ReallyLR implicit $d0
2845     %0:fpr(<2 x s32>) = COPY $d0
2846     %1:fpr(<2 x s32>) = COPY $d1
2847     %4:fpr(<2 x s32>) = G_ICMP intpred(slt), %0(<2 x s32>), %1
2848     %3:fpr(<2 x s32>) = COPY %4(<2 x s32>)
2849     $d0 = COPY %3(<2 x s32>)
2850     RET_ReallyLR implicit $d0
2854 name:            test_v2i16_slt
2855 alignment:       4
2856 legalized:       true
2857 regBankSelected: true
2858 tracksRegLiveness: true
2859 registers:
2860   - { id: 0, class: _ }
2861   - { id: 1, class: _ }
2862   - { id: 2, class: fpr }
2863   - { id: 3, class: fpr }
2864   - { id: 4, class: _ }
2865   - { id: 5, class: fpr }
2866   - { id: 6, class: _ }
2867   - { id: 7, class: fpr }
2868   - { id: 8, class: fpr }
2869   - { id: 9, class: fpr }
2870   - { id: 10, class: gpr }
2871   - { id: 11, class: fpr }
2872   - { id: 12, class: fpr }
2873   - { id: 13, class: fpr }
2874   - { id: 14, class: gpr }
2875   - { id: 15, class: fpr }
2876   - { id: 16, class: fpr }
2877   - { id: 17, class: fpr }
2878 machineFunctionInfo: {}
2879 body:             |
2880   bb.1 (%ir-block.0):
2881     liveins: $d0, $d1
2883     ; CHECK-LABEL: name: test_v2i16_slt
2884     ; CHECK: liveins: $d0, $d1
2885     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
2886     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
2887     ; CHECK: [[MOVi32imm:%[0-9]+]]:gpr32 = MOVi32imm 16
2888     ; CHECK: [[DEF:%[0-9]+]]:fpr128 = IMPLICIT_DEF
2889     ; CHECK: [[INSERT_SUBREG:%[0-9]+]]:fpr128 = INSERT_SUBREG [[DEF]], [[MOVi32imm]], %subreg.ssub
2890     ; CHECK: [[INSvi32gpr:%[0-9]+]]:fpr128 = INSvi32gpr [[INSERT_SUBREG]], 1, [[MOVi32imm]]
2891     ; CHECK: [[COPY2:%[0-9]+]]:fpr64 = COPY [[INSvi32gpr]].dsub
2892     ; CHECK: [[USHLv2i32_:%[0-9]+]]:fpr64 = USHLv2i32 [[COPY]], [[COPY2]]
2893     ; CHECK: [[NEGv2i32_:%[0-9]+]]:fpr64 = NEGv2i32 [[COPY2]]
2894     ; CHECK: [[SSHLv2i32_:%[0-9]+]]:fpr64 = SSHLv2i32 [[USHLv2i32_]], [[NEGv2i32_]]
2895     ; CHECK: [[MOVi32imm1:%[0-9]+]]:gpr32 = MOVi32imm 16
2896     ; CHECK: [[DEF1:%[0-9]+]]:fpr128 = IMPLICIT_DEF
2897     ; CHECK: [[INSERT_SUBREG1:%[0-9]+]]:fpr128 = INSERT_SUBREG [[DEF1]], [[MOVi32imm1]], %subreg.ssub
2898     ; CHECK: [[INSvi32gpr1:%[0-9]+]]:fpr128 = INSvi32gpr [[INSERT_SUBREG1]], 1, [[MOVi32imm1]]
2899     ; CHECK: [[COPY3:%[0-9]+]]:fpr64 = COPY [[INSvi32gpr1]].dsub
2900     ; CHECK: [[USHLv2i32_1:%[0-9]+]]:fpr64 = USHLv2i32 [[COPY1]], [[COPY3]]
2901     ; CHECK: [[NEGv2i32_1:%[0-9]+]]:fpr64 = NEGv2i32 [[COPY3]]
2902     ; CHECK: [[SSHLv2i32_1:%[0-9]+]]:fpr64 = SSHLv2i32 [[USHLv2i32_1]], [[NEGv2i32_1]]
2903     ; CHECK: [[CMGTv2i32_:%[0-9]+]]:fpr64 = CMGTv2i32 [[SSHLv2i32_1]], [[SSHLv2i32_]]
2904     ; CHECK: $d0 = COPY [[CMGTv2i32_]]
2905     ; CHECK: RET_ReallyLR implicit $d0
2906     %2:fpr(<2 x s32>) = COPY $d0
2907     %3:fpr(<2 x s32>) = COPY $d1
2908     %14:gpr(s32) = G_CONSTANT i32 16
2909     %15:fpr(<2 x s32>) = G_BUILD_VECTOR %14(s32), %14(s32)
2910     %16:fpr(<2 x s32>) = COPY %2(<2 x s32>)
2911     %17:fpr(<2 x s32>) = G_SHL %16, %15(<2 x s32>)
2912     %7:fpr(<2 x s32>) = G_ASHR %17, %15(<2 x s32>)
2913     %10:gpr(s32) = G_CONSTANT i32 16
2914     %11:fpr(<2 x s32>) = G_BUILD_VECTOR %10(s32), %10(s32)
2915     %12:fpr(<2 x s32>) = COPY %3(<2 x s32>)
2916     %13:fpr(<2 x s32>) = G_SHL %12, %11(<2 x s32>)
2917     %8:fpr(<2 x s32>) = G_ASHR %13, %11(<2 x s32>)
2918     %9:fpr(<2 x s32>) = G_ICMP intpred(slt), %7(<2 x s32>), %8
2919     %5:fpr(<2 x s32>) = COPY %9(<2 x s32>)
2920     $d0 = COPY %5(<2 x s32>)
2921     RET_ReallyLR implicit $d0
2925 name:            test_v8i16_slt
2926 alignment:       4
2927 legalized:       true
2928 regBankSelected: true
2929 tracksRegLiveness: true
2930 registers:
2931   - { id: 0, class: fpr }
2932   - { id: 1, class: fpr }
2933   - { id: 2, class: _ }
2934   - { id: 3, class: fpr }
2935   - { id: 4, class: fpr }
2936 machineFunctionInfo: {}
2937 body:             |
2938   bb.1 (%ir-block.0):
2939     liveins: $q0, $q1
2941     ; CHECK-LABEL: name: test_v8i16_slt
2942     ; CHECK: liveins: $q0, $q1
2943     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
2944     ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
2945     ; CHECK: [[CMGTv8i16_:%[0-9]+]]:fpr128 = CMGTv8i16 [[COPY1]], [[COPY]]
2946     ; CHECK: [[XTNv8i8_:%[0-9]+]]:fpr64 = XTNv8i8 [[CMGTv8i16_]]
2947     ; CHECK: $d0 = COPY [[XTNv8i8_]]
2948     ; CHECK: RET_ReallyLR implicit $d0
2949     %0:fpr(<8 x s16>) = COPY $q0
2950     %1:fpr(<8 x s16>) = COPY $q1
2951     %4:fpr(<8 x s16>) = G_ICMP intpred(slt), %0(<8 x s16>), %1
2952     %3:fpr(<8 x s8>) = G_TRUNC %4(<8 x s16>)
2953     $d0 = COPY %3(<8 x s8>)
2954     RET_ReallyLR implicit $d0
2958 name:            test_v4i16_slt
2959 alignment:       4
2960 legalized:       true
2961 regBankSelected: true
2962 tracksRegLiveness: true
2963 registers:
2964   - { id: 0, class: fpr }
2965   - { id: 1, class: fpr }
2966   - { id: 2, class: _ }
2967   - { id: 3, class: fpr }
2968   - { id: 4, class: fpr }
2969 machineFunctionInfo: {}
2970 body:             |
2971   bb.1 (%ir-block.0):
2972     liveins: $d0, $d1
2974     ; CHECK-LABEL: name: test_v4i16_slt
2975     ; CHECK: liveins: $d0, $d1
2976     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
2977     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
2978     ; CHECK: [[CMGTv4i16_:%[0-9]+]]:fpr64 = CMGTv4i16 [[COPY1]], [[COPY]]
2979     ; CHECK: $d0 = COPY [[CMGTv4i16_]]
2980     ; CHECK: RET_ReallyLR implicit $d0
2981     %0:fpr(<4 x s16>) = COPY $d0
2982     %1:fpr(<4 x s16>) = COPY $d1
2983     %4:fpr(<4 x s16>) = G_ICMP intpred(slt), %0(<4 x s16>), %1
2984     %3:fpr(<4 x s16>) = COPY %4(<4 x s16>)
2985     $d0 = COPY %3(<4 x s16>)
2986     RET_ReallyLR implicit $d0
2990 name:            test_v16i8_slt
2991 alignment:       4
2992 legalized:       true
2993 regBankSelected: true
2994 tracksRegLiveness: true
2995 registers:
2996   - { id: 0, class: fpr }
2997   - { id: 1, class: fpr }
2998   - { id: 2, class: _ }
2999   - { id: 3, class: fpr }
3000   - { id: 4, class: fpr }
3001 machineFunctionInfo: {}
3002 body:             |
3003   bb.1 (%ir-block.0):
3004     liveins: $q0, $q1
3006     ; CHECK-LABEL: name: test_v16i8_slt
3007     ; CHECK: liveins: $q0, $q1
3008     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
3009     ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
3010     ; CHECK: [[CMGTv16i8_:%[0-9]+]]:fpr128 = CMGTv16i8 [[COPY1]], [[COPY]]
3011     ; CHECK: $q0 = COPY [[CMGTv16i8_]]
3012     ; CHECK: RET_ReallyLR implicit $q0
3013     %0:fpr(<16 x s8>) = COPY $q0
3014     %1:fpr(<16 x s8>) = COPY $q1
3015     %4:fpr(<16 x s8>) = G_ICMP intpred(slt), %0(<16 x s8>), %1
3016     %3:fpr(<16 x s8>) = COPY %4(<16 x s8>)
3017     $q0 = COPY %3(<16 x s8>)
3018     RET_ReallyLR implicit $q0
3022 name:            test_v8i8_slt
3023 alignment:       4
3024 legalized:       true
3025 regBankSelected: true
3026 tracksRegLiveness: true
3027 registers:
3028   - { id: 0, class: fpr }
3029   - { id: 1, class: fpr }
3030   - { id: 2, class: _ }
3031   - { id: 3, class: fpr }
3032   - { id: 4, class: fpr }
3033 machineFunctionInfo: {}
3034 body:             |
3035   bb.1 (%ir-block.0):
3036     liveins: $d0, $d1
3038     ; CHECK-LABEL: name: test_v8i8_slt
3039     ; CHECK: liveins: $d0, $d1
3040     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
3041     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
3042     ; CHECK: [[CMGTv8i8_:%[0-9]+]]:fpr64 = CMGTv8i8 [[COPY1]], [[COPY]]
3043     ; CHECK: $d0 = COPY [[CMGTv8i8_]]
3044     ; CHECK: RET_ReallyLR implicit $d0
3045     %0:fpr(<8 x s8>) = COPY $d0
3046     %1:fpr(<8 x s8>) = COPY $d1
3047     %4:fpr(<8 x s8>) = G_ICMP intpred(slt), %0(<8 x s8>), %1
3048     %3:fpr(<8 x s8>) = COPY %4(<8 x s8>)
3049     $d0 = COPY %3(<8 x s8>)
3050     RET_ReallyLR implicit $d0
3054 name:            test_v2i64_sle
3055 alignment:       4
3056 legalized:       true
3057 regBankSelected: true
3058 tracksRegLiveness: true
3059 registers:
3060   - { id: 0, class: fpr }
3061   - { id: 1, class: fpr }
3062   - { id: 2, class: _ }
3063   - { id: 3, class: fpr }
3064   - { id: 4, class: fpr }
3065 machineFunctionInfo: {}
3066 body:             |
3067   bb.1 (%ir-block.0):
3068     liveins: $q0, $q1
3070     ; CHECK-LABEL: name: test_v2i64_sle
3071     ; CHECK: liveins: $q0, $q1
3072     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
3073     ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
3074     ; CHECK: [[CMGEv2i64_:%[0-9]+]]:fpr128 = CMGEv2i64 [[COPY1]], [[COPY]]
3075     ; CHECK: [[XTNv2i32_:%[0-9]+]]:fpr64 = XTNv2i32 [[CMGEv2i64_]]
3076     ; CHECK: $d0 = COPY [[XTNv2i32_]]
3077     ; CHECK: RET_ReallyLR implicit $d0
3078     %0:fpr(<2 x s64>) = COPY $q0
3079     %1:fpr(<2 x s64>) = COPY $q1
3080     %4:fpr(<2 x s64>) = G_ICMP intpred(sle), %0(<2 x s64>), %1
3081     %3:fpr(<2 x s32>) = G_TRUNC %4(<2 x s64>)
3082     $d0 = COPY %3(<2 x s32>)
3083     RET_ReallyLR implicit $d0
3087 name:            test_v4i32_sle
3088 alignment:       4
3089 legalized:       true
3090 regBankSelected: true
3091 tracksRegLiveness: true
3092 registers:
3093   - { id: 0, class: fpr }
3094   - { id: 1, class: fpr }
3095   - { id: 2, class: _ }
3096   - { id: 3, class: fpr }
3097   - { id: 4, class: fpr }
3098 machineFunctionInfo: {}
3099 body:             |
3100   bb.1 (%ir-block.0):
3101     liveins: $q0, $q1
3103     ; CHECK-LABEL: name: test_v4i32_sle
3104     ; CHECK: liveins: $q0, $q1
3105     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
3106     ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
3107     ; CHECK: [[CMGEv4i32_:%[0-9]+]]:fpr128 = CMGEv4i32 [[COPY1]], [[COPY]]
3108     ; CHECK: [[XTNv4i16_:%[0-9]+]]:fpr64 = XTNv4i16 [[CMGEv4i32_]]
3109     ; CHECK: $d0 = COPY [[XTNv4i16_]]
3110     ; CHECK: RET_ReallyLR implicit $d0
3111     %0:fpr(<4 x s32>) = COPY $q0
3112     %1:fpr(<4 x s32>) = COPY $q1
3113     %4:fpr(<4 x s32>) = G_ICMP intpred(sle), %0(<4 x s32>), %1
3114     %3:fpr(<4 x s16>) = G_TRUNC %4(<4 x s32>)
3115     $d0 = COPY %3(<4 x s16>)
3116     RET_ReallyLR implicit $d0
3120 name:            test_v2i32_sle
3121 alignment:       4
3122 legalized:       true
3123 regBankSelected: true
3124 tracksRegLiveness: true
3125 registers:
3126   - { id: 0, class: fpr }
3127   - { id: 1, class: fpr }
3128   - { id: 2, class: _ }
3129   - { id: 3, class: fpr }
3130   - { id: 4, class: fpr }
3131 machineFunctionInfo: {}
3132 body:             |
3133   bb.1 (%ir-block.0):
3134     liveins: $d0, $d1
3136     ; CHECK-LABEL: name: test_v2i32_sle
3137     ; CHECK: liveins: $d0, $d1
3138     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
3139     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
3140     ; CHECK: [[CMGEv2i32_:%[0-9]+]]:fpr64 = CMGEv2i32 [[COPY1]], [[COPY]]
3141     ; CHECK: $d0 = COPY [[CMGEv2i32_]]
3142     ; CHECK: RET_ReallyLR implicit $d0
3143     %0:fpr(<2 x s32>) = COPY $d0
3144     %1:fpr(<2 x s32>) = COPY $d1
3145     %4:fpr(<2 x s32>) = G_ICMP intpred(sle), %0(<2 x s32>), %1
3146     %3:fpr(<2 x s32>) = COPY %4(<2 x s32>)
3147     $d0 = COPY %3(<2 x s32>)
3148     RET_ReallyLR implicit $d0
3152 name:            test_v2i16_sle
3153 alignment:       4
3154 legalized:       true
3155 regBankSelected: true
3156 tracksRegLiveness: true
3157 registers:
3158   - { id: 0, class: _ }
3159   - { id: 1, class: _ }
3160   - { id: 2, class: fpr }
3161   - { id: 3, class: fpr }
3162   - { id: 4, class: _ }
3163   - { id: 5, class: fpr }
3164   - { id: 6, class: _ }
3165   - { id: 7, class: fpr }
3166   - { id: 8, class: fpr }
3167   - { id: 9, class: fpr }
3168   - { id: 10, class: gpr }
3169   - { id: 11, class: fpr }
3170   - { id: 12, class: fpr }
3171   - { id: 13, class: fpr }
3172   - { id: 14, class: gpr }
3173   - { id: 15, class: fpr }
3174   - { id: 16, class: fpr }
3175   - { id: 17, class: fpr }
3176 machineFunctionInfo: {}
3177 body:             |
3178   bb.1 (%ir-block.0):
3179     liveins: $d0, $d1
3181     ; CHECK-LABEL: name: test_v2i16_sle
3182     ; CHECK: liveins: $d0, $d1
3183     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
3184     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
3185     ; CHECK: [[MOVi32imm:%[0-9]+]]:gpr32 = MOVi32imm 16
3186     ; CHECK: [[DEF:%[0-9]+]]:fpr128 = IMPLICIT_DEF
3187     ; CHECK: [[INSERT_SUBREG:%[0-9]+]]:fpr128 = INSERT_SUBREG [[DEF]], [[MOVi32imm]], %subreg.ssub
3188     ; CHECK: [[INSvi32gpr:%[0-9]+]]:fpr128 = INSvi32gpr [[INSERT_SUBREG]], 1, [[MOVi32imm]]
3189     ; CHECK: [[COPY2:%[0-9]+]]:fpr64 = COPY [[INSvi32gpr]].dsub
3190     ; CHECK: [[USHLv2i32_:%[0-9]+]]:fpr64 = USHLv2i32 [[COPY]], [[COPY2]]
3191     ; CHECK: [[NEGv2i32_:%[0-9]+]]:fpr64 = NEGv2i32 [[COPY2]]
3192     ; CHECK: [[SSHLv2i32_:%[0-9]+]]:fpr64 = SSHLv2i32 [[USHLv2i32_]], [[NEGv2i32_]]
3193     ; CHECK: [[MOVi32imm1:%[0-9]+]]:gpr32 = MOVi32imm 16
3194     ; CHECK: [[DEF1:%[0-9]+]]:fpr128 = IMPLICIT_DEF
3195     ; CHECK: [[INSERT_SUBREG1:%[0-9]+]]:fpr128 = INSERT_SUBREG [[DEF1]], [[MOVi32imm1]], %subreg.ssub
3196     ; CHECK: [[INSvi32gpr1:%[0-9]+]]:fpr128 = INSvi32gpr [[INSERT_SUBREG1]], 1, [[MOVi32imm1]]
3197     ; CHECK: [[COPY3:%[0-9]+]]:fpr64 = COPY [[INSvi32gpr1]].dsub
3198     ; CHECK: [[USHLv2i32_1:%[0-9]+]]:fpr64 = USHLv2i32 [[COPY1]], [[COPY3]]
3199     ; CHECK: [[NEGv2i32_1:%[0-9]+]]:fpr64 = NEGv2i32 [[COPY3]]
3200     ; CHECK: [[SSHLv2i32_1:%[0-9]+]]:fpr64 = SSHLv2i32 [[USHLv2i32_1]], [[NEGv2i32_1]]
3201     ; CHECK: [[CMGEv2i32_:%[0-9]+]]:fpr64 = CMGEv2i32 [[SSHLv2i32_1]], [[SSHLv2i32_]]
3202     ; CHECK: $d0 = COPY [[CMGEv2i32_]]
3203     ; CHECK: RET_ReallyLR implicit $d0
3204     %2:fpr(<2 x s32>) = COPY $d0
3205     %3:fpr(<2 x s32>) = COPY $d1
3206     %14:gpr(s32) = G_CONSTANT i32 16
3207     %15:fpr(<2 x s32>) = G_BUILD_VECTOR %14(s32), %14(s32)
3208     %16:fpr(<2 x s32>) = COPY %2(<2 x s32>)
3209     %17:fpr(<2 x s32>) = G_SHL %16, %15(<2 x s32>)
3210     %7:fpr(<2 x s32>) = G_ASHR %17, %15(<2 x s32>)
3211     %10:gpr(s32) = G_CONSTANT i32 16
3212     %11:fpr(<2 x s32>) = G_BUILD_VECTOR %10(s32), %10(s32)
3213     %12:fpr(<2 x s32>) = COPY %3(<2 x s32>)
3214     %13:fpr(<2 x s32>) = G_SHL %12, %11(<2 x s32>)
3215     %8:fpr(<2 x s32>) = G_ASHR %13, %11(<2 x s32>)
3216     %9:fpr(<2 x s32>) = G_ICMP intpred(sle), %7(<2 x s32>), %8
3217     %5:fpr(<2 x s32>) = COPY %9(<2 x s32>)
3218     $d0 = COPY %5(<2 x s32>)
3219     RET_ReallyLR implicit $d0
3223 name:            test_v8i16_sle
3224 alignment:       4
3225 legalized:       true
3226 regBankSelected: true
3227 tracksRegLiveness: true
3228 registers:
3229   - { id: 0, class: fpr }
3230   - { id: 1, class: fpr }
3231   - { id: 2, class: _ }
3232   - { id: 3, class: fpr }
3233   - { id: 4, class: fpr }
3234 machineFunctionInfo: {}
3235 body:             |
3236   bb.1 (%ir-block.0):
3237     liveins: $q0, $q1
3239     ; CHECK-LABEL: name: test_v8i16_sle
3240     ; CHECK: liveins: $q0, $q1
3241     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
3242     ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
3243     ; CHECK: [[CMGEv8i16_:%[0-9]+]]:fpr128 = CMGEv8i16 [[COPY1]], [[COPY]]
3244     ; CHECK: [[XTNv8i8_:%[0-9]+]]:fpr64 = XTNv8i8 [[CMGEv8i16_]]
3245     ; CHECK: $d0 = COPY [[XTNv8i8_]]
3246     ; CHECK: RET_ReallyLR implicit $d0
3247     %0:fpr(<8 x s16>) = COPY $q0
3248     %1:fpr(<8 x s16>) = COPY $q1
3249     %4:fpr(<8 x s16>) = G_ICMP intpred(sle), %0(<8 x s16>), %1
3250     %3:fpr(<8 x s8>) = G_TRUNC %4(<8 x s16>)
3251     $d0 = COPY %3(<8 x s8>)
3252     RET_ReallyLR implicit $d0
3256 name:            test_v4i16_sle
3257 alignment:       4
3258 legalized:       true
3259 regBankSelected: true
3260 tracksRegLiveness: true
3261 registers:
3262   - { id: 0, class: fpr }
3263   - { id: 1, class: fpr }
3264   - { id: 2, class: _ }
3265   - { id: 3, class: fpr }
3266   - { id: 4, class: fpr }
3267 machineFunctionInfo: {}
3268 body:             |
3269   bb.1 (%ir-block.0):
3270     liveins: $d0, $d1
3272     ; CHECK-LABEL: name: test_v4i16_sle
3273     ; CHECK: liveins: $d0, $d1
3274     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
3275     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
3276     ; CHECK: [[CMGEv4i16_:%[0-9]+]]:fpr64 = CMGEv4i16 [[COPY1]], [[COPY]]
3277     ; CHECK: $d0 = COPY [[CMGEv4i16_]]
3278     ; CHECK: RET_ReallyLR implicit $d0
3279     %0:fpr(<4 x s16>) = COPY $d0
3280     %1:fpr(<4 x s16>) = COPY $d1
3281     %4:fpr(<4 x s16>) = G_ICMP intpred(sle), %0(<4 x s16>), %1
3282     %3:fpr(<4 x s16>) = COPY %4(<4 x s16>)
3283     $d0 = COPY %3(<4 x s16>)
3284     RET_ReallyLR implicit $d0
3288 name:            test_v16i8_sle
3289 alignment:       4
3290 legalized:       true
3291 regBankSelected: true
3292 tracksRegLiveness: true
3293 registers:
3294   - { id: 0, class: fpr }
3295   - { id: 1, class: fpr }
3296   - { id: 2, class: _ }
3297   - { id: 3, class: fpr }
3298   - { id: 4, class: fpr }
3299 machineFunctionInfo: {}
3300 body:             |
3301   bb.1 (%ir-block.0):
3302     liveins: $q0, $q1
3304     ; CHECK-LABEL: name: test_v16i8_sle
3305     ; CHECK: liveins: $q0, $q1
3306     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
3307     ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
3308     ; CHECK: [[CMGEv16i8_:%[0-9]+]]:fpr128 = CMGEv16i8 [[COPY1]], [[COPY]]
3309     ; CHECK: $q0 = COPY [[CMGEv16i8_]]
3310     ; CHECK: RET_ReallyLR implicit $q0
3311     %0:fpr(<16 x s8>) = COPY $q0
3312     %1:fpr(<16 x s8>) = COPY $q1
3313     %4:fpr(<16 x s8>) = G_ICMP intpred(sle), %0(<16 x s8>), %1
3314     %3:fpr(<16 x s8>) = COPY %4(<16 x s8>)
3315     $q0 = COPY %3(<16 x s8>)
3316     RET_ReallyLR implicit $q0
3320 name:            test_v8i8_sle
3321 alignment:       4
3322 legalized:       true
3323 regBankSelected: true
3324 tracksRegLiveness: true
3325 registers:
3326   - { id: 0, class: fpr }
3327   - { id: 1, class: fpr }
3328   - { id: 2, class: _ }
3329   - { id: 3, class: fpr }
3330   - { id: 4, class: fpr }
3331 machineFunctionInfo: {}
3332 body:             |
3333   bb.1 (%ir-block.0):
3334     liveins: $d0, $d1
3336     ; CHECK-LABEL: name: test_v8i8_sle
3337     ; CHECK: liveins: $d0, $d1
3338     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
3339     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
3340     ; CHECK: [[CMGEv8i8_:%[0-9]+]]:fpr64 = CMGEv8i8 [[COPY1]], [[COPY]]
3341     ; CHECK: $d0 = COPY [[CMGEv8i8_]]
3342     ; CHECK: RET_ReallyLR implicit $d0
3343     %0:fpr(<8 x s8>) = COPY $d0
3344     %1:fpr(<8 x s8>) = COPY $d1
3345     %4:fpr(<8 x s8>) = G_ICMP intpred(sle), %0(<8 x s8>), %1
3346     %3:fpr(<8 x s8>) = COPY %4(<8 x s8>)
3347     $d0 = COPY %3(<8 x s8>)
3348     RET_ReallyLR implicit $d0