1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=riscv32 -mattr=+v -run-pass=legalizer %s -o - | FileCheck --check-prefix=RV32 %s
3 # RUN: llc -mtriple=riscv64 -mattr=+v -run-pass=legalizer %s -o - | FileCheck --check-prefix=RV64 %s
8 tracksRegLiveness: true
11 ; RV32-LABEL: name: icmp_nxv1i1
12 ; RV32: [[DEF:%[0-9]+]]:_(<vscale x 1 x s1>) = G_IMPLICIT_DEF
13 ; RV32-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
14 ; RV32-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 1 x s8>) = G_SPLAT_VECTOR [[C]](s32)
15 ; RV32-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 -1
16 ; RV32-NEXT: [[SPLAT_VECTOR1:%[0-9]+]]:_(<vscale x 1 x s8>) = G_SPLAT_VECTOR [[C1]](s32)
17 ; RV32-NEXT: [[SELECT:%[0-9]+]]:_(<vscale x 1 x s8>) = G_SELECT [[DEF]](<vscale x 1 x s1>), [[SPLAT_VECTOR1]], [[SPLAT_VECTOR]]
18 ; RV32-NEXT: [[ICMP:%[0-9]+]]:_(<vscale x 1 x s1>) = G_ICMP intpred(sgt), [[SELECT]](<vscale x 1 x s8>), [[SELECT]]
19 ; RV32-NEXT: $v8 = COPY [[ICMP]](<vscale x 1 x s1>)
20 ; RV32-NEXT: PseudoRET implicit $v8
22 ; RV64-LABEL: name: icmp_nxv1i1
23 ; RV64: [[DEF:%[0-9]+]]:_(<vscale x 1 x s1>) = G_IMPLICIT_DEF
24 ; RV64-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
25 ; RV64-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 1 x s8>) = G_SPLAT_VECTOR [[C]](s64)
26 ; RV64-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1
27 ; RV64-NEXT: [[SPLAT_VECTOR1:%[0-9]+]]:_(<vscale x 1 x s8>) = G_SPLAT_VECTOR [[C1]](s64)
28 ; RV64-NEXT: [[SELECT:%[0-9]+]]:_(<vscale x 1 x s8>) = G_SELECT [[DEF]](<vscale x 1 x s1>), [[SPLAT_VECTOR1]], [[SPLAT_VECTOR]]
29 ; RV64-NEXT: [[ICMP:%[0-9]+]]:_(<vscale x 1 x s1>) = G_ICMP intpred(sgt), [[SELECT]](<vscale x 1 x s8>), [[SELECT]]
30 ; RV64-NEXT: $v8 = COPY [[ICMP]](<vscale x 1 x s1>)
31 ; RV64-NEXT: PseudoRET implicit $v8
32 %0:_(<vscale x 1 x s1>) = G_IMPLICIT_DEF
33 %1:_(<vscale x 1 x s1>) = G_ICMP intpred(sgt), %0, %0
34 $v8 = COPY %1(<vscale x 1 x s1>)
35 PseudoRET implicit $v8
40 tracksRegLiveness: true
43 ; RV32-LABEL: name: icmp_nxv2i1
44 ; RV32: [[DEF:%[0-9]+]]:_(<vscale x 2 x s1>) = G_IMPLICIT_DEF
45 ; RV32-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
46 ; RV32-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 2 x s8>) = G_SPLAT_VECTOR [[C]](s32)
47 ; RV32-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 -1
48 ; RV32-NEXT: [[SPLAT_VECTOR1:%[0-9]+]]:_(<vscale x 2 x s8>) = G_SPLAT_VECTOR [[C1]](s32)
49 ; RV32-NEXT: [[SELECT:%[0-9]+]]:_(<vscale x 2 x s8>) = G_SELECT [[DEF]](<vscale x 2 x s1>), [[SPLAT_VECTOR1]], [[SPLAT_VECTOR]]
50 ; RV32-NEXT: [[ICMP:%[0-9]+]]:_(<vscale x 2 x s1>) = G_ICMP intpred(sgt), [[SELECT]](<vscale x 2 x s8>), [[SELECT]]
51 ; RV32-NEXT: $v8 = COPY [[ICMP]](<vscale x 2 x s1>)
52 ; RV32-NEXT: PseudoRET implicit $v8
54 ; RV64-LABEL: name: icmp_nxv2i1
55 ; RV64: [[DEF:%[0-9]+]]:_(<vscale x 2 x s1>) = G_IMPLICIT_DEF
56 ; RV64-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
57 ; RV64-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 2 x s8>) = G_SPLAT_VECTOR [[C]](s64)
58 ; RV64-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1
59 ; RV64-NEXT: [[SPLAT_VECTOR1:%[0-9]+]]:_(<vscale x 2 x s8>) = G_SPLAT_VECTOR [[C1]](s64)
60 ; RV64-NEXT: [[SELECT:%[0-9]+]]:_(<vscale x 2 x s8>) = G_SELECT [[DEF]](<vscale x 2 x s1>), [[SPLAT_VECTOR1]], [[SPLAT_VECTOR]]
61 ; RV64-NEXT: [[ICMP:%[0-9]+]]:_(<vscale x 2 x s1>) = G_ICMP intpred(sgt), [[SELECT]](<vscale x 2 x s8>), [[SELECT]]
62 ; RV64-NEXT: $v8 = COPY [[ICMP]](<vscale x 2 x s1>)
63 ; RV64-NEXT: PseudoRET implicit $v8
64 %0:_(<vscale x 2 x s1>) = G_IMPLICIT_DEF
65 %1:_(<vscale x 2 x s1>) = G_ICMP intpred(sgt), %0, %0
66 $v8 = COPY %1(<vscale x 2 x s1>)
67 PseudoRET implicit $v8
72 tracksRegLiveness: true
75 ; RV32-LABEL: name: icmp_nxv4i1
76 ; RV32: [[DEF:%[0-9]+]]:_(<vscale x 4 x s1>) = G_IMPLICIT_DEF
77 ; RV32-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
78 ; RV32-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 4 x s8>) = G_SPLAT_VECTOR [[C]](s32)
79 ; RV32-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 -1
80 ; RV32-NEXT: [[SPLAT_VECTOR1:%[0-9]+]]:_(<vscale x 4 x s8>) = G_SPLAT_VECTOR [[C1]](s32)
81 ; RV32-NEXT: [[SELECT:%[0-9]+]]:_(<vscale x 4 x s8>) = G_SELECT [[DEF]](<vscale x 4 x s1>), [[SPLAT_VECTOR1]], [[SPLAT_VECTOR]]
82 ; RV32-NEXT: [[ICMP:%[0-9]+]]:_(<vscale x 4 x s1>) = G_ICMP intpred(sgt), [[SELECT]](<vscale x 4 x s8>), [[SELECT]]
83 ; RV32-NEXT: $v8 = COPY [[ICMP]](<vscale x 4 x s1>)
84 ; RV32-NEXT: PseudoRET implicit $v8
86 ; RV64-LABEL: name: icmp_nxv4i1
87 ; RV64: [[DEF:%[0-9]+]]:_(<vscale x 4 x s1>) = G_IMPLICIT_DEF
88 ; RV64-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
89 ; RV64-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 4 x s8>) = G_SPLAT_VECTOR [[C]](s64)
90 ; RV64-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1
91 ; RV64-NEXT: [[SPLAT_VECTOR1:%[0-9]+]]:_(<vscale x 4 x s8>) = G_SPLAT_VECTOR [[C1]](s64)
92 ; RV64-NEXT: [[SELECT:%[0-9]+]]:_(<vscale x 4 x s8>) = G_SELECT [[DEF]](<vscale x 4 x s1>), [[SPLAT_VECTOR1]], [[SPLAT_VECTOR]]
93 ; RV64-NEXT: [[ICMP:%[0-9]+]]:_(<vscale x 4 x s1>) = G_ICMP intpred(sgt), [[SELECT]](<vscale x 4 x s8>), [[SELECT]]
94 ; RV64-NEXT: $v8 = COPY [[ICMP]](<vscale x 4 x s1>)
95 ; RV64-NEXT: PseudoRET implicit $v8
96 %0:_(<vscale x 4 x s1>) = G_IMPLICIT_DEF
97 %1:_(<vscale x 4 x s1>) = G_ICMP intpred(sgt), %0, %0
98 $v8 = COPY %1(<vscale x 4 x s1>)
99 PseudoRET implicit $v8
104 tracksRegLiveness: true
107 ; RV32-LABEL: name: icmp_nxv8i1
108 ; RV32: [[DEF:%[0-9]+]]:_(<vscale x 8 x s1>) = G_IMPLICIT_DEF
109 ; RV32-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
110 ; RV32-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 8 x s8>) = G_SPLAT_VECTOR [[C]](s32)
111 ; RV32-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 -1
112 ; RV32-NEXT: [[SPLAT_VECTOR1:%[0-9]+]]:_(<vscale x 8 x s8>) = G_SPLAT_VECTOR [[C1]](s32)
113 ; RV32-NEXT: [[SELECT:%[0-9]+]]:_(<vscale x 8 x s8>) = G_SELECT [[DEF]](<vscale x 8 x s1>), [[SPLAT_VECTOR1]], [[SPLAT_VECTOR]]
114 ; RV32-NEXT: [[ICMP:%[0-9]+]]:_(<vscale x 8 x s1>) = G_ICMP intpred(sgt), [[SELECT]](<vscale x 8 x s8>), [[SELECT]]
115 ; RV32-NEXT: $v8 = COPY [[ICMP]](<vscale x 8 x s1>)
116 ; RV32-NEXT: PseudoRET implicit $v8
118 ; RV64-LABEL: name: icmp_nxv8i1
119 ; RV64: [[DEF:%[0-9]+]]:_(<vscale x 8 x s1>) = G_IMPLICIT_DEF
120 ; RV64-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
121 ; RV64-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 8 x s8>) = G_SPLAT_VECTOR [[C]](s64)
122 ; RV64-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1
123 ; RV64-NEXT: [[SPLAT_VECTOR1:%[0-9]+]]:_(<vscale x 8 x s8>) = G_SPLAT_VECTOR [[C1]](s64)
124 ; RV64-NEXT: [[SELECT:%[0-9]+]]:_(<vscale x 8 x s8>) = G_SELECT [[DEF]](<vscale x 8 x s1>), [[SPLAT_VECTOR1]], [[SPLAT_VECTOR]]
125 ; RV64-NEXT: [[ICMP:%[0-9]+]]:_(<vscale x 8 x s1>) = G_ICMP intpred(sgt), [[SELECT]](<vscale x 8 x s8>), [[SELECT]]
126 ; RV64-NEXT: $v8 = COPY [[ICMP]](<vscale x 8 x s1>)
127 ; RV64-NEXT: PseudoRET implicit $v8
128 %0:_(<vscale x 8 x s1>) = G_IMPLICIT_DEF
129 %1:_(<vscale x 8 x s1>) = G_ICMP intpred(sgt), %0, %0
130 $v8 = COPY %1(<vscale x 8 x s1>)
131 PseudoRET implicit $v8
136 tracksRegLiveness: true
139 ; RV32-LABEL: name: icmp_nxv16i1
140 ; RV32: [[DEF:%[0-9]+]]:_(<vscale x 16 x s1>) = G_IMPLICIT_DEF
141 ; RV32-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
142 ; RV32-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 16 x s8>) = G_SPLAT_VECTOR [[C]](s32)
143 ; RV32-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 -1
144 ; RV32-NEXT: [[SPLAT_VECTOR1:%[0-9]+]]:_(<vscale x 16 x s8>) = G_SPLAT_VECTOR [[C1]](s32)
145 ; RV32-NEXT: [[SELECT:%[0-9]+]]:_(<vscale x 16 x s8>) = G_SELECT [[DEF]](<vscale x 16 x s1>), [[SPLAT_VECTOR1]], [[SPLAT_VECTOR]]
146 ; RV32-NEXT: [[ICMP:%[0-9]+]]:_(<vscale x 16 x s1>) = G_ICMP intpred(sgt), [[SELECT]](<vscale x 16 x s8>), [[SELECT]]
147 ; RV32-NEXT: $v8 = COPY [[ICMP]](<vscale x 16 x s1>)
148 ; RV32-NEXT: PseudoRET implicit $v8
150 ; RV64-LABEL: name: icmp_nxv16i1
151 ; RV64: [[DEF:%[0-9]+]]:_(<vscale x 16 x s1>) = G_IMPLICIT_DEF
152 ; RV64-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
153 ; RV64-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 16 x s8>) = G_SPLAT_VECTOR [[C]](s64)
154 ; RV64-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1
155 ; RV64-NEXT: [[SPLAT_VECTOR1:%[0-9]+]]:_(<vscale x 16 x s8>) = G_SPLAT_VECTOR [[C1]](s64)
156 ; RV64-NEXT: [[SELECT:%[0-9]+]]:_(<vscale x 16 x s8>) = G_SELECT [[DEF]](<vscale x 16 x s1>), [[SPLAT_VECTOR1]], [[SPLAT_VECTOR]]
157 ; RV64-NEXT: [[ICMP:%[0-9]+]]:_(<vscale x 16 x s1>) = G_ICMP intpred(sgt), [[SELECT]](<vscale x 16 x s8>), [[SELECT]]
158 ; RV64-NEXT: $v8 = COPY [[ICMP]](<vscale x 16 x s1>)
159 ; RV64-NEXT: PseudoRET implicit $v8
160 %0:_(<vscale x 16 x s1>) = G_IMPLICIT_DEF
161 %1:_(<vscale x 16 x s1>) = G_ICMP intpred(sgt), %0, %0
162 $v8 = COPY %1(<vscale x 16 x s1>)
163 PseudoRET implicit $v8
168 tracksRegLiveness: true
171 ; RV32-LABEL: name: icmp_nxv32i1
172 ; RV32: [[DEF:%[0-9]+]]:_(<vscale x 32 x s1>) = G_IMPLICIT_DEF
173 ; RV32-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
174 ; RV32-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 32 x s8>) = G_SPLAT_VECTOR [[C]](s32)
175 ; RV32-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 -1
176 ; RV32-NEXT: [[SPLAT_VECTOR1:%[0-9]+]]:_(<vscale x 32 x s8>) = G_SPLAT_VECTOR [[C1]](s32)
177 ; RV32-NEXT: [[SELECT:%[0-9]+]]:_(<vscale x 32 x s8>) = G_SELECT [[DEF]](<vscale x 32 x s1>), [[SPLAT_VECTOR1]], [[SPLAT_VECTOR]]
178 ; RV32-NEXT: [[ICMP:%[0-9]+]]:_(<vscale x 32 x s1>) = G_ICMP intpred(sgt), [[SELECT]](<vscale x 32 x s8>), [[SELECT]]
179 ; RV32-NEXT: $v8 = COPY [[ICMP]](<vscale x 32 x s1>)
180 ; RV32-NEXT: PseudoRET implicit $v8
182 ; RV64-LABEL: name: icmp_nxv32i1
183 ; RV64: [[DEF:%[0-9]+]]:_(<vscale x 32 x s1>) = G_IMPLICIT_DEF
184 ; RV64-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
185 ; RV64-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 32 x s8>) = G_SPLAT_VECTOR [[C]](s64)
186 ; RV64-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1
187 ; RV64-NEXT: [[SPLAT_VECTOR1:%[0-9]+]]:_(<vscale x 32 x s8>) = G_SPLAT_VECTOR [[C1]](s64)
188 ; RV64-NEXT: [[SELECT:%[0-9]+]]:_(<vscale x 32 x s8>) = G_SELECT [[DEF]](<vscale x 32 x s1>), [[SPLAT_VECTOR1]], [[SPLAT_VECTOR]]
189 ; RV64-NEXT: [[ICMP:%[0-9]+]]:_(<vscale x 32 x s1>) = G_ICMP intpred(sgt), [[SELECT]](<vscale x 32 x s8>), [[SELECT]]
190 ; RV64-NEXT: $v8 = COPY [[ICMP]](<vscale x 32 x s1>)
191 ; RV64-NEXT: PseudoRET implicit $v8
192 %0:_(<vscale x 32 x s1>) = G_IMPLICIT_DEF
193 %1:_(<vscale x 32 x s1>) = G_ICMP intpred(sgt), %0, %0
194 $v8 = COPY %1(<vscale x 32 x s1>)
195 PseudoRET implicit $v8
200 tracksRegLiveness: true
203 ; RV32-LABEL: name: icmp_nxv64i1
204 ; RV32: [[DEF:%[0-9]+]]:_(<vscale x 64 x s1>) = G_IMPLICIT_DEF
205 ; RV32-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
206 ; RV32-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 64 x s8>) = G_SPLAT_VECTOR [[C]](s32)
207 ; RV32-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 -1
208 ; RV32-NEXT: [[SPLAT_VECTOR1:%[0-9]+]]:_(<vscale x 64 x s8>) = G_SPLAT_VECTOR [[C1]](s32)
209 ; RV32-NEXT: [[SELECT:%[0-9]+]]:_(<vscale x 64 x s8>) = G_SELECT [[DEF]](<vscale x 64 x s1>), [[SPLAT_VECTOR1]], [[SPLAT_VECTOR]]
210 ; RV32-NEXT: [[ICMP:%[0-9]+]]:_(<vscale x 64 x s1>) = G_ICMP intpred(sgt), [[SELECT]](<vscale x 64 x s8>), [[SELECT]]
211 ; RV32-NEXT: $v8 = COPY [[ICMP]](<vscale x 64 x s1>)
212 ; RV32-NEXT: PseudoRET implicit $v8
214 ; RV64-LABEL: name: icmp_nxv64i1
215 ; RV64: [[DEF:%[0-9]+]]:_(<vscale x 64 x s1>) = G_IMPLICIT_DEF
216 ; RV64-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
217 ; RV64-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 64 x s8>) = G_SPLAT_VECTOR [[C]](s64)
218 ; RV64-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1
219 ; RV64-NEXT: [[SPLAT_VECTOR1:%[0-9]+]]:_(<vscale x 64 x s8>) = G_SPLAT_VECTOR [[C1]](s64)
220 ; RV64-NEXT: [[SELECT:%[0-9]+]]:_(<vscale x 64 x s8>) = G_SELECT [[DEF]](<vscale x 64 x s1>), [[SPLAT_VECTOR1]], [[SPLAT_VECTOR]]
221 ; RV64-NEXT: [[ICMP:%[0-9]+]]:_(<vscale x 64 x s1>) = G_ICMP intpred(sgt), [[SELECT]](<vscale x 64 x s8>), [[SELECT]]
222 ; RV64-NEXT: $v8 = COPY [[ICMP]](<vscale x 64 x s1>)
223 ; RV64-NEXT: PseudoRET implicit $v8
224 %0:_(<vscale x 64 x s1>) = G_IMPLICIT_DEF
225 %1:_(<vscale x 64 x s1>) = G_ICMP intpred(sgt), %0, %0
226 $v8 = COPY %1(<vscale x 64 x s1>)
227 PseudoRET implicit $v8
232 tracksRegLiveness: true
235 ; RV32-LABEL: name: icmp_nxv1i8
236 ; RV32: [[DEF:%[0-9]+]]:_(<vscale x 1 x s8>) = G_IMPLICIT_DEF
237 ; RV32-NEXT: [[ICMP:%[0-9]+]]:_(<vscale x 1 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 1 x s8>), [[DEF]]
238 ; RV32-NEXT: $v8 = COPY [[ICMP]](<vscale x 1 x s1>)
239 ; RV32-NEXT: PseudoRET implicit $v8
241 ; RV64-LABEL: name: icmp_nxv1i8
242 ; RV64: [[DEF:%[0-9]+]]:_(<vscale x 1 x s8>) = G_IMPLICIT_DEF
243 ; RV64-NEXT: [[ICMP:%[0-9]+]]:_(<vscale x 1 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 1 x s8>), [[DEF]]
244 ; RV64-NEXT: $v8 = COPY [[ICMP]](<vscale x 1 x s1>)
245 ; RV64-NEXT: PseudoRET implicit $v8
246 %0:_(<vscale x 1 x s8>) = G_IMPLICIT_DEF
247 %1:_(<vscale x 1 x s1>) = G_ICMP intpred(sgt), %0, %0
248 $v8 = COPY %1(<vscale x 1 x s1>)
249 PseudoRET implicit $v8
254 tracksRegLiveness: true
257 ; RV32-LABEL: name: icmp_nxv2i8
258 ; RV32: [[DEF:%[0-9]+]]:_(<vscale x 2 x s8>) = G_IMPLICIT_DEF
259 ; RV32-NEXT: [[ICMP:%[0-9]+]]:_(<vscale x 2 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 2 x s8>), [[DEF]]
260 ; RV32-NEXT: $v8 = COPY [[ICMP]](<vscale x 2 x s1>)
261 ; RV32-NEXT: PseudoRET implicit $v8
263 ; RV64-LABEL: name: icmp_nxv2i8
264 ; RV64: [[DEF:%[0-9]+]]:_(<vscale x 2 x s8>) = G_IMPLICIT_DEF
265 ; RV64-NEXT: [[ICMP:%[0-9]+]]:_(<vscale x 2 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 2 x s8>), [[DEF]]
266 ; RV64-NEXT: $v8 = COPY [[ICMP]](<vscale x 2 x s1>)
267 ; RV64-NEXT: PseudoRET implicit $v8
268 %0:_(<vscale x 2 x s8>) = G_IMPLICIT_DEF
269 %1:_(<vscale x 2 x s1>) = G_ICMP intpred(sgt), %0, %0
270 $v8 = COPY %1(<vscale x 2 x s1>)
271 PseudoRET implicit $v8
276 tracksRegLiveness: true
279 ; RV32-LABEL: name: icmp_nxv4i8
280 ; RV32: [[DEF:%[0-9]+]]:_(<vscale x 4 x s8>) = G_IMPLICIT_DEF
281 ; RV32-NEXT: [[ICMP:%[0-9]+]]:_(<vscale x 4 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 4 x s8>), [[DEF]]
282 ; RV32-NEXT: $v8 = COPY [[ICMP]](<vscale x 4 x s1>)
283 ; RV32-NEXT: PseudoRET implicit $v8
285 ; RV64-LABEL: name: icmp_nxv4i8
286 ; RV64: [[DEF:%[0-9]+]]:_(<vscale x 4 x s8>) = G_IMPLICIT_DEF
287 ; RV64-NEXT: [[ICMP:%[0-9]+]]:_(<vscale x 4 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 4 x s8>), [[DEF]]
288 ; RV64-NEXT: $v8 = COPY [[ICMP]](<vscale x 4 x s1>)
289 ; RV64-NEXT: PseudoRET implicit $v8
290 %0:_(<vscale x 4 x s8>) = G_IMPLICIT_DEF
291 %1:_(<vscale x 4 x s1>) = G_ICMP intpred(sgt), %0, %0
292 $v8 = COPY %1(<vscale x 4 x s1>)
293 PseudoRET implicit $v8
298 tracksRegLiveness: true
301 ; RV32-LABEL: name: icmp_nxv8i8
302 ; RV32: [[DEF:%[0-9]+]]:_(<vscale x 8 x s8>) = G_IMPLICIT_DEF
303 ; RV32-NEXT: [[ICMP:%[0-9]+]]:_(<vscale x 8 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 8 x s8>), [[DEF]]
304 ; RV32-NEXT: $v8 = COPY [[ICMP]](<vscale x 8 x s1>)
305 ; RV32-NEXT: PseudoRET implicit $v8
307 ; RV64-LABEL: name: icmp_nxv8i8
308 ; RV64: [[DEF:%[0-9]+]]:_(<vscale x 8 x s8>) = G_IMPLICIT_DEF
309 ; RV64-NEXT: [[ICMP:%[0-9]+]]:_(<vscale x 8 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 8 x s8>), [[DEF]]
310 ; RV64-NEXT: $v8 = COPY [[ICMP]](<vscale x 8 x s1>)
311 ; RV64-NEXT: PseudoRET implicit $v8
312 %0:_(<vscale x 8 x s8>) = G_IMPLICIT_DEF
313 %1:_(<vscale x 8 x s1>) = G_ICMP intpred(sgt), %0, %0
314 $v8 = COPY %1(<vscale x 8 x s1>)
315 PseudoRET implicit $v8
320 tracksRegLiveness: true
323 ; RV32-LABEL: name: icmp_nxv16i8
324 ; RV32: [[DEF:%[0-9]+]]:_(<vscale x 16 x s8>) = G_IMPLICIT_DEF
325 ; RV32-NEXT: [[ICMP:%[0-9]+]]:_(<vscale x 16 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 16 x s8>), [[DEF]]
326 ; RV32-NEXT: $v8 = COPY [[ICMP]](<vscale x 16 x s1>)
327 ; RV32-NEXT: PseudoRET implicit $v8
329 ; RV64-LABEL: name: icmp_nxv16i8
330 ; RV64: [[DEF:%[0-9]+]]:_(<vscale x 16 x s8>) = G_IMPLICIT_DEF
331 ; RV64-NEXT: [[ICMP:%[0-9]+]]:_(<vscale x 16 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 16 x s8>), [[DEF]]
332 ; RV64-NEXT: $v8 = COPY [[ICMP]](<vscale x 16 x s1>)
333 ; RV64-NEXT: PseudoRET implicit $v8
334 %0:_(<vscale x 16 x s8>) = G_IMPLICIT_DEF
335 %1:_(<vscale x 16 x s1>) = G_ICMP intpred(sgt), %0, %0
336 $v8 = COPY %1(<vscale x 16 x s1>)
337 PseudoRET implicit $v8
342 tracksRegLiveness: true
345 ; RV32-LABEL: name: icmp_nxv32i8
346 ; RV32: [[DEF:%[0-9]+]]:_(<vscale x 32 x s8>) = G_IMPLICIT_DEF
347 ; RV32-NEXT: [[ICMP:%[0-9]+]]:_(<vscale x 32 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 32 x s8>), [[DEF]]
348 ; RV32-NEXT: $v8 = COPY [[ICMP]](<vscale x 32 x s1>)
349 ; RV32-NEXT: PseudoRET implicit $v8
351 ; RV64-LABEL: name: icmp_nxv32i8
352 ; RV64: [[DEF:%[0-9]+]]:_(<vscale x 32 x s8>) = G_IMPLICIT_DEF
353 ; RV64-NEXT: [[ICMP:%[0-9]+]]:_(<vscale x 32 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 32 x s8>), [[DEF]]
354 ; RV64-NEXT: $v8 = COPY [[ICMP]](<vscale x 32 x s1>)
355 ; RV64-NEXT: PseudoRET implicit $v8
356 %0:_(<vscale x 32 x s8>) = G_IMPLICIT_DEF
357 %1:_(<vscale x 32 x s1>) = G_ICMP intpred(sgt), %0, %0
358 $v8 = COPY %1(<vscale x 32 x s1>)
359 PseudoRET implicit $v8
364 tracksRegLiveness: true
367 ; RV32-LABEL: name: icmp_nxv64i8
368 ; RV32: [[DEF:%[0-9]+]]:_(<vscale x 64 x s8>) = G_IMPLICIT_DEF
369 ; RV32-NEXT: [[ICMP:%[0-9]+]]:_(<vscale x 64 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 64 x s8>), [[DEF]]
370 ; RV32-NEXT: $v8 = COPY [[ICMP]](<vscale x 64 x s1>)
371 ; RV32-NEXT: PseudoRET implicit $v8
373 ; RV64-LABEL: name: icmp_nxv64i8
374 ; RV64: [[DEF:%[0-9]+]]:_(<vscale x 64 x s8>) = G_IMPLICIT_DEF
375 ; RV64-NEXT: [[ICMP:%[0-9]+]]:_(<vscale x 64 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 64 x s8>), [[DEF]]
376 ; RV64-NEXT: $v8 = COPY [[ICMP]](<vscale x 64 x s1>)
377 ; RV64-NEXT: PseudoRET implicit $v8
378 %0:_(<vscale x 64 x s8>) = G_IMPLICIT_DEF
379 %1:_(<vscale x 64 x s1>) = G_ICMP intpred(sgt), %0, %0
380 $v8 = COPY %1(<vscale x 64 x s1>)
381 PseudoRET implicit $v8
386 tracksRegLiveness: true
389 ; RV32-LABEL: name: icmp_nxv1i16
390 ; RV32: [[DEF:%[0-9]+]]:_(<vscale x 1 x s16>) = G_IMPLICIT_DEF
391 ; RV32-NEXT: [[ICMP:%[0-9]+]]:_(<vscale x 1 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 1 x s16>), [[DEF]]
392 ; RV32-NEXT: $v8 = COPY [[ICMP]](<vscale x 1 x s1>)
393 ; RV32-NEXT: PseudoRET implicit $v8
395 ; RV64-LABEL: name: icmp_nxv1i16
396 ; RV64: [[DEF:%[0-9]+]]:_(<vscale x 1 x s16>) = G_IMPLICIT_DEF
397 ; RV64-NEXT: [[ICMP:%[0-9]+]]:_(<vscale x 1 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 1 x s16>), [[DEF]]
398 ; RV64-NEXT: $v8 = COPY [[ICMP]](<vscale x 1 x s1>)
399 ; RV64-NEXT: PseudoRET implicit $v8
400 %0:_(<vscale x 1 x s16>) = G_IMPLICIT_DEF
401 %1:_(<vscale x 1 x s1>) = G_ICMP intpred(sgt), %0, %0
402 $v8 = COPY %1(<vscale x 1 x s1>)
403 PseudoRET implicit $v8
408 tracksRegLiveness: true
411 ; RV32-LABEL: name: icmp_nxv2i16
412 ; RV32: [[DEF:%[0-9]+]]:_(<vscale x 2 x s16>) = G_IMPLICIT_DEF
413 ; RV32-NEXT: [[ICMP:%[0-9]+]]:_(<vscale x 2 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 2 x s16>), [[DEF]]
414 ; RV32-NEXT: $v8 = COPY [[ICMP]](<vscale x 2 x s1>)
415 ; RV32-NEXT: PseudoRET implicit $v8
417 ; RV64-LABEL: name: icmp_nxv2i16
418 ; RV64: [[DEF:%[0-9]+]]:_(<vscale x 2 x s16>) = G_IMPLICIT_DEF
419 ; RV64-NEXT: [[ICMP:%[0-9]+]]:_(<vscale x 2 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 2 x s16>), [[DEF]]
420 ; RV64-NEXT: $v8 = COPY [[ICMP]](<vscale x 2 x s1>)
421 ; RV64-NEXT: PseudoRET implicit $v8
422 %0:_(<vscale x 2 x s16>) = G_IMPLICIT_DEF
423 %1:_(<vscale x 2 x s1>) = G_ICMP intpred(sgt), %0, %0
424 $v8 = COPY %1(<vscale x 2 x s1>)
425 PseudoRET implicit $v8
430 tracksRegLiveness: true
433 ; RV32-LABEL: name: icmp_nxv4i16
434 ; RV32: [[DEF:%[0-9]+]]:_(<vscale x 4 x s16>) = G_IMPLICIT_DEF
435 ; RV32-NEXT: [[ICMP:%[0-9]+]]:_(<vscale x 4 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 4 x s16>), [[DEF]]
436 ; RV32-NEXT: $v8 = COPY [[ICMP]](<vscale x 4 x s1>)
437 ; RV32-NEXT: PseudoRET implicit $v8
439 ; RV64-LABEL: name: icmp_nxv4i16
440 ; RV64: [[DEF:%[0-9]+]]:_(<vscale x 4 x s16>) = G_IMPLICIT_DEF
441 ; RV64-NEXT: [[ICMP:%[0-9]+]]:_(<vscale x 4 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 4 x s16>), [[DEF]]
442 ; RV64-NEXT: $v8 = COPY [[ICMP]](<vscale x 4 x s1>)
443 ; RV64-NEXT: PseudoRET implicit $v8
444 %0:_(<vscale x 4 x s16>) = G_IMPLICIT_DEF
445 %1:_(<vscale x 4 x s1>) = G_ICMP intpred(sgt), %0, %0
446 $v8 = COPY %1(<vscale x 4 x s1>)
447 PseudoRET implicit $v8
452 tracksRegLiveness: true
455 ; RV32-LABEL: name: icmp_nxv8i16
456 ; RV32: [[DEF:%[0-9]+]]:_(<vscale x 8 x s16>) = G_IMPLICIT_DEF
457 ; RV32-NEXT: [[ICMP:%[0-9]+]]:_(<vscale x 8 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 8 x s16>), [[DEF]]
458 ; RV32-NEXT: $v8 = COPY [[ICMP]](<vscale x 8 x s1>)
459 ; RV32-NEXT: PseudoRET implicit $v8
461 ; RV64-LABEL: name: icmp_nxv8i16
462 ; RV64: [[DEF:%[0-9]+]]:_(<vscale x 8 x s16>) = G_IMPLICIT_DEF
463 ; RV64-NEXT: [[ICMP:%[0-9]+]]:_(<vscale x 8 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 8 x s16>), [[DEF]]
464 ; RV64-NEXT: $v8 = COPY [[ICMP]](<vscale x 8 x s1>)
465 ; RV64-NEXT: PseudoRET implicit $v8
466 %0:_(<vscale x 8 x s16>) = G_IMPLICIT_DEF
467 %1:_(<vscale x 8 x s1>) = G_ICMP intpred(sgt), %0, %0
468 $v8 = COPY %1(<vscale x 8 x s1>)
469 PseudoRET implicit $v8
474 tracksRegLiveness: true
477 ; RV32-LABEL: name: icmp_nxv16i16
478 ; RV32: [[DEF:%[0-9]+]]:_(<vscale x 16 x s16>) = G_IMPLICIT_DEF
479 ; RV32-NEXT: [[ICMP:%[0-9]+]]:_(<vscale x 16 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 16 x s16>), [[DEF]]
480 ; RV32-NEXT: $v8 = COPY [[ICMP]](<vscale x 16 x s1>)
481 ; RV32-NEXT: PseudoRET implicit $v8
483 ; RV64-LABEL: name: icmp_nxv16i16
484 ; RV64: [[DEF:%[0-9]+]]:_(<vscale x 16 x s16>) = G_IMPLICIT_DEF
485 ; RV64-NEXT: [[ICMP:%[0-9]+]]:_(<vscale x 16 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 16 x s16>), [[DEF]]
486 ; RV64-NEXT: $v8 = COPY [[ICMP]](<vscale x 16 x s1>)
487 ; RV64-NEXT: PseudoRET implicit $v8
488 %0:_(<vscale x 16 x s16>) = G_IMPLICIT_DEF
489 %1:_(<vscale x 16 x s1>) = G_ICMP intpred(sgt), %0, %0
490 $v8 = COPY %1(<vscale x 16 x s1>)
491 PseudoRET implicit $v8
496 tracksRegLiveness: true
499 ; RV32-LABEL: name: icmp_nxv32i16
500 ; RV32: [[DEF:%[0-9]+]]:_(<vscale x 32 x s16>) = G_IMPLICIT_DEF
501 ; RV32-NEXT: [[ICMP:%[0-9]+]]:_(<vscale x 32 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 32 x s16>), [[DEF]]
502 ; RV32-NEXT: $v8 = COPY [[ICMP]](<vscale x 32 x s1>)
503 ; RV32-NEXT: PseudoRET implicit $v8
505 ; RV64-LABEL: name: icmp_nxv32i16
506 ; RV64: [[DEF:%[0-9]+]]:_(<vscale x 32 x s16>) = G_IMPLICIT_DEF
507 ; RV64-NEXT: [[ICMP:%[0-9]+]]:_(<vscale x 32 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 32 x s16>), [[DEF]]
508 ; RV64-NEXT: $v8 = COPY [[ICMP]](<vscale x 32 x s1>)
509 ; RV64-NEXT: PseudoRET implicit $v8
510 %0:_(<vscale x 32 x s16>) = G_IMPLICIT_DEF
511 %1:_(<vscale x 32 x s1>) = G_ICMP intpred(sgt), %0, %0
512 $v8 = COPY %1(<vscale x 32 x s1>)
513 PseudoRET implicit $v8
518 tracksRegLiveness: true
521 ; RV32-LABEL: name: icmp_nxv1i32
522 ; RV32: [[DEF:%[0-9]+]]:_(<vscale x 1 x s32>) = G_IMPLICIT_DEF
523 ; RV32-NEXT: [[ICMP:%[0-9]+]]:_(<vscale x 1 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 1 x s32>), [[DEF]]
524 ; RV32-NEXT: $v8 = COPY [[ICMP]](<vscale x 1 x s1>)
525 ; RV32-NEXT: PseudoRET implicit $v8
527 ; RV64-LABEL: name: icmp_nxv1i32
528 ; RV64: [[DEF:%[0-9]+]]:_(<vscale x 1 x s32>) = G_IMPLICIT_DEF
529 ; RV64-NEXT: [[ICMP:%[0-9]+]]:_(<vscale x 1 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 1 x s32>), [[DEF]]
530 ; RV64-NEXT: $v8 = COPY [[ICMP]](<vscale x 1 x s1>)
531 ; RV64-NEXT: PseudoRET implicit $v8
532 %0:_(<vscale x 1 x s32>) = G_IMPLICIT_DEF
533 %1:_(<vscale x 1 x s1>) = G_ICMP intpred(sgt), %0, %0
534 $v8 = COPY %1(<vscale x 1 x s1>)
535 PseudoRET implicit $v8
540 tracksRegLiveness: true
543 ; RV32-LABEL: name: icmp_nxv2i32
544 ; RV32: [[DEF:%[0-9]+]]:_(<vscale x 2 x s32>) = G_IMPLICIT_DEF
545 ; RV32-NEXT: [[ICMP:%[0-9]+]]:_(<vscale x 2 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 2 x s32>), [[DEF]]
546 ; RV32-NEXT: $v8 = COPY [[ICMP]](<vscale x 2 x s1>)
547 ; RV32-NEXT: PseudoRET implicit $v8
549 ; RV64-LABEL: name: icmp_nxv2i32
550 ; RV64: [[DEF:%[0-9]+]]:_(<vscale x 2 x s32>) = G_IMPLICIT_DEF
551 ; RV64-NEXT: [[ICMP:%[0-9]+]]:_(<vscale x 2 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 2 x s32>), [[DEF]]
552 ; RV64-NEXT: $v8 = COPY [[ICMP]](<vscale x 2 x s1>)
553 ; RV64-NEXT: PseudoRET implicit $v8
554 %0:_(<vscale x 2 x s32>) = G_IMPLICIT_DEF
555 %1:_(<vscale x 2 x s1>) = G_ICMP intpred(sgt), %0, %0
556 $v8 = COPY %1(<vscale x 2 x s1>)
557 PseudoRET implicit $v8
562 tracksRegLiveness: true
565 ; RV32-LABEL: name: icmp_nxv4i32
566 ; RV32: [[DEF:%[0-9]+]]:_(<vscale x 4 x s32>) = G_IMPLICIT_DEF
567 ; RV32-NEXT: [[ICMP:%[0-9]+]]:_(<vscale x 4 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 4 x s32>), [[DEF]]
568 ; RV32-NEXT: $v8 = COPY [[ICMP]](<vscale x 4 x s1>)
569 ; RV32-NEXT: PseudoRET implicit $v8
571 ; RV64-LABEL: name: icmp_nxv4i32
572 ; RV64: [[DEF:%[0-9]+]]:_(<vscale x 4 x s32>) = G_IMPLICIT_DEF
573 ; RV64-NEXT: [[ICMP:%[0-9]+]]:_(<vscale x 4 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 4 x s32>), [[DEF]]
574 ; RV64-NEXT: $v8 = COPY [[ICMP]](<vscale x 4 x s1>)
575 ; RV64-NEXT: PseudoRET implicit $v8
576 %0:_(<vscale x 4 x s32>) = G_IMPLICIT_DEF
577 %1:_(<vscale x 4 x s1>) = G_ICMP intpred(sgt), %0, %0
578 $v8 = COPY %1(<vscale x 4 x s1>)
579 PseudoRET implicit $v8
584 tracksRegLiveness: true
587 ; RV32-LABEL: name: icmp_nxv8i32
588 ; RV32: [[DEF:%[0-9]+]]:_(<vscale x 8 x s32>) = G_IMPLICIT_DEF
589 ; RV32-NEXT: [[ICMP:%[0-9]+]]:_(<vscale x 8 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 8 x s32>), [[DEF]]
590 ; RV32-NEXT: $v8 = COPY [[ICMP]](<vscale x 8 x s1>)
591 ; RV32-NEXT: PseudoRET implicit $v8
593 ; RV64-LABEL: name: icmp_nxv8i32
594 ; RV64: [[DEF:%[0-9]+]]:_(<vscale x 8 x s32>) = G_IMPLICIT_DEF
595 ; RV64-NEXT: [[ICMP:%[0-9]+]]:_(<vscale x 8 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 8 x s32>), [[DEF]]
596 ; RV64-NEXT: $v8 = COPY [[ICMP]](<vscale x 8 x s1>)
597 ; RV64-NEXT: PseudoRET implicit $v8
598 %0:_(<vscale x 8 x s32>) = G_IMPLICIT_DEF
599 %1:_(<vscale x 8 x s1>) = G_ICMP intpred(sgt), %0, %0
600 $v8 = COPY %1(<vscale x 8 x s1>)
601 PseudoRET implicit $v8
606 tracksRegLiveness: true
609 ; RV32-LABEL: name: icmp_nxv16i32
610 ; RV32: [[DEF:%[0-9]+]]:_(<vscale x 16 x s32>) = G_IMPLICIT_DEF
611 ; RV32-NEXT: [[ICMP:%[0-9]+]]:_(<vscale x 16 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 16 x s32>), [[DEF]]
612 ; RV32-NEXT: $v8 = COPY [[ICMP]](<vscale x 16 x s1>)
613 ; RV32-NEXT: PseudoRET implicit $v8
615 ; RV64-LABEL: name: icmp_nxv16i32
616 ; RV64: [[DEF:%[0-9]+]]:_(<vscale x 16 x s32>) = G_IMPLICIT_DEF
617 ; RV64-NEXT: [[ICMP:%[0-9]+]]:_(<vscale x 16 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 16 x s32>), [[DEF]]
618 ; RV64-NEXT: $v8 = COPY [[ICMP]](<vscale x 16 x s1>)
619 ; RV64-NEXT: PseudoRET implicit $v8
620 %0:_(<vscale x 16 x s32>) = G_IMPLICIT_DEF
621 %1:_(<vscale x 16 x s1>) = G_ICMP intpred(sgt), %0, %0
622 $v8 = COPY %1(<vscale x 16 x s1>)
623 PseudoRET implicit $v8
628 tracksRegLiveness: true
631 ; RV32-LABEL: name: icmp_nxv1i64
632 ; RV32: [[DEF:%[0-9]+]]:_(<vscale x 1 x s64>) = G_IMPLICIT_DEF
633 ; RV32-NEXT: [[ICMP:%[0-9]+]]:_(<vscale x 1 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 1 x s64>), [[DEF]]
634 ; RV32-NEXT: $v8 = COPY [[ICMP]](<vscale x 1 x s1>)
635 ; RV32-NEXT: PseudoRET implicit $v8
637 ; RV64-LABEL: name: icmp_nxv1i64
638 ; RV64: [[DEF:%[0-9]+]]:_(<vscale x 1 x s64>) = G_IMPLICIT_DEF
639 ; RV64-NEXT: [[ICMP:%[0-9]+]]:_(<vscale x 1 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 1 x s64>), [[DEF]]
640 ; RV64-NEXT: $v8 = COPY [[ICMP]](<vscale x 1 x s1>)
641 ; RV64-NEXT: PseudoRET implicit $v8
642 %0:_(<vscale x 1 x s64>) = G_IMPLICIT_DEF
643 %1:_(<vscale x 1 x s1>) = G_ICMP intpred(sgt), %0, %0
644 $v8 = COPY %1(<vscale x 1 x s1>)
645 PseudoRET implicit $v8
650 tracksRegLiveness: true
653 ; RV32-LABEL: name: icmp_nxv2i64
654 ; RV32: [[DEF:%[0-9]+]]:_(<vscale x 2 x s64>) = G_IMPLICIT_DEF
655 ; RV32-NEXT: [[ICMP:%[0-9]+]]:_(<vscale x 2 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 2 x s64>), [[DEF]]
656 ; RV32-NEXT: $v8 = COPY [[ICMP]](<vscale x 2 x s1>)
657 ; RV32-NEXT: PseudoRET implicit $v8
659 ; RV64-LABEL: name: icmp_nxv2i64
660 ; RV64: [[DEF:%[0-9]+]]:_(<vscale x 2 x s64>) = G_IMPLICIT_DEF
661 ; RV64-NEXT: [[ICMP:%[0-9]+]]:_(<vscale x 2 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 2 x s64>), [[DEF]]
662 ; RV64-NEXT: $v8 = COPY [[ICMP]](<vscale x 2 x s1>)
663 ; RV64-NEXT: PseudoRET implicit $v8
664 %0:_(<vscale x 2 x s64>) = G_IMPLICIT_DEF
665 %1:_(<vscale x 2 x s1>) = G_ICMP intpred(sgt), %0, %0
666 $v8 = COPY %1(<vscale x 2 x s1>)
667 PseudoRET implicit $v8
672 tracksRegLiveness: true
675 ; RV32-LABEL: name: icmp_nxv4i64
676 ; RV32: [[DEF:%[0-9]+]]:_(<vscale x 4 x s64>) = G_IMPLICIT_DEF
677 ; RV32-NEXT: [[ICMP:%[0-9]+]]:_(<vscale x 4 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 4 x s64>), [[DEF]]
678 ; RV32-NEXT: $v8 = COPY [[ICMP]](<vscale x 4 x s1>)
679 ; RV32-NEXT: PseudoRET implicit $v8
681 ; RV64-LABEL: name: icmp_nxv4i64
682 ; RV64: [[DEF:%[0-9]+]]:_(<vscale x 4 x s64>) = G_IMPLICIT_DEF
683 ; RV64-NEXT: [[ICMP:%[0-9]+]]:_(<vscale x 4 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 4 x s64>), [[DEF]]
684 ; RV64-NEXT: $v8 = COPY [[ICMP]](<vscale x 4 x s1>)
685 ; RV64-NEXT: PseudoRET implicit $v8
686 %0:_(<vscale x 4 x s64>) = G_IMPLICIT_DEF
687 %1:_(<vscale x 4 x s1>) = G_ICMP intpred(sgt), %0, %0
688 $v8 = COPY %1(<vscale x 4 x s1>)
689 PseudoRET implicit $v8
694 tracksRegLiveness: true
697 ; RV32-LABEL: name: icmp_nxv8i64
698 ; RV32: [[DEF:%[0-9]+]]:_(<vscale x 8 x s64>) = G_IMPLICIT_DEF
699 ; RV32-NEXT: [[ICMP:%[0-9]+]]:_(<vscale x 8 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 8 x s64>), [[DEF]]
700 ; RV32-NEXT: $v8 = COPY [[ICMP]](<vscale x 8 x s1>)
701 ; RV32-NEXT: PseudoRET implicit $v8
703 ; RV64-LABEL: name: icmp_nxv8i64
704 ; RV64: [[DEF:%[0-9]+]]:_(<vscale x 8 x s64>) = G_IMPLICIT_DEF
705 ; RV64-NEXT: [[ICMP:%[0-9]+]]:_(<vscale x 8 x s1>) = G_ICMP intpred(sgt), [[DEF]](<vscale x 8 x s64>), [[DEF]]
706 ; RV64-NEXT: $v8 = COPY [[ICMP]](<vscale x 8 x s1>)
707 ; RV64-NEXT: PseudoRET implicit $v8
708 %0:_(<vscale x 8 x s64>) = G_IMPLICIT_DEF
709 %1:_(<vscale x 8 x s1>) = G_ICMP intpred(sgt), %0, %0
710 $v8 = COPY %1(<vscale x 8 x s1>)
711 PseudoRET implicit $v8