[X86] IsNOT - don't fold not(pcmpgt(C1, C2)) -> pcmpgt(C2, C1 - 1)
[llvm-project.git] / llvm / test / CodeGen / RISCV / GlobalISel / legalizer / rvv / legalize-implicit-def.mir
blob8ee40861ce028e61e240cddadb23cb496a07d887
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 %s
3 # RUN: llc -mtriple=riscv64 -mattr=+v -run-pass=legalizer %s -o - | FileCheck %s
5 ---
6 name:            implicitdef_nxv1i1
7 legalized:       false
8 tracksRegLiveness: true
9 body:             |
10   bb.0.entry:
11     ; CHECK-LABEL: name: implicitdef_nxv1i1
12     ; CHECK: [[DEF:%[0-9]+]]:_(<vscale x 1 x s1>) = G_IMPLICIT_DEF
13     ; CHECK-NEXT: $v8 = COPY [[DEF]](<vscale x 1 x s1>)
14     ; CHECK-NEXT: PseudoRET implicit $v8
15     %0:_(<vscale x 1 x s1>) = G_IMPLICIT_DEF
16     $v8 = COPY %0(<vscale x 1 x s1>)
17     PseudoRET implicit $v8
18 ...
19 ---
20 name:            implicitdef_nxv2i1
21 legalized:       false
22 tracksRegLiveness: true
23 body:             |
24   bb.0.entry:
25     ; CHECK-LABEL: name: implicitdef_nxv2i1
26     ; CHECK: [[DEF:%[0-9]+]]:_(<vscale x 2 x s1>) = G_IMPLICIT_DEF
27     ; CHECK-NEXT: $v8 = COPY [[DEF]](<vscale x 2 x s1>)
28     ; CHECK-NEXT: PseudoRET implicit $v8
29     %0:_(<vscale x 2 x s1>) = G_IMPLICIT_DEF
30     $v8 = COPY %0(<vscale x 2 x s1>)
31     PseudoRET implicit $v8
32 ...
33 ---
34 name:            implicitdef_nxv4i1
35 legalized:       false
36 tracksRegLiveness: true
37 body:             |
38   bb.0.entry:
39     ; CHECK-LABEL: name: implicitdef_nxv4i1
40     ; CHECK: [[DEF:%[0-9]+]]:_(<vscale x 4 x s1>) = G_IMPLICIT_DEF
41     ; CHECK-NEXT: $v8 = COPY [[DEF]](<vscale x 4 x s1>)
42     ; CHECK-NEXT: PseudoRET implicit $v8
43     %0:_(<vscale x 4 x s1>) = G_IMPLICIT_DEF
44     $v8 = COPY %0(<vscale x 4 x s1>)
45     PseudoRET implicit $v8
46 ...
47 ---
48 name:            implicitdef_nxv8i1
49 legalized:       false
50 tracksRegLiveness: true
51 body:             |
52   bb.0.entry:
53     ; CHECK-LABEL: name: implicitdef_nxv8i1
54     ; CHECK: [[DEF:%[0-9]+]]:_(<vscale x 8 x s1>) = G_IMPLICIT_DEF
55     ; CHECK-NEXT: $v8 = COPY [[DEF]](<vscale x 8 x s1>)
56     ; CHECK-NEXT: PseudoRET implicit $v8
57     %0:_(<vscale x 8 x s1>) = G_IMPLICIT_DEF
58     $v8 = COPY %0(<vscale x 8 x s1>)
59     PseudoRET implicit $v8
60 ...
61 ---
62 name:            implicitdef_nxv16i1
63 legalized:       false
64 tracksRegLiveness: true
65 body:             |
66   bb.0.entry:
67     ; CHECK-LABEL: name: implicitdef_nxv16i1
68     ; CHECK: [[DEF:%[0-9]+]]:_(<vscale x 16 x s1>) = G_IMPLICIT_DEF
69     ; CHECK-NEXT: $v8 = COPY [[DEF]](<vscale x 16 x s1>)
70     ; CHECK-NEXT: PseudoRET implicit $v8
71     %0:_(<vscale x 16 x s1>) = G_IMPLICIT_DEF
72     $v8 = COPY %0(<vscale x 16 x s1>)
73     PseudoRET implicit $v8
74 ...
75 ---
76 name:            implicitdef_nxv32i1
77 legalized:       false
78 tracksRegLiveness: true
79 body:             |
80   bb.0.entry:
81     ; CHECK-LABEL: name: implicitdef_nxv32i1
82     ; CHECK: [[DEF:%[0-9]+]]:_(<vscale x 32 x s1>) = G_IMPLICIT_DEF
83     ; CHECK-NEXT: $v8 = COPY [[DEF]](<vscale x 32 x s1>)
84     ; CHECK-NEXT: PseudoRET implicit $v8
85     %0:_(<vscale x 32 x s1>) = G_IMPLICIT_DEF
86     $v8 = COPY %0(<vscale x 32 x s1>)
87     PseudoRET implicit $v8
88 ...
89 ---
90 name:            implicitdef_nxv64i1
91 legalized:       false
92 tracksRegLiveness: true
93 body:             |
94   bb.0.entry:
95     ; CHECK-LABEL: name: implicitdef_nxv64i1
96     ; CHECK: [[DEF:%[0-9]+]]:_(<vscale x 64 x s1>) = G_IMPLICIT_DEF
97     ; CHECK-NEXT: $v8 = COPY [[DEF]](<vscale x 64 x s1>)
98     ; CHECK-NEXT: PseudoRET implicit $v8
99     %0:_(<vscale x 64 x s1>) = G_IMPLICIT_DEF
100     $v8 = COPY %0(<vscale x 64 x s1>)
101     PseudoRET implicit $v8
104 name:            implicitdef_nxv1i8
105 legalized:       false
106 tracksRegLiveness: true
107 body:             |
108   bb.0.entry:
109     ; CHECK-LABEL: name: implicitdef_nxv1i8
110     ; CHECK: [[DEF:%[0-9]+]]:_(<vscale x 1 x s8>) = G_IMPLICIT_DEF
111     ; CHECK-NEXT: $v8 = COPY [[DEF]](<vscale x 1 x s8>)
112     ; CHECK-NEXT: PseudoRET implicit $v8
113     %0:_(<vscale x 1 x s8>) = G_IMPLICIT_DEF
114     $v8 = COPY %0(<vscale x 1 x s8>)
115     PseudoRET implicit $v8
118 name:            implicitdef_nxv2i8
119 legalized:       false
120 tracksRegLiveness: true
121 body:             |
122   bb.0.entry:
123     ; CHECK-LABEL: name: implicitdef_nxv2i8
124     ; CHECK: [[DEF:%[0-9]+]]:_(<vscale x 2 x s8>) = G_IMPLICIT_DEF
125     ; CHECK-NEXT: $v8 = COPY [[DEF]](<vscale x 2 x s8>)
126     ; CHECK-NEXT: PseudoRET implicit $v8
127     %0:_(<vscale x 2 x s8>) = G_IMPLICIT_DEF
128     $v8 = COPY %0(<vscale x 2 x s8>)
129     PseudoRET implicit $v8
132 name:            implicitdef_nxv4i8
133 legalized:       false
134 tracksRegLiveness: true
135 body:             |
136   bb.0.entry:
137     ; CHECK-LABEL: name: implicitdef_nxv4i8
138     ; CHECK: [[DEF:%[0-9]+]]:_(<vscale x 4 x s8>) = G_IMPLICIT_DEF
139     ; CHECK-NEXT: $v8 = COPY [[DEF]](<vscale x 4 x s8>)
140     ; CHECK-NEXT: PseudoRET implicit $v8
141     %0:_(<vscale x 4 x s8>) = G_IMPLICIT_DEF
142     $v8 = COPY %0(<vscale x 4 x s8>)
143     PseudoRET implicit $v8
146 name:            implicitdef_nxv8i8
147 legalized:       false
148 tracksRegLiveness: true
149 body:             |
150   bb.0.entry:
151     ; CHECK-LABEL: name: implicitdef_nxv8i8
152     ; CHECK: [[DEF:%[0-9]+]]:_(<vscale x 8 x s8>) = G_IMPLICIT_DEF
153     ; CHECK-NEXT: $v8 = COPY [[DEF]](<vscale x 8 x s8>)
154     ; CHECK-NEXT: PseudoRET implicit $v8
155     %0:_(<vscale x 8 x s8>) = G_IMPLICIT_DEF
156     $v8 = COPY %0(<vscale x 8 x s8>)
157     PseudoRET implicit $v8
160 name:            implicitdef_nxv16i8
161 legalized:       false
162 tracksRegLiveness: true
163 body:             |
164   bb.0.entry:
165     ; CHECK-LABEL: name: implicitdef_nxv16i8
166     ; CHECK: [[DEF:%[0-9]+]]:_(<vscale x 16 x s8>) = G_IMPLICIT_DEF
167     ; CHECK-NEXT: $v8m2 = COPY [[DEF]](<vscale x 16 x s8>)
168     ; CHECK-NEXT: PseudoRET implicit $v8m2
169     %0:_(<vscale x 16 x s8>) = G_IMPLICIT_DEF
170     $v8m2 = COPY %0(<vscale x 16 x s8>)
171     PseudoRET implicit $v8m2
174 name:            implicitdef_nxv32i8
175 legalized:       false
176 tracksRegLiveness: true
177 body:             |
178   bb.0.entry:
179     ; CHECK-LABEL: name: implicitdef_nxv32i8
180     ; CHECK: [[DEF:%[0-9]+]]:_(<vscale x 32 x s8>) = G_IMPLICIT_DEF
181     ; CHECK-NEXT: $v8m4 = COPY [[DEF]](<vscale x 32 x s8>)
182     ; CHECK-NEXT: PseudoRET implicit $v8m4
183     %0:_(<vscale x 32 x s8>) = G_IMPLICIT_DEF
184     $v8m4 = COPY %0(<vscale x 32 x s8>)
185     PseudoRET implicit $v8m4
188 name:            implicitdef_nxv64i8
189 legalized:       false
190 tracksRegLiveness: true
191 body:             |
192   bb.0.entry:
193     ; CHECK-LABEL: name: implicitdef_nxv64i8
194     ; CHECK: [[DEF:%[0-9]+]]:_(<vscale x 64 x s8>) = G_IMPLICIT_DEF
195     ; CHECK-NEXT: $v8m8 = COPY [[DEF]](<vscale x 64 x s8>)
196     ; CHECK-NEXT: PseudoRET implicit $v8m8
197     %0:_(<vscale x 64 x s8>) = G_IMPLICIT_DEF
198     $v8m8 = COPY %0(<vscale x 64 x s8>)
199     PseudoRET implicit $v8m8
202 name:            implicitdef_nxv1i16
203 legalized:       false
204 tracksRegLiveness: true
205 body:             |
206   bb.0.entry:
207     ; CHECK-LABEL: name: implicitdef_nxv1i16
208     ; CHECK: [[DEF:%[0-9]+]]:_(<vscale x 1 x s16>) = G_IMPLICIT_DEF
209     ; CHECK-NEXT: $v8 = COPY [[DEF]](<vscale x 1 x s16>)
210     ; CHECK-NEXT: PseudoRET implicit $v8
211     %0:_(<vscale x 1 x s16>) = G_IMPLICIT_DEF
212     $v8 = COPY %0(<vscale x 1 x s16>)
213     PseudoRET implicit $v8
216 name:            implicitdef_nxv2i16
217 legalized:       false
218 tracksRegLiveness: true
219 body:             |
220   bb.0.entry:
221     ; CHECK-LABEL: name: implicitdef_nxv2i16
222     ; CHECK: [[DEF:%[0-9]+]]:_(<vscale x 2 x s16>) = G_IMPLICIT_DEF
223     ; CHECK-NEXT: $v8 = COPY [[DEF]](<vscale x 2 x s16>)
224     ; CHECK-NEXT: PseudoRET implicit $v8
225     %0:_(<vscale x 2 x s16>) = G_IMPLICIT_DEF
226     $v8 = COPY %0(<vscale x 2 x s16>)
227     PseudoRET implicit $v8
230 name:            implicitdef_nxv4i16
231 legalized:       false
232 tracksRegLiveness: true
233 body:             |
234   bb.0.entry:
235     ; CHECK-LABEL: name: implicitdef_nxv4i16
236     ; CHECK: [[DEF:%[0-9]+]]:_(<vscale x 4 x s16>) = G_IMPLICIT_DEF
237     ; CHECK-NEXT: $v8 = COPY [[DEF]](<vscale x 4 x s16>)
238     ; CHECK-NEXT: PseudoRET implicit $v8
239     %0:_(<vscale x 4 x s16>) = G_IMPLICIT_DEF
240     $v8 = COPY %0(<vscale x 4 x s16>)
241     PseudoRET implicit $v8
244 name:            implicitdef_nxv8i16
245 legalized:       false
246 tracksRegLiveness: true
247 body:             |
248   bb.0.entry:
249     ; CHECK-LABEL: name: implicitdef_nxv8i16
250     ; CHECK: [[DEF:%[0-9]+]]:_(<vscale x 8 x s16>) = G_IMPLICIT_DEF
251     ; CHECK-NEXT: $v8m2 = COPY [[DEF]](<vscale x 8 x s16>)
252     ; CHECK-NEXT: PseudoRET implicit $v8m2
253     %0:_(<vscale x 8 x s16>) = G_IMPLICIT_DEF
254     $v8m2 = COPY %0(<vscale x 8 x s16>)
255     PseudoRET implicit $v8m2
258 name:            implicitdef_nxv16i16
259 legalized:       false
260 tracksRegLiveness: true
261 body:             |
262   bb.0.entry:
263     ; CHECK-LABEL: name: implicitdef_nxv16i16
264     ; CHECK: [[DEF:%[0-9]+]]:_(<vscale x 16 x s16>) = G_IMPLICIT_DEF
265     ; CHECK-NEXT: $v8m4 = COPY [[DEF]](<vscale x 16 x s16>)
266     ; CHECK-NEXT: PseudoRET implicit $v8m4
267     %0:_(<vscale x 16 x s16>) = G_IMPLICIT_DEF
268     $v8m4 = COPY %0(<vscale x 16 x s16>)
269     PseudoRET implicit $v8m4
272 name:            implicitdef_nxv32i16
273 legalized:       false
274 tracksRegLiveness: true
275 body:             |
276   bb.0.entry:
277     ; CHECK-LABEL: name: implicitdef_nxv32i16
278     ; CHECK: [[DEF:%[0-9]+]]:_(<vscale x 32 x s16>) = G_IMPLICIT_DEF
279     ; CHECK-NEXT: $v8m8 = COPY [[DEF]](<vscale x 32 x s16>)
280     ; CHECK-NEXT: PseudoRET implicit $v8m8
281     %0:_(<vscale x 32 x s16>) = G_IMPLICIT_DEF
282     $v8m8 = COPY %0(<vscale x 32 x s16>)
283     PseudoRET implicit $v8m8
286 name:            implicitdef_nxv1i32
287 legalized:       false
288 tracksRegLiveness: true
289 body:             |
290   bb.0.entry:
291     ; CHECK-LABEL: name: implicitdef_nxv1i32
292     ; CHECK: [[DEF:%[0-9]+]]:_(<vscale x 1 x s32>) = G_IMPLICIT_DEF
293     ; CHECK-NEXT: $v8 = COPY [[DEF]](<vscale x 1 x s32>)
294     ; CHECK-NEXT: PseudoRET implicit $v8
295     %0:_(<vscale x 1 x s32>) = G_IMPLICIT_DEF
296     $v8 = COPY %0(<vscale x 1 x s32>)
297     PseudoRET implicit $v8
300 name:            implicitdef_nxv2i32
301 legalized:       false
302 tracksRegLiveness: true
303 body:             |
304   bb.0.entry:
305     ; CHECK-LABEL: name: implicitdef_nxv2i32
306     ; CHECK: [[DEF:%[0-9]+]]:_(<vscale x 2 x s32>) = G_IMPLICIT_DEF
307     ; CHECK-NEXT: $v8 = COPY [[DEF]](<vscale x 2 x s32>)
308     ; CHECK-NEXT: PseudoRET implicit $v8
309     %0:_(<vscale x 2 x s32>) = G_IMPLICIT_DEF
310     $v8 = COPY %0(<vscale x 2 x s32>)
311     PseudoRET implicit $v8
314 name:            implicitdef_nxv4i32
315 legalized:       false
316 tracksRegLiveness: true
317 body:             |
318   bb.0.entry:
319     ; CHECK-LABEL: name: implicitdef_nxv4i32
320     ; CHECK: [[DEF:%[0-9]+]]:_(<vscale x 4 x s32>) = G_IMPLICIT_DEF
321     ; CHECK-NEXT: $v8m2 = COPY [[DEF]](<vscale x 4 x s32>)
322     ; CHECK-NEXT: PseudoRET implicit $v8m2
323     %0:_(<vscale x 4 x s32>) = G_IMPLICIT_DEF
324     $v8m2 = COPY %0(<vscale x 4 x s32>)
325     PseudoRET implicit $v8m2
328 name:            implicitdef_nxv8i32
329 legalized:       false
330 tracksRegLiveness: true
331 body:             |
332   bb.0.entry:
333     ; CHECK-LABEL: name: implicitdef_nxv8i32
334     ; CHECK: [[DEF:%[0-9]+]]:_(<vscale x 8 x s32>) = G_IMPLICIT_DEF
335     ; CHECK-NEXT: $v8m4 = COPY [[DEF]](<vscale x 8 x s32>)
336     ; CHECK-NEXT: PseudoRET implicit $v8m4
337     %0:_(<vscale x 8 x s32>) = G_IMPLICIT_DEF
338     $v8m4 = COPY %0(<vscale x 8 x s32>)
339     PseudoRET implicit $v8m4
342 name:            implicitdef_nxv16i32
343 legalized:       false
344 tracksRegLiveness: true
345 body:             |
346   bb.0.entry:
347     ; CHECK-LABEL: name: implicitdef_nxv16i32
348     ; CHECK: [[DEF:%[0-9]+]]:_(<vscale x 16 x s32>) = G_IMPLICIT_DEF
349     ; CHECK-NEXT: $v8m8 = COPY [[DEF]](<vscale x 16 x s32>)
350     ; CHECK-NEXT: PseudoRET implicit $v8m8
351     %0:_(<vscale x 16 x s32>) = G_IMPLICIT_DEF
352     $v8m8 = COPY %0(<vscale x 16 x s32>)
353     PseudoRET implicit $v8m8
356 name:            implicitdef_nxv1i64
357 legalized:       false
358 tracksRegLiveness: true
359 body:             |
360   bb.0.entry:
361     ; CHECK-LABEL: name: implicitdef_nxv1i64
362     ; CHECK: [[DEF:%[0-9]+]]:_(<vscale x 1 x s64>) = G_IMPLICIT_DEF
363     ; CHECK-NEXT: $v8 = COPY [[DEF]](<vscale x 1 x s64>)
364     ; CHECK-NEXT: PseudoRET implicit $v8
365     %0:_(<vscale x 1 x s64>) = G_IMPLICIT_DEF
366     $v8 = COPY %0(<vscale x 1 x s64>)
367     PseudoRET implicit $v8
370 name:            implicitdef_nxv2i64
371 legalized:       false
372 tracksRegLiveness: true
373 body:             |
374   bb.0.entry:
375     ; CHECK-LABEL: name: implicitdef_nxv2i64
376     ; CHECK: [[DEF:%[0-9]+]]:_(<vscale x 2 x s64>) = G_IMPLICIT_DEF
377     ; CHECK-NEXT: $v8m2 = COPY [[DEF]](<vscale x 2 x s64>)
378     ; CHECK-NEXT: PseudoRET implicit $v8m2
379     %0:_(<vscale x 2 x s64>) = G_IMPLICIT_DEF
380     $v8m2 = COPY %0(<vscale x 2 x s64>)
381     PseudoRET implicit $v8m2
384 name:            implicitdef_nxv4i64
385 legalized:       false
386 tracksRegLiveness: true
387 body:             |
388   bb.0.entry:
389     ; CHECK-LABEL: name: implicitdef_nxv4i64
390     ; CHECK: [[DEF:%[0-9]+]]:_(<vscale x 4 x s64>) = G_IMPLICIT_DEF
391     ; CHECK-NEXT: $v8m4 = COPY [[DEF]](<vscale x 4 x s64>)
392     ; CHECK-NEXT: PseudoRET implicit $v8m4
393     %0:_(<vscale x 4 x s64>) = G_IMPLICIT_DEF
394     $v8m4 = COPY %0(<vscale x 4 x s64>)
395     PseudoRET implicit $v8m4
398 name:            implicitdef_nxv8i64
399 legalized:       false
400 tracksRegLiveness: true
401 body:             |
402   bb.0.entry:
403     ; CHECK-LABEL: name: implicitdef_nxv8i64
404     ; CHECK: [[DEF:%[0-9]+]]:_(<vscale x 8 x s64>) = G_IMPLICIT_DEF
405     ; CHECK-NEXT: $v8m8 = COPY [[DEF]](<vscale x 8 x s64>)
406     ; CHECK-NEXT: PseudoRET implicit $v8m8
407     %0:_(<vscale x 8 x s64>) = G_IMPLICIT_DEF
408     $v8m8 = COPY %0(<vscale x 8 x s64>)
409     PseudoRET implicit $v8m8