1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=riscv32 -mattr=+m,+v -run-pass=regbankselect \
3 # RUN: -disable-gisel-legality-check -simplify-mir -verify-machineinstrs %s \
4 # RUN: -o - | FileCheck -check-prefix=RV32I %s
5 # RUN: llc -mtriple=riscv64 -mattr=+m,+v -run-pass=regbankselect \
6 # RUN: -disable-gisel-legality-check -simplify-mir -verify-machineinstrs %s \
7 # RUN: -o - | FileCheck -check-prefix=RV64I %s
12 tracksRegLiveness: true
15 ; RV32I-LABEL: name: icmp_nxv1i1
16 ; RV32I: [[DEF:%[0-9]+]]:vrb(<vscale x 1 x s1>) = G_IMPLICIT_DEF
17 ; RV32I-NEXT: [[ICMP:%[0-9]+]]:vrb(<vscale x 1 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 1 x s1>), [[DEF]]
18 ; RV32I-NEXT: $v8 = COPY [[ICMP]](<vscale x 1 x s1>)
19 ; RV32I-NEXT: PseudoRET implicit $v8
21 ; RV64I-LABEL: name: icmp_nxv1i1
22 ; RV64I: [[DEF:%[0-9]+]]:vrb(<vscale x 1 x s1>) = G_IMPLICIT_DEF
23 ; RV64I-NEXT: [[ICMP:%[0-9]+]]:vrb(<vscale x 1 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 1 x s1>), [[DEF]]
24 ; RV64I-NEXT: $v8 = COPY [[ICMP]](<vscale x 1 x s1>)
25 ; RV64I-NEXT: PseudoRET implicit $v8
26 %0:_(<vscale x 1 x s1>) = G_IMPLICIT_DEF
27 %1:_(<vscale x 1 x s1>) = G_ICMP intpred(sgt), %0(<vscale x 1 x s1>), %0
28 $v8 = COPY %1(<vscale x 1 x s1>)
29 PseudoRET implicit $v8
35 tracksRegLiveness: true
38 ; RV32I-LABEL: name: icmp_nxv2i1
39 ; RV32I: [[DEF:%[0-9]+]]:vrb(<vscale x 2 x s1>) = G_IMPLICIT_DEF
40 ; RV32I-NEXT: [[ICMP:%[0-9]+]]:vrb(<vscale x 2 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 2 x s1>), [[DEF]]
41 ; RV32I-NEXT: $v8 = COPY [[ICMP]](<vscale x 2 x s1>)
42 ; RV32I-NEXT: PseudoRET implicit $v8
44 ; RV64I-LABEL: name: icmp_nxv2i1
45 ; RV64I: [[DEF:%[0-9]+]]:vrb(<vscale x 2 x s1>) = G_IMPLICIT_DEF
46 ; RV64I-NEXT: [[ICMP:%[0-9]+]]:vrb(<vscale x 2 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 2 x s1>), [[DEF]]
47 ; RV64I-NEXT: $v8 = COPY [[ICMP]](<vscale x 2 x s1>)
48 ; RV64I-NEXT: PseudoRET implicit $v8
49 %0:_(<vscale x 2 x s1>) = G_IMPLICIT_DEF
50 %1:_(<vscale x 2 x s1>) = G_ICMP intpred(sgt), %0(<vscale x 2 x s1>), %0
51 $v8 = COPY %1(<vscale x 2 x s1>)
52 PseudoRET implicit $v8
58 tracksRegLiveness: true
61 ; RV32I-LABEL: name: icmp_nxv4i1
62 ; RV32I: [[DEF:%[0-9]+]]:vrb(<vscale x 4 x s1>) = G_IMPLICIT_DEF
63 ; RV32I-NEXT: [[ICMP:%[0-9]+]]:vrb(<vscale x 4 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 4 x s1>), [[DEF]]
64 ; RV32I-NEXT: $v8 = COPY [[ICMP]](<vscale x 4 x s1>)
65 ; RV32I-NEXT: PseudoRET implicit $v8
67 ; RV64I-LABEL: name: icmp_nxv4i1
68 ; RV64I: [[DEF:%[0-9]+]]:vrb(<vscale x 4 x s1>) = G_IMPLICIT_DEF
69 ; RV64I-NEXT: [[ICMP:%[0-9]+]]:vrb(<vscale x 4 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 4 x s1>), [[DEF]]
70 ; RV64I-NEXT: $v8 = COPY [[ICMP]](<vscale x 4 x s1>)
71 ; RV64I-NEXT: PseudoRET implicit $v8
72 %0:_(<vscale x 4 x s1>) = G_IMPLICIT_DEF
73 %1:_(<vscale x 4 x s1>) = G_ICMP intpred(sgt), %0(<vscale x 4 x s1>), %0
74 $v8 = COPY %1(<vscale x 4 x s1>)
75 PseudoRET implicit $v8
81 tracksRegLiveness: true
84 ; RV32I-LABEL: name: icmp_nxv8i1
85 ; RV32I: [[DEF:%[0-9]+]]:vrb(<vscale x 8 x s1>) = G_IMPLICIT_DEF
86 ; RV32I-NEXT: [[ICMP:%[0-9]+]]:vrb(<vscale x 8 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 8 x s1>), [[DEF]]
87 ; RV32I-NEXT: $v8 = COPY [[ICMP]](<vscale x 8 x s1>)
88 ; RV32I-NEXT: PseudoRET implicit $v8
90 ; RV64I-LABEL: name: icmp_nxv8i1
91 ; RV64I: [[DEF:%[0-9]+]]:vrb(<vscale x 8 x s1>) = G_IMPLICIT_DEF
92 ; RV64I-NEXT: [[ICMP:%[0-9]+]]:vrb(<vscale x 8 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 8 x s1>), [[DEF]]
93 ; RV64I-NEXT: $v8 = COPY [[ICMP]](<vscale x 8 x s1>)
94 ; RV64I-NEXT: PseudoRET implicit $v8
95 %0:_(<vscale x 8 x s1>) = G_IMPLICIT_DEF
96 %1:_(<vscale x 8 x s1>) = G_ICMP intpred(sgt), %0(<vscale x 8 x s1>), %0
97 $v8 = COPY %1(<vscale x 8 x s1>)
98 PseudoRET implicit $v8
104 tracksRegLiveness: true
107 ; RV32I-LABEL: name: icmp_nxv16i1
108 ; RV32I: [[DEF:%[0-9]+]]:vrb(<vscale x 16 x s1>) = G_IMPLICIT_DEF
109 ; RV32I-NEXT: [[ICMP:%[0-9]+]]:vrb(<vscale x 16 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 16 x s1>), [[DEF]]
110 ; RV32I-NEXT: $v8 = COPY [[ICMP]](<vscale x 16 x s1>)
111 ; RV32I-NEXT: PseudoRET implicit $v8
113 ; RV64I-LABEL: name: icmp_nxv16i1
114 ; RV64I: [[DEF:%[0-9]+]]:vrb(<vscale x 16 x s1>) = G_IMPLICIT_DEF
115 ; RV64I-NEXT: [[ICMP:%[0-9]+]]:vrb(<vscale x 16 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 16 x s1>), [[DEF]]
116 ; RV64I-NEXT: $v8 = COPY [[ICMP]](<vscale x 16 x s1>)
117 ; RV64I-NEXT: PseudoRET implicit $v8
118 %0:_(<vscale x 16 x s1>) = G_IMPLICIT_DEF
119 %1:_(<vscale x 16 x s1>) = G_ICMP intpred(sgt), %0(<vscale x 16 x s1>), %0
120 $v8 = COPY %1(<vscale x 16 x s1>)
121 PseudoRET implicit $v8
127 tracksRegLiveness: true
130 ; RV32I-LABEL: name: icmp_nxv32i1
131 ; RV32I: [[DEF:%[0-9]+]]:vrb(<vscale x 32 x s1>) = G_IMPLICIT_DEF
132 ; RV32I-NEXT: [[ICMP:%[0-9]+]]:vrb(<vscale x 32 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 32 x s1>), [[DEF]]
133 ; RV32I-NEXT: $v8 = COPY [[ICMP]](<vscale x 32 x s1>)
134 ; RV32I-NEXT: PseudoRET implicit $v8
136 ; RV64I-LABEL: name: icmp_nxv32i1
137 ; RV64I: [[DEF:%[0-9]+]]:vrb(<vscale x 32 x s1>) = G_IMPLICIT_DEF
138 ; RV64I-NEXT: [[ICMP:%[0-9]+]]:vrb(<vscale x 32 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 32 x s1>), [[DEF]]
139 ; RV64I-NEXT: $v8 = COPY [[ICMP]](<vscale x 32 x s1>)
140 ; RV64I-NEXT: PseudoRET implicit $v8
141 %0:_(<vscale x 32 x s1>) = G_IMPLICIT_DEF
142 %1:_(<vscale x 32 x s1>) = G_ICMP intpred(sgt), %0(<vscale x 32 x s1>), %0
143 $v8 = COPY %1(<vscale x 32 x s1>)
144 PseudoRET implicit $v8
150 tracksRegLiveness: true
153 ; RV32I-LABEL: name: icmp_nxv64i1
154 ; RV32I: [[DEF:%[0-9]+]]:vrb(<vscale x 64 x s1>) = G_IMPLICIT_DEF
155 ; RV32I-NEXT: [[ICMP:%[0-9]+]]:vrb(<vscale x 64 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 64 x s1>), [[DEF]]
156 ; RV32I-NEXT: $v8 = COPY [[ICMP]](<vscale x 64 x s1>)
157 ; RV32I-NEXT: PseudoRET implicit $v8
159 ; RV64I-LABEL: name: icmp_nxv64i1
160 ; RV64I: [[DEF:%[0-9]+]]:vrb(<vscale x 64 x s1>) = G_IMPLICIT_DEF
161 ; RV64I-NEXT: [[ICMP:%[0-9]+]]:vrb(<vscale x 64 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 64 x s1>), [[DEF]]
162 ; RV64I-NEXT: $v8 = COPY [[ICMP]](<vscale x 64 x s1>)
163 ; RV64I-NEXT: PseudoRET implicit $v8
164 %0:_(<vscale x 64 x s1>) = G_IMPLICIT_DEF
165 %1:_(<vscale x 64 x s1>) = G_ICMP intpred(sgt), %0(<vscale x 64 x s1>), %0
166 $v8 = COPY %1(<vscale x 64 x s1>)
167 PseudoRET implicit $v8
173 tracksRegLiveness: true
176 ; RV32I-LABEL: name: icmp_nxv1i8
177 ; RV32I: [[DEF:%[0-9]+]]:vrb(<vscale x 1 x s8>) = G_IMPLICIT_DEF
178 ; RV32I-NEXT: [[ICMP:%[0-9]+]]:vrb(<vscale x 1 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 1 x s8>), [[DEF]]
179 ; RV32I-NEXT: $v8 = COPY [[ICMP]](<vscale x 1 x s1>)
180 ; RV32I-NEXT: PseudoRET implicit $v8
182 ; RV64I-LABEL: name: icmp_nxv1i8
183 ; RV64I: [[DEF:%[0-9]+]]:vrb(<vscale x 1 x s8>) = G_IMPLICIT_DEF
184 ; RV64I-NEXT: [[ICMP:%[0-9]+]]:vrb(<vscale x 1 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 1 x s8>), [[DEF]]
185 ; RV64I-NEXT: $v8 = COPY [[ICMP]](<vscale x 1 x s1>)
186 ; RV64I-NEXT: PseudoRET implicit $v8
187 %0:_(<vscale x 1 x s8>) = G_IMPLICIT_DEF
188 %1:_(<vscale x 1 x s1>) = G_ICMP intpred(sgt), %0(<vscale x 1 x s8>), %0
189 $v8 = COPY %1(<vscale x 1 x s1>)
190 PseudoRET implicit $v8
196 tracksRegLiveness: true
199 ; RV32I-LABEL: name: icmp_nxv2i8
200 ; RV32I: [[DEF:%[0-9]+]]:vrb(<vscale x 2 x s8>) = G_IMPLICIT_DEF
201 ; RV32I-NEXT: [[ICMP:%[0-9]+]]:vrb(<vscale x 2 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 2 x s8>), [[DEF]]
202 ; RV32I-NEXT: $v8 = COPY [[ICMP]](<vscale x 2 x s1>)
203 ; RV32I-NEXT: PseudoRET implicit $v8
205 ; RV64I-LABEL: name: icmp_nxv2i8
206 ; RV64I: [[DEF:%[0-9]+]]:vrb(<vscale x 2 x s8>) = G_IMPLICIT_DEF
207 ; RV64I-NEXT: [[ICMP:%[0-9]+]]:vrb(<vscale x 2 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 2 x s8>), [[DEF]]
208 ; RV64I-NEXT: $v8 = COPY [[ICMP]](<vscale x 2 x s1>)
209 ; RV64I-NEXT: PseudoRET implicit $v8
210 %0:_(<vscale x 2 x s8>) = G_IMPLICIT_DEF
211 %1:_(<vscale x 2 x s1>) = G_ICMP intpred(sgt), %0(<vscale x 2 x s8>), %0
212 $v8 = COPY %1(<vscale x 2 x s1>)
213 PseudoRET implicit $v8
219 tracksRegLiveness: true
222 ; RV32I-LABEL: name: icmp_nxv4i8
223 ; RV32I: [[DEF:%[0-9]+]]:vrb(<vscale x 4 x s8>) = G_IMPLICIT_DEF
224 ; RV32I-NEXT: [[ICMP:%[0-9]+]]:vrb(<vscale x 4 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 4 x s8>), [[DEF]]
225 ; RV32I-NEXT: $v8 = COPY [[ICMP]](<vscale x 4 x s1>)
226 ; RV32I-NEXT: PseudoRET implicit $v8
228 ; RV64I-LABEL: name: icmp_nxv4i8
229 ; RV64I: [[DEF:%[0-9]+]]:vrb(<vscale x 4 x s8>) = G_IMPLICIT_DEF
230 ; RV64I-NEXT: [[ICMP:%[0-9]+]]:vrb(<vscale x 4 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 4 x s8>), [[DEF]]
231 ; RV64I-NEXT: $v8 = COPY [[ICMP]](<vscale x 4 x s1>)
232 ; RV64I-NEXT: PseudoRET implicit $v8
233 %0:_(<vscale x 4 x s8>) = G_IMPLICIT_DEF
234 %1:_(<vscale x 4 x s1>) = G_ICMP intpred(sgt), %0(<vscale x 4 x s8>), %0
235 $v8 = COPY %1(<vscale x 4 x s1>)
236 PseudoRET implicit $v8
242 tracksRegLiveness: true
245 ; RV32I-LABEL: name: icmp_nxv8i8
246 ; RV32I: [[DEF:%[0-9]+]]:vrb(<vscale x 8 x s8>) = G_IMPLICIT_DEF
247 ; RV32I-NEXT: [[ICMP:%[0-9]+]]:vrb(<vscale x 8 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 8 x s8>), [[DEF]]
248 ; RV32I-NEXT: $v8 = COPY [[ICMP]](<vscale x 8 x s1>)
249 ; RV32I-NEXT: PseudoRET implicit $v8
251 ; RV64I-LABEL: name: icmp_nxv8i8
252 ; RV64I: [[DEF:%[0-9]+]]:vrb(<vscale x 8 x s8>) = G_IMPLICIT_DEF
253 ; RV64I-NEXT: [[ICMP:%[0-9]+]]:vrb(<vscale x 8 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 8 x s8>), [[DEF]]
254 ; RV64I-NEXT: $v8 = COPY [[ICMP]](<vscale x 8 x s1>)
255 ; RV64I-NEXT: PseudoRET implicit $v8
256 %0:_(<vscale x 8 x s8>) = G_IMPLICIT_DEF
257 %1:_(<vscale x 8 x s1>) = G_ICMP intpred(sgt), %0(<vscale x 8 x s8>), %0
258 $v8 = COPY %1(<vscale x 8 x s1>)
259 PseudoRET implicit $v8
265 tracksRegLiveness: true
268 ; RV32I-LABEL: name: icmp_nxv16i8
269 ; RV32I: [[DEF:%[0-9]+]]:vrb(<vscale x 16 x s8>) = G_IMPLICIT_DEF
270 ; RV32I-NEXT: [[ICMP:%[0-9]+]]:vrb(<vscale x 16 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 16 x s8>), [[DEF]]
271 ; RV32I-NEXT: $v8 = COPY [[ICMP]](<vscale x 16 x s1>)
272 ; RV32I-NEXT: PseudoRET implicit $v8
274 ; RV64I-LABEL: name: icmp_nxv16i8
275 ; RV64I: [[DEF:%[0-9]+]]:vrb(<vscale x 16 x s8>) = G_IMPLICIT_DEF
276 ; RV64I-NEXT: [[ICMP:%[0-9]+]]:vrb(<vscale x 16 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 16 x s8>), [[DEF]]
277 ; RV64I-NEXT: $v8 = COPY [[ICMP]](<vscale x 16 x s1>)
278 ; RV64I-NEXT: PseudoRET implicit $v8
279 %0:_(<vscale x 16 x s8>) = G_IMPLICIT_DEF
280 %1:_(<vscale x 16 x s1>) = G_ICMP intpred(sgt), %0(<vscale x 16 x s8>), %0
281 $v8 = COPY %1(<vscale x 16 x s1>)
282 PseudoRET implicit $v8
288 tracksRegLiveness: true
291 ; RV32I-LABEL: name: icmp_nxv32i8
292 ; RV32I: [[DEF:%[0-9]+]]:vrb(<vscale x 32 x s8>) = G_IMPLICIT_DEF
293 ; RV32I-NEXT: [[ICMP:%[0-9]+]]:vrb(<vscale x 32 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 32 x s8>), [[DEF]]
294 ; RV32I-NEXT: $v8 = COPY [[ICMP]](<vscale x 32 x s1>)
295 ; RV32I-NEXT: PseudoRET implicit $v8
297 ; RV64I-LABEL: name: icmp_nxv32i8
298 ; RV64I: [[DEF:%[0-9]+]]:vrb(<vscale x 32 x s8>) = G_IMPLICIT_DEF
299 ; RV64I-NEXT: [[ICMP:%[0-9]+]]:vrb(<vscale x 32 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 32 x s8>), [[DEF]]
300 ; RV64I-NEXT: $v8 = COPY [[ICMP]](<vscale x 32 x s1>)
301 ; RV64I-NEXT: PseudoRET implicit $v8
302 %0:_(<vscale x 32 x s8>) = G_IMPLICIT_DEF
303 %1:_(<vscale x 32 x s1>) = G_ICMP intpred(sgt), %0(<vscale x 32 x s8>), %0
304 $v8 = COPY %1(<vscale x 32 x s1>)
305 PseudoRET implicit $v8
311 tracksRegLiveness: true
314 ; RV32I-LABEL: name: icmp_nxv64i8
315 ; RV32I: [[DEF:%[0-9]+]]:vrb(<vscale x 64 x s8>) = G_IMPLICIT_DEF
316 ; RV32I-NEXT: [[ICMP:%[0-9]+]]:vrb(<vscale x 64 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 64 x s8>), [[DEF]]
317 ; RV32I-NEXT: $v8 = COPY [[ICMP]](<vscale x 64 x s1>)
318 ; RV32I-NEXT: PseudoRET implicit $v8
320 ; RV64I-LABEL: name: icmp_nxv64i8
321 ; RV64I: [[DEF:%[0-9]+]]:vrb(<vscale x 64 x s8>) = G_IMPLICIT_DEF
322 ; RV64I-NEXT: [[ICMP:%[0-9]+]]:vrb(<vscale x 64 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 64 x s8>), [[DEF]]
323 ; RV64I-NEXT: $v8 = COPY [[ICMP]](<vscale x 64 x s1>)
324 ; RV64I-NEXT: PseudoRET implicit $v8
325 %0:_(<vscale x 64 x s8>) = G_IMPLICIT_DEF
326 %1:_(<vscale x 64 x s1>) = G_ICMP intpred(sgt), %0(<vscale x 64 x s8>), %0
327 $v8 = COPY %1(<vscale x 64 x s1>)
328 PseudoRET implicit $v8
334 tracksRegLiveness: true
337 ; RV32I-LABEL: name: icmp_nxv1i16
338 ; RV32I: [[DEF:%[0-9]+]]:vrb(<vscale x 1 x s16>) = G_IMPLICIT_DEF
339 ; RV32I-NEXT: [[ICMP:%[0-9]+]]:vrb(<vscale x 1 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 1 x s16>), [[DEF]]
340 ; RV32I-NEXT: $v8 = COPY [[ICMP]](<vscale x 1 x s1>)
341 ; RV32I-NEXT: PseudoRET implicit $v8
343 ; RV64I-LABEL: name: icmp_nxv1i16
344 ; RV64I: [[DEF:%[0-9]+]]:vrb(<vscale x 1 x s16>) = G_IMPLICIT_DEF
345 ; RV64I-NEXT: [[ICMP:%[0-9]+]]:vrb(<vscale x 1 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 1 x s16>), [[DEF]]
346 ; RV64I-NEXT: $v8 = COPY [[ICMP]](<vscale x 1 x s1>)
347 ; RV64I-NEXT: PseudoRET implicit $v8
348 %0:_(<vscale x 1 x s16>) = G_IMPLICIT_DEF
349 %1:_(<vscale x 1 x s1>) = G_ICMP intpred(sgt), %0(<vscale x 1 x s16>), %0
350 $v8 = COPY %1(<vscale x 1 x s1>)
351 PseudoRET implicit $v8
357 tracksRegLiveness: true
360 ; RV32I-LABEL: name: icmp_nxv2i16
361 ; RV32I: [[DEF:%[0-9]+]]:vrb(<vscale x 2 x s16>) = G_IMPLICIT_DEF
362 ; RV32I-NEXT: [[ICMP:%[0-9]+]]:vrb(<vscale x 2 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 2 x s16>), [[DEF]]
363 ; RV32I-NEXT: $v8 = COPY [[ICMP]](<vscale x 2 x s1>)
364 ; RV32I-NEXT: PseudoRET implicit $v8
366 ; RV64I-LABEL: name: icmp_nxv2i16
367 ; RV64I: [[DEF:%[0-9]+]]:vrb(<vscale x 2 x s16>) = G_IMPLICIT_DEF
368 ; RV64I-NEXT: [[ICMP:%[0-9]+]]:vrb(<vscale x 2 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 2 x s16>), [[DEF]]
369 ; RV64I-NEXT: $v8 = COPY [[ICMP]](<vscale x 2 x s1>)
370 ; RV64I-NEXT: PseudoRET implicit $v8
371 %0:_(<vscale x 2 x s16>) = G_IMPLICIT_DEF
372 %1:_(<vscale x 2 x s1>) = G_ICMP intpred(sgt), %0(<vscale x 2 x s16>), %0
373 $v8 = COPY %1(<vscale x 2 x s1>)
374 PseudoRET implicit $v8
380 tracksRegLiveness: true
383 ; RV32I-LABEL: name: icmp_nxv4i16
384 ; RV32I: [[DEF:%[0-9]+]]:vrb(<vscale x 4 x s16>) = G_IMPLICIT_DEF
385 ; RV32I-NEXT: [[ICMP:%[0-9]+]]:vrb(<vscale x 4 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 4 x s16>), [[DEF]]
386 ; RV32I-NEXT: $v8 = COPY [[ICMP]](<vscale x 4 x s1>)
387 ; RV32I-NEXT: PseudoRET implicit $v8
389 ; RV64I-LABEL: name: icmp_nxv4i16
390 ; RV64I: [[DEF:%[0-9]+]]:vrb(<vscale x 4 x s16>) = G_IMPLICIT_DEF
391 ; RV64I-NEXT: [[ICMP:%[0-9]+]]:vrb(<vscale x 4 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 4 x s16>), [[DEF]]
392 ; RV64I-NEXT: $v8 = COPY [[ICMP]](<vscale x 4 x s1>)
393 ; RV64I-NEXT: PseudoRET implicit $v8
394 %0:_(<vscale x 4 x s16>) = G_IMPLICIT_DEF
395 %1:_(<vscale x 4 x s1>) = G_ICMP intpred(sgt), %0(<vscale x 4 x s16>), %0
396 $v8 = COPY %1(<vscale x 4 x s1>)
397 PseudoRET implicit $v8
403 tracksRegLiveness: true
406 ; RV32I-LABEL: name: icmp_nxv8i16
407 ; RV32I: [[DEF:%[0-9]+]]:vrb(<vscale x 8 x s16>) = G_IMPLICIT_DEF
408 ; RV32I-NEXT: [[ICMP:%[0-9]+]]:vrb(<vscale x 8 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 8 x s16>), [[DEF]]
409 ; RV32I-NEXT: $v8 = COPY [[ICMP]](<vscale x 8 x s1>)
410 ; RV32I-NEXT: PseudoRET implicit $v8
412 ; RV64I-LABEL: name: icmp_nxv8i16
413 ; RV64I: [[DEF:%[0-9]+]]:vrb(<vscale x 8 x s16>) = G_IMPLICIT_DEF
414 ; RV64I-NEXT: [[ICMP:%[0-9]+]]:vrb(<vscale x 8 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 8 x s16>), [[DEF]]
415 ; RV64I-NEXT: $v8 = COPY [[ICMP]](<vscale x 8 x s1>)
416 ; RV64I-NEXT: PseudoRET implicit $v8
417 %0:_(<vscale x 8 x s16>) = G_IMPLICIT_DEF
418 %1:_(<vscale x 8 x s1>) = G_ICMP intpred(sgt), %0(<vscale x 8 x s16>), %0
419 $v8 = COPY %1(<vscale x 8 x s1>)
420 PseudoRET implicit $v8
426 tracksRegLiveness: true
429 ; RV32I-LABEL: name: icmp_nxv16i16
430 ; RV32I: [[DEF:%[0-9]+]]:vrb(<vscale x 16 x s16>) = G_IMPLICIT_DEF
431 ; RV32I-NEXT: [[ICMP:%[0-9]+]]:vrb(<vscale x 16 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 16 x s16>), [[DEF]]
432 ; RV32I-NEXT: $v8 = COPY [[ICMP]](<vscale x 16 x s1>)
433 ; RV32I-NEXT: PseudoRET implicit $v8
435 ; RV64I-LABEL: name: icmp_nxv16i16
436 ; RV64I: [[DEF:%[0-9]+]]:vrb(<vscale x 16 x s16>) = G_IMPLICIT_DEF
437 ; RV64I-NEXT: [[ICMP:%[0-9]+]]:vrb(<vscale x 16 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 16 x s16>), [[DEF]]
438 ; RV64I-NEXT: $v8 = COPY [[ICMP]](<vscale x 16 x s1>)
439 ; RV64I-NEXT: PseudoRET implicit $v8
440 %0:_(<vscale x 16 x s16>) = G_IMPLICIT_DEF
441 %1:_(<vscale x 16 x s1>) = G_ICMP intpred(sgt), %0(<vscale x 16 x s16>), %0
442 $v8 = COPY %1(<vscale x 16 x s1>)
443 PseudoRET implicit $v8
449 tracksRegLiveness: true
452 ; RV32I-LABEL: name: icmp_nxv32i16
453 ; RV32I: [[DEF:%[0-9]+]]:vrb(<vscale x 32 x s16>) = G_IMPLICIT_DEF
454 ; RV32I-NEXT: [[ICMP:%[0-9]+]]:vrb(<vscale x 32 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 32 x s16>), [[DEF]]
455 ; RV32I-NEXT: $v8 = COPY [[ICMP]](<vscale x 32 x s1>)
456 ; RV32I-NEXT: PseudoRET implicit $v8
458 ; RV64I-LABEL: name: icmp_nxv32i16
459 ; RV64I: [[DEF:%[0-9]+]]:vrb(<vscale x 32 x s16>) = G_IMPLICIT_DEF
460 ; RV64I-NEXT: [[ICMP:%[0-9]+]]:vrb(<vscale x 32 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 32 x s16>), [[DEF]]
461 ; RV64I-NEXT: $v8 = COPY [[ICMP]](<vscale x 32 x s1>)
462 ; RV64I-NEXT: PseudoRET implicit $v8
463 %0:_(<vscale x 32 x s16>) = G_IMPLICIT_DEF
464 %1:_(<vscale x 32 x s1>) = G_ICMP intpred(sgt), %0(<vscale x 32 x s16>), %0
465 $v8 = COPY %1(<vscale x 32 x s1>)
466 PseudoRET implicit $v8
472 tracksRegLiveness: true
475 ; RV32I-LABEL: name: icmp_nxv1i32
476 ; RV32I: [[DEF:%[0-9]+]]:vrb(<vscale x 1 x s32>) = G_IMPLICIT_DEF
477 ; RV32I-NEXT: [[ICMP:%[0-9]+]]:vrb(<vscale x 1 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 1 x s32>), [[DEF]]
478 ; RV32I-NEXT: $v8 = COPY [[ICMP]](<vscale x 1 x s1>)
479 ; RV32I-NEXT: PseudoRET implicit $v8
481 ; RV64I-LABEL: name: icmp_nxv1i32
482 ; RV64I: [[DEF:%[0-9]+]]:vrb(<vscale x 1 x s32>) = G_IMPLICIT_DEF
483 ; RV64I-NEXT: [[ICMP:%[0-9]+]]:vrb(<vscale x 1 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 1 x s32>), [[DEF]]
484 ; RV64I-NEXT: $v8 = COPY [[ICMP]](<vscale x 1 x s1>)
485 ; RV64I-NEXT: PseudoRET implicit $v8
486 %0:_(<vscale x 1 x s32>) = G_IMPLICIT_DEF
487 %1:_(<vscale x 1 x s1>) = G_ICMP intpred(sgt), %0(<vscale x 1 x s32>), %0
488 $v8 = COPY %1(<vscale x 1 x s1>)
489 PseudoRET implicit $v8
495 tracksRegLiveness: true
498 ; RV32I-LABEL: name: icmp_nxv2i32
499 ; RV32I: [[DEF:%[0-9]+]]:vrb(<vscale x 2 x s32>) = G_IMPLICIT_DEF
500 ; RV32I-NEXT: [[ICMP:%[0-9]+]]:vrb(<vscale x 2 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 2 x s32>), [[DEF]]
501 ; RV32I-NEXT: $v8 = COPY [[ICMP]](<vscale x 2 x s1>)
502 ; RV32I-NEXT: PseudoRET implicit $v8
504 ; RV64I-LABEL: name: icmp_nxv2i32
505 ; RV64I: [[DEF:%[0-9]+]]:vrb(<vscale x 2 x s32>) = G_IMPLICIT_DEF
506 ; RV64I-NEXT: [[ICMP:%[0-9]+]]:vrb(<vscale x 2 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 2 x s32>), [[DEF]]
507 ; RV64I-NEXT: $v8 = COPY [[ICMP]](<vscale x 2 x s1>)
508 ; RV64I-NEXT: PseudoRET implicit $v8
509 %0:_(<vscale x 2 x s32>) = G_IMPLICIT_DEF
510 %1:_(<vscale x 2 x s1>) = G_ICMP intpred(sgt), %0(<vscale x 2 x s32>), %0
511 $v8 = COPY %1(<vscale x 2 x s1>)
512 PseudoRET implicit $v8
518 tracksRegLiveness: true
521 ; RV32I-LABEL: name: icmp_nxv4i32
522 ; RV32I: [[DEF:%[0-9]+]]:vrb(<vscale x 4 x s32>) = G_IMPLICIT_DEF
523 ; RV32I-NEXT: [[ICMP:%[0-9]+]]:vrb(<vscale x 4 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 4 x s32>), [[DEF]]
524 ; RV32I-NEXT: $v8 = COPY [[ICMP]](<vscale x 4 x s1>)
525 ; RV32I-NEXT: PseudoRET implicit $v8
527 ; RV64I-LABEL: name: icmp_nxv4i32
528 ; RV64I: [[DEF:%[0-9]+]]:vrb(<vscale x 4 x s32>) = G_IMPLICIT_DEF
529 ; RV64I-NEXT: [[ICMP:%[0-9]+]]:vrb(<vscale x 4 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 4 x s32>), [[DEF]]
530 ; RV64I-NEXT: $v8 = COPY [[ICMP]](<vscale x 4 x s1>)
531 ; RV64I-NEXT: PseudoRET implicit $v8
532 %0:_(<vscale x 4 x s32>) = G_IMPLICIT_DEF
533 %1:_(<vscale x 4 x s1>) = G_ICMP intpred(sgt), %0(<vscale x 4 x s32>), %0
534 $v8 = COPY %1(<vscale x 4 x s1>)
535 PseudoRET implicit $v8
541 tracksRegLiveness: true
544 ; RV32I-LABEL: name: icmp_nxv8i32
545 ; RV32I: [[DEF:%[0-9]+]]:vrb(<vscale x 8 x s32>) = G_IMPLICIT_DEF
546 ; RV32I-NEXT: [[ICMP:%[0-9]+]]:vrb(<vscale x 8 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 8 x s32>), [[DEF]]
547 ; RV32I-NEXT: $v8 = COPY [[ICMP]](<vscale x 8 x s1>)
548 ; RV32I-NEXT: PseudoRET implicit $v8
550 ; RV64I-LABEL: name: icmp_nxv8i32
551 ; RV64I: [[DEF:%[0-9]+]]:vrb(<vscale x 8 x s32>) = G_IMPLICIT_DEF
552 ; RV64I-NEXT: [[ICMP:%[0-9]+]]:vrb(<vscale x 8 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 8 x s32>), [[DEF]]
553 ; RV64I-NEXT: $v8 = COPY [[ICMP]](<vscale x 8 x s1>)
554 ; RV64I-NEXT: PseudoRET implicit $v8
555 %0:_(<vscale x 8 x s32>) = G_IMPLICIT_DEF
556 %1:_(<vscale x 8 x s1>) = G_ICMP intpred(sgt), %0(<vscale x 8 x s32>), %0
557 $v8 = COPY %1(<vscale x 8 x s1>)
558 PseudoRET implicit $v8
564 tracksRegLiveness: true
567 ; RV32I-LABEL: name: icmp_nxv16i32
568 ; RV32I: [[DEF:%[0-9]+]]:vrb(<vscale x 16 x s32>) = G_IMPLICIT_DEF
569 ; RV32I-NEXT: [[ICMP:%[0-9]+]]:vrb(<vscale x 16 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 16 x s32>), [[DEF]]
570 ; RV32I-NEXT: $v8 = COPY [[ICMP]](<vscale x 16 x s1>)
571 ; RV32I-NEXT: PseudoRET implicit $v8
573 ; RV64I-LABEL: name: icmp_nxv16i32
574 ; RV64I: [[DEF:%[0-9]+]]:vrb(<vscale x 16 x s32>) = G_IMPLICIT_DEF
575 ; RV64I-NEXT: [[ICMP:%[0-9]+]]:vrb(<vscale x 16 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 16 x s32>), [[DEF]]
576 ; RV64I-NEXT: $v8 = COPY [[ICMP]](<vscale x 16 x s1>)
577 ; RV64I-NEXT: PseudoRET implicit $v8
578 %0:_(<vscale x 16 x s32>) = G_IMPLICIT_DEF
579 %1:_(<vscale x 16 x s1>) = G_ICMP intpred(sgt), %0(<vscale x 16 x s32>), %0
580 $v8 = COPY %1(<vscale x 16 x s1>)
581 PseudoRET implicit $v8
587 tracksRegLiveness: true
590 ; RV32I-LABEL: name: icmp_nxv1i64
591 ; RV32I: [[DEF:%[0-9]+]]:vrb(<vscale x 1 x s64>) = G_IMPLICIT_DEF
592 ; RV32I-NEXT: [[ICMP:%[0-9]+]]:vrb(<vscale x 1 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 1 x s64>), [[DEF]]
593 ; RV32I-NEXT: $v8 = COPY [[ICMP]](<vscale x 1 x s1>)
594 ; RV32I-NEXT: PseudoRET implicit $v8
596 ; RV64I-LABEL: name: icmp_nxv1i64
597 ; RV64I: [[DEF:%[0-9]+]]:vrb(<vscale x 1 x s64>) = G_IMPLICIT_DEF
598 ; RV64I-NEXT: [[ICMP:%[0-9]+]]:vrb(<vscale x 1 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 1 x s64>), [[DEF]]
599 ; RV64I-NEXT: $v8 = COPY [[ICMP]](<vscale x 1 x s1>)
600 ; RV64I-NEXT: PseudoRET implicit $v8
601 %0:_(<vscale x 1 x s64>) = G_IMPLICIT_DEF
602 %1:_(<vscale x 1 x s1>) = G_ICMP intpred(sgt), %0(<vscale x 1 x s64>), %0
603 $v8 = COPY %1(<vscale x 1 x s1>)
604 PseudoRET implicit $v8
610 tracksRegLiveness: true
613 ; RV32I-LABEL: name: icmp_nxv2i64
614 ; RV32I: [[DEF:%[0-9]+]]:vrb(<vscale x 2 x s64>) = G_IMPLICIT_DEF
615 ; RV32I-NEXT: [[ICMP:%[0-9]+]]:vrb(<vscale x 2 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 2 x s64>), [[DEF]]
616 ; RV32I-NEXT: $v8 = COPY [[ICMP]](<vscale x 2 x s1>)
617 ; RV32I-NEXT: PseudoRET implicit $v8
619 ; RV64I-LABEL: name: icmp_nxv2i64
620 ; RV64I: [[DEF:%[0-9]+]]:vrb(<vscale x 2 x s64>) = G_IMPLICIT_DEF
621 ; RV64I-NEXT: [[ICMP:%[0-9]+]]:vrb(<vscale x 2 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 2 x s64>), [[DEF]]
622 ; RV64I-NEXT: $v8 = COPY [[ICMP]](<vscale x 2 x s1>)
623 ; RV64I-NEXT: PseudoRET implicit $v8
624 %0:_(<vscale x 2 x s64>) = G_IMPLICIT_DEF
625 %1:_(<vscale x 2 x s1>) = G_ICMP intpred(sgt), %0(<vscale x 2 x s64>), %0
626 $v8 = COPY %1(<vscale x 2 x s1>)
627 PseudoRET implicit $v8
633 tracksRegLiveness: true
636 ; RV32I-LABEL: name: icmp_nxv4i64
637 ; RV32I: [[DEF:%[0-9]+]]:vrb(<vscale x 4 x s64>) = G_IMPLICIT_DEF
638 ; RV32I-NEXT: [[ICMP:%[0-9]+]]:vrb(<vscale x 4 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 4 x s64>), [[DEF]]
639 ; RV32I-NEXT: $v8 = COPY [[ICMP]](<vscale x 4 x s1>)
640 ; RV32I-NEXT: PseudoRET implicit $v8
642 ; RV64I-LABEL: name: icmp_nxv4i64
643 ; RV64I: [[DEF:%[0-9]+]]:vrb(<vscale x 4 x s64>) = G_IMPLICIT_DEF
644 ; RV64I-NEXT: [[ICMP:%[0-9]+]]:vrb(<vscale x 4 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 4 x s64>), [[DEF]]
645 ; RV64I-NEXT: $v8 = COPY [[ICMP]](<vscale x 4 x s1>)
646 ; RV64I-NEXT: PseudoRET implicit $v8
647 %0:_(<vscale x 4 x s64>) = G_IMPLICIT_DEF
648 %1:_(<vscale x 4 x s1>) = G_ICMP intpred(sgt), %0(<vscale x 4 x s64>), %0
649 $v8 = COPY %1(<vscale x 4 x s1>)
650 PseudoRET implicit $v8
656 tracksRegLiveness: true
659 ; RV32I-LABEL: name: icmp_nxv8i64
660 ; RV32I: [[DEF:%[0-9]+]]:vrb(<vscale x 8 x s64>) = G_IMPLICIT_DEF
661 ; RV32I-NEXT: [[ICMP:%[0-9]+]]:vrb(<vscale x 8 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 8 x s64>), [[DEF]]
662 ; RV32I-NEXT: $v8 = COPY [[ICMP]](<vscale x 8 x s1>)
663 ; RV32I-NEXT: PseudoRET implicit $v8
665 ; RV64I-LABEL: name: icmp_nxv8i64
666 ; RV64I: [[DEF:%[0-9]+]]:vrb(<vscale x 8 x s64>) = G_IMPLICIT_DEF
667 ; RV64I-NEXT: [[ICMP:%[0-9]+]]:vrb(<vscale x 8 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 8 x s64>), [[DEF]]
668 ; RV64I-NEXT: $v8 = COPY [[ICMP]](<vscale x 8 x s1>)
669 ; RV64I-NEXT: PseudoRET implicit $v8
670 %0:_(<vscale x 8 x s64>) = G_IMPLICIT_DEF
671 %1:_(<vscale x 8 x s1>) = G_ICMP intpred(sgt), %0(<vscale x 8 x s64>), %0
672 $v8 = COPY %1(<vscale x 8 x s1>)
673 PseudoRET implicit $v8