[LLVM][IR] Use splat syntax when printing ConstantExpr based splats. (#116856)
[llvm-project.git] / llvm / test / CodeGen / RISCV / GlobalISel / legalizer / rvv / legalize-icmp.mir
blob9a92f68a49ad9436a00b967f04a06e663f04d647
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
5 ---
6 name:            icmp_nxv1i1
7 legalized:       true
8 tracksRegLiveness: true
9 body:             |
10   bb.0.entry:
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
21     ;
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
36 ...
37 ---
38 name:            icmp_nxv2i1
39 legalized:       true
40 tracksRegLiveness: true
41 body:             |
42   bb.0.entry:
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
53     ;
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
68 ...
69 ---
70 name:            icmp_nxv4i1
71 legalized:       true
72 tracksRegLiveness: true
73 body:             |
74   bb.0.entry:
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
85     ;
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
102 name:            icmp_nxv8i1
103 legalized:       true
104 tracksRegLiveness: true
105 body:             |
106   bb.0.entry:
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
117     ;
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
134 name:            icmp_nxv16i1
135 legalized:       true
136 tracksRegLiveness: true
137 body:             |
138   bb.0.entry:
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
149     ;
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
166 name:            icmp_nxv32i1
167 legalized:       true
168 tracksRegLiveness: true
169 body:             |
170   bb.0.entry:
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
181     ;
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
198 name:            icmp_nxv64i1
199 legalized:       true
200 tracksRegLiveness: true
201 body:             |
202   bb.0.entry:
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
213     ;
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
230 name:            icmp_nxv1i8
231 legalized:       true
232 tracksRegLiveness: true
233 body:             |
234   bb.0.entry:
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
240     ;
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
252 name:            icmp_nxv2i8
253 legalized:       true
254 tracksRegLiveness: true
255 body:             |
256   bb.0.entry:
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
262     ;
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
274 name:            icmp_nxv4i8
275 legalized:       true
276 tracksRegLiveness: true
277 body:             |
278   bb.0.entry:
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
284     ;
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
296 name:            icmp_nxv8i8
297 legalized:       true
298 tracksRegLiveness: true
299 body:             |
300   bb.0.entry:
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
306     ;
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
318 name:            icmp_nxv16i8
319 legalized:       true
320 tracksRegLiveness: true
321 body:             |
322   bb.0.entry:
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
328     ;
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
340 name:            icmp_nxv32i8
341 legalized:       true
342 tracksRegLiveness: true
343 body:             |
344   bb.0.entry:
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
350     ;
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
362 name:            icmp_nxv64i8
363 legalized:       true
364 tracksRegLiveness: true
365 body:             |
366   bb.0.entry:
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
372     ;
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
384 name:            icmp_nxv1i16
385 legalized:       true
386 tracksRegLiveness: true
387 body:             |
388   bb.0.entry:
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
394     ;
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
406 name:            icmp_nxv2i16
407 legalized:       true
408 tracksRegLiveness: true
409 body:             |
410   bb.0.entry:
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
416     ;
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
428 name:            icmp_nxv4i16
429 legalized:       true
430 tracksRegLiveness: true
431 body:             |
432   bb.0.entry:
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
438     ;
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
450 name:            icmp_nxv8i16
451 legalized:       true
452 tracksRegLiveness: true
453 body:             |
454   bb.0.entry:
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
460     ;
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
472 name:            icmp_nxv16i16
473 legalized:       true
474 tracksRegLiveness: true
475 body:             |
476   bb.0.entry:
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
482     ;
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
494 name:            icmp_nxv32i16
495 legalized:       true
496 tracksRegLiveness: true
497 body:             |
498   bb.0.entry:
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
504     ;
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
516 name:            icmp_nxv1i32
517 legalized:       true
518 tracksRegLiveness: true
519 body:             |
520   bb.0.entry:
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
526     ;
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
538 name:            icmp_nxv2i32
539 legalized:       true
540 tracksRegLiveness: true
541 body:             |
542   bb.0.entry:
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
548     ;
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
560 name:            icmp_nxv4i32
561 legalized:       true
562 tracksRegLiveness: true
563 body:             |
564   bb.0.entry:
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
570     ;
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
582 name:            icmp_nxv8i32
583 legalized:       true
584 tracksRegLiveness: true
585 body:             |
586   bb.0.entry:
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
592     ;
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
604 name:            icmp_nxv16i32
605 legalized:       true
606 tracksRegLiveness: true
607 body:             |
608   bb.0.entry:
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
614     ;
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
626 name:            icmp_nxv1i64
627 legalized:       true
628 tracksRegLiveness: true
629 body:             |
630   bb.0.entry:
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
636     ;
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
648 name:            icmp_nxv2i64
649 legalized:       true
650 tracksRegLiveness: true
651 body:             |
652   bb.0.entry:
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
658     ;
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
670 name:            icmp_nxv4i64
671 legalized:       true
672 tracksRegLiveness: true
673 body:             |
674   bb.0.entry:
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
680     ;
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
692 name:            icmp_nxv8i64
693 legalized:       true
694 tracksRegLiveness: true
695 body:             |
696   bb.0.entry:
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
702     ;
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