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
5 name: splatvector_nxv1i1_0
7 tracksRegLiveness: true
10 ; CHECK-LABEL: name: splatvector_nxv1i1_0
11 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -1
12 ; CHECK-NEXT: [[VMSET_VL:%[0-9]+]]:_(<vscale x 1 x s1>) = G_VMSET_VL [[C]](s32)
13 ; CHECK-NEXT: [[VMCLR_VL:%[0-9]+]]:_(<vscale x 1 x s1>) = G_VMCLR_VL [[C]](s32)
14 ; CHECK-NEXT: $v0 = COPY [[VMCLR_VL]](<vscale x 1 x s1>)
15 ; CHECK-NEXT: PseudoRET implicit $v0
16 %0:_(s1) = G_CONSTANT i1 0
17 %1:_(<vscale x 1 x s1>) = G_SPLAT_VECTOR %0(s1)
18 $v0 = COPY %1(<vscale x 1 x s1>)
19 PseudoRET implicit $v0
23 name: splatvector_nxv1i1_1
25 tracksRegLiveness: true
28 ; CHECK-LABEL: name: splatvector_nxv1i1_1
29 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -1
30 ; CHECK-NEXT: [[VMSET_VL:%[0-9]+]]:_(<vscale x 1 x s1>) = G_VMSET_VL [[C]](s32)
31 ; CHECK-NEXT: [[VMSET_VL1:%[0-9]+]]:_(<vscale x 1 x s1>) = G_VMSET_VL [[C]](s32)
32 ; CHECK-NEXT: $v0 = COPY [[VMSET_VL1]](<vscale x 1 x s1>)
33 ; CHECK-NEXT: PseudoRET implicit $v0
34 %0:_(s1) = G_CONSTANT i1 1
35 %1:_(<vscale x 1 x s1>) = G_SPLAT_VECTOR %0(s1)
36 $v0 = COPY %1(<vscale x 1 x s1>)
37 PseudoRET implicit $v0
41 name: splatvector_nxv1i1_2
43 tracksRegLiveness: true
48 ; CHECK-LABEL: name: splatvector_nxv1i1_2
49 ; CHECK: liveins: $x10
51 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $x10
52 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1
53 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C]]
54 ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[AND]], [[C]]
55 ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 1 x s8>) = G_SPLAT_VECTOR [[AND1]](s32)
56 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
57 ; CHECK-NEXT: [[SPLAT_VECTOR1:%[0-9]+]]:_(<vscale x 1 x s8>) = G_SPLAT_VECTOR [[C1]](s32)
58 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(<vscale x 1 x s1>) = G_ICMP intpred(ne), [[SPLAT_VECTOR]](<vscale x 1 x s8>), [[SPLAT_VECTOR1]]
59 ; CHECK-NEXT: $v0 = COPY [[ICMP]](<vscale x 1 x s1>)
60 ; CHECK-NEXT: PseudoRET implicit $v0
62 %1:_(s1) = G_TRUNC %0(s32)
63 %2:_(<vscale x 1 x s1>) = G_SPLAT_VECTOR %1(s1)
64 $v0 = COPY %2(<vscale x 1 x s1>)
65 PseudoRET implicit $v0
68 name: splatvector_nxv2i1_0
70 tracksRegLiveness: true
73 ; CHECK-LABEL: name: splatvector_nxv2i1_0
74 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -1
75 ; CHECK-NEXT: [[VMSET_VL:%[0-9]+]]:_(<vscale x 2 x s1>) = G_VMSET_VL [[C]](s32)
76 ; CHECK-NEXT: [[VMCLR_VL:%[0-9]+]]:_(<vscale x 2 x s1>) = G_VMCLR_VL [[C]](s32)
77 ; CHECK-NEXT: $v0 = COPY [[VMCLR_VL]](<vscale x 2 x s1>)
78 ; CHECK-NEXT: PseudoRET implicit $v0
79 %0:_(s1) = G_CONSTANT i1 0
80 %1:_(<vscale x 2 x s1>) = G_SPLAT_VECTOR %0(s1)
81 $v0 = COPY %1(<vscale x 2 x s1>)
82 PseudoRET implicit $v0
86 name: splatvector_nxv2i1_1
88 tracksRegLiveness: true
91 ; CHECK-LABEL: name: splatvector_nxv2i1_1
92 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -1
93 ; CHECK-NEXT: [[VMSET_VL:%[0-9]+]]:_(<vscale x 2 x s1>) = G_VMSET_VL [[C]](s32)
94 ; CHECK-NEXT: [[VMSET_VL1:%[0-9]+]]:_(<vscale x 2 x s1>) = G_VMSET_VL [[C]](s32)
95 ; CHECK-NEXT: $v0 = COPY [[VMSET_VL1]](<vscale x 2 x s1>)
96 ; CHECK-NEXT: PseudoRET implicit $v0
97 %0:_(s1) = G_CONSTANT i1 1
98 %1:_(<vscale x 2 x s1>) = G_SPLAT_VECTOR %0(s1)
99 $v0 = COPY %1(<vscale x 2 x s1>)
100 PseudoRET implicit $v0
104 name: splatvector_nxv2i1_2
106 tracksRegLiveness: true
111 ; CHECK-LABEL: name: splatvector_nxv2i1_2
112 ; CHECK: liveins: $x10
114 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $x10
115 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1
116 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C]]
117 ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[AND]], [[C]]
118 ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 2 x s8>) = G_SPLAT_VECTOR [[AND1]](s32)
119 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
120 ; CHECK-NEXT: [[SPLAT_VECTOR1:%[0-9]+]]:_(<vscale x 2 x s8>) = G_SPLAT_VECTOR [[C1]](s32)
121 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(<vscale x 2 x s1>) = G_ICMP intpred(ne), [[SPLAT_VECTOR]](<vscale x 2 x s8>), [[SPLAT_VECTOR1]]
122 ; CHECK-NEXT: $v0 = COPY [[ICMP]](<vscale x 2 x s1>)
123 ; CHECK-NEXT: PseudoRET implicit $v0
124 %0:_(s32) = COPY $x10
125 %1:_(s1) = G_TRUNC %0(s32)
126 %2:_(<vscale x 2 x s1>) = G_SPLAT_VECTOR %1(s1)
127 $v0 = COPY %2(<vscale x 2 x s1>)
128 PseudoRET implicit $v0
131 name: splatvector_nxv4i1_0
133 tracksRegLiveness: true
136 ; CHECK-LABEL: name: splatvector_nxv4i1_0
137 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -1
138 ; CHECK-NEXT: [[VMSET_VL:%[0-9]+]]:_(<vscale x 4 x s1>) = G_VMSET_VL [[C]](s32)
139 ; CHECK-NEXT: [[VMCLR_VL:%[0-9]+]]:_(<vscale x 4 x s1>) = G_VMCLR_VL [[C]](s32)
140 ; CHECK-NEXT: $v0 = COPY [[VMCLR_VL]](<vscale x 4 x s1>)
141 ; CHECK-NEXT: PseudoRET implicit $v0
142 %0:_(s1) = G_CONSTANT i1 0
143 %1:_(<vscale x 4 x s1>) = G_SPLAT_VECTOR %0(s1)
144 $v0 = COPY %1(<vscale x 4 x s1>)
145 PseudoRET implicit $v0
149 name: splatvector_nxv4i1_1
151 tracksRegLiveness: true
154 ; CHECK-LABEL: name: splatvector_nxv4i1_1
155 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -1
156 ; CHECK-NEXT: [[VMSET_VL:%[0-9]+]]:_(<vscale x 4 x s1>) = G_VMSET_VL [[C]](s32)
157 ; CHECK-NEXT: [[VMSET_VL1:%[0-9]+]]:_(<vscale x 4 x s1>) = G_VMSET_VL [[C]](s32)
158 ; CHECK-NEXT: $v0 = COPY [[VMSET_VL1]](<vscale x 4 x s1>)
159 ; CHECK-NEXT: PseudoRET implicit $v0
160 %0:_(s1) = G_CONSTANT i1 1
161 %1:_(<vscale x 4 x s1>) = G_SPLAT_VECTOR %0(s1)
162 $v0 = COPY %1(<vscale x 4 x s1>)
163 PseudoRET implicit $v0
167 name: splatvector_nxv4i1_2
169 tracksRegLiveness: true
174 ; CHECK-LABEL: name: splatvector_nxv4i1_2
175 ; CHECK: liveins: $x10
177 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $x10
178 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1
179 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C]]
180 ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[AND]], [[C]]
181 ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 4 x s8>) = G_SPLAT_VECTOR [[AND1]](s32)
182 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
183 ; CHECK-NEXT: [[SPLAT_VECTOR1:%[0-9]+]]:_(<vscale x 4 x s8>) = G_SPLAT_VECTOR [[C1]](s32)
184 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(<vscale x 4 x s1>) = G_ICMP intpred(ne), [[SPLAT_VECTOR]](<vscale x 4 x s8>), [[SPLAT_VECTOR1]]
185 ; CHECK-NEXT: $v0 = COPY [[ICMP]](<vscale x 4 x s1>)
186 ; CHECK-NEXT: PseudoRET implicit $v0
187 %0:_(s32) = COPY $x10
188 %1:_(s1) = G_TRUNC %0(s32)
189 %2:_(<vscale x 4 x s1>) = G_SPLAT_VECTOR %1(s1)
190 $v0 = COPY %2(<vscale x 4 x s1>)
191 PseudoRET implicit $v0
194 name: splatvector_nxv8i1_0
196 tracksRegLiveness: true
199 ; CHECK-LABEL: name: splatvector_nxv8i1_0
200 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -1
201 ; CHECK-NEXT: [[VMSET_VL:%[0-9]+]]:_(<vscale x 8 x s1>) = G_VMSET_VL [[C]](s32)
202 ; CHECK-NEXT: [[VMCLR_VL:%[0-9]+]]:_(<vscale x 8 x s1>) = G_VMCLR_VL [[C]](s32)
203 ; CHECK-NEXT: $v0 = COPY [[VMCLR_VL]](<vscale x 8 x s1>)
204 ; CHECK-NEXT: PseudoRET implicit $v0
205 %0:_(s1) = G_CONSTANT i1 0
206 %1:_(<vscale x 8 x s1>) = G_SPLAT_VECTOR %0(s1)
207 $v0 = COPY %1(<vscale x 8 x s1>)
208 PseudoRET implicit $v0
212 name: splatvector_nxv8i1_1
214 tracksRegLiveness: true
217 ; CHECK-LABEL: name: splatvector_nxv8i1_1
218 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -1
219 ; CHECK-NEXT: [[VMSET_VL:%[0-9]+]]:_(<vscale x 8 x s1>) = G_VMSET_VL [[C]](s32)
220 ; CHECK-NEXT: [[VMSET_VL1:%[0-9]+]]:_(<vscale x 8 x s1>) = G_VMSET_VL [[C]](s32)
221 ; CHECK-NEXT: $v0 = COPY [[VMSET_VL1]](<vscale x 8 x s1>)
222 ; CHECK-NEXT: PseudoRET implicit $v0
223 %0:_(s1) = G_CONSTANT i1 1
224 %1:_(<vscale x 8 x s1>) = G_SPLAT_VECTOR %0(s1)
225 $v0 = COPY %1(<vscale x 8 x s1>)
226 PseudoRET implicit $v0
230 name: splatvector_nxv8i1_2
232 tracksRegLiveness: true
237 ; CHECK-LABEL: name: splatvector_nxv8i1_2
238 ; CHECK: liveins: $x10
240 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $x10
241 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1
242 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C]]
243 ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[AND]], [[C]]
244 ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 8 x s8>) = G_SPLAT_VECTOR [[AND1]](s32)
245 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
246 ; CHECK-NEXT: [[SPLAT_VECTOR1:%[0-9]+]]:_(<vscale x 8 x s8>) = G_SPLAT_VECTOR [[C1]](s32)
247 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(<vscale x 8 x s1>) = G_ICMP intpred(ne), [[SPLAT_VECTOR]](<vscale x 8 x s8>), [[SPLAT_VECTOR1]]
248 ; CHECK-NEXT: $v0 = COPY [[ICMP]](<vscale x 8 x s1>)
249 ; CHECK-NEXT: PseudoRET implicit $v0
250 %0:_(s32) = COPY $x10
251 %1:_(s1) = G_TRUNC %0(s32)
252 %2:_(<vscale x 8 x s1>) = G_SPLAT_VECTOR %1(s1)
253 $v0 = COPY %2(<vscale x 8 x s1>)
254 PseudoRET implicit $v0
257 name: splatvector_nxv16i1_0
259 tracksRegLiveness: true
262 ; CHECK-LABEL: name: splatvector_nxv16i1_0
263 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -1
264 ; CHECK-NEXT: [[VMSET_VL:%[0-9]+]]:_(<vscale x 16 x s1>) = G_VMSET_VL [[C]](s32)
265 ; CHECK-NEXT: [[VMCLR_VL:%[0-9]+]]:_(<vscale x 16 x s1>) = G_VMCLR_VL [[C]](s32)
266 ; CHECK-NEXT: $v0 = COPY [[VMCLR_VL]](<vscale x 16 x s1>)
267 ; CHECK-NEXT: PseudoRET implicit $v0
268 %0:_(s1) = G_CONSTANT i1 0
269 %1:_(<vscale x 16 x s1>) = G_SPLAT_VECTOR %0(s1)
270 $v0 = COPY %1(<vscale x 16 x s1>)
271 PseudoRET implicit $v0
275 name: splatvector_nxv16i1_1
277 tracksRegLiveness: true
280 ; CHECK-LABEL: name: splatvector_nxv16i1_1
281 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -1
282 ; CHECK-NEXT: [[VMSET_VL:%[0-9]+]]:_(<vscale x 16 x s1>) = G_VMSET_VL [[C]](s32)
283 ; CHECK-NEXT: [[VMSET_VL1:%[0-9]+]]:_(<vscale x 16 x s1>) = G_VMSET_VL [[C]](s32)
284 ; CHECK-NEXT: $v0 = COPY [[VMSET_VL1]](<vscale x 16 x s1>)
285 ; CHECK-NEXT: PseudoRET implicit $v0
286 %0:_(s1) = G_CONSTANT i1 1
287 %1:_(<vscale x 16 x s1>) = G_SPLAT_VECTOR %0(s1)
288 $v0 = COPY %1(<vscale x 16 x s1>)
289 PseudoRET implicit $v0
293 name: splatvector_nxv16i1_2
295 tracksRegLiveness: true
300 ; CHECK-LABEL: name: splatvector_nxv16i1_2
301 ; CHECK: liveins: $x10
303 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $x10
304 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1
305 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C]]
306 ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[AND]], [[C]]
307 ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 16 x s8>) = G_SPLAT_VECTOR [[AND1]](s32)
308 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
309 ; CHECK-NEXT: [[SPLAT_VECTOR1:%[0-9]+]]:_(<vscale x 16 x s8>) = G_SPLAT_VECTOR [[C1]](s32)
310 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(<vscale x 16 x s1>) = G_ICMP intpred(ne), [[SPLAT_VECTOR]](<vscale x 16 x s8>), [[SPLAT_VECTOR1]]
311 ; CHECK-NEXT: $v0 = COPY [[ICMP]](<vscale x 16 x s1>)
312 ; CHECK-NEXT: PseudoRET implicit $v0
313 %0:_(s32) = COPY $x10
314 %1:_(s1) = G_TRUNC %0(s32)
315 %2:_(<vscale x 16 x s1>) = G_SPLAT_VECTOR %1(s1)
316 $v0 = COPY %2(<vscale x 16 x s1>)
317 PseudoRET implicit $v0
320 name: splatvector_nxv32i1_0
322 tracksRegLiveness: true
325 ; CHECK-LABEL: name: splatvector_nxv32i1_0
326 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -1
327 ; CHECK-NEXT: [[VMSET_VL:%[0-9]+]]:_(<vscale x 32 x s1>) = G_VMSET_VL [[C]](s32)
328 ; CHECK-NEXT: [[VMCLR_VL:%[0-9]+]]:_(<vscale x 32 x s1>) = G_VMCLR_VL [[C]](s32)
329 ; CHECK-NEXT: $v0 = COPY [[VMCLR_VL]](<vscale x 32 x s1>)
330 ; CHECK-NEXT: PseudoRET implicit $v0
331 %0:_(s1) = G_CONSTANT i1 0
332 %1:_(<vscale x 32 x s1>) = G_SPLAT_VECTOR %0(s1)
333 $v0 = COPY %1(<vscale x 32 x s1>)
334 PseudoRET implicit $v0
338 name: splatvector_nxv32i1_1
340 tracksRegLiveness: true
343 ; CHECK-LABEL: name: splatvector_nxv32i1_1
344 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -1
345 ; CHECK-NEXT: [[VMSET_VL:%[0-9]+]]:_(<vscale x 32 x s1>) = G_VMSET_VL [[C]](s32)
346 ; CHECK-NEXT: [[VMSET_VL1:%[0-9]+]]:_(<vscale x 32 x s1>) = G_VMSET_VL [[C]](s32)
347 ; CHECK-NEXT: $v0 = COPY [[VMSET_VL1]](<vscale x 32 x s1>)
348 ; CHECK-NEXT: PseudoRET implicit $v0
349 %0:_(s1) = G_CONSTANT i1 1
350 %1:_(<vscale x 32 x s1>) = G_SPLAT_VECTOR %0(s1)
351 $v0 = COPY %1(<vscale x 32 x s1>)
352 PseudoRET implicit $v0
356 name: splatvector_nxv32i1_2
358 tracksRegLiveness: true
363 ; CHECK-LABEL: name: splatvector_nxv32i1_2
364 ; CHECK: liveins: $x10
366 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $x10
367 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1
368 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C]]
369 ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[AND]], [[C]]
370 ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 32 x s8>) = G_SPLAT_VECTOR [[AND1]](s32)
371 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
372 ; CHECK-NEXT: [[SPLAT_VECTOR1:%[0-9]+]]:_(<vscale x 32 x s8>) = G_SPLAT_VECTOR [[C1]](s32)
373 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(<vscale x 32 x s1>) = G_ICMP intpred(ne), [[SPLAT_VECTOR]](<vscale x 32 x s8>), [[SPLAT_VECTOR1]]
374 ; CHECK-NEXT: $v0 = COPY [[ICMP]](<vscale x 32 x s1>)
375 ; CHECK-NEXT: PseudoRET implicit $v0
376 %0:_(s32) = COPY $x10
377 %1:_(s1) = G_TRUNC %0(s32)
378 %2:_(<vscale x 32 x s1>) = G_SPLAT_VECTOR %1(s1)
379 $v0 = COPY %2(<vscale x 32 x s1>)
380 PseudoRET implicit $v0
383 name: splatvector_nxv64i1_0
385 tracksRegLiveness: true
388 ; CHECK-LABEL: name: splatvector_nxv64i1_0
389 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -1
390 ; CHECK-NEXT: [[VMSET_VL:%[0-9]+]]:_(<vscale x 64 x s1>) = G_VMSET_VL [[C]](s32)
391 ; CHECK-NEXT: [[VMCLR_VL:%[0-9]+]]:_(<vscale x 64 x s1>) = G_VMCLR_VL [[C]](s32)
392 ; CHECK-NEXT: $v0 = COPY [[VMCLR_VL]](<vscale x 64 x s1>)
393 ; CHECK-NEXT: PseudoRET implicit $v0
394 %0:_(s1) = G_CONSTANT i1 0
395 %1:_(<vscale x 64 x s1>) = G_SPLAT_VECTOR %0(s1)
396 $v0 = COPY %1(<vscale x 64 x s1>)
397 PseudoRET implicit $v0
401 name: splatvector_nxv64i1_1
403 tracksRegLiveness: true
406 ; CHECK-LABEL: name: splatvector_nxv64i1_1
407 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -1
408 ; CHECK-NEXT: [[VMSET_VL:%[0-9]+]]:_(<vscale x 64 x s1>) = G_VMSET_VL [[C]](s32)
409 ; CHECK-NEXT: [[VMSET_VL1:%[0-9]+]]:_(<vscale x 64 x s1>) = G_VMSET_VL [[C]](s32)
410 ; CHECK-NEXT: $v0 = COPY [[VMSET_VL1]](<vscale x 64 x s1>)
411 ; CHECK-NEXT: PseudoRET implicit $v0
412 %0:_(s1) = G_CONSTANT i1 1
413 %1:_(<vscale x 64 x s1>) = G_SPLAT_VECTOR %0(s1)
414 $v0 = COPY %1(<vscale x 64 x s1>)
415 PseudoRET implicit $v0
419 name: splatvector_nxv64i1_2
421 tracksRegLiveness: true
426 ; CHECK-LABEL: name: splatvector_nxv64i1_2
427 ; CHECK: liveins: $x10
429 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $x10
430 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1
431 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C]]
432 ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[AND]], [[C]]
433 ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 64 x s8>) = G_SPLAT_VECTOR [[AND1]](s32)
434 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
435 ; CHECK-NEXT: [[SPLAT_VECTOR1:%[0-9]+]]:_(<vscale x 64 x s8>) = G_SPLAT_VECTOR [[C1]](s32)
436 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(<vscale x 64 x s1>) = G_ICMP intpred(ne), [[SPLAT_VECTOR]](<vscale x 64 x s8>), [[SPLAT_VECTOR1]]
437 ; CHECK-NEXT: $v0 = COPY [[ICMP]](<vscale x 64 x s1>)
438 ; CHECK-NEXT: PseudoRET implicit $v0
439 %0:_(s32) = COPY $x10
440 %1:_(s1) = G_TRUNC %0(s32)
441 %2:_(<vscale x 64 x s1>) = G_SPLAT_VECTOR %1(s1)
442 $v0 = COPY %2(<vscale x 64 x s1>)
443 PseudoRET implicit $v0
447 name: splatvector_nxv1i8
449 tracksRegLiveness: true
452 ; CHECK-LABEL: name: splatvector_nxv1i8
453 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
454 ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 1 x s8>) = G_SPLAT_VECTOR [[C]](s32)
455 ; CHECK-NEXT: $v8 = COPY [[SPLAT_VECTOR]](<vscale x 1 x s8>)
456 ; CHECK-NEXT: PseudoRET implicit $v8
457 %1:_(s8) = G_CONSTANT i8 0
458 %2:_(<vscale x 1 x s8>) = G_SPLAT_VECTOR %1(s8)
459 $v8 = COPY %2(<vscale x 1 x s8>)
460 PseudoRET implicit $v8
465 name: splatvector_nxv2i8
467 tracksRegLiveness: true
470 ; CHECK-LABEL: name: splatvector_nxv2i8
471 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
472 ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 2 x s8>) = G_SPLAT_VECTOR [[C]](s32)
473 ; CHECK-NEXT: $v8 = COPY [[SPLAT_VECTOR]](<vscale x 2 x s8>)
474 ; CHECK-NEXT: PseudoRET implicit $v8
475 %1:_(s8) = G_CONSTANT i8 0
476 %2:_(<vscale x 2 x s8>) = G_SPLAT_VECTOR %1(s8)
477 $v8 = COPY %2(<vscale x 2 x s8>)
478 PseudoRET implicit $v8
482 name: splatvector_nxv4i8
484 tracksRegLiveness: true
487 ; CHECK-LABEL: name: splatvector_nxv4i8
488 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
489 ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 4 x s8>) = G_SPLAT_VECTOR [[C]](s32)
490 ; CHECK-NEXT: $v8 = COPY [[SPLAT_VECTOR]](<vscale x 4 x s8>)
491 ; CHECK-NEXT: PseudoRET implicit $v8
492 %1:_(s8) = G_CONSTANT i8 0
493 %2:_(<vscale x 4 x s8>) = G_SPLAT_VECTOR %1(s8)
494 $v8 = COPY %2(<vscale x 4 x s8>)
495 PseudoRET implicit $v8
499 name: splatvector_nxv8i8
501 tracksRegLiveness: true
504 ; CHECK-LABEL: name: splatvector_nxv8i8
505 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
506 ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 8 x s8>) = G_SPLAT_VECTOR [[C]](s32)
507 ; CHECK-NEXT: $v8 = COPY [[SPLAT_VECTOR]](<vscale x 8 x s8>)
508 ; CHECK-NEXT: PseudoRET implicit $v8
509 %1:_(s8) = G_CONSTANT i8 0
510 %2:_(<vscale x 8 x s8>) = G_SPLAT_VECTOR %1(s8)
511 $v8 = COPY %2(<vscale x 8 x s8>)
512 PseudoRET implicit $v8
516 name: splatvector_nxv16i8
518 tracksRegLiveness: true
521 ; CHECK-LABEL: name: splatvector_nxv16i8
522 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
523 ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 16 x s8>) = G_SPLAT_VECTOR [[C]](s32)
524 ; CHECK-NEXT: $v8m2 = COPY [[SPLAT_VECTOR]](<vscale x 16 x s8>)
525 ; CHECK-NEXT: PseudoRET implicit $v8m2
526 %1:_(s8) = G_CONSTANT i8 0
527 %2:_(<vscale x 16 x s8>) = G_SPLAT_VECTOR %1(s8)
528 $v8m2 = COPY %2(<vscale x 16 x s8>)
529 PseudoRET implicit $v8m2
533 name: splatvector_nxv1i16
535 tracksRegLiveness: true
538 ; CHECK-LABEL: name: splatvector_nxv1i16
539 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
540 ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 1 x s16>) = G_SPLAT_VECTOR [[C]](s32)
541 ; CHECK-NEXT: $v8 = COPY [[SPLAT_VECTOR]](<vscale x 1 x s16>)
542 ; CHECK-NEXT: PseudoRET implicit $v8
543 %1:_(s16) = G_CONSTANT i16 0
544 %2:_(<vscale x 1 x s16>) = G_SPLAT_VECTOR %1(s16)
545 $v8 = COPY %2(<vscale x 1 x s16>)
546 PseudoRET implicit $v8
550 name: splatvector_nxv2i16
552 tracksRegLiveness: true
555 ; CHECK-LABEL: name: splatvector_nxv2i16
556 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
557 ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 2 x s16>) = G_SPLAT_VECTOR [[C]](s32)
558 ; CHECK-NEXT: $v8 = COPY [[SPLAT_VECTOR]](<vscale x 2 x s16>)
559 ; CHECK-NEXT: PseudoRET implicit $v8
560 %1:_(s16) = G_CONSTANT i16 0
561 %2:_(<vscale x 2 x s16>) = G_SPLAT_VECTOR %1(s16)
562 $v8 = COPY %2(<vscale x 2 x s16>)
563 PseudoRET implicit $v8
567 name: splatvector_nxv4i16
569 tracksRegLiveness: true
572 ; CHECK-LABEL: name: splatvector_nxv4i16
573 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
574 ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 4 x s16>) = G_SPLAT_VECTOR [[C]](s32)
575 ; CHECK-NEXT: $v8 = COPY [[SPLAT_VECTOR]](<vscale x 4 x s16>)
576 ; CHECK-NEXT: PseudoRET implicit $v8
577 %1:_(s16) = G_CONSTANT i16 0
578 %2:_(<vscale x 4 x s16>) = G_SPLAT_VECTOR %1(s16)
579 $v8 = COPY %2(<vscale x 4 x s16>)
580 PseudoRET implicit $v8
584 name: splatvector_nxv8i16
586 tracksRegLiveness: true
589 ; CHECK-LABEL: name: splatvector_nxv8i16
590 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
591 ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 8 x s16>) = G_SPLAT_VECTOR [[C]](s32)
592 ; CHECK-NEXT: $v8m2 = COPY [[SPLAT_VECTOR]](<vscale x 8 x s16>)
593 ; CHECK-NEXT: PseudoRET implicit $v8m2
594 %1:_(s16) = G_CONSTANT i16 0
595 %2:_(<vscale x 8 x s16>) = G_SPLAT_VECTOR %1(s16)
596 $v8m2 = COPY %2(<vscale x 8 x s16>)
597 PseudoRET implicit $v8m2
601 name: splatvector_nxv16i16
603 tracksRegLiveness: true
606 ; CHECK-LABEL: name: splatvector_nxv16i16
607 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
608 ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 16 x s16>) = G_SPLAT_VECTOR [[C]](s32)
609 ; CHECK-NEXT: $v8m4 = COPY [[SPLAT_VECTOR]](<vscale x 16 x s16>)
610 ; CHECK-NEXT: PseudoRET implicit $v8m4
611 %1:_(s16) = G_CONSTANT i16 0
612 %2:_(<vscale x 16 x s16>) = G_SPLAT_VECTOR %1(s16)
613 $v8m4 = COPY %2(<vscale x 16 x s16>)
614 PseudoRET implicit $v8m4
618 name: splatvector_nxv1i32
620 tracksRegLiveness: true
623 ; CHECK-LABEL: name: splatvector_nxv1i32
624 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
625 ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 1 x s32>) = G_SPLAT_VECTOR [[C]](s32)
626 ; CHECK-NEXT: $v8 = COPY [[SPLAT_VECTOR]](<vscale x 1 x s32>)
627 ; CHECK-NEXT: PseudoRET implicit $v8
628 %1:_(s32) = G_CONSTANT i32 0
629 %2:_(<vscale x 1 x s32>) = G_SPLAT_VECTOR %1(s32)
630 $v8 = COPY %2(<vscale x 1 x s32>)
631 PseudoRET implicit $v8
635 name: splatvector_nxv2i32
637 tracksRegLiveness: true
640 ; CHECK-LABEL: name: splatvector_nxv2i32
641 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
642 ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 2 x s32>) = G_SPLAT_VECTOR [[C]](s32)
643 ; CHECK-NEXT: $v8 = COPY [[SPLAT_VECTOR]](<vscale x 2 x s32>)
644 ; CHECK-NEXT: PseudoRET implicit $v8
645 %1:_(s32) = G_CONSTANT i32 0
646 %2:_(<vscale x 2 x s32>) = G_SPLAT_VECTOR %1(s32)
647 $v8 = COPY %2(<vscale x 2 x s32>)
648 PseudoRET implicit $v8
652 name: splatvector_nxv4i32
654 tracksRegLiveness: true
657 ; CHECK-LABEL: name: splatvector_nxv4i32
658 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
659 ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 4 x s32>) = G_SPLAT_VECTOR [[C]](s32)
660 ; CHECK-NEXT: $v8m2 = COPY [[SPLAT_VECTOR]](<vscale x 4 x s32>)
661 ; CHECK-NEXT: PseudoRET implicit $v8m2
662 %1:_(s32) = G_CONSTANT i32 0
663 %2:_(<vscale x 4 x s32>) = G_SPLAT_VECTOR %1(s32)
664 $v8m2 = COPY %2(<vscale x 4 x s32>)
665 PseudoRET implicit $v8m2
669 name: splatvector_nxv8i32
671 tracksRegLiveness: true
674 ; CHECK-LABEL: name: splatvector_nxv8i32
675 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
676 ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 8 x s32>) = G_SPLAT_VECTOR [[C]](s32)
677 ; CHECK-NEXT: $v8m4 = COPY [[SPLAT_VECTOR]](<vscale x 8 x s32>)
678 ; CHECK-NEXT: PseudoRET implicit $v8m4
679 %1:_(s32) = G_CONSTANT i32 0
680 %2:_(<vscale x 8 x s32>) = G_SPLAT_VECTOR %1(s32)
681 $v8m4 = COPY %2(<vscale x 8 x s32>)
682 PseudoRET implicit $v8m4
686 name: splatvector_nxv16i32
688 tracksRegLiveness: true
691 ; CHECK-LABEL: name: splatvector_nxv16i32
692 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
693 ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 16 x s32>) = G_SPLAT_VECTOR [[C]](s32)
694 ; CHECK-NEXT: $v8m8 = COPY [[SPLAT_VECTOR]](<vscale x 16 x s32>)
695 ; CHECK-NEXT: PseudoRET implicit $v8m8
696 %1:_(s32) = G_CONSTANT i32 0
697 %2:_(<vscale x 16 x s32>) = G_SPLAT_VECTOR %1(s32)
698 $v8m8 = COPY %2(<vscale x 16 x s32>)
699 PseudoRET implicit $v8m8