1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=riscv64 -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]+]]:_(s64) = G_CONSTANT i64 -1
12 ; CHECK-NEXT: [[VMSET_VL:%[0-9]+]]:_(<vscale x 1 x s1>) = G_VMSET_VL [[C]](s64)
13 ; CHECK-NEXT: [[VMCLR_VL:%[0-9]+]]:_(<vscale x 1 x s1>) = G_VMCLR_VL [[C]](s64)
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]+]]:_(s64) = G_CONSTANT i64 -1
30 ; CHECK-NEXT: [[VMSET_VL:%[0-9]+]]:_(<vscale x 1 x s1>) = G_VMSET_VL [[C]](s64)
31 ; CHECK-NEXT: [[VMSET_VL1:%[0-9]+]]:_(<vscale x 1 x s1>) = G_VMSET_VL [[C]](s64)
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]+]]:_(s64) = COPY $x10
52 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1
53 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C]]
54 ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s64) = G_AND [[AND]], [[C]]
55 ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 1 x s8>) = G_SPLAT_VECTOR [[AND1]](s64)
56 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
57 ; CHECK-NEXT: [[SPLAT_VECTOR1:%[0-9]+]]:_(<vscale x 1 x s8>) = G_SPLAT_VECTOR [[C1]](s64)
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(s64)
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]+]]:_(s64) = G_CONSTANT i64 -1
75 ; CHECK-NEXT: [[VMSET_VL:%[0-9]+]]:_(<vscale x 2 x s1>) = G_VMSET_VL [[C]](s64)
76 ; CHECK-NEXT: [[VMCLR_VL:%[0-9]+]]:_(<vscale x 2 x s1>) = G_VMCLR_VL [[C]](s64)
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]+]]:_(s64) = G_CONSTANT i64 -1
93 ; CHECK-NEXT: [[VMSET_VL:%[0-9]+]]:_(<vscale x 2 x s1>) = G_VMSET_VL [[C]](s64)
94 ; CHECK-NEXT: [[VMSET_VL1:%[0-9]+]]:_(<vscale x 2 x s1>) = G_VMSET_VL [[C]](s64)
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]+]]:_(s64) = COPY $x10
115 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1
116 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C]]
117 ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s64) = G_AND [[AND]], [[C]]
118 ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 2 x s8>) = G_SPLAT_VECTOR [[AND1]](s64)
119 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
120 ; CHECK-NEXT: [[SPLAT_VECTOR1:%[0-9]+]]:_(<vscale x 2 x s8>) = G_SPLAT_VECTOR [[C1]](s64)
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:_(s64) = COPY $x10
125 %1:_(s1) = G_TRUNC %0(s64)
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]+]]:_(s64) = G_CONSTANT i64 -1
138 ; CHECK-NEXT: [[VMSET_VL:%[0-9]+]]:_(<vscale x 4 x s1>) = G_VMSET_VL [[C]](s64)
139 ; CHECK-NEXT: [[VMCLR_VL:%[0-9]+]]:_(<vscale x 4 x s1>) = G_VMCLR_VL [[C]](s64)
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]+]]:_(s64) = G_CONSTANT i64 -1
156 ; CHECK-NEXT: [[VMSET_VL:%[0-9]+]]:_(<vscale x 4 x s1>) = G_VMSET_VL [[C]](s64)
157 ; CHECK-NEXT: [[VMSET_VL1:%[0-9]+]]:_(<vscale x 4 x s1>) = G_VMSET_VL [[C]](s64)
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]+]]:_(s64) = COPY $x10
178 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1
179 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C]]
180 ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s64) = G_AND [[AND]], [[C]]
181 ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 4 x s8>) = G_SPLAT_VECTOR [[AND1]](s64)
182 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
183 ; CHECK-NEXT: [[SPLAT_VECTOR1:%[0-9]+]]:_(<vscale x 4 x s8>) = G_SPLAT_VECTOR [[C1]](s64)
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:_(s64) = COPY $x10
188 %1:_(s1) = G_TRUNC %0(s64)
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]+]]:_(s64) = G_CONSTANT i64 -1
201 ; CHECK-NEXT: [[VMSET_VL:%[0-9]+]]:_(<vscale x 8 x s1>) = G_VMSET_VL [[C]](s64)
202 ; CHECK-NEXT: [[VMCLR_VL:%[0-9]+]]:_(<vscale x 8 x s1>) = G_VMCLR_VL [[C]](s64)
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]+]]:_(s64) = G_CONSTANT i64 -1
219 ; CHECK-NEXT: [[VMSET_VL:%[0-9]+]]:_(<vscale x 8 x s1>) = G_VMSET_VL [[C]](s64)
220 ; CHECK-NEXT: [[VMSET_VL1:%[0-9]+]]:_(<vscale x 8 x s1>) = G_VMSET_VL [[C]](s64)
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]+]]:_(s64) = COPY $x10
241 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1
242 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C]]
243 ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s64) = G_AND [[AND]], [[C]]
244 ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 8 x s8>) = G_SPLAT_VECTOR [[AND1]](s64)
245 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
246 ; CHECK-NEXT: [[SPLAT_VECTOR1:%[0-9]+]]:_(<vscale x 8 x s8>) = G_SPLAT_VECTOR [[C1]](s64)
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:_(s64) = COPY $x10
251 %1:_(s1) = G_TRUNC %0(s64)
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]+]]:_(s64) = G_CONSTANT i64 -1
264 ; CHECK-NEXT: [[VMSET_VL:%[0-9]+]]:_(<vscale x 16 x s1>) = G_VMSET_VL [[C]](s64)
265 ; CHECK-NEXT: [[VMCLR_VL:%[0-9]+]]:_(<vscale x 16 x s1>) = G_VMCLR_VL [[C]](s64)
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]+]]:_(s64) = G_CONSTANT i64 -1
282 ; CHECK-NEXT: [[VMSET_VL:%[0-9]+]]:_(<vscale x 16 x s1>) = G_VMSET_VL [[C]](s64)
283 ; CHECK-NEXT: [[VMSET_VL1:%[0-9]+]]:_(<vscale x 16 x s1>) = G_VMSET_VL [[C]](s64)
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]+]]:_(s64) = COPY $x10
304 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1
305 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C]]
306 ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s64) = G_AND [[AND]], [[C]]
307 ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 16 x s8>) = G_SPLAT_VECTOR [[AND1]](s64)
308 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
309 ; CHECK-NEXT: [[SPLAT_VECTOR1:%[0-9]+]]:_(<vscale x 16 x s8>) = G_SPLAT_VECTOR [[C1]](s64)
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:_(s64) = COPY $x10
314 %1:_(s1) = G_TRUNC %0(s64)
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]+]]:_(s64) = G_CONSTANT i64 -1
327 ; CHECK-NEXT: [[VMSET_VL:%[0-9]+]]:_(<vscale x 32 x s1>) = G_VMSET_VL [[C]](s64)
328 ; CHECK-NEXT: [[VMCLR_VL:%[0-9]+]]:_(<vscale x 32 x s1>) = G_VMCLR_VL [[C]](s64)
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]+]]:_(s64) = G_CONSTANT i64 -1
345 ; CHECK-NEXT: [[VMSET_VL:%[0-9]+]]:_(<vscale x 32 x s1>) = G_VMSET_VL [[C]](s64)
346 ; CHECK-NEXT: [[VMSET_VL1:%[0-9]+]]:_(<vscale x 32 x s1>) = G_VMSET_VL [[C]](s64)
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]+]]:_(s64) = COPY $x10
367 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1
368 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C]]
369 ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s64) = G_AND [[AND]], [[C]]
370 ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 32 x s8>) = G_SPLAT_VECTOR [[AND1]](s64)
371 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
372 ; CHECK-NEXT: [[SPLAT_VECTOR1:%[0-9]+]]:_(<vscale x 32 x s8>) = G_SPLAT_VECTOR [[C1]](s64)
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:_(s64) = COPY $x10
377 %1:_(s1) = G_TRUNC %0(s64)
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]+]]:_(s64) = G_CONSTANT i64 -1
390 ; CHECK-NEXT: [[VMSET_VL:%[0-9]+]]:_(<vscale x 64 x s1>) = G_VMSET_VL [[C]](s64)
391 ; CHECK-NEXT: [[VMCLR_VL:%[0-9]+]]:_(<vscale x 64 x s1>) = G_VMCLR_VL [[C]](s64)
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]+]]:_(s64) = G_CONSTANT i64 -1
408 ; CHECK-NEXT: [[VMSET_VL:%[0-9]+]]:_(<vscale x 64 x s1>) = G_VMSET_VL [[C]](s64)
409 ; CHECK-NEXT: [[VMSET_VL1:%[0-9]+]]:_(<vscale x 64 x s1>) = G_VMSET_VL [[C]](s64)
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]+]]:_(s64) = COPY $x10
430 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1
431 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C]]
432 ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s64) = G_AND [[AND]], [[C]]
433 ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 64 x s8>) = G_SPLAT_VECTOR [[AND1]](s64)
434 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
435 ; CHECK-NEXT: [[SPLAT_VECTOR1:%[0-9]+]]:_(<vscale x 64 x s8>) = G_SPLAT_VECTOR [[C1]](s64)
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:_(s64) = COPY $x10
440 %1:_(s1) = G_TRUNC %0(s64)
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]+]]:_(s64) = G_CONSTANT i64 0
454 ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 1 x s8>) = G_SPLAT_VECTOR [[C]](s64)
455 ; CHECK-NEXT: $v8 = COPY [[SPLAT_VECTOR]](<vscale x 1 x s8>)
456 ; CHECK-NEXT: PseudoRET implicit $v8
457 %0:_(<vscale x 1 x s8>) = G_IMPLICIT_DEF
458 %1:_(s8) = G_CONSTANT i8 0
459 %2:_(<vscale x 1 x s8>) = G_SPLAT_VECTOR %1(s8)
460 $v8 = COPY %2(<vscale x 1 x s8>)
461 PseudoRET implicit $v8
466 name: splatvector_nxv2i8
468 tracksRegLiveness: true
471 ; CHECK-LABEL: name: splatvector_nxv2i8
472 ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
473 ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 2 x s8>) = G_SPLAT_VECTOR [[C]](s64)
474 ; CHECK-NEXT: $v8 = COPY [[SPLAT_VECTOR]](<vscale x 2 x s8>)
475 ; CHECK-NEXT: PseudoRET implicit $v8
476 %0:_(<vscale x 2 x s8>) = G_IMPLICIT_DEF
477 %1:_(s8) = G_CONSTANT i8 0
478 %2:_(<vscale x 2 x s8>) = G_SPLAT_VECTOR %1(s8)
479 $v8 = COPY %2(<vscale x 2 x s8>)
480 PseudoRET implicit $v8
484 name: splatvector_nxv4i8
486 tracksRegLiveness: true
489 ; CHECK-LABEL: name: splatvector_nxv4i8
490 ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
491 ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 4 x s8>) = G_SPLAT_VECTOR [[C]](s64)
492 ; CHECK-NEXT: $v8 = COPY [[SPLAT_VECTOR]](<vscale x 4 x s8>)
493 ; CHECK-NEXT: PseudoRET implicit $v8
494 %0:_(<vscale x 4 x s8>) = G_IMPLICIT_DEF
495 %1:_(s8) = G_CONSTANT i8 0
496 %2:_(<vscale x 4 x s8>) = G_SPLAT_VECTOR %1(s8)
497 $v8 = COPY %2(<vscale x 4 x s8>)
498 PseudoRET implicit $v8
502 name: splatvector_nxv8i8
504 tracksRegLiveness: true
507 ; CHECK-LABEL: name: splatvector_nxv8i8
508 ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
509 ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 8 x s8>) = G_SPLAT_VECTOR [[C]](s64)
510 ; CHECK-NEXT: $v8 = COPY [[SPLAT_VECTOR]](<vscale x 8 x s8>)
511 ; CHECK-NEXT: PseudoRET implicit $v8
512 %0:_(<vscale x 8 x s8>) = G_IMPLICIT_DEF
513 %1:_(s8) = G_CONSTANT i8 0
514 %2:_(<vscale x 8 x s8>) = G_SPLAT_VECTOR %1(s8)
515 $v8 = COPY %2(<vscale x 8 x s8>)
516 PseudoRET implicit $v8
520 name: splatvector_nxv16i8
522 tracksRegLiveness: true
525 ; CHECK-LABEL: name: splatvector_nxv16i8
526 ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
527 ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 16 x s8>) = G_SPLAT_VECTOR [[C]](s64)
528 ; CHECK-NEXT: $v8m2 = COPY [[SPLAT_VECTOR]](<vscale x 16 x s8>)
529 ; CHECK-NEXT: PseudoRET implicit $v8m2
530 %0:_(<vscale x 16 x s8>) = G_IMPLICIT_DEF
531 %1:_(s8) = G_CONSTANT i8 0
532 %2:_(<vscale x 16 x s8>) = G_SPLAT_VECTOR %1(s8)
533 $v8m2 = COPY %2(<vscale x 16 x s8>)
534 PseudoRET implicit $v8m2
538 name: splatvector_nxv1i16
540 tracksRegLiveness: true
543 ; CHECK-LABEL: name: splatvector_nxv1i16
544 ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
545 ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 1 x s16>) = G_SPLAT_VECTOR [[C]](s64)
546 ; CHECK-NEXT: $v8 = COPY [[SPLAT_VECTOR]](<vscale x 1 x s16>)
547 ; CHECK-NEXT: PseudoRET implicit $v8
548 %0:_(<vscale x 1 x s16>) = G_IMPLICIT_DEF
549 %1:_(s16) = G_CONSTANT i16 0
550 %2:_(<vscale x 1 x s16>) = G_SPLAT_VECTOR %1(s16)
551 $v8 = COPY %2(<vscale x 1 x s16>)
552 PseudoRET implicit $v8
556 name: splatvector_nxv2i16
558 tracksRegLiveness: true
561 ; CHECK-LABEL: name: splatvector_nxv2i16
562 ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
563 ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 2 x s16>) = G_SPLAT_VECTOR [[C]](s64)
564 ; CHECK-NEXT: $v8 = COPY [[SPLAT_VECTOR]](<vscale x 2 x s16>)
565 ; CHECK-NEXT: PseudoRET implicit $v8
566 %0:_(<vscale x 2 x s16>) = G_IMPLICIT_DEF
567 %1:_(s16) = G_CONSTANT i16 0
568 %2:_(<vscale x 2 x s16>) = G_SPLAT_VECTOR %1(s16)
569 $v8 = COPY %2(<vscale x 2 x s16>)
570 PseudoRET implicit $v8
574 name: splatvector_nxv4i16
576 tracksRegLiveness: true
579 ; CHECK-LABEL: name: splatvector_nxv4i16
580 ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
581 ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 4 x s16>) = G_SPLAT_VECTOR [[C]](s64)
582 ; CHECK-NEXT: $v8 = COPY [[SPLAT_VECTOR]](<vscale x 4 x s16>)
583 ; CHECK-NEXT: PseudoRET implicit $v8
584 %0:_(<vscale x 4 x s16>) = G_IMPLICIT_DEF
585 %1:_(s16) = G_CONSTANT i16 0
586 %2:_(<vscale x 4 x s16>) = G_SPLAT_VECTOR %1(s16)
587 $v8 = COPY %2(<vscale x 4 x s16>)
588 PseudoRET implicit $v8
592 name: splatvector_nxv8i16
594 tracksRegLiveness: true
597 ; CHECK-LABEL: name: splatvector_nxv8i16
598 ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
599 ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 8 x s16>) = G_SPLAT_VECTOR [[C]](s64)
600 ; CHECK-NEXT: $v8m2 = COPY [[SPLAT_VECTOR]](<vscale x 8 x s16>)
601 ; CHECK-NEXT: PseudoRET implicit $v8m2
602 %0:_(<vscale x 8 x s16>) = G_IMPLICIT_DEF
603 %1:_(s16) = G_CONSTANT i16 0
604 %2:_(<vscale x 8 x s16>) = G_SPLAT_VECTOR %1(s16)
605 $v8m2 = COPY %2(<vscale x 8 x s16>)
606 PseudoRET implicit $v8m2
610 name: splatvector_nxv16i16
612 tracksRegLiveness: true
615 ; CHECK-LABEL: name: splatvector_nxv16i16
616 ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
617 ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 16 x s16>) = G_SPLAT_VECTOR [[C]](s64)
618 ; CHECK-NEXT: $v8m4 = COPY [[SPLAT_VECTOR]](<vscale x 16 x s16>)
619 ; CHECK-NEXT: PseudoRET implicit $v8m4
620 %0:_(<vscale x 16 x s16>) = G_IMPLICIT_DEF
621 %1:_(s16) = G_CONSTANT i16 0
622 %2:_(<vscale x 16 x s16>) = G_SPLAT_VECTOR %1(s16)
623 $v8m4 = COPY %2(<vscale x 16 x s16>)
624 PseudoRET implicit $v8m4
628 name: splatvector_nxv1i32
630 tracksRegLiveness: true
633 ; CHECK-LABEL: name: splatvector_nxv1i32
634 ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
635 ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 1 x s32>) = G_SPLAT_VECTOR [[C]](s64)
636 ; CHECK-NEXT: $v8 = COPY [[SPLAT_VECTOR]](<vscale x 1 x s32>)
637 ; CHECK-NEXT: PseudoRET implicit $v8
638 %0:_(<vscale x 1 x s32>) = G_IMPLICIT_DEF
639 %1:_(s32) = G_CONSTANT i32 0
640 %2:_(<vscale x 1 x s32>) = G_SPLAT_VECTOR %1(s32)
641 $v8 = COPY %2(<vscale x 1 x s32>)
642 PseudoRET implicit $v8
646 name: splatvector_nxv2i32
648 tracksRegLiveness: true
651 ; CHECK-LABEL: name: splatvector_nxv2i32
652 ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
653 ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 2 x s32>) = G_SPLAT_VECTOR [[C]](s64)
654 ; CHECK-NEXT: $v8 = COPY [[SPLAT_VECTOR]](<vscale x 2 x s32>)
655 ; CHECK-NEXT: PseudoRET implicit $v8
656 %0:_(<vscale x 2 x s32>) = G_IMPLICIT_DEF
657 %1:_(s32) = G_CONSTANT i32 0
658 %2:_(<vscale x 2 x s32>) = G_SPLAT_VECTOR %1(s32)
659 $v8 = COPY %2(<vscale x 2 x s32>)
660 PseudoRET implicit $v8
664 name: splatvector_nxv4i32
666 tracksRegLiveness: true
669 ; CHECK-LABEL: name: splatvector_nxv4i32
670 ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
671 ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 4 x s32>) = G_SPLAT_VECTOR [[C]](s64)
672 ; CHECK-NEXT: $v8m2 = COPY [[SPLAT_VECTOR]](<vscale x 4 x s32>)
673 ; CHECK-NEXT: PseudoRET implicit $v8m2
674 %0:_(<vscale x 4 x s32>) = G_IMPLICIT_DEF
675 %1:_(s32) = G_CONSTANT i32 0
676 %2:_(<vscale x 4 x s32>) = G_SPLAT_VECTOR %1(s32)
677 $v8m2 = COPY %2(<vscale x 4 x s32>)
678 PseudoRET implicit $v8m2
682 name: splatvector_nxv8i32
684 tracksRegLiveness: true
687 ; CHECK-LABEL: name: splatvector_nxv8i32
688 ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
689 ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 8 x s32>) = G_SPLAT_VECTOR [[C]](s64)
690 ; CHECK-NEXT: $v8m4 = COPY [[SPLAT_VECTOR]](<vscale x 8 x s32>)
691 ; CHECK-NEXT: PseudoRET implicit $v8m4
692 %0:_(<vscale x 8 x s32>) = G_IMPLICIT_DEF
693 %1:_(s32) = G_CONSTANT i32 0
694 %2:_(<vscale x 8 x s32>) = G_SPLAT_VECTOR %1(s32)
695 $v8m4 = COPY %2(<vscale x 8 x s32>)
696 PseudoRET implicit $v8m4
700 name: splatvector_nxv16i32
702 tracksRegLiveness: true
705 ; CHECK-LABEL: name: splatvector_nxv16i32
706 ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
707 ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 16 x s32>) = G_SPLAT_VECTOR [[C]](s64)
708 ; CHECK-NEXT: $v8m8 = COPY [[SPLAT_VECTOR]](<vscale x 16 x s32>)
709 ; CHECK-NEXT: PseudoRET implicit $v8m8
710 %0:_(<vscale x 16 x s32>) = G_IMPLICIT_DEF
711 %1:_(s32) = G_CONSTANT i32 0
712 %2:_(<vscale x 16 x s32>) = G_SPLAT_VECTOR %1(s32)
713 $v8m8 = COPY %2(<vscale x 16 x s32>)
714 PseudoRET implicit $v8m8
718 name: splatvector_nxv1i64
720 tracksRegLiveness: true
723 ; CHECK-LABEL: name: splatvector_nxv1i64
724 ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
725 ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 1 x s64>) = G_SPLAT_VECTOR [[C]](s64)
726 ; CHECK-NEXT: $v8 = COPY [[SPLAT_VECTOR]](<vscale x 1 x s64>)
727 ; CHECK-NEXT: PseudoRET implicit $v8
728 %0:_(<vscale x 1 x s64>) = G_IMPLICIT_DEF
729 %1:_(s64) = G_CONSTANT i64 0
730 %2:_(<vscale x 1 x s64>) = G_SPLAT_VECTOR %1(s64)
731 $v8 = COPY %2(<vscale x 1 x s64>)
732 PseudoRET implicit $v8
736 name: splatvector_nxv2i64
738 tracksRegLiveness: true
741 ; CHECK-LABEL: name: splatvector_nxv2i64
742 ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
743 ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 2 x s64>) = G_SPLAT_VECTOR [[C]](s64)
744 ; CHECK-NEXT: $v8m2 = COPY [[SPLAT_VECTOR]](<vscale x 2 x s64>)
745 ; CHECK-NEXT: PseudoRET implicit $v8m2
746 %0:_(<vscale x 2 x s64>) = G_IMPLICIT_DEF
747 %1:_(s64) = G_CONSTANT i64 0
748 %2:_(<vscale x 2 x s64>) = G_SPLAT_VECTOR %1(s64)
749 $v8m2 = COPY %2(<vscale x 2 x s64>)
750 PseudoRET implicit $v8m2
754 name: splatvector_nxv4i64
756 tracksRegLiveness: true
759 ; CHECK-LABEL: name: splatvector_nxv4i64
760 ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
761 ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 4 x s64>) = G_SPLAT_VECTOR [[C]](s64)
762 ; CHECK-NEXT: $v8m4 = COPY [[SPLAT_VECTOR]](<vscale x 4 x s64>)
763 ; CHECK-NEXT: PseudoRET implicit $v8m4
764 %0:_(<vscale x 4 x s64>) = G_IMPLICIT_DEF
765 %1:_(s64) = G_CONSTANT i64 0
766 %2:_(<vscale x 4 x s64>) = G_SPLAT_VECTOR %1(s64)
767 $v8m4 = COPY %2(<vscale x 4 x s64>)
768 PseudoRET implicit $v8m4
772 name: splatvector_nxv8i64
774 tracksRegLiveness: true
777 ; CHECK-LABEL: name: splatvector_nxv8i64
778 ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
779 ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 8 x s64>) = G_SPLAT_VECTOR [[C]](s64)
780 ; CHECK-NEXT: $v8m8 = COPY [[SPLAT_VECTOR]](<vscale x 8 x s64>)
781 ; CHECK-NEXT: PseudoRET implicit $v8m8
782 %0:_(<vscale x 8 x s64>) = G_IMPLICIT_DEF
783 %1:_(s64) = G_CONSTANT i64 0
784 %2:_(<vscale x 8 x s64>) = G_SPLAT_VECTOR %1(s64)
785 $v8m8 = COPY %2(<vscale x 8 x s64>)
786 PseudoRET implicit $v8m8