[clang] Move warning about memset/memcpy to NonTriviallyCopyable type… (#117387)
[llvm-project.git] / llvm / test / CodeGen / RISCV / rvv / fixed-vectors-xsfvcp-xv.ll
blobb553a62ae496a5ed87dee07c36d8912d082221e8
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN:  sed 's/iXLen/i32/g' %s | llc -mtriple=riscv32 -mattr=+v,+zvfh,+xsfvcp \
3 ; RUN:    -verify-machineinstrs | FileCheck %s
4 ; RUN:  sed 's/iXLen/i64/g' %s | llc -mtriple=riscv64 -mattr=+v,+zvfh,+xsfvcp \
5 ; RUN:    -verify-machineinstrs | FileCheck %s
7 define void @test_sf_vc_vv_se_e8mf8(<1 x i8> %vs2, <1 x i8> %vs1, iXLen %vl) {
8 ; CHECK-LABEL: test_sf_vc_vv_se_e8mf8:
9 ; CHECK:       # %bb.0: # %entry
10 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
11 ; CHECK-NEXT:    sf.vc.vv 3, 31, v8, v9
12 ; CHECK-NEXT:    ret
13 entry:
14   tail call void @llvm.riscv.sf.vc.vv.se.iXLen.nxv1i8.nxv1i8.iXLen(iXLen 3, iXLen 31, <1 x i8> %vs2, <1 x i8> %vs1, iXLen %vl)
15   ret void
18 declare void @llvm.riscv.sf.vc.vv.se.iXLen.nxv1i8.nxv1i8.iXLen(iXLen, iXLen, <1 x i8>, <1 x i8>, iXLen)
20 define void @test_sf_vc_vv_se_e8mf4(<2 x i8> %vs2, <2 x i8> %vs1, iXLen %vl) {
21 ; CHECK-LABEL: test_sf_vc_vv_se_e8mf4:
22 ; CHECK:       # %bb.0: # %entry
23 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
24 ; CHECK-NEXT:    sf.vc.vv 3, 31, v8, v9
25 ; CHECK-NEXT:    ret
26 entry:
27   tail call void @llvm.riscv.sf.vc.vv.se.iXLen.nxv2i8.nxv2i8.iXLen(iXLen 3, iXLen 31, <2 x i8> %vs2, <2 x i8> %vs1, iXLen %vl)
28   ret void
31 declare void @llvm.riscv.sf.vc.vv.se.iXLen.nxv2i8.nxv2i8.iXLen(iXLen, iXLen, <2 x i8>, <2 x i8>, iXLen)
33 define void @test_sf_vc_vv_se_e8mf2(<4 x i8> %vs2, <4 x i8> %vs1, iXLen %vl) {
34 ; CHECK-LABEL: test_sf_vc_vv_se_e8mf2:
35 ; CHECK:       # %bb.0: # %entry
36 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, ma
37 ; CHECK-NEXT:    sf.vc.vv 3, 31, v8, v9
38 ; CHECK-NEXT:    ret
39 entry:
40   tail call void @llvm.riscv.sf.vc.vv.se.iXLen.nxv4i8.nxv4i8.iXLen(iXLen 3, iXLen 31, <4 x i8> %vs2, <4 x i8> %vs1, iXLen %vl)
41   ret void
44 declare void @llvm.riscv.sf.vc.vv.se.iXLen.nxv4i8.nxv4i8.iXLen(iXLen, iXLen, <4 x i8>, <4 x i8>, iXLen)
46 define void @test_sf_vc_vv_se_e8m1(<8 x i8> %vs2, <8 x i8> %vs1, iXLen %vl) {
47 ; CHECK-LABEL: test_sf_vc_vv_se_e8m1:
48 ; CHECK:       # %bb.0: # %entry
49 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
50 ; CHECK-NEXT:    sf.vc.vv 3, 31, v8, v9
51 ; CHECK-NEXT:    ret
52 entry:
53   tail call void @llvm.riscv.sf.vc.vv.se.iXLen.nxv8i8.nxv8i8.iXLen(iXLen 3, iXLen 31, <8 x i8> %vs2, <8 x i8> %vs1, iXLen %vl)
54   ret void
57 declare void @llvm.riscv.sf.vc.vv.se.iXLen.nxv8i8.nxv8i8.iXLen(iXLen, iXLen, <8 x i8>, <8 x i8>, iXLen)
59 define void @test_sf_vc_vv_se_e8m2(<16 x i8> %vs2, <16 x i8> %vs1, iXLen %vl) {
60 ; CHECK-LABEL: test_sf_vc_vv_se_e8m2:
61 ; CHECK:       # %bb.0: # %entry
62 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
63 ; CHECK-NEXT:    sf.vc.vv 3, 31, v8, v9
64 ; CHECK-NEXT:    ret
65 entry:
66   tail call void @llvm.riscv.sf.vc.vv.se.iXLen.nxv16i8.nxv16i8.iXLen(iXLen 3, iXLen 31, <16 x i8> %vs2, <16 x i8> %vs1, iXLen %vl)
67   ret void
70 declare void @llvm.riscv.sf.vc.vv.se.iXLen.nxv16i8.nxv16i8.iXLen(iXLen, iXLen, <16 x i8>, <16 x i8>, iXLen)
72 define void @test_sf_vc_vv_se_e8m4(<32 x i8> %vs2, <32 x i8> %vs1, iXLen %vl) {
73 ; CHECK-LABEL: test_sf_vc_vv_se_e8m4:
74 ; CHECK:       # %bb.0: # %entry
75 ; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, ma
76 ; CHECK-NEXT:    sf.vc.vv 3, 31, v8, v10
77 ; CHECK-NEXT:    ret
78 entry:
79   tail call void @llvm.riscv.sf.vc.vv.se.iXLen.nxv32i8.nxv32i8.iXLen(iXLen 3, iXLen 31, <32 x i8> %vs2, <32 x i8> %vs1, iXLen %vl)
80   ret void
83 declare void @llvm.riscv.sf.vc.vv.se.iXLen.nxv32i8.nxv32i8.iXLen(iXLen, iXLen, <32 x i8>, <32 x i8>, iXLen)
85 define void @test_sf_vc_vv_se_e8m8(<64 x i8> %vs2, <64 x i8> %vs1, iXLen %vl) {
86 ; CHECK-LABEL: test_sf_vc_vv_se_e8m8:
87 ; CHECK:       # %bb.0: # %entry
88 ; CHECK-NEXT:    vsetvli zero, a0, e8, m4, ta, ma
89 ; CHECK-NEXT:    sf.vc.vv 3, 31, v8, v12
90 ; CHECK-NEXT:    ret
91 entry:
92   tail call void @llvm.riscv.sf.vc.vv.se.iXLen.nxv64i8.nxv64i8.iXLen(iXLen 3, iXLen 31, <64 x i8> %vs2, <64 x i8> %vs1, iXLen %vl)
93   ret void
96 declare void @llvm.riscv.sf.vc.vv.se.iXLen.nxv64i8.nxv64i8.iXLen(iXLen, iXLen, <64 x i8>, <64 x i8>, iXLen)
98 define void @test_sf_vc_vv_se_e16mf4(<1 x i16> %vs2, <1 x i16> %vs1, iXLen %vl) {
99 ; CHECK-LABEL: test_sf_vc_vv_se_e16mf4:
100 ; CHECK:       # %bb.0: # %entry
101 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
102 ; CHECK-NEXT:    sf.vc.vv 3, 31, v8, v9
103 ; CHECK-NEXT:    ret
104 entry:
105   tail call void @llvm.riscv.sf.vc.vv.se.iXLen.nxv1i16.nxv1i16.iXLen(iXLen 3, iXLen 31, <1 x i16> %vs2, <1 x i16> %vs1, iXLen %vl)
106   ret void
109 declare void @llvm.riscv.sf.vc.vv.se.iXLen.nxv1i16.nxv1i16.iXLen(iXLen, iXLen, <1 x i16>, <1 x i16>, iXLen)
111 define void @test_sf_vc_vv_se_e16mf2(<2 x i16> %vs2, <2 x i16> %vs1, iXLen %vl) {
112 ; CHECK-LABEL: test_sf_vc_vv_se_e16mf2:
113 ; CHECK:       # %bb.0: # %entry
114 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
115 ; CHECK-NEXT:    sf.vc.vv 3, 31, v8, v9
116 ; CHECK-NEXT:    ret
117 entry:
118   tail call void @llvm.riscv.sf.vc.vv.se.iXLen.nxv2i16.nxv2i16.iXLen(iXLen 3, iXLen 31, <2 x i16> %vs2, <2 x i16> %vs1, iXLen %vl)
119   ret void
122 declare void @llvm.riscv.sf.vc.vv.se.iXLen.nxv2i16.nxv2i16.iXLen(iXLen, iXLen, <2 x i16>, <2 x i16>, iXLen)
124 define void @test_sf_vc_vv_se_e16m1(<4 x i16> %vs2, <4 x i16> %vs1, iXLen %vl) {
125 ; CHECK-LABEL: test_sf_vc_vv_se_e16m1:
126 ; CHECK:       # %bb.0: # %entry
127 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
128 ; CHECK-NEXT:    sf.vc.vv 3, 31, v8, v9
129 ; CHECK-NEXT:    ret
130 entry:
131   tail call void @llvm.riscv.sf.vc.vv.se.iXLen.nxv4i16.nxv4i16.iXLen(iXLen 3, iXLen 31, <4 x i16> %vs2, <4 x i16> %vs1, iXLen %vl)
132   ret void
135 declare void @llvm.riscv.sf.vc.vv.se.iXLen.nxv4i16.nxv4i16.iXLen(iXLen, iXLen, <4 x i16>, <4 x i16>, iXLen)
137 define void @test_sf_vc_vv_se_e16m2(<8 x i16> %vs2, <8 x i16> %vs1, iXLen %vl) {
138 ; CHECK-LABEL: test_sf_vc_vv_se_e16m2:
139 ; CHECK:       # %bb.0: # %entry
140 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
141 ; CHECK-NEXT:    sf.vc.vv 3, 31, v8, v9
142 ; CHECK-NEXT:    ret
143 entry:
144   tail call void @llvm.riscv.sf.vc.vv.se.iXLen.nxv8i16.nxv8i16.iXLen(iXLen 3, iXLen 31, <8 x i16> %vs2, <8 x i16> %vs1, iXLen %vl)
145   ret void
148 declare void @llvm.riscv.sf.vc.vv.se.iXLen.nxv8i16.nxv8i16.iXLen(iXLen, iXLen, <8 x i16>, <8 x i16>, iXLen)
150 define void @test_sf_vc_vv_se_e16m4(<16 x i16> %vs2, <16 x i16> %vs1, iXLen %vl) {
151 ; CHECK-LABEL: test_sf_vc_vv_se_e16m4:
152 ; CHECK:       # %bb.0: # %entry
153 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
154 ; CHECK-NEXT:    sf.vc.vv 3, 31, v8, v10
155 ; CHECK-NEXT:    ret
156 entry:
157   tail call void @llvm.riscv.sf.vc.vv.se.iXLen.nxv16i16.nxv16i16.iXLen(iXLen 3, iXLen 31, <16 x i16> %vs2, <16 x i16> %vs1, iXLen %vl)
158   ret void
161 declare void @llvm.riscv.sf.vc.vv.se.iXLen.nxv16i16.nxv16i16.iXLen(iXLen, iXLen, <16 x i16>, <16 x i16>, iXLen)
163 define void @test_sf_vc_vv_se_e16m8(<32 x i16> %vs2, <32 x i16> %vs1, iXLen %vl) {
164 ; CHECK-LABEL: test_sf_vc_vv_se_e16m8:
165 ; CHECK:       # %bb.0: # %entry
166 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
167 ; CHECK-NEXT:    sf.vc.vv 3, 31, v8, v12
168 ; CHECK-NEXT:    ret
169 entry:
170   tail call void @llvm.riscv.sf.vc.vv.se.iXLen.nxv32i16.nxv32i16.iXLen(iXLen 3, iXLen 31, <32 x i16> %vs2, <32 x i16> %vs1, iXLen %vl)
171   ret void
174 declare void @llvm.riscv.sf.vc.vv.se.iXLen.nxv32i16.nxv32i16.iXLen(iXLen, iXLen, <32 x i16>, <32 x i16>, iXLen)
176 define void @test_sf_vc_vv_se_e32mf2(<1 x i32> %vs2, <1 x i32> %vs1, iXLen %vl) {
177 ; CHECK-LABEL: test_sf_vc_vv_se_e32mf2:
178 ; CHECK:       # %bb.0: # %entry
179 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
180 ; CHECK-NEXT:    sf.vc.vv 3, 31, v8, v9
181 ; CHECK-NEXT:    ret
182 entry:
183   tail call void @llvm.riscv.sf.vc.vv.se.iXLen.nxv1i32.nxv1i32.iXLen(iXLen 3, iXLen 31, <1 x i32> %vs2, <1 x i32> %vs1, iXLen %vl)
184   ret void
187 declare void @llvm.riscv.sf.vc.vv.se.iXLen.nxv1i32.nxv1i32.iXLen(iXLen, iXLen, <1 x i32>, <1 x i32>, iXLen)
189 define void @test_sf_vc_vv_se_e32m1(<2 x i32> %vs2, <2 x i32> %vs1, iXLen %vl) {
190 ; CHECK-LABEL: test_sf_vc_vv_se_e32m1:
191 ; CHECK:       # %bb.0: # %entry
192 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
193 ; CHECK-NEXT:    sf.vc.vv 3, 31, v8, v9
194 ; CHECK-NEXT:    ret
195 entry:
196   tail call void @llvm.riscv.sf.vc.vv.se.iXLen.nxv2i32.nxv2i32.iXLen(iXLen 3, iXLen 31, <2 x i32> %vs2, <2 x i32> %vs1, iXLen %vl)
197   ret void
200 declare void @llvm.riscv.sf.vc.vv.se.iXLen.nxv2i32.nxv2i32.iXLen(iXLen, iXLen, <2 x i32>, <2 x i32>, iXLen)
202 define void @test_sf_vc_vv_se_e32m2(<4 x i32> %vs2, <4 x i32> %vs1, iXLen %vl) {
203 ; CHECK-LABEL: test_sf_vc_vv_se_e32m2:
204 ; CHECK:       # %bb.0: # %entry
205 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
206 ; CHECK-NEXT:    sf.vc.vv 3, 31, v8, v9
207 ; CHECK-NEXT:    ret
208 entry:
209   tail call void @llvm.riscv.sf.vc.vv.se.iXLen.nxv4i32.nxv4i32.iXLen(iXLen 3, iXLen 31, <4 x i32> %vs2, <4 x i32> %vs1, iXLen %vl)
210   ret void
213 declare void @llvm.riscv.sf.vc.vv.se.iXLen.nxv4i32.nxv4i32.iXLen(iXLen, iXLen, <4 x i32>, <4 x i32>, iXLen)
215 define void @test_sf_vc_vv_se_e32m4(<8 x i32> %vs2, <8 x i32> %vs1, iXLen %vl) {
216 ; CHECK-LABEL: test_sf_vc_vv_se_e32m4:
217 ; CHECK:       # %bb.0: # %entry
218 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
219 ; CHECK-NEXT:    sf.vc.vv 3, 31, v8, v10
220 ; CHECK-NEXT:    ret
221 entry:
222   tail call void @llvm.riscv.sf.vc.vv.se.iXLen.nxv8i32.nxv8i32.iXLen(iXLen 3, iXLen 31, <8 x i32> %vs2, <8 x i32> %vs1, iXLen %vl)
223   ret void
226 declare void @llvm.riscv.sf.vc.vv.se.iXLen.nxv8i32.nxv8i32.iXLen(iXLen, iXLen, <8 x i32>, <8 x i32>, iXLen)
228 define void @test_sf_vc_vv_se_e32m8(<16 x i32> %vs2, <16 x i32> %vs1, iXLen %vl) {
229 ; CHECK-LABEL: test_sf_vc_vv_se_e32m8:
230 ; CHECK:       # %bb.0: # %entry
231 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
232 ; CHECK-NEXT:    sf.vc.vv 3, 31, v8, v12
233 ; CHECK-NEXT:    ret
234 entry:
235   tail call void @llvm.riscv.sf.vc.vv.se.iXLen.nxv16i32.nxv16i32.iXLen(iXLen 3, iXLen 31, <16 x i32> %vs2, <16 x i32> %vs1, iXLen %vl)
236   ret void
239 declare void @llvm.riscv.sf.vc.vv.se.iXLen.nxv16i32.nxv16i32.iXLen(iXLen, iXLen, <16 x i32>, <16 x i32>, iXLen)
241 define void @test_sf_vc_vv_se_e64m1(<1 x i64> %vs2, <1 x i64> %vs1, iXLen %vl) {
242 ; CHECK-LABEL: test_sf_vc_vv_se_e64m1:
243 ; CHECK:       # %bb.0: # %entry
244 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
245 ; CHECK-NEXT:    sf.vc.vv 3, 31, v8, v9
246 ; CHECK-NEXT:    ret
247 entry:
248   tail call void @llvm.riscv.sf.vc.vv.se.iXLen.nxv1i64.nxv1i64.iXLen(iXLen 3, iXLen 31, <1 x i64> %vs2, <1 x i64> %vs1, iXLen %vl)
249   ret void
252 declare void @llvm.riscv.sf.vc.vv.se.iXLen.nxv1i64.nxv1i64.iXLen(iXLen, iXLen, <1 x i64>, <1 x i64>, iXLen)
254 define void @test_sf_vc_vv_se_e64m2(<2 x i64> %vs2, <2 x i64> %vs1, iXLen %vl) {
255 ; CHECK-LABEL: test_sf_vc_vv_se_e64m2:
256 ; CHECK:       # %bb.0: # %entry
257 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
258 ; CHECK-NEXT:    sf.vc.vv 3, 31, v8, v9
259 ; CHECK-NEXT:    ret
260 entry:
261   tail call void @llvm.riscv.sf.vc.vv.se.iXLen.nxv2i64.nxv2i64.iXLen(iXLen 3, iXLen 31, <2 x i64> %vs2, <2 x i64> %vs1, iXLen %vl)
262   ret void
265 declare void @llvm.riscv.sf.vc.vv.se.iXLen.nxv2i64.nxv2i64.iXLen(iXLen, iXLen, <2 x i64>, <2 x i64>, iXLen)
267 define void @test_sf_vc_vv_se_e64m4(<4 x i64> %vs2, <4 x i64> %vs1, iXLen %vl) {
268 ; CHECK-LABEL: test_sf_vc_vv_se_e64m4:
269 ; CHECK:       # %bb.0: # %entry
270 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
271 ; CHECK-NEXT:    sf.vc.vv 3, 31, v8, v10
272 ; CHECK-NEXT:    ret
273 entry:
274   tail call void @llvm.riscv.sf.vc.vv.se.iXLen.nxv4i64.nxv4i64.iXLen(iXLen 3, iXLen 31, <4 x i64> %vs2, <4 x i64> %vs1, iXLen %vl)
275   ret void
278 declare void @llvm.riscv.sf.vc.vv.se.iXLen.nxv4i64.nxv4i64.iXLen(iXLen, iXLen, <4 x i64>, <4 x i64>, iXLen)
280 define void @test_sf_vc_vv_se_e64m8(<8 x i64> %vs2, <8 x i64> %vs1, iXLen %vl) {
281 ; CHECK-LABEL: test_sf_vc_vv_se_e64m8:
282 ; CHECK:       # %bb.0: # %entry
283 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
284 ; CHECK-NEXT:    sf.vc.vv 3, 31, v8, v12
285 ; CHECK-NEXT:    ret
286 entry:
287   tail call void @llvm.riscv.sf.vc.vv.se.iXLen.nxv8i64.nxv8i64.iXLen(iXLen 3, iXLen 31, <8 x i64> %vs2, <8 x i64> %vs1, iXLen %vl)
288   ret void
291 declare void @llvm.riscv.sf.vc.vv.se.iXLen.nxv8i64.nxv8i64.iXLen(iXLen, iXLen, <8 x i64>, <8 x i64>, iXLen)
293 define <1 x i8> @test_sf_vc_v_vv_se_e8mf8(<1 x i8> %vs2, <1 x i8> %vs1, iXLen %vl) {
294 ; CHECK-LABEL: test_sf_vc_v_vv_se_e8mf8:
295 ; CHECK:       # %bb.0: # %entry
296 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
297 ; CHECK-NEXT:    sf.vc.v.vv 3, v8, v8, v9
298 ; CHECK-NEXT:    ret
299 entry:
300   %0 = tail call <1 x i8> @llvm.riscv.sf.vc.v.vv.se.nxv1i8.iXLen.nxv1i8.iXLen(iXLen 3, <1 x i8> %vs2, <1 x i8> %vs1, iXLen %vl)
301   ret <1 x i8> %0
304 declare <1 x i8> @llvm.riscv.sf.vc.v.vv.se.nxv1i8.iXLen.nxv1i8.iXLen(iXLen, <1 x i8>, <1 x i8>, iXLen)
306 define <2 x i8> @test_sf_vc_v_vv_se_e8mf4(<2 x i8> %vs2, <2 x i8> %vs1, iXLen %vl) {
307 ; CHECK-LABEL: test_sf_vc_v_vv_se_e8mf4:
308 ; CHECK:       # %bb.0: # %entry
309 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
310 ; CHECK-NEXT:    sf.vc.v.vv 3, v8, v8, v9
311 ; CHECK-NEXT:    ret
312 entry:
313   %0 = tail call <2 x i8> @llvm.riscv.sf.vc.v.vv.se.nxv2i8.iXLen.nxv2i8.iXLen(iXLen 3, <2 x i8> %vs2, <2 x i8> %vs1, iXLen %vl)
314   ret <2 x i8> %0
317 declare <2 x i8> @llvm.riscv.sf.vc.v.vv.se.nxv2i8.iXLen.nxv2i8.iXLen(iXLen, <2 x i8>, <2 x i8>, iXLen)
319 define <4 x i8> @test_sf_vc_v_vv_se_e8mf2(<4 x i8> %vs2, <4 x i8> %vs1, iXLen %vl) {
320 ; CHECK-LABEL: test_sf_vc_v_vv_se_e8mf2:
321 ; CHECK:       # %bb.0: # %entry
322 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, ma
323 ; CHECK-NEXT:    sf.vc.v.vv 3, v8, v8, v9
324 ; CHECK-NEXT:    ret
325 entry:
326   %0 = tail call <4 x i8> @llvm.riscv.sf.vc.v.vv.se.nxv4i8.iXLen.nxv4i8.iXLen(iXLen 3, <4 x i8> %vs2, <4 x i8> %vs1, iXLen %vl)
327   ret <4 x i8> %0
330 declare <4 x i8> @llvm.riscv.sf.vc.v.vv.se.nxv4i8.iXLen.nxv4i8.iXLen(iXLen, <4 x i8>, <4 x i8>, iXLen)
332 define <8 x i8> @test_sf_vc_v_vv_se_e8m1(<8 x i8> %vs2, <8 x i8> %vs1, iXLen %vl) {
333 ; CHECK-LABEL: test_sf_vc_v_vv_se_e8m1:
334 ; CHECK:       # %bb.0: # %entry
335 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
336 ; CHECK-NEXT:    sf.vc.v.vv 3, v8, v8, v9
337 ; CHECK-NEXT:    ret
338 entry:
339   %0 = tail call <8 x i8> @llvm.riscv.sf.vc.v.vv.se.nxv8i8.iXLen.nxv8i8.iXLen(iXLen 3, <8 x i8> %vs2, <8 x i8> %vs1, iXLen %vl)
340   ret <8 x i8> %0
343 declare <8 x i8> @llvm.riscv.sf.vc.v.vv.se.nxv8i8.iXLen.nxv8i8.iXLen(iXLen, <8 x i8>, <8 x i8>, iXLen)
345 define <16 x i8> @test_sf_vc_v_vv_se_e8m2(<16 x i8> %vs2, <16 x i8> %vs1, iXLen %vl) {
346 ; CHECK-LABEL: test_sf_vc_v_vv_se_e8m2:
347 ; CHECK:       # %bb.0: # %entry
348 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
349 ; CHECK-NEXT:    sf.vc.v.vv 3, v8, v8, v9
350 ; CHECK-NEXT:    ret
351 entry:
352   %0 = tail call <16 x i8> @llvm.riscv.sf.vc.v.vv.se.nxv16i8.iXLen.nxv16i8.iXLen(iXLen 3, <16 x i8> %vs2, <16 x i8> %vs1, iXLen %vl)
353   ret <16 x i8> %0
356 declare <16 x i8> @llvm.riscv.sf.vc.v.vv.se.nxv16i8.iXLen.nxv16i8.iXLen(iXLen, <16 x i8>, <16 x i8>, iXLen)
358 define <32 x i8> @test_sf_vc_v_vv_se_e8m4(<32 x i8> %vs2, <32 x i8> %vs1, iXLen %vl) {
359 ; CHECK-LABEL: test_sf_vc_v_vv_se_e8m4:
360 ; CHECK:       # %bb.0: # %entry
361 ; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, ma
362 ; CHECK-NEXT:    sf.vc.v.vv 3, v8, v8, v10
363 ; CHECK-NEXT:    ret
364 entry:
365   %0 = tail call <32 x i8> @llvm.riscv.sf.vc.v.vv.se.nxv32i8.iXLen.nxv32i8.iXLen(iXLen 3, <32 x i8> %vs2, <32 x i8> %vs1, iXLen %vl)
366   ret <32 x i8> %0
369 declare <32 x i8> @llvm.riscv.sf.vc.v.vv.se.nxv32i8.iXLen.nxv32i8.iXLen(iXLen, <32 x i8>, <32 x i8>, iXLen)
371 define <64 x i8> @test_sf_vc_v_vv_se_e8m8(<64 x i8> %vs2, <64 x i8> %vs1, iXLen %vl) {
372 ; CHECK-LABEL: test_sf_vc_v_vv_se_e8m8:
373 ; CHECK:       # %bb.0: # %entry
374 ; CHECK-NEXT:    vsetvli zero, a0, e8, m4, ta, ma
375 ; CHECK-NEXT:    sf.vc.v.vv 3, v8, v8, v12
376 ; CHECK-NEXT:    ret
377 entry:
378   %0 = tail call <64 x i8> @llvm.riscv.sf.vc.v.vv.se.nxv64i8.iXLen.nxv64i8.iXLen(iXLen 3, <64 x i8> %vs2, <64 x i8> %vs1, iXLen %vl)
379   ret <64 x i8> %0
382 declare <64 x i8> @llvm.riscv.sf.vc.v.vv.se.nxv64i8.iXLen.nxv64i8.iXLen(iXLen, <64 x i8>, <64 x i8>, iXLen)
384 define <1 x i16> @test_sf_vc_v_vv_se_e16mf4(<1 x i16> %vs2, <1 x i16> %vs1, iXLen %vl) {
385 ; CHECK-LABEL: test_sf_vc_v_vv_se_e16mf4:
386 ; CHECK:       # %bb.0: # %entry
387 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
388 ; CHECK-NEXT:    sf.vc.v.vv 3, v8, v8, v9
389 ; CHECK-NEXT:    ret
390 entry:
391   %0 = tail call <1 x i16> @llvm.riscv.sf.vc.v.vv.se.nxv1i16.iXLen.nxv1i16.iXLen(iXLen 3, <1 x i16> %vs2, <1 x i16> %vs1, iXLen %vl)
392   ret <1 x i16> %0
395 declare <1 x i16> @llvm.riscv.sf.vc.v.vv.se.nxv1i16.iXLen.nxv1i16.iXLen(iXLen, <1 x i16>, <1 x i16>, iXLen)
397 define <2 x i16> @test_sf_vc_v_vv_se_e16mf2(<2 x i16> %vs2, <2 x i16> %vs1, iXLen %vl) {
398 ; CHECK-LABEL: test_sf_vc_v_vv_se_e16mf2:
399 ; CHECK:       # %bb.0: # %entry
400 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
401 ; CHECK-NEXT:    sf.vc.v.vv 3, v8, v8, v9
402 ; CHECK-NEXT:    ret
403 entry:
404   %0 = tail call <2 x i16> @llvm.riscv.sf.vc.v.vv.se.nxv2i16.iXLen.nxv2i16.iXLen(iXLen 3, <2 x i16> %vs2, <2 x i16> %vs1, iXLen %vl)
405   ret <2 x i16> %0
408 declare <2 x i16> @llvm.riscv.sf.vc.v.vv.se.nxv2i16.iXLen.nxv2i16.iXLen(iXLen, <2 x i16>, <2 x i16>, iXLen)
410 define <4 x i16> @test_sf_vc_v_vv_se_e16m1(<4 x i16> %vs2, <4 x i16> %vs1, iXLen %vl) {
411 ; CHECK-LABEL: test_sf_vc_v_vv_se_e16m1:
412 ; CHECK:       # %bb.0: # %entry
413 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
414 ; CHECK-NEXT:    sf.vc.v.vv 3, v8, v8, v9
415 ; CHECK-NEXT:    ret
416 entry:
417   %0 = tail call <4 x i16> @llvm.riscv.sf.vc.v.vv.se.nxv4i16.iXLen.nxv4i16.iXLen(iXLen 3, <4 x i16> %vs2, <4 x i16> %vs1, iXLen %vl)
418   ret <4 x i16> %0
421 declare <4 x i16> @llvm.riscv.sf.vc.v.vv.se.nxv4i16.iXLen.nxv4i16.iXLen(iXLen, <4 x i16>, <4 x i16>, iXLen)
423 define <8 x i16> @test_sf_vc_v_vv_se_e16m2(<8 x i16> %vs2, <8 x i16> %vs1, iXLen %vl) {
424 ; CHECK-LABEL: test_sf_vc_v_vv_se_e16m2:
425 ; CHECK:       # %bb.0: # %entry
426 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
427 ; CHECK-NEXT:    sf.vc.v.vv 3, v8, v8, v9
428 ; CHECK-NEXT:    ret
429 entry:
430   %0 = tail call <8 x i16> @llvm.riscv.sf.vc.v.vv.se.nxv8i16.iXLen.nxv8i16.iXLen(iXLen 3, <8 x i16> %vs2, <8 x i16> %vs1, iXLen %vl)
431   ret <8 x i16> %0
434 declare <8 x i16> @llvm.riscv.sf.vc.v.vv.se.nxv8i16.iXLen.nxv8i16.iXLen(iXLen, <8 x i16>, <8 x i16>, iXLen)
436 define <16 x i16> @test_sf_vc_v_vv_se_e16m4(<16 x i16> %vs2, <16 x i16> %vs1, iXLen %vl) {
437 ; CHECK-LABEL: test_sf_vc_v_vv_se_e16m4:
438 ; CHECK:       # %bb.0: # %entry
439 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
440 ; CHECK-NEXT:    sf.vc.v.vv 3, v8, v8, v10
441 ; CHECK-NEXT:    ret
442 entry:
443   %0 = tail call <16 x i16> @llvm.riscv.sf.vc.v.vv.se.nxv16i16.iXLen.nxv16i16.iXLen(iXLen 3, <16 x i16> %vs2, <16 x i16> %vs1, iXLen %vl)
444   ret <16 x i16> %0
447 declare <16 x i16> @llvm.riscv.sf.vc.v.vv.se.nxv16i16.iXLen.nxv16i16.iXLen(iXLen, <16 x i16>, <16 x i16>, iXLen)
449 define <32 x i16> @test_sf_vc_v_vv_se_e16m8(<32 x i16> %vs2, <32 x i16> %vs1, iXLen %vl) {
450 ; CHECK-LABEL: test_sf_vc_v_vv_se_e16m8:
451 ; CHECK:       # %bb.0: # %entry
452 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
453 ; CHECK-NEXT:    sf.vc.v.vv 3, v8, v8, v12
454 ; CHECK-NEXT:    ret
455 entry:
456   %0 = tail call <32 x i16> @llvm.riscv.sf.vc.v.vv.se.nxv32i16.iXLen.nxv32i16.iXLen(iXLen 3, <32 x i16> %vs2, <32 x i16> %vs1, iXLen %vl)
457   ret <32 x i16> %0
460 declare <32 x i16> @llvm.riscv.sf.vc.v.vv.se.nxv32i16.iXLen.nxv32i16.iXLen(iXLen, <32 x i16>, <32 x i16>, iXLen)
462 define <1 x i32> @test_sf_vc_v_vv_se_e32mf2(<1 x i32> %vs2, <1 x i32> %vs1, iXLen %vl) {
463 ; CHECK-LABEL: test_sf_vc_v_vv_se_e32mf2:
464 ; CHECK:       # %bb.0: # %entry
465 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
466 ; CHECK-NEXT:    sf.vc.v.vv 3, v8, v8, v9
467 ; CHECK-NEXT:    ret
468 entry:
469   %0 = tail call <1 x i32> @llvm.riscv.sf.vc.v.vv.se.nxv1i32.iXLen.nxv1i32.iXLen(iXLen 3, <1 x i32> %vs2, <1 x i32> %vs1, iXLen %vl)
470   ret <1 x i32> %0
473 declare <1 x i32> @llvm.riscv.sf.vc.v.vv.se.nxv1i32.iXLen.nxv1i32.iXLen(iXLen, <1 x i32>, <1 x i32>, iXLen)
475 define <2 x i32> @test_sf_vc_v_vv_se_e32m1(<2 x i32> %vs2, <2 x i32> %vs1, iXLen %vl) {
476 ; CHECK-LABEL: test_sf_vc_v_vv_se_e32m1:
477 ; CHECK:       # %bb.0: # %entry
478 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
479 ; CHECK-NEXT:    sf.vc.v.vv 3, v8, v8, v9
480 ; CHECK-NEXT:    ret
481 entry:
482   %0 = tail call <2 x i32> @llvm.riscv.sf.vc.v.vv.se.nxv2i32.iXLen.nxv2i32.iXLen(iXLen 3, <2 x i32> %vs2, <2 x i32> %vs1, iXLen %vl)
483   ret <2 x i32> %0
486 declare <2 x i32> @llvm.riscv.sf.vc.v.vv.se.nxv2i32.iXLen.nxv2i32.iXLen(iXLen, <2 x i32>, <2 x i32>, iXLen)
488 define <4 x i32> @test_sf_vc_v_vv_se_e32m2(<4 x i32> %vs2, <4 x i32> %vs1, iXLen %vl) {
489 ; CHECK-LABEL: test_sf_vc_v_vv_se_e32m2:
490 ; CHECK:       # %bb.0: # %entry
491 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
492 ; CHECK-NEXT:    sf.vc.v.vv 3, v8, v8, v9
493 ; CHECK-NEXT:    ret
494 entry:
495   %0 = tail call <4 x i32> @llvm.riscv.sf.vc.v.vv.se.nxv4i32.iXLen.nxv4i32.iXLen(iXLen 3, <4 x i32> %vs2, <4 x i32> %vs1, iXLen %vl)
496   ret <4 x i32> %0
499 declare <4 x i32> @llvm.riscv.sf.vc.v.vv.se.nxv4i32.iXLen.nxv4i32.iXLen(iXLen, <4 x i32>, <4 x i32>, iXLen)
501 define <8 x i32> @test_sf_vc_v_vv_se_e32m4(<8 x i32> %vs2, <8 x i32> %vs1, iXLen %vl) {
502 ; CHECK-LABEL: test_sf_vc_v_vv_se_e32m4:
503 ; CHECK:       # %bb.0: # %entry
504 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
505 ; CHECK-NEXT:    sf.vc.v.vv 3, v8, v8, v10
506 ; CHECK-NEXT:    ret
507 entry:
508   %0 = tail call <8 x i32> @llvm.riscv.sf.vc.v.vv.se.nxv8i32.iXLen.nxv8i32.iXLen(iXLen 3, <8 x i32> %vs2, <8 x i32> %vs1, iXLen %vl)
509   ret <8 x i32> %0
512 declare <8 x i32> @llvm.riscv.sf.vc.v.vv.se.nxv8i32.iXLen.nxv8i32.iXLen(iXLen, <8 x i32>, <8 x i32>, iXLen)
514 define <16 x i32> @test_sf_vc_v_vv_se_e32m8(<16 x i32> %vs2, <16 x i32> %vs1, iXLen %vl) {
515 ; CHECK-LABEL: test_sf_vc_v_vv_se_e32m8:
516 ; CHECK:       # %bb.0: # %entry
517 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
518 ; CHECK-NEXT:    sf.vc.v.vv 3, v8, v8, v12
519 ; CHECK-NEXT:    ret
520 entry:
521   %0 = tail call <16 x i32> @llvm.riscv.sf.vc.v.vv.se.nxv16i32.iXLen.nxv16i32.iXLen(iXLen 3, <16 x i32> %vs2, <16 x i32> %vs1, iXLen %vl)
522   ret <16 x i32> %0
525 declare <16 x i32> @llvm.riscv.sf.vc.v.vv.se.nxv16i32.iXLen.nxv16i32.iXLen(iXLen, <16 x i32>, <16 x i32>, iXLen)
527 define <1 x i64> @test_sf_vc_v_vv_se_e64m1(<1 x i64> %vs2, <1 x i64> %vs1, iXLen %vl) {
528 ; CHECK-LABEL: test_sf_vc_v_vv_se_e64m1:
529 ; CHECK:       # %bb.0: # %entry
530 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
531 ; CHECK-NEXT:    sf.vc.v.vv 3, v8, v8, v9
532 ; CHECK-NEXT:    ret
533 entry:
534   %0 = tail call <1 x i64> @llvm.riscv.sf.vc.v.vv.se.nxv1i64.iXLen.nxv1i64.iXLen(iXLen 3, <1 x i64> %vs2, <1 x i64> %vs1, iXLen %vl)
535   ret <1 x i64> %0
538 declare <1 x i64> @llvm.riscv.sf.vc.v.vv.se.nxv1i64.iXLen.nxv1i64.iXLen(iXLen, <1 x i64>, <1 x i64>, iXLen)
540 define <2 x i64> @test_sf_vc_v_vv_se_e64m2(<2 x i64> %vs2, <2 x i64> %vs1, iXLen %vl) {
541 ; CHECK-LABEL: test_sf_vc_v_vv_se_e64m2:
542 ; CHECK:       # %bb.0: # %entry
543 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
544 ; CHECK-NEXT:    sf.vc.v.vv 3, v8, v8, v9
545 ; CHECK-NEXT:    ret
546 entry:
547   %0 = tail call <2 x i64> @llvm.riscv.sf.vc.v.vv.se.nxv2i64.iXLen.nxv2i64.iXLen(iXLen 3, <2 x i64> %vs2, <2 x i64> %vs1, iXLen %vl)
548   ret <2 x i64> %0
551 declare <2 x i64> @llvm.riscv.sf.vc.v.vv.se.nxv2i64.iXLen.nxv2i64.iXLen(iXLen, <2 x i64>, <2 x i64>, iXLen)
553 define <4 x i64> @test_sf_vc_v_vv_se_e64m4(<4 x i64> %vs2, <4 x i64> %vs1, iXLen %vl) {
554 ; CHECK-LABEL: test_sf_vc_v_vv_se_e64m4:
555 ; CHECK:       # %bb.0: # %entry
556 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
557 ; CHECK-NEXT:    sf.vc.v.vv 3, v8, v8, v10
558 ; CHECK-NEXT:    ret
559 entry:
560   %0 = tail call <4 x i64> @llvm.riscv.sf.vc.v.vv.se.nxv4i64.iXLen.nxv4i64.iXLen(iXLen 3, <4 x i64> %vs2, <4 x i64> %vs1, iXLen %vl)
561   ret <4 x i64> %0
564 declare <4 x i64> @llvm.riscv.sf.vc.v.vv.se.nxv4i64.iXLen.nxv4i64.iXLen(iXLen, <4 x i64>, <4 x i64>, iXLen)
566 define <8 x i64> @test_sf_vc_v_vv_se_e64m8(<8 x i64> %vs2, <8 x i64> %vs1, iXLen %vl) {
567 ; CHECK-LABEL: test_sf_vc_v_vv_se_e64m8:
568 ; CHECK:       # %bb.0: # %entry
569 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
570 ; CHECK-NEXT:    sf.vc.v.vv 3, v8, v8, v12
571 ; CHECK-NEXT:    ret
572 entry:
573   %0 = tail call <8 x i64> @llvm.riscv.sf.vc.v.vv.se.nxv8i64.iXLen.nxv8i64.iXLen(iXLen 3, <8 x i64> %vs2, <8 x i64> %vs1, iXLen %vl)
574   ret <8 x i64> %0
577 declare <8 x i64> @llvm.riscv.sf.vc.v.vv.se.nxv8i64.iXLen.nxv8i64.iXLen(iXLen, <8 x i64>, <8 x i64>, iXLen)
579 define <1 x i8> @test_sf_vc_v_vv_e8mf8(<1 x i8> %vs2, <1 x i8> %vs1, iXLen %vl) {
580 ; CHECK-LABEL: test_sf_vc_v_vv_e8mf8:
581 ; CHECK:       # %bb.0: # %entry
582 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
583 ; CHECK-NEXT:    sf.vc.v.vv 3, v8, v8, v9
584 ; CHECK-NEXT:    ret
585 entry:
586   %0 = tail call <1 x i8> @llvm.riscv.sf.vc.v.vv.nxv1i8.iXLen.nxv1i8.iXLen(iXLen 3, <1 x i8> %vs2, <1 x i8> %vs1, iXLen %vl)
587   ret <1 x i8> %0
590 declare <1 x i8> @llvm.riscv.sf.vc.v.vv.nxv1i8.iXLen.nxv1i8.iXLen(iXLen, <1 x i8>, <1 x i8>, iXLen)
592 define <2 x i8> @test_sf_vc_v_vv_e8mf4(<2 x i8> %vs2, <2 x i8> %vs1, iXLen %vl) {
593 ; CHECK-LABEL: test_sf_vc_v_vv_e8mf4:
594 ; CHECK:       # %bb.0: # %entry
595 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
596 ; CHECK-NEXT:    sf.vc.v.vv 3, v8, v8, v9
597 ; CHECK-NEXT:    ret
598 entry:
599   %0 = tail call <2 x i8> @llvm.riscv.sf.vc.v.vv.nxv2i8.iXLen.nxv2i8.iXLen(iXLen 3, <2 x i8> %vs2, <2 x i8> %vs1, iXLen %vl)
600   ret <2 x i8> %0
603 declare <2 x i8> @llvm.riscv.sf.vc.v.vv.nxv2i8.iXLen.nxv2i8.iXLen(iXLen, <2 x i8>, <2 x i8>, iXLen)
605 define <4 x i8> @test_sf_vc_v_vv_e8mf2(<4 x i8> %vs2, <4 x i8> %vs1, iXLen %vl) {
606 ; CHECK-LABEL: test_sf_vc_v_vv_e8mf2:
607 ; CHECK:       # %bb.0: # %entry
608 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, ma
609 ; CHECK-NEXT:    sf.vc.v.vv 3, v8, v8, v9
610 ; CHECK-NEXT:    ret
611 entry:
612   %0 = tail call <4 x i8> @llvm.riscv.sf.vc.v.vv.nxv4i8.iXLen.nxv4i8.iXLen(iXLen 3, <4 x i8> %vs2, <4 x i8> %vs1, iXLen %vl)
613   ret <4 x i8> %0
616 declare <4 x i8> @llvm.riscv.sf.vc.v.vv.nxv4i8.iXLen.nxv4i8.iXLen(iXLen, <4 x i8>, <4 x i8>, iXLen)
618 define <8 x i8> @test_sf_vc_v_vv_e8m1(<8 x i8> %vs2, <8 x i8> %vs1, iXLen %vl) {
619 ; CHECK-LABEL: test_sf_vc_v_vv_e8m1:
620 ; CHECK:       # %bb.0: # %entry
621 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
622 ; CHECK-NEXT:    sf.vc.v.vv 3, v8, v8, v9
623 ; CHECK-NEXT:    ret
624 entry:
625   %0 = tail call <8 x i8> @llvm.riscv.sf.vc.v.vv.nxv8i8.iXLen.nxv8i8.iXLen(iXLen 3, <8 x i8> %vs2, <8 x i8> %vs1, iXLen %vl)
626   ret <8 x i8> %0
629 declare <8 x i8> @llvm.riscv.sf.vc.v.vv.nxv8i8.iXLen.nxv8i8.iXLen(iXLen, <8 x i8>, <8 x i8>, iXLen)
631 define <16 x i8> @test_sf_vc_v_vv_e8m2(<16 x i8> %vs2, <16 x i8> %vs1, iXLen %vl) {
632 ; CHECK-LABEL: test_sf_vc_v_vv_e8m2:
633 ; CHECK:       # %bb.0: # %entry
634 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
635 ; CHECK-NEXT:    sf.vc.v.vv 3, v8, v8, v9
636 ; CHECK-NEXT:    ret
637 entry:
638   %0 = tail call <16 x i8> @llvm.riscv.sf.vc.v.vv.nxv16i8.iXLen.nxv16i8.iXLen(iXLen 3, <16 x i8> %vs2, <16 x i8> %vs1, iXLen %vl)
639   ret <16 x i8> %0
642 declare <16 x i8> @llvm.riscv.sf.vc.v.vv.nxv16i8.iXLen.nxv16i8.iXLen(iXLen, <16 x i8>, <16 x i8>, iXLen)
644 define <32 x i8> @test_sf_vc_v_vv_e8m4(<32 x i8> %vs2, <32 x i8> %vs1, iXLen %vl) {
645 ; CHECK-LABEL: test_sf_vc_v_vv_e8m4:
646 ; CHECK:       # %bb.0: # %entry
647 ; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, ma
648 ; CHECK-NEXT:    sf.vc.v.vv 3, v8, v8, v10
649 ; CHECK-NEXT:    ret
650 entry:
651   %0 = tail call <32 x i8> @llvm.riscv.sf.vc.v.vv.nxv32i8.iXLen.nxv32i8.iXLen(iXLen 3, <32 x i8> %vs2, <32 x i8> %vs1, iXLen %vl)
652   ret <32 x i8> %0
655 declare <32 x i8> @llvm.riscv.sf.vc.v.vv.nxv32i8.iXLen.nxv32i8.iXLen(iXLen, <32 x i8>, <32 x i8>, iXLen)
657 define <64 x i8> @test_sf_vc_v_vv_e8m8(<64 x i8> %vs2, <64 x i8> %vs1, iXLen %vl) {
658 ; CHECK-LABEL: test_sf_vc_v_vv_e8m8:
659 ; CHECK:       # %bb.0: # %entry
660 ; CHECK-NEXT:    vsetvli zero, a0, e8, m4, ta, ma
661 ; CHECK-NEXT:    sf.vc.v.vv 3, v8, v8, v12
662 ; CHECK-NEXT:    ret
663 entry:
664   %0 = tail call <64 x i8> @llvm.riscv.sf.vc.v.vv.nxv64i8.iXLen.nxv64i8.iXLen(iXLen 3, <64 x i8> %vs2, <64 x i8> %vs1, iXLen %vl)
665   ret <64 x i8> %0
668 declare <64 x i8> @llvm.riscv.sf.vc.v.vv.nxv64i8.iXLen.nxv64i8.iXLen(iXLen, <64 x i8>, <64 x i8>, iXLen)
670 define <1 x i16> @test_sf_vc_v_vv_e16mf4(<1 x i16> %vs2, <1 x i16> %vs1, iXLen %vl) {
671 ; CHECK-LABEL: test_sf_vc_v_vv_e16mf4:
672 ; CHECK:       # %bb.0: # %entry
673 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
674 ; CHECK-NEXT:    sf.vc.v.vv 3, v8, v8, v9
675 ; CHECK-NEXT:    ret
676 entry:
677   %0 = tail call <1 x i16> @llvm.riscv.sf.vc.v.vv.nxv1i16.iXLen.nxv1i16.iXLen(iXLen 3, <1 x i16> %vs2, <1 x i16> %vs1, iXLen %vl)
678   ret <1 x i16> %0
681 declare <1 x i16> @llvm.riscv.sf.vc.v.vv.nxv1i16.iXLen.nxv1i16.iXLen(iXLen, <1 x i16>, <1 x i16>, iXLen)
683 define <2 x i16> @test_sf_vc_v_vv_e16mf2(<2 x i16> %vs2, <2 x i16> %vs1, iXLen %vl) {
684 ; CHECK-LABEL: test_sf_vc_v_vv_e16mf2:
685 ; CHECK:       # %bb.0: # %entry
686 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
687 ; CHECK-NEXT:    sf.vc.v.vv 3, v8, v8, v9
688 ; CHECK-NEXT:    ret
689 entry:
690   %0 = tail call <2 x i16> @llvm.riscv.sf.vc.v.vv.nxv2i16.iXLen.nxv2i16.iXLen(iXLen 3, <2 x i16> %vs2, <2 x i16> %vs1, iXLen %vl)
691   ret <2 x i16> %0
694 declare <2 x i16> @llvm.riscv.sf.vc.v.vv.nxv2i16.iXLen.nxv2i16.iXLen(iXLen, <2 x i16>, <2 x i16>, iXLen)
696 define <4 x i16> @test_sf_vc_v_vv_e16m1(<4 x i16> %vs2, <4 x i16> %vs1, iXLen %vl) {
697 ; CHECK-LABEL: test_sf_vc_v_vv_e16m1:
698 ; CHECK:       # %bb.0: # %entry
699 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
700 ; CHECK-NEXT:    sf.vc.v.vv 3, v8, v8, v9
701 ; CHECK-NEXT:    ret
702 entry:
703   %0 = tail call <4 x i16> @llvm.riscv.sf.vc.v.vv.nxv4i16.iXLen.nxv4i16.iXLen(iXLen 3, <4 x i16> %vs2, <4 x i16> %vs1, iXLen %vl)
704   ret <4 x i16> %0
707 declare <4 x i16> @llvm.riscv.sf.vc.v.vv.nxv4i16.iXLen.nxv4i16.iXLen(iXLen, <4 x i16>, <4 x i16>, iXLen)
709 define <8 x i16> @test_sf_vc_v_vv_e16m2(<8 x i16> %vs2, <8 x i16> %vs1, iXLen %vl) {
710 ; CHECK-LABEL: test_sf_vc_v_vv_e16m2:
711 ; CHECK:       # %bb.0: # %entry
712 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
713 ; CHECK-NEXT:    sf.vc.v.vv 3, v8, v8, v9
714 ; CHECK-NEXT:    ret
715 entry:
716   %0 = tail call <8 x i16> @llvm.riscv.sf.vc.v.vv.nxv8i16.iXLen.nxv8i16.iXLen(iXLen 3, <8 x i16> %vs2, <8 x i16> %vs1, iXLen %vl)
717   ret <8 x i16> %0
720 declare <8 x i16> @llvm.riscv.sf.vc.v.vv.nxv8i16.iXLen.nxv8i16.iXLen(iXLen, <8 x i16>, <8 x i16>, iXLen)
722 define <16 x i16> @test_sf_vc_v_vv_e16m4(<16 x i16> %vs2, <16 x i16> %vs1, iXLen %vl) {
723 ; CHECK-LABEL: test_sf_vc_v_vv_e16m4:
724 ; CHECK:       # %bb.0: # %entry
725 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
726 ; CHECK-NEXT:    sf.vc.v.vv 3, v8, v8, v10
727 ; CHECK-NEXT:    ret
728 entry:
729   %0 = tail call <16 x i16> @llvm.riscv.sf.vc.v.vv.nxv16i16.iXLen.nxv16i16.iXLen(iXLen 3, <16 x i16> %vs2, <16 x i16> %vs1, iXLen %vl)
730   ret <16 x i16> %0
733 declare <16 x i16> @llvm.riscv.sf.vc.v.vv.nxv16i16.iXLen.nxv16i16.iXLen(iXLen, <16 x i16>, <16 x i16>, iXLen)
735 define <32 x i16> @test_sf_vc_v_vv_e16m8(<32 x i16> %vs2, <32 x i16> %vs1, iXLen %vl) {
736 ; CHECK-LABEL: test_sf_vc_v_vv_e16m8:
737 ; CHECK:       # %bb.0: # %entry
738 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
739 ; CHECK-NEXT:    sf.vc.v.vv 3, v8, v8, v12
740 ; CHECK-NEXT:    ret
741 entry:
742   %0 = tail call <32 x i16> @llvm.riscv.sf.vc.v.vv.nxv32i16.iXLen.nxv32i16.iXLen(iXLen 3, <32 x i16> %vs2, <32 x i16> %vs1, iXLen %vl)
743   ret <32 x i16> %0
746 declare <32 x i16> @llvm.riscv.sf.vc.v.vv.nxv32i16.iXLen.nxv32i16.iXLen(iXLen, <32 x i16>, <32 x i16>, iXLen)
748 define <1 x i32> @test_sf_vc_v_vv_e32mf2(<1 x i32> %vs2, <1 x i32> %vs1, iXLen %vl) {
749 ; CHECK-LABEL: test_sf_vc_v_vv_e32mf2:
750 ; CHECK:       # %bb.0: # %entry
751 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
752 ; CHECK-NEXT:    sf.vc.v.vv 3, v8, v8, v9
753 ; CHECK-NEXT:    ret
754 entry:
755   %0 = tail call <1 x i32> @llvm.riscv.sf.vc.v.vv.nxv1i32.iXLen.nxv1i32.iXLen(iXLen 3, <1 x i32> %vs2, <1 x i32> %vs1, iXLen %vl)
756   ret <1 x i32> %0
759 declare <1 x i32> @llvm.riscv.sf.vc.v.vv.nxv1i32.iXLen.nxv1i32.iXLen(iXLen, <1 x i32>, <1 x i32>, iXLen)
761 define <2 x i32> @test_sf_vc_v_vv_e32m1(<2 x i32> %vs2, <2 x i32> %vs1, iXLen %vl) {
762 ; CHECK-LABEL: test_sf_vc_v_vv_e32m1:
763 ; CHECK:       # %bb.0: # %entry
764 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
765 ; CHECK-NEXT:    sf.vc.v.vv 3, v8, v8, v9
766 ; CHECK-NEXT:    ret
767 entry:
768   %0 = tail call <2 x i32> @llvm.riscv.sf.vc.v.vv.nxv2i32.iXLen.nxv2i32.iXLen(iXLen 3, <2 x i32> %vs2, <2 x i32> %vs1, iXLen %vl)
769   ret <2 x i32> %0
772 declare <2 x i32> @llvm.riscv.sf.vc.v.vv.nxv2i32.iXLen.nxv2i32.iXLen(iXLen, <2 x i32>, <2 x i32>, iXLen)
774 define <4 x i32> @test_sf_vc_v_vv_e32m2(<4 x i32> %vs2, <4 x i32> %vs1, iXLen %vl) {
775 ; CHECK-LABEL: test_sf_vc_v_vv_e32m2:
776 ; CHECK:       # %bb.0: # %entry
777 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
778 ; CHECK-NEXT:    sf.vc.v.vv 3, v8, v8, v9
779 ; CHECK-NEXT:    ret
780 entry:
781   %0 = tail call <4 x i32> @llvm.riscv.sf.vc.v.vv.nxv4i32.iXLen.nxv4i32.iXLen(iXLen 3, <4 x i32> %vs2, <4 x i32> %vs1, iXLen %vl)
782   ret <4 x i32> %0
785 declare <4 x i32> @llvm.riscv.sf.vc.v.vv.nxv4i32.iXLen.nxv4i32.iXLen(iXLen, <4 x i32>, <4 x i32>, iXLen)
787 define <8 x i32> @test_sf_vc_v_vv_e32m4(<8 x i32> %vs2, <8 x i32> %vs1, iXLen %vl) {
788 ; CHECK-LABEL: test_sf_vc_v_vv_e32m4:
789 ; CHECK:       # %bb.0: # %entry
790 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
791 ; CHECK-NEXT:    sf.vc.v.vv 3, v8, v8, v10
792 ; CHECK-NEXT:    ret
793 entry:
794   %0 = tail call <8 x i32> @llvm.riscv.sf.vc.v.vv.nxv8i32.iXLen.nxv8i32.iXLen(iXLen 3, <8 x i32> %vs2, <8 x i32> %vs1, iXLen %vl)
795   ret <8 x i32> %0
798 declare <8 x i32> @llvm.riscv.sf.vc.v.vv.nxv8i32.iXLen.nxv8i32.iXLen(iXLen, <8 x i32>, <8 x i32>, iXLen)
800 define <16 x i32> @test_sf_vc_v_vv_e32m8(<16 x i32> %vs2, <16 x i32> %vs1, iXLen %vl) {
801 ; CHECK-LABEL: test_sf_vc_v_vv_e32m8:
802 ; CHECK:       # %bb.0: # %entry
803 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
804 ; CHECK-NEXT:    sf.vc.v.vv 3, v8, v8, v12
805 ; CHECK-NEXT:    ret
806 entry:
807   %0 = tail call <16 x i32> @llvm.riscv.sf.vc.v.vv.nxv16i32.iXLen.nxv16i32.iXLen(iXLen 3, <16 x i32> %vs2, <16 x i32> %vs1, iXLen %vl)
808   ret <16 x i32> %0
811 declare <16 x i32> @llvm.riscv.sf.vc.v.vv.nxv16i32.iXLen.nxv16i32.iXLen(iXLen, <16 x i32>, <16 x i32>, iXLen)
813 define <1 x i64> @test_sf_vc_v_vv_e64m1(<1 x i64> %vs2, <1 x i64> %vs1, iXLen %vl) {
814 ; CHECK-LABEL: test_sf_vc_v_vv_e64m1:
815 ; CHECK:       # %bb.0: # %entry
816 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
817 ; CHECK-NEXT:    sf.vc.v.vv 3, v8, v8, v9
818 ; CHECK-NEXT:    ret
819 entry:
820   %0 = tail call <1 x i64> @llvm.riscv.sf.vc.v.vv.nxv1i64.iXLen.nxv1i64.iXLen(iXLen 3, <1 x i64> %vs2, <1 x i64> %vs1, iXLen %vl)
821   ret <1 x i64> %0
824 declare <1 x i64> @llvm.riscv.sf.vc.v.vv.nxv1i64.iXLen.nxv1i64.iXLen(iXLen, <1 x i64>, <1 x i64>, iXLen)
826 define <2 x i64> @test_sf_vc_v_vv_e64m2(<2 x i64> %vs2, <2 x i64> %vs1, iXLen %vl) {
827 ; CHECK-LABEL: test_sf_vc_v_vv_e64m2:
828 ; CHECK:       # %bb.0: # %entry
829 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
830 ; CHECK-NEXT:    sf.vc.v.vv 3, v8, v8, v9
831 ; CHECK-NEXT:    ret
832 entry:
833   %0 = tail call <2 x i64> @llvm.riscv.sf.vc.v.vv.nxv2i64.iXLen.nxv2i64.iXLen(iXLen 3, <2 x i64> %vs2, <2 x i64> %vs1, iXLen %vl)
834   ret <2 x i64> %0
837 declare <2 x i64> @llvm.riscv.sf.vc.v.vv.nxv2i64.iXLen.nxv2i64.iXLen(iXLen, <2 x i64>, <2 x i64>, iXLen)
839 define <4 x i64> @test_sf_vc_v_vv_e64m4(<4 x i64> %vs2, <4 x i64> %vs1, iXLen %vl) {
840 ; CHECK-LABEL: test_sf_vc_v_vv_e64m4:
841 ; CHECK:       # %bb.0: # %entry
842 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
843 ; CHECK-NEXT:    sf.vc.v.vv 3, v8, v8, v10
844 ; CHECK-NEXT:    ret
845 entry:
846   %0 = tail call <4 x i64> @llvm.riscv.sf.vc.v.vv.nxv4i64.iXLen.nxv4i64.iXLen(iXLen 3, <4 x i64> %vs2, <4 x i64> %vs1, iXLen %vl)
847   ret <4 x i64> %0
850 declare <4 x i64> @llvm.riscv.sf.vc.v.vv.nxv4i64.iXLen.nxv4i64.iXLen(iXLen, <4 x i64>, <4 x i64>, iXLen)
852 define <8 x i64> @test_sf_vc_v_vv_e64m8(<8 x i64> %vs2, <8 x i64> %vs1, iXLen %vl) {
853 ; CHECK-LABEL: test_sf_vc_v_vv_e64m8:
854 ; CHECK:       # %bb.0: # %entry
855 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
856 ; CHECK-NEXT:    sf.vc.v.vv 3, v8, v8, v12
857 ; CHECK-NEXT:    ret
858 entry:
859   %0 = tail call <8 x i64> @llvm.riscv.sf.vc.v.vv.nxv8i64.iXLen.nxv8i64.iXLen(iXLen 3, <8 x i64> %vs2, <8 x i64> %vs1, iXLen %vl)
860   ret <8 x i64> %0
863 declare <8 x i64> @llvm.riscv.sf.vc.v.vv.nxv8i64.iXLen.nxv8i64.iXLen(iXLen, <8 x i64>, <8 x i64>, iXLen)
865 define void @test_sf_vc_xv_se_e8mf8(<1 x i8> %vs2, i8 zeroext %rs1, iXLen %vl) {
866 ; CHECK-LABEL: test_sf_vc_xv_se_e8mf8:
867 ; CHECK:       # %bb.0: # %entry
868 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
869 ; CHECK-NEXT:    sf.vc.xv 3, 31, v8, a0
870 ; CHECK-NEXT:    ret
871 entry:
872   tail call void @llvm.riscv.sf.vc.xv.se.iXLen.nxv1i8.i8.iXLen(iXLen 3, iXLen 31, <1 x i8> %vs2, i8 %rs1, iXLen %vl)
873   ret void
876 declare void @llvm.riscv.sf.vc.xv.se.iXLen.nxv1i8.i8.iXLen(iXLen, iXLen, <1 x i8>, i8, iXLen)
878 define void @test_sf_vc_xv_se_e8mf4(<2 x i8> %vs2, i8 zeroext %rs1, iXLen %vl) {
879 ; CHECK-LABEL: test_sf_vc_xv_se_e8mf4:
880 ; CHECK:       # %bb.0: # %entry
881 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
882 ; CHECK-NEXT:    sf.vc.xv 3, 31, v8, a0
883 ; CHECK-NEXT:    ret
884 entry:
885   tail call void @llvm.riscv.sf.vc.xv.se.iXLen.nxv2i8.i8.iXLen(iXLen 3, iXLen 31, <2 x i8> %vs2, i8 %rs1, iXLen %vl)
886   ret void
889 declare void @llvm.riscv.sf.vc.xv.se.iXLen.nxv2i8.i8.iXLen(iXLen, iXLen, <2 x i8>, i8, iXLen)
891 define void @test_sf_vc_xv_se_e8mf2(<4 x i8> %vs2, i8 zeroext %rs1, iXLen %vl) {
892 ; CHECK-LABEL: test_sf_vc_xv_se_e8mf2:
893 ; CHECK:       # %bb.0: # %entry
894 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
895 ; CHECK-NEXT:    sf.vc.xv 3, 31, v8, a0
896 ; CHECK-NEXT:    ret
897 entry:
898   tail call void @llvm.riscv.sf.vc.xv.se.iXLen.nxv4i8.i8.iXLen(iXLen 3, iXLen 31, <4 x i8> %vs2, i8 %rs1, iXLen %vl)
899   ret void
902 declare void @llvm.riscv.sf.vc.xv.se.iXLen.nxv4i8.i8.iXLen(iXLen, iXLen, <4 x i8>, i8, iXLen)
904 define void @test_sf_vc_xv_se_e8m1(<8 x i8> %vs2, i8 zeroext %rs1, iXLen %vl) {
905 ; CHECK-LABEL: test_sf_vc_xv_se_e8m1:
906 ; CHECK:       # %bb.0: # %entry
907 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
908 ; CHECK-NEXT:    sf.vc.xv 3, 31, v8, a0
909 ; CHECK-NEXT:    ret
910 entry:
911   tail call void @llvm.riscv.sf.vc.xv.se.iXLen.nxv8i8.i8.iXLen(iXLen 3, iXLen 31, <8 x i8> %vs2, i8 %rs1, iXLen %vl)
912   ret void
915 declare void @llvm.riscv.sf.vc.xv.se.iXLen.nxv8i8.i8.iXLen(iXLen, iXLen, <8 x i8>, i8, iXLen)
917 define void @test_sf_vc_xv_se_e8m2(<16 x i8> %vs2, i8 zeroext %rs1, iXLen %vl) {
918 ; CHECK-LABEL: test_sf_vc_xv_se_e8m2:
919 ; CHECK:       # %bb.0: # %entry
920 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
921 ; CHECK-NEXT:    sf.vc.xv 3, 31, v8, a0
922 ; CHECK-NEXT:    ret
923 entry:
924   tail call void @llvm.riscv.sf.vc.xv.se.iXLen.nxv16i8.i8.iXLen(iXLen 3, iXLen 31, <16 x i8> %vs2, i8 %rs1, iXLen %vl)
925   ret void
928 declare void @llvm.riscv.sf.vc.xv.se.iXLen.nxv16i8.i8.iXLen(iXLen, iXLen, <16 x i8>, i8, iXLen)
930 define void @test_sf_vc_xv_se_e8m4(<32 x i8> %vs2, i8 zeroext %rs1, iXLen %vl) {
931 ; CHECK-LABEL: test_sf_vc_xv_se_e8m4:
932 ; CHECK:       # %bb.0: # %entry
933 ; CHECK-NEXT:    vsetvli zero, a1, e8, m2, ta, ma
934 ; CHECK-NEXT:    sf.vc.xv 3, 31, v8, a0
935 ; CHECK-NEXT:    ret
936 entry:
937   tail call void @llvm.riscv.sf.vc.xv.se.iXLen.nxv32i8.i8.iXLen(iXLen 3, iXLen 31, <32 x i8> %vs2, i8 %rs1, iXLen %vl)
938   ret void
941 declare void @llvm.riscv.sf.vc.xv.se.iXLen.nxv32i8.i8.iXLen(iXLen, iXLen, <32 x i8>, i8, iXLen)
943 define void @test_sf_vc_xv_se_e8m8(<64 x i8> %vs2, i8 zeroext %rs1, iXLen %vl) {
944 ; CHECK-LABEL: test_sf_vc_xv_se_e8m8:
945 ; CHECK:       # %bb.0: # %entry
946 ; CHECK-NEXT:    vsetvli zero, a1, e8, m4, ta, ma
947 ; CHECK-NEXT:    sf.vc.xv 3, 31, v8, a0
948 ; CHECK-NEXT:    ret
949 entry:
950   tail call void @llvm.riscv.sf.vc.xv.se.iXLen.nxv64i8.i8.iXLen(iXLen 3, iXLen 31, <64 x i8> %vs2, i8 %rs1, iXLen %vl)
951   ret void
954 declare void @llvm.riscv.sf.vc.xv.se.iXLen.nxv64i8.i8.iXLen(iXLen, iXLen, <64 x i8>, i8, iXLen)
956 define void @test_sf_vc_xv_se_e16mf4(<1 x i16> %vs2, i16 zeroext %rs1, iXLen %vl) {
957 ; CHECK-LABEL: test_sf_vc_xv_se_e16mf4:
958 ; CHECK:       # %bb.0: # %entry
959 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
960 ; CHECK-NEXT:    sf.vc.xv 3, 31, v8, a0
961 ; CHECK-NEXT:    ret
962 entry:
963   tail call void @llvm.riscv.sf.vc.xv.se.iXLen.nxv1i16.i16.iXLen(iXLen 3, iXLen 31, <1 x i16> %vs2, i16 %rs1, iXLen %vl)
964   ret void
967 declare void @llvm.riscv.sf.vc.xv.se.iXLen.nxv1i16.i16.iXLen(iXLen, iXLen, <1 x i16>, i16, iXLen)
969 define void @test_sf_vc_xv_se_e16mf2(<2 x i16> %vs2, i16 zeroext %rs1, iXLen %vl) {
970 ; CHECK-LABEL: test_sf_vc_xv_se_e16mf2:
971 ; CHECK:       # %bb.0: # %entry
972 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
973 ; CHECK-NEXT:    sf.vc.xv 3, 31, v8, a0
974 ; CHECK-NEXT:    ret
975 entry:
976   tail call void @llvm.riscv.sf.vc.xv.se.iXLen.nxv2i16.i16.iXLen(iXLen 3, iXLen 31, <2 x i16> %vs2, i16 %rs1, iXLen %vl)
977   ret void
980 declare void @llvm.riscv.sf.vc.xv.se.iXLen.nxv2i16.i16.iXLen(iXLen, iXLen, <2 x i16>, i16, iXLen)
982 define void @test_sf_vc_xv_se_e16m1(<4 x i16> %vs2, i16 zeroext %rs1, iXLen %vl) {
983 ; CHECK-LABEL: test_sf_vc_xv_se_e16m1:
984 ; CHECK:       # %bb.0: # %entry
985 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
986 ; CHECK-NEXT:    sf.vc.xv 3, 31, v8, a0
987 ; CHECK-NEXT:    ret
988 entry:
989   tail call void @llvm.riscv.sf.vc.xv.se.iXLen.nxv4i16.i16.iXLen(iXLen 3, iXLen 31, <4 x i16> %vs2, i16 %rs1, iXLen %vl)
990   ret void
993 declare void @llvm.riscv.sf.vc.xv.se.iXLen.nxv4i16.i16.iXLen(iXLen, iXLen, <4 x i16>, i16, iXLen)
995 define void @test_sf_vc_xv_se_e16m2(<8 x i16> %vs2, i16 zeroext %rs1, iXLen %vl) {
996 ; CHECK-LABEL: test_sf_vc_xv_se_e16m2:
997 ; CHECK:       # %bb.0: # %entry
998 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
999 ; CHECK-NEXT:    sf.vc.xv 3, 31, v8, a0
1000 ; CHECK-NEXT:    ret
1001 entry:
1002   tail call void @llvm.riscv.sf.vc.xv.se.iXLen.nxv8i16.i16.iXLen(iXLen 3, iXLen 31, <8 x i16> %vs2, i16 %rs1, iXLen %vl)
1003   ret void
1006 declare void @llvm.riscv.sf.vc.xv.se.iXLen.nxv8i16.i16.iXLen(iXLen, iXLen, <8 x i16>, i16, iXLen)
1008 define void @test_sf_vc_xv_se_e16m4(<16 x i16> %vs2, i16 zeroext %rs1, iXLen %vl) {
1009 ; CHECK-LABEL: test_sf_vc_xv_se_e16m4:
1010 ; CHECK:       # %bb.0: # %entry
1011 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
1012 ; CHECK-NEXT:    sf.vc.xv 3, 31, v8, a0
1013 ; CHECK-NEXT:    ret
1014 entry:
1015   tail call void @llvm.riscv.sf.vc.xv.se.iXLen.nxv16i16.i16.iXLen(iXLen 3, iXLen 31, <16 x i16> %vs2, i16 %rs1, iXLen %vl)
1016   ret void
1019 declare void @llvm.riscv.sf.vc.xv.se.iXLen.nxv16i16.i16.iXLen(iXLen, iXLen, <16 x i16>, i16, iXLen)
1021 define void @test_sf_vc_xv_se_e16m8(<32 x i16> %vs2, i16 zeroext %rs1, iXLen %vl) {
1022 ; CHECK-LABEL: test_sf_vc_xv_se_e16m8:
1023 ; CHECK:       # %bb.0: # %entry
1024 ; CHECK-NEXT:    vsetvli zero, a1, e16, m4, ta, ma
1025 ; CHECK-NEXT:    sf.vc.xv 3, 31, v8, a0
1026 ; CHECK-NEXT:    ret
1027 entry:
1028   tail call void @llvm.riscv.sf.vc.xv.se.iXLen.nxv32i16.i16.iXLen(iXLen 3, iXLen 31, <32 x i16> %vs2, i16 %rs1, iXLen %vl)
1029   ret void
1032 declare void @llvm.riscv.sf.vc.xv.se.iXLen.nxv32i16.i16.iXLen(iXLen, iXLen, <32 x i16>, i16, iXLen)
1034 define void @test_sf_vc_xv_se_e32mf2(<1 x i32> %vs2, i32 signext %rs1, iXLen %vl) {
1035 ; CHECK-LABEL: test_sf_vc_xv_se_e32mf2:
1036 ; CHECK:       # %bb.0: # %entry
1037 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
1038 ; CHECK-NEXT:    sf.vc.xv 3, 31, v8, a0
1039 ; CHECK-NEXT:    ret
1040 entry:
1041   tail call void @llvm.riscv.sf.vc.xv.se.iXLen.nxv1i32.i32.iXLen(iXLen 3, iXLen 31, <1 x i32> %vs2, i32 %rs1, iXLen %vl)
1042   ret void
1045 declare void @llvm.riscv.sf.vc.xv.se.iXLen.nxv1i32.i32.iXLen(iXLen, iXLen, <1 x i32>, i32, iXLen)
1047 define void @test_sf_vc_xv_se_e32m1(<2 x i32> %vs2, i32 signext %rs1, iXLen %vl) {
1048 ; CHECK-LABEL: test_sf_vc_xv_se_e32m1:
1049 ; CHECK:       # %bb.0: # %entry
1050 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
1051 ; CHECK-NEXT:    sf.vc.xv 3, 31, v8, a0
1052 ; CHECK-NEXT:    ret
1053 entry:
1054   tail call void @llvm.riscv.sf.vc.xv.se.iXLen.nxv2i32.i32.iXLen(iXLen 3, iXLen 31, <2 x i32> %vs2, i32 %rs1, iXLen %vl)
1055   ret void
1058 declare void @llvm.riscv.sf.vc.xv.se.iXLen.nxv2i32.i32.iXLen(iXLen, iXLen, <2 x i32>, i32, iXLen)
1060 define void @test_sf_vc_xv_se_e32m2(<4 x i32> %vs2, i32 signext %rs1, iXLen %vl) {
1061 ; CHECK-LABEL: test_sf_vc_xv_se_e32m2:
1062 ; CHECK:       # %bb.0: # %entry
1063 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
1064 ; CHECK-NEXT:    sf.vc.xv 3, 31, v8, a0
1065 ; CHECK-NEXT:    ret
1066 entry:
1067   tail call void @llvm.riscv.sf.vc.xv.se.iXLen.nxv4i32.i32.iXLen(iXLen 3, iXLen 31, <4 x i32> %vs2, i32 %rs1, iXLen %vl)
1068   ret void
1071 declare void @llvm.riscv.sf.vc.xv.se.iXLen.nxv4i32.i32.iXLen(iXLen, iXLen, <4 x i32>, i32, iXLen)
1073 define void @test_sf_vc_xv_se_e32m4(<8 x i32> %vs2, i32 signext %rs1, iXLen %vl) {
1074 ; CHECK-LABEL: test_sf_vc_xv_se_e32m4:
1075 ; CHECK:       # %bb.0: # %entry
1076 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
1077 ; CHECK-NEXT:    sf.vc.xv 3, 31, v8, a0
1078 ; CHECK-NEXT:    ret
1079 entry:
1080   tail call void @llvm.riscv.sf.vc.xv.se.iXLen.nxv8i32.i32.iXLen(iXLen 3, iXLen 31, <8 x i32> %vs2, i32 %rs1, iXLen %vl)
1081   ret void
1084 declare void @llvm.riscv.sf.vc.xv.se.iXLen.nxv8i32.i32.iXLen(iXLen, iXLen, <8 x i32>, i32, iXLen)
1086 define void @test_sf_vc_xv_se_e32m8(<16 x i32> %vs2, i32 signext %rs1, iXLen %vl) {
1087 ; CHECK-LABEL: test_sf_vc_xv_se_e32m8:
1088 ; CHECK:       # %bb.0: # %entry
1089 ; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
1090 ; CHECK-NEXT:    sf.vc.xv 3, 31, v8, a0
1091 ; CHECK-NEXT:    ret
1092 entry:
1093   tail call void @llvm.riscv.sf.vc.xv.se.iXLen.nxv16i32.i32.iXLen(iXLen 3, iXLen 31, <16 x i32> %vs2, i32 %rs1, iXLen %vl)
1094   ret void
1097 declare void @llvm.riscv.sf.vc.xv.se.iXLen.nxv16i32.i32.iXLen(iXLen, iXLen, <16 x i32>, i32, iXLen)
1099 define <1 x i8> @test_sf_vc_v_xv_se_e8mf8(<1 x i8> %vs2, i8 zeroext %rs1, iXLen %vl) {
1100 ; CHECK-LABEL: test_sf_vc_v_xv_se_e8mf8:
1101 ; CHECK:       # %bb.0: # %entry
1102 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
1103 ; CHECK-NEXT:    sf.vc.v.xv 3, v8, v8, a0
1104 ; CHECK-NEXT:    ret
1105 entry:
1106   %0 = tail call <1 x i8> @llvm.riscv.sf.vc.v.xv.se.nxv1i8.iXLen.i8.iXLen(iXLen 3, <1 x i8> %vs2, i8 %rs1, iXLen %vl)
1107   ret <1 x i8> %0
1110 declare <1 x i8> @llvm.riscv.sf.vc.v.xv.se.nxv1i8.iXLen.i8.iXLen(iXLen, <1 x i8>, i8, iXLen)
1112 define <2 x i8> @test_sf_vc_v_xv_se_e8mf4(<2 x i8> %vs2, i8 zeroext %rs1, iXLen %vl) {
1113 ; CHECK-LABEL: test_sf_vc_v_xv_se_e8mf4:
1114 ; CHECK:       # %bb.0: # %entry
1115 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
1116 ; CHECK-NEXT:    sf.vc.v.xv 3, v8, v8, a0
1117 ; CHECK-NEXT:    ret
1118 entry:
1119   %0 = tail call <2 x i8> @llvm.riscv.sf.vc.v.xv.se.nxv2i8.iXLen.i8.iXLen(iXLen 3, <2 x i8> %vs2, i8 %rs1, iXLen %vl)
1120   ret <2 x i8> %0
1123 declare <2 x i8> @llvm.riscv.sf.vc.v.xv.se.nxv2i8.iXLen.i8.iXLen(iXLen, <2 x i8>, i8, iXLen)
1125 define <4 x i8> @test_sf_vc_v_xv_se_e8mf2(<4 x i8> %vs2, i8 zeroext %rs1, iXLen %vl) {
1126 ; CHECK-LABEL: test_sf_vc_v_xv_se_e8mf2:
1127 ; CHECK:       # %bb.0: # %entry
1128 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
1129 ; CHECK-NEXT:    sf.vc.v.xv 3, v8, v8, a0
1130 ; CHECK-NEXT:    ret
1131 entry:
1132   %0 = tail call <4 x i8> @llvm.riscv.sf.vc.v.xv.se.nxv4i8.iXLen.i8.iXLen(iXLen 3, <4 x i8> %vs2, i8 %rs1, iXLen %vl)
1133   ret <4 x i8> %0
1136 declare <4 x i8> @llvm.riscv.sf.vc.v.xv.se.nxv4i8.iXLen.i8.iXLen(iXLen, <4 x i8>, i8, iXLen)
1138 define <8 x i8> @test_sf_vc_v_xv_se_e8m1(<8 x i8> %vs2, i8 zeroext %rs1, iXLen %vl) {
1139 ; CHECK-LABEL: test_sf_vc_v_xv_se_e8m1:
1140 ; CHECK:       # %bb.0: # %entry
1141 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
1142 ; CHECK-NEXT:    sf.vc.v.xv 3, v8, v8, a0
1143 ; CHECK-NEXT:    ret
1144 entry:
1145   %0 = tail call <8 x i8> @llvm.riscv.sf.vc.v.xv.se.nxv8i8.iXLen.i8.iXLen(iXLen 3, <8 x i8> %vs2, i8 %rs1, iXLen %vl)
1146   ret <8 x i8> %0
1149 declare <8 x i8> @llvm.riscv.sf.vc.v.xv.se.nxv8i8.iXLen.i8.iXLen(iXLen, <8 x i8>, i8, iXLen)
1151 define <16 x i8> @test_sf_vc_v_xv_se_e8m2(<16 x i8> %vs2, i8 zeroext %rs1, iXLen %vl) {
1152 ; CHECK-LABEL: test_sf_vc_v_xv_se_e8m2:
1153 ; CHECK:       # %bb.0: # %entry
1154 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
1155 ; CHECK-NEXT:    sf.vc.v.xv 3, v8, v8, a0
1156 ; CHECK-NEXT:    ret
1157 entry:
1158   %0 = tail call <16 x i8> @llvm.riscv.sf.vc.v.xv.se.nxv16i8.iXLen.i8.iXLen(iXLen 3, <16 x i8> %vs2, i8 %rs1, iXLen %vl)
1159   ret <16 x i8> %0
1162 declare <16 x i8> @llvm.riscv.sf.vc.v.xv.se.nxv16i8.iXLen.i8.iXLen(iXLen, <16 x i8>, i8, iXLen)
1164 define <32 x i8> @test_sf_vc_v_xv_se_e8m4(<32 x i8> %vs2, i8 zeroext %rs1, iXLen %vl) {
1165 ; CHECK-LABEL: test_sf_vc_v_xv_se_e8m4:
1166 ; CHECK:       # %bb.0: # %entry
1167 ; CHECK-NEXT:    vsetvli zero, a1, e8, m2, ta, ma
1168 ; CHECK-NEXT:    sf.vc.v.xv 3, v8, v8, a0
1169 ; CHECK-NEXT:    ret
1170 entry:
1171   %0 = tail call <32 x i8> @llvm.riscv.sf.vc.v.xv.se.nxv32i8.iXLen.i8.iXLen(iXLen 3, <32 x i8> %vs2, i8 %rs1, iXLen %vl)
1172   ret <32 x i8> %0
1175 declare <32 x i8> @llvm.riscv.sf.vc.v.xv.se.nxv32i8.iXLen.i8.iXLen(iXLen, <32 x i8>, i8, iXLen)
1177 define <64 x i8> @test_sf_vc_v_xv_se_e8m8(<64 x i8> %vs2, i8 zeroext %rs1, iXLen %vl) {
1178 ; CHECK-LABEL: test_sf_vc_v_xv_se_e8m8:
1179 ; CHECK:       # %bb.0: # %entry
1180 ; CHECK-NEXT:    vsetvli zero, a1, e8, m4, ta, ma
1181 ; CHECK-NEXT:    sf.vc.v.xv 3, v8, v8, a0
1182 ; CHECK-NEXT:    ret
1183 entry:
1184   %0 = tail call <64 x i8> @llvm.riscv.sf.vc.v.xv.se.nxv64i8.iXLen.i8.iXLen(iXLen 3, <64 x i8> %vs2, i8 %rs1, iXLen %vl)
1185   ret <64 x i8> %0
1188 declare <64 x i8> @llvm.riscv.sf.vc.v.xv.se.nxv64i8.iXLen.i8.iXLen(iXLen, <64 x i8>, i8, iXLen)
1190 define <1 x i16> @test_sf_vc_v_xv_se_e16mf4(<1 x i16> %vs2, i16 zeroext %rs1, iXLen %vl) {
1191 ; CHECK-LABEL: test_sf_vc_v_xv_se_e16mf4:
1192 ; CHECK:       # %bb.0: # %entry
1193 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
1194 ; CHECK-NEXT:    sf.vc.v.xv 3, v8, v8, a0
1195 ; CHECK-NEXT:    ret
1196 entry:
1197   %0 = tail call <1 x i16> @llvm.riscv.sf.vc.v.xv.se.nxv1i16.iXLen.i16.iXLen(iXLen 3, <1 x i16> %vs2, i16 %rs1, iXLen %vl)
1198   ret <1 x i16> %0
1201 declare <1 x i16> @llvm.riscv.sf.vc.v.xv.se.nxv1i16.iXLen.i16.iXLen(iXLen, <1 x i16>, i16, iXLen)
1203 define <2 x i16> @test_sf_vc_v_xv_se_e16mf2(<2 x i16> %vs2, i16 zeroext %rs1, iXLen %vl) {
1204 ; CHECK-LABEL: test_sf_vc_v_xv_se_e16mf2:
1205 ; CHECK:       # %bb.0: # %entry
1206 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
1207 ; CHECK-NEXT:    sf.vc.v.xv 3, v8, v8, a0
1208 ; CHECK-NEXT:    ret
1209 entry:
1210   %0 = tail call <2 x i16> @llvm.riscv.sf.vc.v.xv.se.nxv2i16.iXLen.i16.iXLen(iXLen 3, <2 x i16> %vs2, i16 %rs1, iXLen %vl)
1211   ret <2 x i16> %0
1214 declare <2 x i16> @llvm.riscv.sf.vc.v.xv.se.nxv2i16.iXLen.i16.iXLen(iXLen, <2 x i16>, i16, iXLen)
1216 define <4 x i16> @test_sf_vc_v_xv_se_e16m1(<4 x i16> %vs2, i16 zeroext %rs1, iXLen %vl) {
1217 ; CHECK-LABEL: test_sf_vc_v_xv_se_e16m1:
1218 ; CHECK:       # %bb.0: # %entry
1219 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
1220 ; CHECK-NEXT:    sf.vc.v.xv 3, v8, v8, a0
1221 ; CHECK-NEXT:    ret
1222 entry:
1223   %0 = tail call <4 x i16> @llvm.riscv.sf.vc.v.xv.se.nxv4i16.iXLen.i16.iXLen(iXLen 3, <4 x i16> %vs2, i16 %rs1, iXLen %vl)
1224   ret <4 x i16> %0
1227 declare <4 x i16> @llvm.riscv.sf.vc.v.xv.se.nxv4i16.iXLen.i16.iXLen(iXLen, <4 x i16>, i16, iXLen)
1229 define <8 x i16> @test_sf_vc_v_xv_se_e16m2(<8 x i16> %vs2, i16 zeroext %rs1, iXLen %vl) {
1230 ; CHECK-LABEL: test_sf_vc_v_xv_se_e16m2:
1231 ; CHECK:       # %bb.0: # %entry
1232 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
1233 ; CHECK-NEXT:    sf.vc.v.xv 3, v8, v8, a0
1234 ; CHECK-NEXT:    ret
1235 entry:
1236   %0 = tail call <8 x i16> @llvm.riscv.sf.vc.v.xv.se.nxv8i16.iXLen.i16.iXLen(iXLen 3, <8 x i16> %vs2, i16 %rs1, iXLen %vl)
1237   ret <8 x i16> %0
1240 declare <8 x i16> @llvm.riscv.sf.vc.v.xv.se.nxv8i16.iXLen.i16.iXLen(iXLen, <8 x i16>, i16, iXLen)
1242 define <16 x i16> @test_sf_vc_v_xv_se_e16m4(<16 x i16> %vs2, i16 zeroext %rs1, iXLen %vl) {
1243 ; CHECK-LABEL: test_sf_vc_v_xv_se_e16m4:
1244 ; CHECK:       # %bb.0: # %entry
1245 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
1246 ; CHECK-NEXT:    sf.vc.v.xv 3, v8, v8, a0
1247 ; CHECK-NEXT:    ret
1248 entry:
1249   %0 = tail call <16 x i16> @llvm.riscv.sf.vc.v.xv.se.nxv16i16.iXLen.i16.iXLen(iXLen 3, <16 x i16> %vs2, i16 %rs1, iXLen %vl)
1250   ret <16 x i16> %0
1253 declare <16 x i16> @llvm.riscv.sf.vc.v.xv.se.nxv16i16.iXLen.i16.iXLen(iXLen, <16 x i16>, i16, iXLen)
1255 define <32 x i16> @test_sf_vc_v_xv_se_e16m8(<32 x i16> %vs2, i16 zeroext %rs1, iXLen %vl) {
1256 ; CHECK-LABEL: test_sf_vc_v_xv_se_e16m8:
1257 ; CHECK:       # %bb.0: # %entry
1258 ; CHECK-NEXT:    vsetvli zero, a1, e16, m4, ta, ma
1259 ; CHECK-NEXT:    sf.vc.v.xv 3, v8, v8, a0
1260 ; CHECK-NEXT:    ret
1261 entry:
1262   %0 = tail call <32 x i16> @llvm.riscv.sf.vc.v.xv.se.nxv32i16.iXLen.i16.iXLen(iXLen 3, <32 x i16> %vs2, i16 %rs1, iXLen %vl)
1263   ret <32 x i16> %0
1266 declare <32 x i16> @llvm.riscv.sf.vc.v.xv.se.nxv32i16.iXLen.i16.iXLen(iXLen, <32 x i16>, i16, iXLen)
1268 define <1 x i32> @test_sf_vc_v_xv_se_e32mf2(<1 x i32> %vs2, i32 signext %rs1, iXLen %vl) {
1269 ; CHECK-LABEL: test_sf_vc_v_xv_se_e32mf2:
1270 ; CHECK:       # %bb.0: # %entry
1271 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
1272 ; CHECK-NEXT:    sf.vc.v.xv 3, v8, v8, a0
1273 ; CHECK-NEXT:    ret
1274 entry:
1275   %0 = tail call <1 x i32> @llvm.riscv.sf.vc.v.xv.se.nxv1i32.i32.i32.iXLen(iXLen 3, <1 x i32> %vs2, i32 %rs1, iXLen %vl)
1276   ret <1 x i32> %0
1279 declare <1 x i32> @llvm.riscv.sf.vc.v.xv.se.nxv1i32.i32.i32.iXLen(iXLen, <1 x i32>, i32, iXLen)
1281 define <2 x i32> @test_sf_vc_v_xv_se_e32m1(<2 x i32> %vs2, i32 signext %rs1, iXLen %vl) {
1282 ; CHECK-LABEL: test_sf_vc_v_xv_se_e32m1:
1283 ; CHECK:       # %bb.0: # %entry
1284 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
1285 ; CHECK-NEXT:    sf.vc.v.xv 3, v8, v8, a0
1286 ; CHECK-NEXT:    ret
1287 entry:
1288   %0 = tail call <2 x i32> @llvm.riscv.sf.vc.v.xv.se.nxv2i32.i32.i32.iXLen(iXLen 3, <2 x i32> %vs2, i32 %rs1, iXLen %vl)
1289   ret <2 x i32> %0
1292 declare <2 x i32> @llvm.riscv.sf.vc.v.xv.se.nxv2i32.i32.i32.iXLen(iXLen, <2 x i32>, i32, iXLen)
1294 define <4 x i32> @test_sf_vc_v_xv_se_e32m2(<4 x i32> %vs2, i32 signext %rs1, iXLen %vl) {
1295 ; CHECK-LABEL: test_sf_vc_v_xv_se_e32m2:
1296 ; CHECK:       # %bb.0: # %entry
1297 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
1298 ; CHECK-NEXT:    sf.vc.v.xv 3, v8, v8, a0
1299 ; CHECK-NEXT:    ret
1300 entry:
1301   %0 = tail call <4 x i32> @llvm.riscv.sf.vc.v.xv.se.nxv4i32.i32.i32.iXLen(iXLen 3, <4 x i32> %vs2, i32 %rs1, iXLen %vl)
1302   ret <4 x i32> %0
1305 declare <4 x i32> @llvm.riscv.sf.vc.v.xv.se.nxv4i32.i32.i32.iXLen(iXLen, <4 x i32>, i32, iXLen)
1307 define <8 x i32> @test_sf_vc_v_xv_se_e32m4(<8 x i32> %vs2, i32 signext %rs1, iXLen %vl) {
1308 ; CHECK-LABEL: test_sf_vc_v_xv_se_e32m4:
1309 ; CHECK:       # %bb.0: # %entry
1310 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
1311 ; CHECK-NEXT:    sf.vc.v.xv 3, v8, v8, a0
1312 ; CHECK-NEXT:    ret
1313 entry:
1314   %0 = tail call <8 x i32> @llvm.riscv.sf.vc.v.xv.se.nxv8i32.i32.i32.iXLen(iXLen 3, <8 x i32> %vs2, i32 %rs1, iXLen %vl)
1315   ret <8 x i32> %0
1318 declare <8 x i32> @llvm.riscv.sf.vc.v.xv.se.nxv8i32.i32.i32.iXLen(iXLen, <8 x i32>, i32, iXLen)
1320 define <16 x i32> @test_sf_vc_v_xv_se_e32m8(<16 x i32> %vs2, i32 signext %rs1, iXLen %vl) {
1321 ; CHECK-LABEL: test_sf_vc_v_xv_se_e32m8:
1322 ; CHECK:       # %bb.0: # %entry
1323 ; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
1324 ; CHECK-NEXT:    sf.vc.v.xv 3, v8, v8, a0
1325 ; CHECK-NEXT:    ret
1326 entry:
1327   %0 = tail call <16 x i32> @llvm.riscv.sf.vc.v.xv.se.nxv16i32.i32.i32.iXLen(iXLen 3, <16 x i32> %vs2, i32 %rs1, iXLen %vl)
1328   ret <16 x i32> %0
1331 declare <16 x i32> @llvm.riscv.sf.vc.v.xv.se.nxv16i32.i32.i32.iXLen(iXLen, <16 x i32>, i32, iXLen)
1333 define <1 x i8> @test_sf_vc_v_xv_e8mf8(<1 x i8> %vs2, i8 zeroext %rs1, iXLen %vl) {
1334 ; CHECK-LABEL: test_sf_vc_v_xv_e8mf8:
1335 ; CHECK:       # %bb.0: # %entry
1336 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
1337 ; CHECK-NEXT:    sf.vc.v.xv 3, v8, v8, a0
1338 ; CHECK-NEXT:    ret
1339 entry:
1340   %0 = tail call <1 x i8> @llvm.riscv.sf.vc.v.xv.nxv1i8.iXLen.i8.iXLen(iXLen 3, <1 x i8> %vs2, i8 %rs1, iXLen %vl)
1341   ret <1 x i8> %0
1344 declare <1 x i8> @llvm.riscv.sf.vc.v.xv.nxv1i8.iXLen.i8.iXLen(iXLen, <1 x i8>, i8, iXLen)
1346 define <2 x i8> @test_sf_vc_v_xv_e8mf4(<2 x i8> %vs2, i8 zeroext %rs1, iXLen %vl) {
1347 ; CHECK-LABEL: test_sf_vc_v_xv_e8mf4:
1348 ; CHECK:       # %bb.0: # %entry
1349 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
1350 ; CHECK-NEXT:    sf.vc.v.xv 3, v8, v8, a0
1351 ; CHECK-NEXT:    ret
1352 entry:
1353   %0 = tail call <2 x i8> @llvm.riscv.sf.vc.v.xv.nxv2i8.iXLen.i8.iXLen(iXLen 3, <2 x i8> %vs2, i8 %rs1, iXLen %vl)
1354   ret <2 x i8> %0
1357 declare <2 x i8> @llvm.riscv.sf.vc.v.xv.nxv2i8.iXLen.i8.iXLen(iXLen, <2 x i8>, i8, iXLen)
1359 define <4 x i8> @test_sf_vc_v_xv_e8mf2(<4 x i8> %vs2, i8 zeroext %rs1, iXLen %vl) {
1360 ; CHECK-LABEL: test_sf_vc_v_xv_e8mf2:
1361 ; CHECK:       # %bb.0: # %entry
1362 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
1363 ; CHECK-NEXT:    sf.vc.v.xv 3, v8, v8, a0
1364 ; CHECK-NEXT:    ret
1365 entry:
1366   %0 = tail call <4 x i8> @llvm.riscv.sf.vc.v.xv.nxv4i8.iXLen.i8.iXLen(iXLen 3, <4 x i8> %vs2, i8 %rs1, iXLen %vl)
1367   ret <4 x i8> %0
1370 declare <4 x i8> @llvm.riscv.sf.vc.v.xv.nxv4i8.iXLen.i8.iXLen(iXLen, <4 x i8>, i8, iXLen)
1372 define <8 x i8> @test_sf_vc_v_xv_e8m1(<8 x i8> %vs2, i8 zeroext %rs1, iXLen %vl) {
1373 ; CHECK-LABEL: test_sf_vc_v_xv_e8m1:
1374 ; CHECK:       # %bb.0: # %entry
1375 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
1376 ; CHECK-NEXT:    sf.vc.v.xv 3, v8, v8, a0
1377 ; CHECK-NEXT:    ret
1378 entry:
1379   %0 = tail call <8 x i8> @llvm.riscv.sf.vc.v.xv.nxv8i8.iXLen.i8.iXLen(iXLen 3, <8 x i8> %vs2, i8 %rs1, iXLen %vl)
1380   ret <8 x i8> %0
1383 declare <8 x i8> @llvm.riscv.sf.vc.v.xv.nxv8i8.iXLen.i8.iXLen(iXLen, <8 x i8>, i8, iXLen)
1385 define <16 x i8> @test_sf_vc_v_xv_e8m2(<16 x i8> %vs2, i8 zeroext %rs1, iXLen %vl) {
1386 ; CHECK-LABEL: test_sf_vc_v_xv_e8m2:
1387 ; CHECK:       # %bb.0: # %entry
1388 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
1389 ; CHECK-NEXT:    sf.vc.v.xv 3, v8, v8, a0
1390 ; CHECK-NEXT:    ret
1391 entry:
1392   %0 = tail call <16 x i8> @llvm.riscv.sf.vc.v.xv.nxv16i8.iXLen.i8.iXLen(iXLen 3, <16 x i8> %vs2, i8 %rs1, iXLen %vl)
1393   ret <16 x i8> %0
1396 declare <16 x i8> @llvm.riscv.sf.vc.v.xv.nxv16i8.iXLen.i8.iXLen(iXLen, <16 x i8>, i8, iXLen)
1398 define <32 x i8> @test_sf_vc_v_xv_e8m4(<32 x i8> %vs2, i8 zeroext %rs1, iXLen %vl) {
1399 ; CHECK-LABEL: test_sf_vc_v_xv_e8m4:
1400 ; CHECK:       # %bb.0: # %entry
1401 ; CHECK-NEXT:    vsetvli zero, a1, e8, m2, ta, ma
1402 ; CHECK-NEXT:    sf.vc.v.xv 3, v8, v8, a0
1403 ; CHECK-NEXT:    ret
1404 entry:
1405   %0 = tail call <32 x i8> @llvm.riscv.sf.vc.v.xv.nxv32i8.iXLen.i8.iXLen(iXLen 3, <32 x i8> %vs2, i8 %rs1, iXLen %vl)
1406   ret <32 x i8> %0
1409 declare <32 x i8> @llvm.riscv.sf.vc.v.xv.nxv32i8.iXLen.i8.iXLen(iXLen, <32 x i8>, i8, iXLen)
1411 define <64 x i8> @test_sf_vc_v_xv_e8m8(<64 x i8> %vs2, i8 zeroext %rs1, iXLen %vl) {
1412 ; CHECK-LABEL: test_sf_vc_v_xv_e8m8:
1413 ; CHECK:       # %bb.0: # %entry
1414 ; CHECK-NEXT:    vsetvli zero, a1, e8, m4, ta, ma
1415 ; CHECK-NEXT:    sf.vc.v.xv 3, v8, v8, a0
1416 ; CHECK-NEXT:    ret
1417 entry:
1418   %0 = tail call <64 x i8> @llvm.riscv.sf.vc.v.xv.nxv64i8.iXLen.i8.iXLen(iXLen 3, <64 x i8> %vs2, i8 %rs1, iXLen %vl)
1419   ret <64 x i8> %0
1422 declare <64 x i8> @llvm.riscv.sf.vc.v.xv.nxv64i8.iXLen.i8.iXLen(iXLen, <64 x i8>, i8, iXLen)
1424 define <1 x i16> @test_sf_vc_v_xv_e16mf4(<1 x i16> %vs2, i16 zeroext %rs1, iXLen %vl) {
1425 ; CHECK-LABEL: test_sf_vc_v_xv_e16mf4:
1426 ; CHECK:       # %bb.0: # %entry
1427 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
1428 ; CHECK-NEXT:    sf.vc.v.xv 3, v8, v8, a0
1429 ; CHECK-NEXT:    ret
1430 entry:
1431   %0 = tail call <1 x i16> @llvm.riscv.sf.vc.v.xv.nxv1i16.iXLen.i16.iXLen(iXLen 3, <1 x i16> %vs2, i16 %rs1, iXLen %vl)
1432   ret <1 x i16> %0
1435 declare <1 x i16> @llvm.riscv.sf.vc.v.xv.nxv1i16.iXLen.i16.iXLen(iXLen, <1 x i16>, i16, iXLen)
1437 define <2 x i16> @test_sf_vc_v_xv_e16mf2(<2 x i16> %vs2, i16 zeroext %rs1, iXLen %vl) {
1438 ; CHECK-LABEL: test_sf_vc_v_xv_e16mf2:
1439 ; CHECK:       # %bb.0: # %entry
1440 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
1441 ; CHECK-NEXT:    sf.vc.v.xv 3, v8, v8, a0
1442 ; CHECK-NEXT:    ret
1443 entry:
1444   %0 = tail call <2 x i16> @llvm.riscv.sf.vc.v.xv.nxv2i16.iXLen.i16.iXLen(iXLen 3, <2 x i16> %vs2, i16 %rs1, iXLen %vl)
1445   ret <2 x i16> %0
1448 declare <2 x i16> @llvm.riscv.sf.vc.v.xv.nxv2i16.iXLen.i16.iXLen(iXLen, <2 x i16>, i16, iXLen)
1450 define <4 x i16> @test_sf_vc_v_xv_e16m1(<4 x i16> %vs2, i16 zeroext %rs1, iXLen %vl) {
1451 ; CHECK-LABEL: test_sf_vc_v_xv_e16m1:
1452 ; CHECK:       # %bb.0: # %entry
1453 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
1454 ; CHECK-NEXT:    sf.vc.v.xv 3, v8, v8, a0
1455 ; CHECK-NEXT:    ret
1456 entry:
1457   %0 = tail call <4 x i16> @llvm.riscv.sf.vc.v.xv.nxv4i16.iXLen.i16.iXLen(iXLen 3, <4 x i16> %vs2, i16 %rs1, iXLen %vl)
1458   ret <4 x i16> %0
1461 declare <4 x i16> @llvm.riscv.sf.vc.v.xv.nxv4i16.iXLen.i16.iXLen(iXLen, <4 x i16>, i16, iXLen)
1463 define <8 x i16> @test_sf_vc_v_xv_e16m2(<8 x i16> %vs2, i16 zeroext %rs1, iXLen %vl) {
1464 ; CHECK-LABEL: test_sf_vc_v_xv_e16m2:
1465 ; CHECK:       # %bb.0: # %entry
1466 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
1467 ; CHECK-NEXT:    sf.vc.v.xv 3, v8, v8, a0
1468 ; CHECK-NEXT:    ret
1469 entry:
1470   %0 = tail call <8 x i16> @llvm.riscv.sf.vc.v.xv.nxv8i16.iXLen.i16.iXLen(iXLen 3, <8 x i16> %vs2, i16 %rs1, iXLen %vl)
1471   ret <8 x i16> %0
1474 declare <8 x i16> @llvm.riscv.sf.vc.v.xv.nxv8i16.iXLen.i16.iXLen(iXLen, <8 x i16>, i16, iXLen)
1476 define <16 x i16> @test_sf_vc_v_xv_e16m4(<16 x i16> %vs2, i16 zeroext %rs1, iXLen %vl) {
1477 ; CHECK-LABEL: test_sf_vc_v_xv_e16m4:
1478 ; CHECK:       # %bb.0: # %entry
1479 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
1480 ; CHECK-NEXT:    sf.vc.v.xv 3, v8, v8, a0
1481 ; CHECK-NEXT:    ret
1482 entry:
1483   %0 = tail call <16 x i16> @llvm.riscv.sf.vc.v.xv.nxv16i16.iXLen.i16.iXLen(iXLen 3, <16 x i16> %vs2, i16 %rs1, iXLen %vl)
1484   ret <16 x i16> %0
1487 declare <16 x i16> @llvm.riscv.sf.vc.v.xv.nxv16i16.iXLen.i16.iXLen(iXLen, <16 x i16>, i16, iXLen)
1489 define <32 x i16> @test_sf_vc_v_xv_e16m8(<32 x i16> %vs2, i16 zeroext %rs1, iXLen %vl) {
1490 ; CHECK-LABEL: test_sf_vc_v_xv_e16m8:
1491 ; CHECK:       # %bb.0: # %entry
1492 ; CHECK-NEXT:    vsetvli zero, a1, e16, m4, ta, ma
1493 ; CHECK-NEXT:    sf.vc.v.xv 3, v8, v8, a0
1494 ; CHECK-NEXT:    ret
1495 entry:
1496   %0 = tail call <32 x i16> @llvm.riscv.sf.vc.v.xv.nxv32i16.iXLen.i16.iXLen(iXLen 3, <32 x i16> %vs2, i16 %rs1, iXLen %vl)
1497   ret <32 x i16> %0
1500 declare <32 x i16> @llvm.riscv.sf.vc.v.xv.nxv32i16.iXLen.i16.iXLen(iXLen, <32 x i16>, i16, iXLen)
1502 define <1 x i32> @test_sf_vc_v_xv_e32mf2(<1 x i32> %vs2, i32 signext %rs1, iXLen %vl) {
1503 ; CHECK-LABEL: test_sf_vc_v_xv_e32mf2:
1504 ; CHECK:       # %bb.0: # %entry
1505 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
1506 ; CHECK-NEXT:    sf.vc.v.xv 3, v8, v8, a0
1507 ; CHECK-NEXT:    ret
1508 entry:
1509   %0 = tail call <1 x i32> @llvm.riscv.sf.vc.v.xv.nxv1i32.i32.i32.iXLen(iXLen 3, <1 x i32> %vs2, i32 %rs1, iXLen %vl)
1510   ret <1 x i32> %0
1513 declare <1 x i32> @llvm.riscv.sf.vc.v.xv.nxv1i32.i32.i32.iXLen(iXLen, <1 x i32>, i32, iXLen)
1515 define <2 x i32> @test_sf_vc_v_xv_e32m1(<2 x i32> %vs2, i32 signext %rs1, iXLen %vl) {
1516 ; CHECK-LABEL: test_sf_vc_v_xv_e32m1:
1517 ; CHECK:       # %bb.0: # %entry
1518 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
1519 ; CHECK-NEXT:    sf.vc.v.xv 3, v8, v8, a0
1520 ; CHECK-NEXT:    ret
1521 entry:
1522   %0 = tail call <2 x i32> @llvm.riscv.sf.vc.v.xv.nxv2i32.i32.i32.iXLen(iXLen 3, <2 x i32> %vs2, i32 %rs1, iXLen %vl)
1523   ret <2 x i32> %0
1526 declare <2 x i32> @llvm.riscv.sf.vc.v.xv.nxv2i32.i32.i32.iXLen(iXLen, <2 x i32>, i32, iXLen)
1528 define <4 x i32> @test_sf_vc_v_xv_e32m2(<4 x i32> %vs2, i32 signext %rs1, iXLen %vl) {
1529 ; CHECK-LABEL: test_sf_vc_v_xv_e32m2:
1530 ; CHECK:       # %bb.0: # %entry
1531 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
1532 ; CHECK-NEXT:    sf.vc.v.xv 3, v8, v8, a0
1533 ; CHECK-NEXT:    ret
1534 entry:
1535   %0 = tail call <4 x i32> @llvm.riscv.sf.vc.v.xv.nxv4i32.i32.i32.iXLen(iXLen 3, <4 x i32> %vs2, i32 %rs1, iXLen %vl)
1536   ret <4 x i32> %0
1539 declare <4 x i32> @llvm.riscv.sf.vc.v.xv.nxv4i32.i32.i32.iXLen(iXLen, <4 x i32>, i32, iXLen)
1541 define <8 x i32> @test_sf_vc_v_xv_e32m4(<8 x i32> %vs2, i32 signext %rs1, iXLen %vl) {
1542 ; CHECK-LABEL: test_sf_vc_v_xv_e32m4:
1543 ; CHECK:       # %bb.0: # %entry
1544 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
1545 ; CHECK-NEXT:    sf.vc.v.xv 3, v8, v8, a0
1546 ; CHECK-NEXT:    ret
1547 entry:
1548   %0 = tail call <8 x i32> @llvm.riscv.sf.vc.v.xv.nxv8i32.i32.i32.iXLen(iXLen 3, <8 x i32> %vs2, i32 %rs1, iXLen %vl)
1549   ret <8 x i32> %0
1552 declare <8 x i32> @llvm.riscv.sf.vc.v.xv.nxv8i32.i32.i32.iXLen(iXLen, <8 x i32>, i32, iXLen)
1554 define <16 x i32> @test_sf_vc_v_xv_e32m8(<16 x i32> %vs2, i32 signext %rs1, iXLen %vl) {
1555 ; CHECK-LABEL: test_sf_vc_v_xv_e32m8:
1556 ; CHECK:       # %bb.0: # %entry
1557 ; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
1558 ; CHECK-NEXT:    sf.vc.v.xv 3, v8, v8, a0
1559 ; CHECK-NEXT:    ret
1560 entry:
1561   %0 = tail call <16 x i32> @llvm.riscv.sf.vc.v.xv.nxv16i32.i32.i32.iXLen(iXLen 3, <16 x i32> %vs2, i32 %rs1, iXLen %vl)
1562   ret <16 x i32> %0
1565 declare <16 x i32> @llvm.riscv.sf.vc.v.xv.nxv16i32.i32.i32.iXLen(iXLen, <16 x i32>, i32, iXLen)
1567 define void @test_sf_vc_iv_se_e8mf8(<1 x i8> %vs2, iXLen %vl) {
1568 ; CHECK-LABEL: test_sf_vc_iv_se_e8mf8:
1569 ; CHECK:       # %bb.0: # %entry
1570 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
1571 ; CHECK-NEXT:    sf.vc.iv 3, 31, v8, 10
1572 ; CHECK-NEXT:    ret
1573 entry:
1574   tail call void @llvm.riscv.sf.vc.iv.se.iXLen.nxv1i8.iXLen.iXLen(iXLen 3, iXLen 31, <1 x i8> %vs2, iXLen 10, iXLen %vl)
1575   ret void
1578 declare void @llvm.riscv.sf.vc.iv.se.iXLen.nxv1i8.iXLen.iXLen(iXLen, iXLen, <1 x i8>, iXLen, iXLen)
1580 define void @test_sf_vc_iv_se_e8mf4(<2 x i8> %vs2, iXLen %vl) {
1581 ; CHECK-LABEL: test_sf_vc_iv_se_e8mf4:
1582 ; CHECK:       # %bb.0: # %entry
1583 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
1584 ; CHECK-NEXT:    sf.vc.iv 3, 31, v8, 10
1585 ; CHECK-NEXT:    ret
1586 entry:
1587   tail call void @llvm.riscv.sf.vc.iv.se.iXLen.nxv2i8.iXLen.iXLen(iXLen 3, iXLen 31, <2 x i8> %vs2, iXLen 10, iXLen %vl)
1588   ret void
1591 declare void @llvm.riscv.sf.vc.iv.se.iXLen.nxv2i8.iXLen.iXLen(iXLen, iXLen, <2 x i8>, iXLen, iXLen)
1593 define void @test_sf_vc_iv_se_e8mf2(<4 x i8> %vs2, iXLen %vl) {
1594 ; CHECK-LABEL: test_sf_vc_iv_se_e8mf2:
1595 ; CHECK:       # %bb.0: # %entry
1596 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, ma
1597 ; CHECK-NEXT:    sf.vc.iv 3, 31, v8, 10
1598 ; CHECK-NEXT:    ret
1599 entry:
1600   tail call void @llvm.riscv.sf.vc.iv.se.iXLen.nxv4i8.iXLen.iXLen(iXLen 3, iXLen 31, <4 x i8> %vs2, iXLen 10, iXLen %vl)
1601   ret void
1604 declare void @llvm.riscv.sf.vc.iv.se.iXLen.nxv4i8.iXLen.iXLen(iXLen, iXLen, <4 x i8>, iXLen, iXLen)
1606 define void @test_sf_vc_iv_se_e8m1(<8 x i8> %vs2, iXLen %vl) {
1607 ; CHECK-LABEL: test_sf_vc_iv_se_e8m1:
1608 ; CHECK:       # %bb.0: # %entry
1609 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
1610 ; CHECK-NEXT:    sf.vc.iv 3, 31, v8, 10
1611 ; CHECK-NEXT:    ret
1612 entry:
1613   tail call void @llvm.riscv.sf.vc.iv.se.iXLen.nxv8i8.iXLen.iXLen(iXLen 3, iXLen 31, <8 x i8> %vs2, iXLen 10, iXLen %vl)
1614   ret void
1617 declare void @llvm.riscv.sf.vc.iv.se.iXLen.nxv8i8.iXLen.iXLen(iXLen, iXLen, <8 x i8>, iXLen, iXLen)
1619 define void @test_sf_vc_iv_se_e8m2(<16 x i8> %vs2, iXLen %vl) {
1620 ; CHECK-LABEL: test_sf_vc_iv_se_e8m2:
1621 ; CHECK:       # %bb.0: # %entry
1622 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
1623 ; CHECK-NEXT:    sf.vc.iv 3, 31, v8, 10
1624 ; CHECK-NEXT:    ret
1625 entry:
1626   tail call void @llvm.riscv.sf.vc.iv.se.iXLen.nxv16i8.iXLen.iXLen(iXLen 3, iXLen 31, <16 x i8> %vs2, iXLen 10, iXLen %vl)
1627   ret void
1630 declare void @llvm.riscv.sf.vc.iv.se.iXLen.nxv16i8.iXLen.iXLen(iXLen, iXLen, <16 x i8>, iXLen, iXLen)
1632 define void @test_sf_vc_iv_se_e8m4(<32 x i8> %vs2, iXLen %vl) {
1633 ; CHECK-LABEL: test_sf_vc_iv_se_e8m4:
1634 ; CHECK:       # %bb.0: # %entry
1635 ; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, ma
1636 ; CHECK-NEXT:    sf.vc.iv 3, 31, v8, 10
1637 ; CHECK-NEXT:    ret
1638 entry:
1639   tail call void @llvm.riscv.sf.vc.iv.se.iXLen.nxv32i8.iXLen.iXLen(iXLen 3, iXLen 31, <32 x i8> %vs2, iXLen 10, iXLen %vl)
1640   ret void
1643 declare void @llvm.riscv.sf.vc.iv.se.iXLen.nxv32i8.iXLen.iXLen(iXLen, iXLen, <32 x i8>, iXLen, iXLen)
1645 define void @test_sf_vc_iv_se_e8m8(<64 x i8> %vs2, iXLen %vl) {
1646 ; CHECK-LABEL: test_sf_vc_iv_se_e8m8:
1647 ; CHECK:       # %bb.0: # %entry
1648 ; CHECK-NEXT:    vsetvli zero, a0, e8, m4, ta, ma
1649 ; CHECK-NEXT:    sf.vc.iv 3, 31, v8, 10
1650 ; CHECK-NEXT:    ret
1651 entry:
1652   tail call void @llvm.riscv.sf.vc.iv.se.iXLen.nxv64i8.iXLen.iXLen(iXLen 3, iXLen 31, <64 x i8> %vs2, iXLen 10, iXLen %vl)
1653   ret void
1656 declare void @llvm.riscv.sf.vc.iv.se.iXLen.nxv64i8.iXLen.iXLen(iXLen, iXLen, <64 x i8>, iXLen, iXLen)
1658 define void @test_sf_vc_iv_se_e16mf4(<1 x i16> %vs2, iXLen %vl) {
1659 ; CHECK-LABEL: test_sf_vc_iv_se_e16mf4:
1660 ; CHECK:       # %bb.0: # %entry
1661 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
1662 ; CHECK-NEXT:    sf.vc.iv 3, 31, v8, 10
1663 ; CHECK-NEXT:    ret
1664 entry:
1665   tail call void @llvm.riscv.sf.vc.iv.se.iXLen.nxv1i16.iXLen.iXLen(iXLen 3, iXLen 31, <1 x i16> %vs2, iXLen 10, iXLen %vl)
1666   ret void
1669 declare void @llvm.riscv.sf.vc.iv.se.iXLen.nxv1i16.iXLen.iXLen(iXLen, iXLen, <1 x i16>, iXLen, iXLen)
1671 define void @test_sf_vc_iv_se_e16mf2(<2 x i16> %vs2, iXLen %vl) {
1672 ; CHECK-LABEL: test_sf_vc_iv_se_e16mf2:
1673 ; CHECK:       # %bb.0: # %entry
1674 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
1675 ; CHECK-NEXT:    sf.vc.iv 3, 31, v8, 10
1676 ; CHECK-NEXT:    ret
1677 entry:
1678   tail call void @llvm.riscv.sf.vc.iv.se.iXLen.nxv2i16.iXLen.iXLen(iXLen 3, iXLen 31, <2 x i16> %vs2, iXLen 10, iXLen %vl)
1679   ret void
1682 declare void @llvm.riscv.sf.vc.iv.se.iXLen.nxv2i16.iXLen.iXLen(iXLen, iXLen, <2 x i16>, iXLen, iXLen)
1684 define void @test_sf_vc_iv_se_e16m1(<4 x i16> %vs2, iXLen %vl) {
1685 ; CHECK-LABEL: test_sf_vc_iv_se_e16m1:
1686 ; CHECK:       # %bb.0: # %entry
1687 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
1688 ; CHECK-NEXT:    sf.vc.iv 3, 31, v8, 10
1689 ; CHECK-NEXT:    ret
1690 entry:
1691   tail call void @llvm.riscv.sf.vc.iv.se.iXLen.nxv4i16.iXLen.iXLen(iXLen 3, iXLen 31, <4 x i16> %vs2, iXLen 10, iXLen %vl)
1692   ret void
1695 declare void @llvm.riscv.sf.vc.iv.se.iXLen.nxv4i16.iXLen.iXLen(iXLen, iXLen, <4 x i16>, iXLen, iXLen)
1697 define void @test_sf_vc_iv_se_e16m2(<8 x i16> %vs2, iXLen %vl) {
1698 ; CHECK-LABEL: test_sf_vc_iv_se_e16m2:
1699 ; CHECK:       # %bb.0: # %entry
1700 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
1701 ; CHECK-NEXT:    sf.vc.iv 3, 31, v8, 10
1702 ; CHECK-NEXT:    ret
1703 entry:
1704   tail call void @llvm.riscv.sf.vc.iv.se.iXLen.nxv8i16.iXLen.iXLen(iXLen 3, iXLen 31, <8 x i16> %vs2, iXLen 10, iXLen %vl)
1705   ret void
1708 declare void @llvm.riscv.sf.vc.iv.se.iXLen.nxv8i16.iXLen.iXLen(iXLen, iXLen, <8 x i16>, iXLen, iXLen)
1710 define void @test_sf_vc_iv_se_e16m4(<16 x i16> %vs2, iXLen %vl) {
1711 ; CHECK-LABEL: test_sf_vc_iv_se_e16m4:
1712 ; CHECK:       # %bb.0: # %entry
1713 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
1714 ; CHECK-NEXT:    sf.vc.iv 3, 31, v8, 10
1715 ; CHECK-NEXT:    ret
1716 entry:
1717   tail call void @llvm.riscv.sf.vc.iv.se.iXLen.nxv16i16.iXLen.iXLen(iXLen 3, iXLen 31, <16 x i16> %vs2, iXLen 10, iXLen %vl)
1718   ret void
1721 declare void @llvm.riscv.sf.vc.iv.se.iXLen.nxv16i16.iXLen.iXLen(iXLen, iXLen, <16 x i16>, iXLen, iXLen)
1723 define void @test_sf_vc_iv_se_e16m8(<32 x i16> %vs2, iXLen %vl) {
1724 ; CHECK-LABEL: test_sf_vc_iv_se_e16m8:
1725 ; CHECK:       # %bb.0: # %entry
1726 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
1727 ; CHECK-NEXT:    sf.vc.iv 3, 31, v8, 10
1728 ; CHECK-NEXT:    ret
1729 entry:
1730   tail call void @llvm.riscv.sf.vc.iv.se.iXLen.nxv32i16.iXLen.iXLen(iXLen 3, iXLen 31, <32 x i16> %vs2, iXLen 10, iXLen %vl)
1731   ret void
1734 declare void @llvm.riscv.sf.vc.iv.se.iXLen.nxv32i16.iXLen.iXLen(iXLen, iXLen, <32 x i16>, iXLen, iXLen)
1736 define void @test_sf_vc_iv_se_e32mf2(<1 x i32> %vs2, iXLen %vl) {
1737 ; CHECK-LABEL: test_sf_vc_iv_se_e32mf2:
1738 ; CHECK:       # %bb.0: # %entry
1739 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
1740 ; CHECK-NEXT:    sf.vc.iv 3, 31, v8, 10
1741 ; CHECK-NEXT:    ret
1742 entry:
1743   tail call void @llvm.riscv.sf.vc.iv.se.iXLen.nxv1i32.iXLen.iXLen(iXLen 3, iXLen 31, <1 x i32> %vs2, iXLen 10, iXLen %vl)
1744   ret void
1747 declare void @llvm.riscv.sf.vc.iv.se.iXLen.nxv1i32.iXLen.iXLen(iXLen, iXLen, <1 x i32>, iXLen, iXLen)
1749 define void @test_sf_vc_iv_se_e32m1(<2 x i32> %vs2, iXLen %vl) {
1750 ; CHECK-LABEL: test_sf_vc_iv_se_e32m1:
1751 ; CHECK:       # %bb.0: # %entry
1752 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
1753 ; CHECK-NEXT:    sf.vc.iv 3, 31, v8, 10
1754 ; CHECK-NEXT:    ret
1755 entry:
1756   tail call void @llvm.riscv.sf.vc.iv.se.iXLen.nxv2i32.iXLen.iXLen(iXLen 3, iXLen 31, <2 x i32> %vs2, iXLen 10, iXLen %vl)
1757   ret void
1760 declare void @llvm.riscv.sf.vc.iv.se.iXLen.nxv2i32.iXLen.iXLen(iXLen, iXLen, <2 x i32>, iXLen, iXLen)
1762 define void @test_sf_vc_iv_se_e32m2(<4 x i32> %vs2, iXLen %vl) {
1763 ; CHECK-LABEL: test_sf_vc_iv_se_e32m2:
1764 ; CHECK:       # %bb.0: # %entry
1765 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
1766 ; CHECK-NEXT:    sf.vc.iv 3, 31, v8, 10
1767 ; CHECK-NEXT:    ret
1768 entry:
1769   tail call void @llvm.riscv.sf.vc.iv.se.iXLen.nxv4i32.iXLen.iXLen(iXLen 3, iXLen 31, <4 x i32> %vs2, iXLen 10, iXLen %vl)
1770   ret void
1773 declare void @llvm.riscv.sf.vc.iv.se.iXLen.nxv4i32.iXLen.iXLen(iXLen, iXLen, <4 x i32>, iXLen, iXLen)
1775 define void @test_sf_vc_iv_se_e32m4(<8 x i32> %vs2, iXLen %vl) {
1776 ; CHECK-LABEL: test_sf_vc_iv_se_e32m4:
1777 ; CHECK:       # %bb.0: # %entry
1778 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
1779 ; CHECK-NEXT:    sf.vc.iv 3, 31, v8, 10
1780 ; CHECK-NEXT:    ret
1781 entry:
1782   tail call void @llvm.riscv.sf.vc.iv.se.iXLen.nxv8i32.iXLen.iXLen(iXLen 3, iXLen 31, <8 x i32> %vs2, iXLen 10, iXLen %vl)
1783   ret void
1786 declare void @llvm.riscv.sf.vc.iv.se.iXLen.nxv8i32.iXLen.iXLen(iXLen, iXLen, <8 x i32>, iXLen, iXLen)
1788 define void @test_sf_vc_iv_se_e32m8(<16 x i32> %vs2, iXLen %vl) {
1789 ; CHECK-LABEL: test_sf_vc_iv_se_e32m8:
1790 ; CHECK:       # %bb.0: # %entry
1791 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1792 ; CHECK-NEXT:    sf.vc.iv 3, 31, v8, 10
1793 ; CHECK-NEXT:    ret
1794 entry:
1795   tail call void @llvm.riscv.sf.vc.iv.se.iXLen.nxv16i32.iXLen.iXLen(iXLen 3, iXLen 31, <16 x i32> %vs2, iXLen 10, iXLen %vl)
1796   ret void
1799 declare void @llvm.riscv.sf.vc.iv.se.iXLen.nxv16i32.iXLen.iXLen(iXLen, iXLen, <16 x i32>, iXLen, iXLen)
1801 define void @test_sf_vc_iv_se_e64m1(<1 x i64> %vs2, iXLen %vl) {
1802 ; CHECK-LABEL: test_sf_vc_iv_se_e64m1:
1803 ; CHECK:       # %bb.0: # %entry
1804 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
1805 ; CHECK-NEXT:    sf.vc.iv 3, 31, v8, 10
1806 ; CHECK-NEXT:    ret
1807 entry:
1808   tail call void @llvm.riscv.sf.vc.iv.se.iXLen.nxv1i64.iXLen.iXLen(iXLen 3, iXLen 31, <1 x i64> %vs2, iXLen 10, iXLen %vl)
1809   ret void
1812 declare void @llvm.riscv.sf.vc.iv.se.iXLen.nxv1i64.iXLen.iXLen(iXLen, iXLen, <1 x i64>, iXLen, iXLen)
1814 define void @test_sf_vc_iv_se_e64m2(<2 x i64> %vs2, iXLen %vl) {
1815 ; CHECK-LABEL: test_sf_vc_iv_se_e64m2:
1816 ; CHECK:       # %bb.0: # %entry
1817 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
1818 ; CHECK-NEXT:    sf.vc.iv 3, 31, v8, 10
1819 ; CHECK-NEXT:    ret
1820 entry:
1821   tail call void @llvm.riscv.sf.vc.iv.se.iXLen.nxv2i64.iXLen.iXLen(iXLen 3, iXLen 31, <2 x i64> %vs2, iXLen 10, iXLen %vl)
1822   ret void
1825 declare void @llvm.riscv.sf.vc.iv.se.iXLen.nxv2i64.iXLen.iXLen(iXLen, iXLen, <2 x i64>, iXLen, iXLen)
1827 define void @test_sf_vc_iv_se_e64m4(<4 x i64> %vs2, iXLen %vl) {
1828 ; CHECK-LABEL: test_sf_vc_iv_se_e64m4:
1829 ; CHECK:       # %bb.0: # %entry
1830 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
1831 ; CHECK-NEXT:    sf.vc.iv 3, 31, v8, 10
1832 ; CHECK-NEXT:    ret
1833 entry:
1834   tail call void @llvm.riscv.sf.vc.iv.se.iXLen.nxv4i64.iXLen.iXLen(iXLen 3, iXLen 31, <4 x i64> %vs2, iXLen 10, iXLen %vl)
1835   ret void
1838 declare void @llvm.riscv.sf.vc.iv.se.iXLen.nxv4i64.iXLen.iXLen(iXLen, iXLen, <4 x i64>, iXLen, iXLen)
1840 define void @test_sf_vc_iv_se_e64m8(<8 x i64> %vs2, iXLen %vl) {
1841 ; CHECK-LABEL: test_sf_vc_iv_se_e64m8:
1842 ; CHECK:       # %bb.0: # %entry
1843 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
1844 ; CHECK-NEXT:    sf.vc.iv 3, 31, v8, 10
1845 ; CHECK-NEXT:    ret
1846 entry:
1847   tail call void @llvm.riscv.sf.vc.iv.se.iXLen.nxv8i64.iXLen.iXLen(iXLen 3, iXLen 31, <8 x i64> %vs2, iXLen 10, iXLen %vl)
1848   ret void
1851 declare void @llvm.riscv.sf.vc.iv.se.iXLen.nxv8i64.iXLen.iXLen(iXLen, iXLen, <8 x i64>, iXLen, iXLen)
1853 define <1 x i8> @test_sf_vc_v_iv_se_e8mf8(<1 x i8> %vs2, iXLen %vl) {
1854 ; CHECK-LABEL: test_sf_vc_v_iv_se_e8mf8:
1855 ; CHECK:       # %bb.0: # %entry
1856 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
1857 ; CHECK-NEXT:    sf.vc.v.iv 3, v8, v8, 10
1858 ; CHECK-NEXT:    ret
1859 entry:
1860   %0 = tail call <1 x i8> @llvm.riscv.sf.vc.v.iv.se.nxv1i8.iXLen.iXLen.iXLen(iXLen 3, <1 x i8> %vs2, iXLen 10, iXLen %vl)
1861   ret <1 x i8> %0
1864 declare <1 x i8> @llvm.riscv.sf.vc.v.iv.se.nxv1i8.iXLen.iXLen.iXLen(iXLen, <1 x i8>, iXLen, iXLen)
1866 define <2 x i8> @test_sf_vc_v_iv_se_e8mf4(<2 x i8> %vs2, iXLen %vl) {
1867 ; CHECK-LABEL: test_sf_vc_v_iv_se_e8mf4:
1868 ; CHECK:       # %bb.0: # %entry
1869 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
1870 ; CHECK-NEXT:    sf.vc.v.iv 3, v8, v8, 10
1871 ; CHECK-NEXT:    ret
1872 entry:
1873   %0 = tail call <2 x i8> @llvm.riscv.sf.vc.v.iv.se.nxv2i8.iXLen.iXLen.iXLen(iXLen 3, <2 x i8> %vs2, iXLen 10, iXLen %vl)
1874   ret <2 x i8> %0
1877 declare <2 x i8> @llvm.riscv.sf.vc.v.iv.se.nxv2i8.iXLen.iXLen.iXLen(iXLen, <2 x i8>, iXLen, iXLen)
1879 define <4 x i8> @test_sf_vc_v_iv_se_e8mf2(<4 x i8> %vs2, iXLen %vl) {
1880 ; CHECK-LABEL: test_sf_vc_v_iv_se_e8mf2:
1881 ; CHECK:       # %bb.0: # %entry
1882 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, ma
1883 ; CHECK-NEXT:    sf.vc.v.iv 3, v8, v8, 10
1884 ; CHECK-NEXT:    ret
1885 entry:
1886   %0 = tail call <4 x i8> @llvm.riscv.sf.vc.v.iv.se.nxv4i8.iXLen.iXLen.iXLen(iXLen 3, <4 x i8> %vs2, iXLen 10, iXLen %vl)
1887   ret <4 x i8> %0
1890 declare <4 x i8> @llvm.riscv.sf.vc.v.iv.se.nxv4i8.iXLen.iXLen.iXLen(iXLen, <4 x i8>, iXLen, iXLen)
1892 define <8 x i8> @test_sf_vc_v_iv_se_e8m1(<8 x i8> %vs2, iXLen %vl) {
1893 ; CHECK-LABEL: test_sf_vc_v_iv_se_e8m1:
1894 ; CHECK:       # %bb.0: # %entry
1895 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
1896 ; CHECK-NEXT:    sf.vc.v.iv 3, v8, v8, 10
1897 ; CHECK-NEXT:    ret
1898 entry:
1899   %0 = tail call <8 x i8> @llvm.riscv.sf.vc.v.iv.se.nxv8i8.iXLen.iXLen.iXLen(iXLen 3, <8 x i8> %vs2, iXLen 10, iXLen %vl)
1900   ret <8 x i8> %0
1903 declare <8 x i8> @llvm.riscv.sf.vc.v.iv.se.nxv8i8.iXLen.iXLen.iXLen(iXLen, <8 x i8>, iXLen, iXLen)
1905 define <16 x i8> @test_sf_vc_v_iv_se_e8m2(<16 x i8> %vs2, iXLen %vl) {
1906 ; CHECK-LABEL: test_sf_vc_v_iv_se_e8m2:
1907 ; CHECK:       # %bb.0: # %entry
1908 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
1909 ; CHECK-NEXT:    sf.vc.v.iv 3, v8, v8, 10
1910 ; CHECK-NEXT:    ret
1911 entry:
1912   %0 = tail call <16 x i8> @llvm.riscv.sf.vc.v.iv.se.nxv16i8.iXLen.iXLen.iXLen(iXLen 3, <16 x i8> %vs2, iXLen 10, iXLen %vl)
1913   ret <16 x i8> %0
1916 declare <16 x i8> @llvm.riscv.sf.vc.v.iv.se.nxv16i8.iXLen.iXLen.iXLen(iXLen, <16 x i8>, iXLen, iXLen)
1918 define <32 x i8> @test_sf_vc_v_iv_se_e8m4(<32 x i8> %vs2, iXLen %vl) {
1919 ; CHECK-LABEL: test_sf_vc_v_iv_se_e8m4:
1920 ; CHECK:       # %bb.0: # %entry
1921 ; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, ma
1922 ; CHECK-NEXT:    sf.vc.v.iv 3, v8, v8, 10
1923 ; CHECK-NEXT:    ret
1924 entry:
1925   %0 = tail call <32 x i8> @llvm.riscv.sf.vc.v.iv.se.nxv32i8.iXLen.iXLen.iXLen(iXLen 3, <32 x i8> %vs2, iXLen 10, iXLen %vl)
1926   ret <32 x i8> %0
1929 declare <32 x i8> @llvm.riscv.sf.vc.v.iv.se.nxv32i8.iXLen.iXLen.iXLen(iXLen, <32 x i8>, iXLen, iXLen)
1931 define <64 x i8> @test_sf_vc_v_iv_se_e8m8(<64 x i8> %vs2, iXLen %vl) {
1932 ; CHECK-LABEL: test_sf_vc_v_iv_se_e8m8:
1933 ; CHECK:       # %bb.0: # %entry
1934 ; CHECK-NEXT:    vsetvli zero, a0, e8, m4, ta, ma
1935 ; CHECK-NEXT:    sf.vc.v.iv 3, v8, v8, 10
1936 ; CHECK-NEXT:    ret
1937 entry:
1938   %0 = tail call <64 x i8> @llvm.riscv.sf.vc.v.iv.se.nxv64i8.iXLen.iXLen.iXLen(iXLen 3, <64 x i8> %vs2, iXLen 10, iXLen %vl)
1939   ret <64 x i8> %0
1942 declare <64 x i8> @llvm.riscv.sf.vc.v.iv.se.nxv64i8.iXLen.iXLen.iXLen(iXLen, <64 x i8>, iXLen, iXLen)
1944 define <1 x i16> @test_sf_vc_v_iv_se_e16mf4(<1 x i16> %vs2, iXLen %vl) {
1945 ; CHECK-LABEL: test_sf_vc_v_iv_se_e16mf4:
1946 ; CHECK:       # %bb.0: # %entry
1947 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
1948 ; CHECK-NEXT:    sf.vc.v.iv 3, v8, v8, 10
1949 ; CHECK-NEXT:    ret
1950 entry:
1951   %0 = tail call <1 x i16> @llvm.riscv.sf.vc.v.iv.se.nxv1i16.iXLen.iXLen.iXLen(iXLen 3, <1 x i16> %vs2, iXLen 10, iXLen %vl)
1952   ret <1 x i16> %0
1955 declare <1 x i16> @llvm.riscv.sf.vc.v.iv.se.nxv1i16.iXLen.iXLen.iXLen(iXLen, <1 x i16>, iXLen, iXLen)
1957 define <2 x i16> @test_sf_vc_v_iv_se_e16mf2(<2 x i16> %vs2, iXLen %vl) {
1958 ; CHECK-LABEL: test_sf_vc_v_iv_se_e16mf2:
1959 ; CHECK:       # %bb.0: # %entry
1960 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
1961 ; CHECK-NEXT:    sf.vc.v.iv 3, v8, v8, 10
1962 ; CHECK-NEXT:    ret
1963 entry:
1964   %0 = tail call <2 x i16> @llvm.riscv.sf.vc.v.iv.se.nxv2i16.iXLen.iXLen.iXLen(iXLen 3, <2 x i16> %vs2, iXLen 10, iXLen %vl)
1965   ret <2 x i16> %0
1968 declare <2 x i16> @llvm.riscv.sf.vc.v.iv.se.nxv2i16.iXLen.iXLen.iXLen(iXLen, <2 x i16>, iXLen, iXLen)
1970 define <4 x i16> @test_sf_vc_v_iv_se_e16m1(<4 x i16> %vs2, iXLen %vl) {
1971 ; CHECK-LABEL: test_sf_vc_v_iv_se_e16m1:
1972 ; CHECK:       # %bb.0: # %entry
1973 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
1974 ; CHECK-NEXT:    sf.vc.v.iv 3, v8, v8, 10
1975 ; CHECK-NEXT:    ret
1976 entry:
1977   %0 = tail call <4 x i16> @llvm.riscv.sf.vc.v.iv.se.nxv4i16.iXLen.iXLen.iXLen(iXLen 3, <4 x i16> %vs2, iXLen 10, iXLen %vl)
1978   ret <4 x i16> %0
1981 declare <4 x i16> @llvm.riscv.sf.vc.v.iv.se.nxv4i16.iXLen.iXLen.iXLen(iXLen, <4 x i16>, iXLen, iXLen)
1983 define <8 x i16> @test_sf_vc_v_iv_se_e16m2(<8 x i16> %vs2, iXLen %vl) {
1984 ; CHECK-LABEL: test_sf_vc_v_iv_se_e16m2:
1985 ; CHECK:       # %bb.0: # %entry
1986 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
1987 ; CHECK-NEXT:    sf.vc.v.iv 3, v8, v8, 10
1988 ; CHECK-NEXT:    ret
1989 entry:
1990   %0 = tail call <8 x i16> @llvm.riscv.sf.vc.v.iv.se.nxv8i16.iXLen.iXLen.iXLen(iXLen 3, <8 x i16> %vs2, iXLen 10, iXLen %vl)
1991   ret <8 x i16> %0
1994 declare <8 x i16> @llvm.riscv.sf.vc.v.iv.se.nxv8i16.iXLen.iXLen.iXLen(iXLen, <8 x i16>, iXLen, iXLen)
1996 define <16 x i16> @test_sf_vc_v_iv_se_e16m4(<16 x i16> %vs2, iXLen %vl) {
1997 ; CHECK-LABEL: test_sf_vc_v_iv_se_e16m4:
1998 ; CHECK:       # %bb.0: # %entry
1999 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
2000 ; CHECK-NEXT:    sf.vc.v.iv 3, v8, v8, 10
2001 ; CHECK-NEXT:    ret
2002 entry:
2003   %0 = tail call <16 x i16> @llvm.riscv.sf.vc.v.iv.se.nxv16i16.iXLen.iXLen.iXLen(iXLen 3, <16 x i16> %vs2, iXLen 10, iXLen %vl)
2004   ret <16 x i16> %0
2007 declare <16 x i16> @llvm.riscv.sf.vc.v.iv.se.nxv16i16.iXLen.iXLen.iXLen(iXLen, <16 x i16>, iXLen, iXLen)
2009 define <32 x i16> @test_sf_vc_v_iv_se_e16m8(<32 x i16> %vs2, iXLen %vl) {
2010 ; CHECK-LABEL: test_sf_vc_v_iv_se_e16m8:
2011 ; CHECK:       # %bb.0: # %entry
2012 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
2013 ; CHECK-NEXT:    sf.vc.v.iv 3, v8, v8, 10
2014 ; CHECK-NEXT:    ret
2015 entry:
2016   %0 = tail call <32 x i16> @llvm.riscv.sf.vc.v.iv.se.nxv32i16.iXLen.iXLen.iXLen(iXLen 3, <32 x i16> %vs2, iXLen 10, iXLen %vl)
2017   ret <32 x i16> %0
2020 declare <32 x i16> @llvm.riscv.sf.vc.v.iv.se.nxv32i16.iXLen.iXLen.iXLen(iXLen, <32 x i16>, iXLen, iXLen)
2022 define <1 x i32> @test_sf_vc_v_iv_se_e32mf2(<1 x i32> %vs2, iXLen %vl) {
2023 ; CHECK-LABEL: test_sf_vc_v_iv_se_e32mf2:
2024 ; CHECK:       # %bb.0: # %entry
2025 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
2026 ; CHECK-NEXT:    sf.vc.v.iv 3, v8, v8, 10
2027 ; CHECK-NEXT:    ret
2028 entry:
2029   %0 = tail call <1 x i32> @llvm.riscv.sf.vc.v.iv.se.nxv1i32.iXLen.iXLen.iXLen(iXLen 3, <1 x i32> %vs2, iXLen 10, iXLen %vl)
2030   ret <1 x i32> %0
2033 declare <1 x i32> @llvm.riscv.sf.vc.v.iv.se.nxv1i32.iXLen.iXLen.iXLen(iXLen, <1 x i32>, iXLen, iXLen)
2035 define <2 x i32> @test_sf_vc_v_iv_se_e32m1(<2 x i32> %vs2, iXLen %vl) {
2036 ; CHECK-LABEL: test_sf_vc_v_iv_se_e32m1:
2037 ; CHECK:       # %bb.0: # %entry
2038 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
2039 ; CHECK-NEXT:    sf.vc.v.iv 3, v8, v8, 10
2040 ; CHECK-NEXT:    ret
2041 entry:
2042   %0 = tail call <2 x i32> @llvm.riscv.sf.vc.v.iv.se.nxv2i32.iXLen.iXLen.iXLen(iXLen 3, <2 x i32> %vs2, iXLen 10, iXLen %vl)
2043   ret <2 x i32> %0
2046 declare <2 x i32> @llvm.riscv.sf.vc.v.iv.se.nxv2i32.iXLen.iXLen.iXLen(iXLen, <2 x i32>, iXLen, iXLen)
2048 define <4 x i32> @test_sf_vc_v_iv_se_e32m2(<4 x i32> %vs2, iXLen %vl) {
2049 ; CHECK-LABEL: test_sf_vc_v_iv_se_e32m2:
2050 ; CHECK:       # %bb.0: # %entry
2051 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
2052 ; CHECK-NEXT:    sf.vc.v.iv 3, v8, v8, 10
2053 ; CHECK-NEXT:    ret
2054 entry:
2055   %0 = tail call <4 x i32> @llvm.riscv.sf.vc.v.iv.se.nxv4i32.iXLen.iXLen.iXLen(iXLen 3, <4 x i32> %vs2, iXLen 10, iXLen %vl)
2056   ret <4 x i32> %0
2059 declare <4 x i32> @llvm.riscv.sf.vc.v.iv.se.nxv4i32.iXLen.iXLen.iXLen(iXLen, <4 x i32>, iXLen, iXLen)
2061 define <8 x i32> @test_sf_vc_v_iv_se_e32m4(<8 x i32> %vs2, iXLen %vl) {
2062 ; CHECK-LABEL: test_sf_vc_v_iv_se_e32m4:
2063 ; CHECK:       # %bb.0: # %entry
2064 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
2065 ; CHECK-NEXT:    sf.vc.v.iv 3, v8, v8, 10
2066 ; CHECK-NEXT:    ret
2067 entry:
2068   %0 = tail call <8 x i32> @llvm.riscv.sf.vc.v.iv.se.nxv8i32.iXLen.iXLen.iXLen(iXLen 3, <8 x i32> %vs2, iXLen 10, iXLen %vl)
2069   ret <8 x i32> %0
2072 declare <8 x i32> @llvm.riscv.sf.vc.v.iv.se.nxv8i32.iXLen.iXLen.iXLen(iXLen, <8 x i32>, iXLen, iXLen)
2074 define <16 x i32> @test_sf_vc_v_iv_se_e32m8(<16 x i32> %vs2, iXLen %vl) {
2075 ; CHECK-LABEL: test_sf_vc_v_iv_se_e32m8:
2076 ; CHECK:       # %bb.0: # %entry
2077 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
2078 ; CHECK-NEXT:    sf.vc.v.iv 3, v8, v8, 10
2079 ; CHECK-NEXT:    ret
2080 entry:
2081   %0 = tail call <16 x i32> @llvm.riscv.sf.vc.v.iv.se.nxv16i32.iXLen.iXLen.iXLen(iXLen 3, <16 x i32> %vs2, iXLen 10, iXLen %vl)
2082   ret <16 x i32> %0
2085 declare <16 x i32> @llvm.riscv.sf.vc.v.iv.se.nxv16i32.iXLen.iXLen.iXLen(iXLen, <16 x i32>, iXLen, iXLen)
2087 define <1 x i64> @test_sf_vc_v_iv_se_e64m1(<1 x i64> %vs2, iXLen %vl) {
2088 ; CHECK-LABEL: test_sf_vc_v_iv_se_e64m1:
2089 ; CHECK:       # %bb.0: # %entry
2090 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
2091 ; CHECK-NEXT:    sf.vc.v.iv 3, v8, v8, 10
2092 ; CHECK-NEXT:    ret
2093 entry:
2094   %0 = tail call <1 x i64> @llvm.riscv.sf.vc.v.iv.se.nxv1i64.iXLen.iXLen.iXLen(iXLen 3, <1 x i64> %vs2, iXLen 10, iXLen %vl)
2095   ret <1 x i64> %0
2098 declare <1 x i64> @llvm.riscv.sf.vc.v.iv.se.nxv1i64.iXLen.iXLen.iXLen(iXLen, <1 x i64>, iXLen, iXLen)
2100 define <2 x i64> @test_sf_vc_v_iv_se_e64m2(<2 x i64> %vs2, iXLen %vl) {
2101 ; CHECK-LABEL: test_sf_vc_v_iv_se_e64m2:
2102 ; CHECK:       # %bb.0: # %entry
2103 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
2104 ; CHECK-NEXT:    sf.vc.v.iv 3, v8, v8, 10
2105 ; CHECK-NEXT:    ret
2106 entry:
2107   %0 = tail call <2 x i64> @llvm.riscv.sf.vc.v.iv.se.nxv2i64.iXLen.iXLen.iXLen(iXLen 3, <2 x i64> %vs2, iXLen 10, iXLen %vl)
2108   ret <2 x i64> %0
2111 declare <2 x i64> @llvm.riscv.sf.vc.v.iv.se.nxv2i64.iXLen.iXLen.iXLen(iXLen, <2 x i64>, iXLen, iXLen)
2113 define <4 x i64> @test_sf_vc_v_iv_se_e64m4(<4 x i64> %vs2, iXLen %vl) {
2114 ; CHECK-LABEL: test_sf_vc_v_iv_se_e64m4:
2115 ; CHECK:       # %bb.0: # %entry
2116 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
2117 ; CHECK-NEXT:    sf.vc.v.iv 3, v8, v8, 10
2118 ; CHECK-NEXT:    ret
2119 entry:
2120   %0 = tail call <4 x i64> @llvm.riscv.sf.vc.v.iv.se.nxv4i64.iXLen.iXLen.iXLen(iXLen 3, <4 x i64> %vs2, iXLen 10, iXLen %vl)
2121   ret <4 x i64> %0
2124 declare <4 x i64> @llvm.riscv.sf.vc.v.iv.se.nxv4i64.iXLen.iXLen.iXLen(iXLen, <4 x i64>, iXLen, iXLen)
2126 define <8 x i64> @test_sf_vc_v_iv_se_e64m8(<8 x i64> %vs2, iXLen %vl) {
2127 ; CHECK-LABEL: test_sf_vc_v_iv_se_e64m8:
2128 ; CHECK:       # %bb.0: # %entry
2129 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
2130 ; CHECK-NEXT:    sf.vc.v.iv 3, v8, v8, 10
2131 ; CHECK-NEXT:    ret
2132 entry:
2133   %0 = tail call <8 x i64> @llvm.riscv.sf.vc.v.iv.se.nxv8i64.iXLen.iXLen.iXLen(iXLen 3, <8 x i64> %vs2, iXLen 10, iXLen %vl)
2134   ret <8 x i64> %0
2137 declare <8 x i64> @llvm.riscv.sf.vc.v.iv.se.nxv8i64.iXLen.iXLen.iXLen(iXLen, <8 x i64>, iXLen, iXLen)
2139 define <1 x i8> @test_sf_vc_v_iv_e8mf8(<1 x i8> %vs2, iXLen %vl) {
2140 ; CHECK-LABEL: test_sf_vc_v_iv_e8mf8:
2141 ; CHECK:       # %bb.0: # %entry
2142 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
2143 ; CHECK-NEXT:    sf.vc.v.iv 3, v8, v8, 10
2144 ; CHECK-NEXT:    ret
2145 entry:
2146   %0 = tail call <1 x i8> @llvm.riscv.sf.vc.v.iv.nxv1i8.iXLen.iXLen.iXLen(iXLen 3, <1 x i8> %vs2, iXLen 10, iXLen %vl)
2147   ret <1 x i8> %0
2150 declare <1 x i8> @llvm.riscv.sf.vc.v.iv.nxv1i8.iXLen.iXLen.iXLen(iXLen, <1 x i8>, iXLen, iXLen)
2152 define <2 x i8> @test_sf_vc_v_iv_e8mf4(<2 x i8> %vs2, iXLen %vl) {
2153 ; CHECK-LABEL: test_sf_vc_v_iv_e8mf4:
2154 ; CHECK:       # %bb.0: # %entry
2155 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
2156 ; CHECK-NEXT:    sf.vc.v.iv 3, v8, v8, 10
2157 ; CHECK-NEXT:    ret
2158 entry:
2159   %0 = tail call <2 x i8> @llvm.riscv.sf.vc.v.iv.nxv2i8.iXLen.iXLen.iXLen(iXLen 3, <2 x i8> %vs2, iXLen 10, iXLen %vl)
2160   ret <2 x i8> %0
2163 declare <2 x i8> @llvm.riscv.sf.vc.v.iv.nxv2i8.iXLen.iXLen.iXLen(iXLen, <2 x i8>, iXLen, iXLen)
2165 define <4 x i8> @test_sf_vc_v_iv_e8mf2(<4 x i8> %vs2, iXLen %vl) {
2166 ; CHECK-LABEL: test_sf_vc_v_iv_e8mf2:
2167 ; CHECK:       # %bb.0: # %entry
2168 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, ma
2169 ; CHECK-NEXT:    sf.vc.v.iv 3, v8, v8, 10
2170 ; CHECK-NEXT:    ret
2171 entry:
2172   %0 = tail call <4 x i8> @llvm.riscv.sf.vc.v.iv.nxv4i8.iXLen.iXLen.iXLen(iXLen 3, <4 x i8> %vs2, iXLen 10, iXLen %vl)
2173   ret <4 x i8> %0
2176 declare <4 x i8> @llvm.riscv.sf.vc.v.iv.nxv4i8.iXLen.iXLen.iXLen(iXLen, <4 x i8>, iXLen, iXLen)
2178 define <8 x i8> @test_sf_vc_v_iv_e8m1(<8 x i8> %vs2, iXLen %vl) {
2179 ; CHECK-LABEL: test_sf_vc_v_iv_e8m1:
2180 ; CHECK:       # %bb.0: # %entry
2181 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
2182 ; CHECK-NEXT:    sf.vc.v.iv 3, v8, v8, 10
2183 ; CHECK-NEXT:    ret
2184 entry:
2185   %0 = tail call <8 x i8> @llvm.riscv.sf.vc.v.iv.nxv8i8.iXLen.iXLen.iXLen(iXLen 3, <8 x i8> %vs2, iXLen 10, iXLen %vl)
2186   ret <8 x i8> %0
2189 declare <8 x i8> @llvm.riscv.sf.vc.v.iv.nxv8i8.iXLen.iXLen.iXLen(iXLen, <8 x i8>, iXLen, iXLen)
2191 define <16 x i8> @test_sf_vc_v_iv_e8m2(<16 x i8> %vs2, iXLen %vl) {
2192 ; CHECK-LABEL: test_sf_vc_v_iv_e8m2:
2193 ; CHECK:       # %bb.0: # %entry
2194 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
2195 ; CHECK-NEXT:    sf.vc.v.iv 3, v8, v8, 10
2196 ; CHECK-NEXT:    ret
2197 entry:
2198   %0 = tail call <16 x i8> @llvm.riscv.sf.vc.v.iv.nxv16i8.iXLen.iXLen.iXLen(iXLen 3, <16 x i8> %vs2, iXLen 10, iXLen %vl)
2199   ret <16 x i8> %0
2202 declare <16 x i8> @llvm.riscv.sf.vc.v.iv.nxv16i8.iXLen.iXLen.iXLen(iXLen, <16 x i8>, iXLen, iXLen)
2204 define <32 x i8> @test_sf_vc_v_iv_e8m4(<32 x i8> %vs2, iXLen %vl) {
2205 ; CHECK-LABEL: test_sf_vc_v_iv_e8m4:
2206 ; CHECK:       # %bb.0: # %entry
2207 ; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, ma
2208 ; CHECK-NEXT:    sf.vc.v.iv 3, v8, v8, 10
2209 ; CHECK-NEXT:    ret
2210 entry:
2211   %0 = tail call <32 x i8> @llvm.riscv.sf.vc.v.iv.nxv32i8.iXLen.iXLen.iXLen(iXLen 3, <32 x i8> %vs2, iXLen 10, iXLen %vl)
2212   ret <32 x i8> %0
2215 declare <32 x i8> @llvm.riscv.sf.vc.v.iv.nxv32i8.iXLen.iXLen.iXLen(iXLen, <32 x i8>, iXLen, iXLen)
2217 define <64 x i8> @test_sf_vc_v_iv_e8m8(<64 x i8> %vs2, iXLen %vl) {
2218 ; CHECK-LABEL: test_sf_vc_v_iv_e8m8:
2219 ; CHECK:       # %bb.0: # %entry
2220 ; CHECK-NEXT:    vsetvli zero, a0, e8, m4, ta, ma
2221 ; CHECK-NEXT:    sf.vc.v.iv 3, v8, v8, 10
2222 ; CHECK-NEXT:    ret
2223 entry:
2224   %0 = tail call <64 x i8> @llvm.riscv.sf.vc.v.iv.nxv64i8.iXLen.iXLen.iXLen(iXLen 3, <64 x i8> %vs2, iXLen 10, iXLen %vl)
2225   ret <64 x i8> %0
2228 declare <64 x i8> @llvm.riscv.sf.vc.v.iv.nxv64i8.iXLen.iXLen.iXLen(iXLen, <64 x i8>, iXLen, iXLen)
2230 define <1 x i16> @test_sf_vc_v_iv_e16mf4(<1 x i16> %vs2, iXLen %vl) {
2231 ; CHECK-LABEL: test_sf_vc_v_iv_e16mf4:
2232 ; CHECK:       # %bb.0: # %entry
2233 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
2234 ; CHECK-NEXT:    sf.vc.v.iv 3, v8, v8, 10
2235 ; CHECK-NEXT:    ret
2236 entry:
2237   %0 = tail call <1 x i16> @llvm.riscv.sf.vc.v.iv.nxv1i16.iXLen.iXLen.iXLen(iXLen 3, <1 x i16> %vs2, iXLen 10, iXLen %vl)
2238   ret <1 x i16> %0
2241 declare <1 x i16> @llvm.riscv.sf.vc.v.iv.nxv1i16.iXLen.iXLen.iXLen(iXLen, <1 x i16>, iXLen, iXLen)
2243 define <2 x i16> @test_sf_vc_v_iv_e16mf2(<2 x i16> %vs2, iXLen %vl) {
2244 ; CHECK-LABEL: test_sf_vc_v_iv_e16mf2:
2245 ; CHECK:       # %bb.0: # %entry
2246 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
2247 ; CHECK-NEXT:    sf.vc.v.iv 3, v8, v8, 10
2248 ; CHECK-NEXT:    ret
2249 entry:
2250   %0 = tail call <2 x i16> @llvm.riscv.sf.vc.v.iv.nxv2i16.iXLen.iXLen.iXLen(iXLen 3, <2 x i16> %vs2, iXLen 10, iXLen %vl)
2251   ret <2 x i16> %0
2254 declare <2 x i16> @llvm.riscv.sf.vc.v.iv.nxv2i16.iXLen.iXLen.iXLen(iXLen, <2 x i16>, iXLen, iXLen)
2256 define <4 x i16> @test_sf_vc_v_iv_e16m1(<4 x i16> %vs2, iXLen %vl) {
2257 ; CHECK-LABEL: test_sf_vc_v_iv_e16m1:
2258 ; CHECK:       # %bb.0: # %entry
2259 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
2260 ; CHECK-NEXT:    sf.vc.v.iv 3, v8, v8, 10
2261 ; CHECK-NEXT:    ret
2262 entry:
2263   %0 = tail call <4 x i16> @llvm.riscv.sf.vc.v.iv.nxv4i16.iXLen.iXLen.iXLen(iXLen 3, <4 x i16> %vs2, iXLen 10, iXLen %vl)
2264   ret <4 x i16> %0
2267 declare <4 x i16> @llvm.riscv.sf.vc.v.iv.nxv4i16.iXLen.iXLen.iXLen(iXLen, <4 x i16>, iXLen, iXLen)
2269 define <8 x i16> @test_sf_vc_v_iv_e16m2(<8 x i16> %vs2, iXLen %vl) {
2270 ; CHECK-LABEL: test_sf_vc_v_iv_e16m2:
2271 ; CHECK:       # %bb.0: # %entry
2272 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
2273 ; CHECK-NEXT:    sf.vc.v.iv 3, v8, v8, 10
2274 ; CHECK-NEXT:    ret
2275 entry:
2276   %0 = tail call <8 x i16> @llvm.riscv.sf.vc.v.iv.nxv8i16.iXLen.iXLen.iXLen(iXLen 3, <8 x i16> %vs2, iXLen 10, iXLen %vl)
2277   ret <8 x i16> %0
2280 declare <8 x i16> @llvm.riscv.sf.vc.v.iv.nxv8i16.iXLen.iXLen.iXLen(iXLen, <8 x i16>, iXLen, iXLen)
2282 define <16 x i16> @test_sf_vc_v_iv_e16m4(<16 x i16> %vs2, iXLen %vl) {
2283 ; CHECK-LABEL: test_sf_vc_v_iv_e16m4:
2284 ; CHECK:       # %bb.0: # %entry
2285 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
2286 ; CHECK-NEXT:    sf.vc.v.iv 3, v8, v8, 10
2287 ; CHECK-NEXT:    ret
2288 entry:
2289   %0 = tail call <16 x i16> @llvm.riscv.sf.vc.v.iv.nxv16i16.iXLen.iXLen.iXLen(iXLen 3, <16 x i16> %vs2, iXLen 10, iXLen %vl)
2290   ret <16 x i16> %0
2293 declare <16 x i16> @llvm.riscv.sf.vc.v.iv.nxv16i16.iXLen.iXLen.iXLen(iXLen, <16 x i16>, iXLen, iXLen)
2295 define <32 x i16> @test_sf_vc_v_iv_e16m8(<32 x i16> %vs2, iXLen %vl) {
2296 ; CHECK-LABEL: test_sf_vc_v_iv_e16m8:
2297 ; CHECK:       # %bb.0: # %entry
2298 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
2299 ; CHECK-NEXT:    sf.vc.v.iv 3, v8, v8, 10
2300 ; CHECK-NEXT:    ret
2301 entry:
2302   %0 = tail call <32 x i16> @llvm.riscv.sf.vc.v.iv.nxv32i16.iXLen.iXLen.iXLen(iXLen 3, <32 x i16> %vs2, iXLen 10, iXLen %vl)
2303   ret <32 x i16> %0
2306 declare <32 x i16> @llvm.riscv.sf.vc.v.iv.nxv32i16.iXLen.iXLen.iXLen(iXLen, <32 x i16>, iXLen, iXLen)
2308 define <1 x i32> @test_sf_vc_v_iv_e32mf2(<1 x i32> %vs2, iXLen %vl) {
2309 ; CHECK-LABEL: test_sf_vc_v_iv_e32mf2:
2310 ; CHECK:       # %bb.0: # %entry
2311 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
2312 ; CHECK-NEXT:    sf.vc.v.iv 3, v8, v8, 10
2313 ; CHECK-NEXT:    ret
2314 entry:
2315   %0 = tail call <1 x i32> @llvm.riscv.sf.vc.v.iv.nxv1i32.iXLen.iXLen.iXLen(iXLen 3, <1 x i32> %vs2, iXLen 10, iXLen %vl)
2316   ret <1 x i32> %0
2319 declare <1 x i32> @llvm.riscv.sf.vc.v.iv.nxv1i32.iXLen.iXLen.iXLen(iXLen, <1 x i32>, iXLen, iXLen)
2321 define <2 x i32> @test_sf_vc_v_iv_e32m1(<2 x i32> %vs2, iXLen %vl) {
2322 ; CHECK-LABEL: test_sf_vc_v_iv_e32m1:
2323 ; CHECK:       # %bb.0: # %entry
2324 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
2325 ; CHECK-NEXT:    sf.vc.v.iv 3, v8, v8, 10
2326 ; CHECK-NEXT:    ret
2327 entry:
2328   %0 = tail call <2 x i32> @llvm.riscv.sf.vc.v.iv.nxv2i32.iXLen.iXLen.iXLen(iXLen 3, <2 x i32> %vs2, iXLen 10, iXLen %vl)
2329   ret <2 x i32> %0
2332 declare <2 x i32> @llvm.riscv.sf.vc.v.iv.nxv2i32.iXLen.iXLen.iXLen(iXLen, <2 x i32>, iXLen, iXLen)
2334 define <4 x i32> @test_sf_vc_v_iv_e32m2(<4 x i32> %vs2, iXLen %vl) {
2335 ; CHECK-LABEL: test_sf_vc_v_iv_e32m2:
2336 ; CHECK:       # %bb.0: # %entry
2337 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
2338 ; CHECK-NEXT:    sf.vc.v.iv 3, v8, v8, 10
2339 ; CHECK-NEXT:    ret
2340 entry:
2341   %0 = tail call <4 x i32> @llvm.riscv.sf.vc.v.iv.nxv4i32.iXLen.iXLen.iXLen(iXLen 3, <4 x i32> %vs2, iXLen 10, iXLen %vl)
2342   ret <4 x i32> %0
2345 declare <4 x i32> @llvm.riscv.sf.vc.v.iv.nxv4i32.iXLen.iXLen.iXLen(iXLen, <4 x i32>, iXLen, iXLen)
2347 define <8 x i32> @test_sf_vc_v_iv_e32m4(<8 x i32> %vs2, iXLen %vl) {
2348 ; CHECK-LABEL: test_sf_vc_v_iv_e32m4:
2349 ; CHECK:       # %bb.0: # %entry
2350 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
2351 ; CHECK-NEXT:    sf.vc.v.iv 3, v8, v8, 10
2352 ; CHECK-NEXT:    ret
2353 entry:
2354   %0 = tail call <8 x i32> @llvm.riscv.sf.vc.v.iv.nxv8i32.iXLen.iXLen.iXLen(iXLen 3, <8 x i32> %vs2, iXLen 10, iXLen %vl)
2355   ret <8 x i32> %0
2358 declare <8 x i32> @llvm.riscv.sf.vc.v.iv.nxv8i32.iXLen.iXLen.iXLen(iXLen, <8 x i32>, iXLen, iXLen)
2360 define <16 x i32> @test_sf_vc_v_iv_e32m8(<16 x i32> %vs2, iXLen %vl) {
2361 ; CHECK-LABEL: test_sf_vc_v_iv_e32m8:
2362 ; CHECK:       # %bb.0: # %entry
2363 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
2364 ; CHECK-NEXT:    sf.vc.v.iv 3, v8, v8, 10
2365 ; CHECK-NEXT:    ret
2366 entry:
2367   %0 = tail call <16 x i32> @llvm.riscv.sf.vc.v.iv.nxv16i32.iXLen.iXLen.iXLen(iXLen 3, <16 x i32> %vs2, iXLen 10, iXLen %vl)
2368   ret <16 x i32> %0
2371 declare <16 x i32> @llvm.riscv.sf.vc.v.iv.nxv16i32.iXLen.iXLen.iXLen(iXLen, <16 x i32>, iXLen, iXLen)
2373 define <1 x i64> @test_sf_vc_v_iv_e64m1(<1 x i64> %vs2, iXLen %vl) {
2374 ; CHECK-LABEL: test_sf_vc_v_iv_e64m1:
2375 ; CHECK:       # %bb.0: # %entry
2376 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
2377 ; CHECK-NEXT:    sf.vc.v.iv 3, v8, v8, 10
2378 ; CHECK-NEXT:    ret
2379 entry:
2380   %0 = tail call <1 x i64> @llvm.riscv.sf.vc.v.iv.nxv1i64.iXLen.iXLen.iXLen(iXLen 3, <1 x i64> %vs2, iXLen 10, iXLen %vl)
2381   ret <1 x i64> %0
2384 declare <1 x i64> @llvm.riscv.sf.vc.v.iv.nxv1i64.iXLen.iXLen.iXLen(iXLen, <1 x i64>, iXLen, iXLen)
2386 define <2 x i64> @test_sf_vc_v_iv_e64m2(<2 x i64> %vs2, iXLen %vl) {
2387 ; CHECK-LABEL: test_sf_vc_v_iv_e64m2:
2388 ; CHECK:       # %bb.0: # %entry
2389 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
2390 ; CHECK-NEXT:    sf.vc.v.iv 3, v8, v8, 10
2391 ; CHECK-NEXT:    ret
2392 entry:
2393   %0 = tail call <2 x i64> @llvm.riscv.sf.vc.v.iv.nxv2i64.iXLen.iXLen.iXLen(iXLen 3, <2 x i64> %vs2, iXLen 10, iXLen %vl)
2394   ret <2 x i64> %0
2397 declare <2 x i64> @llvm.riscv.sf.vc.v.iv.nxv2i64.iXLen.iXLen.iXLen(iXLen, <2 x i64>, iXLen, iXLen)
2399 define <4 x i64> @test_sf_vc_v_iv_e64m4(<4 x i64> %vs2, iXLen %vl) {
2400 ; CHECK-LABEL: test_sf_vc_v_iv_e64m4:
2401 ; CHECK:       # %bb.0: # %entry
2402 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
2403 ; CHECK-NEXT:    sf.vc.v.iv 3, v8, v8, 10
2404 ; CHECK-NEXT:    ret
2405 entry:
2406   %0 = tail call <4 x i64> @llvm.riscv.sf.vc.v.iv.nxv4i64.iXLen.iXLen.iXLen(iXLen 3, <4 x i64> %vs2, iXLen 10, iXLen %vl)
2407   ret <4 x i64> %0
2410 declare <4 x i64> @llvm.riscv.sf.vc.v.iv.nxv4i64.iXLen.iXLen.iXLen(iXLen, <4 x i64>, iXLen, iXLen)
2412 define <8 x i64> @test_sf_vc_v_iv_e64m8(<8 x i64> %vs2, iXLen %vl) {
2413 ; CHECK-LABEL: test_sf_vc_v_iv_e64m8:
2414 ; CHECK:       # %bb.0: # %entry
2415 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
2416 ; CHECK-NEXT:    sf.vc.v.iv 3, v8, v8, 10
2417 ; CHECK-NEXT:    ret
2418 entry:
2419   %0 = tail call <8 x i64> @llvm.riscv.sf.vc.v.iv.nxv8i64.iXLen.iXLen.iXLen(iXLen 3, <8 x i64> %vs2, iXLen 10, iXLen %vl)
2420   ret <8 x i64> %0
2423 declare <8 x i64> @llvm.riscv.sf.vc.v.iv.nxv8i64.iXLen.iXLen.iXLen(iXLen, <8 x i64>, iXLen, iXLen)
2425 define void @test_sf_vc_fvv_se_e16mf4(<1 x half> %vs2, <1 x i16> %vs1, iXLen %vl) {
2426 ; CHECK-LABEL: test_sf_vc_fvv_se_e16mf4:
2427 ; CHECK:       # %bb.0: # %entry
2428 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
2429 ; CHECK-NEXT:    sf.vc.vv 3, 31, v8, v9
2430 ; CHECK-NEXT:    ret
2431 entry:
2432   tail call void @llvm.riscv.sf.vc.vv.se.iXLen.nxv1f16.nxv1i16.iXLen(iXLen 3, iXLen 31, <1 x half> %vs2, <1 x i16> %vs1, iXLen %vl)
2433   ret void
2436 declare void @llvm.riscv.sf.vc.vv.se.iXLen.nxv1f16.nxv1i16.iXLen(iXLen, iXLen, <1 x half>, <1 x i16>, iXLen)
2438 define <1 x half> @test_sf_vc_v_fvv_se_e16mf4(<1 x half> %vs2, <1 x i16> %vs1, iXLen %vl) {
2439 ; CHECK-LABEL: test_sf_vc_v_fvv_se_e16mf4:
2440 ; CHECK:       # %bb.0: # %entry
2441 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
2442 ; CHECK-NEXT:    sf.vc.v.vv 3, v8, v8, v9
2443 ; CHECK-NEXT:    ret
2444 entry:
2445   %0 = tail call <1 x half> @llvm.riscv.sf.vc.v.vv.se.nxv1f16.iXLen.nxv1f16.iXLen(iXLen 3, <1 x half> %vs2, <1 x i16> %vs1, iXLen %vl)
2446   ret <1 x half> %0
2449 declare <1 x half> @llvm.riscv.sf.vc.v.vv.se.nxv1f16.iXLen.nxv1f16.iXLen(iXLen, <1 x half>, <1 x i16>, iXLen)
2451 define void @test_sf_vc_fvv_se_e16mf2(<2 x half> %vs2, <2 x i16> %vs1, iXLen %vl) {
2452 ; CHECK-LABEL: test_sf_vc_fvv_se_e16mf2:
2453 ; CHECK:       # %bb.0: # %entry
2454 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
2455 ; CHECK-NEXT:    sf.vc.vv 3, 31, v8, v9
2456 ; CHECK-NEXT:    ret
2457 entry:
2458   tail call void @llvm.riscv.sf.vc.vv.se.iXLen.nxv2f16.nxv2i16.iXLen(iXLen 3, iXLen 31, <2 x half> %vs2, <2 x i16> %vs1, iXLen %vl)
2459   ret void
2462 declare void @llvm.riscv.sf.vc.vv.se.iXLen.nxv2f16.nxv2i16.iXLen(iXLen, iXLen, <2 x half>, <2 x i16>, iXLen)
2464 define <2 x half> @test_sf_vc_v_fvv_se_e16mf2(<2 x half> %vs2, <2 x i16> %vs1, iXLen %vl) {
2465 ; CHECK-LABEL: test_sf_vc_v_fvv_se_e16mf2:
2466 ; CHECK:       # %bb.0: # %entry
2467 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
2468 ; CHECK-NEXT:    sf.vc.v.vv 3, v8, v8, v9
2469 ; CHECK-NEXT:    ret
2470 entry:
2471   %0 = tail call <2 x half> @llvm.riscv.sf.vc.v.vv.se.nxv2f16.iXLen.nxv2f16.iXLen(iXLen 3, <2 x half> %vs2, <2 x i16> %vs1, iXLen %vl)
2472   ret <2 x half> %0
2475 declare <2 x half> @llvm.riscv.sf.vc.v.vv.se.nxv2f16.iXLen.nxv2f16.iXLen(iXLen, <2 x half>, <2 x i16>, iXLen)
2477 define void @test_sf_vc_fvv_se_e16m1(<4 x half> %vs2, <4 x i16> %vs1, iXLen %vl) {
2478 ; CHECK-LABEL: test_sf_vc_fvv_se_e16m1:
2479 ; CHECK:       # %bb.0: # %entry
2480 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
2481 ; CHECK-NEXT:    sf.vc.vv 3, 31, v8, v9
2482 ; CHECK-NEXT:    ret
2483 entry:
2484   tail call void @llvm.riscv.sf.vc.vv.se.iXLen.nxv4f16.nxv4i16.iXLen(iXLen 3, iXLen 31, <4 x half> %vs2, <4 x i16> %vs1, iXLen %vl)
2485   ret void
2488 declare void @llvm.riscv.sf.vc.vv.se.iXLen.nxv4f16.nxv4i16.iXLen(iXLen, iXLen, <4 x half>, <4 x i16>, iXLen)
2490 define <4 x half> @test_sf_vc_v_fvv_se_e16m1(<4 x half> %vs2, <4 x i16> %vs1, iXLen %vl) {
2491 ; CHECK-LABEL: test_sf_vc_v_fvv_se_e16m1:
2492 ; CHECK:       # %bb.0: # %entry
2493 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
2494 ; CHECK-NEXT:    sf.vc.v.vv 3, v8, v8, v9
2495 ; CHECK-NEXT:    ret
2496 entry:
2497   %0 = tail call <4 x half> @llvm.riscv.sf.vc.v.vv.se.nxv4f16.iXLen.nxv4f16.iXLen(iXLen 3, <4 x half> %vs2, <4 x i16> %vs1, iXLen %vl)
2498   ret <4 x half> %0
2501 declare <4 x half> @llvm.riscv.sf.vc.v.vv.se.nxv4f16.iXLen.nxv4f16.iXLen(iXLen, <4 x half>, <4 x i16>, iXLen)
2503 define void @test_sf_vc_fvv_se_e16m2(<8 x half> %vs2, <8 x i16> %vs1, iXLen %vl) {
2504 ; CHECK-LABEL: test_sf_vc_fvv_se_e16m2:
2505 ; CHECK:       # %bb.0: # %entry
2506 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
2507 ; CHECK-NEXT:    sf.vc.vv 3, 31, v8, v9
2508 ; CHECK-NEXT:    ret
2509 entry:
2510   tail call void @llvm.riscv.sf.vc.vv.se.iXLen.nxv8f16.nxv8i16.iXLen(iXLen 3, iXLen 31, <8 x half> %vs2, <8 x i16> %vs1, iXLen %vl)
2511   ret void
2514 declare void @llvm.riscv.sf.vc.vv.se.iXLen.nxv8f16.nxv8i16.iXLen(iXLen, iXLen, <8 x half>, <8 x i16>, iXLen)
2516 define <8 x half> @test_sf_vc_v_fvv_se_e16m2(<8 x half> %vs2, <8 x i16> %vs1, iXLen %vl) {
2517 ; CHECK-LABEL: test_sf_vc_v_fvv_se_e16m2:
2518 ; CHECK:       # %bb.0: # %entry
2519 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
2520 ; CHECK-NEXT:    sf.vc.v.vv 3, v8, v8, v9
2521 ; CHECK-NEXT:    ret
2522 entry:
2523   %0 = tail call <8 x half> @llvm.riscv.sf.vc.v.vv.se.nxv8f16.iXLen.nxv8f16.iXLen(iXLen 3, <8 x half> %vs2, <8 x i16> %vs1, iXLen %vl)
2524   ret <8 x half> %0
2527 declare <8 x half> @llvm.riscv.sf.vc.v.vv.se.nxv8f16.iXLen.nxv8f16.iXLen(iXLen, <8 x half>, <8 x i16>, iXLen)
2529 define void @test_sf_vc_fvv_se_e16m4(<16 x half> %vs2, <16 x i16> %vs1, iXLen %vl) {
2530 ; CHECK-LABEL: test_sf_vc_fvv_se_e16m4:
2531 ; CHECK:       # %bb.0: # %entry
2532 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
2533 ; CHECK-NEXT:    sf.vc.vv 3, 31, v8, v10
2534 ; CHECK-NEXT:    ret
2535 entry:
2536   tail call void @llvm.riscv.sf.vc.vv.se.iXLen.nxv16f16.nxv16i16.iXLen(iXLen 3, iXLen 31, <16 x half> %vs2, <16 x i16> %vs1, iXLen %vl)
2537   ret void
2540 declare void @llvm.riscv.sf.vc.vv.se.iXLen.nxv16f16.nxv16i16.iXLen(iXLen, iXLen, <16 x half>, <16 x i16>, iXLen)
2542 define <16 x half> @test_sf_vc_v_fvv_se_e16m4(<16 x half> %vs2, <16 x i16> %vs1, iXLen %vl) {
2543 ; CHECK-LABEL: test_sf_vc_v_fvv_se_e16m4:
2544 ; CHECK:       # %bb.0: # %entry
2545 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
2546 ; CHECK-NEXT:    sf.vc.v.vv 3, v8, v8, v10
2547 ; CHECK-NEXT:    ret
2548 entry:
2549   %0 = tail call <16 x half> @llvm.riscv.sf.vc.v.vv.se.nxv16f16.iXLen.nxv16f16.iXLen(iXLen 3, <16 x half> %vs2, <16 x i16> %vs1, iXLen %vl)
2550   ret <16 x half> %0
2553 declare <16 x half> @llvm.riscv.sf.vc.v.vv.se.nxv16f16.iXLen.nxv16f16.iXLen(iXLen, <16 x half>, <16 x i16>, iXLen)
2555 define void @test_sf_vc_fvv_se_e16m8(<32 x half> %vs2, <32 x i16> %vs1, iXLen %vl) {
2556 ; CHECK-LABEL: test_sf_vc_fvv_se_e16m8:
2557 ; CHECK:       # %bb.0: # %entry
2558 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
2559 ; CHECK-NEXT:    sf.vc.vv 3, 31, v8, v12
2560 ; CHECK-NEXT:    ret
2561 entry:
2562   tail call void @llvm.riscv.sf.vc.vv.se.iXLen.nxv32f16.nxv32i16.iXLen(iXLen 3, iXLen 31, <32 x half> %vs2, <32 x i16> %vs1, iXLen %vl)
2563   ret void
2566 declare void @llvm.riscv.sf.vc.vv.se.iXLen.nxv32f16.nxv32i16.iXLen(iXLen, iXLen, <32 x half>, <32 x i16>, iXLen)
2568 define <32 x half> @test_sf_vc_v_fvv_se_e16m8(<32 x half> %vs2, <32 x i16> %vs1, iXLen %vl) {
2569 ; CHECK-LABEL: test_sf_vc_v_fvv_se_e16m8:
2570 ; CHECK:       # %bb.0: # %entry
2571 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
2572 ; CHECK-NEXT:    sf.vc.v.vv 3, v8, v8, v12
2573 ; CHECK-NEXT:    ret
2574 entry:
2575   %0 = tail call <32 x half> @llvm.riscv.sf.vc.v.vv.se.nxv32f16.iXLen.nxv32f16.iXLen(iXLen 3, <32 x half> %vs2, <32 x i16> %vs1, iXLen %vl)
2576   ret <32 x half> %0
2579 declare <32 x half> @llvm.riscv.sf.vc.v.vv.se.nxv32f16.iXLen.nxv32f16.iXLen(iXLen, <32 x half>, <32 x i16>, iXLen)
2581 define void @test_sf_vc_fvv_se_e32mf2(<1 x float> %vs2, <1 x i32> %vs1, iXLen %vl) {
2582 ; CHECK-LABEL: test_sf_vc_fvv_se_e32mf2:
2583 ; CHECK:       # %bb.0: # %entry
2584 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
2585 ; CHECK-NEXT:    sf.vc.vv 3, 31, v8, v9
2586 ; CHECK-NEXT:    ret
2587 entry:
2588   tail call void @llvm.riscv.sf.vc.vv.se.iXLen.nxv1f32.nxv1i32.iXLen(iXLen 3, iXLen 31, <1 x float> %vs2, <1 x i32> %vs1, iXLen %vl)
2589   ret void
2592 declare void @llvm.riscv.sf.vc.vv.se.iXLen.nxv1f32.nxv1i32.iXLen(iXLen, iXLen, <1 x float>, <1 x i32>, iXLen)
2594 define <1 x float> @test_sf_vc_v_fvv_se_e32mf2(<1 x float> %vs2, <1 x i32> %vs1, iXLen %vl) {
2595 ; CHECK-LABEL: test_sf_vc_v_fvv_se_e32mf2:
2596 ; CHECK:       # %bb.0: # %entry
2597 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
2598 ; CHECK-NEXT:    sf.vc.v.vv 3, v8, v8, v9
2599 ; CHECK-NEXT:    ret
2600 entry:
2601   %0 = tail call <1 x float> @llvm.riscv.sf.vc.v.vv.se.nxv1f32.iXLen.nxv1f32.iXLen(iXLen 3, <1 x float> %vs2, <1 x i32> %vs1, iXLen %vl)
2602   ret <1 x float> %0
2605 declare <1 x float> @llvm.riscv.sf.vc.v.vv.se.nxv1f32.iXLen.nxv1f32.iXLen(iXLen, <1 x float>, <1 x i32>, iXLen)
2607 define void @test_sf_vc_fvv_se_e32m1(<2 x float> %vs2, <2 x i32> %vs1, iXLen %vl) {
2608 ; CHECK-LABEL: test_sf_vc_fvv_se_e32m1:
2609 ; CHECK:       # %bb.0: # %entry
2610 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
2611 ; CHECK-NEXT:    sf.vc.vv 3, 31, v8, v9
2612 ; CHECK-NEXT:    ret
2613 entry:
2614   tail call void @llvm.riscv.sf.vc.vv.se.iXLen.nxv2f32.nxv2i32.iXLen(iXLen 3, iXLen 31, <2 x float> %vs2, <2 x i32> %vs1, iXLen %vl)
2615   ret void
2618 declare void @llvm.riscv.sf.vc.vv.se.iXLen.nxv2f32.nxv2i32.iXLen(iXLen, iXLen, <2 x float>, <2 x i32>, iXLen)
2620 define <2 x float> @test_sf_vc_v_fvv_se_e32m1(<2 x float> %vs2, <2 x i32> %vs1, iXLen %vl) {
2621 ; CHECK-LABEL: test_sf_vc_v_fvv_se_e32m1:
2622 ; CHECK:       # %bb.0: # %entry
2623 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
2624 ; CHECK-NEXT:    sf.vc.v.vv 3, v8, v8, v9
2625 ; CHECK-NEXT:    ret
2626 entry:
2627   %0 = tail call <2 x float> @llvm.riscv.sf.vc.v.vv.se.nxv2f32.iXLen.nxv2f32.iXLen(iXLen 3, <2 x float> %vs2, <2 x i32> %vs1, iXLen %vl)
2628   ret <2 x float> %0
2631 declare <2 x float> @llvm.riscv.sf.vc.v.vv.se.nxv2f32.iXLen.nxv2f32.iXLen(iXLen, <2 x float>, <2 x i32>, iXLen)
2633 define void @test_sf_vc_fvv_se_e32m2(<4 x float> %vs2, <4 x i32> %vs1, iXLen %vl) {
2634 ; CHECK-LABEL: test_sf_vc_fvv_se_e32m2:
2635 ; CHECK:       # %bb.0: # %entry
2636 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
2637 ; CHECK-NEXT:    sf.vc.vv 3, 31, v8, v9
2638 ; CHECK-NEXT:    ret
2639 entry:
2640   tail call void @llvm.riscv.sf.vc.vv.se.iXLen.nxv4f32.nxv4i32.iXLen(iXLen 3, iXLen 31, <4 x float> %vs2, <4 x i32> %vs1, iXLen %vl)
2641   ret void
2644 declare void @llvm.riscv.sf.vc.vv.se.iXLen.nxv4f32.nxv4i32.iXLen(iXLen, iXLen, <4 x float>, <4 x i32>, iXLen)
2646 define <4 x float> @test_sf_vc_v_fvv_se_e32m2(<4 x float> %vs2, <4 x i32> %vs1, iXLen %vl) {
2647 ; CHECK-LABEL: test_sf_vc_v_fvv_se_e32m2:
2648 ; CHECK:       # %bb.0: # %entry
2649 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
2650 ; CHECK-NEXT:    sf.vc.v.vv 3, v8, v8, v9
2651 ; CHECK-NEXT:    ret
2652 entry:
2653   %0 = tail call <4 x float> @llvm.riscv.sf.vc.v.vv.se.nxv4f32.iXLen.nxv4f32.iXLen(iXLen 3, <4 x float> %vs2, <4 x i32> %vs1, iXLen %vl)
2654   ret <4 x float> %0
2657 declare <4 x float> @llvm.riscv.sf.vc.v.vv.se.nxv4f32.iXLen.nxv4f32.iXLen(iXLen, <4 x float>, <4 x i32>, iXLen)
2659 define void @test_sf_vc_fvv_se_e32m4(<8 x float> %vs2, <8 x i32> %vs1, iXLen %vl) {
2660 ; CHECK-LABEL: test_sf_vc_fvv_se_e32m4:
2661 ; CHECK:       # %bb.0: # %entry
2662 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
2663 ; CHECK-NEXT:    sf.vc.vv 3, 31, v8, v10
2664 ; CHECK-NEXT:    ret
2665 entry:
2666   tail call void @llvm.riscv.sf.vc.vv.se.iXLen.nxv8f32.nxv8i32.iXLen(iXLen 3, iXLen 31, <8 x float> %vs2, <8 x i32> %vs1, iXLen %vl)
2667   ret void
2670 declare void @llvm.riscv.sf.vc.vv.se.iXLen.nxv8f32.nxv8i32.iXLen(iXLen, iXLen, <8 x float>, <8 x i32>, iXLen)
2672 define <8 x float> @test_sf_vc_v_fvv_se_e32m4(<8 x float> %vs2, <8 x i32> %vs1, iXLen %vl) {
2673 ; CHECK-LABEL: test_sf_vc_v_fvv_se_e32m4:
2674 ; CHECK:       # %bb.0: # %entry
2675 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
2676 ; CHECK-NEXT:    sf.vc.v.vv 3, v8, v8, v10
2677 ; CHECK-NEXT:    ret
2678 entry:
2679   %0 = tail call <8 x float> @llvm.riscv.sf.vc.v.vv.se.nxv8f32.iXLen.nxv8f32.iXLen(iXLen 3, <8 x float> %vs2, <8 x i32> %vs1, iXLen %vl)
2680   ret <8 x float> %0
2683 declare <8 x float> @llvm.riscv.sf.vc.v.vv.se.nxv8f32.iXLen.nxv8f32.iXLen(iXLen, <8 x float>, <8 x i32>, iXLen)
2685 define void @test_sf_vc_fvv_se_e32m8(<16 x float> %vs2, <16 x i32> %vs1, iXLen %vl) {
2686 ; CHECK-LABEL: test_sf_vc_fvv_se_e32m8:
2687 ; CHECK:       # %bb.0: # %entry
2688 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
2689 ; CHECK-NEXT:    sf.vc.vv 3, 31, v8, v12
2690 ; CHECK-NEXT:    ret
2691 entry:
2692   tail call void @llvm.riscv.sf.vc.vv.se.iXLen.nxv16f32.nxv16i32.iXLen(iXLen 3, iXLen 31, <16 x float> %vs2, <16 x i32> %vs1, iXLen %vl)
2693   ret void
2696 declare void @llvm.riscv.sf.vc.vv.se.iXLen.nxv16f32.nxv16i32.iXLen(iXLen, iXLen, <16 x float>, <16 x i32>, iXLen)
2698 define <16 x float> @test_sf_vc_v_fvv_se_e32m8(<16 x float> %vs2, <16 x i32> %vs1, iXLen %vl) {
2699 ; CHECK-LABEL: test_sf_vc_v_fvv_se_e32m8:
2700 ; CHECK:       # %bb.0: # %entry
2701 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
2702 ; CHECK-NEXT:    sf.vc.v.vv 3, v8, v8, v12
2703 ; CHECK-NEXT:    ret
2704 entry:
2705   %0 = tail call <16 x float> @llvm.riscv.sf.vc.v.vv.se.nxv16f32.iXLen.nxv16f32.iXLen(iXLen 3, <16 x float> %vs2, <16 x i32> %vs1, iXLen %vl)
2706   ret <16 x float> %0
2709 declare <16 x float> @llvm.riscv.sf.vc.v.vv.se.nxv16f32.iXLen.nxv16f32.iXLen(iXLen, <16 x float>, <16 x i32>, iXLen)
2711 define void @test_sf_vc_fvv_se_e64m1(<1 x double> %vs2, <1 x i64> %vs1, iXLen %vl) {
2712 ; CHECK-LABEL: test_sf_vc_fvv_se_e64m1:
2713 ; CHECK:       # %bb.0: # %entry
2714 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
2715 ; CHECK-NEXT:    sf.vc.vv 3, 31, v8, v9
2716 ; CHECK-NEXT:    ret
2717 entry:
2718   tail call void @llvm.riscv.sf.vc.vv.se.iXLen.nxv1f64.nxv1i64.iXLen(iXLen 3, iXLen 31, <1 x double> %vs2, <1 x i64> %vs1, iXLen %vl)
2719   ret void
2722 declare void @llvm.riscv.sf.vc.vv.se.iXLen.nxv1f64.nxv1i64.iXLen(iXLen, iXLen, <1 x double>, <1 x i64>, iXLen)
2724 define <1 x double> @test_sf_vc_v_fvv_se_e64m1(<1 x double> %vs2, <1 x i64> %vs1, iXLen %vl) {
2725 ; CHECK-LABEL: test_sf_vc_v_fvv_se_e64m1:
2726 ; CHECK:       # %bb.0: # %entry
2727 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
2728 ; CHECK-NEXT:    sf.vc.v.vv 3, v8, v8, v9
2729 ; CHECK-NEXT:    ret
2730 entry:
2731   %0 = tail call <1 x double> @llvm.riscv.sf.vc.v.vv.se.nxv1f64.iXLen.nxv1f64.iXLen(iXLen 3, <1 x double> %vs2, <1 x i64> %vs1, iXLen %vl)
2732   ret <1 x double> %0
2735 declare <1 x double> @llvm.riscv.sf.vc.v.vv.se.nxv1f64.iXLen.nxv1f64.iXLen(iXLen, <1 x double>, <1 x i64>, iXLen)
2737 define void @test_sf_vc_fvv_se_e64m2(<2 x double> %vs2, <2 x i64> %vs1, iXLen %vl) {
2738 ; CHECK-LABEL: test_sf_vc_fvv_se_e64m2:
2739 ; CHECK:       # %bb.0: # %entry
2740 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
2741 ; CHECK-NEXT:    sf.vc.vv 3, 31, v8, v9
2742 ; CHECK-NEXT:    ret
2743 entry:
2744   tail call void @llvm.riscv.sf.vc.vv.se.iXLen.nxv2f64.nxv2i64.iXLen(iXLen 3, iXLen 31, <2 x double> %vs2, <2 x i64> %vs1, iXLen %vl)
2745   ret void
2748 declare void @llvm.riscv.sf.vc.vv.se.iXLen.nxv2f64.nxv2i64.iXLen(iXLen, iXLen, <2 x double>, <2 x i64>, iXLen)
2750 define <2 x double> @test_sf_vc_v_fvv_se_e64m2(<2 x double> %vs2, <2 x i64> %vs1, iXLen %vl) {
2751 ; CHECK-LABEL: test_sf_vc_v_fvv_se_e64m2:
2752 ; CHECK:       # %bb.0: # %entry
2753 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
2754 ; CHECK-NEXT:    sf.vc.v.vv 3, v8, v8, v9
2755 ; CHECK-NEXT:    ret
2756 entry:
2757   %0 = tail call <2 x double> @llvm.riscv.sf.vc.v.vv.se.nxv2f64.iXLen.nxv2f64.iXLen(iXLen 3, <2 x double> %vs2, <2 x i64> %vs1, iXLen %vl)
2758   ret <2 x double> %0
2761 declare <2 x double> @llvm.riscv.sf.vc.v.vv.se.nxv2f64.iXLen.nxv2f64.iXLen(iXLen, <2 x double>, <2 x i64>, iXLen)
2763 define void @test_sf_vc_fvv_se_e64m4(<4 x double> %vs2, <4 x i64> %vs1, iXLen %vl) {
2764 ; CHECK-LABEL: test_sf_vc_fvv_se_e64m4:
2765 ; CHECK:       # %bb.0: # %entry
2766 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
2767 ; CHECK-NEXT:    sf.vc.vv 3, 31, v8, v10
2768 ; CHECK-NEXT:    ret
2769 entry:
2770   tail call void @llvm.riscv.sf.vc.vv.se.iXLen.nxv4f64.nxv4i64.iXLen(iXLen 3, iXLen 31, <4 x double> %vs2, <4 x i64> %vs1, iXLen %vl)
2771   ret void
2774 declare void @llvm.riscv.sf.vc.vv.se.iXLen.nxv4f64.nxv4i64.iXLen(iXLen, iXLen, <4 x double>, <4 x i64>, iXLen)
2776 define <4 x double> @test_sf_vc_v_fvv_se_e64m4(<4 x double> %vs2, <4 x i64> %vs1, iXLen %vl) {
2777 ; CHECK-LABEL: test_sf_vc_v_fvv_se_e64m4:
2778 ; CHECK:       # %bb.0: # %entry
2779 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
2780 ; CHECK-NEXT:    sf.vc.v.vv 3, v8, v8, v10
2781 ; CHECK-NEXT:    ret
2782 entry:
2783   %0 = tail call <4 x double> @llvm.riscv.sf.vc.v.vv.se.nxv4f64.iXLen.nxv4f64.iXLen(iXLen 3, <4 x double> %vs2, <4 x i64> %vs1, iXLen %vl)
2784   ret <4 x double> %0
2787 declare <4 x double> @llvm.riscv.sf.vc.v.vv.se.nxv4f64.iXLen.nxv4f64.iXLen(iXLen, <4 x double>, <4 x i64>, iXLen)
2789 define void @test_sf_vc_fvv_se_e64m8(<8 x double> %vs2, <8 x i64> %vs1, iXLen %vl) {
2790 ; CHECK-LABEL: test_sf_vc_fvv_se_e64m8:
2791 ; CHECK:       # %bb.0: # %entry
2792 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
2793 ; CHECK-NEXT:    sf.vc.vv 3, 31, v8, v12
2794 ; CHECK-NEXT:    ret
2795 entry:
2796   tail call void @llvm.riscv.sf.vc.vv.se.iXLen.nxv8f64.nxv8i64.iXLen(iXLen 3, iXLen 31, <8 x double> %vs2, <8 x i64> %vs1, iXLen %vl)
2797   ret void
2800 declare void @llvm.riscv.sf.vc.vv.se.iXLen.nxv8f64.nxv8i64.iXLen(iXLen, iXLen, <8 x double>, <8 x i64>, iXLen)
2802 define <8 x double> @test_sf_vc_v_fvv_se_e64m8(<8 x double> %vs2, <8 x i64> %vs1, iXLen %vl) {
2803 ; CHECK-LABEL: test_sf_vc_v_fvv_se_e64m8:
2804 ; CHECK:       # %bb.0: # %entry
2805 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
2806 ; CHECK-NEXT:    sf.vc.v.vv 3, v8, v8, v12
2807 ; CHECK-NEXT:    ret
2808 entry:
2809   %0 = tail call <8 x double> @llvm.riscv.sf.vc.v.vv.se.nxv8f64.iXLen.nxv8f64.iXLen(iXLen 3, <8 x double> %vs2, <8 x i64> %vs1, iXLen %vl)
2810   ret <8 x double> %0
2813 declare <8 x double> @llvm.riscv.sf.vc.v.vv.se.nxv8f64.iXLen.nxv8f64.iXLen(iXLen, <8 x double>, <8 x i64>, iXLen)
2815 define void @test_sf_vc_fvx_se_e16mf4(<1 x half> %vs2, i16 %rs1, iXLen %vl) {
2816 ; CHECK-LABEL: test_sf_vc_fvx_se_e16mf4:
2817 ; CHECK:       # %bb.0: # %entry
2818 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
2819 ; CHECK-NEXT:    sf.vc.xv 3, 31, v8, a0
2820 ; CHECK-NEXT:    ret
2821 entry:
2822   tail call void @llvm.riscv.sf.vc.xv.se.iXLen.nxv1f16.nxv1f16.i16.iXLen(iXLen 3, iXLen 31, <1 x half> %vs2, i16 %rs1, iXLen %vl)
2823   ret void
2826 declare void @llvm.riscv.sf.vc.xv.se.iXLen.nxv1f16.nxv1f16.i16.iXLen(iXLen, iXLen, <1 x half>, i16, iXLen)
2828 define <1 x half> @test_sf_vc_v_fvx_se_e16mf4(<1 x half> %vs2, i16 %rs1, iXLen %vl) {
2829 ; CHECK-LABEL: test_sf_vc_v_fvx_se_e16mf4:
2830 ; CHECK:       # %bb.0: # %entry
2831 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
2832 ; CHECK-NEXT:    sf.vc.v.xv 3, v8, v8, a0
2833 ; CHECK-NEXT:    ret
2834 entry:
2835   %0 = tail call <1 x half> @llvm.riscv.sf.vc.v.xv.se.nxv1f16.nxv1f16.i16.iXLen(iXLen 3, <1 x half> %vs2, i16 %rs1, iXLen %vl)
2836   ret <1 x half> %0
2839 declare <1 x half> @llvm.riscv.sf.vc.v.xv.se.nxv1f16.nxv1f16.i16.iXLen(iXLen, <1 x half>, i16, iXLen)
2841 define void @test_sf_vc_fvx_se_e16mf2(<2 x half> %vs2, i16 %rs1, iXLen %vl) {
2842 ; CHECK-LABEL: test_sf_vc_fvx_se_e16mf2:
2843 ; CHECK:       # %bb.0: # %entry
2844 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
2845 ; CHECK-NEXT:    sf.vc.xv 3, 31, v8, a0
2846 ; CHECK-NEXT:    ret
2847 entry:
2848   tail call void @llvm.riscv.sf.vc.xv.se.iXLen.nxv2f16.nxv2f16.i16.iXLen(iXLen 3, iXLen 31, <2 x half> %vs2, i16 %rs1, iXLen %vl)
2849   ret void
2852 declare void @llvm.riscv.sf.vc.xv.se.iXLen.nxv2f16.nxv2f16.i16.iXLen(iXLen, iXLen, <2 x half>, i16, iXLen)
2854 define <2 x half> @test_sf_vc_v_fvx_se_e16mf2(<2 x half> %vs2, i16 %rs1, iXLen %vl) {
2855 ; CHECK-LABEL: test_sf_vc_v_fvx_se_e16mf2:
2856 ; CHECK:       # %bb.0: # %entry
2857 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
2858 ; CHECK-NEXT:    sf.vc.v.xv 3, v8, v8, a0
2859 ; CHECK-NEXT:    ret
2860 entry:
2861   %0 = tail call <2 x half> @llvm.riscv.sf.vc.v.xv.se.nxv2f16.nxv2f16.i16.iXLen(iXLen 3, <2 x half> %vs2, i16 %rs1, iXLen %vl)
2862   ret <2 x half> %0
2865 declare <2 x half> @llvm.riscv.sf.vc.v.xv.se.nxv2f16.nxv2f16.i16.iXLen(iXLen, <2 x half>, i16, iXLen)
2867 define void @test_sf_vc_fvx_se_e16m1(<4 x half> %vs2, i16 %rs1, iXLen %vl) {
2868 ; CHECK-LABEL: test_sf_vc_fvx_se_e16m1:
2869 ; CHECK:       # %bb.0: # %entry
2870 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
2871 ; CHECK-NEXT:    sf.vc.xv 3, 31, v8, a0
2872 ; CHECK-NEXT:    ret
2873 entry:
2874   tail call void @llvm.riscv.sf.vc.xv.se.iXLen.nxv4f16.nxv4f16.i16.iXLen(iXLen 3, iXLen 31, <4 x half> %vs2, i16 %rs1, iXLen %vl)
2875   ret void
2878 declare void @llvm.riscv.sf.vc.xv.se.iXLen.nxv4f16.nxv4f16.i16.iXLen(iXLen, iXLen, <4 x half>, i16, iXLen)
2880 define <4 x half> @test_sf_vc_v_fvx_se_e16m1(<4 x half> %vs2, i16 %rs1, iXLen %vl) {
2881 ; CHECK-LABEL: test_sf_vc_v_fvx_se_e16m1:
2882 ; CHECK:       # %bb.0: # %entry
2883 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
2884 ; CHECK-NEXT:    sf.vc.v.xv 3, v8, v8, a0
2885 ; CHECK-NEXT:    ret
2886 entry:
2887   %0 = tail call <4 x half> @llvm.riscv.sf.vc.v.xv.se.nxv4f16.nxv4f16.i16.iXLen(iXLen 3, <4 x half> %vs2, i16 %rs1, iXLen %vl)
2888   ret <4 x half> %0
2891 declare <4 x half> @llvm.riscv.sf.vc.v.xv.se.nxv4f16.nxv4f16.i16.iXLen(iXLen, <4 x half>, i16, iXLen)
2893 define void @test_sf_vc_fvx_se_e16m2(<8 x half> %vs2, i16 %rs1, iXLen %vl) {
2894 ; CHECK-LABEL: test_sf_vc_fvx_se_e16m2:
2895 ; CHECK:       # %bb.0: # %entry
2896 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
2897 ; CHECK-NEXT:    sf.vc.xv 3, 31, v8, a0
2898 ; CHECK-NEXT:    ret
2899 entry:
2900   tail call void @llvm.riscv.sf.vc.xv.se.iXLen.nxv8f16.nxv8f16.i16.iXLen(iXLen 3, iXLen 31, <8 x half> %vs2, i16 %rs1, iXLen %vl)
2901   ret void
2904 declare void @llvm.riscv.sf.vc.xv.se.iXLen.nxv8f16.nxv8f16.i16.iXLen(iXLen, iXLen, <8 x half>, i16, iXLen)
2906 define <8 x half> @test_sf_vc_v_fvx_se_e16m2(<8 x half> %vs2, i16 %rs1, iXLen %vl) {
2907 ; CHECK-LABEL: test_sf_vc_v_fvx_se_e16m2:
2908 ; CHECK:       # %bb.0: # %entry
2909 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
2910 ; CHECK-NEXT:    sf.vc.v.xv 3, v8, v8, a0
2911 ; CHECK-NEXT:    ret
2912 entry:
2913   %0 = tail call <8 x half> @llvm.riscv.sf.vc.v.xv.se.nxv8f16.nxv8f16.i16.iXLen(iXLen 3, <8 x half> %vs2, i16 %rs1, iXLen %vl)
2914   ret <8 x half> %0
2917 declare <8 x half> @llvm.riscv.sf.vc.v.xv.se.nxv8f16.nxv8f16.i16.iXLen(iXLen, <8 x half>, i16, iXLen)
2919 define void @test_sf_vc_fvx_se_e16m4(<16 x half> %vs2, i16 %rs1, iXLen %vl) {
2920 ; CHECK-LABEL: test_sf_vc_fvx_se_e16m4:
2921 ; CHECK:       # %bb.0: # %entry
2922 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
2923 ; CHECK-NEXT:    sf.vc.xv 3, 31, v8, a0
2924 ; CHECK-NEXT:    ret
2925 entry:
2926   tail call void @llvm.riscv.sf.vc.xv.se.iXLen.nxv16f16.nxv16f16.i16.iXLen(iXLen 3, iXLen 31, <16 x half> %vs2, i16 %rs1, iXLen %vl)
2927   ret void
2930 declare void @llvm.riscv.sf.vc.xv.se.iXLen.nxv16f16.nxv16f16.i16.iXLen(iXLen, iXLen, <16 x half>, i16, iXLen)
2932 define <16 x half> @test_sf_vc_v_fvx_se_e16m4(<16 x half> %vs2, i16 %rs1, iXLen %vl) {
2933 ; CHECK-LABEL: test_sf_vc_v_fvx_se_e16m4:
2934 ; CHECK:       # %bb.0: # %entry
2935 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
2936 ; CHECK-NEXT:    sf.vc.v.xv 3, v8, v8, a0
2937 ; CHECK-NEXT:    ret
2938 entry:
2939   %0 = tail call <16 x half> @llvm.riscv.sf.vc.v.xv.se.nxv16f16.nxv16f16.i16.iXLen(iXLen 3, <16 x half> %vs2, i16 %rs1, iXLen %vl)
2940   ret <16 x half> %0
2943 declare <16 x half> @llvm.riscv.sf.vc.v.xv.se.nxv16f16.nxv16f16.i16.iXLen(iXLen, <16 x half>, i16, iXLen)
2945 define void @test_sf_vc_fvx_se_e16m8(<32 x half> %vs2, i16 %rs1, iXLen %vl) {
2946 ; CHECK-LABEL: test_sf_vc_fvx_se_e16m8:
2947 ; CHECK:       # %bb.0: # %entry
2948 ; CHECK-NEXT:    vsetvli zero, a1, e16, m4, ta, ma
2949 ; CHECK-NEXT:    sf.vc.xv 3, 31, v8, a0
2950 ; CHECK-NEXT:    ret
2951 entry:
2952   tail call void @llvm.riscv.sf.vc.xv.se.iXLen.nxv32f16.nxv32f16.i16.iXLen(iXLen 3, iXLen 31, <32 x half> %vs2, i16 %rs1, iXLen %vl)
2953   ret void
2956 declare void @llvm.riscv.sf.vc.xv.se.iXLen.nxv32f16.nxv32f16.i16.iXLen(iXLen, iXLen, <32 x half>, i16, iXLen)
2958 define <32 x half> @test_sf_vc_v_fvx_se_e16m8(<32 x half> %vs2, i16 %rs1, iXLen %vl) {
2959 ; CHECK-LABEL: test_sf_vc_v_fvx_se_e16m8:
2960 ; CHECK:       # %bb.0: # %entry
2961 ; CHECK-NEXT:    vsetvli zero, a1, e16, m4, ta, ma
2962 ; CHECK-NEXT:    sf.vc.v.xv 3, v8, v8, a0
2963 ; CHECK-NEXT:    ret
2964 entry:
2965   %0 = tail call <32 x half> @llvm.riscv.sf.vc.v.xv.se.nxv32f16.nxv32f16.i16.iXLen(iXLen 3, <32 x half> %vs2, i16 %rs1, iXLen %vl)
2966   ret <32 x half> %0
2969 declare <32 x half> @llvm.riscv.sf.vc.v.xv.se.nxv32f16.nxv32f16.i16.iXLen(iXLen, <32 x half>, i16, iXLen)
2971 define void @test_sf_vc_fvx_se_e32mf2(<1 x float> %vs2, i32 %rs1, iXLen %vl) {
2972 ; CHECK-LABEL: test_sf_vc_fvx_se_e32mf2:
2973 ; CHECK:       # %bb.0: # %entry
2974 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
2975 ; CHECK-NEXT:    sf.vc.xv 3, 31, v8, a0
2976 ; CHECK-NEXT:    ret
2977 entry:
2978   tail call void @llvm.riscv.sf.vc.xv.se.iXLen.nxv1f32.nxv1f32.i32.iXLen(iXLen 3, iXLen 31, <1 x float> %vs2, i32 %rs1, iXLen %vl)
2979   ret void
2982 declare void @llvm.riscv.sf.vc.xv.se.iXLen.nxv1f32.nxv1f32.i32.iXLen(iXLen, iXLen, <1 x float>, i32, iXLen)
2984 define <1 x float> @test_sf_vc_v_fvx_se_e32mf2(<1 x float> %vs2, i32 %rs1, iXLen %vl) {
2985 ; CHECK-LABEL: test_sf_vc_v_fvx_se_e32mf2:
2986 ; CHECK:       # %bb.0: # %entry
2987 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
2988 ; CHECK-NEXT:    sf.vc.v.xv 3, v8, v8, a0
2989 ; CHECK-NEXT:    ret
2990 entry:
2991   %0 = tail call <1 x float> @llvm.riscv.sf.vc.v.xv.se.nxv1f32.nxv1f32.i32.iXLen(iXLen 3, <1 x float> %vs2, i32 %rs1, iXLen %vl)
2992   ret <1 x float> %0
2995 declare <1 x float> @llvm.riscv.sf.vc.v.xv.se.nxv1f32.nxv1f32.i32.iXLen(iXLen, <1 x float>, i32, iXLen)
2997 define void @test_sf_vc_fvx_se_e32m1(<2 x float> %vs2, i32 %rs1, iXLen %vl) {
2998 ; CHECK-LABEL: test_sf_vc_fvx_se_e32m1:
2999 ; CHECK:       # %bb.0: # %entry
3000 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
3001 ; CHECK-NEXT:    sf.vc.xv 3, 31, v8, a0
3002 ; CHECK-NEXT:    ret
3003 entry:
3004   tail call void @llvm.riscv.sf.vc.xv.se.iXLen.nxv2f32.nxv2f32.i32.iXLen(iXLen 3, iXLen 31, <2 x float> %vs2, i32 %rs1, iXLen %vl)
3005   ret void
3008 declare void @llvm.riscv.sf.vc.xv.se.iXLen.nxv2f32.nxv2f32.i32.iXLen(iXLen, iXLen, <2 x float>, i32, iXLen)
3010 define <2 x float> @test_sf_vc_v_fvx_se_e32m1(<2 x float> %vs2, i32 %rs1, iXLen %vl) {
3011 ; CHECK-LABEL: test_sf_vc_v_fvx_se_e32m1:
3012 ; CHECK:       # %bb.0: # %entry
3013 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
3014 ; CHECK-NEXT:    sf.vc.v.xv 3, v8, v8, a0
3015 ; CHECK-NEXT:    ret
3016 entry:
3017   %0 = tail call <2 x float> @llvm.riscv.sf.vc.v.xv.se.nxv2f32.nxv2f32.i32.iXLen(iXLen 3, <2 x float> %vs2, i32 %rs1, iXLen %vl)
3018   ret <2 x float> %0
3021 declare <2 x float> @llvm.riscv.sf.vc.v.xv.se.nxv2f32.nxv2f32.i32.iXLen(iXLen, <2 x float>, i32, iXLen)
3023 define void @test_sf_vc_fvx_se_e32m2(<4 x float> %vs2, i32 %rs1, iXLen %vl) {
3024 ; CHECK-LABEL: test_sf_vc_fvx_se_e32m2:
3025 ; CHECK:       # %bb.0: # %entry
3026 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
3027 ; CHECK-NEXT:    sf.vc.xv 3, 31, v8, a0
3028 ; CHECK-NEXT:    ret
3029 entry:
3030   tail call void @llvm.riscv.sf.vc.xv.se.iXLen.nxv4f32.nxv4f32.i32.iXLen(iXLen 3, iXLen 31, <4 x float> %vs2, i32 %rs1, iXLen %vl)
3031   ret void
3034 declare void @llvm.riscv.sf.vc.xv.se.iXLen.nxv4f32.nxv4f32.i32.iXLen(iXLen, iXLen, <4 x float>, i32, iXLen)
3036 define <4 x float> @test_sf_vc_v_fvx_se_e32m2(<4 x float> %vs2, i32 %rs1, iXLen %vl) {
3037 ; CHECK-LABEL: test_sf_vc_v_fvx_se_e32m2:
3038 ; CHECK:       # %bb.0: # %entry
3039 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
3040 ; CHECK-NEXT:    sf.vc.v.xv 3, v8, v8, a0
3041 ; CHECK-NEXT:    ret
3042 entry:
3043   %0 = tail call <4 x float> @llvm.riscv.sf.vc.v.xv.se.nxv4f32.nxv4f32.i32.iXLen(iXLen 3, <4 x float> %vs2, i32 %rs1, iXLen %vl)
3044   ret <4 x float> %0
3047 declare <4 x float> @llvm.riscv.sf.vc.v.xv.se.nxv4f32.nxv4f32.i32.iXLen(iXLen, <4 x float>, i32, iXLen)
3049 define void @test_sf_vc_fvx_se_e32m4(<8 x float> %vs2, i32 %rs1, iXLen %vl) {
3050 ; CHECK-LABEL: test_sf_vc_fvx_se_e32m4:
3051 ; CHECK:       # %bb.0: # %entry
3052 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
3053 ; CHECK-NEXT:    sf.vc.xv 3, 31, v8, a0
3054 ; CHECK-NEXT:    ret
3055 entry:
3056   tail call void @llvm.riscv.sf.vc.xv.se.iXLen.nxv8f32.nxv8f32.i32.iXLen(iXLen 3, iXLen 31, <8 x float> %vs2, i32 %rs1, iXLen %vl)
3057   ret void
3060 declare void @llvm.riscv.sf.vc.xv.se.iXLen.nxv8f32.nxv8f32.i32.iXLen(iXLen, iXLen, <8 x float>, i32, iXLen)
3062 define <8 x float> @test_sf_vc_v_fvx_se_e32m4(<8 x float> %vs2, i32 %rs1, iXLen %vl) {
3063 ; CHECK-LABEL: test_sf_vc_v_fvx_se_e32m4:
3064 ; CHECK:       # %bb.0: # %entry
3065 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
3066 ; CHECK-NEXT:    sf.vc.v.xv 3, v8, v8, a0
3067 ; CHECK-NEXT:    ret
3068 entry:
3069   %0 = tail call <8 x float> @llvm.riscv.sf.vc.v.xv.se.nxv8f32.nxv8f32.i32.iXLen(iXLen 3, <8 x float> %vs2, i32 %rs1, iXLen %vl)
3070   ret <8 x float> %0
3073 declare <8 x float> @llvm.riscv.sf.vc.v.xv.se.nxv8f32.nxv8f32.i32.iXLen(iXLen, <8 x float>, i32, iXLen)
3075 define void @test_sf_vc_fvx_se_e32m8(<16 x float> %vs2, i32 %rs1, iXLen %vl) {
3076 ; CHECK-LABEL: test_sf_vc_fvx_se_e32m8:
3077 ; CHECK:       # %bb.0: # %entry
3078 ; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
3079 ; CHECK-NEXT:    sf.vc.xv 3, 31, v8, a0
3080 ; CHECK-NEXT:    ret
3081 entry:
3082   tail call void @llvm.riscv.sf.vc.xv.se.iXLen.nxv16f32.nxv16f32.i32.iXLen(iXLen 3, iXLen 31, <16 x float> %vs2, i32 %rs1, iXLen %vl)
3083   ret void
3086 declare void @llvm.riscv.sf.vc.xv.se.iXLen.nxv16f32.nxv16f32.i32.iXLen(iXLen, iXLen, <16 x float>, i32, iXLen)
3088 define <16 x float> @test_sf_vc_v_fvx_se_e32m8(<16 x float> %vs2, i32 %rs1, iXLen %vl) {
3089 ; CHECK-LABEL: test_sf_vc_v_fvx_se_e32m8:
3090 ; CHECK:       # %bb.0: # %entry
3091 ; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
3092 ; CHECK-NEXT:    sf.vc.v.xv 3, v8, v8, a0
3093 ; CHECK-NEXT:    ret
3094 entry:
3095   %0 = tail call <16 x float> @llvm.riscv.sf.vc.v.xv.se.nxv16f32.nxv16f32.i32.iXLen(iXLen 3, <16 x float> %vs2, i32 %rs1, iXLen %vl)
3096   ret <16 x float> %0
3099 declare <16 x float> @llvm.riscv.sf.vc.v.xv.se.nxv16f32.nxv16f32.i32.iXLen(iXLen, <16 x float>, i32, iXLen)
3101 define void @test_sf_vc_fvi_se_e16mf4(<1 x half> %vs2, iXLen %vl) {
3102 ; CHECK-LABEL: test_sf_vc_fvi_se_e16mf4:
3103 ; CHECK:       # %bb.0: # %entry
3104 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
3105 ; CHECK-NEXT:    sf.vc.iv 3, 31, v8, 8
3106 ; CHECK-NEXT:    ret
3107 entry:
3108   tail call void @llvm.riscv.sf.vc.iv.se.iXLen.nxv1f16.nxv1f16.iXLen.iXLen(iXLen 3, iXLen 31, <1 x half> %vs2, iXLen 8, iXLen %vl)
3109   ret void
3112 declare void @llvm.riscv.sf.vc.iv.se.iXLen.nxv1f16.nxv1f16.iXLen.iXLen(iXLen, iXLen, <1 x half>, iXLen, iXLen)
3114 define <1 x half> @test_sf_vc_v_fvi_se_e16mf4(<1 x half> %vs2, iXLen %vl) {
3115 ; CHECK-LABEL: test_sf_vc_v_fvi_se_e16mf4:
3116 ; CHECK:       # %bb.0: # %entry
3117 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
3118 ; CHECK-NEXT:    sf.vc.v.iv 3, v8, v8, 8
3119 ; CHECK-NEXT:    ret
3120 entry:
3121   %0 = tail call <1 x half> @llvm.riscv.sf.vc.v.iv.se.nxv1f16.nxv1f16.iXLen.iXLen(iXLen 3, <1 x half> %vs2, iXLen 8, iXLen %vl)
3122   ret <1 x half> %0
3125 declare <1 x half> @llvm.riscv.sf.vc.v.iv.se.nxv1f16.nxv1f16.iXLen.iXLen(iXLen, <1 x half>, iXLen, iXLen)
3127 define void @test_sf_vc_fvi_se_e16mf2(<2 x half> %vs2, iXLen %vl) {
3128 ; CHECK-LABEL: test_sf_vc_fvi_se_e16mf2:
3129 ; CHECK:       # %bb.0: # %entry
3130 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
3131 ; CHECK-NEXT:    sf.vc.iv 3, 31, v8, 8
3132 ; CHECK-NEXT:    ret
3133 entry:
3134   tail call void @llvm.riscv.sf.vc.iv.se.iXLen.nxv2f16.nxv2f16.iXLen.iXLen(iXLen 3, iXLen 31, <2 x half> %vs2, iXLen 8, iXLen %vl)
3135   ret void
3138 declare void @llvm.riscv.sf.vc.iv.se.iXLen.nxv2f16.nxv2f16.iXLen.iXLen(iXLen, iXLen, <2 x half>, iXLen, iXLen)
3140 define <2 x half> @test_sf_vc_v_fvi_se_e16mf2(<2 x half> %vs2, iXLen %vl) {
3141 ; CHECK-LABEL: test_sf_vc_v_fvi_se_e16mf2:
3142 ; CHECK:       # %bb.0: # %entry
3143 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
3144 ; CHECK-NEXT:    sf.vc.v.iv 3, v8, v8, 8
3145 ; CHECK-NEXT:    ret
3146 entry:
3147   %0 = tail call <2 x half> @llvm.riscv.sf.vc.v.iv.se.nxv2f16.nxv2f16.iXLen.iXLen(iXLen 3, <2 x half> %vs2, iXLen 8, iXLen %vl)
3148   ret <2 x half> %0
3151 declare <2 x half> @llvm.riscv.sf.vc.v.iv.se.nxv2f16.nxv2f16.iXLen.iXLen(iXLen, <2 x half>, iXLen, iXLen)
3153 define void @test_sf_vc_fvi_se_e16m1(<4 x half> %vs2, iXLen %vl) {
3154 ; CHECK-LABEL: test_sf_vc_fvi_se_e16m1:
3155 ; CHECK:       # %bb.0: # %entry
3156 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
3157 ; CHECK-NEXT:    sf.vc.iv 3, 31, v8, 8
3158 ; CHECK-NEXT:    ret
3159 entry:
3160   tail call void @llvm.riscv.sf.vc.iv.se.iXLen.nxv4f16.nxv4f16.iXLen.iXLen(iXLen 3, iXLen 31, <4 x half> %vs2, iXLen 8, iXLen %vl)
3161   ret void
3164 declare void @llvm.riscv.sf.vc.iv.se.iXLen.nxv4f16.nxv4f16.iXLen.iXLen(iXLen, iXLen, <4 x half>, iXLen, iXLen)
3166 define <4 x half> @test_sf_vc_v_fvi_se_e16m1(<4 x half> %vs2, iXLen %vl) {
3167 ; CHECK-LABEL: test_sf_vc_v_fvi_se_e16m1:
3168 ; CHECK:       # %bb.0: # %entry
3169 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
3170 ; CHECK-NEXT:    sf.vc.v.iv 3, v8, v8, 8
3171 ; CHECK-NEXT:    ret
3172 entry:
3173   %0 = tail call <4 x half> @llvm.riscv.sf.vc.v.iv.se.nxv4f16.nxv4f16.iXLen.iXLen(iXLen 3, <4 x half> %vs2, iXLen 8, iXLen %vl)
3174   ret <4 x half> %0
3177 declare <4 x half> @llvm.riscv.sf.vc.v.iv.se.nxv4f16.nxv4f16.iXLen.iXLen(iXLen, <4 x half>, iXLen, iXLen)
3179 define void @test_sf_vc_fvi_se_e16m2(<8 x half> %vs2, iXLen %vl) {
3180 ; CHECK-LABEL: test_sf_vc_fvi_se_e16m2:
3181 ; CHECK:       # %bb.0: # %entry
3182 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
3183 ; CHECK-NEXT:    sf.vc.iv 3, 31, v8, 8
3184 ; CHECK-NEXT:    ret
3185 entry:
3186   tail call void @llvm.riscv.sf.vc.iv.se.iXLen.nxv8f16.nxv8f16.iXLen.iXLen(iXLen 3, iXLen 31, <8 x half> %vs2, iXLen 8, iXLen %vl)
3187   ret void
3190 declare void @llvm.riscv.sf.vc.iv.se.iXLen.nxv8f16.nxv8f16.iXLen.iXLen(iXLen, iXLen, <8 x half>, iXLen, iXLen)
3192 define <8 x half> @test_sf_vc_v_fvi_se_e16m2(<8 x half> %vs2, iXLen %vl) {
3193 ; CHECK-LABEL: test_sf_vc_v_fvi_se_e16m2:
3194 ; CHECK:       # %bb.0: # %entry
3195 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
3196 ; CHECK-NEXT:    sf.vc.v.iv 3, v8, v8, 8
3197 ; CHECK-NEXT:    ret
3198 entry:
3199   %0 = tail call <8 x half> @llvm.riscv.sf.vc.v.iv.se.nxv8f16.nxv8f16.iXLen.iXLen(iXLen 3, <8 x half> %vs2, iXLen 8, iXLen %vl)
3200   ret <8 x half> %0
3203 declare <8 x half> @llvm.riscv.sf.vc.v.iv.se.nxv8f16.nxv8f16.iXLen.iXLen(iXLen, <8 x half>, iXLen, iXLen)
3205 define void @test_sf_vc_fvi_se_e16m4(<16 x half> %vs2, iXLen %vl) {
3206 ; CHECK-LABEL: test_sf_vc_fvi_se_e16m4:
3207 ; CHECK:       # %bb.0: # %entry
3208 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
3209 ; CHECK-NEXT:    sf.vc.iv 3, 31, v8, 8
3210 ; CHECK-NEXT:    ret
3211 entry:
3212   tail call void @llvm.riscv.sf.vc.iv.se.iXLen.nxv16f16.nxv16f16.iXLen.iXLen(iXLen 3, iXLen 31, <16 x half> %vs2, iXLen 8, iXLen %vl)
3213   ret void
3216 declare void @llvm.riscv.sf.vc.iv.se.iXLen.nxv16f16.nxv16f16.iXLen.iXLen(iXLen, iXLen, <16 x half>, iXLen, iXLen)
3218 define <16 x half> @test_sf_vc_v_fvi_se_e16m4(<16 x half> %vs2, iXLen %vl) {
3219 ; CHECK-LABEL: test_sf_vc_v_fvi_se_e16m4:
3220 ; CHECK:       # %bb.0: # %entry
3221 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
3222 ; CHECK-NEXT:    sf.vc.v.iv 3, v8, v8, 8
3223 ; CHECK-NEXT:    ret
3224 entry:
3225   %0 = tail call <16 x half> @llvm.riscv.sf.vc.v.iv.se.nxv16f16.nxv16f16.iXLen.iXLen(iXLen 3, <16 x half> %vs2, iXLen 8, iXLen %vl)
3226   ret <16 x half> %0
3229 declare <16 x half> @llvm.riscv.sf.vc.v.iv.se.nxv16f16.nxv16f16.iXLen.iXLen(iXLen, <16 x half>, iXLen, iXLen)
3231 define void @test_sf_vc_fvi_se_e16m8(<32 x half> %vs2, iXLen %vl) {
3232 ; CHECK-LABEL: test_sf_vc_fvi_se_e16m8:
3233 ; CHECK:       # %bb.0: # %entry
3234 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
3235 ; CHECK-NEXT:    sf.vc.iv 3, 31, v8, 8
3236 ; CHECK-NEXT:    ret
3237 entry:
3238   tail call void @llvm.riscv.sf.vc.iv.se.iXLen.nxv32f16.nxv32f16.iXLen.iXLen(iXLen 3, iXLen 31, <32 x half> %vs2, iXLen 8, iXLen %vl)
3239   ret void
3242 declare void @llvm.riscv.sf.vc.iv.se.iXLen.nxv32f16.nxv32f16.iXLen.iXLen(iXLen, iXLen, <32 x half>, iXLen, iXLen)
3244 define <32 x half> @test_sf_vc_v_fvi_se_e16m8(<32 x half> %vs2, iXLen %vl) {
3245 ; CHECK-LABEL: test_sf_vc_v_fvi_se_e16m8:
3246 ; CHECK:       # %bb.0: # %entry
3247 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
3248 ; CHECK-NEXT:    sf.vc.v.iv 3, v8, v8, 8
3249 ; CHECK-NEXT:    ret
3250 entry:
3251   %0 = tail call <32 x half> @llvm.riscv.sf.vc.v.iv.se.nxv32f16.nxv32f16.iXLen.iXLen(iXLen 3, <32 x half> %vs2, iXLen 8, iXLen %vl)
3252   ret <32 x half> %0
3255 declare <32 x half> @llvm.riscv.sf.vc.v.iv.se.nxv32f16.nxv32f16.iXLen.iXLen(iXLen, <32 x half>, iXLen, iXLen)
3257 define void @test_sf_vc_fvi_se_e32mf2(<1 x float> %vs2, iXLen %vl) {
3258 ; CHECK-LABEL: test_sf_vc_fvi_se_e32mf2:
3259 ; CHECK:       # %bb.0: # %entry
3260 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
3261 ; CHECK-NEXT:    sf.vc.iv 3, 31, v8, 8
3262 ; CHECK-NEXT:    ret
3263 entry:
3264   tail call void @llvm.riscv.sf.vc.iv.se.iXLen.nxv1f32.nxv1f32.iXLen.iXLen(iXLen 3, iXLen 31, <1 x float> %vs2, iXLen 8, iXLen %vl)
3265   ret void
3268 declare void @llvm.riscv.sf.vc.iv.se.iXLen.nxv1f32.nxv1f32.iXLen.iXLen(iXLen, iXLen, <1 x float>, iXLen, iXLen)
3270 define <1 x float> @test_sf_vc_v_fvi_se_e32mf2(<1 x float> %vs2, iXLen %vl) {
3271 ; CHECK-LABEL: test_sf_vc_v_fvi_se_e32mf2:
3272 ; CHECK:       # %bb.0: # %entry
3273 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
3274 ; CHECK-NEXT:    sf.vc.v.iv 3, v8, v8, 8
3275 ; CHECK-NEXT:    ret
3276 entry:
3277   %0 = tail call <1 x float> @llvm.riscv.sf.vc.v.iv.se.nxv1f32.nxv1f32.iXLen.iXLen(iXLen 3, <1 x float> %vs2, iXLen 8, iXLen %vl)
3278   ret <1 x float> %0
3281 declare <1 x float> @llvm.riscv.sf.vc.v.iv.se.nxv1f32.nxv1f32.iXLen.iXLen(iXLen, <1 x float>, iXLen, iXLen)
3283 define void @test_sf_vc_fvi_se_e32m1(<2 x float> %vs2, iXLen %vl) {
3284 ; CHECK-LABEL: test_sf_vc_fvi_se_e32m1:
3285 ; CHECK:       # %bb.0: # %entry
3286 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
3287 ; CHECK-NEXT:    sf.vc.iv 3, 31, v8, 8
3288 ; CHECK-NEXT:    ret
3289 entry:
3290   tail call void @llvm.riscv.sf.vc.iv.se.iXLen.nxv2f32.nxv2f32.iXLen.iXLen(iXLen 3, iXLen 31, <2 x float> %vs2, iXLen 8, iXLen %vl)
3291   ret void
3294 declare void @llvm.riscv.sf.vc.iv.se.iXLen.nxv2f32.nxv2f32.iXLen.iXLen(iXLen, iXLen, <2 x float>, iXLen, iXLen)
3296 define <2 x float> @test_sf_vc_v_fvi_se_e32m1(<2 x float> %vs2, iXLen %vl) {
3297 ; CHECK-LABEL: test_sf_vc_v_fvi_se_e32m1:
3298 ; CHECK:       # %bb.0: # %entry
3299 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
3300 ; CHECK-NEXT:    sf.vc.v.iv 3, v8, v8, 8
3301 ; CHECK-NEXT:    ret
3302 entry:
3303   %0 = tail call <2 x float> @llvm.riscv.sf.vc.v.iv.se.nxv2f32.nxv2f32.iXLen.iXLen(iXLen 3, <2 x float> %vs2, iXLen 8, iXLen %vl)
3304   ret <2 x float> %0
3307 declare <2 x float> @llvm.riscv.sf.vc.v.iv.se.nxv2f32.nxv2f32.iXLen.iXLen(iXLen, <2 x float>, iXLen, iXLen)
3309 define void @test_sf_vc_fvi_se_e32m2(<4 x float> %vs2, iXLen %vl) {
3310 ; CHECK-LABEL: test_sf_vc_fvi_se_e32m2:
3311 ; CHECK:       # %bb.0: # %entry
3312 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
3313 ; CHECK-NEXT:    sf.vc.iv 3, 31, v8, 8
3314 ; CHECK-NEXT:    ret
3315 entry:
3316   tail call void @llvm.riscv.sf.vc.iv.se.iXLen.nxv4f32.nxv4f32.iXLen.iXLen(iXLen 3, iXLen 31, <4 x float> %vs2, iXLen 8, iXLen %vl)
3317   ret void
3320 declare void @llvm.riscv.sf.vc.iv.se.iXLen.nxv4f32.nxv4f32.iXLen.iXLen(iXLen, iXLen, <4 x float>, iXLen, iXLen)
3322 define <4 x float> @test_sf_vc_v_fvi_se_e32m2(<4 x float> %vs2, iXLen %vl) {
3323 ; CHECK-LABEL: test_sf_vc_v_fvi_se_e32m2:
3324 ; CHECK:       # %bb.0: # %entry
3325 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
3326 ; CHECK-NEXT:    sf.vc.v.iv 3, v8, v8, 8
3327 ; CHECK-NEXT:    ret
3328 entry:
3329   %0 = tail call <4 x float> @llvm.riscv.sf.vc.v.iv.se.nxv4f32.nxv4f32.iXLen.iXLen(iXLen 3, <4 x float> %vs2, iXLen 8, iXLen %vl)
3330   ret <4 x float> %0
3333 declare <4 x float> @llvm.riscv.sf.vc.v.iv.se.nxv4f32.nxv4f32.iXLen.iXLen(iXLen, <4 x float>, iXLen, iXLen)
3335 define void @test_sf_vc_fvi_se_e32m4(<8 x float> %vs2, iXLen %vl) {
3336 ; CHECK-LABEL: test_sf_vc_fvi_se_e32m4:
3337 ; CHECK:       # %bb.0: # %entry
3338 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
3339 ; CHECK-NEXT:    sf.vc.iv 3, 31, v8, 8
3340 ; CHECK-NEXT:    ret
3341 entry:
3342   tail call void @llvm.riscv.sf.vc.iv.se.iXLen.nxv8f32.nxv8f32.iXLen.iXLen(iXLen 3, iXLen 31, <8 x float> %vs2, iXLen 8, iXLen %vl)
3343   ret void
3346 declare void @llvm.riscv.sf.vc.iv.se.iXLen.nxv8f32.nxv8f32.iXLen.iXLen(iXLen, iXLen, <8 x float>, iXLen, iXLen)
3348 define <8 x float> @test_sf_vc_v_fvi_se_e32m4(<8 x float> %vs2, iXLen %vl) {
3349 ; CHECK-LABEL: test_sf_vc_v_fvi_se_e32m4:
3350 ; CHECK:       # %bb.0: # %entry
3351 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
3352 ; CHECK-NEXT:    sf.vc.v.iv 3, v8, v8, 8
3353 ; CHECK-NEXT:    ret
3354 entry:
3355   %0 = tail call <8 x float> @llvm.riscv.sf.vc.v.iv.se.nxv8f32.nxv8f32.iXLen.iXLen(iXLen 3, <8 x float> %vs2, iXLen 8, iXLen %vl)
3356   ret <8 x float> %0
3359 declare <8 x float> @llvm.riscv.sf.vc.v.iv.se.nxv8f32.nxv8f32.iXLen.iXLen(iXLen, <8 x float>, iXLen, iXLen)
3361 define void @test_sf_vc_fvi_se_e32m8(<16 x float> %vs2, iXLen %vl) {
3362 ; CHECK-LABEL: test_sf_vc_fvi_se_e32m8:
3363 ; CHECK:       # %bb.0: # %entry
3364 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
3365 ; CHECK-NEXT:    sf.vc.iv 3, 31, v8, 8
3366 ; CHECK-NEXT:    ret
3367 entry:
3368   tail call void @llvm.riscv.sf.vc.iv.se.iXLen.nxv16f32.nxv16f32.iXLen.iXLen(iXLen 3, iXLen 31, <16 x float> %vs2, iXLen 8, iXLen %vl)
3369   ret void
3372 declare void @llvm.riscv.sf.vc.iv.se.iXLen.nxv16f32.nxv16f32.iXLen.iXLen(iXLen, iXLen, <16 x float>, iXLen, iXLen)
3374 define <16 x float> @test_sf_vc_v_fvi_se_e32m8(<16 x float> %vs2, iXLen %vl) {
3375 ; CHECK-LABEL: test_sf_vc_v_fvi_se_e32m8:
3376 ; CHECK:       # %bb.0: # %entry
3377 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
3378 ; CHECK-NEXT:    sf.vc.v.iv 3, v8, v8, 8
3379 ; CHECK-NEXT:    ret
3380 entry:
3381   %0 = tail call <16 x float> @llvm.riscv.sf.vc.v.iv.se.nxv16f32.nxv16f32.iXLen.iXLen(iXLen 3, <16 x float> %vs2, iXLen 8, iXLen %vl)
3382   ret <16 x float> %0
3385 declare <16 x float> @llvm.riscv.sf.vc.v.iv.se.nxv16f32.nxv16f32.iXLen.iXLen(iXLen, <16 x float>, iXLen, iXLen)
3387 define void @test_sf_vc_fvf_se_e16mf4(<1 x half> %vs2, half %rs1, iXLen %vl) {
3388 ; CHECK-LABEL: test_sf_vc_fvf_se_e16mf4:
3389 ; CHECK:       # %bb.0: # %entry
3390 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
3391 ; CHECK-NEXT:    sf.vc.fv 1, 31, v8, fa0
3392 ; CHECK-NEXT:    ret
3393 entry:
3394   tail call void @llvm.riscv.sf.vc.fv.se.iXLen.nxv1f16.nxv1f16.f16.iXLen(iXLen 1, iXLen 31, <1 x half> %vs2, half %rs1, iXLen %vl)
3395   ret void
3398 declare void @llvm.riscv.sf.vc.fv.se.iXLen.nxv1f16.nxv1f16.f16.iXLen(iXLen, iXLen, <1 x half>, half, iXLen)
3400 define <1 x half> @test_sf_vc_v_fvf_se_e16mf4(<1 x half> %vs2, half %rs1, iXLen %vl) {
3401 ; CHECK-LABEL: test_sf_vc_v_fvf_se_e16mf4:
3402 ; CHECK:       # %bb.0: # %entry
3403 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
3404 ; CHECK-NEXT:    sf.vc.v.fv 1, v8, v8, fa0
3405 ; CHECK-NEXT:    ret
3406 entry:
3407   %0 = tail call <1 x half> @llvm.riscv.sf.vc.v.fv.se.nxv1f16.nxv1f16.iXLen.f16(iXLen 1, <1 x half> %vs2, half %rs1, iXLen %vl)
3408   ret <1 x half> %0
3411 declare <1 x half> @llvm.riscv.sf.vc.v.fv.se.nxv1f16.nxv1f16.iXLen.f16(iXLen, <1 x half>, half, iXLen)
3413 define void @test_sf_vc_fvf_se_e16mf2(<2 x half> %vs2, half %rs1, iXLen %vl) {
3414 ; CHECK-LABEL: test_sf_vc_fvf_se_e16mf2:
3415 ; CHECK:       # %bb.0: # %entry
3416 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
3417 ; CHECK-NEXT:    sf.vc.fv 1, 31, v8, fa0
3418 ; CHECK-NEXT:    ret
3419 entry:
3420   tail call void @llvm.riscv.sf.vc.fv.se.iXLen.nxv2f16.nxv2f16.f16.iXLen(iXLen 1, iXLen 31, <2 x half> %vs2, half %rs1, iXLen %vl)
3421   ret void
3424 declare void @llvm.riscv.sf.vc.fv.se.iXLen.nxv2f16.nxv2f16.f16.iXLen(iXLen, iXLen, <2 x half>, half, iXLen)
3426 define <2 x half> @test_sf_vc_v_fvf_se_e16mf2(<2 x half> %vs2, half %rs1, iXLen %vl) {
3427 ; CHECK-LABEL: test_sf_vc_v_fvf_se_e16mf2:
3428 ; CHECK:       # %bb.0: # %entry
3429 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
3430 ; CHECK-NEXT:    sf.vc.v.fv 1, v8, v8, fa0
3431 ; CHECK-NEXT:    ret
3432 entry:
3433   %0 = tail call <2 x half> @llvm.riscv.sf.vc.v.fv.se.nxv2f16.nxv2f16.iXLen.f16(iXLen 1, <2 x half> %vs2, half %rs1, iXLen %vl)
3434   ret <2 x half> %0
3437 declare <2 x half> @llvm.riscv.sf.vc.v.fv.se.nxv2f16.nxv2f16.iXLen.f16(iXLen, <2 x half>, half, iXLen)
3439 define void @test_sf_vc_fvf_se_e16m1(<4 x half> %vs2, half %rs1, iXLen %vl) {
3440 ; CHECK-LABEL: test_sf_vc_fvf_se_e16m1:
3441 ; CHECK:       # %bb.0: # %entry
3442 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
3443 ; CHECK-NEXT:    sf.vc.fv 1, 31, v8, fa0
3444 ; CHECK-NEXT:    ret
3445 entry:
3446   tail call void @llvm.riscv.sf.vc.fv.se.iXLen.nxv4f16.nxv4f16.f16.iXLen(iXLen 1, iXLen 31, <4 x half> %vs2, half %rs1, iXLen %vl)
3447   ret void
3450 declare void @llvm.riscv.sf.vc.fv.se.iXLen.nxv4f16.nxv4f16.f16.iXLen(iXLen, iXLen, <4 x half>, half, iXLen)
3452 define <4 x half> @test_sf_vc_v_fvf_se_e16m1(<4 x half> %vs2, half %rs1, iXLen %vl) {
3453 ; CHECK-LABEL: test_sf_vc_v_fvf_se_e16m1:
3454 ; CHECK:       # %bb.0: # %entry
3455 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
3456 ; CHECK-NEXT:    sf.vc.v.fv 1, v8, v8, fa0
3457 ; CHECK-NEXT:    ret
3458 entry:
3459   %0 = tail call <4 x half> @llvm.riscv.sf.vc.v.fv.se.nxv4f16.nxv4f16.iXLen.f16(iXLen 1, <4 x half> %vs2, half %rs1, iXLen %vl)
3460   ret <4 x half> %0
3463 declare <4 x half> @llvm.riscv.sf.vc.v.fv.se.nxv4f16.nxv4f16.iXLen.f16(iXLen, <4 x half>, half, iXLen)
3465 define void @test_sf_vc_fvf_se_e16m2(<8 x half> %vs2, half %rs1, iXLen %vl) {
3466 ; CHECK-LABEL: test_sf_vc_fvf_se_e16m2:
3467 ; CHECK:       # %bb.0: # %entry
3468 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
3469 ; CHECK-NEXT:    sf.vc.fv 1, 31, v8, fa0
3470 ; CHECK-NEXT:    ret
3471 entry:
3472   tail call void @llvm.riscv.sf.vc.fv.se.iXLen.nxv8f16.nxv8f16.f16.iXLen(iXLen 1, iXLen 31, <8 x half> %vs2, half %rs1, iXLen %vl)
3473   ret void
3476 declare void @llvm.riscv.sf.vc.fv.se.iXLen.nxv8f16.nxv8f16.f16.iXLen(iXLen, iXLen, <8 x half>, half, iXLen)
3478 define <8 x half> @test_sf_vc_v_fvf_se_e16m2(<8 x half> %vs2, half %rs1, iXLen %vl) {
3479 ; CHECK-LABEL: test_sf_vc_v_fvf_se_e16m2:
3480 ; CHECK:       # %bb.0: # %entry
3481 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
3482 ; CHECK-NEXT:    sf.vc.v.fv 1, v8, v8, fa0
3483 ; CHECK-NEXT:    ret
3484 entry:
3485   %0 = tail call <8 x half> @llvm.riscv.sf.vc.v.fv.se.nxv8f16.nxv8f16.iXLen.f16(iXLen 1, <8 x half> %vs2, half %rs1, iXLen %vl)
3486   ret <8 x half> %0
3489 declare <8 x half> @llvm.riscv.sf.vc.v.fv.se.nxv8f16.nxv8f16.iXLen.f16(iXLen, <8 x half>, half, iXLen)
3491 define void @test_sf_vc_fvf_se_e16m4(<16 x half> %vs2, half %rs1, iXLen %vl) {
3492 ; CHECK-LABEL: test_sf_vc_fvf_se_e16m4:
3493 ; CHECK:       # %bb.0: # %entry
3494 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
3495 ; CHECK-NEXT:    sf.vc.fv 1, 31, v8, fa0
3496 ; CHECK-NEXT:    ret
3497 entry:
3498   tail call void @llvm.riscv.sf.vc.fv.se.iXLen.nxv16f16.nxv16f16.f16.iXLen(iXLen 1, iXLen 31, <16 x half> %vs2, half %rs1, iXLen %vl)
3499   ret void
3502 declare void @llvm.riscv.sf.vc.fv.se.iXLen.nxv16f16.nxv16f16.f16.iXLen(iXLen, iXLen, <16 x half>, half, iXLen)
3504 define <16 x half> @test_sf_vc_v_fvf_se_e16m4(<16 x half> %vs2, half %rs1, iXLen %vl) {
3505 ; CHECK-LABEL: test_sf_vc_v_fvf_se_e16m4:
3506 ; CHECK:       # %bb.0: # %entry
3507 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
3508 ; CHECK-NEXT:    sf.vc.v.fv 1, v8, v8, fa0
3509 ; CHECK-NEXT:    ret
3510 entry:
3511   %0 = tail call <16 x half> @llvm.riscv.sf.vc.v.fv.se.nxv16f16.nxv16f16.iXLen.f16(iXLen 1, <16 x half> %vs2, half %rs1, iXLen %vl)
3512   ret <16 x half> %0
3515 declare <16 x half> @llvm.riscv.sf.vc.v.fv.se.nxv16f16.nxv16f16.iXLen.f16(iXLen, <16 x half>, half, iXLen)
3517 define void @test_sf_vc_fvf_se_e16m8(<32 x half> %vs2, half %rs1, iXLen %vl) {
3518 ; CHECK-LABEL: test_sf_vc_fvf_se_e16m8:
3519 ; CHECK:       # %bb.0: # %entry
3520 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
3521 ; CHECK-NEXT:    sf.vc.fv 1, 31, v8, fa0
3522 ; CHECK-NEXT:    ret
3523 entry:
3524   tail call void @llvm.riscv.sf.vc.fv.se.iXLen.nxv32f16.nxv32f16.f16.iXLen(iXLen 1, iXLen 31, <32 x half> %vs2, half %rs1, iXLen %vl)
3525   ret void
3528 declare void @llvm.riscv.sf.vc.fv.se.iXLen.nxv32f16.nxv32f16.f16.iXLen(iXLen, iXLen, <32 x half>, half, iXLen)
3530 define <32 x half> @test_sf_vc_v_fvf_se_e16m8(<32 x half> %vs2, half %rs1, iXLen %vl) {
3531 ; CHECK-LABEL: test_sf_vc_v_fvf_se_e16m8:
3532 ; CHECK:       # %bb.0: # %entry
3533 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
3534 ; CHECK-NEXT:    sf.vc.v.fv 1, v8, v8, fa0
3535 ; CHECK-NEXT:    ret
3536 entry:
3537   %0 = tail call <32 x half> @llvm.riscv.sf.vc.v.fv.se.nxv32f16.nxv32f16.iXLen.f16(iXLen 1, <32 x half> %vs2, half %rs1, iXLen %vl)
3538   ret <32 x half> %0
3541 declare <32 x half> @llvm.riscv.sf.vc.v.fv.se.nxv32f16.nxv32f16.iXLen.f16(iXLen, <32 x half>, half, iXLen)
3543 define void @test_sf_vc_fvf_se_e32mf2(<1 x float> %vs2, float %rs1, iXLen %vl) {
3544 ; CHECK-LABEL: test_sf_vc_fvf_se_e32mf2:
3545 ; CHECK:       # %bb.0: # %entry
3546 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
3547 ; CHECK-NEXT:    sf.vc.fv 1, 31, v8, fa0
3548 ; CHECK-NEXT:    ret
3549 entry:
3550   tail call void @llvm.riscv.sf.vc.fv.se.iXLen.nxv1f32.nxv1f32.f32.iXLen(iXLen 1, iXLen 31, <1 x float> %vs2, float %rs1, iXLen %vl)
3551   ret void
3554 declare void @llvm.riscv.sf.vc.fv.se.iXLen.nxv1f32.nxv1f32.f32.iXLen(iXLen, iXLen, <1 x float>, float, iXLen)
3556 define <1 x float> @test_sf_vc_v_fvf_se_e32mf2(<1 x float> %vs2, float %rs1, iXLen %vl) {
3557 ; CHECK-LABEL: test_sf_vc_v_fvf_se_e32mf2:
3558 ; CHECK:       # %bb.0: # %entry
3559 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
3560 ; CHECK-NEXT:    sf.vc.v.fv 1, v8, v8, fa0
3561 ; CHECK-NEXT:    ret
3562 entry:
3563   %0 = tail call <1 x float> @llvm.riscv.sf.vc.v.fv.se.nxv1f32.nxv1f32.iXLen.f32(iXLen 1, <1 x float> %vs2, float %rs1, iXLen %vl)
3564   ret <1 x float> %0
3567 declare <1 x float> @llvm.riscv.sf.vc.v.fv.se.nxv1f32.nxv1f32.iXLen.f32(iXLen, <1 x float>, float, iXLen)
3569 define void @test_sf_vc_fvf_se_e32m1(<2 x float> %vs2, float %rs1, iXLen %vl) {
3570 ; CHECK-LABEL: test_sf_vc_fvf_se_e32m1:
3571 ; CHECK:       # %bb.0: # %entry
3572 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
3573 ; CHECK-NEXT:    sf.vc.fv 1, 31, v8, fa0
3574 ; CHECK-NEXT:    ret
3575 entry:
3576   tail call void @llvm.riscv.sf.vc.fv.se.iXLen.nxv2f32.nxv2f32.f32.iXLen(iXLen 1, iXLen 31, <2 x float> %vs2, float %rs1, iXLen %vl)
3577   ret void
3580 declare void @llvm.riscv.sf.vc.fv.se.iXLen.nxv2f32.nxv2f32.f32.iXLen(iXLen, iXLen, <2 x float>, float, iXLen)
3582 define <2 x float> @test_sf_vc_v_fvf_se_e32m1(<2 x float> %vs2, float %rs1, iXLen %vl) {
3583 ; CHECK-LABEL: test_sf_vc_v_fvf_se_e32m1:
3584 ; CHECK:       # %bb.0: # %entry
3585 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
3586 ; CHECK-NEXT:    sf.vc.v.fv 1, v8, v8, fa0
3587 ; CHECK-NEXT:    ret
3588 entry:
3589   %0 = tail call <2 x float> @llvm.riscv.sf.vc.v.fv.se.nxv2f32.nxv2f32.iXLen.f32(iXLen 1, <2 x float> %vs2, float %rs1, iXLen %vl)
3590   ret <2 x float> %0
3593 declare <2 x float> @llvm.riscv.sf.vc.v.fv.se.nxv2f32.nxv2f32.iXLen.f32(iXLen, <2 x float>, float, iXLen)
3595 define void @test_sf_vc_fvf_se_e32m2(<4 x float> %vs2, float %rs1, iXLen %vl) {
3596 ; CHECK-LABEL: test_sf_vc_fvf_se_e32m2:
3597 ; CHECK:       # %bb.0: # %entry
3598 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
3599 ; CHECK-NEXT:    sf.vc.fv 1, 31, v8, fa0
3600 ; CHECK-NEXT:    ret
3601 entry:
3602   tail call void @llvm.riscv.sf.vc.fv.se.iXLen.nxv4f32.nxv4f32.f32.iXLen(iXLen 1, iXLen 31, <4 x float> %vs2, float %rs1, iXLen %vl)
3603   ret void
3606 declare void @llvm.riscv.sf.vc.fv.se.iXLen.nxv4f32.nxv4f32.f32.iXLen(iXLen, iXLen, <4 x float>, float, iXLen)
3608 define <4 x float> @test_sf_vc_v_fvf_se_e32m2(<4 x float> %vs2, float %rs1, iXLen %vl) {
3609 ; CHECK-LABEL: test_sf_vc_v_fvf_se_e32m2:
3610 ; CHECK:       # %bb.0: # %entry
3611 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
3612 ; CHECK-NEXT:    sf.vc.v.fv 1, v8, v8, fa0
3613 ; CHECK-NEXT:    ret
3614 entry:
3615   %0 = tail call <4 x float> @llvm.riscv.sf.vc.v.fv.se.nxv4f32.nxv4f32.iXLen.f32(iXLen 1, <4 x float> %vs2, float %rs1, iXLen %vl)
3616   ret <4 x float> %0
3619 declare <4 x float> @llvm.riscv.sf.vc.v.fv.se.nxv4f32.nxv4f32.iXLen.f32(iXLen, <4 x float>, float, iXLen)
3621 define void @test_sf_vc_fvf_se_e32m4(<8 x float> %vs2, float %rs1, iXLen %vl) {
3622 ; CHECK-LABEL: test_sf_vc_fvf_se_e32m4:
3623 ; CHECK:       # %bb.0: # %entry
3624 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
3625 ; CHECK-NEXT:    sf.vc.fv 1, 31, v8, fa0
3626 ; CHECK-NEXT:    ret
3627 entry:
3628   tail call void @llvm.riscv.sf.vc.fv.se.iXLen.nxv8f32.nxv8f32.f32.iXLen(iXLen 1, iXLen 31, <8 x float> %vs2, float %rs1, iXLen %vl)
3629   ret void
3632 declare void @llvm.riscv.sf.vc.fv.se.iXLen.nxv8f32.nxv8f32.f32.iXLen(iXLen, iXLen, <8 x float>, float, iXLen)
3634 define <8 x float> @test_sf_vc_v_fvf_se_e32m4(<8 x float> %vs2, float %rs1, iXLen %vl) {
3635 ; CHECK-LABEL: test_sf_vc_v_fvf_se_e32m4:
3636 ; CHECK:       # %bb.0: # %entry
3637 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
3638 ; CHECK-NEXT:    sf.vc.v.fv 1, v8, v8, fa0
3639 ; CHECK-NEXT:    ret
3640 entry:
3641   %0 = tail call <8 x float> @llvm.riscv.sf.vc.v.fv.se.nxv8f32.nxv8f32.iXLen.f32(iXLen 1, <8 x float> %vs2, float %rs1, iXLen %vl)
3642   ret <8 x float> %0
3645 declare <8 x float> @llvm.riscv.sf.vc.v.fv.se.nxv8f32.nxv8f32.iXLen.f32(iXLen, <8 x float>, float, iXLen)
3647 define void @test_sf_vc_fvf_se_e32m8(<16 x float> %vs2, float %rs1, iXLen %vl) {
3648 ; CHECK-LABEL: test_sf_vc_fvf_se_e32m8:
3649 ; CHECK:       # %bb.0: # %entry
3650 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
3651 ; CHECK-NEXT:    sf.vc.fv 1, 31, v8, fa0
3652 ; CHECK-NEXT:    ret
3653 entry:
3654   tail call void @llvm.riscv.sf.vc.fv.se.iXLen.nxv16f32.nxv16f32.f32.iXLen(iXLen 1, iXLen 31, <16 x float> %vs2, float %rs1, iXLen %vl)
3655   ret void
3658 declare void @llvm.riscv.sf.vc.fv.se.iXLen.nxv16f32.nxv16f32.f32.iXLen(iXLen, iXLen, <16 x float>, float, iXLen)
3660 define <16 x float> @test_sf_vc_v_fvf_se_e32m8(<16 x float> %vs2, float %rs1, iXLen %vl) {
3661 ; CHECK-LABEL: test_sf_vc_v_fvf_se_e32m8:
3662 ; CHECK:       # %bb.0: # %entry
3663 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
3664 ; CHECK-NEXT:    sf.vc.v.fv 1, v8, v8, fa0
3665 ; CHECK-NEXT:    ret
3666 entry:
3667   %0 = tail call <16 x float> @llvm.riscv.sf.vc.v.fv.se.nxv16f32.nxv16f32.iXLen.f32(iXLen 1, <16 x float> %vs2, float %rs1, iXLen %vl)
3668   ret <16 x float> %0
3671 declare <16 x float> @llvm.riscv.sf.vc.v.fv.se.nxv16f32.nxv16f32.iXLen.f32(iXLen, <16 x float>, float, iXLen)