1*85e42db1SCraig Topper; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2*85e42db1SCraig Topper; RUN: sed 's/iXLen/i32/g' %s | llc -mtriple=riscv32 -mattr=+v \
3*85e42db1SCraig Topper; RUN:   -verify-machineinstrs | FileCheck %s
4*85e42db1SCraig Topper; RUN: sed 's/iXLen/i64/g' %s | llc -mtriple=riscv64 -mattr=+v \
5*85e42db1SCraig Topper; RUN:   -verify-machineinstrs | FileCheck %s
6*85e42db1SCraig Topperdeclare <vscale x 1 x i1> @llvm.riscv.vmsof.nxv1i1(
7*85e42db1SCraig Topper  <vscale x 1 x i1>,
8*85e42db1SCraig Topper  iXLen);
9*85e42db1SCraig Topper
10*85e42db1SCraig Topperdefine <vscale x 1 x i1> @intrinsic_vmsof_m_nxv1i1(<vscale x 1 x i1> %0, iXLen %1) nounwind {
11*85e42db1SCraig Topper; CHECK-LABEL: intrinsic_vmsof_m_nxv1i1:
12*85e42db1SCraig Topper; CHECK:       # %bb.0: # %entry
13*85e42db1SCraig Topper; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, mu
14*85e42db1SCraig Topper; CHECK-NEXT:    vmsof.m v8, v0
15*85e42db1SCraig Topper; CHECK-NEXT:    vmv1r.v v0, v8
16*85e42db1SCraig Topper; CHECK-NEXT:    ret
17*85e42db1SCraig Topperentry:
18*85e42db1SCraig Topper  %a = call <vscale x 1 x i1> @llvm.riscv.vmsof.nxv1i1(
19*85e42db1SCraig Topper    <vscale x 1 x i1> %0,
20*85e42db1SCraig Topper    iXLen %1)
21*85e42db1SCraig Topper  ret <vscale x 1 x i1> %a
22*85e42db1SCraig Topper}
23*85e42db1SCraig Topper
24*85e42db1SCraig Topperdeclare <vscale x 1 x i1> @llvm.riscv.vmsof.mask.nxv1i1(
25*85e42db1SCraig Topper  <vscale x 1 x i1>,
26*85e42db1SCraig Topper  <vscale x 1 x i1>,
27*85e42db1SCraig Topper  <vscale x 1 x i1>,
28*85e42db1SCraig Topper  iXLen);
29*85e42db1SCraig Topper
30*85e42db1SCraig Topperdefine <vscale x 1 x i1> @intrinsic_vmsof_mask_m_nxv1i1_nxv1i1(<vscale x 1 x i1> %0, <vscale x 1 x i1> %1, <vscale x 1 x i1> %2, iXLen %3) nounwind {
31*85e42db1SCraig Topper; CHECK-LABEL: intrinsic_vmsof_mask_m_nxv1i1_nxv1i1:
32*85e42db1SCraig Topper; CHECK:       # %bb.0: # %entry
33*85e42db1SCraig Topper; CHECK-NEXT:    vmv1r.v v10, v0
34*85e42db1SCraig Topper; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, tu, mu
35*85e42db1SCraig Topper; CHECK-NEXT:    vmv1r.v v0, v9
36*85e42db1SCraig Topper; CHECK-NEXT:    vmsof.m v10, v8, v0.t
37*85e42db1SCraig Topper; CHECK-NEXT:    vmv1r.v v0, v10
38*85e42db1SCraig Topper; CHECK-NEXT:    ret
39*85e42db1SCraig Topperentry:
40*85e42db1SCraig Topper  %a = call <vscale x 1 x i1> @llvm.riscv.vmsof.mask.nxv1i1(
41*85e42db1SCraig Topper    <vscale x 1 x i1> %0,
42*85e42db1SCraig Topper    <vscale x 1 x i1> %1,
43*85e42db1SCraig Topper    <vscale x 1 x i1> %2,
44*85e42db1SCraig Topper    iXLen %3)
45*85e42db1SCraig Topper  ret <vscale x 1 x i1> %a
46*85e42db1SCraig Topper}
47*85e42db1SCraig Topper
48*85e42db1SCraig Topperdeclare <vscale x 2 x i1> @llvm.riscv.vmsof.nxv2i1(
49*85e42db1SCraig Topper  <vscale x 2 x i1>,
50*85e42db1SCraig Topper  iXLen);
51*85e42db1SCraig Topper
52*85e42db1SCraig Topperdefine <vscale x 2 x i1> @intrinsic_vmsof_m_nxv2i1(<vscale x 2 x i1> %0, iXLen %1) nounwind {
53*85e42db1SCraig Topper; CHECK-LABEL: intrinsic_vmsof_m_nxv2i1:
54*85e42db1SCraig Topper; CHECK:       # %bb.0: # %entry
55*85e42db1SCraig Topper; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, mu
56*85e42db1SCraig Topper; CHECK-NEXT:    vmsof.m v8, v0
57*85e42db1SCraig Topper; CHECK-NEXT:    vmv1r.v v0, v8
58*85e42db1SCraig Topper; CHECK-NEXT:    ret
59*85e42db1SCraig Topperentry:
60*85e42db1SCraig Topper  %a = call <vscale x 2 x i1> @llvm.riscv.vmsof.nxv2i1(
61*85e42db1SCraig Topper    <vscale x 2 x i1> %0,
62*85e42db1SCraig Topper    iXLen %1)
63*85e42db1SCraig Topper  ret <vscale x 2 x i1> %a
64*85e42db1SCraig Topper}
65*85e42db1SCraig Topper
66*85e42db1SCraig Topperdeclare <vscale x 2 x i1> @llvm.riscv.vmsof.mask.nxv2i1(
67*85e42db1SCraig Topper  <vscale x 2 x i1>,
68*85e42db1SCraig Topper  <vscale x 2 x i1>,
69*85e42db1SCraig Topper  <vscale x 2 x i1>,
70*85e42db1SCraig Topper  iXLen);
71*85e42db1SCraig Topper
72*85e42db1SCraig Topperdefine <vscale x 2 x i1> @intrinsic_vmsof_mask_m_nxv2i1_nxv2i1(<vscale x 2 x i1> %0, <vscale x 2 x i1> %1, <vscale x 2 x i1> %2, iXLen %3) nounwind {
73*85e42db1SCraig Topper; CHECK-LABEL: intrinsic_vmsof_mask_m_nxv2i1_nxv2i1:
74*85e42db1SCraig Topper; CHECK:       # %bb.0: # %entry
75*85e42db1SCraig Topper; CHECK-NEXT:    vmv1r.v v10, v0
76*85e42db1SCraig Topper; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, tu, mu
77*85e42db1SCraig Topper; CHECK-NEXT:    vmv1r.v v0, v9
78*85e42db1SCraig Topper; CHECK-NEXT:    vmsof.m v10, v8, v0.t
79*85e42db1SCraig Topper; CHECK-NEXT:    vmv1r.v v0, v10
80*85e42db1SCraig Topper; CHECK-NEXT:    ret
81*85e42db1SCraig Topperentry:
82*85e42db1SCraig Topper  %a = call <vscale x 2 x i1> @llvm.riscv.vmsof.mask.nxv2i1(
83*85e42db1SCraig Topper    <vscale x 2 x i1> %0,
84*85e42db1SCraig Topper    <vscale x 2 x i1> %1,
85*85e42db1SCraig Topper    <vscale x 2 x i1> %2,
86*85e42db1SCraig Topper    iXLen %3)
87*85e42db1SCraig Topper  ret <vscale x 2 x i1> %a
88*85e42db1SCraig Topper}
89*85e42db1SCraig Topper
90*85e42db1SCraig Topperdeclare <vscale x 4 x i1> @llvm.riscv.vmsof.nxv4i1(
91*85e42db1SCraig Topper  <vscale x 4 x i1>,
92*85e42db1SCraig Topper  iXLen);
93*85e42db1SCraig Topper
94*85e42db1SCraig Topperdefine <vscale x 4 x i1> @intrinsic_vmsof_m_nxv4i1(<vscale x 4 x i1> %0, iXLen %1) nounwind {
95*85e42db1SCraig Topper; CHECK-LABEL: intrinsic_vmsof_m_nxv4i1:
96*85e42db1SCraig Topper; CHECK:       # %bb.0: # %entry
97*85e42db1SCraig Topper; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, mu
98*85e42db1SCraig Topper; CHECK-NEXT:    vmsof.m v8, v0
99*85e42db1SCraig Topper; CHECK-NEXT:    vmv1r.v v0, v8
100*85e42db1SCraig Topper; CHECK-NEXT:    ret
101*85e42db1SCraig Topperentry:
102*85e42db1SCraig Topper  %a = call <vscale x 4 x i1> @llvm.riscv.vmsof.nxv4i1(
103*85e42db1SCraig Topper    <vscale x 4 x i1> %0,
104*85e42db1SCraig Topper    iXLen %1)
105*85e42db1SCraig Topper  ret <vscale x 4 x i1> %a
106*85e42db1SCraig Topper}
107*85e42db1SCraig Topper
108*85e42db1SCraig Topperdeclare <vscale x 4 x i1> @llvm.riscv.vmsof.mask.nxv4i1(
109*85e42db1SCraig Topper  <vscale x 4 x i1>,
110*85e42db1SCraig Topper  <vscale x 4 x i1>,
111*85e42db1SCraig Topper  <vscale x 4 x i1>,
112*85e42db1SCraig Topper  iXLen);
113*85e42db1SCraig Topper
114*85e42db1SCraig Topperdefine <vscale x 4 x i1> @intrinsic_vmsof_mask_m_nxv4i1_nxv4i1(<vscale x 4 x i1> %0, <vscale x 4 x i1> %1, <vscale x 4 x i1> %2, iXLen %3) nounwind {
115*85e42db1SCraig Topper; CHECK-LABEL: intrinsic_vmsof_mask_m_nxv4i1_nxv4i1:
116*85e42db1SCraig Topper; CHECK:       # %bb.0: # %entry
117*85e42db1SCraig Topper; CHECK-NEXT:    vmv1r.v v10, v0
118*85e42db1SCraig Topper; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, tu, mu
119*85e42db1SCraig Topper; CHECK-NEXT:    vmv1r.v v0, v9
120*85e42db1SCraig Topper; CHECK-NEXT:    vmsof.m v10, v8, v0.t
121*85e42db1SCraig Topper; CHECK-NEXT:    vmv1r.v v0, v10
122*85e42db1SCraig Topper; CHECK-NEXT:    ret
123*85e42db1SCraig Topperentry:
124*85e42db1SCraig Topper  %a = call <vscale x 4 x i1> @llvm.riscv.vmsof.mask.nxv4i1(
125*85e42db1SCraig Topper    <vscale x 4 x i1> %0,
126*85e42db1SCraig Topper    <vscale x 4 x i1> %1,
127*85e42db1SCraig Topper    <vscale x 4 x i1> %2,
128*85e42db1SCraig Topper    iXLen %3)
129*85e42db1SCraig Topper  ret <vscale x 4 x i1> %a
130*85e42db1SCraig Topper}
131*85e42db1SCraig Topper
132*85e42db1SCraig Topperdeclare <vscale x 8 x i1> @llvm.riscv.vmsof.nxv8i1(
133*85e42db1SCraig Topper  <vscale x 8 x i1>,
134*85e42db1SCraig Topper  iXLen);
135*85e42db1SCraig Topper
136*85e42db1SCraig Topperdefine <vscale x 8 x i1> @intrinsic_vmsof_m_nxv8i1(<vscale x 8 x i1> %0, iXLen %1) nounwind {
137*85e42db1SCraig Topper; CHECK-LABEL: intrinsic_vmsof_m_nxv8i1:
138*85e42db1SCraig Topper; CHECK:       # %bb.0: # %entry
139*85e42db1SCraig Topper; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, mu
140*85e42db1SCraig Topper; CHECK-NEXT:    vmsof.m v8, v0
141*85e42db1SCraig Topper; CHECK-NEXT:    vmv.v.v v0, v8
142*85e42db1SCraig Topper; CHECK-NEXT:    ret
143*85e42db1SCraig Topperentry:
144*85e42db1SCraig Topper  %a = call <vscale x 8 x i1> @llvm.riscv.vmsof.nxv8i1(
145*85e42db1SCraig Topper    <vscale x 8 x i1> %0,
146*85e42db1SCraig Topper    iXLen %1)
147*85e42db1SCraig Topper  ret <vscale x 8 x i1> %a
148*85e42db1SCraig Topper}
149*85e42db1SCraig Topper
150*85e42db1SCraig Topperdeclare <vscale x 8 x i1> @llvm.riscv.vmsof.mask.nxv8i1(
151*85e42db1SCraig Topper  <vscale x 8 x i1>,
152*85e42db1SCraig Topper  <vscale x 8 x i1>,
153*85e42db1SCraig Topper  <vscale x 8 x i1>,
154*85e42db1SCraig Topper  iXLen);
155*85e42db1SCraig Topper
156*85e42db1SCraig Topperdefine <vscale x 8 x i1> @intrinsic_vmsof_mask_m_nxv8i1_nxv8i1(<vscale x 8 x i1> %0, <vscale x 8 x i1> %1, <vscale x 8 x i1> %2, iXLen %3) nounwind {
157*85e42db1SCraig Topper; CHECK-LABEL: intrinsic_vmsof_mask_m_nxv8i1_nxv8i1:
158*85e42db1SCraig Topper; CHECK:       # %bb.0: # %entry
159*85e42db1SCraig Topper; CHECK-NEXT:    vmv1r.v v10, v0
160*85e42db1SCraig Topper; CHECK-NEXT:    vsetvli zero, a0, e8, m1, tu, mu
161*85e42db1SCraig Topper; CHECK-NEXT:    vmv1r.v v0, v9
162*85e42db1SCraig Topper; CHECK-NEXT:    vmsof.m v10, v8, v0.t
163*85e42db1SCraig Topper; CHECK-NEXT:    vmv1r.v v0, v10
164*85e42db1SCraig Topper; CHECK-NEXT:    ret
165*85e42db1SCraig Topperentry:
166*85e42db1SCraig Topper  %a = call <vscale x 8 x i1> @llvm.riscv.vmsof.mask.nxv8i1(
167*85e42db1SCraig Topper    <vscale x 8 x i1> %0,
168*85e42db1SCraig Topper    <vscale x 8 x i1> %1,
169*85e42db1SCraig Topper    <vscale x 8 x i1> %2,
170*85e42db1SCraig Topper    iXLen %3)
171*85e42db1SCraig Topper  ret <vscale x 8 x i1> %a
172*85e42db1SCraig Topper}
173*85e42db1SCraig Topper
174*85e42db1SCraig Topperdeclare <vscale x 16 x i1> @llvm.riscv.vmsof.nxv16i1(
175*85e42db1SCraig Topper  <vscale x 16 x i1>,
176*85e42db1SCraig Topper  iXLen);
177*85e42db1SCraig Topper
178*85e42db1SCraig Topperdefine <vscale x 16 x i1> @intrinsic_vmsof_m_nxv16i1(<vscale x 16 x i1> %0, iXLen %1) nounwind {
179*85e42db1SCraig Topper; CHECK-LABEL: intrinsic_vmsof_m_nxv16i1:
180*85e42db1SCraig Topper; CHECK:       # %bb.0: # %entry
181*85e42db1SCraig Topper; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, mu
182*85e42db1SCraig Topper; CHECK-NEXT:    vmsof.m v8, v0
183*85e42db1SCraig Topper; CHECK-NEXT:    vmv1r.v v0, v8
184*85e42db1SCraig Topper; CHECK-NEXT:    ret
185*85e42db1SCraig Topperentry:
186*85e42db1SCraig Topper  %a = call <vscale x 16 x i1> @llvm.riscv.vmsof.nxv16i1(
187*85e42db1SCraig Topper    <vscale x 16 x i1> %0,
188*85e42db1SCraig Topper    iXLen %1)
189*85e42db1SCraig Topper  ret <vscale x 16 x i1> %a
190*85e42db1SCraig Topper}
191*85e42db1SCraig Topper
192*85e42db1SCraig Topperdeclare <vscale x 16 x i1> @llvm.riscv.vmsof.mask.nxv16i1(
193*85e42db1SCraig Topper  <vscale x 16 x i1>,
194*85e42db1SCraig Topper  <vscale x 16 x i1>,
195*85e42db1SCraig Topper  <vscale x 16 x i1>,
196*85e42db1SCraig Topper  iXLen);
197*85e42db1SCraig Topper
198*85e42db1SCraig Topperdefine <vscale x 16 x i1> @intrinsic_vmsof_mask_m_nxv16i1_nxv16i1(<vscale x 16 x i1> %0, <vscale x 16 x i1> %1, <vscale x 16 x i1> %2, iXLen %3) nounwind {
199*85e42db1SCraig Topper; CHECK-LABEL: intrinsic_vmsof_mask_m_nxv16i1_nxv16i1:
200*85e42db1SCraig Topper; CHECK:       # %bb.0: # %entry
201*85e42db1SCraig Topper; CHECK-NEXT:    vmv1r.v v10, v0
202*85e42db1SCraig Topper; CHECK-NEXT:    vsetvli zero, a0, e8, m2, tu, mu
203*85e42db1SCraig Topper; CHECK-NEXT:    vmv1r.v v0, v9
204*85e42db1SCraig Topper; CHECK-NEXT:    vmsof.m v10, v8, v0.t
205*85e42db1SCraig Topper; CHECK-NEXT:    vmv1r.v v0, v10
206*85e42db1SCraig Topper; CHECK-NEXT:    ret
207*85e42db1SCraig Topperentry:
208*85e42db1SCraig Topper  %a = call <vscale x 16 x i1> @llvm.riscv.vmsof.mask.nxv16i1(
209*85e42db1SCraig Topper    <vscale x 16 x i1> %0,
210*85e42db1SCraig Topper    <vscale x 16 x i1> %1,
211*85e42db1SCraig Topper    <vscale x 16 x i1> %2,
212*85e42db1SCraig Topper    iXLen %3)
213*85e42db1SCraig Topper  ret <vscale x 16 x i1> %a
214*85e42db1SCraig Topper}
215*85e42db1SCraig Topper
216*85e42db1SCraig Topperdeclare <vscale x 32 x i1> @llvm.riscv.vmsof.nxv32i1(
217*85e42db1SCraig Topper  <vscale x 32 x i1>,
218*85e42db1SCraig Topper  iXLen);
219*85e42db1SCraig Topper
220*85e42db1SCraig Topperdefine <vscale x 32 x i1> @intrinsic_vmsof_m_nxv32i1(<vscale x 32 x i1> %0, iXLen %1) nounwind {
221*85e42db1SCraig Topper; CHECK-LABEL: intrinsic_vmsof_m_nxv32i1:
222*85e42db1SCraig Topper; CHECK:       # %bb.0: # %entry
223*85e42db1SCraig Topper; CHECK-NEXT:    vsetvli zero, a0, e8, m4, ta, mu
224*85e42db1SCraig Topper; CHECK-NEXT:    vmsof.m v8, v0
225*85e42db1SCraig Topper; CHECK-NEXT:    vmv1r.v v0, v8
226*85e42db1SCraig Topper; CHECK-NEXT:    ret
227*85e42db1SCraig Topperentry:
228*85e42db1SCraig Topper  %a = call <vscale x 32 x i1> @llvm.riscv.vmsof.nxv32i1(
229*85e42db1SCraig Topper    <vscale x 32 x i1> %0,
230*85e42db1SCraig Topper    iXLen %1)
231*85e42db1SCraig Topper  ret <vscale x 32 x i1> %a
232*85e42db1SCraig Topper}
233*85e42db1SCraig Topper
234*85e42db1SCraig Topperdeclare <vscale x 32 x i1> @llvm.riscv.vmsof.mask.nxv32i1(
235*85e42db1SCraig Topper  <vscale x 32 x i1>,
236*85e42db1SCraig Topper  <vscale x 32 x i1>,
237*85e42db1SCraig Topper  <vscale x 32 x i1>,
238*85e42db1SCraig Topper  iXLen);
239*85e42db1SCraig Topper
240*85e42db1SCraig Topperdefine <vscale x 32 x i1> @intrinsic_vmsof_mask_m_nxv32i1_nxv32i1(<vscale x 32 x i1> %0, <vscale x 32 x i1> %1, <vscale x 32 x i1> %2, iXLen %3) nounwind {
241*85e42db1SCraig Topper; CHECK-LABEL: intrinsic_vmsof_mask_m_nxv32i1_nxv32i1:
242*85e42db1SCraig Topper; CHECK:       # %bb.0: # %entry
243*85e42db1SCraig Topper; CHECK-NEXT:    vmv1r.v v10, v0
244*85e42db1SCraig Topper; CHECK-NEXT:    vsetvli zero, a0, e8, m4, tu, mu
245*85e42db1SCraig Topper; CHECK-NEXT:    vmv1r.v v0, v9
246*85e42db1SCraig Topper; CHECK-NEXT:    vmsof.m v10, v8, v0.t
247*85e42db1SCraig Topper; CHECK-NEXT:    vmv1r.v v0, v10
248*85e42db1SCraig Topper; CHECK-NEXT:    ret
249*85e42db1SCraig Topperentry:
250*85e42db1SCraig Topper  %a = call <vscale x 32 x i1> @llvm.riscv.vmsof.mask.nxv32i1(
251*85e42db1SCraig Topper    <vscale x 32 x i1> %0,
252*85e42db1SCraig Topper    <vscale x 32 x i1> %1,
253*85e42db1SCraig Topper    <vscale x 32 x i1> %2,
254*85e42db1SCraig Topper    iXLen %3)
255*85e42db1SCraig Topper  ret <vscale x 32 x i1> %a
256*85e42db1SCraig Topper}
257*85e42db1SCraig Topper
258*85e42db1SCraig Topperdeclare <vscale x 64 x i1> @llvm.riscv.vmsof.nxv64i1(
259*85e42db1SCraig Topper  <vscale x 64 x i1>,
260*85e42db1SCraig Topper  iXLen);
261*85e42db1SCraig Topper
262*85e42db1SCraig Topperdefine <vscale x 64 x i1> @intrinsic_vmsof_m_nxv64i1(<vscale x 64 x i1> %0, iXLen %1) nounwind {
263*85e42db1SCraig Topper; CHECK-LABEL: intrinsic_vmsof_m_nxv64i1:
264*85e42db1SCraig Topper; CHECK:       # %bb.0: # %entry
265*85e42db1SCraig Topper; CHECK-NEXT:    vsetvli zero, a0, e8, m8, ta, mu
266*85e42db1SCraig Topper; CHECK-NEXT:    vmsof.m v8, v0
267*85e42db1SCraig Topper; CHECK-NEXT:    vmv1r.v v0, v8
268*85e42db1SCraig Topper; CHECK-NEXT:    ret
269*85e42db1SCraig Topperentry:
270*85e42db1SCraig Topper  %a = call <vscale x 64 x i1> @llvm.riscv.vmsof.nxv64i1(
271*85e42db1SCraig Topper    <vscale x 64 x i1> %0,
272*85e42db1SCraig Topper    iXLen %1)
273*85e42db1SCraig Topper  ret <vscale x 64 x i1> %a
274*85e42db1SCraig Topper}
275*85e42db1SCraig Topper
276*85e42db1SCraig Topperdeclare <vscale x 64 x i1> @llvm.riscv.vmsof.mask.nxv64i1(
277*85e42db1SCraig Topper  <vscale x 64 x i1>,
278*85e42db1SCraig Topper  <vscale x 64 x i1>,
279*85e42db1SCraig Topper  <vscale x 64 x i1>,
280*85e42db1SCraig Topper  iXLen);
281*85e42db1SCraig Topper
282*85e42db1SCraig Topperdefine <vscale x 64 x i1> @intrinsic_vmsof_mask_m_nxv64i1_nxv64i1(<vscale x 64 x i1> %0, <vscale x 64 x i1> %1, <vscale x 64 x i1> %2, iXLen %3) nounwind {
283*85e42db1SCraig Topper; CHECK-LABEL: intrinsic_vmsof_mask_m_nxv64i1_nxv64i1:
284*85e42db1SCraig Topper; CHECK:       # %bb.0: # %entry
285*85e42db1SCraig Topper; CHECK-NEXT:    vmv1r.v v10, v0
286*85e42db1SCraig Topper; CHECK-NEXT:    vsetvli zero, a0, e8, m8, tu, mu
287*85e42db1SCraig Topper; CHECK-NEXT:    vmv1r.v v0, v9
288*85e42db1SCraig Topper; CHECK-NEXT:    vmsof.m v10, v8, v0.t
289*85e42db1SCraig Topper; CHECK-NEXT:    vmv1r.v v0, v10
290*85e42db1SCraig Topper; CHECK-NEXT:    ret
291*85e42db1SCraig Topperentry:
292*85e42db1SCraig Topper  %a = call <vscale x 64 x i1> @llvm.riscv.vmsof.mask.nxv64i1(
293*85e42db1SCraig Topper    <vscale x 64 x i1> %0,
294*85e42db1SCraig Topper    <vscale x 64 x i1> %1,
295*85e42db1SCraig Topper    <vscale x 64 x i1> %2,
296*85e42db1SCraig Topper    iXLen %3)
297*85e42db1SCraig Topper  ret <vscale x 64 x i1> %a
298*85e42db1SCraig Topper}
299