xref: /llvm-project/llvm/test/CodeGen/AArch64/GlobalISel/legalize-cmp.mir (revision 665d79f2e967a5eee6fff93685e45f50cf24cab2)
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2# RUN: llc -O0 -mtriple=aarch64 -run-pass=legalizer -global-isel-abort=1 -verify-machineinstrs %s -o - | FileCheck %s
3---
4name:            test_icmp
5body:             |
6  bb.0.entry:
7    ; CHECK-LABEL: name: test_icmp
8    ; CHECK: [[COPY:%[0-9]+]]:_(s64) = COPY $x0
9    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x0
10    ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(sge), [[COPY]](s64), [[COPY1]]
11    ; CHECK-NEXT: $w0 = COPY [[ICMP]](s32)
12    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s64)
13    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 255
14    ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[TRUNC]], [[C]]
15    ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s64)
16    ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[TRUNC1]], [[C]]
17    ; CHECK-NEXT: [[ICMP1:%[0-9]+]]:_(s32) = G_ICMP intpred(ult), [[AND]](s32), [[AND1]]
18    ; CHECK-NEXT: $w0 = COPY [[ICMP1]](s32)
19    ; CHECK-NEXT: [[INTTOPTR:%[0-9]+]]:_(p0) = G_INTTOPTR [[COPY]](s64)
20    ; CHECK-NEXT: [[ICMP2:%[0-9]+]]:_(s32) = G_ICMP intpred(eq), [[INTTOPTR]](p0), [[INTTOPTR]]
21    ; CHECK-NEXT: $w0 = COPY [[ICMP2]](s32)
22    %0:_(s64) = COPY $x0
23    %1:_(s64) = COPY $x0
24    %2:_(s8) = G_TRUNC %0(s64)
25    %3:_(s8) = G_TRUNC %1(s64)
26    %4:_(s1) = G_ICMP intpred(sge), %0(s64), %1
27    %11:_(s32) = G_ANYEXT %4(s1)
28    $w0 = COPY %11(s32)
29    %8:_(s1) = G_ICMP intpred(ult), %2(s8), %3
30    %12:_(s32) = G_ANYEXT %8(s1)
31    $w0 = COPY %12(s32)
32    %9:_(p0) = G_INTTOPTR %0(s64)
33    %10:_(s1) = G_ICMP intpred(eq), %9(p0), %9
34    %14:_(s32) = G_ANYEXT %10(s1)
35    $w0 = COPY %14(s32)
36
37...
38---
39name:            test_s128
40alignment:       4
41tracksRegLiveness: true
42body:             |
43  ; CHECK-LABEL: name: test_s128
44  ; CHECK: bb.0:
45  ; CHECK-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
46  ; CHECK-NEXT: {{  $}}
47  ; CHECK-NEXT:   [[DEF:%[0-9]+]]:_(s64) = G_IMPLICIT_DEF
48  ; CHECK-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
49  ; CHECK-NEXT:   [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 4294967296
50  ; CHECK-NEXT:   [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(ult), [[DEF]](s64), [[C]]
51  ; CHECK-NEXT:   [[ICMP1:%[0-9]+]]:_(s32) = G_ICMP intpred(ult), [[DEF]](s64), [[C1]]
52  ; CHECK-NEXT:   [[ICMP2:%[0-9]+]]:_(s32) = G_ICMP intpred(eq), [[DEF]](s64), [[C1]]
53  ; CHECK-NEXT:   [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[ICMP2]](s32), [[ICMP]], [[ICMP1]]
54  ; CHECK-NEXT:   G_BRCOND [[SELECT]](s32), %bb.1
55  ; CHECK-NEXT:   G_BR %bb.2
56  ; CHECK-NEXT: {{  $}}
57  ; CHECK-NEXT: bb.1:
58  ; CHECK-NEXT:   successors:
59  ; CHECK-NEXT: {{  $}}
60  ; CHECK-NEXT: bb.2:
61  ; CHECK-NEXT:   RET_ReallyLR
62  bb.1:
63    %0:_(s128) = G_IMPLICIT_DEF
64    %1:_(s128) = G_CONSTANT i128 79228162514264337593543950336
65    %3:_(s1) = G_CONSTANT i1 true
66    %2:_(s1) = G_ICMP intpred(ult), %0(s128), %1
67    G_BRCOND %2(s1), %bb.2
68    G_BR %bb.3
69
70  bb.2:
71    successors:
72
73
74  bb.3:
75    RET_ReallyLR
76
77...
78---
79name:            test_s128_eq
80tracksRegLiveness: true
81body:             |
82  ; CHECK-LABEL: name: test_s128_eq
83  ; CHECK: bb.0:
84  ; CHECK-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
85  ; CHECK-NEXT: {{  $}}
86  ; CHECK-NEXT:   [[DEF:%[0-9]+]]:_(s64) = G_IMPLICIT_DEF
87  ; CHECK-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
88  ; CHECK-NEXT:   [[XOR:%[0-9]+]]:_(s64) = G_XOR [[DEF]], [[DEF]]
89  ; CHECK-NEXT:   [[XOR1:%[0-9]+]]:_(s64) = G_XOR [[DEF]], [[DEF]]
90  ; CHECK-NEXT:   [[OR:%[0-9]+]]:_(s64) = G_OR [[XOR]], [[XOR1]]
91  ; CHECK-NEXT:   [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(eq), [[OR]](s64), [[C]]
92  ; CHECK-NEXT:   G_BRCOND [[ICMP]](s32), %bb.1
93  ; CHECK-NEXT:   G_BR %bb.2
94  ; CHECK-NEXT: {{  $}}
95  ; CHECK-NEXT: bb.1:
96  ; CHECK-NEXT:   successors:
97  ; CHECK-NEXT: {{  $}}
98  ; CHECK-NEXT: bb.2:
99  ; CHECK-NEXT:   RET_ReallyLR
100  bb.1:
101    %lhs:_(s128) = G_IMPLICIT_DEF
102    %rhs:_(s128) = G_IMPLICIT_DEF
103    %cmp:_(s1) = G_ICMP intpred(eq), %lhs(s128), %rhs
104    G_BRCOND %cmp(s1), %bb.2
105    G_BR %bb.3
106  bb.2:
107    successors:
108  bb.3:
109    RET_ReallyLR
110
111...
112---
113name:            test_s88_eq
114tracksRegLiveness: true
115body:             |
116  ; CHECK-LABEL: name: test_s88_eq
117  ; CHECK: bb.0:
118  ; CHECK-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
119  ; CHECK-NEXT: {{  $}}
120  ; CHECK-NEXT:   [[DEF:%[0-9]+]]:_(s64) = G_IMPLICIT_DEF
121  ; CHECK-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1
122  ; CHECK-NEXT:   [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 16777215
123  ; CHECK-NEXT:   [[AND:%[0-9]+]]:_(s64) = G_AND [[DEF]], [[C]]
124  ; CHECK-NEXT:   [[AND1:%[0-9]+]]:_(s64) = G_AND [[DEF]], [[C1]]
125  ; CHECK-NEXT:   [[AND2:%[0-9]+]]:_(s64) = G_AND [[DEF]], [[C]]
126  ; CHECK-NEXT:   [[AND3:%[0-9]+]]:_(s64) = G_AND [[DEF]], [[C1]]
127  ; CHECK-NEXT:   [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
128  ; CHECK-NEXT:   [[XOR:%[0-9]+]]:_(s64) = G_XOR [[AND]], [[AND2]]
129  ; CHECK-NEXT:   [[XOR1:%[0-9]+]]:_(s64) = G_XOR [[AND1]], [[AND3]]
130  ; CHECK-NEXT:   [[OR:%[0-9]+]]:_(s64) = G_OR [[XOR]], [[XOR1]]
131  ; CHECK-NEXT:   [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(eq), [[OR]](s64), [[C2]]
132  ; CHECK-NEXT:   G_BRCOND [[ICMP]](s32), %bb.1
133  ; CHECK-NEXT:   G_BR %bb.2
134  ; CHECK-NEXT: {{  $}}
135  ; CHECK-NEXT: bb.1:
136  ; CHECK-NEXT:   successors:
137  ; CHECK-NEXT: {{  $}}
138  ; CHECK-NEXT: bb.2:
139  ; CHECK-NEXT:   RET_ReallyLR
140  bb.1:
141    %lhs:_(s88) = G_IMPLICIT_DEF
142    %rhs:_(s88) = G_IMPLICIT_DEF
143    %cmp:_(s1) = G_ICMP intpred(eq), %lhs(s88), %rhs
144    G_BRCOND %cmp(s1), %bb.2
145    G_BR %bb.3
146  bb.2:
147    successors:
148  bb.3:
149    RET_ReallyLR
150
151...
152---
153name:            test_s88_ne
154tracksRegLiveness: true
155body:             |
156  ; CHECK-LABEL: name: test_s88_ne
157  ; CHECK: bb.0:
158  ; CHECK-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
159  ; CHECK-NEXT: {{  $}}
160  ; CHECK-NEXT:   [[DEF:%[0-9]+]]:_(s64) = G_IMPLICIT_DEF
161  ; CHECK-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1
162  ; CHECK-NEXT:   [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 16777215
163  ; CHECK-NEXT:   [[AND:%[0-9]+]]:_(s64) = G_AND [[DEF]], [[C]]
164  ; CHECK-NEXT:   [[AND1:%[0-9]+]]:_(s64) = G_AND [[DEF]], [[C1]]
165  ; CHECK-NEXT:   [[AND2:%[0-9]+]]:_(s64) = G_AND [[DEF]], [[C]]
166  ; CHECK-NEXT:   [[AND3:%[0-9]+]]:_(s64) = G_AND [[DEF]], [[C1]]
167  ; CHECK-NEXT:   [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
168  ; CHECK-NEXT:   [[XOR:%[0-9]+]]:_(s64) = G_XOR [[AND]], [[AND2]]
169  ; CHECK-NEXT:   [[XOR1:%[0-9]+]]:_(s64) = G_XOR [[AND1]], [[AND3]]
170  ; CHECK-NEXT:   [[OR:%[0-9]+]]:_(s64) = G_OR [[XOR]], [[XOR1]]
171  ; CHECK-NEXT:   [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(ne), [[OR]](s64), [[C2]]
172  ; CHECK-NEXT:   G_BRCOND [[ICMP]](s32), %bb.1
173  ; CHECK-NEXT:   G_BR %bb.2
174  ; CHECK-NEXT: {{  $}}
175  ; CHECK-NEXT: bb.1:
176  ; CHECK-NEXT:   successors:
177  ; CHECK-NEXT: {{  $}}
178  ; CHECK-NEXT: bb.2:
179  ; CHECK-NEXT:   RET_ReallyLR
180  bb.1:
181    %lhs:_(s88) = G_IMPLICIT_DEF
182    %rhs:_(s88) = G_IMPLICIT_DEF
183    %cmp:_(s1) = G_ICMP intpred(ne), %lhs(s88), %rhs
184    G_BRCOND %cmp(s1), %bb.2
185    G_BR %bb.3
186  bb.2:
187    successors:
188  bb.3:
189    RET_ReallyLR
190
191...
192---
193name:            test_s96_eq
194tracksRegLiveness: true
195body:             |
196  ; CHECK-LABEL: name: test_s96_eq
197  ; CHECK: bb.0:
198  ; CHECK-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
199  ; CHECK-NEXT: {{  $}}
200  ; CHECK-NEXT:   [[DEF:%[0-9]+]]:_(s64) = G_IMPLICIT_DEF
201  ; CHECK-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1
202  ; CHECK-NEXT:   [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 4294967295
203  ; CHECK-NEXT:   [[AND:%[0-9]+]]:_(s64) = G_AND [[DEF]], [[C]]
204  ; CHECK-NEXT:   [[AND1:%[0-9]+]]:_(s64) = G_AND [[DEF]], [[C1]]
205  ; CHECK-NEXT:   [[AND2:%[0-9]+]]:_(s64) = G_AND [[DEF]], [[C]]
206  ; CHECK-NEXT:   [[AND3:%[0-9]+]]:_(s64) = G_AND [[DEF]], [[C1]]
207  ; CHECK-NEXT:   [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
208  ; CHECK-NEXT:   [[XOR:%[0-9]+]]:_(s64) = G_XOR [[AND]], [[AND2]]
209  ; CHECK-NEXT:   [[XOR1:%[0-9]+]]:_(s64) = G_XOR [[AND1]], [[AND3]]
210  ; CHECK-NEXT:   [[OR:%[0-9]+]]:_(s64) = G_OR [[XOR]], [[XOR1]]
211  ; CHECK-NEXT:   [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(eq), [[OR]](s64), [[C2]]
212  ; CHECK-NEXT:   G_BRCOND [[ICMP]](s32), %bb.1
213  ; CHECK-NEXT:   G_BR %bb.2
214  ; CHECK-NEXT: {{  $}}
215  ; CHECK-NEXT: bb.1:
216  ; CHECK-NEXT:   successors:
217  ; CHECK-NEXT: {{  $}}
218  ; CHECK-NEXT: bb.2:
219  ; CHECK-NEXT:   RET_ReallyLR
220  bb.1:
221    %lhs:_(s96) = G_IMPLICIT_DEF
222    %rhs:_(s96) = G_IMPLICIT_DEF
223    %cmp:_(s1) = G_ICMP intpred(eq), %lhs(s96), %rhs
224    G_BRCOND %cmp(s1), %bb.2
225    G_BR %bb.3
226  bb.2:
227    successors:
228  bb.3:
229    RET_ReallyLR
230...
231---
232name:            test_s318_eq
233tracksRegLiveness: true
234body:             |
235  ; CHECK-LABEL: name: test_s318_eq
236  ; CHECK: bb.0:
237  ; CHECK-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
238  ; CHECK-NEXT: {{  $}}
239  ; CHECK-NEXT:   [[DEF:%[0-9]+]]:_(s64) = G_IMPLICIT_DEF
240  ; CHECK-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1
241  ; CHECK-NEXT:   [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 4611686018427387903
242  ; CHECK-NEXT:   [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
243  ; CHECK-NEXT:   [[AND:%[0-9]+]]:_(s64) = G_AND [[DEF]], [[C]]
244  ; CHECK-NEXT:   [[AND1:%[0-9]+]]:_(s64) = G_AND [[DEF]], [[C]]
245  ; CHECK-NEXT:   [[AND2:%[0-9]+]]:_(s64) = G_AND [[DEF]], [[C]]
246  ; CHECK-NEXT:   [[AND3:%[0-9]+]]:_(s64) = G_AND [[DEF]], [[C]]
247  ; CHECK-NEXT:   [[AND4:%[0-9]+]]:_(s64) = G_AND [[DEF]], [[C1]]
248  ; CHECK-NEXT:   [[AND5:%[0-9]+]]:_(s64) = G_AND [[DEF]], [[C2]]
249  ; CHECK-NEXT:   [[AND6:%[0-9]+]]:_(s64) = G_AND [[DEF]], [[C2]]
250  ; CHECK-NEXT:   [[AND7:%[0-9]+]]:_(s64) = G_AND [[DEF]], [[C2]]
251  ; CHECK-NEXT:   [[AND8:%[0-9]+]]:_(s64) = G_AND [[DEF]], [[C]]
252  ; CHECK-NEXT:   [[AND9:%[0-9]+]]:_(s64) = G_AND [[DEF]], [[C]]
253  ; CHECK-NEXT:   [[AND10:%[0-9]+]]:_(s64) = G_AND [[DEF]], [[C]]
254  ; CHECK-NEXT:   [[AND11:%[0-9]+]]:_(s64) = G_AND [[DEF]], [[C]]
255  ; CHECK-NEXT:   [[AND12:%[0-9]+]]:_(s64) = G_AND [[DEF]], [[C1]]
256  ; CHECK-NEXT:   [[AND13:%[0-9]+]]:_(s64) = G_AND [[DEF]], [[C2]]
257  ; CHECK-NEXT:   [[AND14:%[0-9]+]]:_(s64) = G_AND [[DEF]], [[C2]]
258  ; CHECK-NEXT:   [[AND15:%[0-9]+]]:_(s64) = G_AND [[DEF]], [[C2]]
259  ; CHECK-NEXT:   [[XOR:%[0-9]+]]:_(s64) = G_XOR [[AND]], [[AND8]]
260  ; CHECK-NEXT:   [[XOR1:%[0-9]+]]:_(s64) = G_XOR [[AND1]], [[AND9]]
261  ; CHECK-NEXT:   [[XOR2:%[0-9]+]]:_(s64) = G_XOR [[AND2]], [[AND10]]
262  ; CHECK-NEXT:   [[XOR3:%[0-9]+]]:_(s64) = G_XOR [[AND3]], [[AND11]]
263  ; CHECK-NEXT:   [[XOR4:%[0-9]+]]:_(s64) = G_XOR [[AND4]], [[AND12]]
264  ; CHECK-NEXT:   [[XOR5:%[0-9]+]]:_(s64) = G_XOR [[AND5]], [[AND13]]
265  ; CHECK-NEXT:   [[XOR6:%[0-9]+]]:_(s64) = G_XOR [[AND6]], [[AND14]]
266  ; CHECK-NEXT:   [[XOR7:%[0-9]+]]:_(s64) = G_XOR [[AND7]], [[AND15]]
267  ; CHECK-NEXT:   [[OR:%[0-9]+]]:_(s64) = G_OR [[XOR]], [[XOR1]]
268  ; CHECK-NEXT:   [[OR1:%[0-9]+]]:_(s64) = G_OR [[OR]], [[XOR2]]
269  ; CHECK-NEXT:   [[OR2:%[0-9]+]]:_(s64) = G_OR [[OR1]], [[XOR3]]
270  ; CHECK-NEXT:   [[OR3:%[0-9]+]]:_(s64) = G_OR [[OR2]], [[XOR4]]
271  ; CHECK-NEXT:   [[OR4:%[0-9]+]]:_(s64) = G_OR [[OR3]], [[XOR5]]
272  ; CHECK-NEXT:   [[OR5:%[0-9]+]]:_(s64) = G_OR [[OR4]], [[XOR6]]
273  ; CHECK-NEXT:   [[OR6:%[0-9]+]]:_(s64) = G_OR [[OR5]], [[XOR7]]
274  ; CHECK-NEXT:   [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(eq), [[OR6]](s64), [[C2]]
275  ; CHECK-NEXT:   G_BRCOND [[ICMP]](s32), %bb.1
276  ; CHECK-NEXT:   G_BR %bb.2
277  ; CHECK-NEXT: {{  $}}
278  ; CHECK-NEXT: bb.1:
279  ; CHECK-NEXT:   successors:
280  ; CHECK-NEXT: {{  $}}
281  ; CHECK-NEXT: bb.2:
282  ; CHECK-NEXT:   RET_ReallyLR
283  bb.1:
284    %lhs:_(s318) = G_IMPLICIT_DEF
285    %rhs:_(s318) = G_IMPLICIT_DEF
286    %cmp:_(s1) = G_ICMP intpred(eq), %lhs(s318), %rhs
287    G_BRCOND %cmp(s1), %bb.2
288    G_BR %bb.3
289  bb.2:
290    successors:
291  bb.3:
292    RET_ReallyLR
293...
294---
295name:            test_s158_eq
296tracksRegLiveness: true
297body:             |
298  ; CHECK-LABEL: name: test_s158_eq
299  ; CHECK: bb.0:
300  ; CHECK-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
301  ; CHECK-NEXT: {{  $}}
302  ; CHECK-NEXT:   [[DEF:%[0-9]+]]:_(s64) = G_IMPLICIT_DEF
303  ; CHECK-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1
304  ; CHECK-NEXT:   [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 1073741823
305  ; CHECK-NEXT:   [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
306  ; CHECK-NEXT:   [[AND:%[0-9]+]]:_(s64) = G_AND [[DEF]], [[C]]
307  ; CHECK-NEXT:   [[AND1:%[0-9]+]]:_(s64) = G_AND [[DEF]], [[C]]
308  ; CHECK-NEXT:   [[AND2:%[0-9]+]]:_(s64) = G_AND [[DEF]], [[C1]]
309  ; CHECK-NEXT:   [[AND3:%[0-9]+]]:_(s64) = G_AND [[DEF]], [[C2]]
310  ; CHECK-NEXT:   [[AND4:%[0-9]+]]:_(s64) = G_AND [[DEF]], [[C]]
311  ; CHECK-NEXT:   [[AND5:%[0-9]+]]:_(s64) = G_AND [[DEF]], [[C]]
312  ; CHECK-NEXT:   [[AND6:%[0-9]+]]:_(s64) = G_AND [[DEF]], [[C1]]
313  ; CHECK-NEXT:   [[AND7:%[0-9]+]]:_(s64) = G_AND [[DEF]], [[C2]]
314  ; CHECK-NEXT:   [[XOR:%[0-9]+]]:_(s64) = G_XOR [[AND]], [[AND4]]
315  ; CHECK-NEXT:   [[XOR1:%[0-9]+]]:_(s64) = G_XOR [[AND1]], [[AND5]]
316  ; CHECK-NEXT:   [[XOR2:%[0-9]+]]:_(s64) = G_XOR [[AND2]], [[AND6]]
317  ; CHECK-NEXT:   [[XOR3:%[0-9]+]]:_(s64) = G_XOR [[AND3]], [[AND7]]
318  ; CHECK-NEXT:   [[OR:%[0-9]+]]:_(s64) = G_OR [[XOR]], [[XOR1]]
319  ; CHECK-NEXT:   [[OR1:%[0-9]+]]:_(s64) = G_OR [[OR]], [[XOR2]]
320  ; CHECK-NEXT:   [[OR2:%[0-9]+]]:_(s64) = G_OR [[OR1]], [[XOR3]]
321  ; CHECK-NEXT:   [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(eq), [[OR2]](s64), [[C2]]
322  ; CHECK-NEXT:   G_BRCOND [[ICMP]](s32), %bb.1
323  ; CHECK-NEXT:   G_BR %bb.2
324  ; CHECK-NEXT: {{  $}}
325  ; CHECK-NEXT: bb.1:
326  ; CHECK-NEXT:   successors:
327  ; CHECK-NEXT: {{  $}}
328  ; CHECK-NEXT: bb.2:
329  ; CHECK-NEXT:   RET_ReallyLR
330  bb.1:
331    %lhs:_(s158) = G_IMPLICIT_DEF
332    %rhs:_(s158) = G_IMPLICIT_DEF
333    %cmp:_(s1) = G_ICMP intpred(eq), %lhs(s158), %rhs
334    G_BRCOND %cmp(s1), %bb.2
335    G_BR %bb.3
336  bb.2:
337    successors:
338  bb.3:
339    RET_ReallyLR
340...
341---
342name:            test_3xs32_eq_pr_78181
343tracksRegLiveness: true
344body:             |
345  bb.1:
346    liveins: $x0
347    ; CHECK-LABEL: name: test_3xs32_eq_pr_78181
348    ; CHECK: liveins: $x0
349    ; CHECK-NEXT: {{  $}}
350    ; CHECK-NEXT: %const:_(s32) = G_IMPLICIT_DEF
351    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR %const(s32), %const(s32), %const(s32), %const(s32)
352    ; CHECK-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR %const(s32), %const(s32), %const(s32), %const(s32)
353    ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(<4 x s32>) = G_ICMP intpred(eq), [[BUILD_VECTOR]](<4 x s32>), [[BUILD_VECTOR1]]
354    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1
355    ; CHECK-NEXT: [[EVEC:%[0-9]+]]:_(s32) = G_EXTRACT_VECTOR_ELT [[ICMP]](<4 x s32>), [[C]](s64)
356    ; CHECK-NEXT: $w0 = COPY [[EVEC]](s32)
357    ; CHECK-NEXT: RET_ReallyLR
358    %const:_(s32) = G_IMPLICIT_DEF
359    %rhs:_(<3 x s32>) = G_BUILD_VECTOR %const(s32), %const(s32), %const(s32)
360    %lhs:_(<3 x s32>) = G_BUILD_VECTOR %const(s32), %const(s32), %const(s32)
361    %cmp:_(<3 x s32>) = G_ICMP intpred(eq), %lhs(<3 x s32>), %rhs
362    %1:_(s64) = G_CONSTANT i64 1
363    %2:_(s32) = G_EXTRACT_VECTOR_ELT %cmp(<3 x s32>), %1(s64)
364    $w0 = COPY %2(s32)
365    RET_ReallyLR
366...
367---
368name:            test_3xs16_eq_pr_78181
369tracksRegLiveness: true
370body:             |
371  bb.1:
372    liveins: $x0
373    ; CHECK-LABEL: name: test_3xs16_eq_pr_78181
374    ; CHECK: liveins: $x0
375    ; CHECK-NEXT: {{  $}}
376    ; CHECK-NEXT: %const:_(s16) = G_IMPLICIT_DEF
377    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s16>) = G_BUILD_VECTOR %const(s16), %const(s16), %const(s16), %const(s16)
378    ; CHECK-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s16>) = G_BUILD_VECTOR %const(s16), %const(s16), %const(s16), %const(s16)
379    ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(<4 x s16>) = G_ICMP intpred(eq), [[BUILD_VECTOR]](<4 x s16>), [[BUILD_VECTOR1]]
380    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s16), [[UV1:%[0-9]+]]:_(s16), [[UV2:%[0-9]+]]:_(s16), [[UV3:%[0-9]+]]:_(s16) = G_UNMERGE_VALUES [[ICMP]](<4 x s16>)
381    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1
382    ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[UV]](s16)
383    ; CHECK-NEXT: [[ANYEXT1:%[0-9]+]]:_(s32) = G_ANYEXT [[UV1]](s16)
384    ; CHECK-NEXT: [[ANYEXT2:%[0-9]+]]:_(s32) = G_ANYEXT [[UV2]](s16)
385    ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
386    ; CHECK-NEXT: [[BUILD_VECTOR2:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[ANYEXT]](s32), [[ANYEXT1]](s32), [[ANYEXT2]](s32), [[DEF]](s32)
387    ; CHECK-NEXT: [[EVEC:%[0-9]+]]:_(s32) = G_EXTRACT_VECTOR_ELT [[BUILD_VECTOR2]](<4 x s32>), [[C]](s64)
388    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535
389    ; CHECK-NEXT: %zext:_(s32) = G_AND [[EVEC]], [[C1]]
390    ; CHECK-NEXT: $w0 = COPY %zext(s32)
391    ; CHECK-NEXT: RET_ReallyLR
392    %const:_(s16) = G_IMPLICIT_DEF
393    %rhs:_(<3 x s16>) = G_BUILD_VECTOR %const(s16), %const(s16), %const(s16)
394    %lhs:_(<3 x s16>) = G_BUILD_VECTOR %const(s16), %const(s16), %const(s16)
395    %cmp:_(<3 x s16>) = G_ICMP intpred(eq), %lhs(<3 x s16>), %rhs
396    %1:_(s64) = G_CONSTANT i64 1
397    %2:_(s16) = G_EXTRACT_VECTOR_ELT %cmp(<3 x s16>), %1(s64)
398    %zext:_(s32) = G_ZEXT %2(s16)
399    $w0 = COPY %zext(s32)
400    RET_ReallyLR
401...
402---
403name:            test_3xs8_eq_pr_78181
404tracksRegLiveness: true
405body:             |
406  bb.1:
407    liveins: $x0
408    ; CHECK-LABEL: name: test_3xs8_eq_pr_78181
409    ; CHECK: liveins: $x0
410    ; CHECK-NEXT: {{  $}}
411    ; CHECK-NEXT: %const:_(s8) = G_IMPLICIT_DEF
412    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s8>) = G_BUILD_VECTOR %const(s8), %const(s8), %const(s8), %const(s8), %const(s8), %const(s8), %const(s8), %const(s8)
413    ; CHECK-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<8 x s8>) = G_BUILD_VECTOR %const(s8), %const(s8), %const(s8), %const(s8), %const(s8), %const(s8), %const(s8), %const(s8)
414    ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(<8 x s8>) = G_ICMP intpred(eq), [[BUILD_VECTOR]](<8 x s8>), [[BUILD_VECTOR1]]
415    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s8), [[UV1:%[0-9]+]]:_(s8), [[UV2:%[0-9]+]]:_(s8), [[UV3:%[0-9]+]]:_(s8), [[UV4:%[0-9]+]]:_(s8), [[UV5:%[0-9]+]]:_(s8), [[UV6:%[0-9]+]]:_(s8), [[UV7:%[0-9]+]]:_(s8) = G_UNMERGE_VALUES [[ICMP]](<8 x s8>)
416    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1
417    ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[UV]](s8)
418    ; CHECK-NEXT: [[ANYEXT1:%[0-9]+]]:_(s32) = G_ANYEXT [[UV1]](s8)
419    ; CHECK-NEXT: [[ANYEXT2:%[0-9]+]]:_(s32) = G_ANYEXT [[UV2]](s8)
420    ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
421    ; CHECK-NEXT: [[BUILD_VECTOR2:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[ANYEXT]](s32), [[ANYEXT1]](s32), [[ANYEXT2]](s32), [[DEF]](s32)
422    ; CHECK-NEXT: [[EVEC:%[0-9]+]]:_(s32) = G_EXTRACT_VECTOR_ELT [[BUILD_VECTOR2]](<4 x s32>), [[C]](s64)
423    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 255
424    ; CHECK-NEXT: %zext:_(s32) = G_AND [[EVEC]], [[C1]]
425    ; CHECK-NEXT: $w0 = COPY %zext(s32)
426    ; CHECK-NEXT: RET_ReallyLR
427    %const:_(s8) = G_IMPLICIT_DEF
428    %rhs:_(<3 x s8>) = G_BUILD_VECTOR %const(s8), %const(s8), %const(s8)
429    %lhs:_(<3 x s8>) = G_BUILD_VECTOR %const(s8), %const(s8), %const(s8)
430    %cmp:_(<3 x s8>) = G_ICMP intpred(eq), %lhs(<3 x s8>), %rhs
431    %1:_(s64) = G_CONSTANT i64 1
432    %2:_(s8) = G_EXTRACT_VECTOR_ELT %cmp(<3 x s8>), %1(s64)
433    %zext:_(s32) = G_ZEXT %2(s8)
434    $w0 = COPY %zext(s32)
435    RET_ReallyLR
436...
437---
438name:            test_3xs64_eq_clamp
439tracksRegLiveness: true
440body:             |
441  bb.1:
442    liveins: $x0
443    ; CHECK-LABEL: name: test_3xs64_eq_clamp
444    ; CHECK: liveins: $x0
445    ; CHECK-NEXT: {{  $}}
446    ; CHECK-NEXT: %const:_(s64) = G_IMPLICIT_DEF
447    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR %const(s64), %const(s64)
448    ; CHECK-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR %const(s64), %const(s64)
449    ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(<2 x s64>) = G_ICMP intpred(eq), [[BUILD_VECTOR]](<2 x s64>), [[BUILD_VECTOR1]]
450    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1
451    ; CHECK-NEXT: [[EVEC:%[0-9]+]]:_(s64) = G_EXTRACT_VECTOR_ELT [[ICMP]](<2 x s64>), [[C]](s64)
452    ; CHECK-NEXT: $x0 = COPY [[EVEC]](s64)
453    ; CHECK-NEXT: RET_ReallyLR
454    %const:_(s64) = G_IMPLICIT_DEF
455    %rhs:_(<3 x s64>) = G_BUILD_VECTOR %const(s64), %const(s64), %const(s64)
456    %lhs:_(<3 x s64>) = G_BUILD_VECTOR %const(s64), %const(s64), %const(s64)
457    %cmp:_(<3 x s64>) = G_ICMP intpred(eq), %lhs(<3 x s64>), %rhs
458    %1:_(s64) = G_CONSTANT i64 1
459    %2:_(s64) = G_EXTRACT_VECTOR_ELT %cmp(<3 x s64>), %1(s64)
460    $x0 = COPY %2(s64)
461    RET_ReallyLR
462...
463---
464name:            test_5xs32_eq_clamp
465tracksRegLiveness: true
466body:             |
467  bb.1:
468    liveins: $x0
469    ; CHECK-LABEL: name: test_5xs32_eq_clamp
470    ; CHECK: liveins: $x0
471    ; CHECK-NEXT: {{  $}}
472    ; CHECK-NEXT: %const:_(s32) = G_IMPLICIT_DEF
473    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR %const(s32), %const(s32), %const(s32), %const(s32)
474    ; CHECK-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR %const(s32), %const(s32), %const(s32), %const(s32)
475    ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(<4 x s32>) = G_ICMP intpred(eq), [[BUILD_VECTOR]](<4 x s32>), [[BUILD_VECTOR1]]
476    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1
477    ; CHECK-NEXT: [[EVEC:%[0-9]+]]:_(s32) = G_EXTRACT_VECTOR_ELT [[ICMP]](<4 x s32>), [[C]](s64)
478    ; CHECK-NEXT: $w0 = COPY [[EVEC]](s32)
479    ; CHECK-NEXT: RET_ReallyLR
480    %const:_(s32) = G_IMPLICIT_DEF
481    %rhs:_(<5 x s32>) = G_BUILD_VECTOR %const(s32), %const(s32), %const(s32), %const(s32), %const(s32)
482    %lhs:_(<5 x s32>) = G_BUILD_VECTOR %const(s32), %const(s32), %const(s32), %const(s32), %const(s32)
483    %cmp:_(<5 x s32>) = G_ICMP intpred(eq), %lhs(<5 x s32>), %rhs
484    %1:_(s64) = G_CONSTANT i64 1
485    %2:_(s32) = G_EXTRACT_VECTOR_ELT %cmp(<5 x s32>), %1(s64)
486    $w0 = COPY %2(s32)
487    RET_ReallyLR
488...
489---
490name:            test_7xs16_eq_clamp
491tracksRegLiveness: true
492body:             |
493  bb.1:
494    liveins: $x0
495    ; CHECK-LABEL: name: test_7xs16_eq_clamp
496    ; CHECK: liveins: $x0
497    ; CHECK-NEXT: {{  $}}
498    ; CHECK-NEXT: %const:_(s16) = G_IMPLICIT_DEF
499    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s16>) = G_BUILD_VECTOR %const(s16), %const(s16), %const(s16), %const(s16), %const(s16), %const(s16), %const(s16), %const(s16)
500    ; CHECK-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<8 x s16>) = G_BUILD_VECTOR %const(s16), %const(s16), %const(s16), %const(s16), %const(s16), %const(s16), %const(s16), %const(s16)
501    ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(<8 x s16>) = G_ICMP intpred(eq), [[BUILD_VECTOR]](<8 x s16>), [[BUILD_VECTOR1]]
502    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1
503    ; CHECK-NEXT: [[EVEC:%[0-9]+]]:_(s16) = G_EXTRACT_VECTOR_ELT [[ICMP]](<8 x s16>), [[C]](s64)
504    ; CHECK-NEXT: %zext:_(s32) = G_ZEXT [[EVEC]](s16)
505    ; CHECK-NEXT: $w0 = COPY %zext(s32)
506    ; CHECK-NEXT: RET_ReallyLR
507    %const:_(s16) = G_IMPLICIT_DEF
508    %rhs:_(<7 x s16>) = G_BUILD_VECTOR %const(s16), %const(s16), %const(s16), %const(s16), %const(s16), %const(s16), %const(s16)
509    %lhs:_(<7 x s16>) = G_BUILD_VECTOR %const(s16), %const(s16), %const(s16), %const(s16), %const(s16), %const(s16), %const(s16)
510    %cmp:_(<7 x s16>) = G_ICMP intpred(eq), %lhs(<7 x s16>), %rhs
511    %1:_(s64) = G_CONSTANT i64 1
512    %2:_(s16) = G_EXTRACT_VECTOR_ELT %cmp(<7 x s16>), %1(s64)
513    %zext:_(s32) = G_ZEXT %2(s16)
514    $w0 = COPY %zext(s32)
515    RET_ReallyLR
516...
517---
518name:            test_9xs8_eq_clamp
519tracksRegLiveness: true
520body:             |
521  bb.1:
522    liveins: $x0
523    ; CHECK-LABEL: name: test_9xs8_eq_clamp
524    ; CHECK: liveins: $x0
525    ; CHECK-NEXT: {{  $}}
526    ; CHECK-NEXT: %const:_(s8) = G_IMPLICIT_DEF
527    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<16 x s8>) = G_BUILD_VECTOR %const(s8), %const(s8), %const(s8), %const(s8), %const(s8), %const(s8), %const(s8), %const(s8), %const(s8), %const(s8), %const(s8), %const(s8), %const(s8), %const(s8), %const(s8), %const(s8)
528    ; CHECK-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<16 x s8>) = G_BUILD_VECTOR %const(s8), %const(s8), %const(s8), %const(s8), %const(s8), %const(s8), %const(s8), %const(s8), %const(s8), %const(s8), %const(s8), %const(s8), %const(s8), %const(s8), %const(s8), %const(s8)
529    ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(<16 x s8>) = G_ICMP intpred(eq), [[BUILD_VECTOR]](<16 x s8>), [[BUILD_VECTOR1]]
530    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1
531    ; CHECK-NEXT: [[EVEC:%[0-9]+]]:_(s8) = G_EXTRACT_VECTOR_ELT [[ICMP]](<16 x s8>), [[C]](s64)
532    ; CHECK-NEXT: %zext:_(s32) = G_ZEXT [[EVEC]](s8)
533    ; CHECK-NEXT: $w0 = COPY %zext(s32)
534    ; CHECK-NEXT: RET_ReallyLR
535    %const:_(s8) = G_IMPLICIT_DEF
536    %rhs:_(<9 x s8>) = G_BUILD_VECTOR %const(s8), %const(s8), %const(s8), %const(s8), %const(s8), %const(s8), %const(s8), %const(s8), %const(s8)
537    %lhs:_(<9 x s8>) = G_BUILD_VECTOR %const(s8), %const(s8), %const(s8), %const(s8), %const(s8), %const(s8), %const(s8), %const(s8), %const(s8)
538    %cmp:_(<9 x s8>) = G_ICMP intpred(eq), %lhs(<9 x s8>), %rhs
539    %1:_(s64) = G_CONSTANT i64 1
540    %2:_(s8) = G_EXTRACT_VECTOR_ELT %cmp(<9 x s8>), %1(s64)
541    %zext:_(s32) = G_ZEXT %2(s8)
542    $w0 = COPY %zext(s32)
543    RET_ReallyLR
544...
545---
546name:            test_4xs64_ne
547tracksRegLiveness: true
548body:             |
549  bb.1:
550    liveins:
551    ; CHECK-LABEL: name: test_4xs64_ne
552    ; CHECK: [[DEF:%[0-9]+]]:_(<2 x s64>) = G_IMPLICIT_DEF
553    ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(<2 x s64>) = G_ICMP intpred(eq), [[DEF]](<2 x s64>), [[DEF]]
554    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1
555    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[C]](s64), [[C]](s64)
556    ; CHECK-NEXT: [[XOR:%[0-9]+]]:_(<2 x s64>) = G_XOR [[ICMP]], [[BUILD_VECTOR]]
557    ; CHECK-NEXT: [[ICMP1:%[0-9]+]]:_(<2 x s64>) = G_ICMP intpred(eq), [[DEF]](<2 x s64>), [[DEF]]
558    ; CHECK-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[C]](s64), [[C]](s64)
559    ; CHECK-NEXT: [[XOR1:%[0-9]+]]:_(<2 x s64>) = G_XOR [[ICMP1]], [[BUILD_VECTOR1]]
560    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 1
561    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(<2 x s32>) = G_TRUNC [[XOR]](<2 x s64>)
562    ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(<2 x s32>) = G_TRUNC [[XOR1]](<2 x s64>)
563    ; CHECK-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s32>) = G_CONCAT_VECTORS [[TRUNC]](<2 x s32>), [[TRUNC1]](<2 x s32>)
564    ; CHECK-NEXT: [[EVEC:%[0-9]+]]:_(s32) = G_EXTRACT_VECTOR_ELT [[CONCAT_VECTORS]](<4 x s32>), [[C1]](s64)
565    ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 1
566    ; CHECK-NEXT: %zext:_(s32) = G_AND [[EVEC]], [[C2]]
567    ; CHECK-NEXT: $w0 = COPY %zext(s32)
568    ; CHECK-NEXT: RET_ReallyLR
569    %vec:_(<4 x s64>) = G_IMPLICIT_DEF
570    %cmp:_(<4 x s1>) = G_ICMP intpred(ne), %vec(<4 x s64>), %vec
571    %1:_(s64) = G_CONSTANT i64 1
572    %elt:_(s1) = G_EXTRACT_VECTOR_ELT %cmp(<4 x s1>), %1
573    %zext:_(s32) = G_ZEXT %elt(s1)
574    $w0 = COPY %zext(s32)
575    RET_ReallyLR
576...
577---
578name:            test_4xp0_ne
579tracksRegLiveness: true
580body:             |
581  bb.1:
582    liveins:
583    ; CHECK-LABEL: name: test_4xp0_ne
584    ; CHECK: [[DEF:%[0-9]+]]:_(<2 x p0>) = G_IMPLICIT_DEF
585    ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(<2 x s64>) = G_ICMP intpred(eq), [[DEF]](<2 x p0>), [[DEF]]
586    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1
587    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[C]](s64), [[C]](s64)
588    ; CHECK-NEXT: [[XOR:%[0-9]+]]:_(<2 x s64>) = G_XOR [[ICMP]], [[BUILD_VECTOR]]
589    ; CHECK-NEXT: [[ICMP1:%[0-9]+]]:_(<2 x s64>) = G_ICMP intpred(eq), [[DEF]](<2 x p0>), [[DEF]]
590    ; CHECK-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[C]](s64), [[C]](s64)
591    ; CHECK-NEXT: [[XOR1:%[0-9]+]]:_(<2 x s64>) = G_XOR [[ICMP1]], [[BUILD_VECTOR1]]
592    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 1
593    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(<2 x s32>) = G_TRUNC [[XOR]](<2 x s64>)
594    ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(<2 x s32>) = G_TRUNC [[XOR1]](<2 x s64>)
595    ; CHECK-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s32>) = G_CONCAT_VECTORS [[TRUNC]](<2 x s32>), [[TRUNC1]](<2 x s32>)
596    ; CHECK-NEXT: [[EVEC:%[0-9]+]]:_(s32) = G_EXTRACT_VECTOR_ELT [[CONCAT_VECTORS]](<4 x s32>), [[C1]](s64)
597    ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 1
598    ; CHECK-NEXT: %zext:_(s32) = G_AND [[EVEC]], [[C2]]
599    ; CHECK-NEXT: $w0 = COPY %zext(s32)
600    ; CHECK-NEXT: RET_ReallyLR
601    %vec:_(<4 x p0>) = G_IMPLICIT_DEF
602    %cmp:_(<4 x s1>) = G_ICMP intpred(ne), %vec(<4 x p0>), %vec
603    %1:_(s64) = G_CONSTANT i64 1
604    %elt:_(s1) = G_EXTRACT_VECTOR_ELT %cmp(<4 x s1>), %1
605    %zext:_(s32) = G_ZEXT %elt(s1)
606    $w0 = COPY %zext(s32)
607    RET_ReallyLR
608...
609