[NFC][RemoveDIs] Prefer iterators over inst-pointers in InstCombine
[llvm-project.git] / llvm / test / CodeGen / AArch64 / GlobalISel / prelegalizer-combiner-icmp-to-true-false-known-bits.mir
blob27d5ad126fd233a289345d9a65aca35dec5ca034
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -debugify-and-strip-all-safe -mtriple aarch64 -run-pass=aarch64-prelegalizer-combiner --aarch64prelegalizercombiner-only-enable-rule="icmp_to_true_false_known_bits" -global-isel -verify-machineinstrs %s -o - | FileCheck %s
3 # REQUIRES: asserts
5 --- |
6   define i1 @eq_true(i32* %ptr) { unreachable }
7   define i1 @ne_true(i32* %ptr) { unreachable }
8   define i1 @sge_true(i32* %ptr) { unreachable }
9   define i1 @sgt_true(i32* %ptr) { unreachable }
10   define i1 @sle_true(i32* %ptr) { unreachable }
11   define i1 @slt_true(i32* %ptr) { unreachable }
12   define i1 @uge_true(i32* %ptr) { unreachable }
13   define i1 @ugt_true(i32* %ptr) { unreachable }
14   define i1 @ule_true(i32* %ptr) { unreachable }
15   define i1 @ult_true(i32* %ptr) { unreachable }
17   define i1 @eq_false(i32* %ptr) { unreachable }
18   define i1 @ne_false(i32* %ptr) { unreachable }
19   define i1 @sge_false(i32* %ptr) { unreachable }
20   define i1 @sgt_false(i32* %ptr) { unreachable }
21   define i1 @sle_false(i32* %ptr) { unreachable }
22   define i1 @slt_false(i32* %ptr) { unreachable }
23   define i1 @uge_false(i32* %ptr) { unreachable }
24   define i1 @ugt_false(i32* %ptr) { unreachable }
25   define i1 @ule_false(i32* %ptr) { unreachable }
26   define i1 @ult_false(i32* %ptr) { unreachable }
28   define i1 @eq_unknown(i32* %ptr) { unreachable }
29   define i1 @ne_unknown(i32* %ptr) { unreachable }
31   define i1 @vector_true(i32* %ptr) { unreachable }
32   define i1 @vector_false(i32* %ptr) { unreachable }
34   !0 = !{i32 1, i32 2}
35   !1 = !{i32 1, i32 3}
37 ...
38 ---
39 name:            eq_true
40 tracksRegLiveness: true
41 body:             |
42   bb.0:
43     liveins: $x0
45     ; CHECK-LABEL: name: eq_true
46     ; CHECK: liveins: $x0
47     ; CHECK: %cmp:_(s1) = G_CONSTANT i1 true
48     ; CHECK: %cmp_ext:_(s32) = G_ZEXT %cmp(s1)
49     ; CHECK: $w0 = COPY %cmp_ext(s32)
50     ; CHECK: RET_ReallyLR implicit $w0
51     %ptr:_(p0) = COPY $x0
52     %cst:_(s32) = G_CONSTANT i32 1
53     %cmp:_(s1) = G_ICMP intpred(eq), %cst(s32), %cst
54     %cmp_ext:_(s32) = G_ZEXT %cmp(s1)
55     $w0 = COPY %cmp_ext(s32)
56     RET_ReallyLR implicit $w0
58 ...
59 ---
60 name:            ne_true
61 tracksRegLiveness: true
62 body:             |
63   bb.0:
64     liveins: $x0
66     ; CHECK-LABEL: name: ne_true
67     ; CHECK: liveins: $x0
68     ; CHECK: %cmp:_(s1) = G_CONSTANT i1 true
69     ; CHECK: %cmp_ext:_(s32) = G_ZEXT %cmp(s1)
70     ; CHECK: $w0 = COPY %cmp_ext(s32)
71     ; CHECK: RET_ReallyLR implicit $w0
72     %ptr:_(p0) = COPY $x0
73     %cst_1:_(s32) = G_CONSTANT i32 1
74     %cst_2:_(s32) = G_CONSTANT i32 2
75     %cmp:_(s1) = G_ICMP intpred(ne), %cst_1(s32), %cst_2
76     %cmp_ext:_(s32) = G_ZEXT %cmp(s1)
77     $w0 = COPY %cmp_ext(s32)
78     RET_ReallyLR implicit $w0
80 ...
81 ---
82 name:            sge_true
83 tracksRegLiveness: true
84 body:             |
85   bb.0:
86     liveins: $x0
88     ; CHECK-LABEL: name: sge_true
89     ; CHECK: liveins: $x0
90     ; CHECK: %cmp:_(s1) = G_CONSTANT i1 true
91     ; CHECK: %cmp_ext:_(s32) = G_ZEXT %cmp(s1)
92     ; CHECK: $w0 = COPY %cmp_ext(s32)
93     ; CHECK: RET_ReallyLR implicit $w0
94     %ptr:_(p0) = COPY $x0
95     %cst:_(s32) = G_CONSTANT i32 2
96     %load_eq_1:_(s32) = G_LOAD %ptr(p0) :: (load (s32), !range !0)
97     %cmp:_(s1) = G_ICMP intpred(sge), %cst, %load_eq_1(s32)
98     %cmp_ext:_(s32) = G_ZEXT %cmp(s1)
99     $w0 = COPY %cmp_ext(s32)
100     RET_ReallyLR implicit $w0
104 name:            sgt_true
105 tracksRegLiveness: true
106 body:             |
107   bb.0:
108     liveins: $x0
110     ; CHECK-LABEL: name: sgt_true
111     ; CHECK: liveins: $x0
112     ; CHECK: %cmp:_(s1) = G_CONSTANT i1 true
113     ; CHECK: %cmp_ext:_(s32) = G_ZEXT %cmp(s1)
114     ; CHECK: $w0 = COPY %cmp_ext(s32)
115     ; CHECK: RET_ReallyLR implicit $w0
116     %ptr:_(p0) = COPY $x0
117     %cst:_(s32) = G_CONSTANT i32 3
118     %load_eq_1:_(s32) = G_LOAD %ptr(p0) :: (load (s32), !range !0)
119     %cmp:_(s1) = G_ICMP intpred(sgt), %cst, %load_eq_1(s32)
120     %cmp_ext:_(s32) = G_ZEXT %cmp(s1)
121     $w0 = COPY %cmp_ext(s32)
122     RET_ReallyLR implicit $w0
126 name:            sle_true
127 tracksRegLiveness: true
128 body:             |
129   bb.0:
130     liveins: $x0
132     ; CHECK-LABEL: name: sle_true
133     ; CHECK: liveins: $x0
134     ; CHECK: %cmp:_(s1) = G_CONSTANT i1 true
135     ; CHECK: %cmp_ext:_(s32) = G_ZEXT %cmp(s1)
136     ; CHECK: $w0 = COPY %cmp_ext(s32)
137     ; CHECK: RET_ReallyLR implicit $w0
138     %ptr:_(p0) = COPY $x0
139     %cst:_(s32) = G_CONSTANT i32 1
140     %load_eq_1:_(s32) = G_LOAD %ptr(p0) :: (load (s32), !range !0)
141     %cmp:_(s1) = G_ICMP intpred(sle), %cst, %load_eq_1(s32)
142     %cmp_ext:_(s32) = G_ZEXT %cmp(s1)
143     $w0 = COPY %cmp_ext(s32)
144     RET_ReallyLR implicit $w0
149 name:            slt_true
150 tracksRegLiveness: true
151 body:             |
152   bb.0:
153     liveins: $x0
155     ; CHECK-LABEL: name: slt_true
156     ; CHECK: liveins: $x0
157     ; CHECK: %cmp:_(s1) = G_CONSTANT i1 true
158     ; CHECK: %cmp_ext:_(s32) = G_ZEXT %cmp(s1)
159     ; CHECK: $w0 = COPY %cmp_ext(s32)
160     ; CHECK: RET_ReallyLR implicit $w0
161     %ptr:_(p0) = COPY $x0
162     %cst:_(s32) = G_CONSTANT i32 -1
163     %load_eq_1:_(s32) = G_LOAD %ptr(p0) :: (load (s32), !range !0)
164     %cmp:_(s1) = G_ICMP intpred(slt), %cst, %load_eq_1(s32)
165     %cmp_ext:_(s32) = G_ZEXT %cmp(s1)
166     $w0 = COPY %cmp_ext(s32)
167     RET_ReallyLR implicit $w0
171 name:            uge_true
172 tracksRegLiveness: true
173 body:             |
174   bb.0:
175     liveins: $x0
177     ; CHECK-LABEL: name: uge_true
178     ; CHECK: liveins: $x0
179     ; CHECK: %cmp:_(s1) = G_CONSTANT i1 true
180     ; CHECK: %cmp_ext:_(s32) = G_ZEXT %cmp(s1)
181     ; CHECK: $w0 = COPY %cmp_ext(s32)
182     ; CHECK: RET_ReallyLR implicit $w0
183     %ptr:_(p0) = COPY $x0
184     %cst:_(s32) = G_CONSTANT i32 2
185     %load_eq_1:_(s32) = G_LOAD %ptr(p0) :: (load (s32), !range !0)
186     %cmp:_(s1) = G_ICMP intpred(uge), %cst, %load_eq_1(s32)
187     %cmp_ext:_(s32) = G_ZEXT %cmp(s1)
188     $w0 = COPY %cmp_ext(s32)
189     RET_ReallyLR implicit $w0
193 name:            ugt_true
194 tracksRegLiveness: true
195 body:             |
196   bb.0:
197     liveins: $x0
199     ; CHECK-LABEL: name: ugt_true
200     ; CHECK: liveins: $x0
201     ; CHECK: %cmp:_(s1) = G_CONSTANT i1 true
202     ; CHECK: %cmp_ext:_(s32) = G_ZEXT %cmp(s1)
203     ; CHECK: $w0 = COPY %cmp_ext(s32)
204     ; CHECK: RET_ReallyLR implicit $w0
205     %ptr:_(p0) = COPY $x0
206     %cst:_(s32) = G_CONSTANT i32 -1
207     %load_eq_1:_(s32) = G_LOAD %ptr(p0) :: (load (s32), !range !0)
208     %cmp:_(s1) = G_ICMP intpred(ugt), %cst, %load_eq_1(s32)
209     %cmp_ext:_(s32) = G_ZEXT %cmp(s1)
210     $w0 = COPY %cmp_ext(s32)
211     RET_ReallyLR implicit $w0
215 name:            ule_true
216 tracksRegLiveness: true
217 body:             |
218   bb.0:
219     liveins: $x0
221     ; CHECK-LABEL: name: ule_true
222     ; CHECK: liveins: $x0
223     ; CHECK: %cmp:_(s1) = G_CONSTANT i1 true
224     ; CHECK: %cmp_ext:_(s32) = G_ZEXT %cmp(s1)
225     ; CHECK: $w0 = COPY %cmp_ext(s32)
226     ; CHECK: RET_ReallyLR implicit $w0
227     %ptr:_(p0) = COPY $x0
228     %cst:_(s32) = G_CONSTANT i32 1
229     %load_eq_1:_(s32) = G_LOAD %ptr(p0) :: (load (s32), !range !0)
230     %cmp:_(s1) = G_ICMP intpred(ule), %cst, %load_eq_1(s32)
231     %cmp_ext:_(s32) = G_ZEXT %cmp(s1)
232     $w0 = COPY %cmp_ext(s32)
233     RET_ReallyLR implicit $w0
237 name:            ult_true
238 tracksRegLiveness: true
239 body:             |
240   bb.0:
241     liveins: $x0
243     ; CHECK-LABEL: name: ult_true
244     ; CHECK: liveins: $x0
245     ; CHECK: %cmp:_(s1) = G_CONSTANT i1 true
246     ; CHECK: %cmp_ext:_(s32) = G_ZEXT %cmp(s1)
247     ; CHECK: $w0 = COPY %cmp_ext(s32)
248     ; CHECK: RET_ReallyLR implicit $w0
249     %ptr:_(p0) = COPY $x0
250     %cst:_(s32) = G_CONSTANT i32 0
251     %load_eq_1:_(s32) = G_LOAD %ptr(p0) :: (load (s32), !range !0)
252     %cmp:_(s1) = G_ICMP intpred(ule), %cst, %load_eq_1(s32)
253     %cmp_ext:_(s32) = G_ZEXT %cmp(s1)
254     $w0 = COPY %cmp_ext(s32)
255     RET_ReallyLR implicit $w0
259 name:            eq_false
260 tracksRegLiveness: true
261 body:             |
262   bb.0:
263     liveins: $x0
265     ; CHECK-LABEL: name: eq_false
266     ; CHECK: liveins: $x0
267     ; CHECK: %cmp:_(s1) = G_CONSTANT i1 false
268     ; CHECK: %cmp_ext:_(s32) = G_ZEXT %cmp(s1)
269     ; CHECK: $w0 = COPY %cmp_ext(s32)
270     ; CHECK: RET_ReallyLR implicit $w0
271     %ptr:_(p0) = COPY $x0
272     %cst:_(s32) = G_CONSTANT i32 0
273     %load_eq_1:_(s32) = G_LOAD %ptr(p0) :: (load (s32), !range !0)
274     %cmp:_(s1) = G_ICMP intpred(eq), %load_eq_1(s32), %cst
275     %cmp_ext:_(s32) = G_ZEXT %cmp(s1)
276     $w0 = COPY %cmp_ext(s32)
277     RET_ReallyLR implicit $w0
281 name:            ne_false
282 tracksRegLiveness: true
283 body:             |
284   bb.0:
285     liveins: $x0
287     ; CHECK-LABEL: name: ne_false
288     ; CHECK: liveins: $x0
289     ; CHECK: %cmp:_(s1) = G_CONSTANT i1 false
290     ; CHECK: %cmp_ext:_(s32) = G_ZEXT %cmp(s1)
291     ; CHECK: $w0 = COPY %cmp_ext(s32)
292     ; CHECK: RET_ReallyLR implicit $w0
293     %ptr:_(p0) = COPY $x0
294     %cst_1:_(s32) = G_CONSTANT i32 1
295     %cst_2:_(s32) = G_CONSTANT i32 1
296     %cmp:_(s1) = G_ICMP intpred(ne), %cst_1(s32), %cst_2
297     %cmp_ext:_(s32) = G_ZEXT %cmp(s1)
298     $w0 = COPY %cmp_ext(s32)
299     RET_ReallyLR implicit $w0
303 name:            sge_false
304 tracksRegLiveness: true
305 body:             |
306   bb.0:
307     liveins: $x0
309     ; CHECK-LABEL: name: sge_false
310     ; CHECK: liveins: $x0
311     ; CHECK: %cmp:_(s1) = G_CONSTANT i1 false
312     ; CHECK: %cmp_ext:_(s32) = G_ZEXT %cmp(s1)
313     ; CHECK: $w0 = COPY %cmp_ext(s32)
314     ; CHECK: RET_ReallyLR implicit $w0
315     %ptr:_(p0) = COPY $x0
316     %cst:_(s32) = G_CONSTANT i32 -1
317     %load_eq_1:_(s32) = G_LOAD %ptr(p0) :: (load (s32), !range !0)
318     %cmp:_(s1) = G_ICMP intpred(sge), %cst, %load_eq_1(s32)
319     %cmp_ext:_(s32) = G_ZEXT %cmp(s1)
320     $w0 = COPY %cmp_ext(s32)
321     RET_ReallyLR implicit $w0
325 name:            sgt_false
326 tracksRegLiveness: true
327 body:             |
328   bb.0:
329     liveins: $x0
331     ; CHECK-LABEL: name: sgt_false
332     ; CHECK: liveins: $x0
333     ; CHECK: %cmp:_(s1) = G_CONSTANT i1 false
334     ; CHECK: %cmp_ext:_(s32) = G_ZEXT %cmp(s1)
335     ; CHECK: $w0 = COPY %cmp_ext(s32)
336     ; CHECK: RET_ReallyLR implicit $w0
337     %ptr:_(p0) = COPY $x0
338     %cst:_(s32) = G_CONSTANT i32 1
339     %load_eq_1:_(s32) = G_LOAD %ptr(p0) :: (load (s32), !range !0)
340     %cmp:_(s1) = G_ICMP intpred(sgt), %cst, %load_eq_1(s32)
341     %cmp_ext:_(s32) = G_ZEXT %cmp(s1)
342     $w0 = COPY %cmp_ext(s32)
343     RET_ReallyLR implicit $w0
347 name:            sle_false
348 tracksRegLiveness: true
349 body:             |
350   bb.0:
351     liveins: $x0
353     ; CHECK-LABEL: name: sle_false
354     ; CHECK: liveins: $x0
355     ; CHECK: %cmp:_(s1) = G_CONSTANT i1 false
356     ; CHECK: %cmp_ext:_(s32) = G_ZEXT %cmp(s1)
357     ; CHECK: $w0 = COPY %cmp_ext(s32)
358     ; CHECK: RET_ReallyLR implicit $w0
359     %ptr:_(p0) = COPY $x0
360     %cst:_(s32) = G_CONSTANT i32 3
361     %load_eq_1:_(s32) = G_LOAD %ptr(p0) :: (load (s32), !range !0)
362     %cmp:_(s1) = G_ICMP intpred(sle), %cst, %load_eq_1(s32)
363     %cmp_ext:_(s32) = G_ZEXT %cmp(s1)
364     $w0 = COPY %cmp_ext(s32)
365     RET_ReallyLR implicit $w0
370 name:            slt_false
371 tracksRegLiveness: true
372 body:             |
373   bb.0:
374     liveins: $x0
376     ; CHECK-LABEL: name: slt_false
377     ; CHECK: liveins: $x0
378     ; CHECK: %cmp:_(s1) = G_CONSTANT i1 false
379     ; CHECK: %cmp_ext:_(s32) = G_ZEXT %cmp(s1)
380     ; CHECK: $w0 = COPY %cmp_ext(s32)
381     ; CHECK: RET_ReallyLR implicit $w0
382     %ptr:_(p0) = COPY $x0
383     %cst:_(s32) = G_CONSTANT i32 2
384     %load_eq_1:_(s32) = G_LOAD %ptr(p0) :: (load (s32), !range !0)
385     %cmp:_(s1) = G_ICMP intpred(slt), %cst, %load_eq_1(s32)
386     %cmp_ext:_(s32) = G_ZEXT %cmp(s1)
387     $w0 = COPY %cmp_ext(s32)
388     RET_ReallyLR implicit $w0
392 name:            uge_false
393 tracksRegLiveness: true
394 body:             |
395   bb.0:
396     liveins: $x0
398     ; CHECK-LABEL: name: uge_false
399     ; CHECK: liveins: $x0
400     ; CHECK: %cmp:_(s1) = G_CONSTANT i1 false
401     ; CHECK: %cmp_ext:_(s32) = G_ZEXT %cmp(s1)
402     ; CHECK: $w0 = COPY %cmp_ext(s32)
403     ; CHECK: RET_ReallyLR implicit $w0
404     %ptr:_(p0) = COPY $x0
405     %cst:_(s32) = G_CONSTANT i32 0
406     %load_eq_1:_(s32) = G_LOAD %ptr(p0) :: (load (s32), !range !0)
407     %cmp:_(s1) = G_ICMP intpred(uge), %cst, %load_eq_1(s32)
408     %cmp_ext:_(s32) = G_ZEXT %cmp(s1)
409     $w0 = COPY %cmp_ext(s32)
410     RET_ReallyLR implicit $w0
414 name:            ugt_false
415 tracksRegLiveness: true
416 body:             |
417   bb.0:
418     liveins: $x0
420     ; CHECK-LABEL: name: ugt_false
421     ; CHECK: liveins: $x0
422     ; CHECK: %cmp:_(s1) = G_CONSTANT i1 false
423     ; CHECK: %cmp_ext:_(s32) = G_ZEXT %cmp(s1)
424     ; CHECK: $w0 = COPY %cmp_ext(s32)
425     ; CHECK: RET_ReallyLR implicit $w0
426     %ptr:_(p0) = COPY $x0
427     %cst:_(s32) = G_CONSTANT i32 1
428     %load_eq_1:_(s32) = G_LOAD %ptr(p0) :: (load (s32), !range !0)
429     %cmp:_(s1) = G_ICMP intpred(ugt), %cst, %load_eq_1(s32)
430     %cmp_ext:_(s32) = G_ZEXT %cmp(s1)
431     $w0 = COPY %cmp_ext(s32)
432     RET_ReallyLR implicit $w0
436 name:            ule_false
437 tracksRegLiveness: true
438 body:             |
439   bb.0:
440     liveins: $x0
442     ; CHECK-LABEL: name: ule_false
443     ; CHECK: liveins: $x0
444     ; CHECK: %cmp:_(s1) = G_CONSTANT i1 false
445     ; CHECK: %cmp_ext:_(s32) = G_ZEXT %cmp(s1)
446     ; CHECK: $w0 = COPY %cmp_ext(s32)
447     ; CHECK: RET_ReallyLR implicit $w0
448     %ptr:_(p0) = COPY $x0
449     %cst:_(s32) = G_CONSTANT i32 -1
450     %load_eq_1:_(s32) = G_LOAD %ptr(p0) :: (load (s32), !range !0)
451     %cmp:_(s1) = G_ICMP intpred(ule), %cst, %load_eq_1(s32)
452     %cmp_ext:_(s32) = G_ZEXT %cmp(s1)
453     $w0 = COPY %cmp_ext(s32)
454     RET_ReallyLR implicit $w0
458 name:            ult_false
459 tracksRegLiveness: true
460 body:             |
461   bb.0:
462     liveins: $x0
464     ; CHECK-LABEL: name: ult_false
465     ; CHECK: liveins: $x0
466     ; CHECK: %cmp:_(s1) = G_CONSTANT i1 false
467     ; CHECK: %cmp_ext:_(s32) = G_ZEXT %cmp(s1)
468     ; CHECK: $w0 = COPY %cmp_ext(s32)
469     ; CHECK: RET_ReallyLR implicit $w0
470     %ptr:_(p0) = COPY $x0
471     %cst:_(s32) = G_CONSTANT i32 2
472     %load_eq_1:_(s32) = G_LOAD %ptr(p0) :: (load (s32), !range !0)
473     %cmp:_(s1) = G_ICMP intpred(ule), %cst, %load_eq_1(s32)
474     %cmp_ext:_(s32) = G_ZEXT %cmp(s1)
475     $w0 = COPY %cmp_ext(s32)
476     RET_ReallyLR implicit $w0
480 name:            eq_unknown
481 tracksRegLiveness: true
482 body:             |
483   bb.0:
484     liveins: $x0
486     ; CHECK-LABEL: name: eq_unknown
487     ; CHECK: liveins: $x0
488     ; CHECK: %ptr:_(p0) = COPY $x0
489     ; CHECK: %cst:_(s32) = G_CONSTANT i32 1
490     ; CHECK: %load_between_1_2:_(s32) = G_LOAD %ptr(p0) :: (load (s32),
491     ; CHECK: %cmp:_(s1) = G_ICMP intpred(eq), %load_between_1_2(s32), %cst
492     ; CHECK: %cmp_ext:_(s32) = G_ZEXT %cmp(s1)
493     ; CHECK: $w0 = COPY %cmp_ext(s32)
494     ; CHECK: RET_ReallyLR implicit $w0
495     %ptr:_(p0) = COPY $x0
496     %cst:_(s32) = G_CONSTANT i32 1
497     %load_between_1_2:_(s32) = G_LOAD %ptr(p0) :: (load (s32), !range !1)
498     %cmp:_(s1) = G_ICMP intpred(eq), %load_between_1_2(s32), %cst
499     %cmp_ext:_(s32) = G_ZEXT %cmp(s1)
500     $w0 = COPY %cmp_ext(s32)
501     RET_ReallyLR implicit $w0
505 name:            ne_unknown
506 tracksRegLiveness: true
507 body:             |
508   bb.0:
509     liveins: $x0
511     ; CHECK-LABEL: name: ne_unknown
512     ; CHECK: liveins: $x0
513     ; CHECK: %ptr:_(p0) = COPY $x0
514     ; CHECK: %cst:_(s32) = G_CONSTANT i32 1
515     ; CHECK: %load_between_1_2:_(s32) = G_LOAD %ptr(p0) :: (load (s32),
516     ; CHECK: %cmp:_(s1) = G_ICMP intpred(ne), %load_between_1_2(s32), %cst
517     ; CHECK: %cmp_ext:_(s32) = G_ZEXT %cmp(s1)
518     ; CHECK: $w0 = COPY %cmp_ext(s32)
519     ; CHECK: RET_ReallyLR implicit $w0
520     %ptr:_(p0) = COPY $x0
521     %cst:_(s32) = G_CONSTANT i32 1
522     %load_between_1_2:_(s32) = G_LOAD %ptr(p0) :: (load (s32), !range !1)
523     %cmp:_(s1) = G_ICMP intpred(ne), %load_between_1_2(s32), %cst
524     %cmp_ext:_(s32) = G_ZEXT %cmp(s1)
525     $w0 = COPY %cmp_ext(s32)
526     RET_ReallyLR implicit $w0
530 name:            vector_true
531 tracksRegLiveness: true
532 body:             |
533   bb.0:
534     liveins: $x0
535     ; CHECK-LABEL: name: vector_true
536     ; CHECK: liveins: $x0
537     ; CHECK: %cst:_(s32) = G_CONSTANT i32 1
538     ; CHECK: [[C:%[0-9]+]]:_(s1) = G_CONSTANT i1 true
539     ; CHECK: %cmp:_(<2 x s1>) = G_BUILD_VECTOR [[C]](s1), [[C]](s1)
540     ; CHECK: %extract:_(s1) = G_EXTRACT_VECTOR_ELT %cmp(<2 x s1>), %cst(s32)
541     ; CHECK: %extract_ext:_(s32) = G_ZEXT %extract(s1)
542     ; CHECK: $w0 = COPY %extract_ext(s32)
543     ; CHECK: RET_ReallyLR implicit $w0
544     %ptr:_(p0) = COPY $x0
545     %cst:_(s32) = G_CONSTANT i32 1
546     %bv:_(<2 x s32>) = G_BUILD_VECTOR %cst, %cst
547     %cmp:_(<2 x s1>) = G_ICMP intpred(eq), %bv(<2 x s32>), %bv
548     %extract:_(s1) = G_EXTRACT_VECTOR_ELT %cmp(<2 x s1>), %cst(s32)
549     %extract_ext:_(s32) = G_ZEXT %extract(s1)
550     $w0 = COPY %extract_ext(s32)
551     RET_ReallyLR implicit $w0
555 name:            vector_false
556 tracksRegLiveness: true
557 body:             |
558   bb.0:
559     liveins: $x0
560     ; CHECK-LABEL: name: vector_false
561     ; CHECK: liveins: $x0
562     ; CHECK: %cst:_(s32) = G_CONSTANT i32 1
563     ; CHECK: [[C:%[0-9]+]]:_(s1) = G_CONSTANT i1 false
564     ; CHECK: %cmp:_(<2 x s1>) = G_BUILD_VECTOR [[C]](s1), [[C]](s1)
565     ; CHECK: %extract:_(s1) = G_EXTRACT_VECTOR_ELT %cmp(<2 x s1>), %cst(s32)
566     ; CHECK: %extract_ext:_(s32) = G_ZEXT %extract(s1)
567     ; CHECK: $w0 = COPY %extract_ext(s32)
568     ; CHECK: RET_ReallyLR implicit $w0
569     %ptr:_(p0) = COPY $x0
570     %cst:_(s32) = G_CONSTANT i32 1
571     %bv:_(<2 x s32>) = G_BUILD_VECTOR %cst, %cst
572     %cmp:_(<2 x s1>) = G_ICMP intpred(ne), %bv(<2 x s32>), %bv
573     %extract:_(s1) = G_EXTRACT_VECTOR_ELT %cmp(<2 x s1>), %cst(s32)
574     %extract_ext:_(s32) = G_ZEXT %extract(s1)
575     $w0 = COPY %extract_ext(s32)
576     RET_ReallyLR implicit $w0