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 6 7define void @test_sf_vc_x_se_e8mf8(i8 zeroext %rs1, iXLen %vl) { 8; CHECK-LABEL: test_sf_vc_x_se_e8mf8: 9; CHECK: # %bb.0: # %entry 10; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma 11; CHECK-NEXT: sf.vc.x 3, 31, 31, a0 12; CHECK-NEXT: ret 13entry: 14 tail call void @llvm.riscv.sf.vc.x.se.e8mf8.iXLen.i8.iXLen(iXLen 3, iXLen 31, iXLen 31, i8 %rs1, iXLen 8, iXLen 5, iXLen %vl) 15 ret void 16} 17 18declare void @llvm.riscv.sf.vc.x.se.e8mf8.iXLen.i8.iXLen(iXLen, iXLen, iXLen, i8, iXLen, iXLen, iXLen) 19 20define void @test_sf_vc_x_se_e8mf4(i8 zeroext %rs1, iXLen %vl) { 21; CHECK-LABEL: test_sf_vc_x_se_e8mf4: 22; CHECK: # %bb.0: # %entry 23; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma 24; CHECK-NEXT: sf.vc.x 3, 31, 31, a0 25; CHECK-NEXT: ret 26entry: 27 tail call void @llvm.riscv.sf.vc.x.se.e8mf4.iXLen.i8.iXLen(iXLen 3, iXLen 31, iXLen 31, i8 %rs1, iXLen 8, iXLen 6, iXLen %vl) 28 ret void 29} 30 31declare void @llvm.riscv.sf.vc.x.se.e8mf4.iXLen.i8.iXLen(iXLen, iXLen, iXLen, i8, iXLen, iXLen, iXLen) 32 33define void @test_sf_vc_x_se_e8mf2(i8 zeroext %rs1, iXLen %vl) { 34; CHECK-LABEL: test_sf_vc_x_se_e8mf2: 35; CHECK: # %bb.0: # %entry 36; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma 37; CHECK-NEXT: sf.vc.x 3, 31, 31, a0 38; CHECK-NEXT: ret 39entry: 40 tail call void @llvm.riscv.sf.vc.x.se.e8mf2.iXLen.i8.iXLen(iXLen 3, iXLen 31, iXLen 31, i8 %rs1, iXLen 8, iXLen 7, iXLen %vl) 41 ret void 42} 43 44declare void @llvm.riscv.sf.vc.x.se.e8mf2.iXLen.i8.iXLen(iXLen, iXLen, iXLen, i8, iXLen, iXLen, iXLen) 45 46define void @test_sf_vc_x_se_e8m1(i8 zeroext %rs1, iXLen %vl) { 47; CHECK-LABEL: test_sf_vc_x_se_e8m1: 48; CHECK: # %bb.0: # %entry 49; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma 50; CHECK-NEXT: sf.vc.x 3, 31, 31, a0 51; CHECK-NEXT: ret 52entry: 53 tail call void @llvm.riscv.sf.vc.x.se.e8m1.iXLen.i8.iXLen(iXLen 3, iXLen 31, iXLen 31, i8 %rs1, iXLen 8, iXLen 0, iXLen %vl) 54 ret void 55} 56 57declare void @llvm.riscv.sf.vc.x.se.e8m1.iXLen.i8.iXLen(iXLen, iXLen, iXLen, i8, iXLen, iXLen, iXLen) 58 59define void @test_sf_vc_x_se_e8m2(i8 zeroext %rs1, iXLen %vl) { 60; CHECK-LABEL: test_sf_vc_x_se_e8m2: 61; CHECK: # %bb.0: # %entry 62; CHECK-NEXT: vsetvli zero, a1, e8, m2, ta, ma 63; CHECK-NEXT: sf.vc.x 3, 31, 31, a0 64; CHECK-NEXT: ret 65entry: 66 tail call void @llvm.riscv.sf.vc.x.se.e8m2.iXLen.i8.iXLen(iXLen 3, iXLen 31, iXLen 31, i8 %rs1, iXLen 8, iXLen 1, iXLen %vl) 67 ret void 68} 69 70declare void @llvm.riscv.sf.vc.x.se.e8m2.iXLen.i8.iXLen(iXLen, iXLen, iXLen, i8, iXLen, iXLen, iXLen) 71 72define void @test_sf_vc_x_se_e8m4(i8 zeroext %rs1, iXLen %vl) { 73; CHECK-LABEL: test_sf_vc_x_se_e8m4: 74; CHECK: # %bb.0: # %entry 75; CHECK-NEXT: vsetvli zero, a1, e8, m4, ta, ma 76; CHECK-NEXT: sf.vc.x 3, 31, 31, a0 77; CHECK-NEXT: ret 78entry: 79 tail call void @llvm.riscv.sf.vc.x.se.e8m4.iXLen.i8.iXLen(iXLen 3, iXLen 31, iXLen 31, i8 %rs1, iXLen 8, iXLen 2, iXLen %vl) 80 ret void 81} 82 83declare void @llvm.riscv.sf.vc.x.se.e8m4.iXLen.i8.iXLen(iXLen, iXLen, iXLen, i8, iXLen, iXLen, iXLen) 84 85define void @test_sf_vc_x_se_e8m8(i8 zeroext %rs1, iXLen %vl) { 86; CHECK-LABEL: test_sf_vc_x_se_e8m8: 87; CHECK: # %bb.0: # %entry 88; CHECK-NEXT: vsetvli zero, a1, e8, m8, ta, ma 89; CHECK-NEXT: sf.vc.x 3, 31, 31, a0 90; CHECK-NEXT: ret 91entry: 92 tail call void @llvm.riscv.sf.vc.x.se.e8m8.iXLen.i8.iXLen(iXLen 3, iXLen 31, iXLen 31, i8 %rs1, iXLen 8, iXLen 3, iXLen %vl) 93 ret void 94} 95 96declare void @llvm.riscv.sf.vc.x.se.e8m8.iXLen.i8.iXLen(iXLen, iXLen, iXLen, i8, iXLen, iXLen, iXLen) 97 98define void @test_sf_vc_x_se_e16mf4(i16 zeroext %rs1, iXLen %vl) { 99; CHECK-LABEL: test_sf_vc_x_se_e16mf4: 100; CHECK: # %bb.0: # %entry 101; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 102; CHECK-NEXT: sf.vc.x 3, 31, 31, a0 103; CHECK-NEXT: ret 104entry: 105 tail call void @llvm.riscv.sf.vc.x.se.e16mf4.iXLen.i16.iXLen(iXLen 3, iXLen 31, iXLen 31, i16 %rs1, iXLen 16, iXLen 6, iXLen %vl) 106 ret void 107} 108 109declare void @llvm.riscv.sf.vc.x.se.e16mf4.iXLen.i16.iXLen(iXLen, iXLen, iXLen, i16, iXLen, iXLen, iXLen) 110 111define void @test_sf_vc_x_se_e16mf2(i16 zeroext %rs1, iXLen %vl) { 112; CHECK-LABEL: test_sf_vc_x_se_e16mf2: 113; CHECK: # %bb.0: # %entry 114; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 115; CHECK-NEXT: sf.vc.x 3, 31, 31, a0 116; CHECK-NEXT: ret 117entry: 118 tail call void @llvm.riscv.sf.vc.x.se.e16mf2.iXLen.i16.iXLen(iXLen 3, iXLen 31, iXLen 31, i16 %rs1, iXLen 16, iXLen 7, iXLen %vl) 119 ret void 120} 121 122declare void @llvm.riscv.sf.vc.x.se.e16mf2.iXLen.i16.iXLen(iXLen, iXLen, iXLen, i16, iXLen, iXLen, iXLen) 123 124define void @test_sf_vc_x_se_e16m1(i16 zeroext %rs1, iXLen %vl) { 125; CHECK-LABEL: test_sf_vc_x_se_e16m1: 126; CHECK: # %bb.0: # %entry 127; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 128; CHECK-NEXT: sf.vc.x 3, 31, 31, a0 129; CHECK-NEXT: ret 130entry: 131 tail call void @llvm.riscv.sf.vc.x.se.e16m1.iXLen.i16.iXLen(iXLen 3, iXLen 31, iXLen 31, i16 %rs1, iXLen 16, iXLen 0, iXLen %vl) 132 ret void 133} 134 135declare void @llvm.riscv.sf.vc.x.se.e16m1.iXLen.i16.iXLen(iXLen, iXLen, iXLen, i16, iXLen, iXLen, iXLen) 136 137define void @test_sf_vc_x_se_e16m2(i16 zeroext %rs1, iXLen %vl) { 138; CHECK-LABEL: test_sf_vc_x_se_e16m2: 139; CHECK: # %bb.0: # %entry 140; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma 141; CHECK-NEXT: sf.vc.x 3, 31, 31, a0 142; CHECK-NEXT: ret 143entry: 144 tail call void @llvm.riscv.sf.vc.x.se.e16m2.iXLen.i16.iXLen(iXLen 3, iXLen 31, iXLen 31, i16 %rs1, iXLen 16, iXLen 1, iXLen %vl) 145 ret void 146} 147 148declare void @llvm.riscv.sf.vc.x.se.e16m2.iXLen.i16.iXLen(iXLen, iXLen, iXLen, i16, iXLen, iXLen, iXLen) 149 150define void @test_sf_vc_x_se_e16m4(i16 zeroext %rs1, iXLen %vl) { 151; CHECK-LABEL: test_sf_vc_x_se_e16m4: 152; CHECK: # %bb.0: # %entry 153; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma 154; CHECK-NEXT: sf.vc.x 3, 31, 31, a0 155; CHECK-NEXT: ret 156entry: 157 tail call void @llvm.riscv.sf.vc.x.se.e16m4.iXLen.i16.iXLen(iXLen 3, iXLen 31, iXLen 31, i16 %rs1, iXLen 16, iXLen 2, iXLen %vl) 158 ret void 159} 160 161declare void @llvm.riscv.sf.vc.x.se.e16m4.iXLen.i16.iXLen(iXLen, iXLen, iXLen, i16, iXLen, iXLen, iXLen) 162 163define void @test_sf_vc_x_se_e16m8(i16 zeroext %rs1, iXLen %vl) { 164; CHECK-LABEL: test_sf_vc_x_se_e16m8: 165; CHECK: # %bb.0: # %entry 166; CHECK-NEXT: vsetvli zero, a1, e16, m8, ta, ma 167; CHECK-NEXT: sf.vc.x 3, 31, 31, a0 168; CHECK-NEXT: ret 169entry: 170 tail call void @llvm.riscv.sf.vc.x.se.e16m8.iXLen.i16.iXLen(iXLen 3, iXLen 31, iXLen 31, i16 %rs1, iXLen 16, iXLen 3, iXLen %vl) 171 ret void 172} 173 174declare void @llvm.riscv.sf.vc.x.se.e16m8.iXLen.i16.iXLen(iXLen, iXLen, iXLen, i16, iXLen, iXLen, iXLen) 175 176define void @test_sf_vc_x_se_e32mf2(i32 signext %rs1, iXLen %vl) { 177; CHECK-LABEL: test_sf_vc_x_se_e32mf2: 178; CHECK: # %bb.0: # %entry 179; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 180; CHECK-NEXT: sf.vc.x 3, 31, 31, a0 181; CHECK-NEXT: ret 182entry: 183 tail call void @llvm.riscv.sf.vc.x.se.e32mf2.iXLen.i32.iXLen(iXLen 3, iXLen 31, iXLen 31, i32 %rs1, iXLen 32, iXLen 7, iXLen %vl) 184 ret void 185} 186 187declare void @llvm.riscv.sf.vc.x.se.e32mf2.iXLen.i32.iXLen(iXLen, iXLen, iXLen, i32, iXLen, iXLen, iXLen) 188 189define void @test_sf_vc_x_se_e32m1(i32 signext %rs1, iXLen %vl) { 190; CHECK-LABEL: test_sf_vc_x_se_e32m1: 191; CHECK: # %bb.0: # %entry 192; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 193; CHECK-NEXT: sf.vc.x 3, 31, 31, a0 194; CHECK-NEXT: ret 195entry: 196 tail call void @llvm.riscv.sf.vc.x.se.e32m1.iXLen.i32.iXLen(iXLen 3, iXLen 31, iXLen 31, i32 %rs1, iXLen 32, iXLen 0, iXLen %vl) 197 ret void 198} 199 200declare void @llvm.riscv.sf.vc.x.se.e32m1.iXLen.i32.iXLen(iXLen, iXLen, iXLen, i32, iXLen, iXLen, iXLen) 201 202define void @test_sf_vc_x_se_e32m2(i32 signext %rs1, iXLen %vl) { 203; CHECK-LABEL: test_sf_vc_x_se_e32m2: 204; CHECK: # %bb.0: # %entry 205; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma 206; CHECK-NEXT: sf.vc.x 3, 31, 31, a0 207; CHECK-NEXT: ret 208entry: 209 tail call void @llvm.riscv.sf.vc.x.se.e32m2.iXLen.i32.iXLen(iXLen 3, iXLen 31, iXLen 31, i32 %rs1, iXLen 32, iXLen 1, iXLen %vl) 210 ret void 211} 212 213declare void @llvm.riscv.sf.vc.x.se.e32m2.iXLen.i32.iXLen(iXLen, iXLen, iXLen, i32, iXLen, iXLen, iXLen) 214 215define void @test_sf_vc_x_se_e32m4(i32 signext %rs1, iXLen %vl) { 216; CHECK-LABEL: test_sf_vc_x_se_e32m4: 217; CHECK: # %bb.0: # %entry 218; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma 219; CHECK-NEXT: sf.vc.x 3, 31, 31, a0 220; CHECK-NEXT: ret 221entry: 222 tail call void @llvm.riscv.sf.vc.x.se.e32m4.iXLen.i32.iXLen(iXLen 3, iXLen 31, iXLen 31, i32 %rs1, iXLen 32, iXLen 2, iXLen %vl) 223 ret void 224} 225 226declare void @llvm.riscv.sf.vc.x.se.e32m4.iXLen.i32.iXLen(iXLen, iXLen, iXLen, i32, iXLen, iXLen, iXLen) 227 228define void @test_sf_vc_x_se_e32m8(i32 signext %rs1, iXLen %vl) { 229; CHECK-LABEL: test_sf_vc_x_se_e32m8: 230; CHECK: # %bb.0: # %entry 231; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, ma 232; CHECK-NEXT: sf.vc.x 3, 31, 31, a0 233; CHECK-NEXT: ret 234entry: 235 tail call void @llvm.riscv.sf.vc.x.se.e32m8.iXLen.i32.iXLen(iXLen 3, iXLen 31, iXLen 31, i32 %rs1, iXLen 32, iXLen 3, iXLen %vl) 236 ret void 237} 238 239declare void @llvm.riscv.sf.vc.x.se.e32m8.iXLen.i32.iXLen(iXLen, iXLen, iXLen, i32, iXLen, iXLen, iXLen) 240 241define <1 x i8> @test_sf_vc_v_x_se_e8mf8(i8 zeroext %rs1, iXLen %vl) { 242; CHECK-LABEL: test_sf_vc_v_x_se_e8mf8: 243; CHECK: # %bb.0: # %entry 244; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma 245; CHECK-NEXT: sf.vc.v.x 3, 31, v8, a0 246; CHECK-NEXT: ret 247entry: 248 %0 = tail call <1 x i8> @llvm.riscv.sf.vc.v.x.se.nxv1i8.iXLen.i8.iXLen(iXLen 3, iXLen 31, i8 %rs1, iXLen %vl) 249 ret <1 x i8> %0 250} 251 252declare <1 x i8> @llvm.riscv.sf.vc.v.x.se.nxv1i8.iXLen.i8.iXLen(iXLen, iXLen, i8, iXLen) 253 254define <2 x i8> @test_sf_vc_v_x_se_e8mf4(i8 zeroext %rs1, iXLen %vl) { 255; CHECK-LABEL: test_sf_vc_v_x_se_e8mf4: 256; CHECK: # %bb.0: # %entry 257; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma 258; CHECK-NEXT: sf.vc.v.x 3, 31, v8, a0 259; CHECK-NEXT: ret 260entry: 261 %0 = tail call <2 x i8> @llvm.riscv.sf.vc.v.x.se.nxv2i8.iXLen.i8.iXLen(iXLen 3, iXLen 31, i8 %rs1, iXLen %vl) 262 ret <2 x i8> %0 263} 264 265declare <2 x i8> @llvm.riscv.sf.vc.v.x.se.nxv2i8.iXLen.i8.iXLen(iXLen, iXLen, i8, iXLen) 266 267define <4 x i8> @test_sf_vc_v_x_se_e8mf2(i8 zeroext %rs1, iXLen %vl) { 268; CHECK-LABEL: test_sf_vc_v_x_se_e8mf2: 269; CHECK: # %bb.0: # %entry 270; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma 271; CHECK-NEXT: sf.vc.v.x 3, 31, v8, a0 272; CHECK-NEXT: ret 273entry: 274 %0 = tail call <4 x i8> @llvm.riscv.sf.vc.v.x.se.nxv4i8.iXLen.i8.iXLen(iXLen 3, iXLen 31, i8 %rs1, iXLen %vl) 275 ret <4 x i8> %0 276} 277 278declare <4 x i8> @llvm.riscv.sf.vc.v.x.se.nxv4i8.iXLen.i8.iXLen(iXLen, iXLen, i8, iXLen) 279 280define <8 x i8> @test_sf_vc_v_x_se_e8m1(i8 zeroext %rs1, iXLen %vl) { 281; CHECK-LABEL: test_sf_vc_v_x_se_e8m1: 282; CHECK: # %bb.0: # %entry 283; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma 284; CHECK-NEXT: sf.vc.v.x 3, 31, v8, a0 285; CHECK-NEXT: ret 286entry: 287 %0 = tail call <8 x i8> @llvm.riscv.sf.vc.v.x.se.nxv8i8.iXLen.i8.iXLen(iXLen 3, iXLen 31, i8 %rs1, iXLen %vl) 288 ret <8 x i8> %0 289} 290 291declare <8 x i8> @llvm.riscv.sf.vc.v.x.se.nxv8i8.iXLen.i8.iXLen(iXLen, iXLen, i8, iXLen) 292 293define <16 x i8> @test_sf_vc_v_x_se_e8m2(i8 zeroext %rs1, iXLen %vl) { 294; CHECK-LABEL: test_sf_vc_v_x_se_e8m2: 295; CHECK: # %bb.0: # %entry 296; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma 297; CHECK-NEXT: sf.vc.v.x 3, 31, v8, a0 298; CHECK-NEXT: ret 299entry: 300 %0 = tail call <16 x i8> @llvm.riscv.sf.vc.v.x.se.nxv16i8.iXLen.i8.iXLen(iXLen 3, iXLen 31, i8 %rs1, iXLen %vl) 301 ret <16 x i8> %0 302} 303 304declare <16 x i8> @llvm.riscv.sf.vc.v.x.se.nxv16i8.iXLen.i8.iXLen(iXLen, iXLen, i8, iXLen) 305 306define <32 x i8> @test_sf_vc_v_x_se_e8m4(i8 zeroext %rs1, iXLen %vl) { 307; CHECK-LABEL: test_sf_vc_v_x_se_e8m4: 308; CHECK: # %bb.0: # %entry 309; CHECK-NEXT: vsetvli zero, a1, e8, m2, ta, ma 310; CHECK-NEXT: sf.vc.v.x 3, 31, v8, a0 311; CHECK-NEXT: ret 312entry: 313 %0 = tail call <32 x i8> @llvm.riscv.sf.vc.v.x.se.nxv32i8.iXLen.i8.iXLen(iXLen 3, iXLen 31, i8 %rs1, iXLen %vl) 314 ret <32 x i8> %0 315} 316 317declare <32 x i8> @llvm.riscv.sf.vc.v.x.se.nxv32i8.iXLen.i8.iXLen(iXLen, iXLen, i8, iXLen) 318 319define <64 x i8> @test_sf_vc_v_x_se_e8m8(i8 zeroext %rs1, iXLen %vl) { 320; CHECK-LABEL: test_sf_vc_v_x_se_e8m8: 321; CHECK: # %bb.0: # %entry 322; CHECK-NEXT: vsetvli zero, a1, e8, m4, ta, ma 323; CHECK-NEXT: sf.vc.v.x 3, 31, v8, a0 324; CHECK-NEXT: ret 325entry: 326 %0 = tail call <64 x i8> @llvm.riscv.sf.vc.v.x.se.nxv64i8.iXLen.i8.iXLen(iXLen 3, iXLen 31, i8 %rs1, iXLen %vl) 327 ret <64 x i8> %0 328} 329 330declare <64 x i8> @llvm.riscv.sf.vc.v.x.se.nxv64i8.iXLen.i8.iXLen(iXLen, iXLen, i8, iXLen) 331 332define <1 x i16> @test_sf_vc_v_x_se_e16mf4(i16 zeroext %rs1, iXLen %vl) { 333; CHECK-LABEL: test_sf_vc_v_x_se_e16mf4: 334; CHECK: # %bb.0: # %entry 335; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 336; CHECK-NEXT: sf.vc.v.x 3, 31, v8, a0 337; CHECK-NEXT: ret 338entry: 339 %0 = tail call <1 x i16> @llvm.riscv.sf.vc.v.x.se.nxv1i16.iXLen.i16.iXLen(iXLen 3, iXLen 31, i16 %rs1, iXLen %vl) 340 ret <1 x i16> %0 341} 342 343declare <1 x i16> @llvm.riscv.sf.vc.v.x.se.nxv1i16.iXLen.i16.iXLen(iXLen, iXLen, i16, iXLen) 344 345define <2 x i16> @test_sf_vc_v_x_se_e16mf2(i16 zeroext %rs1, iXLen %vl) { 346; CHECK-LABEL: test_sf_vc_v_x_se_e16mf2: 347; CHECK: # %bb.0: # %entry 348; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 349; CHECK-NEXT: sf.vc.v.x 3, 31, v8, a0 350; CHECK-NEXT: ret 351entry: 352 %0 = tail call <2 x i16> @llvm.riscv.sf.vc.v.x.se.nxv2i16.iXLen.i16.iXLen(iXLen 3, iXLen 31, i16 %rs1, iXLen %vl) 353 ret <2 x i16> %0 354} 355 356declare <2 x i16> @llvm.riscv.sf.vc.v.x.se.nxv2i16.iXLen.i16.iXLen(iXLen, iXLen, i16, iXLen) 357 358define <4 x i16> @test_sf_vc_v_x_se_e16m1(i16 zeroext %rs1, iXLen %vl) { 359; CHECK-LABEL: test_sf_vc_v_x_se_e16m1: 360; CHECK: # %bb.0: # %entry 361; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 362; CHECK-NEXT: sf.vc.v.x 3, 31, v8, a0 363; CHECK-NEXT: ret 364entry: 365 %0 = tail call <4 x i16> @llvm.riscv.sf.vc.v.x.se.nxv4i16.iXLen.i16.iXLen(iXLen 3, iXLen 31, i16 %rs1, iXLen %vl) 366 ret <4 x i16> %0 367} 368 369declare <4 x i16> @llvm.riscv.sf.vc.v.x.se.nxv4i16.iXLen.i16.iXLen(iXLen, iXLen, i16, iXLen) 370 371define <8 x i16> @test_sf_vc_v_x_se_e16m2(i16 zeroext %rs1, iXLen %vl) { 372; CHECK-LABEL: test_sf_vc_v_x_se_e16m2: 373; CHECK: # %bb.0: # %entry 374; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 375; CHECK-NEXT: sf.vc.v.x 3, 31, v8, a0 376; CHECK-NEXT: ret 377entry: 378 %0 = tail call <8 x i16> @llvm.riscv.sf.vc.v.x.se.nxv8i16.iXLen.i16.iXLen(iXLen 3, iXLen 31, i16 %rs1, iXLen %vl) 379 ret <8 x i16> %0 380} 381 382declare <8 x i16> @llvm.riscv.sf.vc.v.x.se.nxv8i16.iXLen.i16.iXLen(iXLen, iXLen, i16, iXLen) 383 384define <16 x i16> @test_sf_vc_v_x_se_e16m4(i16 zeroext %rs1, iXLen %vl) { 385; CHECK-LABEL: test_sf_vc_v_x_se_e16m4: 386; CHECK: # %bb.0: # %entry 387; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma 388; CHECK-NEXT: sf.vc.v.x 3, 31, v8, a0 389; CHECK-NEXT: ret 390entry: 391 %0 = tail call <16 x i16> @llvm.riscv.sf.vc.v.x.se.nxv16i16.iXLen.i16.iXLen(iXLen 3, iXLen 31, i16 %rs1, iXLen %vl) 392 ret <16 x i16> %0 393} 394 395declare <16 x i16> @llvm.riscv.sf.vc.v.x.se.nxv16i16.iXLen.i16.iXLen(iXLen, iXLen, i16, iXLen) 396 397define <32 x i16> @test_sf_vc_v_x_se_e16m8(i16 zeroext %rs1, iXLen %vl) { 398; CHECK-LABEL: test_sf_vc_v_x_se_e16m8: 399; CHECK: # %bb.0: # %entry 400; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma 401; CHECK-NEXT: sf.vc.v.x 3, 31, v8, a0 402; CHECK-NEXT: ret 403entry: 404 %0 = tail call <32 x i16> @llvm.riscv.sf.vc.v.x.se.nxv32i16.iXLen.i16.iXLen(iXLen 3, iXLen 31, i16 %rs1, iXLen %vl) 405 ret <32 x i16> %0 406} 407 408declare <32 x i16> @llvm.riscv.sf.vc.v.x.se.nxv32i16.iXLen.i16.iXLen(iXLen, iXLen, i16, iXLen) 409 410define <1 x i32> @test_sf_vc_v_x_se_e32mf2(i32 signext %rs1, iXLen %vl) { 411; CHECK-LABEL: test_sf_vc_v_x_se_e32mf2: 412; CHECK: # %bb.0: # %entry 413; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 414; CHECK-NEXT: sf.vc.v.x 3, 31, v8, a0 415; CHECK-NEXT: ret 416entry: 417 %0 = tail call <1 x i32> @llvm.riscv.sf.vc.v.x.se.nxv1i32.iXLen.i32.iXLen(iXLen 3, iXLen 31, i32 %rs1, iXLen %vl) 418 ret <1 x i32> %0 419} 420 421declare <1 x i32> @llvm.riscv.sf.vc.v.x.se.nxv1i32.iXLen.i32.iXLen(iXLen, iXLen, i32, iXLen) 422 423define <2 x i32> @test_sf_vc_v_x_se_e32m1(i32 signext %rs1, iXLen %vl) { 424; CHECK-LABEL: test_sf_vc_v_x_se_e32m1: 425; CHECK: # %bb.0: # %entry 426; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 427; CHECK-NEXT: sf.vc.v.x 3, 31, v8, a0 428; CHECK-NEXT: ret 429entry: 430 %0 = tail call <2 x i32> @llvm.riscv.sf.vc.v.x.se.nxv2i32.iXLen.i32.iXLen(iXLen 3, iXLen 31, i32 %rs1, iXLen %vl) 431 ret <2 x i32> %0 432} 433 434declare <2 x i32> @llvm.riscv.sf.vc.v.x.se.nxv2i32.iXLen.i32.iXLen(iXLen, iXLen, i32, iXLen) 435 436define <4 x i32> @test_sf_vc_v_x_se_e32m2(i32 signext %rs1, iXLen %vl) { 437; CHECK-LABEL: test_sf_vc_v_x_se_e32m2: 438; CHECK: # %bb.0: # %entry 439; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 440; CHECK-NEXT: sf.vc.v.x 3, 31, v8, a0 441; CHECK-NEXT: ret 442entry: 443 %0 = tail call <4 x i32> @llvm.riscv.sf.vc.v.x.se.nxv4i32.iXLen.i32.iXLen(iXLen 3, iXLen 31, i32 %rs1, iXLen %vl) 444 ret <4 x i32> %0 445} 446 447declare <4 x i32> @llvm.riscv.sf.vc.v.x.se.nxv4i32.iXLen.i32.iXLen(iXLen, iXLen, i32, iXLen) 448 449define <8 x i32> @test_sf_vc_v_x_se_e32m4(i32 signext %rs1, iXLen %vl) { 450; CHECK-LABEL: test_sf_vc_v_x_se_e32m4: 451; CHECK: # %bb.0: # %entry 452; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma 453; CHECK-NEXT: sf.vc.v.x 3, 31, v8, a0 454; CHECK-NEXT: ret 455entry: 456 %0 = tail call <8 x i32> @llvm.riscv.sf.vc.v.x.se.nxv8i32.iXLen.i32.iXLen(iXLen 3, iXLen 31, i32 %rs1, iXLen %vl) 457 ret <8 x i32> %0 458} 459 460declare <8 x i32> @llvm.riscv.sf.vc.v.x.se.nxv8i32.iXLen.i32.iXLen(iXLen, iXLen, i32, iXLen) 461 462define <16 x i32> @test_sf_vc_v_x_se_e32m8(i32 signext %rs1, iXLen %vl) { 463; CHECK-LABEL: test_sf_vc_v_x_se_e32m8: 464; CHECK: # %bb.0: # %entry 465; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma 466; CHECK-NEXT: sf.vc.v.x 3, 31, v8, a0 467; CHECK-NEXT: ret 468entry: 469 %0 = tail call <16 x i32> @llvm.riscv.sf.vc.v.x.se.nxv16i32.iXLen.i32.iXLen(iXLen 3, iXLen 31, i32 %rs1, iXLen %vl) 470 ret <16 x i32> %0 471} 472 473declare <16 x i32> @llvm.riscv.sf.vc.v.x.se.nxv16i32.iXLen.i32.iXLen(iXLen, iXLen, i32, iXLen) 474 475define <1 x i8> @test_sf_vc_v_x_e8mf8(i8 zeroext %rs1, iXLen %vl) { 476; CHECK-LABEL: test_sf_vc_v_x_e8mf8: 477; CHECK: # %bb.0: # %entry 478; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma 479; CHECK-NEXT: sf.vc.v.x 3, 31, v8, a0 480; CHECK-NEXT: ret 481entry: 482 %0 = tail call <1 x i8> @llvm.riscv.sf.vc.v.x.nxv1i8.iXLen.i8.iXLen(iXLen 3, iXLen 31, i8 %rs1, iXLen %vl) 483 ret <1 x i8> %0 484} 485 486declare <1 x i8> @llvm.riscv.sf.vc.v.x.nxv1i8.iXLen.i8.iXLen(iXLen, iXLen, i8, iXLen) 487 488define <2 x i8> @test_sf_vc_v_x_e8mf4(i8 zeroext %rs1, iXLen %vl) { 489; CHECK-LABEL: test_sf_vc_v_x_e8mf4: 490; CHECK: # %bb.0: # %entry 491; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma 492; CHECK-NEXT: sf.vc.v.x 3, 31, v8, a0 493; CHECK-NEXT: ret 494entry: 495 %0 = tail call <2 x i8> @llvm.riscv.sf.vc.v.x.nxv2i8.iXLen.i8.iXLen(iXLen 3, iXLen 31, i8 %rs1, iXLen %vl) 496 ret <2 x i8> %0 497} 498 499declare <2 x i8> @llvm.riscv.sf.vc.v.x.nxv2i8.iXLen.i8.iXLen(iXLen, iXLen, i8, iXLen) 500 501define <4 x i8> @test_sf_vc_v_x_e8mf2(i8 zeroext %rs1, iXLen %vl) { 502; CHECK-LABEL: test_sf_vc_v_x_e8mf2: 503; CHECK: # %bb.0: # %entry 504; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma 505; CHECK-NEXT: sf.vc.v.x 3, 31, v8, a0 506; CHECK-NEXT: ret 507entry: 508 %0 = tail call <4 x i8> @llvm.riscv.sf.vc.v.x.nxv4i8.iXLen.i8.iXLen(iXLen 3, iXLen 31, i8 %rs1, iXLen %vl) 509 ret <4 x i8> %0 510} 511 512declare <4 x i8> @llvm.riscv.sf.vc.v.x.nxv4i8.iXLen.i8.iXLen(iXLen, iXLen, i8, iXLen) 513 514define <8 x i8> @test_sf_vc_v_x_e8m1(i8 zeroext %rs1, iXLen %vl) { 515; CHECK-LABEL: test_sf_vc_v_x_e8m1: 516; CHECK: # %bb.0: # %entry 517; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma 518; CHECK-NEXT: sf.vc.v.x 3, 31, v8, a0 519; CHECK-NEXT: ret 520entry: 521 %0 = tail call <8 x i8> @llvm.riscv.sf.vc.v.x.nxv8i8.iXLen.i8.iXLen(iXLen 3, iXLen 31, i8 %rs1, iXLen %vl) 522 ret <8 x i8> %0 523} 524 525declare <8 x i8> @llvm.riscv.sf.vc.v.x.nxv8i8.iXLen.i8.iXLen(iXLen, iXLen, i8, iXLen) 526 527define <16 x i8> @test_sf_vc_v_x_e8m2(i8 zeroext %rs1, iXLen %vl) { 528; CHECK-LABEL: test_sf_vc_v_x_e8m2: 529; CHECK: # %bb.0: # %entry 530; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma 531; CHECK-NEXT: sf.vc.v.x 3, 31, v8, a0 532; CHECK-NEXT: ret 533entry: 534 %0 = tail call <16 x i8> @llvm.riscv.sf.vc.v.x.nxv16i8.iXLen.i8.iXLen(iXLen 3, iXLen 31, i8 %rs1, iXLen %vl) 535 ret <16 x i8> %0 536} 537 538declare <16 x i8> @llvm.riscv.sf.vc.v.x.nxv16i8.iXLen.i8.iXLen(iXLen, iXLen, i8, iXLen) 539 540define <32 x i8> @test_sf_vc_v_x_e8m4(i8 zeroext %rs1, iXLen %vl) { 541; CHECK-LABEL: test_sf_vc_v_x_e8m4: 542; CHECK: # %bb.0: # %entry 543; CHECK-NEXT: vsetvli zero, a1, e8, m2, ta, ma 544; CHECK-NEXT: sf.vc.v.x 3, 31, v8, a0 545; CHECK-NEXT: ret 546entry: 547 %0 = tail call <32 x i8> @llvm.riscv.sf.vc.v.x.nxv32i8.iXLen.i8.iXLen(iXLen 3, iXLen 31, i8 %rs1, iXLen %vl) 548 ret <32 x i8> %0 549} 550 551declare <32 x i8> @llvm.riscv.sf.vc.v.x.nxv32i8.iXLen.i8.iXLen(iXLen, iXLen, i8, iXLen) 552 553define <64 x i8> @test_sf_vc_v_x_e8m8(i8 zeroext %rs1, iXLen %vl) { 554; CHECK-LABEL: test_sf_vc_v_x_e8m8: 555; CHECK: # %bb.0: # %entry 556; CHECK-NEXT: vsetvli zero, a1, e8, m4, ta, ma 557; CHECK-NEXT: sf.vc.v.x 3, 31, v8, a0 558; CHECK-NEXT: ret 559entry: 560 %0 = tail call <64 x i8> @llvm.riscv.sf.vc.v.x.nxv64i8.iXLen.i8.iXLen(iXLen 3, iXLen 31, i8 %rs1, iXLen %vl) 561 ret <64 x i8> %0 562} 563 564declare <64 x i8> @llvm.riscv.sf.vc.v.x.nxv64i8.iXLen.i8.iXLen(iXLen, iXLen, i8, iXLen) 565 566define <1 x i16> @test_sf_vc_v_x_e16mf4(i16 zeroext %rs1, iXLen %vl) { 567; CHECK-LABEL: test_sf_vc_v_x_e16mf4: 568; CHECK: # %bb.0: # %entry 569; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 570; CHECK-NEXT: sf.vc.v.x 3, 31, v8, a0 571; CHECK-NEXT: ret 572entry: 573 %0 = tail call <1 x i16> @llvm.riscv.sf.vc.v.x.nxv1i16.iXLen.i16.iXLen(iXLen 3, iXLen 31, i16 %rs1, iXLen %vl) 574 ret <1 x i16> %0 575} 576 577declare <1 x i16> @llvm.riscv.sf.vc.v.x.nxv1i16.iXLen.i16.iXLen(iXLen, iXLen, i16, iXLen) 578 579define <2 x i16> @test_sf_vc_v_x_e16mf2(i16 zeroext %rs1, iXLen %vl) { 580; CHECK-LABEL: test_sf_vc_v_x_e16mf2: 581; CHECK: # %bb.0: # %entry 582; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 583; CHECK-NEXT: sf.vc.v.x 3, 31, v8, a0 584; CHECK-NEXT: ret 585entry: 586 %0 = tail call <2 x i16> @llvm.riscv.sf.vc.v.x.nxv2i16.iXLen.i16.iXLen(iXLen 3, iXLen 31, i16 %rs1, iXLen %vl) 587 ret <2 x i16> %0 588} 589 590declare <2 x i16> @llvm.riscv.sf.vc.v.x.nxv2i16.iXLen.i16.iXLen(iXLen, iXLen, i16, iXLen) 591 592define <4 x i16> @test_sf_vc_v_x_e16m1(i16 zeroext %rs1, iXLen %vl) { 593; CHECK-LABEL: test_sf_vc_v_x_e16m1: 594; CHECK: # %bb.0: # %entry 595; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 596; CHECK-NEXT: sf.vc.v.x 3, 31, v8, a0 597; CHECK-NEXT: ret 598entry: 599 %0 = tail call <4 x i16> @llvm.riscv.sf.vc.v.x.nxv4i16.iXLen.i16.iXLen(iXLen 3, iXLen 31, i16 %rs1, iXLen %vl) 600 ret <4 x i16> %0 601} 602 603declare <4 x i16> @llvm.riscv.sf.vc.v.x.nxv4i16.iXLen.i16.iXLen(iXLen, iXLen, i16, iXLen) 604 605define <8 x i16> @test_sf_vc_v_x_e16m2(i16 zeroext %rs1, iXLen %vl) { 606; CHECK-LABEL: test_sf_vc_v_x_e16m2: 607; CHECK: # %bb.0: # %entry 608; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 609; CHECK-NEXT: sf.vc.v.x 3, 31, v8, a0 610; CHECK-NEXT: ret 611entry: 612 %0 = tail call <8 x i16> @llvm.riscv.sf.vc.v.x.nxv8i16.iXLen.i16.iXLen(iXLen 3, iXLen 31, i16 %rs1, iXLen %vl) 613 ret <8 x i16> %0 614} 615 616declare <8 x i16> @llvm.riscv.sf.vc.v.x.nxv8i16.iXLen.i16.iXLen(iXLen, iXLen, i16, iXLen) 617 618define <16 x i16> @test_sf_vc_v_x_e16m4(i16 zeroext %rs1, iXLen %vl) { 619; CHECK-LABEL: test_sf_vc_v_x_e16m4: 620; CHECK: # %bb.0: # %entry 621; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma 622; CHECK-NEXT: sf.vc.v.x 3, 31, v8, a0 623; CHECK-NEXT: ret 624entry: 625 %0 = tail call <16 x i16> @llvm.riscv.sf.vc.v.x.nxv16i16.iXLen.i16.iXLen(iXLen 3, iXLen 31, i16 %rs1, iXLen %vl) 626 ret <16 x i16> %0 627} 628 629declare <16 x i16> @llvm.riscv.sf.vc.v.x.nxv16i16.iXLen.i16.iXLen(iXLen, iXLen, i16, iXLen) 630 631define <32 x i16> @test_sf_vc_v_x_e16m8(i16 zeroext %rs1, iXLen %vl) { 632; CHECK-LABEL: test_sf_vc_v_x_e16m8: 633; CHECK: # %bb.0: # %entry 634; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma 635; CHECK-NEXT: sf.vc.v.x 3, 31, v8, a0 636; CHECK-NEXT: ret 637entry: 638 %0 = tail call <32 x i16> @llvm.riscv.sf.vc.v.x.nxv32i16.iXLen.i16.iXLen(iXLen 3, iXLen 31, i16 %rs1, iXLen %vl) 639 ret <32 x i16> %0 640} 641 642declare <32 x i16> @llvm.riscv.sf.vc.v.x.nxv32i16.iXLen.i16.iXLen(iXLen, iXLen, i16, iXLen) 643 644define <1 x i32> @test_sf_vc_v_x_e32mf2(i32 signext %rs1, iXLen %vl) { 645; CHECK-LABEL: test_sf_vc_v_x_e32mf2: 646; CHECK: # %bb.0: # %entry 647; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 648; CHECK-NEXT: sf.vc.v.x 3, 31, v8, a0 649; CHECK-NEXT: ret 650entry: 651 %0 = tail call <1 x i32> @llvm.riscv.sf.vc.v.x.nxv1i32.iXLen.i32.iXLen(iXLen 3, iXLen 31, i32 %rs1, iXLen %vl) 652 ret <1 x i32> %0 653} 654 655declare <1 x i32> @llvm.riscv.sf.vc.v.x.nxv1i32.iXLen.i32.iXLen(iXLen, iXLen, i32, iXLen) 656 657define <2 x i32> @test_sf_vc_v_x_e32m1(i32 signext %rs1, iXLen %vl) { 658; CHECK-LABEL: test_sf_vc_v_x_e32m1: 659; CHECK: # %bb.0: # %entry 660; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 661; CHECK-NEXT: sf.vc.v.x 3, 31, v8, a0 662; CHECK-NEXT: ret 663entry: 664 %0 = tail call <2 x i32> @llvm.riscv.sf.vc.v.x.nxv2i32.iXLen.i32.iXLen(iXLen 3, iXLen 31, i32 %rs1, iXLen %vl) 665 ret <2 x i32> %0 666} 667 668declare <2 x i32> @llvm.riscv.sf.vc.v.x.nxv2i32.iXLen.i32.iXLen(iXLen, iXLen, i32, iXLen) 669 670define <4 x i32> @test_sf_vc_v_x_e32m2(i32 signext %rs1, iXLen %vl) { 671; CHECK-LABEL: test_sf_vc_v_x_e32m2: 672; CHECK: # %bb.0: # %entry 673; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 674; CHECK-NEXT: sf.vc.v.x 3, 31, v8, a0 675; CHECK-NEXT: ret 676entry: 677 %0 = tail call <4 x i32> @llvm.riscv.sf.vc.v.x.nxv4i32.iXLen.i32.iXLen(iXLen 3, iXLen 31, i32 %rs1, iXLen %vl) 678 ret <4 x i32> %0 679} 680 681declare <4 x i32> @llvm.riscv.sf.vc.v.x.nxv4i32.iXLen.i32.iXLen(iXLen, iXLen, i32, iXLen) 682 683define <8 x i32> @test_sf_vc_v_x_e32m4(i32 signext %rs1, iXLen %vl) { 684; CHECK-LABEL: test_sf_vc_v_x_e32m4: 685; CHECK: # %bb.0: # %entry 686; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma 687; CHECK-NEXT: sf.vc.v.x 3, 31, v8, a0 688; CHECK-NEXT: ret 689entry: 690 %0 = tail call <8 x i32> @llvm.riscv.sf.vc.v.x.nxv8i32.iXLen.i32.iXLen(iXLen 3, iXLen 31, i32 %rs1, iXLen %vl) 691 ret <8 x i32> %0 692} 693 694declare <8 x i32> @llvm.riscv.sf.vc.v.x.nxv8i32.iXLen.i32.iXLen(iXLen, iXLen, i32, iXLen) 695 696define <16 x i32> @test_sf_vc_v_x_e32m8(i32 signext %rs1, iXLen %vl) { 697; CHECK-LABEL: test_sf_vc_v_x_e32m8: 698; CHECK: # %bb.0: # %entry 699; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma 700; CHECK-NEXT: sf.vc.v.x 3, 31, v8, a0 701; CHECK-NEXT: ret 702entry: 703 %0 = tail call <16 x i32> @llvm.riscv.sf.vc.v.x.nxv16i32.iXLen.i32.iXLen(iXLen 3, iXLen 31, i32 %rs1, iXLen %vl) 704 ret <16 x i32> %0 705} 706 707declare <16 x i32> @llvm.riscv.sf.vc.v.x.nxv16i32.iXLen.i32.iXLen(iXLen, iXLen, i32, iXLen) 708 709define void @test_sf_vc_i_se_e8mf8(iXLen %vl) { 710; CHECK-LABEL: test_sf_vc_i_se_e8mf8: 711; CHECK: # %bb.0: # %entry 712; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma 713; CHECK-NEXT: sf.vc.i 3, 31, 31, 10 714; CHECK-NEXT: ret 715entry: 716 tail call void @llvm.riscv.sf.vc.i.se.e8mf8.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 31, iXLen 10, iXLen 8, iXLen 5, iXLen %vl) 717 ret void 718} 719 720declare void @llvm.riscv.sf.vc.i.se.e8mf8.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen, iXLen, iXLen, iXLen) 721 722define void @test_sf_vc_i_se_e8mf4(iXLen %vl) { 723; CHECK-LABEL: test_sf_vc_i_se_e8mf4: 724; CHECK: # %bb.0: # %entry 725; CHECK-NEXT: vsetvli zero, a0, e8, mf4, ta, ma 726; CHECK-NEXT: sf.vc.i 3, 31, 31, 10 727; CHECK-NEXT: ret 728entry: 729 tail call void @llvm.riscv.sf.vc.i.se.e8mf4.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 31, iXLen 10, iXLen 8, iXLen 6, iXLen %vl) 730 ret void 731} 732 733declare void @llvm.riscv.sf.vc.i.se.e8mf4.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen, iXLen, iXLen, iXLen) 734 735define void @test_sf_vc_i_se_e8mf2(iXLen %vl) { 736; CHECK-LABEL: test_sf_vc_i_se_e8mf2: 737; CHECK: # %bb.0: # %entry 738; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma 739; CHECK-NEXT: sf.vc.i 3, 31, 31, 10 740; CHECK-NEXT: ret 741entry: 742 tail call void @llvm.riscv.sf.vc.i.se.e8mf2.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 31, iXLen 10, iXLen 8, iXLen 7, iXLen %vl) 743 ret void 744} 745 746declare void @llvm.riscv.sf.vc.i.se.e8mf2.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen, iXLen, iXLen, iXLen) 747 748define void @test_sf_vc_i_se_e8m1(iXLen %vl) { 749; CHECK-LABEL: test_sf_vc_i_se_e8m1: 750; CHECK: # %bb.0: # %entry 751; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma 752; CHECK-NEXT: sf.vc.i 3, 31, 31, 10 753; CHECK-NEXT: ret 754entry: 755 tail call void @llvm.riscv.sf.vc.i.se.e8m1.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 31, iXLen 10, iXLen 8, iXLen 0, iXLen %vl) 756 ret void 757} 758 759declare void @llvm.riscv.sf.vc.i.se.e8m1.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen, iXLen, iXLen, iXLen) 760 761define void @test_sf_vc_i_se_e8m2(iXLen %vl) { 762; CHECK-LABEL: test_sf_vc_i_se_e8m2: 763; CHECK: # %bb.0: # %entry 764; CHECK-NEXT: vsetvli zero, a0, e8, m2, ta, ma 765; CHECK-NEXT: sf.vc.i 3, 31, 31, 10 766; CHECK-NEXT: ret 767entry: 768 tail call void @llvm.riscv.sf.vc.i.se.e8m2.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 31, iXLen 10, iXLen 8, iXLen 1, iXLen %vl) 769 ret void 770} 771 772declare void @llvm.riscv.sf.vc.i.se.e8m2.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen, iXLen, iXLen, iXLen) 773 774define void @test_sf_vc_i_se_e8m4(iXLen %vl) { 775; CHECK-LABEL: test_sf_vc_i_se_e8m4: 776; CHECK: # %bb.0: # %entry 777; CHECK-NEXT: vsetvli zero, a0, e8, m4, ta, ma 778; CHECK-NEXT: sf.vc.i 3, 31, 31, 10 779; CHECK-NEXT: ret 780entry: 781 tail call void @llvm.riscv.sf.vc.i.se.e8m4.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 31, iXLen 10, iXLen 8, iXLen 2, iXLen %vl) 782 ret void 783} 784 785declare void @llvm.riscv.sf.vc.i.se.e8m4.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen, iXLen, iXLen, iXLen) 786 787define void @test_sf_vc_i_se_e8m8(iXLen %vl) { 788; CHECK-LABEL: test_sf_vc_i_se_e8m8: 789; CHECK: # %bb.0: # %entry 790; CHECK-NEXT: vsetvli zero, a0, e8, m8, ta, ma 791; CHECK-NEXT: sf.vc.i 3, 31, 31, 10 792; CHECK-NEXT: ret 793entry: 794 tail call void @llvm.riscv.sf.vc.i.se.e8m8.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 31, iXLen 10, iXLen 8, iXLen 3, iXLen %vl) 795 ret void 796} 797 798declare void @llvm.riscv.sf.vc.i.se.e8m8.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen, iXLen, iXLen, iXLen) 799 800define void @test_sf_vc_i_se_e16mf4(iXLen %vl) { 801; CHECK-LABEL: test_sf_vc_i_se_e16mf4: 802; CHECK: # %bb.0: # %entry 803; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma 804; CHECK-NEXT: sf.vc.i 3, 31, 31, 10 805; CHECK-NEXT: ret 806entry: 807 tail call void @llvm.riscv.sf.vc.i.se.e16mf4.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 31, iXLen 10, iXLen 16, iXLen 6, iXLen %vl) 808 ret void 809} 810 811declare void @llvm.riscv.sf.vc.i.se.e16mf4.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen, iXLen, iXLen, iXLen) 812 813define void @test_sf_vc_i_se_e16mf2(iXLen %vl) { 814; CHECK-LABEL: test_sf_vc_i_se_e16mf2: 815; CHECK: # %bb.0: # %entry 816; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma 817; CHECK-NEXT: sf.vc.i 3, 31, 31, 10 818; CHECK-NEXT: ret 819entry: 820 tail call void @llvm.riscv.sf.vc.i.se.e16mf2.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 31, iXLen 10, iXLen 16, iXLen 7, iXLen %vl) 821 ret void 822} 823 824declare void @llvm.riscv.sf.vc.i.se.e16mf2.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen, iXLen, iXLen, iXLen) 825 826define void @test_sf_vc_i_se_e16m1(iXLen %vl) { 827; CHECK-LABEL: test_sf_vc_i_se_e16m1: 828; CHECK: # %bb.0: # %entry 829; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma 830; CHECK-NEXT: sf.vc.i 3, 31, 31, 10 831; CHECK-NEXT: ret 832entry: 833 tail call void @llvm.riscv.sf.vc.i.se.e16m1.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 31, iXLen 10, iXLen 16, iXLen 0, iXLen %vl) 834 ret void 835} 836 837declare void @llvm.riscv.sf.vc.i.se.e16m1.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen, iXLen, iXLen, iXLen) 838 839define void @test_sf_vc_i_se_e16m2(iXLen %vl) { 840; CHECK-LABEL: test_sf_vc_i_se_e16m2: 841; CHECK: # %bb.0: # %entry 842; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma 843; CHECK-NEXT: sf.vc.i 3, 31, 31, 10 844; CHECK-NEXT: ret 845entry: 846 tail call void @llvm.riscv.sf.vc.i.se.e16m2.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 31, iXLen 10, iXLen 16, iXLen 1, iXLen %vl) 847 ret void 848} 849 850declare void @llvm.riscv.sf.vc.i.se.e16m2.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen, iXLen, iXLen, iXLen) 851 852define void @test_sf_vc_i_se_e16m4(iXLen %vl) { 853; CHECK-LABEL: test_sf_vc_i_se_e16m4: 854; CHECK: # %bb.0: # %entry 855; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma 856; CHECK-NEXT: sf.vc.i 3, 31, 31, 10 857; CHECK-NEXT: ret 858entry: 859 tail call void @llvm.riscv.sf.vc.i.se.e16m4.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 31, iXLen 10, iXLen 16, iXLen 2, iXLen %vl) 860 ret void 861} 862 863declare void @llvm.riscv.sf.vc.i.se.e16m4.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen, iXLen, iXLen, iXLen) 864 865define void @test_sf_vc_i_se_e16m8(iXLen %vl) { 866; CHECK-LABEL: test_sf_vc_i_se_e16m8: 867; CHECK: # %bb.0: # %entry 868; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma 869; CHECK-NEXT: sf.vc.i 3, 31, 31, 10 870; CHECK-NEXT: ret 871entry: 872 tail call void @llvm.riscv.sf.vc.i.se.e16m8.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 31, iXLen 10, iXLen 16, iXLen 3, iXLen %vl) 873 ret void 874} 875 876declare void @llvm.riscv.sf.vc.i.se.e16m8.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen, iXLen, iXLen, iXLen) 877 878define void @test_sf_vc_i_se_e32mf2(iXLen %vl) { 879; CHECK-LABEL: test_sf_vc_i_se_e32mf2: 880; CHECK: # %bb.0: # %entry 881; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma 882; CHECK-NEXT: sf.vc.i 3, 31, 31, 10 883; CHECK-NEXT: ret 884entry: 885 tail call void @llvm.riscv.sf.vc.i.se.e32mf2.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 31, iXLen 10, iXLen 32, iXLen 7, iXLen %vl) 886 ret void 887} 888 889declare void @llvm.riscv.sf.vc.i.se.e32mf2.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen, iXLen, iXLen, iXLen) 890 891define void @test_sf_vc_i_se_e32m1(iXLen %vl) { 892; CHECK-LABEL: test_sf_vc_i_se_e32m1: 893; CHECK: # %bb.0: # %entry 894; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma 895; CHECK-NEXT: sf.vc.i 3, 31, 31, 10 896; CHECK-NEXT: ret 897entry: 898 tail call void @llvm.riscv.sf.vc.i.se.e32m1.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 31, iXLen 10, iXLen 32, iXLen 0, iXLen %vl) 899 ret void 900} 901 902declare void @llvm.riscv.sf.vc.i.se.e32m1.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen, iXLen, iXLen, iXLen) 903 904define void @test_sf_vc_i_se_e32m2(iXLen %vl) { 905; CHECK-LABEL: test_sf_vc_i_se_e32m2: 906; CHECK: # %bb.0: # %entry 907; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma 908; CHECK-NEXT: sf.vc.i 3, 31, 31, 10 909; CHECK-NEXT: ret 910entry: 911 tail call void @llvm.riscv.sf.vc.i.se.e32m2.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 31, iXLen 10, iXLen 32, iXLen 1, iXLen %vl) 912 ret void 913} 914 915declare void @llvm.riscv.sf.vc.i.se.e32m2.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen, iXLen, iXLen, iXLen) 916 917define void @test_sf_vc_i_se_e32m4(iXLen %vl) { 918; CHECK-LABEL: test_sf_vc_i_se_e32m4: 919; CHECK: # %bb.0: # %entry 920; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma 921; CHECK-NEXT: sf.vc.i 3, 31, 31, 10 922; CHECK-NEXT: ret 923entry: 924 tail call void @llvm.riscv.sf.vc.i.se.e32m4.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 31, iXLen 10, iXLen 32, iXLen 2, iXLen %vl) 925 ret void 926} 927 928declare void @llvm.riscv.sf.vc.i.se.e32m4.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen, iXLen, iXLen, iXLen) 929 930define void @test_sf_vc_i_se_e32m8(iXLen %vl) { 931; CHECK-LABEL: test_sf_vc_i_se_e32m8: 932; CHECK: # %bb.0: # %entry 933; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma 934; CHECK-NEXT: sf.vc.i 3, 31, 31, 10 935; CHECK-NEXT: ret 936entry: 937 tail call void @llvm.riscv.sf.vc.i.se.e32m8.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 31, iXLen 10, iXLen 32, iXLen 3, iXLen %vl) 938 ret void 939} 940 941declare void @llvm.riscv.sf.vc.i.se.e32m8.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen, iXLen, iXLen, iXLen) 942 943define void @test_sf_vc_i_se_e64m1(iXLen %vl) { 944; CHECK-LABEL: test_sf_vc_i_se_e64m1: 945; CHECK: # %bb.0: # %entry 946; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma 947; CHECK-NEXT: sf.vc.i 3, 31, 31, 10 948; CHECK-NEXT: ret 949entry: 950 tail call void @llvm.riscv.sf.vc.i.se.e64m1.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 31, iXLen 10, iXLen 64, iXLen 0, iXLen %vl) 951 ret void 952} 953 954declare void @llvm.riscv.sf.vc.i.se.e64m1.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen, iXLen, iXLen, iXLen) 955 956define void @test_sf_vc_i_se_e64m2(iXLen %vl) { 957; CHECK-LABEL: test_sf_vc_i_se_e64m2: 958; CHECK: # %bb.0: # %entry 959; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma 960; CHECK-NEXT: sf.vc.i 3, 31, 31, 10 961; CHECK-NEXT: ret 962entry: 963 tail call void @llvm.riscv.sf.vc.i.se.e64m2.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 31, iXLen 10, iXLen 64, iXLen 1, iXLen %vl) 964 ret void 965} 966 967declare void @llvm.riscv.sf.vc.i.se.e64m2.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen, iXLen, iXLen, iXLen) 968 969define void @test_sf_vc_i_se_e64m4(iXLen %vl) { 970; CHECK-LABEL: test_sf_vc_i_se_e64m4: 971; CHECK: # %bb.0: # %entry 972; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma 973; CHECK-NEXT: sf.vc.i 3, 31, 31, 10 974; CHECK-NEXT: ret 975entry: 976 tail call void @llvm.riscv.sf.vc.i.se.e64m4.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 31, iXLen 10, iXLen 64, iXLen 2, iXLen %vl) 977 ret void 978} 979 980declare void @llvm.riscv.sf.vc.i.se.e64m4.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen, iXLen, iXLen, iXLen) 981 982define void @test_sf_vc_i_se_e64m8(iXLen %vl) { 983; CHECK-LABEL: test_sf_vc_i_se_e64m8: 984; CHECK: # %bb.0: # %entry 985; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma 986; CHECK-NEXT: sf.vc.i 3, 31, 31, 10 987; CHECK-NEXT: ret 988entry: 989 tail call void @llvm.riscv.sf.vc.i.se.e64m8.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 31, iXLen 10, iXLen 64, iXLen 3, iXLen %vl) 990 ret void 991} 992 993declare void @llvm.riscv.sf.vc.i.se.e64m8.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen, iXLen, iXLen, iXLen) 994 995define <1 x i8> @test_sf_vc_v_i_se_e8mf8(iXLen %vl) { 996; CHECK-LABEL: test_sf_vc_v_i_se_e8mf8: 997; CHECK: # %bb.0: # %entry 998; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma 999; CHECK-NEXT: sf.vc.v.i 3, 31, v8, 10 1000; CHECK-NEXT: ret 1001entry: 1002 %0 = tail call <1 x i8> @llvm.riscv.sf.vc.v.i.se.nxv1i8.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl) 1003 ret <1 x i8> %0 1004} 1005 1006declare <1 x i8> @llvm.riscv.sf.vc.v.i.se.nxv1i8.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen) 1007 1008define <2 x i8> @test_sf_vc_v_i_se_e8mf4(iXLen %vl) { 1009; CHECK-LABEL: test_sf_vc_v_i_se_e8mf4: 1010; CHECK: # %bb.0: # %entry 1011; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma 1012; CHECK-NEXT: sf.vc.v.i 3, 31, v8, 10 1013; CHECK-NEXT: ret 1014entry: 1015 %0 = tail call <2 x i8> @llvm.riscv.sf.vc.v.i.se.nxv2i8.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl) 1016 ret <2 x i8> %0 1017} 1018 1019declare <2 x i8> @llvm.riscv.sf.vc.v.i.se.nxv2i8.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen) 1020 1021define <4 x i8> @test_sf_vc_v_i_se_e8mf2(iXLen %vl) { 1022; CHECK-LABEL: test_sf_vc_v_i_se_e8mf2: 1023; CHECK: # %bb.0: # %entry 1024; CHECK-NEXT: vsetvli zero, a0, e8, mf4, ta, ma 1025; CHECK-NEXT: sf.vc.v.i 3, 31, v8, 10 1026; CHECK-NEXT: ret 1027entry: 1028 %0 = tail call <4 x i8> @llvm.riscv.sf.vc.v.i.se.nxv4i8.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl) 1029 ret <4 x i8> %0 1030} 1031 1032declare <4 x i8> @llvm.riscv.sf.vc.v.i.se.nxv4i8.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen) 1033 1034define <8 x i8> @test_sf_vc_v_i_se_e8m1(iXLen %vl) { 1035; CHECK-LABEL: test_sf_vc_v_i_se_e8m1: 1036; CHECK: # %bb.0: # %entry 1037; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma 1038; CHECK-NEXT: sf.vc.v.i 3, 31, v8, 10 1039; CHECK-NEXT: ret 1040entry: 1041 %0 = tail call <8 x i8> @llvm.riscv.sf.vc.v.i.se.nxv8i8.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl) 1042 ret <8 x i8> %0 1043} 1044 1045declare <8 x i8> @llvm.riscv.sf.vc.v.i.se.nxv8i8.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen) 1046 1047define <16 x i8> @test_sf_vc_v_i_se_e8m2(iXLen %vl) { 1048; CHECK-LABEL: test_sf_vc_v_i_se_e8m2: 1049; CHECK: # %bb.0: # %entry 1050; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma 1051; CHECK-NEXT: sf.vc.v.i 3, 31, v8, 10 1052; CHECK-NEXT: ret 1053entry: 1054 %0 = tail call <16 x i8> @llvm.riscv.sf.vc.v.i.se.nxv16i8.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl) 1055 ret <16 x i8> %0 1056} 1057 1058declare <16 x i8> @llvm.riscv.sf.vc.v.i.se.nxv16i8.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen) 1059 1060define <32 x i8> @test_sf_vc_v_i_se_e8m4(iXLen %vl) { 1061; CHECK-LABEL: test_sf_vc_v_i_se_e8m4: 1062; CHECK: # %bb.0: # %entry 1063; CHECK-NEXT: vsetvli zero, a0, e8, m2, ta, ma 1064; CHECK-NEXT: sf.vc.v.i 3, 31, v8, 10 1065; CHECK-NEXT: ret 1066entry: 1067 %0 = tail call <32 x i8> @llvm.riscv.sf.vc.v.i.se.nxv32i8.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl) 1068 ret <32 x i8> %0 1069} 1070 1071declare <32 x i8> @llvm.riscv.sf.vc.v.i.se.nxv32i8.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen) 1072 1073define <64 x i8> @test_sf_vc_v_i_se_e8m8(iXLen %vl) { 1074; CHECK-LABEL: test_sf_vc_v_i_se_e8m8: 1075; CHECK: # %bb.0: # %entry 1076; CHECK-NEXT: vsetvli zero, a0, e8, m4, ta, ma 1077; CHECK-NEXT: sf.vc.v.i 3, 31, v8, 10 1078; CHECK-NEXT: ret 1079entry: 1080 %0 = tail call <64 x i8> @llvm.riscv.sf.vc.v.i.se.nxv64i8.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl) 1081 ret <64 x i8> %0 1082} 1083 1084declare <64 x i8> @llvm.riscv.sf.vc.v.i.se.nxv64i8.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen) 1085 1086define <1 x i16> @test_sf_vc_v_i_se_e16mf4(iXLen %vl) { 1087; CHECK-LABEL: test_sf_vc_v_i_se_e16mf4: 1088; CHECK: # %bb.0: # %entry 1089; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma 1090; CHECK-NEXT: sf.vc.v.i 3, 31, v8, 10 1091; CHECK-NEXT: ret 1092entry: 1093 %0 = tail call <1 x i16> @llvm.riscv.sf.vc.v.i.se.nxv1i16.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl) 1094 ret <1 x i16> %0 1095} 1096 1097declare <1 x i16> @llvm.riscv.sf.vc.v.i.se.nxv1i16.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen) 1098 1099define <2 x i16> @test_sf_vc_v_i_se_e16mf2(iXLen %vl) { 1100; CHECK-LABEL: test_sf_vc_v_i_se_e16mf2: 1101; CHECK: # %bb.0: # %entry 1102; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma 1103; CHECK-NEXT: sf.vc.v.i 3, 31, v8, 10 1104; CHECK-NEXT: ret 1105entry: 1106 %0 = tail call <2 x i16> @llvm.riscv.sf.vc.v.i.se.nxv2i16.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl) 1107 ret <2 x i16> %0 1108} 1109 1110declare <2 x i16> @llvm.riscv.sf.vc.v.i.se.nxv2i16.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen) 1111 1112define <4 x i16> @test_sf_vc_v_i_se_e16m1(iXLen %vl) { 1113; CHECK-LABEL: test_sf_vc_v_i_se_e16m1: 1114; CHECK: # %bb.0: # %entry 1115; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma 1116; CHECK-NEXT: sf.vc.v.i 3, 31, v8, 10 1117; CHECK-NEXT: ret 1118entry: 1119 %0 = tail call <4 x i16> @llvm.riscv.sf.vc.v.i.se.nxv4i16.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl) 1120 ret <4 x i16> %0 1121} 1122 1123declare <4 x i16> @llvm.riscv.sf.vc.v.i.se.nxv4i16.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen) 1124 1125define <8 x i16> @test_sf_vc_v_i_se_e16m2(iXLen %vl) { 1126; CHECK-LABEL: test_sf_vc_v_i_se_e16m2: 1127; CHECK: # %bb.0: # %entry 1128; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma 1129; CHECK-NEXT: sf.vc.v.i 3, 31, v8, 10 1130; CHECK-NEXT: ret 1131entry: 1132 %0 = tail call <8 x i16> @llvm.riscv.sf.vc.v.i.se.nxv8i16.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl) 1133 ret <8 x i16> %0 1134} 1135 1136declare <8 x i16> @llvm.riscv.sf.vc.v.i.se.nxv8i16.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen) 1137 1138define <16 x i16> @test_sf_vc_v_i_se_e16m4(iXLen %vl) { 1139; CHECK-LABEL: test_sf_vc_v_i_se_e16m4: 1140; CHECK: # %bb.0: # %entry 1141; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma 1142; CHECK-NEXT: sf.vc.v.i 3, 31, v8, 10 1143; CHECK-NEXT: ret 1144entry: 1145 %0 = tail call <16 x i16> @llvm.riscv.sf.vc.v.i.se.nxv16i16.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl) 1146 ret <16 x i16> %0 1147} 1148 1149declare <16 x i16> @llvm.riscv.sf.vc.v.i.se.nxv16i16.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen) 1150 1151define <32 x i16> @test_sf_vc_v_i_se_e16m8(iXLen %vl) { 1152; CHECK-LABEL: test_sf_vc_v_i_se_e16m8: 1153; CHECK: # %bb.0: # %entry 1154; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma 1155; CHECK-NEXT: sf.vc.v.i 3, 31, v8, 10 1156; CHECK-NEXT: ret 1157entry: 1158 %0 = tail call <32 x i16> @llvm.riscv.sf.vc.v.i.se.nxv32i16.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl) 1159 ret <32 x i16> %0 1160} 1161 1162declare <32 x i16> @llvm.riscv.sf.vc.v.i.se.nxv32i16.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen) 1163 1164define <1 x i32> @test_sf_vc_v_i_se_e32mf2(iXLen %vl) { 1165; CHECK-LABEL: test_sf_vc_v_i_se_e32mf2: 1166; CHECK: # %bb.0: # %entry 1167; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma 1168; CHECK-NEXT: sf.vc.v.i 3, 31, v8, 10 1169; CHECK-NEXT: ret 1170entry: 1171 %0 = tail call <1 x i32> @llvm.riscv.sf.vc.v.i.se.nxv1i32.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl) 1172 ret <1 x i32> %0 1173} 1174 1175declare <1 x i32> @llvm.riscv.sf.vc.v.i.se.nxv1i32.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen) 1176 1177define <2 x i32> @test_sf_vc_v_i_se_e32m1(iXLen %vl) { 1178; CHECK-LABEL: test_sf_vc_v_i_se_e32m1: 1179; CHECK: # %bb.0: # %entry 1180; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma 1181; CHECK-NEXT: sf.vc.v.i 3, 31, v8, 10 1182; CHECK-NEXT: ret 1183entry: 1184 %0 = tail call <2 x i32> @llvm.riscv.sf.vc.v.i.se.nxv2i32.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl) 1185 ret <2 x i32> %0 1186} 1187 1188declare <2 x i32> @llvm.riscv.sf.vc.v.i.se.nxv2i32.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen) 1189 1190define <4 x i32> @test_sf_vc_v_i_se_e32m2(iXLen %vl) { 1191; CHECK-LABEL: test_sf_vc_v_i_se_e32m2: 1192; CHECK: # %bb.0: # %entry 1193; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma 1194; CHECK-NEXT: sf.vc.v.i 3, 31, v8, 10 1195; CHECK-NEXT: ret 1196entry: 1197 %0 = tail call <4 x i32> @llvm.riscv.sf.vc.v.i.se.nxv4i32.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl) 1198 ret <4 x i32> %0 1199} 1200 1201declare <4 x i32> @llvm.riscv.sf.vc.v.i.se.nxv4i32.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen) 1202 1203define <8 x i32> @test_sf_vc_v_i_se_e32m4(iXLen %vl) { 1204; CHECK-LABEL: test_sf_vc_v_i_se_e32m4: 1205; CHECK: # %bb.0: # %entry 1206; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma 1207; CHECK-NEXT: sf.vc.v.i 3, 31, v8, 10 1208; CHECK-NEXT: ret 1209entry: 1210 %0 = tail call <8 x i32> @llvm.riscv.sf.vc.v.i.se.nxv8i32.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl) 1211 ret <8 x i32> %0 1212} 1213 1214declare <8 x i32> @llvm.riscv.sf.vc.v.i.se.nxv8i32.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen) 1215 1216define <16 x i32> @test_sf_vc_v_i_se_e32m8(iXLen %vl) { 1217; CHECK-LABEL: test_sf_vc_v_i_se_e32m8: 1218; CHECK: # %bb.0: # %entry 1219; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma 1220; CHECK-NEXT: sf.vc.v.i 3, 31, v8, 10 1221; CHECK-NEXT: ret 1222entry: 1223 %0 = tail call <16 x i32> @llvm.riscv.sf.vc.v.i.se.nxv16i32.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl) 1224 ret <16 x i32> %0 1225} 1226 1227declare <16 x i32> @llvm.riscv.sf.vc.v.i.se.nxv16i32.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen) 1228 1229define <1 x i64> @test_sf_vc_v_i_se_e64m1(iXLen %vl) { 1230; CHECK-LABEL: test_sf_vc_v_i_se_e64m1: 1231; CHECK: # %bb.0: # %entry 1232; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma 1233; CHECK-NEXT: sf.vc.v.i 3, 31, v8, 10 1234; CHECK-NEXT: ret 1235entry: 1236 %0 = tail call <1 x i64> @llvm.riscv.sf.vc.v.i.se.nxv1i64.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl) 1237 ret <1 x i64> %0 1238} 1239 1240declare <1 x i64> @llvm.riscv.sf.vc.v.i.se.nxv1i64.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen) 1241 1242define <2 x i64> @test_sf_vc_v_i_se_e64m2(iXLen %vl) { 1243; CHECK-LABEL: test_sf_vc_v_i_se_e64m2: 1244; CHECK: # %bb.0: # %entry 1245; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma 1246; CHECK-NEXT: sf.vc.v.i 3, 31, v8, 10 1247; CHECK-NEXT: ret 1248entry: 1249 %0 = tail call <2 x i64> @llvm.riscv.sf.vc.v.i.se.nxv2i64.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl) 1250 ret <2 x i64> %0 1251} 1252 1253declare <2 x i64> @llvm.riscv.sf.vc.v.i.se.nxv2i64.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen) 1254 1255define <4 x i64> @test_sf_vc_v_i_se_e64m4(iXLen %vl) { 1256; CHECK-LABEL: test_sf_vc_v_i_se_e64m4: 1257; CHECK: # %bb.0: # %entry 1258; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma 1259; CHECK-NEXT: sf.vc.v.i 3, 31, v8, 10 1260; CHECK-NEXT: ret 1261entry: 1262 %0 = tail call <4 x i64> @llvm.riscv.sf.vc.v.i.se.nxv4i64.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl) 1263 ret <4 x i64> %0 1264} 1265 1266declare <4 x i64> @llvm.riscv.sf.vc.v.i.se.nxv4i64.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen) 1267 1268define <8 x i64> @test_sf_vc_v_i_se_e64m8(iXLen %vl) { 1269; CHECK-LABEL: test_sf_vc_v_i_se_e64m8: 1270; CHECK: # %bb.0: # %entry 1271; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma 1272; CHECK-NEXT: sf.vc.v.i 3, 31, v8, 10 1273; CHECK-NEXT: ret 1274entry: 1275 %0 = tail call <8 x i64> @llvm.riscv.sf.vc.v.i.se.nxv8i64.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl) 1276 ret <8 x i64> %0 1277} 1278 1279declare <8 x i64> @llvm.riscv.sf.vc.v.i.se.nxv8i64.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen) 1280 1281define <1 x i8> @test_sf_vc_v_i_e8mf8(iXLen %vl) { 1282; CHECK-LABEL: test_sf_vc_v_i_e8mf8: 1283; CHECK: # %bb.0: # %entry 1284; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma 1285; CHECK-NEXT: sf.vc.v.i 3, 31, v8, 10 1286; CHECK-NEXT: ret 1287entry: 1288 %0 = tail call <1 x i8> @llvm.riscv.sf.vc.v.i.nxv1i8.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl) 1289 ret <1 x i8> %0 1290} 1291 1292declare <1 x i8> @llvm.riscv.sf.vc.v.i.nxv1i8.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen) 1293 1294define <2 x i8> @test_sf_vc_v_i_e8mf4(iXLen %vl) { 1295; CHECK-LABEL: test_sf_vc_v_i_e8mf4: 1296; CHECK: # %bb.0: # %entry 1297; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma 1298; CHECK-NEXT: sf.vc.v.i 3, 31, v8, 10 1299; CHECK-NEXT: ret 1300entry: 1301 %0 = tail call <2 x i8> @llvm.riscv.sf.vc.v.i.nxv2i8.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl) 1302 ret <2 x i8> %0 1303} 1304 1305declare <2 x i8> @llvm.riscv.sf.vc.v.i.nxv2i8.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen) 1306 1307define <4 x i8> @test_sf_vc_v_i_e8mf2(iXLen %vl) { 1308; CHECK-LABEL: test_sf_vc_v_i_e8mf2: 1309; CHECK: # %bb.0: # %entry 1310; CHECK-NEXT: vsetvli zero, a0, e8, mf4, ta, ma 1311; CHECK-NEXT: sf.vc.v.i 3, 31, v8, 10 1312; CHECK-NEXT: ret 1313entry: 1314 %0 = tail call <4 x i8> @llvm.riscv.sf.vc.v.i.nxv4i8.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl) 1315 ret <4 x i8> %0 1316} 1317 1318declare <4 x i8> @llvm.riscv.sf.vc.v.i.nxv4i8.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen) 1319 1320define <8 x i8> @test_sf_vc_v_i_e8m1(iXLen %vl) { 1321; CHECK-LABEL: test_sf_vc_v_i_e8m1: 1322; CHECK: # %bb.0: # %entry 1323; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma 1324; CHECK-NEXT: sf.vc.v.i 3, 31, v8, 10 1325; CHECK-NEXT: ret 1326entry: 1327 %0 = tail call <8 x i8> @llvm.riscv.sf.vc.v.i.nxv8i8.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl) 1328 ret <8 x i8> %0 1329} 1330 1331declare <8 x i8> @llvm.riscv.sf.vc.v.i.nxv8i8.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen) 1332 1333define <16 x i8> @test_sf_vc_v_i_e8m2(iXLen %vl) { 1334; CHECK-LABEL: test_sf_vc_v_i_e8m2: 1335; CHECK: # %bb.0: # %entry 1336; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma 1337; CHECK-NEXT: sf.vc.v.i 3, 31, v8, 10 1338; CHECK-NEXT: ret 1339entry: 1340 %0 = tail call <16 x i8> @llvm.riscv.sf.vc.v.i.nxv16i8.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl) 1341 ret <16 x i8> %0 1342} 1343 1344declare <16 x i8> @llvm.riscv.sf.vc.v.i.nxv16i8.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen) 1345 1346define <32 x i8> @test_sf_vc_v_i_e8m4(iXLen %vl) { 1347; CHECK-LABEL: test_sf_vc_v_i_e8m4: 1348; CHECK: # %bb.0: # %entry 1349; CHECK-NEXT: vsetvli zero, a0, e8, m2, ta, ma 1350; CHECK-NEXT: sf.vc.v.i 3, 31, v8, 10 1351; CHECK-NEXT: ret 1352entry: 1353 %0 = tail call <32 x i8> @llvm.riscv.sf.vc.v.i.nxv32i8.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl) 1354 ret <32 x i8> %0 1355} 1356 1357declare <32 x i8> @llvm.riscv.sf.vc.v.i.nxv32i8.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen) 1358 1359define <64 x i8> @test_sf_vc_v_i_e8m8(iXLen %vl) { 1360; CHECK-LABEL: test_sf_vc_v_i_e8m8: 1361; CHECK: # %bb.0: # %entry 1362; CHECK-NEXT: vsetvli zero, a0, e8, m4, ta, ma 1363; CHECK-NEXT: sf.vc.v.i 3, 31, v8, 10 1364; CHECK-NEXT: ret 1365entry: 1366 %0 = tail call <64 x i8> @llvm.riscv.sf.vc.v.i.nxv64i8.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl) 1367 ret <64 x i8> %0 1368} 1369 1370declare <64 x i8> @llvm.riscv.sf.vc.v.i.nxv64i8.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen) 1371 1372define <1 x i16> @test_sf_vc_v_i_e16mf4(iXLen %vl) { 1373; CHECK-LABEL: test_sf_vc_v_i_e16mf4: 1374; CHECK: # %bb.0: # %entry 1375; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma 1376; CHECK-NEXT: sf.vc.v.i 3, 31, v8, 10 1377; CHECK-NEXT: ret 1378entry: 1379 %0 = tail call <1 x i16> @llvm.riscv.sf.vc.v.i.nxv1i16.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl) 1380 ret <1 x i16> %0 1381} 1382 1383declare <1 x i16> @llvm.riscv.sf.vc.v.i.nxv1i16.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen) 1384 1385define <2 x i16> @test_sf_vc_v_i_e16mf2(iXLen %vl) { 1386; CHECK-LABEL: test_sf_vc_v_i_e16mf2: 1387; CHECK: # %bb.0: # %entry 1388; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma 1389; CHECK-NEXT: sf.vc.v.i 3, 31, v8, 10 1390; CHECK-NEXT: ret 1391entry: 1392 %0 = tail call <2 x i16> @llvm.riscv.sf.vc.v.i.nxv2i16.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl) 1393 ret <2 x i16> %0 1394} 1395 1396declare <2 x i16> @llvm.riscv.sf.vc.v.i.nxv2i16.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen) 1397 1398define <4 x i16> @test_sf_vc_v_i_e16m1(iXLen %vl) { 1399; CHECK-LABEL: test_sf_vc_v_i_e16m1: 1400; CHECK: # %bb.0: # %entry 1401; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma 1402; CHECK-NEXT: sf.vc.v.i 3, 31, v8, 10 1403; CHECK-NEXT: ret 1404entry: 1405 %0 = tail call <4 x i16> @llvm.riscv.sf.vc.v.i.nxv4i16.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl) 1406 ret <4 x i16> %0 1407} 1408 1409declare <4 x i16> @llvm.riscv.sf.vc.v.i.nxv4i16.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen) 1410 1411define <8 x i16> @test_sf_vc_v_i_e16m2(iXLen %vl) { 1412; CHECK-LABEL: test_sf_vc_v_i_e16m2: 1413; CHECK: # %bb.0: # %entry 1414; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma 1415; CHECK-NEXT: sf.vc.v.i 3, 31, v8, 10 1416; CHECK-NEXT: ret 1417entry: 1418 %0 = tail call <8 x i16> @llvm.riscv.sf.vc.v.i.nxv8i16.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl) 1419 ret <8 x i16> %0 1420} 1421 1422declare <8 x i16> @llvm.riscv.sf.vc.v.i.nxv8i16.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen) 1423 1424define <16 x i16> @test_sf_vc_v_i_e16m4(iXLen %vl) { 1425; CHECK-LABEL: test_sf_vc_v_i_e16m4: 1426; CHECK: # %bb.0: # %entry 1427; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma 1428; CHECK-NEXT: sf.vc.v.i 3, 31, v8, 10 1429; CHECK-NEXT: ret 1430entry: 1431 %0 = tail call <16 x i16> @llvm.riscv.sf.vc.v.i.nxv16i16.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl) 1432 ret <16 x i16> %0 1433} 1434 1435declare <16 x i16> @llvm.riscv.sf.vc.v.i.nxv16i16.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen) 1436 1437define <32 x i16> @test_sf_vc_v_i_e16m8(iXLen %vl) { 1438; CHECK-LABEL: test_sf_vc_v_i_e16m8: 1439; CHECK: # %bb.0: # %entry 1440; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma 1441; CHECK-NEXT: sf.vc.v.i 3, 31, v8, 10 1442; CHECK-NEXT: ret 1443entry: 1444 %0 = tail call <32 x i16> @llvm.riscv.sf.vc.v.i.nxv32i16.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl) 1445 ret <32 x i16> %0 1446} 1447 1448declare <32 x i16> @llvm.riscv.sf.vc.v.i.nxv32i16.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen) 1449 1450define <1 x i32> @test_sf_vc_v_i_e32mf2(iXLen %vl) { 1451; CHECK-LABEL: test_sf_vc_v_i_e32mf2: 1452; CHECK: # %bb.0: # %entry 1453; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma 1454; CHECK-NEXT: sf.vc.v.i 3, 31, v8, 10 1455; CHECK-NEXT: ret 1456entry: 1457 %0 = tail call <1 x i32> @llvm.riscv.sf.vc.v.i.nxv1i32.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl) 1458 ret <1 x i32> %0 1459} 1460 1461declare <1 x i32> @llvm.riscv.sf.vc.v.i.nxv1i32.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen) 1462 1463define <2 x i32> @test_sf_vc_v_i_e32m1(iXLen %vl) { 1464; CHECK-LABEL: test_sf_vc_v_i_e32m1: 1465; CHECK: # %bb.0: # %entry 1466; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma 1467; CHECK-NEXT: sf.vc.v.i 3, 31, v8, 10 1468; CHECK-NEXT: ret 1469entry: 1470 %0 = tail call <2 x i32> @llvm.riscv.sf.vc.v.i.nxv2i32.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl) 1471 ret <2 x i32> %0 1472} 1473 1474declare <2 x i32> @llvm.riscv.sf.vc.v.i.nxv2i32.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen) 1475 1476define <4 x i32> @test_sf_vc_v_i_e32m2(iXLen %vl) { 1477; CHECK-LABEL: test_sf_vc_v_i_e32m2: 1478; CHECK: # %bb.0: # %entry 1479; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma 1480; CHECK-NEXT: sf.vc.v.i 3, 31, v8, 10 1481; CHECK-NEXT: ret 1482entry: 1483 %0 = tail call <4 x i32> @llvm.riscv.sf.vc.v.i.nxv4i32.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl) 1484 ret <4 x i32> %0 1485} 1486 1487declare <4 x i32> @llvm.riscv.sf.vc.v.i.nxv4i32.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen) 1488 1489define <8 x i32> @test_sf_vc_v_i_e32m4(iXLen %vl) { 1490; CHECK-LABEL: test_sf_vc_v_i_e32m4: 1491; CHECK: # %bb.0: # %entry 1492; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma 1493; CHECK-NEXT: sf.vc.v.i 3, 31, v8, 10 1494; CHECK-NEXT: ret 1495entry: 1496 %0 = tail call <8 x i32> @llvm.riscv.sf.vc.v.i.nxv8i32.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl) 1497 ret <8 x i32> %0 1498} 1499 1500declare <8 x i32> @llvm.riscv.sf.vc.v.i.nxv8i32.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen) 1501 1502define <16 x i32> @test_sf_vc_v_i_e32m8(iXLen %vl) { 1503; CHECK-LABEL: test_sf_vc_v_i_e32m8: 1504; CHECK: # %bb.0: # %entry 1505; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma 1506; CHECK-NEXT: sf.vc.v.i 3, 31, v8, 10 1507; CHECK-NEXT: ret 1508entry: 1509 %0 = tail call <16 x i32> @llvm.riscv.sf.vc.v.i.nxv16i32.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl) 1510 ret <16 x i32> %0 1511} 1512 1513declare <16 x i32> @llvm.riscv.sf.vc.v.i.nxv16i32.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen) 1514 1515define <1 x i64> @test_sf_vc_v_i_e64m1(iXLen %vl) { 1516; CHECK-LABEL: test_sf_vc_v_i_e64m1: 1517; CHECK: # %bb.0: # %entry 1518; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma 1519; CHECK-NEXT: sf.vc.v.i 3, 31, v8, 10 1520; CHECK-NEXT: ret 1521entry: 1522 %0 = tail call <1 x i64> @llvm.riscv.sf.vc.v.i.nxv1i64.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl) 1523 ret <1 x i64> %0 1524} 1525 1526declare <1 x i64> @llvm.riscv.sf.vc.v.i.nxv1i64.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen) 1527 1528define <2 x i64> @test_sf_vc_v_i_e64m2(iXLen %vl) { 1529; CHECK-LABEL: test_sf_vc_v_i_e64m2: 1530; CHECK: # %bb.0: # %entry 1531; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma 1532; CHECK-NEXT: sf.vc.v.i 3, 31, v8, 10 1533; CHECK-NEXT: ret 1534entry: 1535 %0 = tail call <2 x i64> @llvm.riscv.sf.vc.v.i.nxv2i64.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl) 1536 ret <2 x i64> %0 1537} 1538 1539declare <2 x i64> @llvm.riscv.sf.vc.v.i.nxv2i64.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen) 1540 1541define <4 x i64> @test_sf_vc_v_i_e64m4(iXLen %vl) { 1542; CHECK-LABEL: test_sf_vc_v_i_e64m4: 1543; CHECK: # %bb.0: # %entry 1544; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma 1545; CHECK-NEXT: sf.vc.v.i 3, 31, v8, 10 1546; CHECK-NEXT: ret 1547entry: 1548 %0 = tail call <4 x i64> @llvm.riscv.sf.vc.v.i.nxv4i64.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl) 1549 ret <4 x i64> %0 1550} 1551 1552declare <4 x i64> @llvm.riscv.sf.vc.v.i.nxv4i64.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen) 1553 1554define <8 x i64> @test_sf_vc_v_i_e64m8(iXLen %vl) { 1555; CHECK-LABEL: test_sf_vc_v_i_e64m8: 1556; CHECK: # %bb.0: # %entry 1557; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma 1558; CHECK-NEXT: sf.vc.v.i 3, 31, v8, 10 1559; CHECK-NEXT: ret 1560entry: 1561 %0 = tail call <8 x i64> @llvm.riscv.sf.vc.v.i.nxv8i64.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl) 1562 ret <8 x i64> %0 1563} 1564 1565declare <8 x i64> @llvm.riscv.sf.vc.v.i.nxv8i64.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen) 1566 1567define <1 x half> @test_sf_vc_fv_x_se_e16mf4(i16 %rs1, iXLen %vl) { 1568; CHECK-LABEL: test_sf_vc_fv_x_se_e16mf4: 1569; CHECK: # %bb.0: # %entry 1570; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 1571; CHECK-NEXT: sf.vc.v.x 3, 4, v8, a0 1572; CHECK-NEXT: ret 1573entry: 1574 %0 = tail call <1 x half> @llvm.riscv.sf.vc.v.x.se.nxv1f16.i16.iXLen(iXLen 3, iXLen 4, i16 %rs1, iXLen %vl) 1575 ret <1 x half> %0 1576} 1577 1578declare <1 x half> @llvm.riscv.sf.vc.v.x.se.nxv1f16.i16.iXLen(iXLen, iXLen, i16, iXLen) 1579 1580define <2 x half> @test_sf_vc_fv_x_se_e16mf2(i16 %rs1, iXLen %vl) { 1581; CHECK-LABEL: test_sf_vc_fv_x_se_e16mf2: 1582; CHECK: # %bb.0: # %entry 1583; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 1584; CHECK-NEXT: sf.vc.v.x 3, 4, v8, a0 1585; CHECK-NEXT: ret 1586entry: 1587 %0 = tail call <2 x half> @llvm.riscv.sf.vc.v.x.se.nxv2f16.i16.iXLen(iXLen 3, iXLen 4, i16 %rs1, iXLen %vl) 1588 ret <2 x half> %0 1589} 1590 1591declare <2 x half> @llvm.riscv.sf.vc.v.x.se.nxv2f16.i16.iXLen(iXLen, iXLen, i16, iXLen) 1592 1593define <4 x half> @test_sf_vc_fv_x_se_e16m1(i16 %rs1, iXLen %vl) { 1594; CHECK-LABEL: test_sf_vc_fv_x_se_e16m1: 1595; CHECK: # %bb.0: # %entry 1596; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 1597; CHECK-NEXT: sf.vc.v.x 3, 4, v8, a0 1598; CHECK-NEXT: ret 1599entry: 1600 %0 = tail call <4 x half> @llvm.riscv.sf.vc.v.x.se.nxv4f16.i16.iXLen(iXLen 3, iXLen 4, i16 %rs1, iXLen %vl) 1601 ret <4 x half> %0 1602} 1603 1604declare <4 x half> @llvm.riscv.sf.vc.v.x.se.nxv4f16.i16.iXLen(iXLen, iXLen, i16, iXLen) 1605 1606define <8 x half> @test_sf_vc_fv_x_se_e16m2(i16 %rs1, iXLen %vl) { 1607; CHECK-LABEL: test_sf_vc_fv_x_se_e16m2: 1608; CHECK: # %bb.0: # %entry 1609; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 1610; CHECK-NEXT: sf.vc.v.x 3, 4, v8, a0 1611; CHECK-NEXT: ret 1612entry: 1613 %0 = tail call <8 x half> @llvm.riscv.sf.vc.v.x.se.nxv8f16.i16.iXLen(iXLen 3, iXLen 4, i16 %rs1, iXLen %vl) 1614 ret <8 x half> %0 1615} 1616 1617declare <8 x half> @llvm.riscv.sf.vc.v.x.se.nxv8f16.i16.iXLen(iXLen, iXLen, i16, iXLen) 1618 1619define <16 x half> @test_sf_vc_fv_x_se_e16m4(i16 %rs1, iXLen %vl) { 1620; CHECK-LABEL: test_sf_vc_fv_x_se_e16m4: 1621; CHECK: # %bb.0: # %entry 1622; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma 1623; CHECK-NEXT: sf.vc.v.x 3, 4, v8, a0 1624; CHECK-NEXT: ret 1625entry: 1626 %0 = tail call <16 x half> @llvm.riscv.sf.vc.v.x.se.nxv16f16.i16.iXLen(iXLen 3, iXLen 4, i16 %rs1, iXLen %vl) 1627 ret <16 x half> %0 1628} 1629 1630declare <16 x half> @llvm.riscv.sf.vc.v.x.se.nxv16f16.i16.iXLen(iXLen, iXLen, i16, iXLen) 1631 1632define <32 x half> @test_sf_vc_fv_x_se_e16m8(i16 %rs1, iXLen %vl) { 1633; CHECK-LABEL: test_sf_vc_fv_x_se_e16m8: 1634; CHECK: # %bb.0: # %entry 1635; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma 1636; CHECK-NEXT: sf.vc.v.x 3, 4, v8, a0 1637; CHECK-NEXT: ret 1638entry: 1639 %0 = tail call <32 x half> @llvm.riscv.sf.vc.v.x.se.nxv32f16.i16.iXLen(iXLen 3, iXLen 4, i16 %rs1, iXLen %vl) 1640 ret <32 x half> %0 1641} 1642 1643declare <32 x half> @llvm.riscv.sf.vc.v.x.se.nxv32f16.i16.iXLen(iXLen, iXLen, i16, iXLen) 1644 1645define <1 x float> @test_sf_vc_fv_x_se_e32mf2(i32 %rs1, iXLen %vl) { 1646; CHECK-LABEL: test_sf_vc_fv_x_se_e32mf2: 1647; CHECK: # %bb.0: # %entry 1648; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 1649; CHECK-NEXT: sf.vc.v.x 3, 4, v8, a0 1650; CHECK-NEXT: ret 1651entry: 1652 %0 = tail call <1 x float> @llvm.riscv.sf.vc.v.x.se.nxv1f32.i32.iXLen(iXLen 3, iXLen 4, i32 %rs1, iXLen %vl) 1653 ret <1 x float> %0 1654} 1655 1656declare <1 x float> @llvm.riscv.sf.vc.v.x.se.nxv1f32.i32.iXLen(iXLen, iXLen, i32, iXLen) 1657 1658define <2 x float> @test_sf_vc_fv_x_se_e32m1(i32 %rs1, iXLen %vl) { 1659; CHECK-LABEL: test_sf_vc_fv_x_se_e32m1: 1660; CHECK: # %bb.0: # %entry 1661; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 1662; CHECK-NEXT: sf.vc.v.x 3, 4, v8, a0 1663; CHECK-NEXT: ret 1664entry: 1665 %0 = tail call <2 x float> @llvm.riscv.sf.vc.v.x.se.nxv2f32.i32.iXLen(iXLen 3, iXLen 4, i32 %rs1, iXLen %vl) 1666 ret <2 x float> %0 1667} 1668 1669declare <2 x float> @llvm.riscv.sf.vc.v.x.se.nxv2f32.i32.iXLen(iXLen, iXLen, i32, iXLen) 1670 1671define <4 x float> @test_sf_vc_fv_x_se_e32m2(i32 %rs1, iXLen %vl) { 1672; CHECK-LABEL: test_sf_vc_fv_x_se_e32m2: 1673; CHECK: # %bb.0: # %entry 1674; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 1675; CHECK-NEXT: sf.vc.v.x 3, 4, v8, a0 1676; CHECK-NEXT: ret 1677entry: 1678 %0 = tail call <4 x float> @llvm.riscv.sf.vc.v.x.se.nxv4f32.i32.iXLen(iXLen 3, iXLen 4, i32 %rs1, iXLen %vl) 1679 ret <4 x float> %0 1680} 1681 1682declare <4 x float> @llvm.riscv.sf.vc.v.x.se.nxv4f32.i32.iXLen(iXLen, iXLen, i32, iXLen) 1683 1684define <8 x float> @test_sf_vc_fv_x_se_e32m4(i32 %rs1, iXLen %vl) { 1685; CHECK-LABEL: test_sf_vc_fv_x_se_e32m4: 1686; CHECK: # %bb.0: # %entry 1687; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma 1688; CHECK-NEXT: sf.vc.v.x 3, 4, v8, a0 1689; CHECK-NEXT: ret 1690entry: 1691 %0 = tail call <8 x float> @llvm.riscv.sf.vc.v.x.se.nxv8f32.i32.iXLen(iXLen 3, iXLen 4, i32 %rs1, iXLen %vl) 1692 ret <8 x float> %0 1693} 1694 1695declare <8 x float> @llvm.riscv.sf.vc.v.x.se.nxv8f32.i32.iXLen(iXLen, iXLen, i32, iXLen) 1696 1697define <16 x float> @test_sf_vc_fv_x_se_e32m8(i32 %rs1, iXLen %vl) { 1698; CHECK-LABEL: test_sf_vc_fv_x_se_e32m8: 1699; CHECK: # %bb.0: # %entry 1700; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma 1701; CHECK-NEXT: sf.vc.v.x 3, 4, v8, a0 1702; CHECK-NEXT: ret 1703entry: 1704 %0 = tail call <16 x float> @llvm.riscv.sf.vc.v.x.se.nxv16f32.i32.iXLen(iXLen 3, iXLen 4, i32 %rs1, iXLen %vl) 1705 ret <16 x float> %0 1706} 1707 1708declare <16 x float> @llvm.riscv.sf.vc.v.x.se.nxv16f32.i32.iXLen(iXLen, iXLen, i32, iXLen) 1709 1710define <1 x half> @test_sf_vc_fv_i_se_e16mf4(iXLen %vl) { 1711; CHECK-LABEL: test_sf_vc_fv_i_se_e16mf4: 1712; CHECK: # %bb.0: # %entry 1713; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma 1714; CHECK-NEXT: sf.vc.v.i 3, 8, v8, 4 1715; CHECK-NEXT: ret 1716entry: 1717 %0 = tail call <1 x half> @llvm.riscv.sf.vc.v.i.se.nxv1f16.iXLen.iXLen(iXLen 3, iXLen 8, iXLen 4, iXLen %vl) 1718 ret <1 x half> %0 1719} 1720 1721declare <1 x half> @llvm.riscv.sf.vc.v.i.se.nxv1f16.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen) 1722 1723define <2 x half> @test_sf_vc_fv_i_se_e16mf2(iXLen %vl) { 1724; CHECK-LABEL: test_sf_vc_fv_i_se_e16mf2: 1725; CHECK: # %bb.0: # %entry 1726; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma 1727; CHECK-NEXT: sf.vc.v.i 3, 8, v8, 4 1728; CHECK-NEXT: ret 1729entry: 1730 %0 = tail call <2 x half> @llvm.riscv.sf.vc.v.i.se.nxv2f16.iXLen.iXLen(iXLen 3, iXLen 8, iXLen 4, iXLen %vl) 1731 ret <2 x half> %0 1732} 1733 1734declare <2 x half> @llvm.riscv.sf.vc.v.i.se.nxv2f16.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen) 1735 1736define <4 x half> @test_sf_vc_fv_i_se_e16m1(iXLen %vl) { 1737; CHECK-LABEL: test_sf_vc_fv_i_se_e16m1: 1738; CHECK: # %bb.0: # %entry 1739; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma 1740; CHECK-NEXT: sf.vc.v.i 3, 8, v8, 4 1741; CHECK-NEXT: ret 1742entry: 1743 %0 = tail call <4 x half> @llvm.riscv.sf.vc.v.i.se.nxv4f16.iXLen.iXLen(iXLen 3, iXLen 8, iXLen 4, iXLen %vl) 1744 ret <4 x half> %0 1745} 1746 1747declare <4 x half> @llvm.riscv.sf.vc.v.i.se.nxv4f16.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen) 1748 1749define <8 x half> @test_sf_vc_fv_i_se_e16m2(iXLen %vl) { 1750; CHECK-LABEL: test_sf_vc_fv_i_se_e16m2: 1751; CHECK: # %bb.0: # %entry 1752; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma 1753; CHECK-NEXT: sf.vc.v.i 3, 8, v8, 4 1754; CHECK-NEXT: ret 1755entry: 1756 %0 = tail call <8 x half> @llvm.riscv.sf.vc.v.i.se.nxv8f16.iXLen.iXLen(iXLen 3, iXLen 8, iXLen 4, iXLen %vl) 1757 ret <8 x half> %0 1758} 1759 1760declare <8 x half> @llvm.riscv.sf.vc.v.i.se.nxv8f16.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen) 1761 1762define <16 x half> @test_sf_vc_fv_i_se_e16m4(iXLen %vl) { 1763; CHECK-LABEL: test_sf_vc_fv_i_se_e16m4: 1764; CHECK: # %bb.0: # %entry 1765; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma 1766; CHECK-NEXT: sf.vc.v.i 3, 8, v8, 4 1767; CHECK-NEXT: ret 1768entry: 1769 %0 = tail call <16 x half> @llvm.riscv.sf.vc.v.i.se.nxv16f16.iXLen.iXLen(iXLen 3, iXLen 8, iXLen 4, iXLen %vl) 1770 ret <16 x half> %0 1771} 1772 1773declare <16 x half> @llvm.riscv.sf.vc.v.i.se.nxv16f16.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen) 1774 1775define <32 x half> @test_sf_vc_fv_i_se_e16m8(iXLen %vl) { 1776; CHECK-LABEL: test_sf_vc_fv_i_se_e16m8: 1777; CHECK: # %bb.0: # %entry 1778; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma 1779; CHECK-NEXT: sf.vc.v.i 3, 8, v8, 4 1780; CHECK-NEXT: ret 1781entry: 1782 %0 = tail call <32 x half> @llvm.riscv.sf.vc.v.i.se.nxv32f16.iXLen.iXLen(iXLen 3, iXLen 8, iXLen 4, iXLen %vl) 1783 ret <32 x half> %0 1784} 1785 1786declare <32 x half> @llvm.riscv.sf.vc.v.i.se.nxv32f16.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen) 1787 1788define <1 x float> @test_sf_vc_fv_i_se_e32mf2(iXLen %vl) { 1789; CHECK-LABEL: test_sf_vc_fv_i_se_e32mf2: 1790; CHECK: # %bb.0: # %entry 1791; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma 1792; CHECK-NEXT: sf.vc.v.i 3, 8, v8, 4 1793; CHECK-NEXT: ret 1794entry: 1795 %0 = tail call <1 x float> @llvm.riscv.sf.vc.v.i.se.nxv1f32.iXLen.iXLen(iXLen 3, iXLen 8, iXLen 4, iXLen %vl) 1796 ret <1 x float> %0 1797} 1798 1799declare <1 x float> @llvm.riscv.sf.vc.v.i.se.nxv1f32.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen) 1800 1801define <2 x float> @test_sf_vc_fv_i_se_e32m1(iXLen %vl) { 1802; CHECK-LABEL: test_sf_vc_fv_i_se_e32m1: 1803; CHECK: # %bb.0: # %entry 1804; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma 1805; CHECK-NEXT: sf.vc.v.i 3, 8, v8, 4 1806; CHECK-NEXT: ret 1807entry: 1808 %0 = tail call <2 x float> @llvm.riscv.sf.vc.v.i.se.nxv2f32.iXLen.iXLen(iXLen 3, iXLen 8, iXLen 4, iXLen %vl) 1809 ret <2 x float> %0 1810} 1811 1812declare <2 x float> @llvm.riscv.sf.vc.v.i.se.nxv2f32.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen) 1813 1814define <4 x float> @test_sf_vc_fv_i_se_e32m2(iXLen %vl) { 1815; CHECK-LABEL: test_sf_vc_fv_i_se_e32m2: 1816; CHECK: # %bb.0: # %entry 1817; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma 1818; CHECK-NEXT: sf.vc.v.i 3, 8, v8, 4 1819; CHECK-NEXT: ret 1820entry: 1821 %0 = tail call <4 x float> @llvm.riscv.sf.vc.v.i.se.nxv4f32.iXLen.iXLen(iXLen 3, iXLen 8, iXLen 4, iXLen %vl) 1822 ret <4 x float> %0 1823} 1824 1825declare <4 x float> @llvm.riscv.sf.vc.v.i.se.nxv4f32.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen) 1826 1827define <8 x float> @test_sf_vc_fv_i_se_e32m4(iXLen %vl) { 1828; CHECK-LABEL: test_sf_vc_fv_i_se_e32m4: 1829; CHECK: # %bb.0: # %entry 1830; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma 1831; CHECK-NEXT: sf.vc.v.i 3, 8, v8, 4 1832; CHECK-NEXT: ret 1833entry: 1834 %0 = tail call <8 x float> @llvm.riscv.sf.vc.v.i.se.nxv8f32.iXLen.iXLen(iXLen 3, iXLen 8, iXLen 4, iXLen %vl) 1835 ret <8 x float> %0 1836} 1837 1838declare <8 x float> @llvm.riscv.sf.vc.v.i.se.nxv8f32.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen) 1839 1840define <16 x float> @test_sf_vc_fv_i_se_e32m8(iXLen %vl) { 1841; CHECK-LABEL: test_sf_vc_fv_i_se_e32m8: 1842; CHECK: # %bb.0: # %entry 1843; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma 1844; CHECK-NEXT: sf.vc.v.i 3, 8, v8, 4 1845; CHECK-NEXT: ret 1846entry: 1847 %0 = tail call <16 x float> @llvm.riscv.sf.vc.v.i.se.nxv16f32.iXLen.iXLen(iXLen 3, iXLen 8, iXLen 4, iXLen %vl) 1848 ret <16 x float> %0 1849} 1850 1851declare <16 x float> @llvm.riscv.sf.vc.v.i.se.nxv16f32.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen) 1852