1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=riscv64 -mattr=+v,+m -run-pass=instruction-select \
3 # RUN: -simplify-mir -verify-machineinstrs %s -o - | FileCheck %s
6 name: splat_zero_nxv1i1
9 tracksRegLiveness: true
12 ; CHECK-LABEL: name: splat_zero_nxv1i1
13 ; CHECK: [[PseudoVMCLR_M_B1_:%[0-9]+]]:vr = PseudoVMCLR_M_B1 -1, 0 /* e8 */
14 ; CHECK-NEXT: $v0 = COPY [[PseudoVMCLR_M_B1_]]
15 ; CHECK-NEXT: PseudoRET implicit $v0
16 %0:gprb(s64) = G_CONSTANT i64 -1
17 %1:vrb(<vscale x 1 x s1>) = G_VMCLR_VL %0(s64)
18 $v0 = COPY %1(<vscale x 1 x s1>)
19 PseudoRET implicit $v0
23 name: splat_zero_nxv2i1
26 tracksRegLiveness: true
29 ; CHECK-LABEL: name: splat_zero_nxv2i1
30 ; CHECK: [[PseudoVMCLR_M_B2_:%[0-9]+]]:vr = PseudoVMCLR_M_B2 -1, 0 /* e8 */
31 ; CHECK-NEXT: $v0 = COPY [[PseudoVMCLR_M_B2_]]
32 ; CHECK-NEXT: PseudoRET implicit $v0
33 %0:gprb(s64) = G_CONSTANT i64 -1
34 %1:vrb(<vscale x 2 x s1>) = G_VMCLR_VL %0(s64)
35 $v0 = COPY %1(<vscale x 2 x s1>)
36 PseudoRET implicit $v0
40 name: splat_zero_nxv4i1
43 tracksRegLiveness: true
46 ; CHECK-LABEL: name: splat_zero_nxv4i1
47 ; CHECK: [[PseudoVMCLR_M_B4_:%[0-9]+]]:vr = PseudoVMCLR_M_B4 -1, 0 /* e8 */
48 ; CHECK-NEXT: $v0 = COPY [[PseudoVMCLR_M_B4_]]
49 ; CHECK-NEXT: PseudoRET implicit $v0
50 %0:gprb(s64) = G_CONSTANT i64 -1
51 %1:vrb(<vscale x 4 x s1>) = G_VMCLR_VL %0(s64)
52 $v0 = COPY %1(<vscale x 4 x s1>)
53 PseudoRET implicit $v0
57 name: splat_zero_nxv8i1
60 tracksRegLiveness: true
63 ; CHECK-LABEL: name: splat_zero_nxv8i1
64 ; CHECK: [[PseudoVMCLR_M_B8_:%[0-9]+]]:vr = PseudoVMCLR_M_B8 -1, 0 /* e8 */
65 ; CHECK-NEXT: $v0 = COPY [[PseudoVMCLR_M_B8_]]
66 ; CHECK-NEXT: PseudoRET implicit $v0
67 %0:gprb(s64) = G_CONSTANT i64 -1
68 %1:vrb(<vscale x 8 x s1>) = G_VMCLR_VL %0(s64)
69 $v0 = COPY %1(<vscale x 8 x s1>)
70 PseudoRET implicit $v0
74 name: splat_zero_nxv16i1
77 tracksRegLiveness: true
80 ; CHECK-LABEL: name: splat_zero_nxv16i1
81 ; CHECK: [[PseudoVMCLR_M_B16_:%[0-9]+]]:vr = PseudoVMCLR_M_B16 -1, 0 /* e8 */
82 ; CHECK-NEXT: $v0 = COPY [[PseudoVMCLR_M_B16_]]
83 ; CHECK-NEXT: PseudoRET implicit $v0
84 %0:gprb(s64) = G_CONSTANT i64 -1
85 %1:vrb(<vscale x 16 x s1>) = G_VMCLR_VL %0(s64)
86 $v0 = COPY %1(<vscale x 16 x s1>)
87 PseudoRET implicit $v0
91 name: splat_zero_nxv32i1
94 tracksRegLiveness: true
97 ; CHECK-LABEL: name: splat_zero_nxv32i1
98 ; CHECK: [[PseudoVMCLR_M_B32_:%[0-9]+]]:vr = PseudoVMCLR_M_B32 -1, 0 /* e8 */
99 ; CHECK-NEXT: $v0 = COPY [[PseudoVMCLR_M_B32_]]
100 ; CHECK-NEXT: PseudoRET implicit $v0
101 %0:gprb(s64) = G_CONSTANT i64 -1
102 %1:vrb(<vscale x 32 x s1>) = G_VMCLR_VL %0(s64)
103 $v0 = COPY %1(<vscale x 32 x s1>)
104 PseudoRET implicit $v0
108 name: splat_zero_nxv64i1
110 regBankSelected: true
111 tracksRegLiveness: true
114 ; CHECK-LABEL: name: splat_zero_nxv64i1
115 ; CHECK: [[PseudoVMCLR_M_B64_:%[0-9]+]]:vr = PseudoVMCLR_M_B64 -1, 0 /* e8 */
116 ; CHECK-NEXT: $v0 = COPY [[PseudoVMCLR_M_B64_]]
117 ; CHECK-NEXT: PseudoRET implicit $v0
118 %0:gprb(s64) = G_CONSTANT i64 -1
119 %1:vrb(<vscale x 64 x s1>) = G_VMCLR_VL %0(s64)
120 $v0 = COPY %1(<vscale x 64 x s1>)
121 PseudoRET implicit $v0