[LLVM][IR] Use splat syntax when printing ConstantExpr based splats. (#116856)
[llvm-project.git] / llvm / test / CodeGen / RISCV / GlobalISel / regbankselect / rvv / splatvector-rv32.mir
blob38d3e83c6dbc4a30aa92c2cc7baffc4f69534b64
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 5
2 # RUN: llc -mtriple=riscv32 -mattr=+m,+v -run-pass=regbankselect \
3 # RUN:   -simplify-mir -verify-machineinstrs %s \
4 # RUN:   -o - | FileCheck %s
6 ---
7 name:            splat_zero_nxv1i8
8 legalized:       true
9 regBankSelected: false
10 body:             |
11   bb.1:
12     ; CHECK-LABEL: name: splat_zero_nxv1i8
13     ; CHECK: [[C:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 0
14     ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:vrb(<vscale x 1 x s8>) = G_SPLAT_VECTOR [[C]](s32)
15     ; CHECK-NEXT: $v8 = COPY [[SPLAT_VECTOR]](<vscale x 1 x s8>)
16     ; CHECK-NEXT: PseudoRET implicit $v8
17     %3:_(s32) = G_CONSTANT i32 0
18     %0:_(<vscale x 1 x s8>) = G_SPLAT_VECTOR %3(s32)
19     $v8 = COPY %0(<vscale x 1 x s8>)
20     PseudoRET implicit $v8
22 ...
23 ---
24 name:            splat_zero_nxv2i8
25 legalized:       true
26 regBankSelected: false
27 body:             |
28   bb.1:
29     ; CHECK-LABEL: name: splat_zero_nxv2i8
30     ; CHECK: [[C:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 0
31     ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:vrb(<vscale x 2 x s8>) = G_SPLAT_VECTOR [[C]](s32)
32     ; CHECK-NEXT: $v8 = COPY [[SPLAT_VECTOR]](<vscale x 2 x s8>)
33     ; CHECK-NEXT: PseudoRET implicit $v8
34     %3:_(s32) = G_CONSTANT i32 0
35     %0:_(<vscale x 2 x s8>) = G_SPLAT_VECTOR %3(s32)
36     $v8 = COPY %0(<vscale x 2 x s8>)
37     PseudoRET implicit $v8
39 ...
40 ---
41 name:            splat_zero_nxv4i8
42 legalized:       true
43 regBankSelected: false
44 body:             |
45   bb.1:
46     ; CHECK-LABEL: name: splat_zero_nxv4i8
47     ; CHECK: [[C:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 0
48     ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:vrb(<vscale x 4 x s8>) = G_SPLAT_VECTOR [[C]](s32)
49     ; CHECK-NEXT: $v8 = COPY [[SPLAT_VECTOR]](<vscale x 4 x s8>)
50     ; CHECK-NEXT: PseudoRET implicit $v8
51     %3:_(s32) = G_CONSTANT i32 0
52     %0:_(<vscale x 4 x s8>) = G_SPLAT_VECTOR %3(s32)
53     $v8 = COPY %0(<vscale x 4 x s8>)
54     PseudoRET implicit $v8
56 ...
57 ---
58 name:            splat_zero_nxv8i8
59 legalized:       true
60 regBankSelected: false
61 body:             |
62   bb.1:
63     ; CHECK-LABEL: name: splat_zero_nxv8i8
64     ; CHECK: [[C:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 0
65     ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:vrb(<vscale x 8 x s8>) = G_SPLAT_VECTOR [[C]](s32)
66     ; CHECK-NEXT: $v8 = COPY [[SPLAT_VECTOR]](<vscale x 8 x s8>)
67     ; CHECK-NEXT: PseudoRET implicit $v8
68     %3:_(s32) = G_CONSTANT i32 0
69     %0:_(<vscale x 8 x s8>) = G_SPLAT_VECTOR %3(s32)
70     $v8 = COPY %0(<vscale x 8 x s8>)
71     PseudoRET implicit $v8
73 ...
74 ---
75 name:            splat_zero_nxv16i8
76 legalized:       true
77 regBankSelected: false
78 body:             |
79   bb.1:
80     ; CHECK-LABEL: name: splat_zero_nxv16i8
81     ; CHECK: [[C:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 0
82     ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:vrb(<vscale x 16 x s8>) = G_SPLAT_VECTOR [[C]](s32)
83     ; CHECK-NEXT: $v8m2 = COPY [[SPLAT_VECTOR]](<vscale x 16 x s8>)
84     ; CHECK-NEXT: PseudoRET implicit $v8m2
85     %3:_(s32) = G_CONSTANT i32 0
86     %0:_(<vscale x 16 x s8>) = G_SPLAT_VECTOR %3(s32)
87     $v8m2 = COPY %0(<vscale x 16 x s8>)
88     PseudoRET implicit $v8m2
90 ...
91 ---
92 name:            splat_zero_nxv32i8
93 legalized:       true
94 regBankSelected: false
95 body:             |
96   bb.1:
97     ; CHECK-LABEL: name: splat_zero_nxv32i8
98     ; CHECK: [[C:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 0
99     ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:vrb(<vscale x 32 x s8>) = G_SPLAT_VECTOR [[C]](s32)
100     ; CHECK-NEXT: $v8m4 = COPY [[SPLAT_VECTOR]](<vscale x 32 x s8>)
101     ; CHECK-NEXT: PseudoRET implicit $v8m4
102     %3:_(s32) = G_CONSTANT i32 0
103     %0:_(<vscale x 32 x s8>) = G_SPLAT_VECTOR %3(s32)
104     $v8m4 = COPY %0(<vscale x 32 x s8>)
105     PseudoRET implicit $v8m4
109 name:            splat_zero_nxv64i8
110 legalized:       true
111 regBankSelected: false
112 body:             |
113   bb.1:
114     ; CHECK-LABEL: name: splat_zero_nxv64i8
115     ; CHECK: [[C:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 0
116     ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:vrb(<vscale x 64 x s8>) = G_SPLAT_VECTOR [[C]](s32)
117     ; CHECK-NEXT: $v8m8 = COPY [[SPLAT_VECTOR]](<vscale x 64 x s8>)
118     ; CHECK-NEXT: PseudoRET implicit $v8m8
119     %3:_(s32) = G_CONSTANT i32 0
120     %0:_(<vscale x 64 x s8>) = G_SPLAT_VECTOR %3(s32)
121     $v8m8 = COPY %0(<vscale x 64 x s8>)
122     PseudoRET implicit $v8m8
126 name:            splat_zero_nxv1i16
127 legalized:       true
128 regBankSelected: false
129 body:             |
130   bb.1:
131     ; CHECK-LABEL: name: splat_zero_nxv1i16
132     ; CHECK: [[C:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 0
133     ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:vrb(<vscale x 1 x s16>) = G_SPLAT_VECTOR [[C]](s32)
134     ; CHECK-NEXT: $v8 = COPY [[SPLAT_VECTOR]](<vscale x 1 x s16>)
135     ; CHECK-NEXT: PseudoRET implicit $v8
136     %3:_(s32) = G_CONSTANT i32 0
137     %0:_(<vscale x 1 x s16>) = G_SPLAT_VECTOR %3(s32)
138     $v8 = COPY %0(<vscale x 1 x s16>)
139     PseudoRET implicit $v8
143 name:            splat_zero_nxv2i16
144 legalized:       true
145 regBankSelected: false
146 body:             |
147   bb.1:
148     ; CHECK-LABEL: name: splat_zero_nxv2i16
149     ; CHECK: [[C:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 0
150     ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:vrb(<vscale x 2 x s16>) = G_SPLAT_VECTOR [[C]](s32)
151     ; CHECK-NEXT: $v8 = COPY [[SPLAT_VECTOR]](<vscale x 2 x s16>)
152     ; CHECK-NEXT: PseudoRET implicit $v8
153     %3:_(s32) = G_CONSTANT i32 0
154     %0:_(<vscale x 2 x s16>) = G_SPLAT_VECTOR %3(s32)
155     $v8 = COPY %0(<vscale x 2 x s16>)
156     PseudoRET implicit $v8
160 name:            splat_zero_nxv4i16
161 legalized:       true
162 regBankSelected: false
163 body:             |
164   bb.1:
165     ; CHECK-LABEL: name: splat_zero_nxv4i16
166     ; CHECK: [[C:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 0
167     ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:vrb(<vscale x 4 x s16>) = G_SPLAT_VECTOR [[C]](s32)
168     ; CHECK-NEXT: $v8 = COPY [[SPLAT_VECTOR]](<vscale x 4 x s16>)
169     ; CHECK-NEXT: PseudoRET implicit $v8
170     %3:_(s32) = G_CONSTANT i32 0
171     %0:_(<vscale x 4 x s16>) = G_SPLAT_VECTOR %3(s32)
172     $v8 = COPY %0(<vscale x 4 x s16>)
173     PseudoRET implicit $v8
177 name:            splat_zero_nxv8i16
178 legalized:       true
179 regBankSelected: false
180 body:             |
181   bb.1:
182     ; CHECK-LABEL: name: splat_zero_nxv8i16
183     ; CHECK: [[C:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 0
184     ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:vrb(<vscale x 8 x s16>) = G_SPLAT_VECTOR [[C]](s32)
185     ; CHECK-NEXT: $v8m2 = COPY [[SPLAT_VECTOR]](<vscale x 8 x s16>)
186     ; CHECK-NEXT: PseudoRET implicit $v8m2
187     %3:_(s32) = G_CONSTANT i32 0
188     %0:_(<vscale x 8 x s16>) = G_SPLAT_VECTOR %3(s32)
189     $v8m2 = COPY %0(<vscale x 8 x s16>)
190     PseudoRET implicit $v8m2
194 name:            splat_zero_nxv16i16
195 legalized:       true
196 regBankSelected: false
197 body:             |
198   bb.1:
199     ; CHECK-LABEL: name: splat_zero_nxv16i16
200     ; CHECK: [[C:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 0
201     ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:vrb(<vscale x 16 x s16>) = G_SPLAT_VECTOR [[C]](s32)
202     ; CHECK-NEXT: $v8m4 = COPY [[SPLAT_VECTOR]](<vscale x 16 x s16>)
203     ; CHECK-NEXT: PseudoRET implicit $v8m4
204     %3:_(s32) = G_CONSTANT i32 0
205     %0:_(<vscale x 16 x s16>) = G_SPLAT_VECTOR %3(s32)
206     $v8m4 = COPY %0(<vscale x 16 x s16>)
207     PseudoRET implicit $v8m4
211 name:            splat_zero_nxv32i16
212 legalized:       true
213 regBankSelected: false
214 body:             |
215   bb.1:
216     ; CHECK-LABEL: name: splat_zero_nxv32i16
217     ; CHECK: [[C:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 0
218     ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:vrb(<vscale x 32 x s16>) = G_SPLAT_VECTOR [[C]](s32)
219     ; CHECK-NEXT: $v8m8 = COPY [[SPLAT_VECTOR]](<vscale x 32 x s16>)
220     ; CHECK-NEXT: PseudoRET implicit $v8m8
221     %3:_(s32) = G_CONSTANT i32 0
222     %0:_(<vscale x 32 x s16>) = G_SPLAT_VECTOR %3(s32)
223     $v8m8 = COPY %0(<vscale x 32 x s16>)
224     PseudoRET implicit $v8m8
228 name:            splat_zero_nxv1i32
229 legalized:       true
230 regBankSelected: false
231 body:             |
232   bb.1:
233     ; CHECK-LABEL: name: splat_zero_nxv1i32
234     ; CHECK: [[C:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 0
235     ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:vrb(<vscale x 1 x s32>) = G_SPLAT_VECTOR [[C]](s32)
236     ; CHECK-NEXT: $v8 = COPY [[SPLAT_VECTOR]](<vscale x 1 x s32>)
237     ; CHECK-NEXT: PseudoRET implicit $v8
238     %1:_(s32) = G_CONSTANT i32 0
239     %0:_(<vscale x 1 x s32>) = G_SPLAT_VECTOR %1(s32)
240     $v8 = COPY %0(<vscale x 1 x s32>)
241     PseudoRET implicit $v8
245 name:            splat_zero_nxv2i32
246 legalized:       true
247 regBankSelected: false
248 body:             |
249   bb.1:
250     ; CHECK-LABEL: name: splat_zero_nxv2i32
251     ; CHECK: [[C:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 0
252     ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:vrb(<vscale x 2 x s32>) = G_SPLAT_VECTOR [[C]](s32)
253     ; CHECK-NEXT: $v8 = COPY [[SPLAT_VECTOR]](<vscale x 2 x s32>)
254     ; CHECK-NEXT: PseudoRET implicit $v8
255     %1:_(s32) = G_CONSTANT i32 0
256     %0:_(<vscale x 2 x s32>) = G_SPLAT_VECTOR %1(s32)
257     $v8 = COPY %0(<vscale x 2 x s32>)
258     PseudoRET implicit $v8
262 name:            splat_zero_nxv4i32
263 legalized:       true
264 regBankSelected: false
265 body:             |
266   bb.1:
267     ; CHECK-LABEL: name: splat_zero_nxv4i32
268     ; CHECK: [[C:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 0
269     ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:vrb(<vscale x 4 x s32>) = G_SPLAT_VECTOR [[C]](s32)
270     ; CHECK-NEXT: $v8m2 = COPY [[SPLAT_VECTOR]](<vscale x 4 x s32>)
271     ; CHECK-NEXT: PseudoRET implicit $v8m2
272     %1:_(s32) = G_CONSTANT i32 0
273     %0:_(<vscale x 4 x s32>) = G_SPLAT_VECTOR %1(s32)
274     $v8m2 = COPY %0(<vscale x 4 x s32>)
275     PseudoRET implicit $v8m2
279 name:            splat_zero_nxv8i32
280 legalized:       true
281 regBankSelected: false
282 body:             |
283   bb.1:
284     ; CHECK-LABEL: name: splat_zero_nxv8i32
285     ; CHECK: [[C:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 0
286     ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:vrb(<vscale x 8 x s32>) = G_SPLAT_VECTOR [[C]](s32)
287     ; CHECK-NEXT: $v8m4 = COPY [[SPLAT_VECTOR]](<vscale x 8 x s32>)
288     ; CHECK-NEXT: PseudoRET implicit $v8m4
289     %1:_(s32) = G_CONSTANT i32 0
290     %0:_(<vscale x 8 x s32>) = G_SPLAT_VECTOR %1(s32)
291     $v8m4 = COPY %0(<vscale x 8 x s32>)
292     PseudoRET implicit $v8m4
296 name:            splat_zero_nxv16i32
297 legalized:       true
298 regBankSelected: false
299 body:             |
300   bb.1:
301     ; CHECK-LABEL: name: splat_zero_nxv16i32
302     ; CHECK: [[C:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 0
303     ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:vrb(<vscale x 16 x s32>) = G_SPLAT_VECTOR [[C]](s32)
304     ; CHECK-NEXT: $v8m8 = COPY [[SPLAT_VECTOR]](<vscale x 16 x s32>)
305     ; CHECK-NEXT: PseudoRET implicit $v8m8
306     %1:_(s32) = G_CONSTANT i32 0
307     %0:_(<vscale x 16 x s32>) = G_SPLAT_VECTOR %1(s32)
308     $v8m8 = COPY %0(<vscale x 16 x s32>)
309     PseudoRET implicit $v8m8
313 name:            splat_zero_nxv1i64
314 legalized:       true
315 regBankSelected: false
316 body:             |
317   bb.1:
318     ; CHECK-LABEL: name: splat_zero_nxv1i64
319     ; CHECK: [[C:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 0
320     ; CHECK-NEXT: [[C1:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 0
321     ; CHECK-NEXT: [[MV:%[0-9]+]]:fprb(s64) = G_MERGE_VALUES [[C]](s32), [[C1]](s32)
322     ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:vrb(<vscale x 1 x s64>) = G_SPLAT_VECTOR [[MV]](s64)
323     ; CHECK-NEXT: $v8 = COPY [[SPLAT_VECTOR]](<vscale x 1 x s64>)
324     ; CHECK-NEXT: PseudoRET implicit $v8
325     %2:_(s32) = G_CONSTANT i32 0
326     %3:_(s32) = G_CONSTANT i32 0
327     %1:_(s64) = G_MERGE_VALUES %2(s32), %3(s32)
328     %0:_(<vscale x 1 x s64>) = G_SPLAT_VECTOR %1(s64)
329     $v8 = COPY %0(<vscale x 1 x s64>)
330     PseudoRET implicit $v8
334 name:            splat_zero_nxv2i64
335 legalized:       true
336 regBankSelected: false
337 body:             |
338   bb.1:
339     ; CHECK-LABEL: name: splat_zero_nxv2i64
340     ; CHECK: [[C:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 0
341     ; CHECK-NEXT: [[C1:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 0
342     ; CHECK-NEXT: [[MV:%[0-9]+]]:fprb(s64) = G_MERGE_VALUES [[C]](s32), [[C1]](s32)
343     ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:vrb(<vscale x 2 x s64>) = G_SPLAT_VECTOR [[MV]](s64)
344     ; CHECK-NEXT: $v8m2 = COPY [[SPLAT_VECTOR]](<vscale x 2 x s64>)
345     ; CHECK-NEXT: PseudoRET implicit $v8m2
346     %2:_(s32) = G_CONSTANT i32 0
347     %3:_(s32) = G_CONSTANT i32 0
348     %1:_(s64) = G_MERGE_VALUES %2(s32), %3(s32)
349     %0:_(<vscale x 2 x s64>) = G_SPLAT_VECTOR %1(s64)
350     $v8m2 = COPY %0(<vscale x 2 x s64>)
351     PseudoRET implicit $v8m2
355 name:            splat_zero_nxv4i64
356 legalized:       true
357 regBankSelected: false
358 body:             |
359   bb.1:
360     ; CHECK-LABEL: name: splat_zero_nxv4i64
361     ; CHECK: [[C:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 0
362     ; CHECK-NEXT: [[C1:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 0
363     ; CHECK-NEXT: [[MV:%[0-9]+]]:fprb(s64) = G_MERGE_VALUES [[C]](s32), [[C1]](s32)
364     ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:vrb(<vscale x 4 x s64>) = G_SPLAT_VECTOR [[MV]](s64)
365     ; CHECK-NEXT: $v8m4 = COPY [[SPLAT_VECTOR]](<vscale x 4 x s64>)
366     ; CHECK-NEXT: PseudoRET implicit $v8m4
367     %2:_(s32) = G_CONSTANT i32 0
368     %3:_(s32) = G_CONSTANT i32 0
369     %1:_(s64) = G_MERGE_VALUES %2(s32), %3(s32)
370     %0:_(<vscale x 4 x s64>) = G_SPLAT_VECTOR %1(s64)
371     $v8m4 = COPY %0(<vscale x 4 x s64>)
372     PseudoRET implicit $v8m4
376 name:            splat_zero_nxv8i64
377 legalized:       true
378 regBankSelected: false
379 body:             |
380   bb.1:
381     ; CHECK-LABEL: name: splat_zero_nxv8i64
382     ; CHECK: [[C:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 0
383     ; CHECK-NEXT: [[C1:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 0
384     ; CHECK-NEXT: [[MV:%[0-9]+]]:fprb(s64) = G_MERGE_VALUES [[C]](s32), [[C1]](s32)
385     ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:vrb(<vscale x 8 x s64>) = G_SPLAT_VECTOR [[MV]](s64)
386     ; CHECK-NEXT: $v8m8 = COPY [[SPLAT_VECTOR]](<vscale x 8 x s64>)
387     ; CHECK-NEXT: PseudoRET implicit $v8m8
388     %2:_(s32) = G_CONSTANT i32 0
389     %3:_(s32) = G_CONSTANT i32 0
390     %1:_(s64) = G_MERGE_VALUES %2(s32), %3(s32)
391     %0:_(<vscale x 8 x s64>) = G_SPLAT_VECTOR %1(s64)
392     $v8m8 = COPY %0(<vscale x 8 x s64>)
393     PseudoRET implicit $v8m8
398 name:            splat_zero_nxv1f32
399 legalized:       true
400 regBankSelected: false
401 body:             |
402   bb.1:
403     ; CHECK-LABEL: name: splat_zero_nxv1f32
404     ; CHECK: [[C:%[0-9]+]]:fprb(s32) = G_FCONSTANT float 0.000000e+00
405     ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:vrb(<vscale x 1 x s32>) = G_SPLAT_VECTOR [[C]](s32)
406     ; CHECK-NEXT: $v8 = COPY [[SPLAT_VECTOR]](<vscale x 1 x s32>)
407     ; CHECK-NEXT: PseudoRET implicit $v8
408     %1:_(s32) = G_FCONSTANT float 0.000000e+00
409     %0:_(<vscale x 1 x s32>) = G_SPLAT_VECTOR %1(s32)
410     $v8 = COPY %0(<vscale x 1 x s32>)
411     PseudoRET implicit $v8
415 name:            splat_zero_nxv2f32
416 legalized:       true
417 regBankSelected: false
418 body:             |
419   bb.1:
420     ; CHECK-LABEL: name: splat_zero_nxv2f32
421     ; CHECK: [[C:%[0-9]+]]:fprb(s32) = G_FCONSTANT float 0.000000e+00
422     ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:vrb(<vscale x 2 x s32>) = G_SPLAT_VECTOR [[C]](s32)
423     ; CHECK-NEXT: $v8 = COPY [[SPLAT_VECTOR]](<vscale x 2 x s32>)
424     ; CHECK-NEXT: PseudoRET implicit $v8
425     %1:_(s32) = G_FCONSTANT float 0.000000e+00
426     %0:_(<vscale x 2 x s32>) = G_SPLAT_VECTOR %1(s32)
427     $v8 = COPY %0(<vscale x 2 x s32>)
428     PseudoRET implicit $v8
432 name:            splat_zero_nxv4f32
433 legalized:       true
434 regBankSelected: false
435 body:             |
436   bb.1:
437     ; CHECK-LABEL: name: splat_zero_nxv4f32
438     ; CHECK: [[C:%[0-9]+]]:fprb(s32) = G_FCONSTANT float 0.000000e+00
439     ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:vrb(<vscale x 4 x s32>) = G_SPLAT_VECTOR [[C]](s32)
440     ; CHECK-NEXT: $v8m2 = COPY [[SPLAT_VECTOR]](<vscale x 4 x s32>)
441     ; CHECK-NEXT: PseudoRET implicit $v8m2
442     %1:_(s32) = G_FCONSTANT float 0.000000e+00
443     %0:_(<vscale x 4 x s32>) = G_SPLAT_VECTOR %1(s32)
444     $v8m2 = COPY %0(<vscale x 4 x s32>)
445     PseudoRET implicit $v8m2
449 name:            splat_zero_nxv8f32
450 legalized:       true
451 regBankSelected: false
452 body:             |
453   bb.1:
454     ; CHECK-LABEL: name: splat_zero_nxv8f32
455     ; CHECK: [[C:%[0-9]+]]:fprb(s32) = G_FCONSTANT float 0.000000e+00
456     ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:vrb(<vscale x 8 x s32>) = G_SPLAT_VECTOR [[C]](s32)
457     ; CHECK-NEXT: $v8m4 = COPY [[SPLAT_VECTOR]](<vscale x 8 x s32>)
458     ; CHECK-NEXT: PseudoRET implicit $v8m4
459     %1:_(s32) = G_FCONSTANT float 0.000000e+00
460     %0:_(<vscale x 8 x s32>) = G_SPLAT_VECTOR %1(s32)
461     $v8m4 = COPY %0(<vscale x 8 x s32>)
462     PseudoRET implicit $v8m4
466 name:            splat_zero_nxv16f32
467 legalized:       true
468 regBankSelected: false
469 body:             |
470   bb.1:
471     ; CHECK-LABEL: name: splat_zero_nxv16f32
472     ; CHECK: [[C:%[0-9]+]]:fprb(s32) = G_FCONSTANT float 0.000000e+00
473     ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:vrb(<vscale x 16 x s32>) = G_SPLAT_VECTOR [[C]](s32)
474     ; CHECK-NEXT: $v8m8 = COPY [[SPLAT_VECTOR]](<vscale x 16 x s32>)
475     ; CHECK-NEXT: PseudoRET implicit $v8m8
476     %1:_(s32) = G_FCONSTANT float 0.000000e+00
477     %0:_(<vscale x 16 x s32>) = G_SPLAT_VECTOR %1(s32)
478     $v8m8 = COPY %0(<vscale x 16 x s32>)
479     PseudoRET implicit $v8m8
483 name:            splat_zero_nxv1f64
484 legalized:       true
485 regBankSelected: false
486 body:             |
487   bb.1:
488     ; CHECK-LABEL: name: splat_zero_nxv1f64
489     ; CHECK: [[C:%[0-9]+]]:fprb(s64) = G_FCONSTANT double 0.000000e+00
490     ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:vrb(<vscale x 1 x s64>) = G_SPLAT_VECTOR [[C]](s64)
491     ; CHECK-NEXT: $v8 = COPY [[SPLAT_VECTOR]](<vscale x 1 x s64>)
492     ; CHECK-NEXT: PseudoRET implicit $v8
493     %1:_(s64) = G_FCONSTANT double 0.000000e+00
494     %0:_(<vscale x 1 x s64>) = G_SPLAT_VECTOR %1(s64)
495     $v8 = COPY %0(<vscale x 1 x s64>)
496     PseudoRET implicit $v8
500 name:            splat_zero_nxv2f64
501 legalized:       true
502 regBankSelected: false
503 body:             |
504   bb.1:
505     ; CHECK-LABEL: name: splat_zero_nxv2f64
506     ; CHECK: [[C:%[0-9]+]]:fprb(s64) = G_FCONSTANT double 0.000000e+00
507     ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:vrb(<vscale x 2 x s64>) = G_SPLAT_VECTOR [[C]](s64)
508     ; CHECK-NEXT: $v8m2 = COPY [[SPLAT_VECTOR]](<vscale x 2 x s64>)
509     ; CHECK-NEXT: PseudoRET implicit $v8m2
510     %1:_(s64) = G_FCONSTANT double 0.000000e+00
511     %0:_(<vscale x 2 x s64>) = G_SPLAT_VECTOR %1(s64)
512     $v8m2 = COPY %0(<vscale x 2 x s64>)
513     PseudoRET implicit $v8m2
517 name:            splat_zero_nxv4f64
518 legalized:       true
519 regBankSelected: false
520 body:             |
521   bb.1:
522     ; CHECK-LABEL: name: splat_zero_nxv4f64
523     ; CHECK: [[C:%[0-9]+]]:fprb(s64) = G_FCONSTANT double 0.000000e+00
524     ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:vrb(<vscale x 4 x s64>) = G_SPLAT_VECTOR [[C]](s64)
525     ; CHECK-NEXT: $v8m4 = COPY [[SPLAT_VECTOR]](<vscale x 4 x s64>)
526     ; CHECK-NEXT: PseudoRET implicit $v8m4
527     %1:_(s64) = G_FCONSTANT double 0.000000e+00
528     %0:_(<vscale x 4 x s64>) = G_SPLAT_VECTOR %1(s64)
529     $v8m4 = COPY %0(<vscale x 4 x s64>)
530     PseudoRET implicit $v8m4
534 name:            splat_zero_nxv8f64
535 legalized:       true
536 regBankSelected: false
537 body:             |
538   bb.1:
539     ; CHECK-LABEL: name: splat_zero_nxv8f64
540     ; CHECK: [[C:%[0-9]+]]:fprb(s64) = G_FCONSTANT double 0.000000e+00
541     ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:vrb(<vscale x 8 x s64>) = G_SPLAT_VECTOR [[C]](s64)
542     ; CHECK-NEXT: $v8m8 = COPY [[SPLAT_VECTOR]](<vscale x 8 x s64>)
543     ; CHECK-NEXT: PseudoRET implicit $v8m8
544     %1:_(s64) = G_FCONSTANT double 0.000000e+00
545     %0:_(<vscale x 8 x s64>) = G_SPLAT_VECTOR %1(s64)
546     $v8m8 = COPY %0(<vscale x 8 x s64>)
547     PseudoRET implicit $v8m8