brintos

brintos / llvm-project-archived public Read only

0
0
Text · 366.6 KiB · 1f763ce Raw
6368 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=riscv64 -mattr=+zve64d,+f,+d,+zvfh,+zvfbfmin \3; RUN:     -verify-machineinstrs < %s | FileCheck %s4 5define <vscale x 1 x i8> @test_vlseg2ff_nxv1i8_triscv.vector.tuple_nxv1i8_2t(ptr %base, i64 %vl, ptr %outvl) {6; CHECK-LABEL: test_vlseg2ff_nxv1i8_triscv.vector.tuple_nxv1i8_2t:7; CHECK:       # %bb.0: # %entry8; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma9; CHECK-NEXT:    vlseg2e8ff.v v7, (a0)10; CHECK-NEXT:    csrr a0, vl11; CHECK-NEXT:    sd a0, 0(a2)12; CHECK-NEXT:    ret13entry:14  %0 = tail call {target("riscv.vector.tuple", <vscale x 1 x i8>, 2), i64} @llvm.riscv.vlseg2ff.triscv.vector.tuple_nxv1i8_2t(target("riscv.vector.tuple", <vscale x 1 x i8>, 2) poison, ptr %base, i64 %vl, i64 3)15  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 1 x i8>, 2), i64} %0, 016  %2 = call <vscale x 1 x i8> @llvm.riscv.tuple.extract.nxv1i8.triscv.vector.tuple_nxv1i8_2t(target("riscv.vector.tuple", <vscale x 1 x i8>, 2) %1, i32 1)17  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 1 x i8>, 2), i64} %0, 118  store i64 %3, ptr %outvl19  ret <vscale x 1 x i8> %220}21 22define <vscale x 1 x i8> @test_vlseg2ff_mask_nxv1i8_triscv.vector.tuple_nxv1i8_2t(target("riscv.vector.tuple", <vscale x 1 x i8>, 2) %val, ptr %base, i64 %vl, <vscale x 1 x i1> %mask, ptr %outvl) {23; CHECK-LABEL: test_vlseg2ff_mask_nxv1i8_triscv.vector.tuple_nxv1i8_2t:24; CHECK:       # %bb.0: # %entry25; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, mu26; CHECK-NEXT:    vmv1r.v v7, v827; CHECK-NEXT:    vmv1r.v v8, v928; CHECK-NEXT:    vlseg2e8ff.v v7, (a0), v0.t29; CHECK-NEXT:    csrr a0, vl30; CHECK-NEXT:    sd a0, 0(a2)31; CHECK-NEXT:    ret32entry:33  %0 = tail call {target("riscv.vector.tuple", <vscale x 1 x i8>, 2), i64} @llvm.riscv.vlseg2ff.mask.triscv.vector.tuple_nxv1i8_2t.nxv1i1(target("riscv.vector.tuple", <vscale x 1 x i8>, 2) %val, ptr %base, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 3)34  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 1 x i8>, 2), i64} %0, 035  %2 = call <vscale x 1 x i8> @llvm.riscv.tuple.extract.nxv1i8.triscv.vector.tuple_nxv1i8_2t(target("riscv.vector.tuple", <vscale x 1 x i8>, 2) %1, i32 1)36  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 1 x i8>, 2), i64} %0, 137  store i64 %3, ptr %outvl38  ret <vscale x 1 x i8> %239}40 41define <vscale x 2 x i8> @test_vlseg2ff_nxv2i8_triscv.vector.tuple_nxv2i8_2t(ptr %base, i64 %vl, ptr %outvl) {42; CHECK-LABEL: test_vlseg2ff_nxv2i8_triscv.vector.tuple_nxv2i8_2t:43; CHECK:       # %bb.0: # %entry44; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma45; CHECK-NEXT:    vlseg2e8ff.v v7, (a0)46; CHECK-NEXT:    csrr a0, vl47; CHECK-NEXT:    sd a0, 0(a2)48; CHECK-NEXT:    ret49entry:50  %0 = tail call {target("riscv.vector.tuple", <vscale x 2 x i8>, 2), i64} @llvm.riscv.vlseg2ff.triscv.vector.tuple_nxv2i8_2t(target("riscv.vector.tuple", <vscale x 2 x i8>, 2) poison, ptr %base, i64 %vl, i64 3)51  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 2), i64} %0, 052  %2 = call <vscale x 2 x i8> @llvm.riscv.tuple.extract.nxv2i8.triscv.vector.tuple_nxv2i8_2t(target("riscv.vector.tuple", <vscale x 2 x i8>, 2) %1, i32 1)53  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 2), i64} %0, 154  store i64 %3, ptr %outvl55  ret <vscale x 2 x i8> %256}57 58define <vscale x 2 x i8> @test_vlseg2ff_mask_nxv2i8_triscv.vector.tuple_nxv2i8_2t(target("riscv.vector.tuple", <vscale x 2 x i8>, 2) %val, ptr %base, i64 %vl, <vscale x 2 x i1> %mask, ptr %outvl) {59; CHECK-LABEL: test_vlseg2ff_mask_nxv2i8_triscv.vector.tuple_nxv2i8_2t:60; CHECK:       # %bb.0: # %entry61; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, mu62; CHECK-NEXT:    vmv1r.v v7, v863; CHECK-NEXT:    vmv1r.v v8, v964; CHECK-NEXT:    vlseg2e8ff.v v7, (a0), v0.t65; CHECK-NEXT:    csrr a0, vl66; CHECK-NEXT:    sd a0, 0(a2)67; CHECK-NEXT:    ret68entry:69  %0 = tail call {target("riscv.vector.tuple", <vscale x 2 x i8>, 2), i64} @llvm.riscv.vlseg2ff.mask.triscv.vector.tuple_nxv2i8_2t.nxv2i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 2) %val, ptr %base, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 3)70  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 2), i64} %0, 071  %2 = call <vscale x 2 x i8> @llvm.riscv.tuple.extract.nxv2i8.triscv.vector.tuple_nxv2i8_2t(target("riscv.vector.tuple", <vscale x 2 x i8>, 2) %1, i32 1)72  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 2), i64} %0, 173  store i64 %3, ptr %outvl74  ret <vscale x 2 x i8> %275}76 77define <vscale x 4 x i8> @test_vlseg2ff_nxv4i8_triscv.vector.tuple_nxv4i8_2t(ptr %base, i64 %vl, ptr %outvl) {78; CHECK-LABEL: test_vlseg2ff_nxv4i8_triscv.vector.tuple_nxv4i8_2t:79; CHECK:       # %bb.0: # %entry80; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma81; CHECK-NEXT:    vlseg2e8ff.v v7, (a0)82; CHECK-NEXT:    csrr a0, vl83; CHECK-NEXT:    sd a0, 0(a2)84; CHECK-NEXT:    ret85entry:86  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 2), i64} @llvm.riscv.vlseg2ff.triscv.vector.tuple_nxv4i8_2t(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) poison, ptr %base, i64 %vl, i64 3)87  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 2), i64} %0, 088  %2 = call <vscale x 4 x i8> @llvm.riscv.tuple.extract.nxv4i8.triscv.vector.tuple_nxv4i8_2t(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) %1, i32 1)89  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 2), i64} %0, 190  store i64 %3, ptr %outvl91  ret <vscale x 4 x i8> %292}93 94define <vscale x 4 x i8> @test_vlseg2ff_mask_nxv4i8_triscv.vector.tuple_nxv4i8_2t(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) %val, ptr %base, i64 %vl, <vscale x 4 x i1> %mask, ptr %outvl) {95; CHECK-LABEL: test_vlseg2ff_mask_nxv4i8_triscv.vector.tuple_nxv4i8_2t:96; CHECK:       # %bb.0: # %entry97; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, mu98; CHECK-NEXT:    vmv1r.v v7, v899; CHECK-NEXT:    vmv1r.v v8, v9100; CHECK-NEXT:    vlseg2e8ff.v v7, (a0), v0.t101; CHECK-NEXT:    csrr a0, vl102; CHECK-NEXT:    sd a0, 0(a2)103; CHECK-NEXT:    ret104entry:105  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 2), i64} @llvm.riscv.vlseg2ff.mask.triscv.vector.tuple_nxv4i8_2t.nxv4i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) %val, ptr %base, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 3)106  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 2), i64} %0, 0107  %2 = call <vscale x 4 x i8> @llvm.riscv.tuple.extract.nxv4i8.triscv.vector.tuple_nxv4i8_2t(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) %1, i32 1)108  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 2), i64} %0, 1109  store i64 %3, ptr %outvl110  ret <vscale x 4 x i8> %2111}112 113define <vscale x 8 x i8> @test_vlseg2ff_nxv8i8_triscv.vector.tuple_nxv8i8_2t(ptr %base, i64 %vl, ptr %outvl) {114; CHECK-LABEL: test_vlseg2ff_nxv8i8_triscv.vector.tuple_nxv8i8_2t:115; CHECK:       # %bb.0: # %entry116; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma117; CHECK-NEXT:    vlseg2e8ff.v v7, (a0)118; CHECK-NEXT:    csrr a0, vl119; CHECK-NEXT:    sd a0, 0(a2)120; CHECK-NEXT:    ret121entry:122  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 2), i64} @llvm.riscv.vlseg2ff.triscv.vector.tuple_nxv8i8_2t(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) poison, ptr %base, i64 %vl, i64 3)123  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 2), i64} %0, 0124  %2 = call <vscale x 8 x i8> @llvm.riscv.tuple.extract.nxv8i8.triscv.vector.tuple_nxv8i8_2t(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) %1, i32 1)125  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 2), i64} %0, 1126  store i64 %3, ptr %outvl127  ret <vscale x 8 x i8> %2128}129 130define <vscale x 8 x i8> @test_vlseg2ff_mask_nxv8i8_triscv.vector.tuple_nxv8i8_2t(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) %val, ptr %base, i64 %vl, <vscale x 8 x i1> %mask, ptr %outvl) {131; CHECK-LABEL: test_vlseg2ff_mask_nxv8i8_triscv.vector.tuple_nxv8i8_2t:132; CHECK:       # %bb.0: # %entry133; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, mu134; CHECK-NEXT:    vmv1r.v v7, v8135; CHECK-NEXT:    vmv1r.v v8, v9136; CHECK-NEXT:    vlseg2e8ff.v v7, (a0), v0.t137; CHECK-NEXT:    csrr a0, vl138; CHECK-NEXT:    sd a0, 0(a2)139; CHECK-NEXT:    ret140entry:141  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 2), i64} @llvm.riscv.vlseg2ff.mask.triscv.vector.tuple_nxv8i8_2t.nxv8i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) %val, ptr %base, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 3)142  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 2), i64} %0, 0143  %2 = call <vscale x 8 x i8> @llvm.riscv.tuple.extract.nxv8i8.triscv.vector.tuple_nxv8i8_2t(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) %1, i32 1)144  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 2), i64} %0, 1145  store i64 %3, ptr %outvl146  ret <vscale x 8 x i8> %2147}148 149define <vscale x 16 x i8> @test_vlseg2ff_nxv16i8_triscv.vector.tuple_nxv16i8_2t(ptr %base, i64 %vl, ptr %outvl) {150; CHECK-LABEL: test_vlseg2ff_nxv16i8_triscv.vector.tuple_nxv16i8_2t:151; CHECK:       # %bb.0: # %entry152; CHECK-NEXT:    vsetvli zero, a1, e8, m2, ta, ma153; CHECK-NEXT:    vlseg2e8ff.v v6, (a0)154; CHECK-NEXT:    csrr a0, vl155; CHECK-NEXT:    sd a0, 0(a2)156; CHECK-NEXT:    ret157entry:158  %0 = tail call {target("riscv.vector.tuple", <vscale x 16 x i8>, 2), i64} @llvm.riscv.vlseg2ff.triscv.vector.tuple_nxv16i8_2t(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) poison, ptr %base, i64 %vl, i64 3)159  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 2), i64} %0, 0160  %2 = call <vscale x 16 x i8> @llvm.riscv.tuple.extract.nxv16i8.triscv.vector.tuple_nxv16i8_2t(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) %1, i32 1)161  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 2), i64} %0, 1162  store i64 %3, ptr %outvl163  ret <vscale x 16 x i8> %2164}165 166define <vscale x 16 x i8> @test_vlseg2ff_mask_nxv16i8_triscv.vector.tuple_nxv16i8_2t(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) %val, ptr %base, i64 %vl, <vscale x 16 x i1> %mask, ptr %outvl) {167; CHECK-LABEL: test_vlseg2ff_mask_nxv16i8_triscv.vector.tuple_nxv16i8_2t:168; CHECK:       # %bb.0: # %entry169; CHECK-NEXT:    vsetvli zero, a1, e8, m2, ta, mu170; CHECK-NEXT:    vmv2r.v v6, v8171; CHECK-NEXT:    vmv2r.v v8, v10172; CHECK-NEXT:    vlseg2e8ff.v v6, (a0), v0.t173; CHECK-NEXT:    csrr a0, vl174; CHECK-NEXT:    sd a0, 0(a2)175; CHECK-NEXT:    ret176entry:177  %0 = tail call {target("riscv.vector.tuple", <vscale x 16 x i8>, 2), i64} @llvm.riscv.vlseg2ff.mask.triscv.vector.tuple_nxv16i8_2t.nxv16i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) %val, ptr %base, <vscale x 16 x i1> %mask, i64 %vl, i64 1, i64 3)178  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 2), i64} %0, 0179  %2 = call <vscale x 16 x i8> @llvm.riscv.tuple.extract.nxv16i8.triscv.vector.tuple_nxv16i8_2t(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) %1, i32 1)180  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 2), i64} %0, 1181  store i64 %3, ptr %outvl182  ret <vscale x 16 x i8> %2183}184 185define <vscale x 32 x i8> @test_vlseg2ff_nxv32i8_triscv.vector.tuple_nxv32i8_2t(ptr %base, i64 %vl, ptr %outvl) {186; CHECK-LABEL: test_vlseg2ff_nxv32i8_triscv.vector.tuple_nxv32i8_2t:187; CHECK:       # %bb.0: # %entry188; CHECK-NEXT:    vsetvli zero, a1, e8, m4, ta, ma189; CHECK-NEXT:    vlseg2e8ff.v v4, (a0)190; CHECK-NEXT:    csrr a0, vl191; CHECK-NEXT:    sd a0, 0(a2)192; CHECK-NEXT:    ret193entry:194  %0 = tail call {target("riscv.vector.tuple", <vscale x 32 x i8>, 2), i64} @llvm.riscv.vlseg2ff.triscv.vector.tuple_nxv32i8_2t(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) poison, ptr %base, i64 %vl, i64 3)195  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 32 x i8>, 2), i64} %0, 0196  %2 = call <vscale x 32 x i8> @llvm.riscv.tuple.extract.nxv32i8.triscv.vector.tuple_nxv32i8_2t(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) %1, i32 1)197  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 32 x i8>, 2), i64} %0, 1198  store i64 %3, ptr %outvl199  ret <vscale x 32 x i8> %2200}201 202define <vscale x 32 x i8> @test_vlseg2ff_mask_nxv32i8_triscv.vector.tuple_nxv32i8_2t(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) %val, ptr %base, i64 %vl, <vscale x 32 x i1> %mask, ptr %outvl) {203; CHECK-LABEL: test_vlseg2ff_mask_nxv32i8_triscv.vector.tuple_nxv32i8_2t:204; CHECK:       # %bb.0: # %entry205; CHECK-NEXT:    vsetvli zero, a1, e8, m4, ta, mu206; CHECK-NEXT:    vmv4r.v v4, v8207; CHECK-NEXT:    vmv4r.v v8, v12208; CHECK-NEXT:    vlseg2e8ff.v v4, (a0), v0.t209; CHECK-NEXT:    csrr a0, vl210; CHECK-NEXT:    sd a0, 0(a2)211; CHECK-NEXT:    ret212entry:213  %0 = tail call {target("riscv.vector.tuple", <vscale x 32 x i8>, 2), i64} @llvm.riscv.vlseg2ff.mask.triscv.vector.tuple_nxv32i8_2t.nxv32i1(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) %val, ptr %base, <vscale x 32 x i1> %mask, i64 %vl, i64 1, i64 3)214  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 32 x i8>, 2), i64} %0, 0215  %2 = call <vscale x 32 x i8> @llvm.riscv.tuple.extract.nxv32i8.triscv.vector.tuple_nxv32i8_2t(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) %1, i32 1)216  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 32 x i8>, 2), i64} %0, 1217  store i64 %3, ptr %outvl218  ret <vscale x 32 x i8> %2219}220 221define <vscale x 1 x i8> @test_vlseg3ff_nxv1i8_triscv.vector.tuple_nxv1i8_3t(ptr %base, i64 %vl, ptr %outvl) {222; CHECK-LABEL: test_vlseg3ff_nxv1i8_triscv.vector.tuple_nxv1i8_3t:223; CHECK:       # %bb.0: # %entry224; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma225; CHECK-NEXT:    vlseg3e8ff.v v7, (a0)226; CHECK-NEXT:    csrr a0, vl227; CHECK-NEXT:    sd a0, 0(a2)228; CHECK-NEXT:    ret229entry:230  %0 = tail call {target("riscv.vector.tuple", <vscale x 1 x i8>, 3), i64} @llvm.riscv.vlseg3ff.triscv.vector.tuple_nxv1i8_3t(target("riscv.vector.tuple", <vscale x 1 x i8>, 3) poison, ptr %base, i64 %vl, i64 3)231  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 1 x i8>, 3), i64} %0, 0232  %2 = call <vscale x 1 x i8> @llvm.riscv.tuple.extract.nxv1i8.triscv.vector.tuple_nxv1i8_3t(target("riscv.vector.tuple", <vscale x 1 x i8>, 3) %1, i32 1)233  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 1 x i8>, 3), i64} %0, 1234  store i64 %3, ptr %outvl235  ret <vscale x 1 x i8> %2236}237 238define <vscale x 1 x i8> @test_vlseg3ff_mask_nxv1i8_triscv.vector.tuple_nxv1i8_3t(target("riscv.vector.tuple", <vscale x 1 x i8>, 3) %val, ptr %base, i64 %vl, <vscale x 1 x i1> %mask, ptr %outvl) {239; CHECK-LABEL: test_vlseg3ff_mask_nxv1i8_triscv.vector.tuple_nxv1i8_3t:240; CHECK:       # %bb.0: # %entry241; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, mu242; CHECK-NEXT:    vmv1r.v v7, v8243; CHECK-NEXT:    vmv1r.v v8, v9244; CHECK-NEXT:    vmv1r.v v9, v10245; CHECK-NEXT:    vlseg3e8ff.v v7, (a0), v0.t246; CHECK-NEXT:    csrr a0, vl247; CHECK-NEXT:    sd a0, 0(a2)248; CHECK-NEXT:    ret249entry:250  %0 = tail call {target("riscv.vector.tuple", <vscale x 1 x i8>, 3), i64} @llvm.riscv.vlseg3ff.mask.triscv.vector.tuple_nxv1i8_3t.nxv1i1(target("riscv.vector.tuple", <vscale x 1 x i8>, 3) %val, ptr %base, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 3)251  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 1 x i8>, 3), i64} %0, 0252  %2 = call <vscale x 1 x i8> @llvm.riscv.tuple.extract.nxv1i8.triscv.vector.tuple_nxv1i8_3t(target("riscv.vector.tuple", <vscale x 1 x i8>, 3) %1, i32 1)253  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 1 x i8>, 3), i64} %0, 1254  store i64 %3, ptr %outvl255  ret <vscale x 1 x i8> %2256}257 258define <vscale x 2 x i8> @test_vlseg3ff_nxv2i8_triscv.vector.tuple_nxv2i8_3t(ptr %base, i64 %vl, ptr %outvl) {259; CHECK-LABEL: test_vlseg3ff_nxv2i8_triscv.vector.tuple_nxv2i8_3t:260; CHECK:       # %bb.0: # %entry261; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma262; CHECK-NEXT:    vlseg3e8ff.v v7, (a0)263; CHECK-NEXT:    csrr a0, vl264; CHECK-NEXT:    sd a0, 0(a2)265; CHECK-NEXT:    ret266entry:267  %0 = tail call {target("riscv.vector.tuple", <vscale x 2 x i8>, 3), i64} @llvm.riscv.vlseg3ff.triscv.vector.tuple_nxv2i8_3t(target("riscv.vector.tuple", <vscale x 2 x i8>, 3) poison, ptr %base, i64 %vl, i64 3)268  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 3), i64} %0, 0269  %2 = call <vscale x 2 x i8> @llvm.riscv.tuple.extract.nxv2i8.triscv.vector.tuple_nxv2i8_3t(target("riscv.vector.tuple", <vscale x 2 x i8>, 3) %1, i32 1)270  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 3), i64} %0, 1271  store i64 %3, ptr %outvl272  ret <vscale x 2 x i8> %2273}274 275define <vscale x 2 x i8> @test_vlseg3ff_mask_nxv2i8_triscv.vector.tuple_nxv2i8_3t(target("riscv.vector.tuple", <vscale x 2 x i8>, 3) %val, ptr %base, i64 %vl, <vscale x 2 x i1> %mask, ptr %outvl) {276; CHECK-LABEL: test_vlseg3ff_mask_nxv2i8_triscv.vector.tuple_nxv2i8_3t:277; CHECK:       # %bb.0: # %entry278; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, mu279; CHECK-NEXT:    vmv1r.v v7, v8280; CHECK-NEXT:    vmv1r.v v8, v9281; CHECK-NEXT:    vmv1r.v v9, v10282; CHECK-NEXT:    vlseg3e8ff.v v7, (a0), v0.t283; CHECK-NEXT:    csrr a0, vl284; CHECK-NEXT:    sd a0, 0(a2)285; CHECK-NEXT:    ret286entry:287  %0 = tail call {target("riscv.vector.tuple", <vscale x 2 x i8>, 3), i64} @llvm.riscv.vlseg3ff.mask.triscv.vector.tuple_nxv2i8_3t.nxv2i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 3) %val, ptr %base, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 3)288  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 3), i64} %0, 0289  %2 = call <vscale x 2 x i8> @llvm.riscv.tuple.extract.nxv2i8.triscv.vector.tuple_nxv2i8_3t(target("riscv.vector.tuple", <vscale x 2 x i8>, 3) %1, i32 1)290  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 3), i64} %0, 1291  store i64 %3, ptr %outvl292  ret <vscale x 2 x i8> %2293}294 295define <vscale x 4 x i8> @test_vlseg3ff_nxv4i8_triscv.vector.tuple_nxv4i8_3t(ptr %base, i64 %vl, ptr %outvl) {296; CHECK-LABEL: test_vlseg3ff_nxv4i8_triscv.vector.tuple_nxv4i8_3t:297; CHECK:       # %bb.0: # %entry298; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma299; CHECK-NEXT:    vlseg3e8ff.v v7, (a0)300; CHECK-NEXT:    csrr a0, vl301; CHECK-NEXT:    sd a0, 0(a2)302; CHECK-NEXT:    ret303entry:304  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 3), i64} @llvm.riscv.vlseg3ff.triscv.vector.tuple_nxv4i8_3t(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) poison, ptr %base, i64 %vl, i64 3)305  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 3), i64} %0, 0306  %2 = call <vscale x 4 x i8> @llvm.riscv.tuple.extract.nxv4i8.triscv.vector.tuple_nxv4i8_3t(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) %1, i32 1)307  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 3), i64} %0, 1308  store i64 %3, ptr %outvl309  ret <vscale x 4 x i8> %2310}311 312define <vscale x 4 x i8> @test_vlseg3ff_mask_nxv4i8_triscv.vector.tuple_nxv4i8_3t(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) %val, ptr %base, i64 %vl, <vscale x 4 x i1> %mask, ptr %outvl) {313; CHECK-LABEL: test_vlseg3ff_mask_nxv4i8_triscv.vector.tuple_nxv4i8_3t:314; CHECK:       # %bb.0: # %entry315; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, mu316; CHECK-NEXT:    vmv1r.v v7, v8317; CHECK-NEXT:    vmv1r.v v8, v9318; CHECK-NEXT:    vmv1r.v v9, v10319; CHECK-NEXT:    vlseg3e8ff.v v7, (a0), v0.t320; CHECK-NEXT:    csrr a0, vl321; CHECK-NEXT:    sd a0, 0(a2)322; CHECK-NEXT:    ret323entry:324  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 3), i64} @llvm.riscv.vlseg3ff.mask.triscv.vector.tuple_nxv4i8_3t.nxv4i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) %val, ptr %base, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 3)325  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 3), i64} %0, 0326  %2 = call <vscale x 4 x i8> @llvm.riscv.tuple.extract.nxv4i8.triscv.vector.tuple_nxv4i8_3t(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) %1, i32 1)327  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 3), i64} %0, 1328  store i64 %3, ptr %outvl329  ret <vscale x 4 x i8> %2330}331 332define <vscale x 8 x i8> @test_vlseg3ff_nxv8i8_triscv.vector.tuple_nxv8i8_3t(ptr %base, i64 %vl, ptr %outvl) {333; CHECK-LABEL: test_vlseg3ff_nxv8i8_triscv.vector.tuple_nxv8i8_3t:334; CHECK:       # %bb.0: # %entry335; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma336; CHECK-NEXT:    vlseg3e8ff.v v7, (a0)337; CHECK-NEXT:    csrr a0, vl338; CHECK-NEXT:    sd a0, 0(a2)339; CHECK-NEXT:    ret340entry:341  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 3), i64} @llvm.riscv.vlseg3ff.triscv.vector.tuple_nxv8i8_3t(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) poison, ptr %base, i64 %vl, i64 3)342  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 3), i64} %0, 0343  %2 = call <vscale x 8 x i8> @llvm.riscv.tuple.extract.nxv8i8.triscv.vector.tuple_nxv8i8_3t(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) %1, i32 1)344  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 3), i64} %0, 1345  store i64 %3, ptr %outvl346  ret <vscale x 8 x i8> %2347}348 349define <vscale x 8 x i8> @test_vlseg3ff_mask_nxv8i8_triscv.vector.tuple_nxv8i8_3t(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) %val, ptr %base, i64 %vl, <vscale x 8 x i1> %mask, ptr %outvl) {350; CHECK-LABEL: test_vlseg3ff_mask_nxv8i8_triscv.vector.tuple_nxv8i8_3t:351; CHECK:       # %bb.0: # %entry352; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, mu353; CHECK-NEXT:    vmv1r.v v7, v8354; CHECK-NEXT:    vmv1r.v v8, v9355; CHECK-NEXT:    vmv1r.v v9, v10356; CHECK-NEXT:    vlseg3e8ff.v v7, (a0), v0.t357; CHECK-NEXT:    csrr a0, vl358; CHECK-NEXT:    sd a0, 0(a2)359; CHECK-NEXT:    ret360entry:361  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 3), i64} @llvm.riscv.vlseg3ff.mask.triscv.vector.tuple_nxv8i8_3t.nxv8i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) %val, ptr %base, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 3)362  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 3), i64} %0, 0363  %2 = call <vscale x 8 x i8> @llvm.riscv.tuple.extract.nxv8i8.triscv.vector.tuple_nxv8i8_3t(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) %1, i32 1)364  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 3), i64} %0, 1365  store i64 %3, ptr %outvl366  ret <vscale x 8 x i8> %2367}368 369define <vscale x 16 x i8> @test_vlseg3ff_nxv16i8_triscv.vector.tuple_nxv16i8_3t(ptr %base, i64 %vl, ptr %outvl) {370; CHECK-LABEL: test_vlseg3ff_nxv16i8_triscv.vector.tuple_nxv16i8_3t:371; CHECK:       # %bb.0: # %entry372; CHECK-NEXT:    vsetvli zero, a1, e8, m2, ta, ma373; CHECK-NEXT:    vlseg3e8ff.v v6, (a0)374; CHECK-NEXT:    csrr a0, vl375; CHECK-NEXT:    sd a0, 0(a2)376; CHECK-NEXT:    ret377entry:378  %0 = tail call {target("riscv.vector.tuple", <vscale x 16 x i8>, 3), i64} @llvm.riscv.vlseg3ff.triscv.vector.tuple_nxv16i8_3t(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) poison, ptr %base, i64 %vl, i64 3)379  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 3), i64} %0, 0380  %2 = call <vscale x 16 x i8> @llvm.riscv.tuple.extract.nxv16i8.triscv.vector.tuple_nxv16i8_3t(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) %1, i32 1)381  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 3), i64} %0, 1382  store i64 %3, ptr %outvl383  ret <vscale x 16 x i8> %2384}385 386define <vscale x 16 x i8> @test_vlseg3ff_mask_nxv16i8_triscv.vector.tuple_nxv16i8_3t(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) %val, ptr %base, i64 %vl, <vscale x 16 x i1> %mask, ptr %outvl) {387; CHECK-LABEL: test_vlseg3ff_mask_nxv16i8_triscv.vector.tuple_nxv16i8_3t:388; CHECK:       # %bb.0: # %entry389; CHECK-NEXT:    vsetvli zero, a1, e8, m2, ta, mu390; CHECK-NEXT:    vmv2r.v v6, v8391; CHECK-NEXT:    vmv2r.v v8, v10392; CHECK-NEXT:    vmv2r.v v10, v12393; CHECK-NEXT:    vlseg3e8ff.v v6, (a0), v0.t394; CHECK-NEXT:    csrr a0, vl395; CHECK-NEXT:    sd a0, 0(a2)396; CHECK-NEXT:    ret397entry:398  %0 = tail call {target("riscv.vector.tuple", <vscale x 16 x i8>, 3), i64} @llvm.riscv.vlseg3ff.mask.triscv.vector.tuple_nxv16i8_3t.nxv16i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) %val, ptr %base, <vscale x 16 x i1> %mask, i64 %vl, i64 1, i64 3)399  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 3), i64} %0, 0400  %2 = call <vscale x 16 x i8> @llvm.riscv.tuple.extract.nxv16i8.triscv.vector.tuple_nxv16i8_3t(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) %1, i32 1)401  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 3), i64} %0, 1402  store i64 %3, ptr %outvl403  ret <vscale x 16 x i8> %2404}405 406define <vscale x 1 x i8> @test_vlseg4ff_nxv1i8_triscv.vector.tuple_nxv1i8_4t(ptr %base, i64 %vl, ptr %outvl) {407; CHECK-LABEL: test_vlseg4ff_nxv1i8_triscv.vector.tuple_nxv1i8_4t:408; CHECK:       # %bb.0: # %entry409; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma410; CHECK-NEXT:    vlseg4e8ff.v v7, (a0)411; CHECK-NEXT:    csrr a0, vl412; CHECK-NEXT:    sd a0, 0(a2)413; CHECK-NEXT:    ret414entry:415  %0 = tail call {target("riscv.vector.tuple", <vscale x 1 x i8>, 4), i64} @llvm.riscv.vlseg4ff.triscv.vector.tuple_nxv1i8_4t(target("riscv.vector.tuple", <vscale x 1 x i8>, 4) poison, ptr %base, i64 %vl, i64 3)416  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 1 x i8>, 4), i64} %0, 0417  %2 = call <vscale x 1 x i8> @llvm.riscv.tuple.extract.nxv1i8.triscv.vector.tuple_nxv1i8_4t(target("riscv.vector.tuple", <vscale x 1 x i8>, 4) %1, i32 1)418  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 1 x i8>, 4), i64} %0, 1419  store i64 %3, ptr %outvl420  ret <vscale x 1 x i8> %2421}422 423define <vscale x 1 x i8> @test_vlseg4ff_mask_nxv1i8_triscv.vector.tuple_nxv1i8_4t(target("riscv.vector.tuple", <vscale x 1 x i8>, 4) %val, ptr %base, i64 %vl, <vscale x 1 x i1> %mask, ptr %outvl) {424; CHECK-LABEL: test_vlseg4ff_mask_nxv1i8_triscv.vector.tuple_nxv1i8_4t:425; CHECK:       # %bb.0: # %entry426; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, mu427; CHECK-NEXT:    vmv1r.v v7, v8428; CHECK-NEXT:    vmv1r.v v8, v9429; CHECK-NEXT:    vmv1r.v v9, v10430; CHECK-NEXT:    vmv1r.v v10, v11431; CHECK-NEXT:    vlseg4e8ff.v v7, (a0), v0.t432; CHECK-NEXT:    csrr a0, vl433; CHECK-NEXT:    sd a0, 0(a2)434; CHECK-NEXT:    ret435entry:436  %0 = tail call {target("riscv.vector.tuple", <vscale x 1 x i8>, 4), i64} @llvm.riscv.vlseg4ff.mask.triscv.vector.tuple_nxv1i8_4t.nxv1i1(target("riscv.vector.tuple", <vscale x 1 x i8>, 4) %val, ptr %base, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 3)437  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 1 x i8>, 4), i64} %0, 0438  %2 = call <vscale x 1 x i8> @llvm.riscv.tuple.extract.nxv1i8.triscv.vector.tuple_nxv1i8_4t(target("riscv.vector.tuple", <vscale x 1 x i8>, 4) %1, i32 1)439  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 1 x i8>, 4), i64} %0, 1440  store i64 %3, ptr %outvl441  ret <vscale x 1 x i8> %2442}443 444define <vscale x 2 x i8> @test_vlseg4ff_nxv2i8_triscv.vector.tuple_nxv2i8_4t(ptr %base, i64 %vl, ptr %outvl) {445; CHECK-LABEL: test_vlseg4ff_nxv2i8_triscv.vector.tuple_nxv2i8_4t:446; CHECK:       # %bb.0: # %entry447; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma448; CHECK-NEXT:    vlseg4e8ff.v v7, (a0)449; CHECK-NEXT:    csrr a0, vl450; CHECK-NEXT:    sd a0, 0(a2)451; CHECK-NEXT:    ret452entry:453  %0 = tail call {target("riscv.vector.tuple", <vscale x 2 x i8>, 4), i64} @llvm.riscv.vlseg4ff.triscv.vector.tuple_nxv2i8_4t(target("riscv.vector.tuple", <vscale x 2 x i8>, 4) poison, ptr %base, i64 %vl, i64 3)454  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 4), i64} %0, 0455  %2 = call <vscale x 2 x i8> @llvm.riscv.tuple.extract.nxv2i8.triscv.vector.tuple_nxv2i8_4t(target("riscv.vector.tuple", <vscale x 2 x i8>, 4) %1, i32 1)456  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 4), i64} %0, 1457  store i64 %3, ptr %outvl458  ret <vscale x 2 x i8> %2459}460 461define <vscale x 2 x i8> @test_vlseg4ff_mask_nxv2i8_triscv.vector.tuple_nxv2i8_4t(target("riscv.vector.tuple", <vscale x 2 x i8>, 4) %val, ptr %base, i64 %vl, <vscale x 2 x i1> %mask, ptr %outvl) {462; CHECK-LABEL: test_vlseg4ff_mask_nxv2i8_triscv.vector.tuple_nxv2i8_4t:463; CHECK:       # %bb.0: # %entry464; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, mu465; CHECK-NEXT:    vmv1r.v v7, v8466; CHECK-NEXT:    vmv1r.v v8, v9467; CHECK-NEXT:    vmv1r.v v9, v10468; CHECK-NEXT:    vmv1r.v v10, v11469; CHECK-NEXT:    vlseg4e8ff.v v7, (a0), v0.t470; CHECK-NEXT:    csrr a0, vl471; CHECK-NEXT:    sd a0, 0(a2)472; CHECK-NEXT:    ret473entry:474  %0 = tail call {target("riscv.vector.tuple", <vscale x 2 x i8>, 4), i64} @llvm.riscv.vlseg4ff.mask.triscv.vector.tuple_nxv2i8_4t.nxv2i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 4) %val, ptr %base, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 3)475  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 4), i64} %0, 0476  %2 = call <vscale x 2 x i8> @llvm.riscv.tuple.extract.nxv2i8.triscv.vector.tuple_nxv2i8_4t(target("riscv.vector.tuple", <vscale x 2 x i8>, 4) %1, i32 1)477  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 4), i64} %0, 1478  store i64 %3, ptr %outvl479  ret <vscale x 2 x i8> %2480}481 482define <vscale x 4 x i8> @test_vlseg4ff_nxv4i8_triscv.vector.tuple_nxv4i8_4t(ptr %base, i64 %vl, ptr %outvl) {483; CHECK-LABEL: test_vlseg4ff_nxv4i8_triscv.vector.tuple_nxv4i8_4t:484; CHECK:       # %bb.0: # %entry485; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma486; CHECK-NEXT:    vlseg4e8ff.v v7, (a0)487; CHECK-NEXT:    csrr a0, vl488; CHECK-NEXT:    sd a0, 0(a2)489; CHECK-NEXT:    ret490entry:491  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 4), i64} @llvm.riscv.vlseg4ff.triscv.vector.tuple_nxv4i8_4t(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) poison, ptr %base, i64 %vl, i64 3)492  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 4), i64} %0, 0493  %2 = call <vscale x 4 x i8> @llvm.riscv.tuple.extract.nxv4i8.triscv.vector.tuple_nxv4i8_4t(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) %1, i32 1)494  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 4), i64} %0, 1495  store i64 %3, ptr %outvl496  ret <vscale x 4 x i8> %2497}498 499define <vscale x 4 x i8> @test_vlseg4ff_mask_nxv4i8_triscv.vector.tuple_nxv4i8_4t(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) %val, ptr %base, i64 %vl, <vscale x 4 x i1> %mask, ptr %outvl) {500; CHECK-LABEL: test_vlseg4ff_mask_nxv4i8_triscv.vector.tuple_nxv4i8_4t:501; CHECK:       # %bb.0: # %entry502; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, mu503; CHECK-NEXT:    vmv1r.v v7, v8504; CHECK-NEXT:    vmv1r.v v8, v9505; CHECK-NEXT:    vmv1r.v v9, v10506; CHECK-NEXT:    vmv1r.v v10, v11507; CHECK-NEXT:    vlseg4e8ff.v v7, (a0), v0.t508; CHECK-NEXT:    csrr a0, vl509; CHECK-NEXT:    sd a0, 0(a2)510; CHECK-NEXT:    ret511entry:512  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 4), i64} @llvm.riscv.vlseg4ff.mask.triscv.vector.tuple_nxv4i8_4t.nxv4i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) %val, ptr %base, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 3)513  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 4), i64} %0, 0514  %2 = call <vscale x 4 x i8> @llvm.riscv.tuple.extract.nxv4i8.triscv.vector.tuple_nxv4i8_4t(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) %1, i32 1)515  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 4), i64} %0, 1516  store i64 %3, ptr %outvl517  ret <vscale x 4 x i8> %2518}519 520define <vscale x 8 x i8> @test_vlseg4ff_nxv8i8_triscv.vector.tuple_nxv8i8_4t(ptr %base, i64 %vl, ptr %outvl) {521; CHECK-LABEL: test_vlseg4ff_nxv8i8_triscv.vector.tuple_nxv8i8_4t:522; CHECK:       # %bb.0: # %entry523; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma524; CHECK-NEXT:    vlseg4e8ff.v v7, (a0)525; CHECK-NEXT:    csrr a0, vl526; CHECK-NEXT:    sd a0, 0(a2)527; CHECK-NEXT:    ret528entry:529  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 4), i64} @llvm.riscv.vlseg4ff.triscv.vector.tuple_nxv8i8_4t(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) poison, ptr %base, i64 %vl, i64 3)530  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 4), i64} %0, 0531  %2 = call <vscale x 8 x i8> @llvm.riscv.tuple.extract.nxv8i8.triscv.vector.tuple_nxv8i8_4t(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) %1, i32 1)532  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 4), i64} %0, 1533  store i64 %3, ptr %outvl534  ret <vscale x 8 x i8> %2535}536 537define <vscale x 8 x i8> @test_vlseg4ff_mask_nxv8i8_triscv.vector.tuple_nxv8i8_4t(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) %val, ptr %base, i64 %vl, <vscale x 8 x i1> %mask, ptr %outvl) {538; CHECK-LABEL: test_vlseg4ff_mask_nxv8i8_triscv.vector.tuple_nxv8i8_4t:539; CHECK:       # %bb.0: # %entry540; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, mu541; CHECK-NEXT:    vmv1r.v v7, v8542; CHECK-NEXT:    vmv1r.v v8, v9543; CHECK-NEXT:    vmv1r.v v9, v10544; CHECK-NEXT:    vmv1r.v v10, v11545; CHECK-NEXT:    vlseg4e8ff.v v7, (a0), v0.t546; CHECK-NEXT:    csrr a0, vl547; CHECK-NEXT:    sd a0, 0(a2)548; CHECK-NEXT:    ret549entry:550  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 4), i64} @llvm.riscv.vlseg4ff.mask.triscv.vector.tuple_nxv8i8_4t.nxv8i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) %val, ptr %base, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 3)551  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 4), i64} %0, 0552  %2 = call <vscale x 8 x i8> @llvm.riscv.tuple.extract.nxv8i8.triscv.vector.tuple_nxv8i8_4t(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) %1, i32 1)553  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 4), i64} %0, 1554  store i64 %3, ptr %outvl555  ret <vscale x 8 x i8> %2556}557 558define <vscale x 16 x i8> @test_vlseg4ff_nxv16i8_triscv.vector.tuple_nxv16i8_4t(ptr %base, i64 %vl, ptr %outvl) {559; CHECK-LABEL: test_vlseg4ff_nxv16i8_triscv.vector.tuple_nxv16i8_4t:560; CHECK:       # %bb.0: # %entry561; CHECK-NEXT:    vsetvli zero, a1, e8, m2, ta, ma562; CHECK-NEXT:    vlseg4e8ff.v v6, (a0)563; CHECK-NEXT:    csrr a0, vl564; CHECK-NEXT:    sd a0, 0(a2)565; CHECK-NEXT:    ret566entry:567  %0 = tail call {target("riscv.vector.tuple", <vscale x 16 x i8>, 4), i64} @llvm.riscv.vlseg4ff.triscv.vector.tuple_nxv16i8_4t(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) poison, ptr %base, i64 %vl, i64 3)568  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 4), i64} %0, 0569  %2 = call <vscale x 16 x i8> @llvm.riscv.tuple.extract.nxv16i8.triscv.vector.tuple_nxv16i8_4t(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) %1, i32 1)570  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 4), i64} %0, 1571  store i64 %3, ptr %outvl572  ret <vscale x 16 x i8> %2573}574 575define <vscale x 16 x i8> @test_vlseg4ff_mask_nxv16i8_triscv.vector.tuple_nxv16i8_4t(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) %val, ptr %base, i64 %vl, <vscale x 16 x i1> %mask, ptr %outvl) {576; CHECK-LABEL: test_vlseg4ff_mask_nxv16i8_triscv.vector.tuple_nxv16i8_4t:577; CHECK:       # %bb.0: # %entry578; CHECK-NEXT:    vsetvli zero, a1, e8, m2, ta, mu579; CHECK-NEXT:    vmv2r.v v6, v8580; CHECK-NEXT:    vmv2r.v v8, v10581; CHECK-NEXT:    vmv2r.v v10, v12582; CHECK-NEXT:    vmv2r.v v12, v14583; CHECK-NEXT:    vlseg4e8ff.v v6, (a0), v0.t584; CHECK-NEXT:    csrr a0, vl585; CHECK-NEXT:    sd a0, 0(a2)586; CHECK-NEXT:    ret587entry:588  %0 = tail call {target("riscv.vector.tuple", <vscale x 16 x i8>, 4), i64} @llvm.riscv.vlseg4ff.mask.triscv.vector.tuple_nxv16i8_4t.nxv16i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) %val, ptr %base, <vscale x 16 x i1> %mask, i64 %vl, i64 1, i64 3)589  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 4), i64} %0, 0590  %2 = call <vscale x 16 x i8> @llvm.riscv.tuple.extract.nxv16i8.triscv.vector.tuple_nxv16i8_4t(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) %1, i32 1)591  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 4), i64} %0, 1592  store i64 %3, ptr %outvl593  ret <vscale x 16 x i8> %2594}595 596define <vscale x 1 x i8> @test_vlseg5ff_nxv1i8_triscv.vector.tuple_nxv1i8_5t(ptr %base, i64 %vl, ptr %outvl) {597; CHECK-LABEL: test_vlseg5ff_nxv1i8_triscv.vector.tuple_nxv1i8_5t:598; CHECK:       # %bb.0: # %entry599; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma600; CHECK-NEXT:    vlseg5e8ff.v v7, (a0)601; CHECK-NEXT:    csrr a0, vl602; CHECK-NEXT:    sd a0, 0(a2)603; CHECK-NEXT:    ret604entry:605  %0 = tail call {target("riscv.vector.tuple", <vscale x 1 x i8>, 5), i64} @llvm.riscv.vlseg5ff.triscv.vector.tuple_nxv1i8_5t(target("riscv.vector.tuple", <vscale x 1 x i8>, 5) poison, ptr %base, i64 %vl, i64 3)606  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 1 x i8>, 5), i64} %0, 0607  %2 = call <vscale x 1 x i8> @llvm.riscv.tuple.extract.nxv1i8.triscv.vector.tuple_nxv1i8_5t(target("riscv.vector.tuple", <vscale x 1 x i8>, 5) %1, i32 1)608  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 1 x i8>, 5), i64} %0, 1609  store i64 %3, ptr %outvl610  ret <vscale x 1 x i8> %2611}612 613define <vscale x 1 x i8> @test_vlseg5ff_mask_nxv1i8_triscv.vector.tuple_nxv1i8_5t(target("riscv.vector.tuple", <vscale x 1 x i8>, 5) %val, ptr %base, i64 %vl, <vscale x 1 x i1> %mask, ptr %outvl) {614; CHECK-LABEL: test_vlseg5ff_mask_nxv1i8_triscv.vector.tuple_nxv1i8_5t:615; CHECK:       # %bb.0: # %entry616; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, mu617; CHECK-NEXT:    vmv1r.v v7, v8618; CHECK-NEXT:    vmv1r.v v8, v9619; CHECK-NEXT:    vmv1r.v v9, v10620; CHECK-NEXT:    vmv1r.v v10, v11621; CHECK-NEXT:    vmv1r.v v11, v12622; CHECK-NEXT:    vlseg5e8ff.v v7, (a0), v0.t623; CHECK-NEXT:    csrr a0, vl624; CHECK-NEXT:    sd a0, 0(a2)625; CHECK-NEXT:    ret626entry:627  %0 = tail call {target("riscv.vector.tuple", <vscale x 1 x i8>, 5), i64} @llvm.riscv.vlseg5ff.mask.triscv.vector.tuple_nxv1i8_5t.nxv1i1(target("riscv.vector.tuple", <vscale x 1 x i8>, 5) %val, ptr %base, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 3)628  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 1 x i8>, 5), i64} %0, 0629  %2 = call <vscale x 1 x i8> @llvm.riscv.tuple.extract.nxv1i8.triscv.vector.tuple_nxv1i8_5t(target("riscv.vector.tuple", <vscale x 1 x i8>, 5) %1, i32 1)630  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 1 x i8>, 5), i64} %0, 1631  store i64 %3, ptr %outvl632  ret <vscale x 1 x i8> %2633}634 635define <vscale x 2 x i8> @test_vlseg5ff_nxv2i8_triscv.vector.tuple_nxv2i8_5t(ptr %base, i64 %vl, ptr %outvl) {636; CHECK-LABEL: test_vlseg5ff_nxv2i8_triscv.vector.tuple_nxv2i8_5t:637; CHECK:       # %bb.0: # %entry638; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma639; CHECK-NEXT:    vlseg5e8ff.v v7, (a0)640; CHECK-NEXT:    csrr a0, vl641; CHECK-NEXT:    sd a0, 0(a2)642; CHECK-NEXT:    ret643entry:644  %0 = tail call {target("riscv.vector.tuple", <vscale x 2 x i8>, 5), i64} @llvm.riscv.vlseg5ff.triscv.vector.tuple_nxv2i8_5t(target("riscv.vector.tuple", <vscale x 2 x i8>, 5) poison, ptr %base, i64 %vl, i64 3)645  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 5), i64} %0, 0646  %2 = call <vscale x 2 x i8> @llvm.riscv.tuple.extract.nxv2i8.triscv.vector.tuple_nxv2i8_5t(target("riscv.vector.tuple", <vscale x 2 x i8>, 5) %1, i32 1)647  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 5), i64} %0, 1648  store i64 %3, ptr %outvl649  ret <vscale x 2 x i8> %2650}651 652define <vscale x 2 x i8> @test_vlseg5ff_mask_nxv2i8_triscv.vector.tuple_nxv2i8_5t(target("riscv.vector.tuple", <vscale x 2 x i8>, 5) %val, ptr %base, i64 %vl, <vscale x 2 x i1> %mask, ptr %outvl) {653; CHECK-LABEL: test_vlseg5ff_mask_nxv2i8_triscv.vector.tuple_nxv2i8_5t:654; CHECK:       # %bb.0: # %entry655; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, mu656; CHECK-NEXT:    vmv1r.v v7, v8657; CHECK-NEXT:    vmv1r.v v8, v9658; CHECK-NEXT:    vmv1r.v v9, v10659; CHECK-NEXT:    vmv1r.v v10, v11660; CHECK-NEXT:    vmv1r.v v11, v12661; CHECK-NEXT:    vlseg5e8ff.v v7, (a0), v0.t662; CHECK-NEXT:    csrr a0, vl663; CHECK-NEXT:    sd a0, 0(a2)664; CHECK-NEXT:    ret665entry:666  %0 = tail call {target("riscv.vector.tuple", <vscale x 2 x i8>, 5), i64} @llvm.riscv.vlseg5ff.mask.triscv.vector.tuple_nxv2i8_5t.nxv2i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 5) %val, ptr %base, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 3)667  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 5), i64} %0, 0668  %2 = call <vscale x 2 x i8> @llvm.riscv.tuple.extract.nxv2i8.triscv.vector.tuple_nxv2i8_5t(target("riscv.vector.tuple", <vscale x 2 x i8>, 5) %1, i32 1)669  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 5), i64} %0, 1670  store i64 %3, ptr %outvl671  ret <vscale x 2 x i8> %2672}673 674define <vscale x 4 x i8> @test_vlseg5ff_nxv4i8_triscv.vector.tuple_nxv4i8_5t(ptr %base, i64 %vl, ptr %outvl) {675; CHECK-LABEL: test_vlseg5ff_nxv4i8_triscv.vector.tuple_nxv4i8_5t:676; CHECK:       # %bb.0: # %entry677; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma678; CHECK-NEXT:    vlseg5e8ff.v v7, (a0)679; CHECK-NEXT:    csrr a0, vl680; CHECK-NEXT:    sd a0, 0(a2)681; CHECK-NEXT:    ret682entry:683  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 5), i64} @llvm.riscv.vlseg5ff.triscv.vector.tuple_nxv4i8_5t(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) poison, ptr %base, i64 %vl, i64 3)684  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 5), i64} %0, 0685  %2 = call <vscale x 4 x i8> @llvm.riscv.tuple.extract.nxv4i8.triscv.vector.tuple_nxv4i8_5t(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) %1, i32 1)686  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 5), i64} %0, 1687  store i64 %3, ptr %outvl688  ret <vscale x 4 x i8> %2689}690 691define <vscale x 4 x i8> @test_vlseg5ff_mask_nxv4i8_triscv.vector.tuple_nxv4i8_5t(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) %val, ptr %base, i64 %vl, <vscale x 4 x i1> %mask, ptr %outvl) {692; CHECK-LABEL: test_vlseg5ff_mask_nxv4i8_triscv.vector.tuple_nxv4i8_5t:693; CHECK:       # %bb.0: # %entry694; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, mu695; CHECK-NEXT:    vmv1r.v v7, v8696; CHECK-NEXT:    vmv1r.v v8, v9697; CHECK-NEXT:    vmv1r.v v9, v10698; CHECK-NEXT:    vmv1r.v v10, v11699; CHECK-NEXT:    vmv1r.v v11, v12700; CHECK-NEXT:    vlseg5e8ff.v v7, (a0), v0.t701; CHECK-NEXT:    csrr a0, vl702; CHECK-NEXT:    sd a0, 0(a2)703; CHECK-NEXT:    ret704entry:705  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 5), i64} @llvm.riscv.vlseg5ff.mask.triscv.vector.tuple_nxv4i8_5t.nxv4i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) %val, ptr %base, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 3)706  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 5), i64} %0, 0707  %2 = call <vscale x 4 x i8> @llvm.riscv.tuple.extract.nxv4i8.triscv.vector.tuple_nxv4i8_5t(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) %1, i32 1)708  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 5), i64} %0, 1709  store i64 %3, ptr %outvl710  ret <vscale x 4 x i8> %2711}712 713define <vscale x 8 x i8> @test_vlseg5ff_nxv8i8_triscv.vector.tuple_nxv8i8_5t(ptr %base, i64 %vl, ptr %outvl) {714; CHECK-LABEL: test_vlseg5ff_nxv8i8_triscv.vector.tuple_nxv8i8_5t:715; CHECK:       # %bb.0: # %entry716; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma717; CHECK-NEXT:    vlseg5e8ff.v v7, (a0)718; CHECK-NEXT:    csrr a0, vl719; CHECK-NEXT:    sd a0, 0(a2)720; CHECK-NEXT:    ret721entry:722  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 5), i64} @llvm.riscv.vlseg5ff.triscv.vector.tuple_nxv8i8_5t(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) poison, ptr %base, i64 %vl, i64 3)723  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 5), i64} %0, 0724  %2 = call <vscale x 8 x i8> @llvm.riscv.tuple.extract.nxv8i8.triscv.vector.tuple_nxv8i8_5t(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) %1, i32 1)725  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 5), i64} %0, 1726  store i64 %3, ptr %outvl727  ret <vscale x 8 x i8> %2728}729 730define <vscale x 8 x i8> @test_vlseg5ff_mask_nxv8i8_triscv.vector.tuple_nxv8i8_5t(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) %val, ptr %base, i64 %vl, <vscale x 8 x i1> %mask, ptr %outvl) {731; CHECK-LABEL: test_vlseg5ff_mask_nxv8i8_triscv.vector.tuple_nxv8i8_5t:732; CHECK:       # %bb.0: # %entry733; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, mu734; CHECK-NEXT:    vmv1r.v v7, v8735; CHECK-NEXT:    vmv1r.v v8, v9736; CHECK-NEXT:    vmv1r.v v9, v10737; CHECK-NEXT:    vmv1r.v v10, v11738; CHECK-NEXT:    vmv1r.v v11, v12739; CHECK-NEXT:    vlseg5e8ff.v v7, (a0), v0.t740; CHECK-NEXT:    csrr a0, vl741; CHECK-NEXT:    sd a0, 0(a2)742; CHECK-NEXT:    ret743entry:744  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 5), i64} @llvm.riscv.vlseg5ff.mask.triscv.vector.tuple_nxv8i8_5t.nxv8i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) %val, ptr %base, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 3)745  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 5), i64} %0, 0746  %2 = call <vscale x 8 x i8> @llvm.riscv.tuple.extract.nxv8i8.triscv.vector.tuple_nxv8i8_5t(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) %1, i32 1)747  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 5), i64} %0, 1748  store i64 %3, ptr %outvl749  ret <vscale x 8 x i8> %2750}751 752define <vscale x 1 x i8> @test_vlseg6ff_nxv1i8_triscv.vector.tuple_nxv1i8_6t(ptr %base, i64 %vl, ptr %outvl) {753; CHECK-LABEL: test_vlseg6ff_nxv1i8_triscv.vector.tuple_nxv1i8_6t:754; CHECK:       # %bb.0: # %entry755; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma756; CHECK-NEXT:    vlseg6e8ff.v v7, (a0)757; CHECK-NEXT:    csrr a0, vl758; CHECK-NEXT:    sd a0, 0(a2)759; CHECK-NEXT:    ret760entry:761  %0 = tail call {target("riscv.vector.tuple", <vscale x 1 x i8>, 6), i64} @llvm.riscv.vlseg6ff.triscv.vector.tuple_nxv1i8_6t(target("riscv.vector.tuple", <vscale x 1 x i8>, 6) poison, ptr %base, i64 %vl, i64 3)762  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 1 x i8>, 6), i64} %0, 0763  %2 = call <vscale x 1 x i8> @llvm.riscv.tuple.extract.nxv1i8.triscv.vector.tuple_nxv1i8_6t(target("riscv.vector.tuple", <vscale x 1 x i8>, 6) %1, i32 1)764  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 1 x i8>, 6), i64} %0, 1765  store i64 %3, ptr %outvl766  ret <vscale x 1 x i8> %2767}768 769define <vscale x 1 x i8> @test_vlseg6ff_mask_nxv1i8_triscv.vector.tuple_nxv1i8_6t(target("riscv.vector.tuple", <vscale x 1 x i8>, 6) %val, ptr %base, i64 %vl, <vscale x 1 x i1> %mask, ptr %outvl) {770; CHECK-LABEL: test_vlseg6ff_mask_nxv1i8_triscv.vector.tuple_nxv1i8_6t:771; CHECK:       # %bb.0: # %entry772; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, mu773; CHECK-NEXT:    vmv1r.v v7, v8774; CHECK-NEXT:    vmv1r.v v8, v9775; CHECK-NEXT:    vmv1r.v v9, v10776; CHECK-NEXT:    vmv1r.v v10, v11777; CHECK-NEXT:    vmv1r.v v11, v12778; CHECK-NEXT:    vmv1r.v v12, v13779; CHECK-NEXT:    vlseg6e8ff.v v7, (a0), v0.t780; CHECK-NEXT:    csrr a0, vl781; CHECK-NEXT:    sd a0, 0(a2)782; CHECK-NEXT:    ret783entry:784  %0 = tail call {target("riscv.vector.tuple", <vscale x 1 x i8>, 6), i64} @llvm.riscv.vlseg6ff.mask.triscv.vector.tuple_nxv1i8_6t.nxv1i1(target("riscv.vector.tuple", <vscale x 1 x i8>, 6) %val, ptr %base, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 3)785  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 1 x i8>, 6), i64} %0, 0786  %2 = call <vscale x 1 x i8> @llvm.riscv.tuple.extract.nxv1i8.triscv.vector.tuple_nxv1i8_6t(target("riscv.vector.tuple", <vscale x 1 x i8>, 6) %1, i32 1)787  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 1 x i8>, 6), i64} %0, 1788  store i64 %3, ptr %outvl789  ret <vscale x 1 x i8> %2790}791 792define <vscale x 2 x i8> @test_vlseg6ff_nxv2i8_triscv.vector.tuple_nxv2i8_6t(ptr %base, i64 %vl, ptr %outvl) {793; CHECK-LABEL: test_vlseg6ff_nxv2i8_triscv.vector.tuple_nxv2i8_6t:794; CHECK:       # %bb.0: # %entry795; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma796; CHECK-NEXT:    vlseg6e8ff.v v7, (a0)797; CHECK-NEXT:    csrr a0, vl798; CHECK-NEXT:    sd a0, 0(a2)799; CHECK-NEXT:    ret800entry:801  %0 = tail call {target("riscv.vector.tuple", <vscale x 2 x i8>, 6), i64} @llvm.riscv.vlseg6ff.triscv.vector.tuple_nxv2i8_6t(target("riscv.vector.tuple", <vscale x 2 x i8>, 6) poison, ptr %base, i64 %vl, i64 3)802  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 6), i64} %0, 0803  %2 = call <vscale x 2 x i8> @llvm.riscv.tuple.extract.nxv2i8.triscv.vector.tuple_nxv2i8_6t(target("riscv.vector.tuple", <vscale x 2 x i8>, 6) %1, i32 1)804  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 6), i64} %0, 1805  store i64 %3, ptr %outvl806  ret <vscale x 2 x i8> %2807}808 809define <vscale x 2 x i8> @test_vlseg6ff_mask_nxv2i8_triscv.vector.tuple_nxv2i8_6t(target("riscv.vector.tuple", <vscale x 2 x i8>, 6) %val, ptr %base, i64 %vl, <vscale x 2 x i1> %mask, ptr %outvl) {810; CHECK-LABEL: test_vlseg6ff_mask_nxv2i8_triscv.vector.tuple_nxv2i8_6t:811; CHECK:       # %bb.0: # %entry812; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, mu813; CHECK-NEXT:    vmv1r.v v7, v8814; CHECK-NEXT:    vmv1r.v v8, v9815; CHECK-NEXT:    vmv1r.v v9, v10816; CHECK-NEXT:    vmv1r.v v10, v11817; CHECK-NEXT:    vmv1r.v v11, v12818; CHECK-NEXT:    vmv1r.v v12, v13819; CHECK-NEXT:    vlseg6e8ff.v v7, (a0), v0.t820; CHECK-NEXT:    csrr a0, vl821; CHECK-NEXT:    sd a0, 0(a2)822; CHECK-NEXT:    ret823entry:824  %0 = tail call {target("riscv.vector.tuple", <vscale x 2 x i8>, 6), i64} @llvm.riscv.vlseg6ff.mask.triscv.vector.tuple_nxv2i8_6t.nxv2i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 6) %val, ptr %base, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 3)825  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 6), i64} %0, 0826  %2 = call <vscale x 2 x i8> @llvm.riscv.tuple.extract.nxv2i8.triscv.vector.tuple_nxv2i8_6t(target("riscv.vector.tuple", <vscale x 2 x i8>, 6) %1, i32 1)827  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 6), i64} %0, 1828  store i64 %3, ptr %outvl829  ret <vscale x 2 x i8> %2830}831 832define <vscale x 4 x i8> @test_vlseg6ff_nxv4i8_triscv.vector.tuple_nxv4i8_6t(ptr %base, i64 %vl, ptr %outvl) {833; CHECK-LABEL: test_vlseg6ff_nxv4i8_triscv.vector.tuple_nxv4i8_6t:834; CHECK:       # %bb.0: # %entry835; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma836; CHECK-NEXT:    vlseg6e8ff.v v7, (a0)837; CHECK-NEXT:    csrr a0, vl838; CHECK-NEXT:    sd a0, 0(a2)839; CHECK-NEXT:    ret840entry:841  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 6), i64} @llvm.riscv.vlseg6ff.triscv.vector.tuple_nxv4i8_6t(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) poison, ptr %base, i64 %vl, i64 3)842  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 6), i64} %0, 0843  %2 = call <vscale x 4 x i8> @llvm.riscv.tuple.extract.nxv4i8.triscv.vector.tuple_nxv4i8_6t(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) %1, i32 1)844  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 6), i64} %0, 1845  store i64 %3, ptr %outvl846  ret <vscale x 4 x i8> %2847}848 849define <vscale x 4 x i8> @test_vlseg6ff_mask_nxv4i8_triscv.vector.tuple_nxv4i8_6t(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) %val, ptr %base, i64 %vl, <vscale x 4 x i1> %mask, ptr %outvl) {850; CHECK-LABEL: test_vlseg6ff_mask_nxv4i8_triscv.vector.tuple_nxv4i8_6t:851; CHECK:       # %bb.0: # %entry852; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, mu853; CHECK-NEXT:    vmv1r.v v7, v8854; CHECK-NEXT:    vmv1r.v v8, v9855; CHECK-NEXT:    vmv1r.v v9, v10856; CHECK-NEXT:    vmv1r.v v10, v11857; CHECK-NEXT:    vmv1r.v v11, v12858; CHECK-NEXT:    vmv1r.v v12, v13859; CHECK-NEXT:    vlseg6e8ff.v v7, (a0), v0.t860; CHECK-NEXT:    csrr a0, vl861; CHECK-NEXT:    sd a0, 0(a2)862; CHECK-NEXT:    ret863entry:864  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 6), i64} @llvm.riscv.vlseg6ff.mask.triscv.vector.tuple_nxv4i8_6t.nxv4i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) %val, ptr %base, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 3)865  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 6), i64} %0, 0866  %2 = call <vscale x 4 x i8> @llvm.riscv.tuple.extract.nxv4i8.triscv.vector.tuple_nxv4i8_6t(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) %1, i32 1)867  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 6), i64} %0, 1868  store i64 %3, ptr %outvl869  ret <vscale x 4 x i8> %2870}871 872define <vscale x 8 x i8> @test_vlseg6ff_nxv8i8_triscv.vector.tuple_nxv8i8_6t(ptr %base, i64 %vl, ptr %outvl) {873; CHECK-LABEL: test_vlseg6ff_nxv8i8_triscv.vector.tuple_nxv8i8_6t:874; CHECK:       # %bb.0: # %entry875; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma876; CHECK-NEXT:    vlseg6e8ff.v v7, (a0)877; CHECK-NEXT:    csrr a0, vl878; CHECK-NEXT:    sd a0, 0(a2)879; CHECK-NEXT:    ret880entry:881  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 6), i64} @llvm.riscv.vlseg6ff.triscv.vector.tuple_nxv8i8_6t(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) poison, ptr %base, i64 %vl, i64 3)882  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 6), i64} %0, 0883  %2 = call <vscale x 8 x i8> @llvm.riscv.tuple.extract.nxv8i8.triscv.vector.tuple_nxv8i8_6t(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) %1, i32 1)884  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 6), i64} %0, 1885  store i64 %3, ptr %outvl886  ret <vscale x 8 x i8> %2887}888 889define <vscale x 8 x i8> @test_vlseg6ff_mask_nxv8i8_triscv.vector.tuple_nxv8i8_6t(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) %val, ptr %base, i64 %vl, <vscale x 8 x i1> %mask, ptr %outvl) {890; CHECK-LABEL: test_vlseg6ff_mask_nxv8i8_triscv.vector.tuple_nxv8i8_6t:891; CHECK:       # %bb.0: # %entry892; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, mu893; CHECK-NEXT:    vmv1r.v v7, v8894; CHECK-NEXT:    vmv1r.v v8, v9895; CHECK-NEXT:    vmv1r.v v9, v10896; CHECK-NEXT:    vmv1r.v v10, v11897; CHECK-NEXT:    vmv1r.v v11, v12898; CHECK-NEXT:    vmv1r.v v12, v13899; CHECK-NEXT:    vlseg6e8ff.v v7, (a0), v0.t900; CHECK-NEXT:    csrr a0, vl901; CHECK-NEXT:    sd a0, 0(a2)902; CHECK-NEXT:    ret903entry:904  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 6), i64} @llvm.riscv.vlseg6ff.mask.triscv.vector.tuple_nxv8i8_6t.nxv8i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) %val, ptr %base, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 3)905  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 6), i64} %0, 0906  %2 = call <vscale x 8 x i8> @llvm.riscv.tuple.extract.nxv8i8.triscv.vector.tuple_nxv8i8_6t(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) %1, i32 1)907  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 6), i64} %0, 1908  store i64 %3, ptr %outvl909  ret <vscale x 8 x i8> %2910}911 912define <vscale x 1 x i8> @test_vlseg7ff_nxv1i8_triscv.vector.tuple_nxv1i8_7t(ptr %base, i64 %vl, ptr %outvl) {913; CHECK-LABEL: test_vlseg7ff_nxv1i8_triscv.vector.tuple_nxv1i8_7t:914; CHECK:       # %bb.0: # %entry915; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma916; CHECK-NEXT:    vlseg7e8ff.v v7, (a0)917; CHECK-NEXT:    csrr a0, vl918; CHECK-NEXT:    sd a0, 0(a2)919; CHECK-NEXT:    ret920entry:921  %0 = tail call {target("riscv.vector.tuple", <vscale x 1 x i8>, 7), i64} @llvm.riscv.vlseg7ff.triscv.vector.tuple_nxv1i8_7t(target("riscv.vector.tuple", <vscale x 1 x i8>, 7) poison, ptr %base, i64 %vl, i64 3)922  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 1 x i8>, 7), i64} %0, 0923  %2 = call <vscale x 1 x i8> @llvm.riscv.tuple.extract.nxv1i8.triscv.vector.tuple_nxv1i8_7t(target("riscv.vector.tuple", <vscale x 1 x i8>, 7) %1, i32 1)924  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 1 x i8>, 7), i64} %0, 1925  store i64 %3, ptr %outvl926  ret <vscale x 1 x i8> %2927}928 929define <vscale x 1 x i8> @test_vlseg7ff_mask_nxv1i8_triscv.vector.tuple_nxv1i8_7t(target("riscv.vector.tuple", <vscale x 1 x i8>, 7) %val, ptr %base, i64 %vl, <vscale x 1 x i1> %mask, ptr %outvl) {930; CHECK-LABEL: test_vlseg7ff_mask_nxv1i8_triscv.vector.tuple_nxv1i8_7t:931; CHECK:       # %bb.0: # %entry932; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, mu933; CHECK-NEXT:    vmv1r.v v7, v8934; CHECK-NEXT:    vmv1r.v v8, v9935; CHECK-NEXT:    vmv1r.v v9, v10936; CHECK-NEXT:    vmv1r.v v10, v11937; CHECK-NEXT:    vmv1r.v v11, v12938; CHECK-NEXT:    vmv1r.v v12, v13939; CHECK-NEXT:    vmv1r.v v13, v14940; CHECK-NEXT:    vlseg7e8ff.v v7, (a0), v0.t941; CHECK-NEXT:    csrr a0, vl942; CHECK-NEXT:    sd a0, 0(a2)943; CHECK-NEXT:    ret944entry:945  %0 = tail call {target("riscv.vector.tuple", <vscale x 1 x i8>, 7), i64} @llvm.riscv.vlseg7ff.mask.triscv.vector.tuple_nxv1i8_7t.nxv1i1(target("riscv.vector.tuple", <vscale x 1 x i8>, 7) %val, ptr %base, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 3)946  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 1 x i8>, 7), i64} %0, 0947  %2 = call <vscale x 1 x i8> @llvm.riscv.tuple.extract.nxv1i8.triscv.vector.tuple_nxv1i8_7t(target("riscv.vector.tuple", <vscale x 1 x i8>, 7) %1, i32 1)948  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 1 x i8>, 7), i64} %0, 1949  store i64 %3, ptr %outvl950  ret <vscale x 1 x i8> %2951}952 953define <vscale x 2 x i8> @test_vlseg7ff_nxv2i8_triscv.vector.tuple_nxv2i8_7t(ptr %base, i64 %vl, ptr %outvl) {954; CHECK-LABEL: test_vlseg7ff_nxv2i8_triscv.vector.tuple_nxv2i8_7t:955; CHECK:       # %bb.0: # %entry956; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma957; CHECK-NEXT:    vlseg7e8ff.v v7, (a0)958; CHECK-NEXT:    csrr a0, vl959; CHECK-NEXT:    sd a0, 0(a2)960; CHECK-NEXT:    ret961entry:962  %0 = tail call {target("riscv.vector.tuple", <vscale x 2 x i8>, 7), i64} @llvm.riscv.vlseg7ff.triscv.vector.tuple_nxv2i8_7t(target("riscv.vector.tuple", <vscale x 2 x i8>, 7) poison, ptr %base, i64 %vl, i64 3)963  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 7), i64} %0, 0964  %2 = call <vscale x 2 x i8> @llvm.riscv.tuple.extract.nxv2i8.triscv.vector.tuple_nxv2i8_7t(target("riscv.vector.tuple", <vscale x 2 x i8>, 7) %1, i32 1)965  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 7), i64} %0, 1966  store i64 %3, ptr %outvl967  ret <vscale x 2 x i8> %2968}969 970define <vscale x 2 x i8> @test_vlseg7ff_mask_nxv2i8_triscv.vector.tuple_nxv2i8_7t(target("riscv.vector.tuple", <vscale x 2 x i8>, 7) %val, ptr %base, i64 %vl, <vscale x 2 x i1> %mask, ptr %outvl) {971; CHECK-LABEL: test_vlseg7ff_mask_nxv2i8_triscv.vector.tuple_nxv2i8_7t:972; CHECK:       # %bb.0: # %entry973; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, mu974; CHECK-NEXT:    vmv1r.v v7, v8975; CHECK-NEXT:    vmv1r.v v8, v9976; CHECK-NEXT:    vmv1r.v v9, v10977; CHECK-NEXT:    vmv1r.v v10, v11978; CHECK-NEXT:    vmv1r.v v11, v12979; CHECK-NEXT:    vmv1r.v v12, v13980; CHECK-NEXT:    vmv1r.v v13, v14981; CHECK-NEXT:    vlseg7e8ff.v v7, (a0), v0.t982; CHECK-NEXT:    csrr a0, vl983; CHECK-NEXT:    sd a0, 0(a2)984; CHECK-NEXT:    ret985entry:986  %0 = tail call {target("riscv.vector.tuple", <vscale x 2 x i8>, 7), i64} @llvm.riscv.vlseg7ff.mask.triscv.vector.tuple_nxv2i8_7t.nxv2i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 7) %val, ptr %base, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 3)987  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 7), i64} %0, 0988  %2 = call <vscale x 2 x i8> @llvm.riscv.tuple.extract.nxv2i8.triscv.vector.tuple_nxv2i8_7t(target("riscv.vector.tuple", <vscale x 2 x i8>, 7) %1, i32 1)989  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 7), i64} %0, 1990  store i64 %3, ptr %outvl991  ret <vscale x 2 x i8> %2992}993 994define <vscale x 4 x i8> @test_vlseg7ff_nxv4i8_triscv.vector.tuple_nxv4i8_7t(ptr %base, i64 %vl, ptr %outvl) {995; CHECK-LABEL: test_vlseg7ff_nxv4i8_triscv.vector.tuple_nxv4i8_7t:996; CHECK:       # %bb.0: # %entry997; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma998; CHECK-NEXT:    vlseg7e8ff.v v7, (a0)999; CHECK-NEXT:    csrr a0, vl1000; CHECK-NEXT:    sd a0, 0(a2)1001; CHECK-NEXT:    ret1002entry:1003  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 7), i64} @llvm.riscv.vlseg7ff.triscv.vector.tuple_nxv4i8_7t(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) poison, ptr %base, i64 %vl, i64 3)1004  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 7), i64} %0, 01005  %2 = call <vscale x 4 x i8> @llvm.riscv.tuple.extract.nxv4i8.triscv.vector.tuple_nxv4i8_7t(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) %1, i32 1)1006  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 7), i64} %0, 11007  store i64 %3, ptr %outvl1008  ret <vscale x 4 x i8> %21009}1010 1011define <vscale x 4 x i8> @test_vlseg7ff_mask_nxv4i8_triscv.vector.tuple_nxv4i8_7t(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) %val, ptr %base, i64 %vl, <vscale x 4 x i1> %mask, ptr %outvl) {1012; CHECK-LABEL: test_vlseg7ff_mask_nxv4i8_triscv.vector.tuple_nxv4i8_7t:1013; CHECK:       # %bb.0: # %entry1014; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, mu1015; CHECK-NEXT:    vmv1r.v v7, v81016; CHECK-NEXT:    vmv1r.v v8, v91017; CHECK-NEXT:    vmv1r.v v9, v101018; CHECK-NEXT:    vmv1r.v v10, v111019; CHECK-NEXT:    vmv1r.v v11, v121020; CHECK-NEXT:    vmv1r.v v12, v131021; CHECK-NEXT:    vmv1r.v v13, v141022; CHECK-NEXT:    vlseg7e8ff.v v7, (a0), v0.t1023; CHECK-NEXT:    csrr a0, vl1024; CHECK-NEXT:    sd a0, 0(a2)1025; CHECK-NEXT:    ret1026entry:1027  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 7), i64} @llvm.riscv.vlseg7ff.mask.triscv.vector.tuple_nxv4i8_7t.nxv4i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) %val, ptr %base, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 3)1028  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 7), i64} %0, 01029  %2 = call <vscale x 4 x i8> @llvm.riscv.tuple.extract.nxv4i8.triscv.vector.tuple_nxv4i8_7t(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) %1, i32 1)1030  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 7), i64} %0, 11031  store i64 %3, ptr %outvl1032  ret <vscale x 4 x i8> %21033}1034 1035define <vscale x 8 x i8> @test_vlseg7ff_nxv8i8_triscv.vector.tuple_nxv8i8_7t(ptr %base, i64 %vl, ptr %outvl) {1036; CHECK-LABEL: test_vlseg7ff_nxv8i8_triscv.vector.tuple_nxv8i8_7t:1037; CHECK:       # %bb.0: # %entry1038; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma1039; CHECK-NEXT:    vlseg7e8ff.v v7, (a0)1040; CHECK-NEXT:    csrr a0, vl1041; CHECK-NEXT:    sd a0, 0(a2)1042; CHECK-NEXT:    ret1043entry:1044  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 7), i64} @llvm.riscv.vlseg7ff.triscv.vector.tuple_nxv8i8_7t(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) poison, ptr %base, i64 %vl, i64 3)1045  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 7), i64} %0, 01046  %2 = call <vscale x 8 x i8> @llvm.riscv.tuple.extract.nxv8i8.triscv.vector.tuple_nxv8i8_7t(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) %1, i32 1)1047  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 7), i64} %0, 11048  store i64 %3, ptr %outvl1049  ret <vscale x 8 x i8> %21050}1051 1052define <vscale x 8 x i8> @test_vlseg7ff_mask_nxv8i8_triscv.vector.tuple_nxv8i8_7t(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) %val, ptr %base, i64 %vl, <vscale x 8 x i1> %mask, ptr %outvl) {1053; CHECK-LABEL: test_vlseg7ff_mask_nxv8i8_triscv.vector.tuple_nxv8i8_7t:1054; CHECK:       # %bb.0: # %entry1055; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, mu1056; CHECK-NEXT:    vmv1r.v v7, v81057; CHECK-NEXT:    vmv1r.v v8, v91058; CHECK-NEXT:    vmv1r.v v9, v101059; CHECK-NEXT:    vmv1r.v v10, v111060; CHECK-NEXT:    vmv1r.v v11, v121061; CHECK-NEXT:    vmv1r.v v12, v131062; CHECK-NEXT:    vmv1r.v v13, v141063; CHECK-NEXT:    vlseg7e8ff.v v7, (a0), v0.t1064; CHECK-NEXT:    csrr a0, vl1065; CHECK-NEXT:    sd a0, 0(a2)1066; CHECK-NEXT:    ret1067entry:1068  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 7), i64} @llvm.riscv.vlseg7ff.mask.triscv.vector.tuple_nxv8i8_7t.nxv8i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) %val, ptr %base, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 3)1069  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 7), i64} %0, 01070  %2 = call <vscale x 8 x i8> @llvm.riscv.tuple.extract.nxv8i8.triscv.vector.tuple_nxv8i8_7t(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) %1, i32 1)1071  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 7), i64} %0, 11072  store i64 %3, ptr %outvl1073  ret <vscale x 8 x i8> %21074}1075 1076define <vscale x 1 x i8> @test_vlseg8ff_nxv1i8_triscv.vector.tuple_nxv1i8_8t(ptr %base, i64 %vl, ptr %outvl) {1077; CHECK-LABEL: test_vlseg8ff_nxv1i8_triscv.vector.tuple_nxv1i8_8t:1078; CHECK:       # %bb.0: # %entry1079; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma1080; CHECK-NEXT:    vlseg8e8ff.v v7, (a0)1081; CHECK-NEXT:    csrr a0, vl1082; CHECK-NEXT:    sd a0, 0(a2)1083; CHECK-NEXT:    ret1084entry:1085  %0 = tail call {target("riscv.vector.tuple", <vscale x 1 x i8>, 8), i64} @llvm.riscv.vlseg8ff.triscv.vector.tuple_nxv1i8_8t(target("riscv.vector.tuple", <vscale x 1 x i8>, 8) poison, ptr %base, i64 %vl, i64 3)1086  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 1 x i8>, 8), i64} %0, 01087  %2 = call <vscale x 1 x i8> @llvm.riscv.tuple.extract.nxv1i8.triscv.vector.tuple_nxv1i8_8t(target("riscv.vector.tuple", <vscale x 1 x i8>, 8) %1, i32 1)1088  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 1 x i8>, 8), i64} %0, 11089  store i64 %3, ptr %outvl1090  ret <vscale x 1 x i8> %21091}1092 1093define <vscale x 1 x i8> @test_vlseg8ff_mask_nxv1i8_triscv.vector.tuple_nxv1i8_8t(target("riscv.vector.tuple", <vscale x 1 x i8>, 8) %val, ptr %base, i64 %vl, <vscale x 1 x i1> %mask, ptr %outvl) {1094; CHECK-LABEL: test_vlseg8ff_mask_nxv1i8_triscv.vector.tuple_nxv1i8_8t:1095; CHECK:       # %bb.0: # %entry1096; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, mu1097; CHECK-NEXT:    vmv1r.v v7, v81098; CHECK-NEXT:    vmv1r.v v8, v91099; CHECK-NEXT:    vmv1r.v v9, v101100; CHECK-NEXT:    vmv1r.v v10, v111101; CHECK-NEXT:    vmv1r.v v11, v121102; CHECK-NEXT:    vmv1r.v v12, v131103; CHECK-NEXT:    vmv1r.v v13, v141104; CHECK-NEXT:    vmv1r.v v14, v151105; CHECK-NEXT:    vlseg8e8ff.v v7, (a0), v0.t1106; CHECK-NEXT:    csrr a0, vl1107; CHECK-NEXT:    sd a0, 0(a2)1108; CHECK-NEXT:    ret1109entry:1110  %0 = tail call {target("riscv.vector.tuple", <vscale x 1 x i8>, 8), i64} @llvm.riscv.vlseg8ff.mask.triscv.vector.tuple_nxv1i8_8t.nxv1i1(target("riscv.vector.tuple", <vscale x 1 x i8>, 8) %val, ptr %base, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 3)1111  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 1 x i8>, 8), i64} %0, 01112  %2 = call <vscale x 1 x i8> @llvm.riscv.tuple.extract.nxv1i8.triscv.vector.tuple_nxv1i8_8t(target("riscv.vector.tuple", <vscale x 1 x i8>, 8) %1, i32 1)1113  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 1 x i8>, 8), i64} %0, 11114  store i64 %3, ptr %outvl1115  ret <vscale x 1 x i8> %21116}1117 1118define <vscale x 2 x i8> @test_vlseg8ff_nxv2i8_triscv.vector.tuple_nxv2i8_8t(ptr %base, i64 %vl, ptr %outvl) {1119; CHECK-LABEL: test_vlseg8ff_nxv2i8_triscv.vector.tuple_nxv2i8_8t:1120; CHECK:       # %bb.0: # %entry1121; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma1122; CHECK-NEXT:    vlseg8e8ff.v v7, (a0)1123; CHECK-NEXT:    csrr a0, vl1124; CHECK-NEXT:    sd a0, 0(a2)1125; CHECK-NEXT:    ret1126entry:1127  %0 = tail call {target("riscv.vector.tuple", <vscale x 2 x i8>, 8), i64} @llvm.riscv.vlseg8ff.triscv.vector.tuple_nxv2i8_8t(target("riscv.vector.tuple", <vscale x 2 x i8>, 8) poison, ptr %base, i64 %vl, i64 3)1128  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 8), i64} %0, 01129  %2 = call <vscale x 2 x i8> @llvm.riscv.tuple.extract.nxv2i8.triscv.vector.tuple_nxv2i8_8t(target("riscv.vector.tuple", <vscale x 2 x i8>, 8) %1, i32 1)1130  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 8), i64} %0, 11131  store i64 %3, ptr %outvl1132  ret <vscale x 2 x i8> %21133}1134 1135define <vscale x 2 x i8> @test_vlseg8ff_mask_nxv2i8_triscv.vector.tuple_nxv2i8_8t(target("riscv.vector.tuple", <vscale x 2 x i8>, 8) %val, ptr %base, i64 %vl, <vscale x 2 x i1> %mask, ptr %outvl) {1136; CHECK-LABEL: test_vlseg8ff_mask_nxv2i8_triscv.vector.tuple_nxv2i8_8t:1137; CHECK:       # %bb.0: # %entry1138; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, mu1139; CHECK-NEXT:    vmv1r.v v7, v81140; CHECK-NEXT:    vmv1r.v v8, v91141; CHECK-NEXT:    vmv1r.v v9, v101142; CHECK-NEXT:    vmv1r.v v10, v111143; CHECK-NEXT:    vmv1r.v v11, v121144; CHECK-NEXT:    vmv1r.v v12, v131145; CHECK-NEXT:    vmv1r.v v13, v141146; CHECK-NEXT:    vmv1r.v v14, v151147; CHECK-NEXT:    vlseg8e8ff.v v7, (a0), v0.t1148; CHECK-NEXT:    csrr a0, vl1149; CHECK-NEXT:    sd a0, 0(a2)1150; CHECK-NEXT:    ret1151entry:1152  %0 = tail call {target("riscv.vector.tuple", <vscale x 2 x i8>, 8), i64} @llvm.riscv.vlseg8ff.mask.triscv.vector.tuple_nxv2i8_8t.nxv2i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 8) %val, ptr %base, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 3)1153  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 8), i64} %0, 01154  %2 = call <vscale x 2 x i8> @llvm.riscv.tuple.extract.nxv2i8.triscv.vector.tuple_nxv2i8_8t(target("riscv.vector.tuple", <vscale x 2 x i8>, 8) %1, i32 1)1155  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 8), i64} %0, 11156  store i64 %3, ptr %outvl1157  ret <vscale x 2 x i8> %21158}1159 1160define <vscale x 4 x i8> @test_vlseg8ff_nxv4i8_triscv.vector.tuple_nxv4i8_8t(ptr %base, i64 %vl, ptr %outvl) {1161; CHECK-LABEL: test_vlseg8ff_nxv4i8_triscv.vector.tuple_nxv4i8_8t:1162; CHECK:       # %bb.0: # %entry1163; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma1164; CHECK-NEXT:    vlseg8e8ff.v v7, (a0)1165; CHECK-NEXT:    csrr a0, vl1166; CHECK-NEXT:    sd a0, 0(a2)1167; CHECK-NEXT:    ret1168entry:1169  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 8), i64} @llvm.riscv.vlseg8ff.triscv.vector.tuple_nxv4i8_8t(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) poison, ptr %base, i64 %vl, i64 3)1170  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 8), i64} %0, 01171  %2 = call <vscale x 4 x i8> @llvm.riscv.tuple.extract.nxv4i8.triscv.vector.tuple_nxv4i8_8t(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) %1, i32 1)1172  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 8), i64} %0, 11173  store i64 %3, ptr %outvl1174  ret <vscale x 4 x i8> %21175}1176 1177define <vscale x 4 x i8> @test_vlseg8ff_mask_nxv4i8_triscv.vector.tuple_nxv4i8_8t(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) %val, ptr %base, i64 %vl, <vscale x 4 x i1> %mask, ptr %outvl) {1178; CHECK-LABEL: test_vlseg8ff_mask_nxv4i8_triscv.vector.tuple_nxv4i8_8t:1179; CHECK:       # %bb.0: # %entry1180; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, mu1181; CHECK-NEXT:    vmv1r.v v7, v81182; CHECK-NEXT:    vmv1r.v v8, v91183; CHECK-NEXT:    vmv1r.v v9, v101184; CHECK-NEXT:    vmv1r.v v10, v111185; CHECK-NEXT:    vmv1r.v v11, v121186; CHECK-NEXT:    vmv1r.v v12, v131187; CHECK-NEXT:    vmv1r.v v13, v141188; CHECK-NEXT:    vmv1r.v v14, v151189; CHECK-NEXT:    vlseg8e8ff.v v7, (a0), v0.t1190; CHECK-NEXT:    csrr a0, vl1191; CHECK-NEXT:    sd a0, 0(a2)1192; CHECK-NEXT:    ret1193entry:1194  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 8), i64} @llvm.riscv.vlseg8ff.mask.triscv.vector.tuple_nxv4i8_8t.nxv4i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) %val, ptr %base, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 3)1195  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 8), i64} %0, 01196  %2 = call <vscale x 4 x i8> @llvm.riscv.tuple.extract.nxv4i8.triscv.vector.tuple_nxv4i8_8t(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) %1, i32 1)1197  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 8), i64} %0, 11198  store i64 %3, ptr %outvl1199  ret <vscale x 4 x i8> %21200}1201 1202define <vscale x 8 x i8> @test_vlseg8ff_nxv8i8_triscv.vector.tuple_nxv8i8_8t(ptr %base, i64 %vl, ptr %outvl) {1203; CHECK-LABEL: test_vlseg8ff_nxv8i8_triscv.vector.tuple_nxv8i8_8t:1204; CHECK:       # %bb.0: # %entry1205; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma1206; CHECK-NEXT:    vlseg8e8ff.v v7, (a0)1207; CHECK-NEXT:    csrr a0, vl1208; CHECK-NEXT:    sd a0, 0(a2)1209; CHECK-NEXT:    ret1210entry:1211  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 8), i64} @llvm.riscv.vlseg8ff.triscv.vector.tuple_nxv8i8_8t(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) poison, ptr %base, i64 %vl, i64 3)1212  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 8), i64} %0, 01213  %2 = call <vscale x 8 x i8> @llvm.riscv.tuple.extract.nxv8i8.triscv.vector.tuple_nxv8i8_8t(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) %1, i32 1)1214  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 8), i64} %0, 11215  store i64 %3, ptr %outvl1216  ret <vscale x 8 x i8> %21217}1218 1219define <vscale x 8 x i8> @test_vlseg8ff_mask_nxv8i8_triscv.vector.tuple_nxv8i8_8t(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) %val, ptr %base, i64 %vl, <vscale x 8 x i1> %mask, ptr %outvl) {1220; CHECK-LABEL: test_vlseg8ff_mask_nxv8i8_triscv.vector.tuple_nxv8i8_8t:1221; CHECK:       # %bb.0: # %entry1222; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, mu1223; CHECK-NEXT:    vmv1r.v v7, v81224; CHECK-NEXT:    vmv1r.v v8, v91225; CHECK-NEXT:    vmv1r.v v9, v101226; CHECK-NEXT:    vmv1r.v v10, v111227; CHECK-NEXT:    vmv1r.v v11, v121228; CHECK-NEXT:    vmv1r.v v12, v131229; CHECK-NEXT:    vmv1r.v v13, v141230; CHECK-NEXT:    vmv1r.v v14, v151231; CHECK-NEXT:    vlseg8e8ff.v v7, (a0), v0.t1232; CHECK-NEXT:    csrr a0, vl1233; CHECK-NEXT:    sd a0, 0(a2)1234; CHECK-NEXT:    ret1235entry:1236  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 8), i64} @llvm.riscv.vlseg8ff.mask.triscv.vector.tuple_nxv8i8_8t.nxv8i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) %val, ptr %base, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 3)1237  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 8), i64} %0, 01238  %2 = call <vscale x 8 x i8> @llvm.riscv.tuple.extract.nxv8i8.triscv.vector.tuple_nxv8i8_8t(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) %1, i32 1)1239  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 8), i64} %0, 11240  store i64 %3, ptr %outvl1241  ret <vscale x 8 x i8> %21242}1243 1244define <vscale x 1 x i16> @test_vlseg2ff_nxv1i16_triscv.vector.tuple_nxv2i8_2t(ptr %base, i64 %vl, ptr %outvl) {1245; CHECK-LABEL: test_vlseg2ff_nxv1i16_triscv.vector.tuple_nxv2i8_2t:1246; CHECK:       # %bb.0: # %entry1247; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma1248; CHECK-NEXT:    vlseg2e16ff.v v7, (a0)1249; CHECK-NEXT:    csrr a0, vl1250; CHECK-NEXT:    sd a0, 0(a2)1251; CHECK-NEXT:    ret1252entry:1253  %0 = tail call {target("riscv.vector.tuple", <vscale x 2 x i8>, 2), i64} @llvm.riscv.vlseg2ff.triscv.vector.tuple_nxv2i8_2t(target("riscv.vector.tuple", <vscale x 2 x i8>, 2) poison, ptr %base, i64 %vl, i64 4)1254  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 2), i64} %0, 01255  %2 = call <vscale x 1 x i16> @llvm.riscv.tuple.extract.nxv1i16.triscv.vector.tuple_nxv2i8_2t(target("riscv.vector.tuple", <vscale x 2 x i8>, 2) %1, i32 1)1256  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 2), i64} %0, 11257  store i64 %3, ptr %outvl1258  ret <vscale x 1 x i16> %21259}1260 1261define <vscale x 1 x i16> @test_vlseg2ff_mask_nxv1i16_triscv.vector.tuple_nxv2i8_2t(target("riscv.vector.tuple", <vscale x 2 x i8>, 2) %val, ptr %base, i64 %vl, <vscale x 1 x i1> %mask, ptr %outvl) {1262; CHECK-LABEL: test_vlseg2ff_mask_nxv1i16_triscv.vector.tuple_nxv2i8_2t:1263; CHECK:       # %bb.0: # %entry1264; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, mu1265; CHECK-NEXT:    vmv1r.v v7, v81266; CHECK-NEXT:    vmv1r.v v8, v91267; CHECK-NEXT:    vlseg2e16ff.v v7, (a0), v0.t1268; CHECK-NEXT:    csrr a0, vl1269; CHECK-NEXT:    sd a0, 0(a2)1270; CHECK-NEXT:    ret1271entry:1272  %0 = tail call {target("riscv.vector.tuple", <vscale x 2 x i8>, 2), i64} @llvm.riscv.vlseg2ff.mask.triscv.vector.tuple_nxv2i8_2t.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 2) %val, ptr %base, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4)1273  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 2), i64} %0, 01274  %2 = call <vscale x 1 x i16> @llvm.riscv.tuple.extract.nxv1i16.triscv.vector.tuple_nxv2i8_2t(target("riscv.vector.tuple", <vscale x 2 x i8>, 2) %1, i32 1)1275  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 2), i64} %0, 11276  store i64 %3, ptr %outvl1277  ret <vscale x 1 x i16> %21278}1279 1280define <vscale x 2 x i16> @test_vlseg2ff_nxv2i16_triscv.vector.tuple_nxv4i8_2t(ptr %base, i64 %vl, ptr %outvl) {1281; CHECK-LABEL: test_vlseg2ff_nxv2i16_triscv.vector.tuple_nxv4i8_2t:1282; CHECK:       # %bb.0: # %entry1283; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma1284; CHECK-NEXT:    vlseg2e16ff.v v7, (a0)1285; CHECK-NEXT:    csrr a0, vl1286; CHECK-NEXT:    sd a0, 0(a2)1287; CHECK-NEXT:    ret1288entry:1289  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 2), i64} @llvm.riscv.vlseg2ff.triscv.vector.tuple_nxv4i8_2t(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) poison, ptr %base, i64 %vl, i64 4)1290  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 2), i64} %0, 01291  %2 = call <vscale x 2 x i16> @llvm.riscv.tuple.extract.nxv2i16.triscv.vector.tuple_nxv4i8_2t(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) %1, i32 1)1292  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 2), i64} %0, 11293  store i64 %3, ptr %outvl1294  ret <vscale x 2 x i16> %21295}1296 1297define <vscale x 2 x i16> @test_vlseg2ff_mask_nxv2i16_triscv.vector.tuple_nxv4i8_2t(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) %val, ptr %base, i64 %vl, <vscale x 2 x i1> %mask, ptr %outvl) {1298; CHECK-LABEL: test_vlseg2ff_mask_nxv2i16_triscv.vector.tuple_nxv4i8_2t:1299; CHECK:       # %bb.0: # %entry1300; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, mu1301; CHECK-NEXT:    vmv1r.v v7, v81302; CHECK-NEXT:    vmv1r.v v8, v91303; CHECK-NEXT:    vlseg2e16ff.v v7, (a0), v0.t1304; CHECK-NEXT:    csrr a0, vl1305; CHECK-NEXT:    sd a0, 0(a2)1306; CHECK-NEXT:    ret1307entry:1308  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 2), i64} @llvm.riscv.vlseg2ff.mask.triscv.vector.tuple_nxv4i8_2t.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) %val, ptr %base, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4)1309  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 2), i64} %0, 01310  %2 = call <vscale x 2 x i16> @llvm.riscv.tuple.extract.nxv2i16.triscv.vector.tuple_nxv4i8_2t(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) %1, i32 1)1311  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 2), i64} %0, 11312  store i64 %3, ptr %outvl1313  ret <vscale x 2 x i16> %21314}1315 1316define <vscale x 4 x i16> @test_vlseg2ff_nxv4i16_triscv.vector.tuple_nxv8i8_2t(ptr %base, i64 %vl, ptr %outvl) {1317; CHECK-LABEL: test_vlseg2ff_nxv4i16_triscv.vector.tuple_nxv8i8_2t:1318; CHECK:       # %bb.0: # %entry1319; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma1320; CHECK-NEXT:    vlseg2e16ff.v v7, (a0)1321; CHECK-NEXT:    csrr a0, vl1322; CHECK-NEXT:    sd a0, 0(a2)1323; CHECK-NEXT:    ret1324entry:1325  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 2), i64} @llvm.riscv.vlseg2ff.triscv.vector.tuple_nxv8i8_2t(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) poison, ptr %base, i64 %vl, i64 4)1326  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 2), i64} %0, 01327  %2 = call <vscale x 4 x i16> @llvm.riscv.tuple.extract.nxv4i16.triscv.vector.tuple_nxv8i8_2t(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) %1, i32 1)1328  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 2), i64} %0, 11329  store i64 %3, ptr %outvl1330  ret <vscale x 4 x i16> %21331}1332 1333define <vscale x 4 x i16> @test_vlseg2ff_mask_nxv4i16_triscv.vector.tuple_nxv8i8_2t(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) %val, ptr %base, i64 %vl, <vscale x 4 x i1> %mask, ptr %outvl) {1334; CHECK-LABEL: test_vlseg2ff_mask_nxv4i16_triscv.vector.tuple_nxv8i8_2t:1335; CHECK:       # %bb.0: # %entry1336; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, mu1337; CHECK-NEXT:    vmv1r.v v7, v81338; CHECK-NEXT:    vmv1r.v v8, v91339; CHECK-NEXT:    vlseg2e16ff.v v7, (a0), v0.t1340; CHECK-NEXT:    csrr a0, vl1341; CHECK-NEXT:    sd a0, 0(a2)1342; CHECK-NEXT:    ret1343entry:1344  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 2), i64} @llvm.riscv.vlseg2ff.mask.triscv.vector.tuple_nxv8i8_2t.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) %val, ptr %base, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4)1345  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 2), i64} %0, 01346  %2 = call <vscale x 4 x i16> @llvm.riscv.tuple.extract.nxv4i16.triscv.vector.tuple_nxv8i8_2t(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) %1, i32 1)1347  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 2), i64} %0, 11348  store i64 %3, ptr %outvl1349  ret <vscale x 4 x i16> %21350}1351 1352define <vscale x 8 x i16> @test_vlseg2ff_nxv8i16_triscv.vector.tuple_nxv16i8_2t(ptr %base, i64 %vl, ptr %outvl) {1353; CHECK-LABEL: test_vlseg2ff_nxv8i16_triscv.vector.tuple_nxv16i8_2t:1354; CHECK:       # %bb.0: # %entry1355; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma1356; CHECK-NEXT:    vlseg2e16ff.v v6, (a0)1357; CHECK-NEXT:    csrr a0, vl1358; CHECK-NEXT:    sd a0, 0(a2)1359; CHECK-NEXT:    ret1360entry:1361  %0 = tail call {target("riscv.vector.tuple", <vscale x 16 x i8>, 2), i64} @llvm.riscv.vlseg2ff.triscv.vector.tuple_nxv16i8_2t(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) poison, ptr %base, i64 %vl, i64 4)1362  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 2), i64} %0, 01363  %2 = call <vscale x 8 x i16> @llvm.riscv.tuple.extract.nxv8i16.triscv.vector.tuple_nxv16i8_2t(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) %1, i32 1)1364  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 2), i64} %0, 11365  store i64 %3, ptr %outvl1366  ret <vscale x 8 x i16> %21367}1368 1369define <vscale x 8 x i16> @test_vlseg2ff_mask_nxv8i16_triscv.vector.tuple_nxv16i8_2t(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) %val, ptr %base, i64 %vl, <vscale x 8 x i1> %mask, ptr %outvl) {1370; CHECK-LABEL: test_vlseg2ff_mask_nxv8i16_triscv.vector.tuple_nxv16i8_2t:1371; CHECK:       # %bb.0: # %entry1372; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, mu1373; CHECK-NEXT:    vmv2r.v v6, v81374; CHECK-NEXT:    vmv2r.v v8, v101375; CHECK-NEXT:    vlseg2e16ff.v v6, (a0), v0.t1376; CHECK-NEXT:    csrr a0, vl1377; CHECK-NEXT:    sd a0, 0(a2)1378; CHECK-NEXT:    ret1379entry:1380  %0 = tail call {target("riscv.vector.tuple", <vscale x 16 x i8>, 2), i64} @llvm.riscv.vlseg2ff.mask.triscv.vector.tuple_nxv16i8_2t.nxv8i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) %val, ptr %base, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 4)1381  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 2), i64} %0, 01382  %2 = call <vscale x 8 x i16> @llvm.riscv.tuple.extract.nxv8i16.triscv.vector.tuple_nxv16i8_2t(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) %1, i32 1)1383  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 2), i64} %0, 11384  store i64 %3, ptr %outvl1385  ret <vscale x 8 x i16> %21386}1387 1388define <vscale x 16 x i16> @test_vlseg2ff_nxv16i16_triscv.vector.tuple_nxv32i8_2t(ptr %base, i64 %vl, ptr %outvl) {1389; CHECK-LABEL: test_vlseg2ff_nxv16i16_triscv.vector.tuple_nxv32i8_2t:1390; CHECK:       # %bb.0: # %entry1391; CHECK-NEXT:    vsetvli zero, a1, e16, m4, ta, ma1392; CHECK-NEXT:    vlseg2e16ff.v v4, (a0)1393; CHECK-NEXT:    csrr a0, vl1394; CHECK-NEXT:    sd a0, 0(a2)1395; CHECK-NEXT:    ret1396entry:1397  %0 = tail call {target("riscv.vector.tuple", <vscale x 32 x i8>, 2), i64} @llvm.riscv.vlseg2ff.triscv.vector.tuple_nxv32i8_2t(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) poison, ptr %base, i64 %vl, i64 4)1398  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 32 x i8>, 2), i64} %0, 01399  %2 = call <vscale x 16 x i16> @llvm.riscv.tuple.extract.nxv16i16.triscv.vector.tuple_nxv32i8_2t(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) %1, i32 1)1400  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 32 x i8>, 2), i64} %0, 11401  store i64 %3, ptr %outvl1402  ret <vscale x 16 x i16> %21403}1404 1405define <vscale x 16 x i16> @test_vlseg2ff_mask_nxv16i16_triscv.vector.tuple_nxv32i8_2t(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) %val, ptr %base, i64 %vl, <vscale x 16 x i1> %mask, ptr %outvl) {1406; CHECK-LABEL: test_vlseg2ff_mask_nxv16i16_triscv.vector.tuple_nxv32i8_2t:1407; CHECK:       # %bb.0: # %entry1408; CHECK-NEXT:    vsetvli zero, a1, e16, m4, ta, mu1409; CHECK-NEXT:    vmv4r.v v4, v81410; CHECK-NEXT:    vmv4r.v v8, v121411; CHECK-NEXT:    vlseg2e16ff.v v4, (a0), v0.t1412; CHECK-NEXT:    csrr a0, vl1413; CHECK-NEXT:    sd a0, 0(a2)1414; CHECK-NEXT:    ret1415entry:1416  %0 = tail call {target("riscv.vector.tuple", <vscale x 32 x i8>, 2), i64} @llvm.riscv.vlseg2ff.mask.triscv.vector.tuple_nxv32i8_2t.nxv16i1(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) %val, ptr %base, <vscale x 16 x i1> %mask, i64 %vl, i64 1, i64 4)1417  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 32 x i8>, 2), i64} %0, 01418  %2 = call <vscale x 16 x i16> @llvm.riscv.tuple.extract.nxv16i16.triscv.vector.tuple_nxv32i8_2t(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) %1, i32 1)1419  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 32 x i8>, 2), i64} %0, 11420  store i64 %3, ptr %outvl1421  ret <vscale x 16 x i16> %21422}1423 1424define <vscale x 1 x i16> @test_vlseg3ff_nxv1i16_triscv.vector.tuple_nxv2i8_3t(ptr %base, i64 %vl, ptr %outvl) {1425; CHECK-LABEL: test_vlseg3ff_nxv1i16_triscv.vector.tuple_nxv2i8_3t:1426; CHECK:       # %bb.0: # %entry1427; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma1428; CHECK-NEXT:    vlseg3e16ff.v v7, (a0)1429; CHECK-NEXT:    csrr a0, vl1430; CHECK-NEXT:    sd a0, 0(a2)1431; CHECK-NEXT:    ret1432entry:1433  %0 = tail call {target("riscv.vector.tuple", <vscale x 2 x i8>, 3), i64} @llvm.riscv.vlseg3ff.triscv.vector.tuple_nxv2i8_3t(target("riscv.vector.tuple", <vscale x 2 x i8>, 3) poison, ptr %base, i64 %vl, i64 4)1434  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 3), i64} %0, 01435  %2 = call <vscale x 1 x i16> @llvm.riscv.tuple.extract.nxv1i16.triscv.vector.tuple_nxv2i8_3t(target("riscv.vector.tuple", <vscale x 2 x i8>, 3) %1, i32 1)1436  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 3), i64} %0, 11437  store i64 %3, ptr %outvl1438  ret <vscale x 1 x i16> %21439}1440 1441define <vscale x 1 x i16> @test_vlseg3ff_mask_nxv1i16_triscv.vector.tuple_nxv2i8_3t(target("riscv.vector.tuple", <vscale x 2 x i8>, 3) %val, ptr %base, i64 %vl, <vscale x 1 x i1> %mask, ptr %outvl) {1442; CHECK-LABEL: test_vlseg3ff_mask_nxv1i16_triscv.vector.tuple_nxv2i8_3t:1443; CHECK:       # %bb.0: # %entry1444; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, mu1445; CHECK-NEXT:    vmv1r.v v7, v81446; CHECK-NEXT:    vmv1r.v v8, v91447; CHECK-NEXT:    vmv1r.v v9, v101448; CHECK-NEXT:    vlseg3e16ff.v v7, (a0), v0.t1449; CHECK-NEXT:    csrr a0, vl1450; CHECK-NEXT:    sd a0, 0(a2)1451; CHECK-NEXT:    ret1452entry:1453  %0 = tail call {target("riscv.vector.tuple", <vscale x 2 x i8>, 3), i64} @llvm.riscv.vlseg3ff.mask.triscv.vector.tuple_nxv2i8_3t.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 3) %val, ptr %base, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4)1454  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 3), i64} %0, 01455  %2 = call <vscale x 1 x i16> @llvm.riscv.tuple.extract.nxv1i16.triscv.vector.tuple_nxv2i8_3t(target("riscv.vector.tuple", <vscale x 2 x i8>, 3) %1, i32 1)1456  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 3), i64} %0, 11457  store i64 %3, ptr %outvl1458  ret <vscale x 1 x i16> %21459}1460 1461define <vscale x 2 x i16> @test_vlseg3ff_nxv2i16_triscv.vector.tuple_nxv4i8_3t(ptr %base, i64 %vl, ptr %outvl) {1462; CHECK-LABEL: test_vlseg3ff_nxv2i16_triscv.vector.tuple_nxv4i8_3t:1463; CHECK:       # %bb.0: # %entry1464; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma1465; CHECK-NEXT:    vlseg3e16ff.v v7, (a0)1466; CHECK-NEXT:    csrr a0, vl1467; CHECK-NEXT:    sd a0, 0(a2)1468; CHECK-NEXT:    ret1469entry:1470  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 3), i64} @llvm.riscv.vlseg3ff.triscv.vector.tuple_nxv4i8_3t(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) poison, ptr %base, i64 %vl, i64 4)1471  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 3), i64} %0, 01472  %2 = call <vscale x 2 x i16> @llvm.riscv.tuple.extract.nxv2i16.triscv.vector.tuple_nxv4i8_3t(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) %1, i32 1)1473  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 3), i64} %0, 11474  store i64 %3, ptr %outvl1475  ret <vscale x 2 x i16> %21476}1477 1478define <vscale x 2 x i16> @test_vlseg3ff_mask_nxv2i16_triscv.vector.tuple_nxv4i8_3t(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) %val, ptr %base, i64 %vl, <vscale x 2 x i1> %mask, ptr %outvl) {1479; CHECK-LABEL: test_vlseg3ff_mask_nxv2i16_triscv.vector.tuple_nxv4i8_3t:1480; CHECK:       # %bb.0: # %entry1481; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, mu1482; CHECK-NEXT:    vmv1r.v v7, v81483; CHECK-NEXT:    vmv1r.v v8, v91484; CHECK-NEXT:    vmv1r.v v9, v101485; CHECK-NEXT:    vlseg3e16ff.v v7, (a0), v0.t1486; CHECK-NEXT:    csrr a0, vl1487; CHECK-NEXT:    sd a0, 0(a2)1488; CHECK-NEXT:    ret1489entry:1490  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 3), i64} @llvm.riscv.vlseg3ff.mask.triscv.vector.tuple_nxv4i8_3t.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) %val, ptr %base, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4)1491  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 3), i64} %0, 01492  %2 = call <vscale x 2 x i16> @llvm.riscv.tuple.extract.nxv2i16.triscv.vector.tuple_nxv4i8_3t(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) %1, i32 1)1493  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 3), i64} %0, 11494  store i64 %3, ptr %outvl1495  ret <vscale x 2 x i16> %21496}1497 1498define <vscale x 4 x i16> @test_vlseg3ff_nxv4i16_triscv.vector.tuple_nxv8i8_3t(ptr %base, i64 %vl, ptr %outvl) {1499; CHECK-LABEL: test_vlseg3ff_nxv4i16_triscv.vector.tuple_nxv8i8_3t:1500; CHECK:       # %bb.0: # %entry1501; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma1502; CHECK-NEXT:    vlseg3e16ff.v v7, (a0)1503; CHECK-NEXT:    csrr a0, vl1504; CHECK-NEXT:    sd a0, 0(a2)1505; CHECK-NEXT:    ret1506entry:1507  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 3), i64} @llvm.riscv.vlseg3ff.triscv.vector.tuple_nxv8i8_3t(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) poison, ptr %base, i64 %vl, i64 4)1508  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 3), i64} %0, 01509  %2 = call <vscale x 4 x i16> @llvm.riscv.tuple.extract.nxv4i16.triscv.vector.tuple_nxv8i8_3t(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) %1, i32 1)1510  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 3), i64} %0, 11511  store i64 %3, ptr %outvl1512  ret <vscale x 4 x i16> %21513}1514 1515define <vscale x 4 x i16> @test_vlseg3ff_mask_nxv4i16_triscv.vector.tuple_nxv8i8_3t(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) %val, ptr %base, i64 %vl, <vscale x 4 x i1> %mask, ptr %outvl) {1516; CHECK-LABEL: test_vlseg3ff_mask_nxv4i16_triscv.vector.tuple_nxv8i8_3t:1517; CHECK:       # %bb.0: # %entry1518; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, mu1519; CHECK-NEXT:    vmv1r.v v7, v81520; CHECK-NEXT:    vmv1r.v v8, v91521; CHECK-NEXT:    vmv1r.v v9, v101522; CHECK-NEXT:    vlseg3e16ff.v v7, (a0), v0.t1523; CHECK-NEXT:    csrr a0, vl1524; CHECK-NEXT:    sd a0, 0(a2)1525; CHECK-NEXT:    ret1526entry:1527  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 3), i64} @llvm.riscv.vlseg3ff.mask.triscv.vector.tuple_nxv8i8_3t.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) %val, ptr %base, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4)1528  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 3), i64} %0, 01529  %2 = call <vscale x 4 x i16> @llvm.riscv.tuple.extract.nxv4i16.triscv.vector.tuple_nxv8i8_3t(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) %1, i32 1)1530  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 3), i64} %0, 11531  store i64 %3, ptr %outvl1532  ret <vscale x 4 x i16> %21533}1534 1535define <vscale x 8 x i16> @test_vlseg3ff_nxv8i16_triscv.vector.tuple_nxv16i8_3t(ptr %base, i64 %vl, ptr %outvl) {1536; CHECK-LABEL: test_vlseg3ff_nxv8i16_triscv.vector.tuple_nxv16i8_3t:1537; CHECK:       # %bb.0: # %entry1538; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma1539; CHECK-NEXT:    vlseg3e16ff.v v6, (a0)1540; CHECK-NEXT:    csrr a0, vl1541; CHECK-NEXT:    sd a0, 0(a2)1542; CHECK-NEXT:    ret1543entry:1544  %0 = tail call {target("riscv.vector.tuple", <vscale x 16 x i8>, 3), i64} @llvm.riscv.vlseg3ff.triscv.vector.tuple_nxv16i8_3t(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) poison, ptr %base, i64 %vl, i64 4)1545  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 3), i64} %0, 01546  %2 = call <vscale x 8 x i16> @llvm.riscv.tuple.extract.nxv8i16.triscv.vector.tuple_nxv16i8_3t(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) %1, i32 1)1547  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 3), i64} %0, 11548  store i64 %3, ptr %outvl1549  ret <vscale x 8 x i16> %21550}1551 1552define <vscale x 8 x i16> @test_vlseg3ff_mask_nxv8i16_triscv.vector.tuple_nxv16i8_3t(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) %val, ptr %base, i64 %vl, <vscale x 8 x i1> %mask, ptr %outvl) {1553; CHECK-LABEL: test_vlseg3ff_mask_nxv8i16_triscv.vector.tuple_nxv16i8_3t:1554; CHECK:       # %bb.0: # %entry1555; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, mu1556; CHECK-NEXT:    vmv2r.v v6, v81557; CHECK-NEXT:    vmv2r.v v8, v101558; CHECK-NEXT:    vmv2r.v v10, v121559; CHECK-NEXT:    vlseg3e16ff.v v6, (a0), v0.t1560; CHECK-NEXT:    csrr a0, vl1561; CHECK-NEXT:    sd a0, 0(a2)1562; CHECK-NEXT:    ret1563entry:1564  %0 = tail call {target("riscv.vector.tuple", <vscale x 16 x i8>, 3), i64} @llvm.riscv.vlseg3ff.mask.triscv.vector.tuple_nxv16i8_3t.nxv8i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) %val, ptr %base, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 4)1565  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 3), i64} %0, 01566  %2 = call <vscale x 8 x i16> @llvm.riscv.tuple.extract.nxv8i16.triscv.vector.tuple_nxv16i8_3t(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) %1, i32 1)1567  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 3), i64} %0, 11568  store i64 %3, ptr %outvl1569  ret <vscale x 8 x i16> %21570}1571 1572define <vscale x 1 x i16> @test_vlseg4ff_nxv1i16_triscv.vector.tuple_nxv2i8_4t(ptr %base, i64 %vl, ptr %outvl) {1573; CHECK-LABEL: test_vlseg4ff_nxv1i16_triscv.vector.tuple_nxv2i8_4t:1574; CHECK:       # %bb.0: # %entry1575; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma1576; CHECK-NEXT:    vlseg4e16ff.v v7, (a0)1577; CHECK-NEXT:    csrr a0, vl1578; CHECK-NEXT:    sd a0, 0(a2)1579; CHECK-NEXT:    ret1580entry:1581  %0 = tail call {target("riscv.vector.tuple", <vscale x 2 x i8>, 4), i64} @llvm.riscv.vlseg4ff.triscv.vector.tuple_nxv2i8_4t(target("riscv.vector.tuple", <vscale x 2 x i8>, 4) poison, ptr %base, i64 %vl, i64 4)1582  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 4), i64} %0, 01583  %2 = call <vscale x 1 x i16> @llvm.riscv.tuple.extract.nxv1i16.triscv.vector.tuple_nxv2i8_4t(target("riscv.vector.tuple", <vscale x 2 x i8>, 4) %1, i32 1)1584  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 4), i64} %0, 11585  store i64 %3, ptr %outvl1586  ret <vscale x 1 x i16> %21587}1588 1589define <vscale x 1 x i16> @test_vlseg4ff_mask_nxv1i16_triscv.vector.tuple_nxv2i8_4t(target("riscv.vector.tuple", <vscale x 2 x i8>, 4) %val, ptr %base, i64 %vl, <vscale x 1 x i1> %mask, ptr %outvl) {1590; CHECK-LABEL: test_vlseg4ff_mask_nxv1i16_triscv.vector.tuple_nxv2i8_4t:1591; CHECK:       # %bb.0: # %entry1592; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, mu1593; CHECK-NEXT:    vmv1r.v v7, v81594; CHECK-NEXT:    vmv1r.v v8, v91595; CHECK-NEXT:    vmv1r.v v9, v101596; CHECK-NEXT:    vmv1r.v v10, v111597; CHECK-NEXT:    vlseg4e16ff.v v7, (a0), v0.t1598; CHECK-NEXT:    csrr a0, vl1599; CHECK-NEXT:    sd a0, 0(a2)1600; CHECK-NEXT:    ret1601entry:1602  %0 = tail call {target("riscv.vector.tuple", <vscale x 2 x i8>, 4), i64} @llvm.riscv.vlseg4ff.mask.triscv.vector.tuple_nxv2i8_4t.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 4) %val, ptr %base, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4)1603  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 4), i64} %0, 01604  %2 = call <vscale x 1 x i16> @llvm.riscv.tuple.extract.nxv1i16.triscv.vector.tuple_nxv2i8_4t(target("riscv.vector.tuple", <vscale x 2 x i8>, 4) %1, i32 1)1605  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 4), i64} %0, 11606  store i64 %3, ptr %outvl1607  ret <vscale x 1 x i16> %21608}1609 1610define <vscale x 2 x i16> @test_vlseg4ff_nxv2i16_triscv.vector.tuple_nxv4i8_4t(ptr %base, i64 %vl, ptr %outvl) {1611; CHECK-LABEL: test_vlseg4ff_nxv2i16_triscv.vector.tuple_nxv4i8_4t:1612; CHECK:       # %bb.0: # %entry1613; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma1614; CHECK-NEXT:    vlseg4e16ff.v v7, (a0)1615; CHECK-NEXT:    csrr a0, vl1616; CHECK-NEXT:    sd a0, 0(a2)1617; CHECK-NEXT:    ret1618entry:1619  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 4), i64} @llvm.riscv.vlseg4ff.triscv.vector.tuple_nxv4i8_4t(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) poison, ptr %base, i64 %vl, i64 4)1620  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 4), i64} %0, 01621  %2 = call <vscale x 2 x i16> @llvm.riscv.tuple.extract.nxv2i16.triscv.vector.tuple_nxv4i8_4t(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) %1, i32 1)1622  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 4), i64} %0, 11623  store i64 %3, ptr %outvl1624  ret <vscale x 2 x i16> %21625}1626 1627define <vscale x 2 x i16> @test_vlseg4ff_mask_nxv2i16_triscv.vector.tuple_nxv4i8_4t(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) %val, ptr %base, i64 %vl, <vscale x 2 x i1> %mask, ptr %outvl) {1628; CHECK-LABEL: test_vlseg4ff_mask_nxv2i16_triscv.vector.tuple_nxv4i8_4t:1629; CHECK:       # %bb.0: # %entry1630; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, mu1631; CHECK-NEXT:    vmv1r.v v7, v81632; CHECK-NEXT:    vmv1r.v v8, v91633; CHECK-NEXT:    vmv1r.v v9, v101634; CHECK-NEXT:    vmv1r.v v10, v111635; CHECK-NEXT:    vlseg4e16ff.v v7, (a0), v0.t1636; CHECK-NEXT:    csrr a0, vl1637; CHECK-NEXT:    sd a0, 0(a2)1638; CHECK-NEXT:    ret1639entry:1640  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 4), i64} @llvm.riscv.vlseg4ff.mask.triscv.vector.tuple_nxv4i8_4t.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) %val, ptr %base, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4)1641  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 4), i64} %0, 01642  %2 = call <vscale x 2 x i16> @llvm.riscv.tuple.extract.nxv2i16.triscv.vector.tuple_nxv4i8_4t(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) %1, i32 1)1643  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 4), i64} %0, 11644  store i64 %3, ptr %outvl1645  ret <vscale x 2 x i16> %21646}1647 1648define <vscale x 4 x i16> @test_vlseg4ff_nxv4i16_triscv.vector.tuple_nxv8i8_4t(ptr %base, i64 %vl, ptr %outvl) {1649; CHECK-LABEL: test_vlseg4ff_nxv4i16_triscv.vector.tuple_nxv8i8_4t:1650; CHECK:       # %bb.0: # %entry1651; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma1652; CHECK-NEXT:    vlseg4e16ff.v v7, (a0)1653; CHECK-NEXT:    csrr a0, vl1654; CHECK-NEXT:    sd a0, 0(a2)1655; CHECK-NEXT:    ret1656entry:1657  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 4), i64} @llvm.riscv.vlseg4ff.triscv.vector.tuple_nxv8i8_4t(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) poison, ptr %base, i64 %vl, i64 4)1658  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 4), i64} %0, 01659  %2 = call <vscale x 4 x i16> @llvm.riscv.tuple.extract.nxv4i16.triscv.vector.tuple_nxv8i8_4t(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) %1, i32 1)1660  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 4), i64} %0, 11661  store i64 %3, ptr %outvl1662  ret <vscale x 4 x i16> %21663}1664 1665define <vscale x 4 x i16> @test_vlseg4ff_mask_nxv4i16_triscv.vector.tuple_nxv8i8_4t(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) %val, ptr %base, i64 %vl, <vscale x 4 x i1> %mask, ptr %outvl) {1666; CHECK-LABEL: test_vlseg4ff_mask_nxv4i16_triscv.vector.tuple_nxv8i8_4t:1667; CHECK:       # %bb.0: # %entry1668; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, mu1669; CHECK-NEXT:    vmv1r.v v7, v81670; CHECK-NEXT:    vmv1r.v v8, v91671; CHECK-NEXT:    vmv1r.v v9, v101672; CHECK-NEXT:    vmv1r.v v10, v111673; CHECK-NEXT:    vlseg4e16ff.v v7, (a0), v0.t1674; CHECK-NEXT:    csrr a0, vl1675; CHECK-NEXT:    sd a0, 0(a2)1676; CHECK-NEXT:    ret1677entry:1678  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 4), i64} @llvm.riscv.vlseg4ff.mask.triscv.vector.tuple_nxv8i8_4t.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) %val, ptr %base, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4)1679  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 4), i64} %0, 01680  %2 = call <vscale x 4 x i16> @llvm.riscv.tuple.extract.nxv4i16.triscv.vector.tuple_nxv8i8_4t(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) %1, i32 1)1681  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 4), i64} %0, 11682  store i64 %3, ptr %outvl1683  ret <vscale x 4 x i16> %21684}1685 1686define <vscale x 8 x i16> @test_vlseg4ff_nxv8i16_triscv.vector.tuple_nxv16i8_4t(ptr %base, i64 %vl, ptr %outvl) {1687; CHECK-LABEL: test_vlseg4ff_nxv8i16_triscv.vector.tuple_nxv16i8_4t:1688; CHECK:       # %bb.0: # %entry1689; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma1690; CHECK-NEXT:    vlseg4e16ff.v v6, (a0)1691; CHECK-NEXT:    csrr a0, vl1692; CHECK-NEXT:    sd a0, 0(a2)1693; CHECK-NEXT:    ret1694entry:1695  %0 = tail call {target("riscv.vector.tuple", <vscale x 16 x i8>, 4), i64} @llvm.riscv.vlseg4ff.triscv.vector.tuple_nxv16i8_4t(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) poison, ptr %base, i64 %vl, i64 4)1696  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 4), i64} %0, 01697  %2 = call <vscale x 8 x i16> @llvm.riscv.tuple.extract.nxv8i16.triscv.vector.tuple_nxv16i8_4t(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) %1, i32 1)1698  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 4), i64} %0, 11699  store i64 %3, ptr %outvl1700  ret <vscale x 8 x i16> %21701}1702 1703define <vscale x 8 x i16> @test_vlseg4ff_mask_nxv8i16_triscv.vector.tuple_nxv16i8_4t(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) %val, ptr %base, i64 %vl, <vscale x 8 x i1> %mask, ptr %outvl) {1704; CHECK-LABEL: test_vlseg4ff_mask_nxv8i16_triscv.vector.tuple_nxv16i8_4t:1705; CHECK:       # %bb.0: # %entry1706; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, mu1707; CHECK-NEXT:    vmv2r.v v6, v81708; CHECK-NEXT:    vmv2r.v v8, v101709; CHECK-NEXT:    vmv2r.v v10, v121710; CHECK-NEXT:    vmv2r.v v12, v141711; CHECK-NEXT:    vlseg4e16ff.v v6, (a0), v0.t1712; CHECK-NEXT:    csrr a0, vl1713; CHECK-NEXT:    sd a0, 0(a2)1714; CHECK-NEXT:    ret1715entry:1716  %0 = tail call {target("riscv.vector.tuple", <vscale x 16 x i8>, 4), i64} @llvm.riscv.vlseg4ff.mask.triscv.vector.tuple_nxv16i8_4t.nxv8i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) %val, ptr %base, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 4)1717  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 4), i64} %0, 01718  %2 = call <vscale x 8 x i16> @llvm.riscv.tuple.extract.nxv8i16.triscv.vector.tuple_nxv16i8_4t(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) %1, i32 1)1719  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 4), i64} %0, 11720  store i64 %3, ptr %outvl1721  ret <vscale x 8 x i16> %21722}1723 1724define <vscale x 1 x i16> @test_vlseg5ff_nxv1i16_triscv.vector.tuple_nxv2i8_5t(ptr %base, i64 %vl, ptr %outvl) {1725; CHECK-LABEL: test_vlseg5ff_nxv1i16_triscv.vector.tuple_nxv2i8_5t:1726; CHECK:       # %bb.0: # %entry1727; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma1728; CHECK-NEXT:    vlseg5e16ff.v v7, (a0)1729; CHECK-NEXT:    csrr a0, vl1730; CHECK-NEXT:    sd a0, 0(a2)1731; CHECK-NEXT:    ret1732entry:1733  %0 = tail call {target("riscv.vector.tuple", <vscale x 2 x i8>, 5), i64} @llvm.riscv.vlseg5ff.triscv.vector.tuple_nxv2i8_5t(target("riscv.vector.tuple", <vscale x 2 x i8>, 5) poison, ptr %base, i64 %vl, i64 4)1734  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 5), i64} %0, 01735  %2 = call <vscale x 1 x i16> @llvm.riscv.tuple.extract.nxv1i16.triscv.vector.tuple_nxv2i8_5t(target("riscv.vector.tuple", <vscale x 2 x i8>, 5) %1, i32 1)1736  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 5), i64} %0, 11737  store i64 %3, ptr %outvl1738  ret <vscale x 1 x i16> %21739}1740 1741define <vscale x 1 x i16> @test_vlseg5ff_mask_nxv1i16_triscv.vector.tuple_nxv2i8_5t(target("riscv.vector.tuple", <vscale x 2 x i8>, 5) %val, ptr %base, i64 %vl, <vscale x 1 x i1> %mask, ptr %outvl) {1742; CHECK-LABEL: test_vlseg5ff_mask_nxv1i16_triscv.vector.tuple_nxv2i8_5t:1743; CHECK:       # %bb.0: # %entry1744; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, mu1745; CHECK-NEXT:    vmv1r.v v7, v81746; CHECK-NEXT:    vmv1r.v v8, v91747; CHECK-NEXT:    vmv1r.v v9, v101748; CHECK-NEXT:    vmv1r.v v10, v111749; CHECK-NEXT:    vmv1r.v v11, v121750; CHECK-NEXT:    vlseg5e16ff.v v7, (a0), v0.t1751; CHECK-NEXT:    csrr a0, vl1752; CHECK-NEXT:    sd a0, 0(a2)1753; CHECK-NEXT:    ret1754entry:1755  %0 = tail call {target("riscv.vector.tuple", <vscale x 2 x i8>, 5), i64} @llvm.riscv.vlseg5ff.mask.triscv.vector.tuple_nxv2i8_5t.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 5) %val, ptr %base, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4)1756  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 5), i64} %0, 01757  %2 = call <vscale x 1 x i16> @llvm.riscv.tuple.extract.nxv1i16.triscv.vector.tuple_nxv2i8_5t(target("riscv.vector.tuple", <vscale x 2 x i8>, 5) %1, i32 1)1758  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 5), i64} %0, 11759  store i64 %3, ptr %outvl1760  ret <vscale x 1 x i16> %21761}1762 1763define <vscale x 2 x i16> @test_vlseg5ff_nxv2i16_triscv.vector.tuple_nxv4i8_5t(ptr %base, i64 %vl, ptr %outvl) {1764; CHECK-LABEL: test_vlseg5ff_nxv2i16_triscv.vector.tuple_nxv4i8_5t:1765; CHECK:       # %bb.0: # %entry1766; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma1767; CHECK-NEXT:    vlseg5e16ff.v v7, (a0)1768; CHECK-NEXT:    csrr a0, vl1769; CHECK-NEXT:    sd a0, 0(a2)1770; CHECK-NEXT:    ret1771entry:1772  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 5), i64} @llvm.riscv.vlseg5ff.triscv.vector.tuple_nxv4i8_5t(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) poison, ptr %base, i64 %vl, i64 4)1773  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 5), i64} %0, 01774  %2 = call <vscale x 2 x i16> @llvm.riscv.tuple.extract.nxv2i16.triscv.vector.tuple_nxv4i8_5t(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) %1, i32 1)1775  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 5), i64} %0, 11776  store i64 %3, ptr %outvl1777  ret <vscale x 2 x i16> %21778}1779 1780define <vscale x 2 x i16> @test_vlseg5ff_mask_nxv2i16_triscv.vector.tuple_nxv4i8_5t(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) %val, ptr %base, i64 %vl, <vscale x 2 x i1> %mask, ptr %outvl) {1781; CHECK-LABEL: test_vlseg5ff_mask_nxv2i16_triscv.vector.tuple_nxv4i8_5t:1782; CHECK:       # %bb.0: # %entry1783; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, mu1784; CHECK-NEXT:    vmv1r.v v7, v81785; CHECK-NEXT:    vmv1r.v v8, v91786; CHECK-NEXT:    vmv1r.v v9, v101787; CHECK-NEXT:    vmv1r.v v10, v111788; CHECK-NEXT:    vmv1r.v v11, v121789; CHECK-NEXT:    vlseg5e16ff.v v7, (a0), v0.t1790; CHECK-NEXT:    csrr a0, vl1791; CHECK-NEXT:    sd a0, 0(a2)1792; CHECK-NEXT:    ret1793entry:1794  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 5), i64} @llvm.riscv.vlseg5ff.mask.triscv.vector.tuple_nxv4i8_5t.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) %val, ptr %base, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4)1795  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 5), i64} %0, 01796  %2 = call <vscale x 2 x i16> @llvm.riscv.tuple.extract.nxv2i16.triscv.vector.tuple_nxv4i8_5t(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) %1, i32 1)1797  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 5), i64} %0, 11798  store i64 %3, ptr %outvl1799  ret <vscale x 2 x i16> %21800}1801 1802define <vscale x 4 x i16> @test_vlseg5ff_nxv4i16_triscv.vector.tuple_nxv8i8_5t(ptr %base, i64 %vl, ptr %outvl) {1803; CHECK-LABEL: test_vlseg5ff_nxv4i16_triscv.vector.tuple_nxv8i8_5t:1804; CHECK:       # %bb.0: # %entry1805; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma1806; CHECK-NEXT:    vlseg5e16ff.v v7, (a0)1807; CHECK-NEXT:    csrr a0, vl1808; CHECK-NEXT:    sd a0, 0(a2)1809; CHECK-NEXT:    ret1810entry:1811  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 5), i64} @llvm.riscv.vlseg5ff.triscv.vector.tuple_nxv8i8_5t(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) poison, ptr %base, i64 %vl, i64 4)1812  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 5), i64} %0, 01813  %2 = call <vscale x 4 x i16> @llvm.riscv.tuple.extract.nxv4i16.triscv.vector.tuple_nxv8i8_5t(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) %1, i32 1)1814  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 5), i64} %0, 11815  store i64 %3, ptr %outvl1816  ret <vscale x 4 x i16> %21817}1818 1819define <vscale x 4 x i16> @test_vlseg5ff_mask_nxv4i16_triscv.vector.tuple_nxv8i8_5t(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) %val, ptr %base, i64 %vl, <vscale x 4 x i1> %mask, ptr %outvl) {1820; CHECK-LABEL: test_vlseg5ff_mask_nxv4i16_triscv.vector.tuple_nxv8i8_5t:1821; CHECK:       # %bb.0: # %entry1822; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, mu1823; CHECK-NEXT:    vmv1r.v v7, v81824; CHECK-NEXT:    vmv1r.v v8, v91825; CHECK-NEXT:    vmv1r.v v9, v101826; CHECK-NEXT:    vmv1r.v v10, v111827; CHECK-NEXT:    vmv1r.v v11, v121828; CHECK-NEXT:    vlseg5e16ff.v v7, (a0), v0.t1829; CHECK-NEXT:    csrr a0, vl1830; CHECK-NEXT:    sd a0, 0(a2)1831; CHECK-NEXT:    ret1832entry:1833  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 5), i64} @llvm.riscv.vlseg5ff.mask.triscv.vector.tuple_nxv8i8_5t.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) %val, ptr %base, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4)1834  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 5), i64} %0, 01835  %2 = call <vscale x 4 x i16> @llvm.riscv.tuple.extract.nxv4i16.triscv.vector.tuple_nxv8i8_5t(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) %1, i32 1)1836  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 5), i64} %0, 11837  store i64 %3, ptr %outvl1838  ret <vscale x 4 x i16> %21839}1840 1841define <vscale x 1 x i16> @test_vlseg6ff_nxv1i16_triscv.vector.tuple_nxv2i8_6t(ptr %base, i64 %vl, ptr %outvl) {1842; CHECK-LABEL: test_vlseg6ff_nxv1i16_triscv.vector.tuple_nxv2i8_6t:1843; CHECK:       # %bb.0: # %entry1844; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma1845; CHECK-NEXT:    vlseg6e16ff.v v7, (a0)1846; CHECK-NEXT:    csrr a0, vl1847; CHECK-NEXT:    sd a0, 0(a2)1848; CHECK-NEXT:    ret1849entry:1850  %0 = tail call {target("riscv.vector.tuple", <vscale x 2 x i8>, 6), i64} @llvm.riscv.vlseg6ff.triscv.vector.tuple_nxv2i8_6t(target("riscv.vector.tuple", <vscale x 2 x i8>, 6) poison, ptr %base, i64 %vl, i64 4)1851  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 6), i64} %0, 01852  %2 = call <vscale x 1 x i16> @llvm.riscv.tuple.extract.nxv1i16.triscv.vector.tuple_nxv2i8_6t(target("riscv.vector.tuple", <vscale x 2 x i8>, 6) %1, i32 1)1853  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 6), i64} %0, 11854  store i64 %3, ptr %outvl1855  ret <vscale x 1 x i16> %21856}1857 1858define <vscale x 1 x i16> @test_vlseg6ff_mask_nxv1i16_triscv.vector.tuple_nxv2i8_6t(target("riscv.vector.tuple", <vscale x 2 x i8>, 6) %val, ptr %base, i64 %vl, <vscale x 1 x i1> %mask, ptr %outvl) {1859; CHECK-LABEL: test_vlseg6ff_mask_nxv1i16_triscv.vector.tuple_nxv2i8_6t:1860; CHECK:       # %bb.0: # %entry1861; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, mu1862; CHECK-NEXT:    vmv1r.v v7, v81863; CHECK-NEXT:    vmv1r.v v8, v91864; CHECK-NEXT:    vmv1r.v v9, v101865; CHECK-NEXT:    vmv1r.v v10, v111866; CHECK-NEXT:    vmv1r.v v11, v121867; CHECK-NEXT:    vmv1r.v v12, v131868; CHECK-NEXT:    vlseg6e16ff.v v7, (a0), v0.t1869; CHECK-NEXT:    csrr a0, vl1870; CHECK-NEXT:    sd a0, 0(a2)1871; CHECK-NEXT:    ret1872entry:1873  %0 = tail call {target("riscv.vector.tuple", <vscale x 2 x i8>, 6), i64} @llvm.riscv.vlseg6ff.mask.triscv.vector.tuple_nxv2i8_6t.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 6) %val, ptr %base, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4)1874  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 6), i64} %0, 01875  %2 = call <vscale x 1 x i16> @llvm.riscv.tuple.extract.nxv1i16.triscv.vector.tuple_nxv2i8_6t(target("riscv.vector.tuple", <vscale x 2 x i8>, 6) %1, i32 1)1876  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 6), i64} %0, 11877  store i64 %3, ptr %outvl1878  ret <vscale x 1 x i16> %21879}1880 1881define <vscale x 2 x i16> @test_vlseg6ff_nxv2i16_triscv.vector.tuple_nxv4i8_6t(ptr %base, i64 %vl, ptr %outvl) {1882; CHECK-LABEL: test_vlseg6ff_nxv2i16_triscv.vector.tuple_nxv4i8_6t:1883; CHECK:       # %bb.0: # %entry1884; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma1885; CHECK-NEXT:    vlseg6e16ff.v v7, (a0)1886; CHECK-NEXT:    csrr a0, vl1887; CHECK-NEXT:    sd a0, 0(a2)1888; CHECK-NEXT:    ret1889entry:1890  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 6), i64} @llvm.riscv.vlseg6ff.triscv.vector.tuple_nxv4i8_6t(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) poison, ptr %base, i64 %vl, i64 4)1891  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 6), i64} %0, 01892  %2 = call <vscale x 2 x i16> @llvm.riscv.tuple.extract.nxv2i16.triscv.vector.tuple_nxv4i8_6t(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) %1, i32 1)1893  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 6), i64} %0, 11894  store i64 %3, ptr %outvl1895  ret <vscale x 2 x i16> %21896}1897 1898define <vscale x 2 x i16> @test_vlseg6ff_mask_nxv2i16_triscv.vector.tuple_nxv4i8_6t(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) %val, ptr %base, i64 %vl, <vscale x 2 x i1> %mask, ptr %outvl) {1899; CHECK-LABEL: test_vlseg6ff_mask_nxv2i16_triscv.vector.tuple_nxv4i8_6t:1900; CHECK:       # %bb.0: # %entry1901; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, mu1902; CHECK-NEXT:    vmv1r.v v7, v81903; CHECK-NEXT:    vmv1r.v v8, v91904; CHECK-NEXT:    vmv1r.v v9, v101905; CHECK-NEXT:    vmv1r.v v10, v111906; CHECK-NEXT:    vmv1r.v v11, v121907; CHECK-NEXT:    vmv1r.v v12, v131908; CHECK-NEXT:    vlseg6e16ff.v v7, (a0), v0.t1909; CHECK-NEXT:    csrr a0, vl1910; CHECK-NEXT:    sd a0, 0(a2)1911; CHECK-NEXT:    ret1912entry:1913  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 6), i64} @llvm.riscv.vlseg6ff.mask.triscv.vector.tuple_nxv4i8_6t.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) %val, ptr %base, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4)1914  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 6), i64} %0, 01915  %2 = call <vscale x 2 x i16> @llvm.riscv.tuple.extract.nxv2i16.triscv.vector.tuple_nxv4i8_6t(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) %1, i32 1)1916  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 6), i64} %0, 11917  store i64 %3, ptr %outvl1918  ret <vscale x 2 x i16> %21919}1920 1921define <vscale x 4 x i16> @test_vlseg6ff_nxv4i16_triscv.vector.tuple_nxv8i8_6t(ptr %base, i64 %vl, ptr %outvl) {1922; CHECK-LABEL: test_vlseg6ff_nxv4i16_triscv.vector.tuple_nxv8i8_6t:1923; CHECK:       # %bb.0: # %entry1924; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma1925; CHECK-NEXT:    vlseg6e16ff.v v7, (a0)1926; CHECK-NEXT:    csrr a0, vl1927; CHECK-NEXT:    sd a0, 0(a2)1928; CHECK-NEXT:    ret1929entry:1930  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 6), i64} @llvm.riscv.vlseg6ff.triscv.vector.tuple_nxv8i8_6t(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) poison, ptr %base, i64 %vl, i64 4)1931  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 6), i64} %0, 01932  %2 = call <vscale x 4 x i16> @llvm.riscv.tuple.extract.nxv4i16.triscv.vector.tuple_nxv8i8_6t(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) %1, i32 1)1933  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 6), i64} %0, 11934  store i64 %3, ptr %outvl1935  ret <vscale x 4 x i16> %21936}1937 1938define <vscale x 4 x i16> @test_vlseg6ff_mask_nxv4i16_triscv.vector.tuple_nxv8i8_6t(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) %val, ptr %base, i64 %vl, <vscale x 4 x i1> %mask, ptr %outvl) {1939; CHECK-LABEL: test_vlseg6ff_mask_nxv4i16_triscv.vector.tuple_nxv8i8_6t:1940; CHECK:       # %bb.0: # %entry1941; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, mu1942; CHECK-NEXT:    vmv1r.v v7, v81943; CHECK-NEXT:    vmv1r.v v8, v91944; CHECK-NEXT:    vmv1r.v v9, v101945; CHECK-NEXT:    vmv1r.v v10, v111946; CHECK-NEXT:    vmv1r.v v11, v121947; CHECK-NEXT:    vmv1r.v v12, v131948; CHECK-NEXT:    vlseg6e16ff.v v7, (a0), v0.t1949; CHECK-NEXT:    csrr a0, vl1950; CHECK-NEXT:    sd a0, 0(a2)1951; CHECK-NEXT:    ret1952entry:1953  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 6), i64} @llvm.riscv.vlseg6ff.mask.triscv.vector.tuple_nxv8i8_6t.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) %val, ptr %base, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4)1954  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 6), i64} %0, 01955  %2 = call <vscale x 4 x i16> @llvm.riscv.tuple.extract.nxv4i16.triscv.vector.tuple_nxv8i8_6t(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) %1, i32 1)1956  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 6), i64} %0, 11957  store i64 %3, ptr %outvl1958  ret <vscale x 4 x i16> %21959}1960 1961define <vscale x 1 x i16> @test_vlseg7ff_nxv1i16_triscv.vector.tuple_nxv2i8_7t(ptr %base, i64 %vl, ptr %outvl) {1962; CHECK-LABEL: test_vlseg7ff_nxv1i16_triscv.vector.tuple_nxv2i8_7t:1963; CHECK:       # %bb.0: # %entry1964; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma1965; CHECK-NEXT:    vlseg7e16ff.v v7, (a0)1966; CHECK-NEXT:    csrr a0, vl1967; CHECK-NEXT:    sd a0, 0(a2)1968; CHECK-NEXT:    ret1969entry:1970  %0 = tail call {target("riscv.vector.tuple", <vscale x 2 x i8>, 7), i64} @llvm.riscv.vlseg7ff.triscv.vector.tuple_nxv2i8_7t(target("riscv.vector.tuple", <vscale x 2 x i8>, 7) poison, ptr %base, i64 %vl, i64 4)1971  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 7), i64} %0, 01972  %2 = call <vscale x 1 x i16> @llvm.riscv.tuple.extract.nxv1i16.triscv.vector.tuple_nxv2i8_7t(target("riscv.vector.tuple", <vscale x 2 x i8>, 7) %1, i32 1)1973  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 7), i64} %0, 11974  store i64 %3, ptr %outvl1975  ret <vscale x 1 x i16> %21976}1977 1978define <vscale x 1 x i16> @test_vlseg7ff_mask_nxv1i16_triscv.vector.tuple_nxv2i8_7t(target("riscv.vector.tuple", <vscale x 2 x i8>, 7) %val, ptr %base, i64 %vl, <vscale x 1 x i1> %mask, ptr %outvl) {1979; CHECK-LABEL: test_vlseg7ff_mask_nxv1i16_triscv.vector.tuple_nxv2i8_7t:1980; CHECK:       # %bb.0: # %entry1981; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, mu1982; CHECK-NEXT:    vmv1r.v v7, v81983; CHECK-NEXT:    vmv1r.v v8, v91984; CHECK-NEXT:    vmv1r.v v9, v101985; CHECK-NEXT:    vmv1r.v v10, v111986; CHECK-NEXT:    vmv1r.v v11, v121987; CHECK-NEXT:    vmv1r.v v12, v131988; CHECK-NEXT:    vmv1r.v v13, v141989; CHECK-NEXT:    vlseg7e16ff.v v7, (a0), v0.t1990; CHECK-NEXT:    csrr a0, vl1991; CHECK-NEXT:    sd a0, 0(a2)1992; CHECK-NEXT:    ret1993entry:1994  %0 = tail call {target("riscv.vector.tuple", <vscale x 2 x i8>, 7), i64} @llvm.riscv.vlseg7ff.mask.triscv.vector.tuple_nxv2i8_7t.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 7) %val, ptr %base, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4)1995  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 7), i64} %0, 01996  %2 = call <vscale x 1 x i16> @llvm.riscv.tuple.extract.nxv1i16.triscv.vector.tuple_nxv2i8_7t(target("riscv.vector.tuple", <vscale x 2 x i8>, 7) %1, i32 1)1997  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 7), i64} %0, 11998  store i64 %3, ptr %outvl1999  ret <vscale x 1 x i16> %22000}2001 2002define <vscale x 2 x i16> @test_vlseg7ff_nxv2i16_triscv.vector.tuple_nxv4i8_7t(ptr %base, i64 %vl, ptr %outvl) {2003; CHECK-LABEL: test_vlseg7ff_nxv2i16_triscv.vector.tuple_nxv4i8_7t:2004; CHECK:       # %bb.0: # %entry2005; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma2006; CHECK-NEXT:    vlseg7e16ff.v v7, (a0)2007; CHECK-NEXT:    csrr a0, vl2008; CHECK-NEXT:    sd a0, 0(a2)2009; CHECK-NEXT:    ret2010entry:2011  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 7), i64} @llvm.riscv.vlseg7ff.triscv.vector.tuple_nxv4i8_7t(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) poison, ptr %base, i64 %vl, i64 4)2012  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 7), i64} %0, 02013  %2 = call <vscale x 2 x i16> @llvm.riscv.tuple.extract.nxv2i16.triscv.vector.tuple_nxv4i8_7t(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) %1, i32 1)2014  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 7), i64} %0, 12015  store i64 %3, ptr %outvl2016  ret <vscale x 2 x i16> %22017}2018 2019define <vscale x 2 x i16> @test_vlseg7ff_mask_nxv2i16_triscv.vector.tuple_nxv4i8_7t(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) %val, ptr %base, i64 %vl, <vscale x 2 x i1> %mask, ptr %outvl) {2020; CHECK-LABEL: test_vlseg7ff_mask_nxv2i16_triscv.vector.tuple_nxv4i8_7t:2021; CHECK:       # %bb.0: # %entry2022; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, mu2023; CHECK-NEXT:    vmv1r.v v7, v82024; CHECK-NEXT:    vmv1r.v v8, v92025; CHECK-NEXT:    vmv1r.v v9, v102026; CHECK-NEXT:    vmv1r.v v10, v112027; CHECK-NEXT:    vmv1r.v v11, v122028; CHECK-NEXT:    vmv1r.v v12, v132029; CHECK-NEXT:    vmv1r.v v13, v142030; CHECK-NEXT:    vlseg7e16ff.v v7, (a0), v0.t2031; CHECK-NEXT:    csrr a0, vl2032; CHECK-NEXT:    sd a0, 0(a2)2033; CHECK-NEXT:    ret2034entry:2035  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 7), i64} @llvm.riscv.vlseg7ff.mask.triscv.vector.tuple_nxv4i8_7t.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) %val, ptr %base, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4)2036  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 7), i64} %0, 02037  %2 = call <vscale x 2 x i16> @llvm.riscv.tuple.extract.nxv2i16.triscv.vector.tuple_nxv4i8_7t(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) %1, i32 1)2038  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 7), i64} %0, 12039  store i64 %3, ptr %outvl2040  ret <vscale x 2 x i16> %22041}2042 2043define <vscale x 4 x i16> @test_vlseg7ff_nxv4i16_triscv.vector.tuple_nxv8i8_7t(ptr %base, i64 %vl, ptr %outvl) {2044; CHECK-LABEL: test_vlseg7ff_nxv4i16_triscv.vector.tuple_nxv8i8_7t:2045; CHECK:       # %bb.0: # %entry2046; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma2047; CHECK-NEXT:    vlseg7e16ff.v v7, (a0)2048; CHECK-NEXT:    csrr a0, vl2049; CHECK-NEXT:    sd a0, 0(a2)2050; CHECK-NEXT:    ret2051entry:2052  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 7), i64} @llvm.riscv.vlseg7ff.triscv.vector.tuple_nxv8i8_7t(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) poison, ptr %base, i64 %vl, i64 4)2053  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 7), i64} %0, 02054  %2 = call <vscale x 4 x i16> @llvm.riscv.tuple.extract.nxv4i16.triscv.vector.tuple_nxv8i8_7t(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) %1, i32 1)2055  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 7), i64} %0, 12056  store i64 %3, ptr %outvl2057  ret <vscale x 4 x i16> %22058}2059 2060define <vscale x 4 x i16> @test_vlseg7ff_mask_nxv4i16_triscv.vector.tuple_nxv8i8_7t(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) %val, ptr %base, i64 %vl, <vscale x 4 x i1> %mask, ptr %outvl) {2061; CHECK-LABEL: test_vlseg7ff_mask_nxv4i16_triscv.vector.tuple_nxv8i8_7t:2062; CHECK:       # %bb.0: # %entry2063; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, mu2064; CHECK-NEXT:    vmv1r.v v7, v82065; CHECK-NEXT:    vmv1r.v v8, v92066; CHECK-NEXT:    vmv1r.v v9, v102067; CHECK-NEXT:    vmv1r.v v10, v112068; CHECK-NEXT:    vmv1r.v v11, v122069; CHECK-NEXT:    vmv1r.v v12, v132070; CHECK-NEXT:    vmv1r.v v13, v142071; CHECK-NEXT:    vlseg7e16ff.v v7, (a0), v0.t2072; CHECK-NEXT:    csrr a0, vl2073; CHECK-NEXT:    sd a0, 0(a2)2074; CHECK-NEXT:    ret2075entry:2076  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 7), i64} @llvm.riscv.vlseg7ff.mask.triscv.vector.tuple_nxv8i8_7t.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) %val, ptr %base, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4)2077  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 7), i64} %0, 02078  %2 = call <vscale x 4 x i16> @llvm.riscv.tuple.extract.nxv4i16.triscv.vector.tuple_nxv8i8_7t(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) %1, i32 1)2079  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 7), i64} %0, 12080  store i64 %3, ptr %outvl2081  ret <vscale x 4 x i16> %22082}2083 2084define <vscale x 1 x i16> @test_vlseg8ff_nxv1i16_triscv.vector.tuple_nxv2i8_8t(ptr %base, i64 %vl, ptr %outvl) {2085; CHECK-LABEL: test_vlseg8ff_nxv1i16_triscv.vector.tuple_nxv2i8_8t:2086; CHECK:       # %bb.0: # %entry2087; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma2088; CHECK-NEXT:    vlseg8e16ff.v v7, (a0)2089; CHECK-NEXT:    csrr a0, vl2090; CHECK-NEXT:    sd a0, 0(a2)2091; CHECK-NEXT:    ret2092entry:2093  %0 = tail call {target("riscv.vector.tuple", <vscale x 2 x i8>, 8), i64} @llvm.riscv.vlseg8ff.triscv.vector.tuple_nxv2i8_8t(target("riscv.vector.tuple", <vscale x 2 x i8>, 8) poison, ptr %base, i64 %vl, i64 4)2094  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 8), i64} %0, 02095  %2 = call <vscale x 1 x i16> @llvm.riscv.tuple.extract.nxv1i16.triscv.vector.tuple_nxv2i8_8t(target("riscv.vector.tuple", <vscale x 2 x i8>, 8) %1, i32 1)2096  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 8), i64} %0, 12097  store i64 %3, ptr %outvl2098  ret <vscale x 1 x i16> %22099}2100 2101define <vscale x 1 x i16> @test_vlseg8ff_mask_nxv1i16_triscv.vector.tuple_nxv2i8_8t(target("riscv.vector.tuple", <vscale x 2 x i8>, 8) %val, ptr %base, i64 %vl, <vscale x 1 x i1> %mask, ptr %outvl) {2102; CHECK-LABEL: test_vlseg8ff_mask_nxv1i16_triscv.vector.tuple_nxv2i8_8t:2103; CHECK:       # %bb.0: # %entry2104; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, mu2105; CHECK-NEXT:    vmv1r.v v7, v82106; CHECK-NEXT:    vmv1r.v v8, v92107; CHECK-NEXT:    vmv1r.v v9, v102108; CHECK-NEXT:    vmv1r.v v10, v112109; CHECK-NEXT:    vmv1r.v v11, v122110; CHECK-NEXT:    vmv1r.v v12, v132111; CHECK-NEXT:    vmv1r.v v13, v142112; CHECK-NEXT:    vmv1r.v v14, v152113; CHECK-NEXT:    vlseg8e16ff.v v7, (a0), v0.t2114; CHECK-NEXT:    csrr a0, vl2115; CHECK-NEXT:    sd a0, 0(a2)2116; CHECK-NEXT:    ret2117entry:2118  %0 = tail call {target("riscv.vector.tuple", <vscale x 2 x i8>, 8), i64} @llvm.riscv.vlseg8ff.mask.triscv.vector.tuple_nxv2i8_8t.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 8) %val, ptr %base, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4)2119  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 8), i64} %0, 02120  %2 = call <vscale x 1 x i16> @llvm.riscv.tuple.extract.nxv1i16.triscv.vector.tuple_nxv2i8_8t(target("riscv.vector.tuple", <vscale x 2 x i8>, 8) %1, i32 1)2121  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 8), i64} %0, 12122  store i64 %3, ptr %outvl2123  ret <vscale x 1 x i16> %22124}2125 2126define <vscale x 2 x i16> @test_vlseg8ff_nxv2i16_triscv.vector.tuple_nxv4i8_8t(ptr %base, i64 %vl, ptr %outvl) {2127; CHECK-LABEL: test_vlseg8ff_nxv2i16_triscv.vector.tuple_nxv4i8_8t:2128; CHECK:       # %bb.0: # %entry2129; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma2130; CHECK-NEXT:    vlseg8e16ff.v v7, (a0)2131; CHECK-NEXT:    csrr a0, vl2132; CHECK-NEXT:    sd a0, 0(a2)2133; CHECK-NEXT:    ret2134entry:2135  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 8), i64} @llvm.riscv.vlseg8ff.triscv.vector.tuple_nxv4i8_8t(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) poison, ptr %base, i64 %vl, i64 4)2136  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 8), i64} %0, 02137  %2 = call <vscale x 2 x i16> @llvm.riscv.tuple.extract.nxv2i16.triscv.vector.tuple_nxv4i8_8t(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) %1, i32 1)2138  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 8), i64} %0, 12139  store i64 %3, ptr %outvl2140  ret <vscale x 2 x i16> %22141}2142 2143define <vscale x 2 x i16> @test_vlseg8ff_mask_nxv2i16_triscv.vector.tuple_nxv4i8_8t(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) %val, ptr %base, i64 %vl, <vscale x 2 x i1> %mask, ptr %outvl) {2144; CHECK-LABEL: test_vlseg8ff_mask_nxv2i16_triscv.vector.tuple_nxv4i8_8t:2145; CHECK:       # %bb.0: # %entry2146; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, mu2147; CHECK-NEXT:    vmv1r.v v7, v82148; CHECK-NEXT:    vmv1r.v v8, v92149; CHECK-NEXT:    vmv1r.v v9, v102150; CHECK-NEXT:    vmv1r.v v10, v112151; CHECK-NEXT:    vmv1r.v v11, v122152; CHECK-NEXT:    vmv1r.v v12, v132153; CHECK-NEXT:    vmv1r.v v13, v142154; CHECK-NEXT:    vmv1r.v v14, v152155; CHECK-NEXT:    vlseg8e16ff.v v7, (a0), v0.t2156; CHECK-NEXT:    csrr a0, vl2157; CHECK-NEXT:    sd a0, 0(a2)2158; CHECK-NEXT:    ret2159entry:2160  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 8), i64} @llvm.riscv.vlseg8ff.mask.triscv.vector.tuple_nxv4i8_8t.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) %val, ptr %base, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4)2161  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 8), i64} %0, 02162  %2 = call <vscale x 2 x i16> @llvm.riscv.tuple.extract.nxv2i16.triscv.vector.tuple_nxv4i8_8t(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) %1, i32 1)2163  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 8), i64} %0, 12164  store i64 %3, ptr %outvl2165  ret <vscale x 2 x i16> %22166}2167 2168define <vscale x 4 x i16> @test_vlseg8ff_nxv4i16_triscv.vector.tuple_nxv8i8_8t(ptr %base, i64 %vl, ptr %outvl) {2169; CHECK-LABEL: test_vlseg8ff_nxv4i16_triscv.vector.tuple_nxv8i8_8t:2170; CHECK:       # %bb.0: # %entry2171; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma2172; CHECK-NEXT:    vlseg8e16ff.v v7, (a0)2173; CHECK-NEXT:    csrr a0, vl2174; CHECK-NEXT:    sd a0, 0(a2)2175; CHECK-NEXT:    ret2176entry:2177  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 8), i64} @llvm.riscv.vlseg8ff.triscv.vector.tuple_nxv8i8_8t(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) poison, ptr %base, i64 %vl, i64 4)2178  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 8), i64} %0, 02179  %2 = call <vscale x 4 x i16> @llvm.riscv.tuple.extract.nxv4i16.triscv.vector.tuple_nxv8i8_8t(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) %1, i32 1)2180  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 8), i64} %0, 12181  store i64 %3, ptr %outvl2182  ret <vscale x 4 x i16> %22183}2184 2185define <vscale x 4 x i16> @test_vlseg8ff_mask_nxv4i16_triscv.vector.tuple_nxv8i8_8t(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) %val, ptr %base, i64 %vl, <vscale x 4 x i1> %mask, ptr %outvl) {2186; CHECK-LABEL: test_vlseg8ff_mask_nxv4i16_triscv.vector.tuple_nxv8i8_8t:2187; CHECK:       # %bb.0: # %entry2188; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, mu2189; CHECK-NEXT:    vmv1r.v v7, v82190; CHECK-NEXT:    vmv1r.v v8, v92191; CHECK-NEXT:    vmv1r.v v9, v102192; CHECK-NEXT:    vmv1r.v v10, v112193; CHECK-NEXT:    vmv1r.v v11, v122194; CHECK-NEXT:    vmv1r.v v12, v132195; CHECK-NEXT:    vmv1r.v v13, v142196; CHECK-NEXT:    vmv1r.v v14, v152197; CHECK-NEXT:    vlseg8e16ff.v v7, (a0), v0.t2198; CHECK-NEXT:    csrr a0, vl2199; CHECK-NEXT:    sd a0, 0(a2)2200; CHECK-NEXT:    ret2201entry:2202  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 8), i64} @llvm.riscv.vlseg8ff.mask.triscv.vector.tuple_nxv8i8_8t.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) %val, ptr %base, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4)2203  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 8), i64} %0, 02204  %2 = call <vscale x 4 x i16> @llvm.riscv.tuple.extract.nxv4i16.triscv.vector.tuple_nxv8i8_8t(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) %1, i32 1)2205  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 8), i64} %0, 12206  store i64 %3, ptr %outvl2207  ret <vscale x 4 x i16> %22208}2209 2210define <vscale x 1 x i32> @test_vlseg2ff_nxv1i32_triscv.vector.tuple_nxv4i8_2t(ptr %base, i64 %vl, ptr %outvl) {2211; CHECK-LABEL: test_vlseg2ff_nxv1i32_triscv.vector.tuple_nxv4i8_2t:2212; CHECK:       # %bb.0: # %entry2213; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma2214; CHECK-NEXT:    vlseg2e32ff.v v7, (a0)2215; CHECK-NEXT:    csrr a0, vl2216; CHECK-NEXT:    sd a0, 0(a2)2217; CHECK-NEXT:    ret2218entry:2219  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 2), i64} @llvm.riscv.vlseg2ff.triscv.vector.tuple_nxv4i8_2t(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) poison, ptr %base, i64 %vl, i64 5)2220  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 2), i64} %0, 02221  %2 = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_2t(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) %1, i32 1)2222  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 2), i64} %0, 12223  store i64 %3, ptr %outvl2224  ret <vscale x 1 x i32> %22225}2226 2227define <vscale x 1 x i32> @test_vlseg2ff_mask_nxv1i32_triscv.vector.tuple_nxv4i8_2t(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) %val, ptr %base, i64 %vl, <vscale x 1 x i1> %mask, ptr %outvl) {2228; CHECK-LABEL: test_vlseg2ff_mask_nxv1i32_triscv.vector.tuple_nxv4i8_2t:2229; CHECK:       # %bb.0: # %entry2230; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, mu2231; CHECK-NEXT:    vmv1r.v v7, v82232; CHECK-NEXT:    vmv1r.v v8, v92233; CHECK-NEXT:    vlseg2e32ff.v v7, (a0), v0.t2234; CHECK-NEXT:    csrr a0, vl2235; CHECK-NEXT:    sd a0, 0(a2)2236; CHECK-NEXT:    ret2237entry:2238  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 2), i64} @llvm.riscv.vlseg2ff.mask.triscv.vector.tuple_nxv4i8_2t.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) %val, ptr %base, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5)2239  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 2), i64} %0, 02240  %2 = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_2t(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) %1, i32 1)2241  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 2), i64} %0, 12242  store i64 %3, ptr %outvl2243  ret <vscale x 1 x i32> %22244}2245 2246define <vscale x 2 x i32> @test_vlseg2ff_nxv2i32_triscv.vector.tuple_nxv8i8_2t(ptr %base, i64 %vl, ptr %outvl) {2247; CHECK-LABEL: test_vlseg2ff_nxv2i32_triscv.vector.tuple_nxv8i8_2t:2248; CHECK:       # %bb.0: # %entry2249; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma2250; CHECK-NEXT:    vlseg2e32ff.v v7, (a0)2251; CHECK-NEXT:    csrr a0, vl2252; CHECK-NEXT:    sd a0, 0(a2)2253; CHECK-NEXT:    ret2254entry:2255  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 2), i64} @llvm.riscv.vlseg2ff.triscv.vector.tuple_nxv8i8_2t(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) poison, ptr %base, i64 %vl, i64 5)2256  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 2), i64} %0, 02257  %2 = call <vscale x 2 x i32> @llvm.riscv.tuple.extract.nxv2i32.triscv.vector.tuple_nxv8i8_2t(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) %1, i32 1)2258  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 2), i64} %0, 12259  store i64 %3, ptr %outvl2260  ret <vscale x 2 x i32> %22261}2262 2263define <vscale x 2 x i32> @test_vlseg2ff_mask_nxv2i32_triscv.vector.tuple_nxv8i8_2t(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) %val, ptr %base, i64 %vl, <vscale x 2 x i1> %mask, ptr %outvl) {2264; CHECK-LABEL: test_vlseg2ff_mask_nxv2i32_triscv.vector.tuple_nxv8i8_2t:2265; CHECK:       # %bb.0: # %entry2266; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, mu2267; CHECK-NEXT:    vmv1r.v v7, v82268; CHECK-NEXT:    vmv1r.v v8, v92269; CHECK-NEXT:    vlseg2e32ff.v v7, (a0), v0.t2270; CHECK-NEXT:    csrr a0, vl2271; CHECK-NEXT:    sd a0, 0(a2)2272; CHECK-NEXT:    ret2273entry:2274  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 2), i64} @llvm.riscv.vlseg2ff.mask.triscv.vector.tuple_nxv8i8_2t.nxv2i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) %val, ptr %base, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5)2275  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 2), i64} %0, 02276  %2 = call <vscale x 2 x i32> @llvm.riscv.tuple.extract.nxv2i32.triscv.vector.tuple_nxv8i8_2t(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) %1, i32 1)2277  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 2), i64} %0, 12278  store i64 %3, ptr %outvl2279  ret <vscale x 2 x i32> %22280}2281 2282define <vscale x 4 x i32> @test_vlseg2ff_nxv4i32_triscv.vector.tuple_nxv16i8_2t(ptr %base, i64 %vl, ptr %outvl) {2283; CHECK-LABEL: test_vlseg2ff_nxv4i32_triscv.vector.tuple_nxv16i8_2t:2284; CHECK:       # %bb.0: # %entry2285; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma2286; CHECK-NEXT:    vlseg2e32ff.v v6, (a0)2287; CHECK-NEXT:    csrr a0, vl2288; CHECK-NEXT:    sd a0, 0(a2)2289; CHECK-NEXT:    ret2290entry:2291  %0 = tail call {target("riscv.vector.tuple", <vscale x 16 x i8>, 2), i64} @llvm.riscv.vlseg2ff.triscv.vector.tuple_nxv16i8_2t(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) poison, ptr %base, i64 %vl, i64 5)2292  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 2), i64} %0, 02293  %2 = call <vscale x 4 x i32> @llvm.riscv.tuple.extract.nxv4i32.triscv.vector.tuple_nxv16i8_2t(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) %1, i32 1)2294  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 2), i64} %0, 12295  store i64 %3, ptr %outvl2296  ret <vscale x 4 x i32> %22297}2298 2299define <vscale x 4 x i32> @test_vlseg2ff_mask_nxv4i32_triscv.vector.tuple_nxv16i8_2t(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) %val, ptr %base, i64 %vl, <vscale x 4 x i1> %mask, ptr %outvl) {2300; CHECK-LABEL: test_vlseg2ff_mask_nxv4i32_triscv.vector.tuple_nxv16i8_2t:2301; CHECK:       # %bb.0: # %entry2302; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, mu2303; CHECK-NEXT:    vmv2r.v v6, v82304; CHECK-NEXT:    vmv2r.v v8, v102305; CHECK-NEXT:    vlseg2e32ff.v v6, (a0), v0.t2306; CHECK-NEXT:    csrr a0, vl2307; CHECK-NEXT:    sd a0, 0(a2)2308; CHECK-NEXT:    ret2309entry:2310  %0 = tail call {target("riscv.vector.tuple", <vscale x 16 x i8>, 2), i64} @llvm.riscv.vlseg2ff.mask.triscv.vector.tuple_nxv16i8_2t.nxv4i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) %val, ptr %base, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 5)2311  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 2), i64} %0, 02312  %2 = call <vscale x 4 x i32> @llvm.riscv.tuple.extract.nxv4i32.triscv.vector.tuple_nxv16i8_2t(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) %1, i32 1)2313  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 2), i64} %0, 12314  store i64 %3, ptr %outvl2315  ret <vscale x 4 x i32> %22316}2317 2318define <vscale x 8 x i32> @test_vlseg2ff_nxv8i32_triscv.vector.tuple_nxv32i8_2t(ptr %base, i64 %vl, ptr %outvl) {2319; CHECK-LABEL: test_vlseg2ff_nxv8i32_triscv.vector.tuple_nxv32i8_2t:2320; CHECK:       # %bb.0: # %entry2321; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma2322; CHECK-NEXT:    vlseg2e32ff.v v4, (a0)2323; CHECK-NEXT:    csrr a0, vl2324; CHECK-NEXT:    sd a0, 0(a2)2325; CHECK-NEXT:    ret2326entry:2327  %0 = tail call {target("riscv.vector.tuple", <vscale x 32 x i8>, 2), i64} @llvm.riscv.vlseg2ff.triscv.vector.tuple_nxv32i8_2t(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) poison, ptr %base, i64 %vl, i64 5)2328  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 32 x i8>, 2), i64} %0, 02329  %2 = call <vscale x 8 x i32> @llvm.riscv.tuple.extract.nxv8i32.triscv.vector.tuple_nxv32i8_2t(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) %1, i32 1)2330  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 32 x i8>, 2), i64} %0, 12331  store i64 %3, ptr %outvl2332  ret <vscale x 8 x i32> %22333}2334 2335define <vscale x 8 x i32> @test_vlseg2ff_mask_nxv8i32_triscv.vector.tuple_nxv32i8_2t(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) %val, ptr %base, i64 %vl, <vscale x 8 x i1> %mask, ptr %outvl) {2336; CHECK-LABEL: test_vlseg2ff_mask_nxv8i32_triscv.vector.tuple_nxv32i8_2t:2337; CHECK:       # %bb.0: # %entry2338; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, mu2339; CHECK-NEXT:    vmv4r.v v4, v82340; CHECK-NEXT:    vmv4r.v v8, v122341; CHECK-NEXT:    vlseg2e32ff.v v4, (a0), v0.t2342; CHECK-NEXT:    csrr a0, vl2343; CHECK-NEXT:    sd a0, 0(a2)2344; CHECK-NEXT:    ret2345entry:2346  %0 = tail call {target("riscv.vector.tuple", <vscale x 32 x i8>, 2), i64} @llvm.riscv.vlseg2ff.mask.triscv.vector.tuple_nxv32i8_2t.nxv8i1(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) %val, ptr %base, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 5)2347  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 32 x i8>, 2), i64} %0, 02348  %2 = call <vscale x 8 x i32> @llvm.riscv.tuple.extract.nxv8i32.triscv.vector.tuple_nxv32i8_2t(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) %1, i32 1)2349  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 32 x i8>, 2), i64} %0, 12350  store i64 %3, ptr %outvl2351  ret <vscale x 8 x i32> %22352}2353 2354define <vscale x 1 x i32> @test_vlseg3ff_nxv1i32_triscv.vector.tuple_nxv4i8_3t(ptr %base, i64 %vl, ptr %outvl) {2355; CHECK-LABEL: test_vlseg3ff_nxv1i32_triscv.vector.tuple_nxv4i8_3t:2356; CHECK:       # %bb.0: # %entry2357; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma2358; CHECK-NEXT:    vlseg3e32ff.v v7, (a0)2359; CHECK-NEXT:    csrr a0, vl2360; CHECK-NEXT:    sd a0, 0(a2)2361; CHECK-NEXT:    ret2362entry:2363  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 3), i64} @llvm.riscv.vlseg3ff.triscv.vector.tuple_nxv4i8_3t(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) poison, ptr %base, i64 %vl, i64 5)2364  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 3), i64} %0, 02365  %2 = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_3t(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) %1, i32 1)2366  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 3), i64} %0, 12367  store i64 %3, ptr %outvl2368  ret <vscale x 1 x i32> %22369}2370 2371define <vscale x 1 x i32> @test_vlseg3ff_mask_nxv1i32_triscv.vector.tuple_nxv4i8_3t(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) %val, ptr %base, i64 %vl, <vscale x 1 x i1> %mask, ptr %outvl) {2372; CHECK-LABEL: test_vlseg3ff_mask_nxv1i32_triscv.vector.tuple_nxv4i8_3t:2373; CHECK:       # %bb.0: # %entry2374; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, mu2375; CHECK-NEXT:    vmv1r.v v7, v82376; CHECK-NEXT:    vmv1r.v v8, v92377; CHECK-NEXT:    vmv1r.v v9, v102378; CHECK-NEXT:    vlseg3e32ff.v v7, (a0), v0.t2379; CHECK-NEXT:    csrr a0, vl2380; CHECK-NEXT:    sd a0, 0(a2)2381; CHECK-NEXT:    ret2382entry:2383  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 3), i64} @llvm.riscv.vlseg3ff.mask.triscv.vector.tuple_nxv4i8_3t.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) %val, ptr %base, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5)2384  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 3), i64} %0, 02385  %2 = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_3t(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) %1, i32 1)2386  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 3), i64} %0, 12387  store i64 %3, ptr %outvl2388  ret <vscale x 1 x i32> %22389}2390 2391define <vscale x 2 x i32> @test_vlseg3ff_nxv2i32_triscv.vector.tuple_nxv8i8_3t(ptr %base, i64 %vl, ptr %outvl) {2392; CHECK-LABEL: test_vlseg3ff_nxv2i32_triscv.vector.tuple_nxv8i8_3t:2393; CHECK:       # %bb.0: # %entry2394; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma2395; CHECK-NEXT:    vlseg3e32ff.v v7, (a0)2396; CHECK-NEXT:    csrr a0, vl2397; CHECK-NEXT:    sd a0, 0(a2)2398; CHECK-NEXT:    ret2399entry:2400  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 3), i64} @llvm.riscv.vlseg3ff.triscv.vector.tuple_nxv8i8_3t(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) poison, ptr %base, i64 %vl, i64 5)2401  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 3), i64} %0, 02402  %2 = call <vscale x 2 x i32> @llvm.riscv.tuple.extract.nxv2i32.triscv.vector.tuple_nxv8i8_3t(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) %1, i32 1)2403  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 3), i64} %0, 12404  store i64 %3, ptr %outvl2405  ret <vscale x 2 x i32> %22406}2407 2408define <vscale x 2 x i32> @test_vlseg3ff_mask_nxv2i32_triscv.vector.tuple_nxv8i8_3t(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) %val, ptr %base, i64 %vl, <vscale x 2 x i1> %mask, ptr %outvl) {2409; CHECK-LABEL: test_vlseg3ff_mask_nxv2i32_triscv.vector.tuple_nxv8i8_3t:2410; CHECK:       # %bb.0: # %entry2411; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, mu2412; CHECK-NEXT:    vmv1r.v v7, v82413; CHECK-NEXT:    vmv1r.v v8, v92414; CHECK-NEXT:    vmv1r.v v9, v102415; CHECK-NEXT:    vlseg3e32ff.v v7, (a0), v0.t2416; CHECK-NEXT:    csrr a0, vl2417; CHECK-NEXT:    sd a0, 0(a2)2418; CHECK-NEXT:    ret2419entry:2420  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 3), i64} @llvm.riscv.vlseg3ff.mask.triscv.vector.tuple_nxv8i8_3t.nxv2i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) %val, ptr %base, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5)2421  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 3), i64} %0, 02422  %2 = call <vscale x 2 x i32> @llvm.riscv.tuple.extract.nxv2i32.triscv.vector.tuple_nxv8i8_3t(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) %1, i32 1)2423  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 3), i64} %0, 12424  store i64 %3, ptr %outvl2425  ret <vscale x 2 x i32> %22426}2427 2428define <vscale x 4 x i32> @test_vlseg3ff_nxv4i32_triscv.vector.tuple_nxv16i8_3t(ptr %base, i64 %vl, ptr %outvl) {2429; CHECK-LABEL: test_vlseg3ff_nxv4i32_triscv.vector.tuple_nxv16i8_3t:2430; CHECK:       # %bb.0: # %entry2431; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma2432; CHECK-NEXT:    vlseg3e32ff.v v6, (a0)2433; CHECK-NEXT:    csrr a0, vl2434; CHECK-NEXT:    sd a0, 0(a2)2435; CHECK-NEXT:    ret2436entry:2437  %0 = tail call {target("riscv.vector.tuple", <vscale x 16 x i8>, 3), i64} @llvm.riscv.vlseg3ff.triscv.vector.tuple_nxv16i8_3t(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) poison, ptr %base, i64 %vl, i64 5)2438  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 3), i64} %0, 02439  %2 = call <vscale x 4 x i32> @llvm.riscv.tuple.extract.nxv4i32.triscv.vector.tuple_nxv16i8_3t(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) %1, i32 1)2440  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 3), i64} %0, 12441  store i64 %3, ptr %outvl2442  ret <vscale x 4 x i32> %22443}2444 2445define <vscale x 4 x i32> @test_vlseg3ff_mask_nxv4i32_triscv.vector.tuple_nxv16i8_3t(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) %val, ptr %base, i64 %vl, <vscale x 4 x i1> %mask, ptr %outvl) {2446; CHECK-LABEL: test_vlseg3ff_mask_nxv4i32_triscv.vector.tuple_nxv16i8_3t:2447; CHECK:       # %bb.0: # %entry2448; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, mu2449; CHECK-NEXT:    vmv2r.v v6, v82450; CHECK-NEXT:    vmv2r.v v8, v102451; CHECK-NEXT:    vmv2r.v v10, v122452; CHECK-NEXT:    vlseg3e32ff.v v6, (a0), v0.t2453; CHECK-NEXT:    csrr a0, vl2454; CHECK-NEXT:    sd a0, 0(a2)2455; CHECK-NEXT:    ret2456entry:2457  %0 = tail call {target("riscv.vector.tuple", <vscale x 16 x i8>, 3), i64} @llvm.riscv.vlseg3ff.mask.triscv.vector.tuple_nxv16i8_3t.nxv4i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) %val, ptr %base, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 5)2458  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 3), i64} %0, 02459  %2 = call <vscale x 4 x i32> @llvm.riscv.tuple.extract.nxv4i32.triscv.vector.tuple_nxv16i8_3t(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) %1, i32 1)2460  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 3), i64} %0, 12461  store i64 %3, ptr %outvl2462  ret <vscale x 4 x i32> %22463}2464 2465define <vscale x 1 x i32> @test_vlseg4ff_nxv1i32_triscv.vector.tuple_nxv4i8_4t(ptr %base, i64 %vl, ptr %outvl) {2466; CHECK-LABEL: test_vlseg4ff_nxv1i32_triscv.vector.tuple_nxv4i8_4t:2467; CHECK:       # %bb.0: # %entry2468; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma2469; CHECK-NEXT:    vlseg4e32ff.v v7, (a0)2470; CHECK-NEXT:    csrr a0, vl2471; CHECK-NEXT:    sd a0, 0(a2)2472; CHECK-NEXT:    ret2473entry:2474  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 4), i64} @llvm.riscv.vlseg4ff.triscv.vector.tuple_nxv4i8_4t(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) poison, ptr %base, i64 %vl, i64 5)2475  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 4), i64} %0, 02476  %2 = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_4t(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) %1, i32 1)2477  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 4), i64} %0, 12478  store i64 %3, ptr %outvl2479  ret <vscale x 1 x i32> %22480}2481 2482define <vscale x 1 x i32> @test_vlseg4ff_mask_nxv1i32_triscv.vector.tuple_nxv4i8_4t(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) %val, ptr %base, i64 %vl, <vscale x 1 x i1> %mask, ptr %outvl) {2483; CHECK-LABEL: test_vlseg4ff_mask_nxv1i32_triscv.vector.tuple_nxv4i8_4t:2484; CHECK:       # %bb.0: # %entry2485; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, mu2486; CHECK-NEXT:    vmv1r.v v7, v82487; CHECK-NEXT:    vmv1r.v v8, v92488; CHECK-NEXT:    vmv1r.v v9, v102489; CHECK-NEXT:    vmv1r.v v10, v112490; CHECK-NEXT:    vlseg4e32ff.v v7, (a0), v0.t2491; CHECK-NEXT:    csrr a0, vl2492; CHECK-NEXT:    sd a0, 0(a2)2493; CHECK-NEXT:    ret2494entry:2495  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 4), i64} @llvm.riscv.vlseg4ff.mask.triscv.vector.tuple_nxv4i8_4t.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) %val, ptr %base, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5)2496  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 4), i64} %0, 02497  %2 = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_4t(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) %1, i32 1)2498  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 4), i64} %0, 12499  store i64 %3, ptr %outvl2500  ret <vscale x 1 x i32> %22501}2502 2503define <vscale x 2 x i32> @test_vlseg4ff_nxv2i32_triscv.vector.tuple_nxv8i8_4t(ptr %base, i64 %vl, ptr %outvl) {2504; CHECK-LABEL: test_vlseg4ff_nxv2i32_triscv.vector.tuple_nxv8i8_4t:2505; CHECK:       # %bb.0: # %entry2506; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma2507; CHECK-NEXT:    vlseg4e32ff.v v7, (a0)2508; CHECK-NEXT:    csrr a0, vl2509; CHECK-NEXT:    sd a0, 0(a2)2510; CHECK-NEXT:    ret2511entry:2512  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 4), i64} @llvm.riscv.vlseg4ff.triscv.vector.tuple_nxv8i8_4t(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) poison, ptr %base, i64 %vl, i64 5)2513  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 4), i64} %0, 02514  %2 = call <vscale x 2 x i32> @llvm.riscv.tuple.extract.nxv2i32.triscv.vector.tuple_nxv8i8_4t(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) %1, i32 1)2515  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 4), i64} %0, 12516  store i64 %3, ptr %outvl2517  ret <vscale x 2 x i32> %22518}2519 2520define <vscale x 2 x i32> @test_vlseg4ff_mask_nxv2i32_triscv.vector.tuple_nxv8i8_4t(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) %val, ptr %base, i64 %vl, <vscale x 2 x i1> %mask, ptr %outvl) {2521; CHECK-LABEL: test_vlseg4ff_mask_nxv2i32_triscv.vector.tuple_nxv8i8_4t:2522; CHECK:       # %bb.0: # %entry2523; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, mu2524; CHECK-NEXT:    vmv1r.v v7, v82525; CHECK-NEXT:    vmv1r.v v8, v92526; CHECK-NEXT:    vmv1r.v v9, v102527; CHECK-NEXT:    vmv1r.v v10, v112528; CHECK-NEXT:    vlseg4e32ff.v v7, (a0), v0.t2529; CHECK-NEXT:    csrr a0, vl2530; CHECK-NEXT:    sd a0, 0(a2)2531; CHECK-NEXT:    ret2532entry:2533  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 4), i64} @llvm.riscv.vlseg4ff.mask.triscv.vector.tuple_nxv8i8_4t.nxv2i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) %val, ptr %base, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5)2534  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 4), i64} %0, 02535  %2 = call <vscale x 2 x i32> @llvm.riscv.tuple.extract.nxv2i32.triscv.vector.tuple_nxv8i8_4t(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) %1, i32 1)2536  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 4), i64} %0, 12537  store i64 %3, ptr %outvl2538  ret <vscale x 2 x i32> %22539}2540 2541define <vscale x 4 x i32> @test_vlseg4ff_nxv4i32_triscv.vector.tuple_nxv16i8_4t(ptr %base, i64 %vl, ptr %outvl) {2542; CHECK-LABEL: test_vlseg4ff_nxv4i32_triscv.vector.tuple_nxv16i8_4t:2543; CHECK:       # %bb.0: # %entry2544; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma2545; CHECK-NEXT:    vlseg4e32ff.v v6, (a0)2546; CHECK-NEXT:    csrr a0, vl2547; CHECK-NEXT:    sd a0, 0(a2)2548; CHECK-NEXT:    ret2549entry:2550  %0 = tail call {target("riscv.vector.tuple", <vscale x 16 x i8>, 4), i64} @llvm.riscv.vlseg4ff.triscv.vector.tuple_nxv16i8_4t(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) poison, ptr %base, i64 %vl, i64 5)2551  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 4), i64} %0, 02552  %2 = call <vscale x 4 x i32> @llvm.riscv.tuple.extract.nxv4i32.triscv.vector.tuple_nxv16i8_4t(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) %1, i32 1)2553  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 4), i64} %0, 12554  store i64 %3, ptr %outvl2555  ret <vscale x 4 x i32> %22556}2557 2558define <vscale x 4 x i32> @test_vlseg4ff_mask_nxv4i32_triscv.vector.tuple_nxv16i8_4t(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) %val, ptr %base, i64 %vl, <vscale x 4 x i1> %mask, ptr %outvl) {2559; CHECK-LABEL: test_vlseg4ff_mask_nxv4i32_triscv.vector.tuple_nxv16i8_4t:2560; CHECK:       # %bb.0: # %entry2561; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, mu2562; CHECK-NEXT:    vmv2r.v v6, v82563; CHECK-NEXT:    vmv2r.v v8, v102564; CHECK-NEXT:    vmv2r.v v10, v122565; CHECK-NEXT:    vmv2r.v v12, v142566; CHECK-NEXT:    vlseg4e32ff.v v6, (a0), v0.t2567; CHECK-NEXT:    csrr a0, vl2568; CHECK-NEXT:    sd a0, 0(a2)2569; CHECK-NEXT:    ret2570entry:2571  %0 = tail call {target("riscv.vector.tuple", <vscale x 16 x i8>, 4), i64} @llvm.riscv.vlseg4ff.mask.triscv.vector.tuple_nxv16i8_4t.nxv4i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) %val, ptr %base, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 5)2572  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 4), i64} %0, 02573  %2 = call <vscale x 4 x i32> @llvm.riscv.tuple.extract.nxv4i32.triscv.vector.tuple_nxv16i8_4t(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) %1, i32 1)2574  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 4), i64} %0, 12575  store i64 %3, ptr %outvl2576  ret <vscale x 4 x i32> %22577}2578 2579define <vscale x 1 x i32> @test_vlseg5ff_nxv1i32_triscv.vector.tuple_nxv4i8_5t(ptr %base, i64 %vl, ptr %outvl) {2580; CHECK-LABEL: test_vlseg5ff_nxv1i32_triscv.vector.tuple_nxv4i8_5t:2581; CHECK:       # %bb.0: # %entry2582; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma2583; CHECK-NEXT:    vlseg5e32ff.v v7, (a0)2584; CHECK-NEXT:    csrr a0, vl2585; CHECK-NEXT:    sd a0, 0(a2)2586; CHECK-NEXT:    ret2587entry:2588  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 5), i64} @llvm.riscv.vlseg5ff.triscv.vector.tuple_nxv4i8_5t(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) poison, ptr %base, i64 %vl, i64 5)2589  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 5), i64} %0, 02590  %2 = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_5t(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) %1, i32 1)2591  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 5), i64} %0, 12592  store i64 %3, ptr %outvl2593  ret <vscale x 1 x i32> %22594}2595 2596define <vscale x 1 x i32> @test_vlseg5ff_mask_nxv1i32_triscv.vector.tuple_nxv4i8_5t(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) %val, ptr %base, i64 %vl, <vscale x 1 x i1> %mask, ptr %outvl) {2597; CHECK-LABEL: test_vlseg5ff_mask_nxv1i32_triscv.vector.tuple_nxv4i8_5t:2598; CHECK:       # %bb.0: # %entry2599; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, mu2600; CHECK-NEXT:    vmv1r.v v7, v82601; CHECK-NEXT:    vmv1r.v v8, v92602; CHECK-NEXT:    vmv1r.v v9, v102603; CHECK-NEXT:    vmv1r.v v10, v112604; CHECK-NEXT:    vmv1r.v v11, v122605; CHECK-NEXT:    vlseg5e32ff.v v7, (a0), v0.t2606; CHECK-NEXT:    csrr a0, vl2607; CHECK-NEXT:    sd a0, 0(a2)2608; CHECK-NEXT:    ret2609entry:2610  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 5), i64} @llvm.riscv.vlseg5ff.mask.triscv.vector.tuple_nxv4i8_5t.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) %val, ptr %base, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5)2611  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 5), i64} %0, 02612  %2 = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_5t(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) %1, i32 1)2613  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 5), i64} %0, 12614  store i64 %3, ptr %outvl2615  ret <vscale x 1 x i32> %22616}2617 2618define <vscale x 2 x i32> @test_vlseg5ff_nxv2i32_triscv.vector.tuple_nxv8i8_5t(ptr %base, i64 %vl, ptr %outvl) {2619; CHECK-LABEL: test_vlseg5ff_nxv2i32_triscv.vector.tuple_nxv8i8_5t:2620; CHECK:       # %bb.0: # %entry2621; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma2622; CHECK-NEXT:    vlseg5e32ff.v v7, (a0)2623; CHECK-NEXT:    csrr a0, vl2624; CHECK-NEXT:    sd a0, 0(a2)2625; CHECK-NEXT:    ret2626entry:2627  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 5), i64} @llvm.riscv.vlseg5ff.triscv.vector.tuple_nxv8i8_5t(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) poison, ptr %base, i64 %vl, i64 5)2628  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 5), i64} %0, 02629  %2 = call <vscale x 2 x i32> @llvm.riscv.tuple.extract.nxv2i32.triscv.vector.tuple_nxv8i8_5t(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) %1, i32 1)2630  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 5), i64} %0, 12631  store i64 %3, ptr %outvl2632  ret <vscale x 2 x i32> %22633}2634 2635define <vscale x 2 x i32> @test_vlseg5ff_mask_nxv2i32_triscv.vector.tuple_nxv8i8_5t(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) %val, ptr %base, i64 %vl, <vscale x 2 x i1> %mask, ptr %outvl) {2636; CHECK-LABEL: test_vlseg5ff_mask_nxv2i32_triscv.vector.tuple_nxv8i8_5t:2637; CHECK:       # %bb.0: # %entry2638; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, mu2639; CHECK-NEXT:    vmv1r.v v7, v82640; CHECK-NEXT:    vmv1r.v v8, v92641; CHECK-NEXT:    vmv1r.v v9, v102642; CHECK-NEXT:    vmv1r.v v10, v112643; CHECK-NEXT:    vmv1r.v v11, v122644; CHECK-NEXT:    vlseg5e32ff.v v7, (a0), v0.t2645; CHECK-NEXT:    csrr a0, vl2646; CHECK-NEXT:    sd a0, 0(a2)2647; CHECK-NEXT:    ret2648entry:2649  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 5), i64} @llvm.riscv.vlseg5ff.mask.triscv.vector.tuple_nxv8i8_5t.nxv2i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) %val, ptr %base, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5)2650  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 5), i64} %0, 02651  %2 = call <vscale x 2 x i32> @llvm.riscv.tuple.extract.nxv2i32.triscv.vector.tuple_nxv8i8_5t(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) %1, i32 1)2652  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 5), i64} %0, 12653  store i64 %3, ptr %outvl2654  ret <vscale x 2 x i32> %22655}2656 2657define <vscale x 1 x i32> @test_vlseg6ff_nxv1i32_triscv.vector.tuple_nxv4i8_6t(ptr %base, i64 %vl, ptr %outvl) {2658; CHECK-LABEL: test_vlseg6ff_nxv1i32_triscv.vector.tuple_nxv4i8_6t:2659; CHECK:       # %bb.0: # %entry2660; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma2661; CHECK-NEXT:    vlseg6e32ff.v v7, (a0)2662; CHECK-NEXT:    csrr a0, vl2663; CHECK-NEXT:    sd a0, 0(a2)2664; CHECK-NEXT:    ret2665entry:2666  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 6), i64} @llvm.riscv.vlseg6ff.triscv.vector.tuple_nxv4i8_6t(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) poison, ptr %base, i64 %vl, i64 5)2667  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 6), i64} %0, 02668  %2 = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_6t(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) %1, i32 1)2669  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 6), i64} %0, 12670  store i64 %3, ptr %outvl2671  ret <vscale x 1 x i32> %22672}2673 2674define <vscale x 1 x i32> @test_vlseg6ff_mask_nxv1i32_triscv.vector.tuple_nxv4i8_6t(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) %val, ptr %base, i64 %vl, <vscale x 1 x i1> %mask, ptr %outvl) {2675; CHECK-LABEL: test_vlseg6ff_mask_nxv1i32_triscv.vector.tuple_nxv4i8_6t:2676; CHECK:       # %bb.0: # %entry2677; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, mu2678; CHECK-NEXT:    vmv1r.v v7, v82679; CHECK-NEXT:    vmv1r.v v8, v92680; CHECK-NEXT:    vmv1r.v v9, v102681; CHECK-NEXT:    vmv1r.v v10, v112682; CHECK-NEXT:    vmv1r.v v11, v122683; CHECK-NEXT:    vmv1r.v v12, v132684; CHECK-NEXT:    vlseg6e32ff.v v7, (a0), v0.t2685; CHECK-NEXT:    csrr a0, vl2686; CHECK-NEXT:    sd a0, 0(a2)2687; CHECK-NEXT:    ret2688entry:2689  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 6), i64} @llvm.riscv.vlseg6ff.mask.triscv.vector.tuple_nxv4i8_6t.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) %val, ptr %base, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5)2690  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 6), i64} %0, 02691  %2 = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_6t(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) %1, i32 1)2692  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 6), i64} %0, 12693  store i64 %3, ptr %outvl2694  ret <vscale x 1 x i32> %22695}2696 2697define <vscale x 2 x i32> @test_vlseg6ff_nxv2i32_triscv.vector.tuple_nxv8i8_6t(ptr %base, i64 %vl, ptr %outvl) {2698; CHECK-LABEL: test_vlseg6ff_nxv2i32_triscv.vector.tuple_nxv8i8_6t:2699; CHECK:       # %bb.0: # %entry2700; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma2701; CHECK-NEXT:    vlseg6e32ff.v v7, (a0)2702; CHECK-NEXT:    csrr a0, vl2703; CHECK-NEXT:    sd a0, 0(a2)2704; CHECK-NEXT:    ret2705entry:2706  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 6), i64} @llvm.riscv.vlseg6ff.triscv.vector.tuple_nxv8i8_6t(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) poison, ptr %base, i64 %vl, i64 5)2707  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 6), i64} %0, 02708  %2 = call <vscale x 2 x i32> @llvm.riscv.tuple.extract.nxv2i32.triscv.vector.tuple_nxv8i8_6t(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) %1, i32 1)2709  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 6), i64} %0, 12710  store i64 %3, ptr %outvl2711  ret <vscale x 2 x i32> %22712}2713 2714define <vscale x 2 x i32> @test_vlseg6ff_mask_nxv2i32_triscv.vector.tuple_nxv8i8_6t(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) %val, ptr %base, i64 %vl, <vscale x 2 x i1> %mask, ptr %outvl) {2715; CHECK-LABEL: test_vlseg6ff_mask_nxv2i32_triscv.vector.tuple_nxv8i8_6t:2716; CHECK:       # %bb.0: # %entry2717; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, mu2718; CHECK-NEXT:    vmv1r.v v7, v82719; CHECK-NEXT:    vmv1r.v v8, v92720; CHECK-NEXT:    vmv1r.v v9, v102721; CHECK-NEXT:    vmv1r.v v10, v112722; CHECK-NEXT:    vmv1r.v v11, v122723; CHECK-NEXT:    vmv1r.v v12, v132724; CHECK-NEXT:    vlseg6e32ff.v v7, (a0), v0.t2725; CHECK-NEXT:    csrr a0, vl2726; CHECK-NEXT:    sd a0, 0(a2)2727; CHECK-NEXT:    ret2728entry:2729  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 6), i64} @llvm.riscv.vlseg6ff.mask.triscv.vector.tuple_nxv8i8_6t.nxv2i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) %val, ptr %base, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5)2730  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 6), i64} %0, 02731  %2 = call <vscale x 2 x i32> @llvm.riscv.tuple.extract.nxv2i32.triscv.vector.tuple_nxv8i8_6t(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) %1, i32 1)2732  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 6), i64} %0, 12733  store i64 %3, ptr %outvl2734  ret <vscale x 2 x i32> %22735}2736 2737define <vscale x 1 x i32> @test_vlseg7ff_nxv1i32_triscv.vector.tuple_nxv4i8_7t(ptr %base, i64 %vl, ptr %outvl) {2738; CHECK-LABEL: test_vlseg7ff_nxv1i32_triscv.vector.tuple_nxv4i8_7t:2739; CHECK:       # %bb.0: # %entry2740; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma2741; CHECK-NEXT:    vlseg7e32ff.v v7, (a0)2742; CHECK-NEXT:    csrr a0, vl2743; CHECK-NEXT:    sd a0, 0(a2)2744; CHECK-NEXT:    ret2745entry:2746  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 7), i64} @llvm.riscv.vlseg7ff.triscv.vector.tuple_nxv4i8_7t(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) poison, ptr %base, i64 %vl, i64 5)2747  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 7), i64} %0, 02748  %2 = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_7t(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) %1, i32 1)2749  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 7), i64} %0, 12750  store i64 %3, ptr %outvl2751  ret <vscale x 1 x i32> %22752}2753 2754define <vscale x 1 x i32> @test_vlseg7ff_mask_nxv1i32_triscv.vector.tuple_nxv4i8_7t(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) %val, ptr %base, i64 %vl, <vscale x 1 x i1> %mask, ptr %outvl) {2755; CHECK-LABEL: test_vlseg7ff_mask_nxv1i32_triscv.vector.tuple_nxv4i8_7t:2756; CHECK:       # %bb.0: # %entry2757; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, mu2758; CHECK-NEXT:    vmv1r.v v7, v82759; CHECK-NEXT:    vmv1r.v v8, v92760; CHECK-NEXT:    vmv1r.v v9, v102761; CHECK-NEXT:    vmv1r.v v10, v112762; CHECK-NEXT:    vmv1r.v v11, v122763; CHECK-NEXT:    vmv1r.v v12, v132764; CHECK-NEXT:    vmv1r.v v13, v142765; CHECK-NEXT:    vlseg7e32ff.v v7, (a0), v0.t2766; CHECK-NEXT:    csrr a0, vl2767; CHECK-NEXT:    sd a0, 0(a2)2768; CHECK-NEXT:    ret2769entry:2770  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 7), i64} @llvm.riscv.vlseg7ff.mask.triscv.vector.tuple_nxv4i8_7t.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) %val, ptr %base, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5)2771  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 7), i64} %0, 02772  %2 = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_7t(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) %1, i32 1)2773  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 7), i64} %0, 12774  store i64 %3, ptr %outvl2775  ret <vscale x 1 x i32> %22776}2777 2778define <vscale x 2 x i32> @test_vlseg7ff_nxv2i32_triscv.vector.tuple_nxv8i8_7t(ptr %base, i64 %vl, ptr %outvl) {2779; CHECK-LABEL: test_vlseg7ff_nxv2i32_triscv.vector.tuple_nxv8i8_7t:2780; CHECK:       # %bb.0: # %entry2781; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma2782; CHECK-NEXT:    vlseg7e32ff.v v7, (a0)2783; CHECK-NEXT:    csrr a0, vl2784; CHECK-NEXT:    sd a0, 0(a2)2785; CHECK-NEXT:    ret2786entry:2787  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 7), i64} @llvm.riscv.vlseg7ff.triscv.vector.tuple_nxv8i8_7t(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) poison, ptr %base, i64 %vl, i64 5)2788  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 7), i64} %0, 02789  %2 = call <vscale x 2 x i32> @llvm.riscv.tuple.extract.nxv2i32.triscv.vector.tuple_nxv8i8_7t(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) %1, i32 1)2790  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 7), i64} %0, 12791  store i64 %3, ptr %outvl2792  ret <vscale x 2 x i32> %22793}2794 2795define <vscale x 2 x i32> @test_vlseg7ff_mask_nxv2i32_triscv.vector.tuple_nxv8i8_7t(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) %val, ptr %base, i64 %vl, <vscale x 2 x i1> %mask, ptr %outvl) {2796; CHECK-LABEL: test_vlseg7ff_mask_nxv2i32_triscv.vector.tuple_nxv8i8_7t:2797; CHECK:       # %bb.0: # %entry2798; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, mu2799; CHECK-NEXT:    vmv1r.v v7, v82800; CHECK-NEXT:    vmv1r.v v8, v92801; CHECK-NEXT:    vmv1r.v v9, v102802; CHECK-NEXT:    vmv1r.v v10, v112803; CHECK-NEXT:    vmv1r.v v11, v122804; CHECK-NEXT:    vmv1r.v v12, v132805; CHECK-NEXT:    vmv1r.v v13, v142806; CHECK-NEXT:    vlseg7e32ff.v v7, (a0), v0.t2807; CHECK-NEXT:    csrr a0, vl2808; CHECK-NEXT:    sd a0, 0(a2)2809; CHECK-NEXT:    ret2810entry:2811  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 7), i64} @llvm.riscv.vlseg7ff.mask.triscv.vector.tuple_nxv8i8_7t.nxv2i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) %val, ptr %base, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5)2812  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 7), i64} %0, 02813  %2 = call <vscale x 2 x i32> @llvm.riscv.tuple.extract.nxv2i32.triscv.vector.tuple_nxv8i8_7t(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) %1, i32 1)2814  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 7), i64} %0, 12815  store i64 %3, ptr %outvl2816  ret <vscale x 2 x i32> %22817}2818 2819define <vscale x 1 x i32> @test_vlseg8ff_nxv1i32_triscv.vector.tuple_nxv4i8_8t(ptr %base, i64 %vl, ptr %outvl) {2820; CHECK-LABEL: test_vlseg8ff_nxv1i32_triscv.vector.tuple_nxv4i8_8t:2821; CHECK:       # %bb.0: # %entry2822; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma2823; CHECK-NEXT:    vlseg8e32ff.v v7, (a0)2824; CHECK-NEXT:    csrr a0, vl2825; CHECK-NEXT:    sd a0, 0(a2)2826; CHECK-NEXT:    ret2827entry:2828  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 8), i64} @llvm.riscv.vlseg8ff.triscv.vector.tuple_nxv4i8_8t(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) poison, ptr %base, i64 %vl, i64 5)2829  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 8), i64} %0, 02830  %2 = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_8t(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) %1, i32 1)2831  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 8), i64} %0, 12832  store i64 %3, ptr %outvl2833  ret <vscale x 1 x i32> %22834}2835 2836define <vscale x 1 x i32> @test_vlseg8ff_mask_nxv1i32_triscv.vector.tuple_nxv4i8_8t(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) %val, ptr %base, i64 %vl, <vscale x 1 x i1> %mask, ptr %outvl) {2837; CHECK-LABEL: test_vlseg8ff_mask_nxv1i32_triscv.vector.tuple_nxv4i8_8t:2838; CHECK:       # %bb.0: # %entry2839; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, mu2840; CHECK-NEXT:    vmv1r.v v7, v82841; CHECK-NEXT:    vmv1r.v v8, v92842; CHECK-NEXT:    vmv1r.v v9, v102843; CHECK-NEXT:    vmv1r.v v10, v112844; CHECK-NEXT:    vmv1r.v v11, v122845; CHECK-NEXT:    vmv1r.v v12, v132846; CHECK-NEXT:    vmv1r.v v13, v142847; CHECK-NEXT:    vmv1r.v v14, v152848; CHECK-NEXT:    vlseg8e32ff.v v7, (a0), v0.t2849; CHECK-NEXT:    csrr a0, vl2850; CHECK-NEXT:    sd a0, 0(a2)2851; CHECK-NEXT:    ret2852entry:2853  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 8), i64} @llvm.riscv.vlseg8ff.mask.triscv.vector.tuple_nxv4i8_8t.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) %val, ptr %base, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5)2854  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 8), i64} %0, 02855  %2 = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_8t(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) %1, i32 1)2856  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 8), i64} %0, 12857  store i64 %3, ptr %outvl2858  ret <vscale x 1 x i32> %22859}2860 2861define <vscale x 2 x i32> @test_vlseg8ff_nxv2i32_triscv.vector.tuple_nxv8i8_8t(ptr %base, i64 %vl, ptr %outvl) {2862; CHECK-LABEL: test_vlseg8ff_nxv2i32_triscv.vector.tuple_nxv8i8_8t:2863; CHECK:       # %bb.0: # %entry2864; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma2865; CHECK-NEXT:    vlseg8e32ff.v v7, (a0)2866; CHECK-NEXT:    csrr a0, vl2867; CHECK-NEXT:    sd a0, 0(a2)2868; CHECK-NEXT:    ret2869entry:2870  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 8), i64} @llvm.riscv.vlseg8ff.triscv.vector.tuple_nxv8i8_8t(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) poison, ptr %base, i64 %vl, i64 5)2871  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 8), i64} %0, 02872  %2 = call <vscale x 2 x i32> @llvm.riscv.tuple.extract.nxv2i32.triscv.vector.tuple_nxv8i8_8t(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) %1, i32 1)2873  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 8), i64} %0, 12874  store i64 %3, ptr %outvl2875  ret <vscale x 2 x i32> %22876}2877 2878define <vscale x 2 x i32> @test_vlseg8ff_mask_nxv2i32_triscv.vector.tuple_nxv8i8_8t(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) %val, ptr %base, i64 %vl, <vscale x 2 x i1> %mask, ptr %outvl) {2879; CHECK-LABEL: test_vlseg8ff_mask_nxv2i32_triscv.vector.tuple_nxv8i8_8t:2880; CHECK:       # %bb.0: # %entry2881; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, mu2882; CHECK-NEXT:    vmv1r.v v7, v82883; CHECK-NEXT:    vmv1r.v v8, v92884; CHECK-NEXT:    vmv1r.v v9, v102885; CHECK-NEXT:    vmv1r.v v10, v112886; CHECK-NEXT:    vmv1r.v v11, v122887; CHECK-NEXT:    vmv1r.v v12, v132888; CHECK-NEXT:    vmv1r.v v13, v142889; CHECK-NEXT:    vmv1r.v v14, v152890; CHECK-NEXT:    vlseg8e32ff.v v7, (a0), v0.t2891; CHECK-NEXT:    csrr a0, vl2892; CHECK-NEXT:    sd a0, 0(a2)2893; CHECK-NEXT:    ret2894entry:2895  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 8), i64} @llvm.riscv.vlseg8ff.mask.triscv.vector.tuple_nxv8i8_8t.nxv2i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) %val, ptr %base, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5)2896  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 8), i64} %0, 02897  %2 = call <vscale x 2 x i32> @llvm.riscv.tuple.extract.nxv2i32.triscv.vector.tuple_nxv8i8_8t(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) %1, i32 1)2898  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 8), i64} %0, 12899  store i64 %3, ptr %outvl2900  ret <vscale x 2 x i32> %22901}2902 2903define <vscale x 1 x i64> @test_vlseg2ff_nxv1i64_triscv.vector.tuple_nxv8i8_2t(ptr %base, i64 %vl, ptr %outvl) {2904; CHECK-LABEL: test_vlseg2ff_nxv1i64_triscv.vector.tuple_nxv8i8_2t:2905; CHECK:       # %bb.0: # %entry2906; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, ma2907; CHECK-NEXT:    vlseg2e64ff.v v7, (a0)2908; CHECK-NEXT:    csrr a0, vl2909; CHECK-NEXT:    sd a0, 0(a2)2910; CHECK-NEXT:    ret2911entry:2912  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 2), i64} @llvm.riscv.vlseg2ff.triscv.vector.tuple_nxv8i8_2t(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) poison, ptr %base, i64 %vl, i64 6)2913  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 2), i64} %0, 02914  %2 = call <vscale x 1 x i64> @llvm.riscv.tuple.extract.nxv1i64.triscv.vector.tuple_nxv8i8_2t(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) %1, i32 1)2915  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 2), i64} %0, 12916  store i64 %3, ptr %outvl2917  ret <vscale x 1 x i64> %22918}2919 2920define <vscale x 1 x i64> @test_vlseg2ff_mask_nxv1i64_triscv.vector.tuple_nxv8i8_2t(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) %val, ptr %base, i64 %vl, <vscale x 1 x i1> %mask, ptr %outvl) {2921; CHECK-LABEL: test_vlseg2ff_mask_nxv1i64_triscv.vector.tuple_nxv8i8_2t:2922; CHECK:       # %bb.0: # %entry2923; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, mu2924; CHECK-NEXT:    vmv1r.v v7, v82925; CHECK-NEXT:    vmv1r.v v8, v92926; CHECK-NEXT:    vlseg2e64ff.v v7, (a0), v0.t2927; CHECK-NEXT:    csrr a0, vl2928; CHECK-NEXT:    sd a0, 0(a2)2929; CHECK-NEXT:    ret2930entry:2931  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 2), i64} @llvm.riscv.vlseg2ff.mask.triscv.vector.tuple_nxv8i8_2t.nxv1i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) %val, ptr %base, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6)2932  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 2), i64} %0, 02933  %2 = call <vscale x 1 x i64> @llvm.riscv.tuple.extract.nxv1i64.triscv.vector.tuple_nxv8i8_2t(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) %1, i32 1)2934  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 2), i64} %0, 12935  store i64 %3, ptr %outvl2936  ret <vscale x 1 x i64> %22937}2938 2939define <vscale x 2 x i64> @test_vlseg2ff_nxv2i64_triscv.vector.tuple_nxv16i8_2t(ptr %base, i64 %vl, ptr %outvl) {2940; CHECK-LABEL: test_vlseg2ff_nxv2i64_triscv.vector.tuple_nxv16i8_2t:2941; CHECK:       # %bb.0: # %entry2942; CHECK-NEXT:    vsetvli zero, a1, e64, m2, ta, ma2943; CHECK-NEXT:    vlseg2e64ff.v v6, (a0)2944; CHECK-NEXT:    csrr a0, vl2945; CHECK-NEXT:    sd a0, 0(a2)2946; CHECK-NEXT:    ret2947entry:2948  %0 = tail call {target("riscv.vector.tuple", <vscale x 16 x i8>, 2), i64} @llvm.riscv.vlseg2ff.triscv.vector.tuple_nxv16i8_2t(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) poison, ptr %base, i64 %vl, i64 6)2949  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 2), i64} %0, 02950  %2 = call <vscale x 2 x i64> @llvm.riscv.tuple.extract.nxv2i64.triscv.vector.tuple_nxv16i8_2t(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) %1, i32 1)2951  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 2), i64} %0, 12952  store i64 %3, ptr %outvl2953  ret <vscale x 2 x i64> %22954}2955 2956define <vscale x 2 x i64> @test_vlseg2ff_mask_nxv2i64_triscv.vector.tuple_nxv16i8_2t(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) %val, ptr %base, i64 %vl, <vscale x 2 x i1> %mask, ptr %outvl) {2957; CHECK-LABEL: test_vlseg2ff_mask_nxv2i64_triscv.vector.tuple_nxv16i8_2t:2958; CHECK:       # %bb.0: # %entry2959; CHECK-NEXT:    vsetvli zero, a1, e64, m2, ta, mu2960; CHECK-NEXT:    vmv2r.v v6, v82961; CHECK-NEXT:    vmv2r.v v8, v102962; CHECK-NEXT:    vlseg2e64ff.v v6, (a0), v0.t2963; CHECK-NEXT:    csrr a0, vl2964; CHECK-NEXT:    sd a0, 0(a2)2965; CHECK-NEXT:    ret2966entry:2967  %0 = tail call {target("riscv.vector.tuple", <vscale x 16 x i8>, 2), i64} @llvm.riscv.vlseg2ff.mask.triscv.vector.tuple_nxv16i8_2t.nxv2i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) %val, ptr %base, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 6)2968  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 2), i64} %0, 02969  %2 = call <vscale x 2 x i64> @llvm.riscv.tuple.extract.nxv2i64.triscv.vector.tuple_nxv16i8_2t(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) %1, i32 1)2970  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 2), i64} %0, 12971  store i64 %3, ptr %outvl2972  ret <vscale x 2 x i64> %22973}2974 2975define <vscale x 4 x i64> @test_vlseg2ff_nxv4i64_triscv.vector.tuple_nxv32i8_2t(ptr %base, i64 %vl, ptr %outvl) {2976; CHECK-LABEL: test_vlseg2ff_nxv4i64_triscv.vector.tuple_nxv32i8_2t:2977; CHECK:       # %bb.0: # %entry2978; CHECK-NEXT:    vsetvli zero, a1, e64, m4, ta, ma2979; CHECK-NEXT:    vlseg2e64ff.v v4, (a0)2980; CHECK-NEXT:    csrr a0, vl2981; CHECK-NEXT:    sd a0, 0(a2)2982; CHECK-NEXT:    ret2983entry:2984  %0 = tail call {target("riscv.vector.tuple", <vscale x 32 x i8>, 2), i64} @llvm.riscv.vlseg2ff.triscv.vector.tuple_nxv32i8_2t(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) poison, ptr %base, i64 %vl, i64 6)2985  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 32 x i8>, 2), i64} %0, 02986  %2 = call <vscale x 4 x i64> @llvm.riscv.tuple.extract.nxv4i64.triscv.vector.tuple_nxv32i8_2t(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) %1, i32 1)2987  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 32 x i8>, 2), i64} %0, 12988  store i64 %3, ptr %outvl2989  ret <vscale x 4 x i64> %22990}2991 2992define <vscale x 4 x i64> @test_vlseg2ff_mask_nxv4i64_triscv.vector.tuple_nxv32i8_2t(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) %val, ptr %base, i64 %vl, <vscale x 4 x i1> %mask, ptr %outvl) {2993; CHECK-LABEL: test_vlseg2ff_mask_nxv4i64_triscv.vector.tuple_nxv32i8_2t:2994; CHECK:       # %bb.0: # %entry2995; CHECK-NEXT:    vsetvli zero, a1, e64, m4, ta, mu2996; CHECK-NEXT:    vmv4r.v v4, v82997; CHECK-NEXT:    vmv4r.v v8, v122998; CHECK-NEXT:    vlseg2e64ff.v v4, (a0), v0.t2999; CHECK-NEXT:    csrr a0, vl3000; CHECK-NEXT:    sd a0, 0(a2)3001; CHECK-NEXT:    ret3002entry:3003  %0 = tail call {target("riscv.vector.tuple", <vscale x 32 x i8>, 2), i64} @llvm.riscv.vlseg2ff.mask.triscv.vector.tuple_nxv32i8_2t.nxv4i1(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) %val, ptr %base, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 6)3004  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 32 x i8>, 2), i64} %0, 03005  %2 = call <vscale x 4 x i64> @llvm.riscv.tuple.extract.nxv4i64.triscv.vector.tuple_nxv32i8_2t(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) %1, i32 1)3006  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 32 x i8>, 2), i64} %0, 13007  store i64 %3, ptr %outvl3008  ret <vscale x 4 x i64> %23009}3010 3011define <vscale x 1 x i64> @test_vlseg3ff_nxv1i64_triscv.vector.tuple_nxv8i8_3t(ptr %base, i64 %vl, ptr %outvl) {3012; CHECK-LABEL: test_vlseg3ff_nxv1i64_triscv.vector.tuple_nxv8i8_3t:3013; CHECK:       # %bb.0: # %entry3014; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, ma3015; CHECK-NEXT:    vlseg3e64ff.v v7, (a0)3016; CHECK-NEXT:    csrr a0, vl3017; CHECK-NEXT:    sd a0, 0(a2)3018; CHECK-NEXT:    ret3019entry:3020  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 3), i64} @llvm.riscv.vlseg3ff.triscv.vector.tuple_nxv8i8_3t(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) poison, ptr %base, i64 %vl, i64 6)3021  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 3), i64} %0, 03022  %2 = call <vscale x 1 x i64> @llvm.riscv.tuple.extract.nxv1i64.triscv.vector.tuple_nxv8i8_3t(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) %1, i32 1)3023  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 3), i64} %0, 13024  store i64 %3, ptr %outvl3025  ret <vscale x 1 x i64> %23026}3027 3028define <vscale x 1 x i64> @test_vlseg3ff_mask_nxv1i64_triscv.vector.tuple_nxv8i8_3t(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) %val, ptr %base, i64 %vl, <vscale x 1 x i1> %mask, ptr %outvl) {3029; CHECK-LABEL: test_vlseg3ff_mask_nxv1i64_triscv.vector.tuple_nxv8i8_3t:3030; CHECK:       # %bb.0: # %entry3031; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, mu3032; CHECK-NEXT:    vmv1r.v v7, v83033; CHECK-NEXT:    vmv1r.v v8, v93034; CHECK-NEXT:    vmv1r.v v9, v103035; CHECK-NEXT:    vlseg3e64ff.v v7, (a0), v0.t3036; CHECK-NEXT:    csrr a0, vl3037; CHECK-NEXT:    sd a0, 0(a2)3038; CHECK-NEXT:    ret3039entry:3040  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 3), i64} @llvm.riscv.vlseg3ff.mask.triscv.vector.tuple_nxv8i8_3t.nxv1i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) %val, ptr %base, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6)3041  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 3), i64} %0, 03042  %2 = call <vscale x 1 x i64> @llvm.riscv.tuple.extract.nxv1i64.triscv.vector.tuple_nxv8i8_3t(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) %1, i32 1)3043  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 3), i64} %0, 13044  store i64 %3, ptr %outvl3045  ret <vscale x 1 x i64> %23046}3047 3048define <vscale x 2 x i64> @test_vlseg3ff_nxv2i64_triscv.vector.tuple_nxv16i8_3t(ptr %base, i64 %vl, ptr %outvl) {3049; CHECK-LABEL: test_vlseg3ff_nxv2i64_triscv.vector.tuple_nxv16i8_3t:3050; CHECK:       # %bb.0: # %entry3051; CHECK-NEXT:    vsetvli zero, a1, e64, m2, ta, ma3052; CHECK-NEXT:    vlseg3e64ff.v v6, (a0)3053; CHECK-NEXT:    csrr a0, vl3054; CHECK-NEXT:    sd a0, 0(a2)3055; CHECK-NEXT:    ret3056entry:3057  %0 = tail call {target("riscv.vector.tuple", <vscale x 16 x i8>, 3), i64} @llvm.riscv.vlseg3ff.triscv.vector.tuple_nxv16i8_3t(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) poison, ptr %base, i64 %vl, i64 6)3058  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 3), i64} %0, 03059  %2 = call <vscale x 2 x i64> @llvm.riscv.tuple.extract.nxv2i64.triscv.vector.tuple_nxv16i8_3t(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) %1, i32 1)3060  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 3), i64} %0, 13061  store i64 %3, ptr %outvl3062  ret <vscale x 2 x i64> %23063}3064 3065define <vscale x 2 x i64> @test_vlseg3ff_mask_nxv2i64_triscv.vector.tuple_nxv16i8_3t(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) %val, ptr %base, i64 %vl, <vscale x 2 x i1> %mask, ptr %outvl) {3066; CHECK-LABEL: test_vlseg3ff_mask_nxv2i64_triscv.vector.tuple_nxv16i8_3t:3067; CHECK:       # %bb.0: # %entry3068; CHECK-NEXT:    vsetvli zero, a1, e64, m2, ta, mu3069; CHECK-NEXT:    vmv2r.v v6, v83070; CHECK-NEXT:    vmv2r.v v8, v103071; CHECK-NEXT:    vmv2r.v v10, v123072; CHECK-NEXT:    vlseg3e64ff.v v6, (a0), v0.t3073; CHECK-NEXT:    csrr a0, vl3074; CHECK-NEXT:    sd a0, 0(a2)3075; CHECK-NEXT:    ret3076entry:3077  %0 = tail call {target("riscv.vector.tuple", <vscale x 16 x i8>, 3), i64} @llvm.riscv.vlseg3ff.mask.triscv.vector.tuple_nxv16i8_3t.nxv2i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) %val, ptr %base, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 6)3078  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 3), i64} %0, 03079  %2 = call <vscale x 2 x i64> @llvm.riscv.tuple.extract.nxv2i64.triscv.vector.tuple_nxv16i8_3t(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) %1, i32 1)3080  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 3), i64} %0, 13081  store i64 %3, ptr %outvl3082  ret <vscale x 2 x i64> %23083}3084 3085define <vscale x 1 x i64> @test_vlseg4ff_nxv1i64_triscv.vector.tuple_nxv8i8_4t(ptr %base, i64 %vl, ptr %outvl) {3086; CHECK-LABEL: test_vlseg4ff_nxv1i64_triscv.vector.tuple_nxv8i8_4t:3087; CHECK:       # %bb.0: # %entry3088; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, ma3089; CHECK-NEXT:    vlseg4e64ff.v v7, (a0)3090; CHECK-NEXT:    csrr a0, vl3091; CHECK-NEXT:    sd a0, 0(a2)3092; CHECK-NEXT:    ret3093entry:3094  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 4), i64} @llvm.riscv.vlseg4ff.triscv.vector.tuple_nxv8i8_4t(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) poison, ptr %base, i64 %vl, i64 6)3095  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 4), i64} %0, 03096  %2 = call <vscale x 1 x i64> @llvm.riscv.tuple.extract.nxv1i64.triscv.vector.tuple_nxv8i8_4t(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) %1, i32 1)3097  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 4), i64} %0, 13098  store i64 %3, ptr %outvl3099  ret <vscale x 1 x i64> %23100}3101 3102define <vscale x 1 x i64> @test_vlseg4ff_mask_nxv1i64_triscv.vector.tuple_nxv8i8_4t(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) %val, ptr %base, i64 %vl, <vscale x 1 x i1> %mask, ptr %outvl) {3103; CHECK-LABEL: test_vlseg4ff_mask_nxv1i64_triscv.vector.tuple_nxv8i8_4t:3104; CHECK:       # %bb.0: # %entry3105; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, mu3106; CHECK-NEXT:    vmv1r.v v7, v83107; CHECK-NEXT:    vmv1r.v v8, v93108; CHECK-NEXT:    vmv1r.v v9, v103109; CHECK-NEXT:    vmv1r.v v10, v113110; CHECK-NEXT:    vlseg4e64ff.v v7, (a0), v0.t3111; CHECK-NEXT:    csrr a0, vl3112; CHECK-NEXT:    sd a0, 0(a2)3113; CHECK-NEXT:    ret3114entry:3115  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 4), i64} @llvm.riscv.vlseg4ff.mask.triscv.vector.tuple_nxv8i8_4t.nxv1i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) %val, ptr %base, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6)3116  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 4), i64} %0, 03117  %2 = call <vscale x 1 x i64> @llvm.riscv.tuple.extract.nxv1i64.triscv.vector.tuple_nxv8i8_4t(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) %1, i32 1)3118  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 4), i64} %0, 13119  store i64 %3, ptr %outvl3120  ret <vscale x 1 x i64> %23121}3122 3123define <vscale x 2 x i64> @test_vlseg4ff_nxv2i64_triscv.vector.tuple_nxv16i8_4t(ptr %base, i64 %vl, ptr %outvl) {3124; CHECK-LABEL: test_vlseg4ff_nxv2i64_triscv.vector.tuple_nxv16i8_4t:3125; CHECK:       # %bb.0: # %entry3126; CHECK-NEXT:    vsetvli zero, a1, e64, m2, ta, ma3127; CHECK-NEXT:    vlseg4e64ff.v v6, (a0)3128; CHECK-NEXT:    csrr a0, vl3129; CHECK-NEXT:    sd a0, 0(a2)3130; CHECK-NEXT:    ret3131entry:3132  %0 = tail call {target("riscv.vector.tuple", <vscale x 16 x i8>, 4), i64} @llvm.riscv.vlseg4ff.triscv.vector.tuple_nxv16i8_4t(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) poison, ptr %base, i64 %vl, i64 6)3133  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 4), i64} %0, 03134  %2 = call <vscale x 2 x i64> @llvm.riscv.tuple.extract.nxv2i64.triscv.vector.tuple_nxv16i8_4t(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) %1, i32 1)3135  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 4), i64} %0, 13136  store i64 %3, ptr %outvl3137  ret <vscale x 2 x i64> %23138}3139 3140define <vscale x 2 x i64> @test_vlseg4ff_mask_nxv2i64_triscv.vector.tuple_nxv16i8_4t(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) %val, ptr %base, i64 %vl, <vscale x 2 x i1> %mask, ptr %outvl) {3141; CHECK-LABEL: test_vlseg4ff_mask_nxv2i64_triscv.vector.tuple_nxv16i8_4t:3142; CHECK:       # %bb.0: # %entry3143; CHECK-NEXT:    vsetvli zero, a1, e64, m2, ta, mu3144; CHECK-NEXT:    vmv2r.v v6, v83145; CHECK-NEXT:    vmv2r.v v8, v103146; CHECK-NEXT:    vmv2r.v v10, v123147; CHECK-NEXT:    vmv2r.v v12, v143148; CHECK-NEXT:    vlseg4e64ff.v v6, (a0), v0.t3149; CHECK-NEXT:    csrr a0, vl3150; CHECK-NEXT:    sd a0, 0(a2)3151; CHECK-NEXT:    ret3152entry:3153  %0 = tail call {target("riscv.vector.tuple", <vscale x 16 x i8>, 4), i64} @llvm.riscv.vlseg4ff.mask.triscv.vector.tuple_nxv16i8_4t.nxv2i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) %val, ptr %base, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 6)3154  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 4), i64} %0, 03155  %2 = call <vscale x 2 x i64> @llvm.riscv.tuple.extract.nxv2i64.triscv.vector.tuple_nxv16i8_4t(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) %1, i32 1)3156  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 4), i64} %0, 13157  store i64 %3, ptr %outvl3158  ret <vscale x 2 x i64> %23159}3160 3161define <vscale x 1 x i64> @test_vlseg5ff_nxv1i64_triscv.vector.tuple_nxv8i8_5t(ptr %base, i64 %vl, ptr %outvl) {3162; CHECK-LABEL: test_vlseg5ff_nxv1i64_triscv.vector.tuple_nxv8i8_5t:3163; CHECK:       # %bb.0: # %entry3164; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, ma3165; CHECK-NEXT:    vlseg5e64ff.v v7, (a0)3166; CHECK-NEXT:    csrr a0, vl3167; CHECK-NEXT:    sd a0, 0(a2)3168; CHECK-NEXT:    ret3169entry:3170  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 5), i64} @llvm.riscv.vlseg5ff.triscv.vector.tuple_nxv8i8_5t(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) poison, ptr %base, i64 %vl, i64 6)3171  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 5), i64} %0, 03172  %2 = call <vscale x 1 x i64> @llvm.riscv.tuple.extract.nxv1i64.triscv.vector.tuple_nxv8i8_5t(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) %1, i32 1)3173  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 5), i64} %0, 13174  store i64 %3, ptr %outvl3175  ret <vscale x 1 x i64> %23176}3177 3178define <vscale x 1 x i64> @test_vlseg5ff_mask_nxv1i64_triscv.vector.tuple_nxv8i8_5t(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) %val, ptr %base, i64 %vl, <vscale x 1 x i1> %mask, ptr %outvl) {3179; CHECK-LABEL: test_vlseg5ff_mask_nxv1i64_triscv.vector.tuple_nxv8i8_5t:3180; CHECK:       # %bb.0: # %entry3181; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, mu3182; CHECK-NEXT:    vmv1r.v v7, v83183; CHECK-NEXT:    vmv1r.v v8, v93184; CHECK-NEXT:    vmv1r.v v9, v103185; CHECK-NEXT:    vmv1r.v v10, v113186; CHECK-NEXT:    vmv1r.v v11, v123187; CHECK-NEXT:    vlseg5e64ff.v v7, (a0), v0.t3188; CHECK-NEXT:    csrr a0, vl3189; CHECK-NEXT:    sd a0, 0(a2)3190; CHECK-NEXT:    ret3191entry:3192  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 5), i64} @llvm.riscv.vlseg5ff.mask.triscv.vector.tuple_nxv8i8_5t.nxv1i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) %val, ptr %base, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6)3193  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 5), i64} %0, 03194  %2 = call <vscale x 1 x i64> @llvm.riscv.tuple.extract.nxv1i64.triscv.vector.tuple_nxv8i8_5t(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) %1, i32 1)3195  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 5), i64} %0, 13196  store i64 %3, ptr %outvl3197  ret <vscale x 1 x i64> %23198}3199 3200define <vscale x 1 x i64> @test_vlseg6ff_nxv1i64_triscv.vector.tuple_nxv8i8_6t(ptr %base, i64 %vl, ptr %outvl) {3201; CHECK-LABEL: test_vlseg6ff_nxv1i64_triscv.vector.tuple_nxv8i8_6t:3202; CHECK:       # %bb.0: # %entry3203; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, ma3204; CHECK-NEXT:    vlseg6e64ff.v v7, (a0)3205; CHECK-NEXT:    csrr a0, vl3206; CHECK-NEXT:    sd a0, 0(a2)3207; CHECK-NEXT:    ret3208entry:3209  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 6), i64} @llvm.riscv.vlseg6ff.triscv.vector.tuple_nxv8i8_6t(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) poison, ptr %base, i64 %vl, i64 6)3210  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 6), i64} %0, 03211  %2 = call <vscale x 1 x i64> @llvm.riscv.tuple.extract.nxv1i64.triscv.vector.tuple_nxv8i8_6t(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) %1, i32 1)3212  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 6), i64} %0, 13213  store i64 %3, ptr %outvl3214  ret <vscale x 1 x i64> %23215}3216 3217define <vscale x 1 x i64> @test_vlseg6ff_mask_nxv1i64_triscv.vector.tuple_nxv8i8_6t(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) %val, ptr %base, i64 %vl, <vscale x 1 x i1> %mask, ptr %outvl) {3218; CHECK-LABEL: test_vlseg6ff_mask_nxv1i64_triscv.vector.tuple_nxv8i8_6t:3219; CHECK:       # %bb.0: # %entry3220; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, mu3221; CHECK-NEXT:    vmv1r.v v7, v83222; CHECK-NEXT:    vmv1r.v v8, v93223; CHECK-NEXT:    vmv1r.v v9, v103224; CHECK-NEXT:    vmv1r.v v10, v113225; CHECK-NEXT:    vmv1r.v v11, v123226; CHECK-NEXT:    vmv1r.v v12, v133227; CHECK-NEXT:    vlseg6e64ff.v v7, (a0), v0.t3228; CHECK-NEXT:    csrr a0, vl3229; CHECK-NEXT:    sd a0, 0(a2)3230; CHECK-NEXT:    ret3231entry:3232  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 6), i64} @llvm.riscv.vlseg6ff.mask.triscv.vector.tuple_nxv8i8_6t.nxv1i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) %val, ptr %base, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6)3233  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 6), i64} %0, 03234  %2 = call <vscale x 1 x i64> @llvm.riscv.tuple.extract.nxv1i64.triscv.vector.tuple_nxv8i8_6t(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) %1, i32 1)3235  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 6), i64} %0, 13236  store i64 %3, ptr %outvl3237  ret <vscale x 1 x i64> %23238}3239 3240define <vscale x 1 x i64> @test_vlseg7ff_nxv1i64_triscv.vector.tuple_nxv8i8_7t(ptr %base, i64 %vl, ptr %outvl) {3241; CHECK-LABEL: test_vlseg7ff_nxv1i64_triscv.vector.tuple_nxv8i8_7t:3242; CHECK:       # %bb.0: # %entry3243; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, ma3244; CHECK-NEXT:    vlseg7e64ff.v v7, (a0)3245; CHECK-NEXT:    csrr a0, vl3246; CHECK-NEXT:    sd a0, 0(a2)3247; CHECK-NEXT:    ret3248entry:3249  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 7), i64} @llvm.riscv.vlseg7ff.triscv.vector.tuple_nxv8i8_7t(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) poison, ptr %base, i64 %vl, i64 6)3250  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 7), i64} %0, 03251  %2 = call <vscale x 1 x i64> @llvm.riscv.tuple.extract.nxv1i64.triscv.vector.tuple_nxv8i8_7t(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) %1, i32 1)3252  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 7), i64} %0, 13253  store i64 %3, ptr %outvl3254  ret <vscale x 1 x i64> %23255}3256 3257define <vscale x 1 x i64> @test_vlseg7ff_mask_nxv1i64_triscv.vector.tuple_nxv8i8_7t(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) %val, ptr %base, i64 %vl, <vscale x 1 x i1> %mask, ptr %outvl) {3258; CHECK-LABEL: test_vlseg7ff_mask_nxv1i64_triscv.vector.tuple_nxv8i8_7t:3259; CHECK:       # %bb.0: # %entry3260; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, mu3261; CHECK-NEXT:    vmv1r.v v7, v83262; CHECK-NEXT:    vmv1r.v v8, v93263; CHECK-NEXT:    vmv1r.v v9, v103264; CHECK-NEXT:    vmv1r.v v10, v113265; CHECK-NEXT:    vmv1r.v v11, v123266; CHECK-NEXT:    vmv1r.v v12, v133267; CHECK-NEXT:    vmv1r.v v13, v143268; CHECK-NEXT:    vlseg7e64ff.v v7, (a0), v0.t3269; CHECK-NEXT:    csrr a0, vl3270; CHECK-NEXT:    sd a0, 0(a2)3271; CHECK-NEXT:    ret3272entry:3273  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 7), i64} @llvm.riscv.vlseg7ff.mask.triscv.vector.tuple_nxv8i8_7t.nxv1i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) %val, ptr %base, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6)3274  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 7), i64} %0, 03275  %2 = call <vscale x 1 x i64> @llvm.riscv.tuple.extract.nxv1i64.triscv.vector.tuple_nxv8i8_7t(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) %1, i32 1)3276  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 7), i64} %0, 13277  store i64 %3, ptr %outvl3278  ret <vscale x 1 x i64> %23279}3280 3281define <vscale x 1 x i64> @test_vlseg8ff_nxv1i64_triscv.vector.tuple_nxv8i8_8t(ptr %base, i64 %vl, ptr %outvl) {3282; CHECK-LABEL: test_vlseg8ff_nxv1i64_triscv.vector.tuple_nxv8i8_8t:3283; CHECK:       # %bb.0: # %entry3284; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, ma3285; CHECK-NEXT:    vlseg8e64ff.v v7, (a0)3286; CHECK-NEXT:    csrr a0, vl3287; CHECK-NEXT:    sd a0, 0(a2)3288; CHECK-NEXT:    ret3289entry:3290  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 8), i64} @llvm.riscv.vlseg8ff.triscv.vector.tuple_nxv8i8_8t(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) poison, ptr %base, i64 %vl, i64 6)3291  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 8), i64} %0, 03292  %2 = call <vscale x 1 x i64> @llvm.riscv.tuple.extract.nxv1i64.triscv.vector.tuple_nxv8i8_8t(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) %1, i32 1)3293  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 8), i64} %0, 13294  store i64 %3, ptr %outvl3295  ret <vscale x 1 x i64> %23296}3297 3298define <vscale x 1 x i64> @test_vlseg8ff_mask_nxv1i64_triscv.vector.tuple_nxv8i8_8t(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) %val, ptr %base, i64 %vl, <vscale x 1 x i1> %mask, ptr %outvl) {3299; CHECK-LABEL: test_vlseg8ff_mask_nxv1i64_triscv.vector.tuple_nxv8i8_8t:3300; CHECK:       # %bb.0: # %entry3301; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, mu3302; CHECK-NEXT:    vmv1r.v v7, v83303; CHECK-NEXT:    vmv1r.v v8, v93304; CHECK-NEXT:    vmv1r.v v9, v103305; CHECK-NEXT:    vmv1r.v v10, v113306; CHECK-NEXT:    vmv1r.v v11, v123307; CHECK-NEXT:    vmv1r.v v12, v133308; CHECK-NEXT:    vmv1r.v v13, v143309; CHECK-NEXT:    vmv1r.v v14, v153310; CHECK-NEXT:    vlseg8e64ff.v v7, (a0), v0.t3311; CHECK-NEXT:    csrr a0, vl3312; CHECK-NEXT:    sd a0, 0(a2)3313; CHECK-NEXT:    ret3314entry:3315  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 8), i64} @llvm.riscv.vlseg8ff.mask.triscv.vector.tuple_nxv8i8_8t.nxv1i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) %val, ptr %base, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6)3316  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 8), i64} %0, 03317  %2 = call <vscale x 1 x i64> @llvm.riscv.tuple.extract.nxv1i64.triscv.vector.tuple_nxv8i8_8t(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) %1, i32 1)3318  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 8), i64} %0, 13319  store i64 %3, ptr %outvl3320  ret <vscale x 1 x i64> %23321}3322 3323define <vscale x 1 x half> @test_vlseg2ff_nxv1f16_triscv.vector.tuple_nxv2i8_2t(ptr %base, i64 %vl, ptr %outvl) {3324; CHECK-LABEL: test_vlseg2ff_nxv1f16_triscv.vector.tuple_nxv2i8_2t:3325; CHECK:       # %bb.0: # %entry3326; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma3327; CHECK-NEXT:    vlseg2e16ff.v v7, (a0)3328; CHECK-NEXT:    csrr a0, vl3329; CHECK-NEXT:    sd a0, 0(a2)3330; CHECK-NEXT:    ret3331entry:3332  %0 = tail call {target("riscv.vector.tuple", <vscale x 2 x i8>, 2), i64} @llvm.riscv.vlseg2ff.triscv.vector.tuple_nxv2i8_2t(target("riscv.vector.tuple", <vscale x 2 x i8>, 2) poison, ptr %base, i64 %vl, i64 4)3333  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 2), i64} %0, 03334  %2 = call <vscale x 1 x half> @llvm.riscv.tuple.extract.nxv1f16.triscv.vector.tuple_nxv2i8_2t(target("riscv.vector.tuple", <vscale x 2 x i8>, 2) %1, i32 1)3335  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 2), i64} %0, 13336  store i64 %3, ptr %outvl3337  ret <vscale x 1 x half> %23338}3339 3340define <vscale x 1 x half> @test_vlseg2ff_mask_nxv1f16_triscv.vector.tuple_nxv2i8_2t(target("riscv.vector.tuple", <vscale x 2 x i8>, 2) %val, ptr %base, i64 %vl, <vscale x 1 x i1> %mask, ptr %outvl) {3341; CHECK-LABEL: test_vlseg2ff_mask_nxv1f16_triscv.vector.tuple_nxv2i8_2t:3342; CHECK:       # %bb.0: # %entry3343; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, mu3344; CHECK-NEXT:    vmv1r.v v7, v83345; CHECK-NEXT:    vmv1r.v v8, v93346; CHECK-NEXT:    vlseg2e16ff.v v7, (a0), v0.t3347; CHECK-NEXT:    csrr a0, vl3348; CHECK-NEXT:    sd a0, 0(a2)3349; CHECK-NEXT:    ret3350entry:3351  %0 = tail call {target("riscv.vector.tuple", <vscale x 2 x i8>, 2), i64} @llvm.riscv.vlseg2ff.mask.triscv.vector.tuple_nxv2i8_2t.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 2) %val, ptr %base, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4)3352  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 2), i64} %0, 03353  %2 = call <vscale x 1 x half> @llvm.riscv.tuple.extract.nxv1f16.triscv.vector.tuple_nxv2i8_2t(target("riscv.vector.tuple", <vscale x 2 x i8>, 2) %1, i32 1)3354  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 2), i64} %0, 13355  store i64 %3, ptr %outvl3356  ret <vscale x 1 x half> %23357}3358 3359define <vscale x 2 x half> @test_vlseg2ff_nxv2f16_triscv.vector.tuple_nxv4i8_2t(ptr %base, i64 %vl, ptr %outvl) {3360; CHECK-LABEL: test_vlseg2ff_nxv2f16_triscv.vector.tuple_nxv4i8_2t:3361; CHECK:       # %bb.0: # %entry3362; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma3363; CHECK-NEXT:    vlseg2e16ff.v v7, (a0)3364; CHECK-NEXT:    csrr a0, vl3365; CHECK-NEXT:    sd a0, 0(a2)3366; CHECK-NEXT:    ret3367entry:3368  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 2), i64} @llvm.riscv.vlseg2ff.triscv.vector.tuple_nxv4i8_2t(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) poison, ptr %base, i64 %vl, i64 4)3369  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 2), i64} %0, 03370  %2 = call <vscale x 2 x half> @llvm.riscv.tuple.extract.nxv2f16.triscv.vector.tuple_nxv4i8_2t(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) %1, i32 1)3371  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 2), i64} %0, 13372  store i64 %3, ptr %outvl3373  ret <vscale x 2 x half> %23374}3375 3376define <vscale x 2 x half> @test_vlseg2ff_mask_nxv2f16_triscv.vector.tuple_nxv4i8_2t(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) %val, ptr %base, i64 %vl, <vscale x 2 x i1> %mask, ptr %outvl) {3377; CHECK-LABEL: test_vlseg2ff_mask_nxv2f16_triscv.vector.tuple_nxv4i8_2t:3378; CHECK:       # %bb.0: # %entry3379; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, mu3380; CHECK-NEXT:    vmv1r.v v7, v83381; CHECK-NEXT:    vmv1r.v v8, v93382; CHECK-NEXT:    vlseg2e16ff.v v7, (a0), v0.t3383; CHECK-NEXT:    csrr a0, vl3384; CHECK-NEXT:    sd a0, 0(a2)3385; CHECK-NEXT:    ret3386entry:3387  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 2), i64} @llvm.riscv.vlseg2ff.mask.triscv.vector.tuple_nxv4i8_2t.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) %val, ptr %base, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4)3388  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 2), i64} %0, 03389  %2 = call <vscale x 2 x half> @llvm.riscv.tuple.extract.nxv2f16.triscv.vector.tuple_nxv4i8_2t(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) %1, i32 1)3390  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 2), i64} %0, 13391  store i64 %3, ptr %outvl3392  ret <vscale x 2 x half> %23393}3394 3395define <vscale x 4 x half> @test_vlseg2ff_nxv4f16_triscv.vector.tuple_nxv8i8_2t(ptr %base, i64 %vl, ptr %outvl) {3396; CHECK-LABEL: test_vlseg2ff_nxv4f16_triscv.vector.tuple_nxv8i8_2t:3397; CHECK:       # %bb.0: # %entry3398; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma3399; CHECK-NEXT:    vlseg2e16ff.v v7, (a0)3400; CHECK-NEXT:    csrr a0, vl3401; CHECK-NEXT:    sd a0, 0(a2)3402; CHECK-NEXT:    ret3403entry:3404  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 2), i64} @llvm.riscv.vlseg2ff.triscv.vector.tuple_nxv8i8_2t(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) poison, ptr %base, i64 %vl, i64 4)3405  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 2), i64} %0, 03406  %2 = call <vscale x 4 x half> @llvm.riscv.tuple.extract.nxv4f16.triscv.vector.tuple_nxv8i8_2t(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) %1, i32 1)3407  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 2), i64} %0, 13408  store i64 %3, ptr %outvl3409  ret <vscale x 4 x half> %23410}3411 3412define <vscale x 4 x half> @test_vlseg2ff_mask_nxv4f16_triscv.vector.tuple_nxv8i8_2t(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) %val, ptr %base, i64 %vl, <vscale x 4 x i1> %mask, ptr %outvl) {3413; CHECK-LABEL: test_vlseg2ff_mask_nxv4f16_triscv.vector.tuple_nxv8i8_2t:3414; CHECK:       # %bb.0: # %entry3415; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, mu3416; CHECK-NEXT:    vmv1r.v v7, v83417; CHECK-NEXT:    vmv1r.v v8, v93418; CHECK-NEXT:    vlseg2e16ff.v v7, (a0), v0.t3419; CHECK-NEXT:    csrr a0, vl3420; CHECK-NEXT:    sd a0, 0(a2)3421; CHECK-NEXT:    ret3422entry:3423  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 2), i64} @llvm.riscv.vlseg2ff.mask.triscv.vector.tuple_nxv8i8_2t.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) %val, ptr %base, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4)3424  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 2), i64} %0, 03425  %2 = call <vscale x 4 x half> @llvm.riscv.tuple.extract.nxv4f16.triscv.vector.tuple_nxv8i8_2t(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) %1, i32 1)3426  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 2), i64} %0, 13427  store i64 %3, ptr %outvl3428  ret <vscale x 4 x half> %23429}3430 3431define <vscale x 8 x half> @test_vlseg2ff_nxv8f16_triscv.vector.tuple_nxv16i8_2t(ptr %base, i64 %vl, ptr %outvl) {3432; CHECK-LABEL: test_vlseg2ff_nxv8f16_triscv.vector.tuple_nxv16i8_2t:3433; CHECK:       # %bb.0: # %entry3434; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma3435; CHECK-NEXT:    vlseg2e16ff.v v6, (a0)3436; CHECK-NEXT:    csrr a0, vl3437; CHECK-NEXT:    sd a0, 0(a2)3438; CHECK-NEXT:    ret3439entry:3440  %0 = tail call {target("riscv.vector.tuple", <vscale x 16 x i8>, 2), i64} @llvm.riscv.vlseg2ff.triscv.vector.tuple_nxv16i8_2t(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) poison, ptr %base, i64 %vl, i64 4)3441  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 2), i64} %0, 03442  %2 = call <vscale x 8 x half> @llvm.riscv.tuple.extract.nxv8f16.triscv.vector.tuple_nxv16i8_2t(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) %1, i32 1)3443  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 2), i64} %0, 13444  store i64 %3, ptr %outvl3445  ret <vscale x 8 x half> %23446}3447 3448define <vscale x 8 x half> @test_vlseg2ff_mask_nxv8f16_triscv.vector.tuple_nxv16i8_2t(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) %val, ptr %base, i64 %vl, <vscale x 8 x i1> %mask, ptr %outvl) {3449; CHECK-LABEL: test_vlseg2ff_mask_nxv8f16_triscv.vector.tuple_nxv16i8_2t:3450; CHECK:       # %bb.0: # %entry3451; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, mu3452; CHECK-NEXT:    vmv2r.v v6, v83453; CHECK-NEXT:    vmv2r.v v8, v103454; CHECK-NEXT:    vlseg2e16ff.v v6, (a0), v0.t3455; CHECK-NEXT:    csrr a0, vl3456; CHECK-NEXT:    sd a0, 0(a2)3457; CHECK-NEXT:    ret3458entry:3459  %0 = tail call {target("riscv.vector.tuple", <vscale x 16 x i8>, 2), i64} @llvm.riscv.vlseg2ff.mask.triscv.vector.tuple_nxv16i8_2t.nxv8i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) %val, ptr %base, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 4)3460  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 2), i64} %0, 03461  %2 = call <vscale x 8 x half> @llvm.riscv.tuple.extract.nxv8f16.triscv.vector.tuple_nxv16i8_2t(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) %1, i32 1)3462  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 2), i64} %0, 13463  store i64 %3, ptr %outvl3464  ret <vscale x 8 x half> %23465}3466 3467define <vscale x 16 x half> @test_vlseg2ff_nxv16f16_triscv.vector.tuple_nxv32i8_2t(ptr %base, i64 %vl, ptr %outvl) {3468; CHECK-LABEL: test_vlseg2ff_nxv16f16_triscv.vector.tuple_nxv32i8_2t:3469; CHECK:       # %bb.0: # %entry3470; CHECK-NEXT:    vsetvli zero, a1, e16, m4, ta, ma3471; CHECK-NEXT:    vlseg2e16ff.v v4, (a0)3472; CHECK-NEXT:    csrr a0, vl3473; CHECK-NEXT:    sd a0, 0(a2)3474; CHECK-NEXT:    ret3475entry:3476  %0 = tail call {target("riscv.vector.tuple", <vscale x 32 x i8>, 2), i64} @llvm.riscv.vlseg2ff.triscv.vector.tuple_nxv32i8_2t(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) poison, ptr %base, i64 %vl, i64 4)3477  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 32 x i8>, 2), i64} %0, 03478  %2 = call <vscale x 16 x half> @llvm.riscv.tuple.extract.nxv16f16.triscv.vector.tuple_nxv32i8_2t(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) %1, i32 1)3479  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 32 x i8>, 2), i64} %0, 13480  store i64 %3, ptr %outvl3481  ret <vscale x 16 x half> %23482}3483 3484define <vscale x 16 x half> @test_vlseg2ff_mask_nxv16f16_triscv.vector.tuple_nxv32i8_2t(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) %val, ptr %base, i64 %vl, <vscale x 16 x i1> %mask, ptr %outvl) {3485; CHECK-LABEL: test_vlseg2ff_mask_nxv16f16_triscv.vector.tuple_nxv32i8_2t:3486; CHECK:       # %bb.0: # %entry3487; CHECK-NEXT:    vsetvli zero, a1, e16, m4, ta, mu3488; CHECK-NEXT:    vmv4r.v v4, v83489; CHECK-NEXT:    vmv4r.v v8, v123490; CHECK-NEXT:    vlseg2e16ff.v v4, (a0), v0.t3491; CHECK-NEXT:    csrr a0, vl3492; CHECK-NEXT:    sd a0, 0(a2)3493; CHECK-NEXT:    ret3494entry:3495  %0 = tail call {target("riscv.vector.tuple", <vscale x 32 x i8>, 2), i64} @llvm.riscv.vlseg2ff.mask.triscv.vector.tuple_nxv32i8_2t.nxv16i1(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) %val, ptr %base, <vscale x 16 x i1> %mask, i64 %vl, i64 1, i64 4)3496  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 32 x i8>, 2), i64} %0, 03497  %2 = call <vscale x 16 x half> @llvm.riscv.tuple.extract.nxv16f16.triscv.vector.tuple_nxv32i8_2t(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) %1, i32 1)3498  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 32 x i8>, 2), i64} %0, 13499  store i64 %3, ptr %outvl3500  ret <vscale x 16 x half> %23501}3502 3503define <vscale x 1 x half> @test_vlseg3ff_nxv1f16_triscv.vector.tuple_nxv2i8_3t(ptr %base, i64 %vl, ptr %outvl) {3504; CHECK-LABEL: test_vlseg3ff_nxv1f16_triscv.vector.tuple_nxv2i8_3t:3505; CHECK:       # %bb.0: # %entry3506; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma3507; CHECK-NEXT:    vlseg3e16ff.v v7, (a0)3508; CHECK-NEXT:    csrr a0, vl3509; CHECK-NEXT:    sd a0, 0(a2)3510; CHECK-NEXT:    ret3511entry:3512  %0 = tail call {target("riscv.vector.tuple", <vscale x 2 x i8>, 3), i64} @llvm.riscv.vlseg3ff.triscv.vector.tuple_nxv2i8_3t(target("riscv.vector.tuple", <vscale x 2 x i8>, 3) poison, ptr %base, i64 %vl, i64 4)3513  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 3), i64} %0, 03514  %2 = call <vscale x 1 x half> @llvm.riscv.tuple.extract.nxv1f16.triscv.vector.tuple_nxv2i8_3t(target("riscv.vector.tuple", <vscale x 2 x i8>, 3) %1, i32 1)3515  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 3), i64} %0, 13516  store i64 %3, ptr %outvl3517  ret <vscale x 1 x half> %23518}3519 3520define <vscale x 1 x half> @test_vlseg3ff_mask_nxv1f16_triscv.vector.tuple_nxv2i8_3t(target("riscv.vector.tuple", <vscale x 2 x i8>, 3) %val, ptr %base, i64 %vl, <vscale x 1 x i1> %mask, ptr %outvl) {3521; CHECK-LABEL: test_vlseg3ff_mask_nxv1f16_triscv.vector.tuple_nxv2i8_3t:3522; CHECK:       # %bb.0: # %entry3523; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, mu3524; CHECK-NEXT:    vmv1r.v v7, v83525; CHECK-NEXT:    vmv1r.v v8, v93526; CHECK-NEXT:    vmv1r.v v9, v103527; CHECK-NEXT:    vlseg3e16ff.v v7, (a0), v0.t3528; CHECK-NEXT:    csrr a0, vl3529; CHECK-NEXT:    sd a0, 0(a2)3530; CHECK-NEXT:    ret3531entry:3532  %0 = tail call {target("riscv.vector.tuple", <vscale x 2 x i8>, 3), i64} @llvm.riscv.vlseg3ff.mask.triscv.vector.tuple_nxv2i8_3t.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 3) %val, ptr %base, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4)3533  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 3), i64} %0, 03534  %2 = call <vscale x 1 x half> @llvm.riscv.tuple.extract.nxv1f16.triscv.vector.tuple_nxv2i8_3t(target("riscv.vector.tuple", <vscale x 2 x i8>, 3) %1, i32 1)3535  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 3), i64} %0, 13536  store i64 %3, ptr %outvl3537  ret <vscale x 1 x half> %23538}3539 3540define <vscale x 2 x half> @test_vlseg3ff_nxv2f16_triscv.vector.tuple_nxv4i8_3t(ptr %base, i64 %vl, ptr %outvl) {3541; CHECK-LABEL: test_vlseg3ff_nxv2f16_triscv.vector.tuple_nxv4i8_3t:3542; CHECK:       # %bb.0: # %entry3543; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma3544; CHECK-NEXT:    vlseg3e16ff.v v7, (a0)3545; CHECK-NEXT:    csrr a0, vl3546; CHECK-NEXT:    sd a0, 0(a2)3547; CHECK-NEXT:    ret3548entry:3549  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 3), i64} @llvm.riscv.vlseg3ff.triscv.vector.tuple_nxv4i8_3t(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) poison, ptr %base, i64 %vl, i64 4)3550  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 3), i64} %0, 03551  %2 = call <vscale x 2 x half> @llvm.riscv.tuple.extract.nxv2f16.triscv.vector.tuple_nxv4i8_3t(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) %1, i32 1)3552  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 3), i64} %0, 13553  store i64 %3, ptr %outvl3554  ret <vscale x 2 x half> %23555}3556 3557define <vscale x 2 x half> @test_vlseg3ff_mask_nxv2f16_triscv.vector.tuple_nxv4i8_3t(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) %val, ptr %base, i64 %vl, <vscale x 2 x i1> %mask, ptr %outvl) {3558; CHECK-LABEL: test_vlseg3ff_mask_nxv2f16_triscv.vector.tuple_nxv4i8_3t:3559; CHECK:       # %bb.0: # %entry3560; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, mu3561; CHECK-NEXT:    vmv1r.v v7, v83562; CHECK-NEXT:    vmv1r.v v8, v93563; CHECK-NEXT:    vmv1r.v v9, v103564; CHECK-NEXT:    vlseg3e16ff.v v7, (a0), v0.t3565; CHECK-NEXT:    csrr a0, vl3566; CHECK-NEXT:    sd a0, 0(a2)3567; CHECK-NEXT:    ret3568entry:3569  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 3), i64} @llvm.riscv.vlseg3ff.mask.triscv.vector.tuple_nxv4i8_3t.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) %val, ptr %base, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4)3570  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 3), i64} %0, 03571  %2 = call <vscale x 2 x half> @llvm.riscv.tuple.extract.nxv2f16.triscv.vector.tuple_nxv4i8_3t(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) %1, i32 1)3572  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 3), i64} %0, 13573  store i64 %3, ptr %outvl3574  ret <vscale x 2 x half> %23575}3576 3577define <vscale x 4 x half> @test_vlseg3ff_nxv4f16_triscv.vector.tuple_nxv8i8_3t(ptr %base, i64 %vl, ptr %outvl) {3578; CHECK-LABEL: test_vlseg3ff_nxv4f16_triscv.vector.tuple_nxv8i8_3t:3579; CHECK:       # %bb.0: # %entry3580; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma3581; CHECK-NEXT:    vlseg3e16ff.v v7, (a0)3582; CHECK-NEXT:    csrr a0, vl3583; CHECK-NEXT:    sd a0, 0(a2)3584; CHECK-NEXT:    ret3585entry:3586  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 3), i64} @llvm.riscv.vlseg3ff.triscv.vector.tuple_nxv8i8_3t(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) poison, ptr %base, i64 %vl, i64 4)3587  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 3), i64} %0, 03588  %2 = call <vscale x 4 x half> @llvm.riscv.tuple.extract.nxv4f16.triscv.vector.tuple_nxv8i8_3t(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) %1, i32 1)3589  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 3), i64} %0, 13590  store i64 %3, ptr %outvl3591  ret <vscale x 4 x half> %23592}3593 3594define <vscale x 4 x half> @test_vlseg3ff_mask_nxv4f16_triscv.vector.tuple_nxv8i8_3t(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) %val, ptr %base, i64 %vl, <vscale x 4 x i1> %mask, ptr %outvl) {3595; CHECK-LABEL: test_vlseg3ff_mask_nxv4f16_triscv.vector.tuple_nxv8i8_3t:3596; CHECK:       # %bb.0: # %entry3597; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, mu3598; CHECK-NEXT:    vmv1r.v v7, v83599; CHECK-NEXT:    vmv1r.v v8, v93600; CHECK-NEXT:    vmv1r.v v9, v103601; CHECK-NEXT:    vlseg3e16ff.v v7, (a0), v0.t3602; CHECK-NEXT:    csrr a0, vl3603; CHECK-NEXT:    sd a0, 0(a2)3604; CHECK-NEXT:    ret3605entry:3606  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 3), i64} @llvm.riscv.vlseg3ff.mask.triscv.vector.tuple_nxv8i8_3t.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) %val, ptr %base, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4)3607  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 3), i64} %0, 03608  %2 = call <vscale x 4 x half> @llvm.riscv.tuple.extract.nxv4f16.triscv.vector.tuple_nxv8i8_3t(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) %1, i32 1)3609  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 3), i64} %0, 13610  store i64 %3, ptr %outvl3611  ret <vscale x 4 x half> %23612}3613 3614define <vscale x 8 x half> @test_vlseg3ff_nxv8f16_triscv.vector.tuple_nxv16i8_3t(ptr %base, i64 %vl, ptr %outvl) {3615; CHECK-LABEL: test_vlseg3ff_nxv8f16_triscv.vector.tuple_nxv16i8_3t:3616; CHECK:       # %bb.0: # %entry3617; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma3618; CHECK-NEXT:    vlseg3e16ff.v v6, (a0)3619; CHECK-NEXT:    csrr a0, vl3620; CHECK-NEXT:    sd a0, 0(a2)3621; CHECK-NEXT:    ret3622entry:3623  %0 = tail call {target("riscv.vector.tuple", <vscale x 16 x i8>, 3), i64} @llvm.riscv.vlseg3ff.triscv.vector.tuple_nxv16i8_3t(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) poison, ptr %base, i64 %vl, i64 4)3624  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 3), i64} %0, 03625  %2 = call <vscale x 8 x half> @llvm.riscv.tuple.extract.nxv8f16.triscv.vector.tuple_nxv16i8_3t(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) %1, i32 1)3626  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 3), i64} %0, 13627  store i64 %3, ptr %outvl3628  ret <vscale x 8 x half> %23629}3630 3631define <vscale x 8 x half> @test_vlseg3ff_mask_nxv8f16_triscv.vector.tuple_nxv16i8_3t(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) %val, ptr %base, i64 %vl, <vscale x 8 x i1> %mask, ptr %outvl) {3632; CHECK-LABEL: test_vlseg3ff_mask_nxv8f16_triscv.vector.tuple_nxv16i8_3t:3633; CHECK:       # %bb.0: # %entry3634; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, mu3635; CHECK-NEXT:    vmv2r.v v6, v83636; CHECK-NEXT:    vmv2r.v v8, v103637; CHECK-NEXT:    vmv2r.v v10, v123638; CHECK-NEXT:    vlseg3e16ff.v v6, (a0), v0.t3639; CHECK-NEXT:    csrr a0, vl3640; CHECK-NEXT:    sd a0, 0(a2)3641; CHECK-NEXT:    ret3642entry:3643  %0 = tail call {target("riscv.vector.tuple", <vscale x 16 x i8>, 3), i64} @llvm.riscv.vlseg3ff.mask.triscv.vector.tuple_nxv16i8_3t.nxv8i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) %val, ptr %base, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 4)3644  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 3), i64} %0, 03645  %2 = call <vscale x 8 x half> @llvm.riscv.tuple.extract.nxv8f16.triscv.vector.tuple_nxv16i8_3t(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) %1, i32 1)3646  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 3), i64} %0, 13647  store i64 %3, ptr %outvl3648  ret <vscale x 8 x half> %23649}3650 3651define <vscale x 1 x half> @test_vlseg4ff_nxv1f16_triscv.vector.tuple_nxv2i8_4t(ptr %base, i64 %vl, ptr %outvl) {3652; CHECK-LABEL: test_vlseg4ff_nxv1f16_triscv.vector.tuple_nxv2i8_4t:3653; CHECK:       # %bb.0: # %entry3654; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma3655; CHECK-NEXT:    vlseg4e16ff.v v7, (a0)3656; CHECK-NEXT:    csrr a0, vl3657; CHECK-NEXT:    sd a0, 0(a2)3658; CHECK-NEXT:    ret3659entry:3660  %0 = tail call {target("riscv.vector.tuple", <vscale x 2 x i8>, 4), i64} @llvm.riscv.vlseg4ff.triscv.vector.tuple_nxv2i8_4t(target("riscv.vector.tuple", <vscale x 2 x i8>, 4) poison, ptr %base, i64 %vl, i64 4)3661  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 4), i64} %0, 03662  %2 = call <vscale x 1 x half> @llvm.riscv.tuple.extract.nxv1f16.triscv.vector.tuple_nxv2i8_4t(target("riscv.vector.tuple", <vscale x 2 x i8>, 4) %1, i32 1)3663  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 4), i64} %0, 13664  store i64 %3, ptr %outvl3665  ret <vscale x 1 x half> %23666}3667 3668define <vscale x 1 x half> @test_vlseg4ff_mask_nxv1f16_triscv.vector.tuple_nxv2i8_4t(target("riscv.vector.tuple", <vscale x 2 x i8>, 4) %val, ptr %base, i64 %vl, <vscale x 1 x i1> %mask, ptr %outvl) {3669; CHECK-LABEL: test_vlseg4ff_mask_nxv1f16_triscv.vector.tuple_nxv2i8_4t:3670; CHECK:       # %bb.0: # %entry3671; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, mu3672; CHECK-NEXT:    vmv1r.v v7, v83673; CHECK-NEXT:    vmv1r.v v8, v93674; CHECK-NEXT:    vmv1r.v v9, v103675; CHECK-NEXT:    vmv1r.v v10, v113676; CHECK-NEXT:    vlseg4e16ff.v v7, (a0), v0.t3677; CHECK-NEXT:    csrr a0, vl3678; CHECK-NEXT:    sd a0, 0(a2)3679; CHECK-NEXT:    ret3680entry:3681  %0 = tail call {target("riscv.vector.tuple", <vscale x 2 x i8>, 4), i64} @llvm.riscv.vlseg4ff.mask.triscv.vector.tuple_nxv2i8_4t.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 4) %val, ptr %base, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4)3682  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 4), i64} %0, 03683  %2 = call <vscale x 1 x half> @llvm.riscv.tuple.extract.nxv1f16.triscv.vector.tuple_nxv2i8_4t(target("riscv.vector.tuple", <vscale x 2 x i8>, 4) %1, i32 1)3684  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 4), i64} %0, 13685  store i64 %3, ptr %outvl3686  ret <vscale x 1 x half> %23687}3688 3689define <vscale x 2 x half> @test_vlseg4ff_nxv2f16_triscv.vector.tuple_nxv4i8_4t(ptr %base, i64 %vl, ptr %outvl) {3690; CHECK-LABEL: test_vlseg4ff_nxv2f16_triscv.vector.tuple_nxv4i8_4t:3691; CHECK:       # %bb.0: # %entry3692; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma3693; CHECK-NEXT:    vlseg4e16ff.v v7, (a0)3694; CHECK-NEXT:    csrr a0, vl3695; CHECK-NEXT:    sd a0, 0(a2)3696; CHECK-NEXT:    ret3697entry:3698  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 4), i64} @llvm.riscv.vlseg4ff.triscv.vector.tuple_nxv4i8_4t(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) poison, ptr %base, i64 %vl, i64 4)3699  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 4), i64} %0, 03700  %2 = call <vscale x 2 x half> @llvm.riscv.tuple.extract.nxv2f16.triscv.vector.tuple_nxv4i8_4t(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) %1, i32 1)3701  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 4), i64} %0, 13702  store i64 %3, ptr %outvl3703  ret <vscale x 2 x half> %23704}3705 3706define <vscale x 2 x half> @test_vlseg4ff_mask_nxv2f16_triscv.vector.tuple_nxv4i8_4t(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) %val, ptr %base, i64 %vl, <vscale x 2 x i1> %mask, ptr %outvl) {3707; CHECK-LABEL: test_vlseg4ff_mask_nxv2f16_triscv.vector.tuple_nxv4i8_4t:3708; CHECK:       # %bb.0: # %entry3709; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, mu3710; CHECK-NEXT:    vmv1r.v v7, v83711; CHECK-NEXT:    vmv1r.v v8, v93712; CHECK-NEXT:    vmv1r.v v9, v103713; CHECK-NEXT:    vmv1r.v v10, v113714; CHECK-NEXT:    vlseg4e16ff.v v7, (a0), v0.t3715; CHECK-NEXT:    csrr a0, vl3716; CHECK-NEXT:    sd a0, 0(a2)3717; CHECK-NEXT:    ret3718entry:3719  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 4), i64} @llvm.riscv.vlseg4ff.mask.triscv.vector.tuple_nxv4i8_4t.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) %val, ptr %base, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4)3720  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 4), i64} %0, 03721  %2 = call <vscale x 2 x half> @llvm.riscv.tuple.extract.nxv2f16.triscv.vector.tuple_nxv4i8_4t(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) %1, i32 1)3722  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 4), i64} %0, 13723  store i64 %3, ptr %outvl3724  ret <vscale x 2 x half> %23725}3726 3727define <vscale x 4 x half> @test_vlseg4ff_nxv4f16_triscv.vector.tuple_nxv8i8_4t(ptr %base, i64 %vl, ptr %outvl) {3728; CHECK-LABEL: test_vlseg4ff_nxv4f16_triscv.vector.tuple_nxv8i8_4t:3729; CHECK:       # %bb.0: # %entry3730; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma3731; CHECK-NEXT:    vlseg4e16ff.v v7, (a0)3732; CHECK-NEXT:    csrr a0, vl3733; CHECK-NEXT:    sd a0, 0(a2)3734; CHECK-NEXT:    ret3735entry:3736  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 4), i64} @llvm.riscv.vlseg4ff.triscv.vector.tuple_nxv8i8_4t(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) poison, ptr %base, i64 %vl, i64 4)3737  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 4), i64} %0, 03738  %2 = call <vscale x 4 x half> @llvm.riscv.tuple.extract.nxv4f16.triscv.vector.tuple_nxv8i8_4t(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) %1, i32 1)3739  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 4), i64} %0, 13740  store i64 %3, ptr %outvl3741  ret <vscale x 4 x half> %23742}3743 3744define <vscale x 4 x half> @test_vlseg4ff_mask_nxv4f16_triscv.vector.tuple_nxv8i8_4t(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) %val, ptr %base, i64 %vl, <vscale x 4 x i1> %mask, ptr %outvl) {3745; CHECK-LABEL: test_vlseg4ff_mask_nxv4f16_triscv.vector.tuple_nxv8i8_4t:3746; CHECK:       # %bb.0: # %entry3747; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, mu3748; CHECK-NEXT:    vmv1r.v v7, v83749; CHECK-NEXT:    vmv1r.v v8, v93750; CHECK-NEXT:    vmv1r.v v9, v103751; CHECK-NEXT:    vmv1r.v v10, v113752; CHECK-NEXT:    vlseg4e16ff.v v7, (a0), v0.t3753; CHECK-NEXT:    csrr a0, vl3754; CHECK-NEXT:    sd a0, 0(a2)3755; CHECK-NEXT:    ret3756entry:3757  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 4), i64} @llvm.riscv.vlseg4ff.mask.triscv.vector.tuple_nxv8i8_4t.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) %val, ptr %base, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4)3758  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 4), i64} %0, 03759  %2 = call <vscale x 4 x half> @llvm.riscv.tuple.extract.nxv4f16.triscv.vector.tuple_nxv8i8_4t(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) %1, i32 1)3760  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 4), i64} %0, 13761  store i64 %3, ptr %outvl3762  ret <vscale x 4 x half> %23763}3764 3765define <vscale x 8 x half> @test_vlseg4ff_nxv8f16_triscv.vector.tuple_nxv16i8_4t(ptr %base, i64 %vl, ptr %outvl) {3766; CHECK-LABEL: test_vlseg4ff_nxv8f16_triscv.vector.tuple_nxv16i8_4t:3767; CHECK:       # %bb.0: # %entry3768; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma3769; CHECK-NEXT:    vlseg4e16ff.v v6, (a0)3770; CHECK-NEXT:    csrr a0, vl3771; CHECK-NEXT:    sd a0, 0(a2)3772; CHECK-NEXT:    ret3773entry:3774  %0 = tail call {target("riscv.vector.tuple", <vscale x 16 x i8>, 4), i64} @llvm.riscv.vlseg4ff.triscv.vector.tuple_nxv16i8_4t(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) poison, ptr %base, i64 %vl, i64 4)3775  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 4), i64} %0, 03776  %2 = call <vscale x 8 x half> @llvm.riscv.tuple.extract.nxv8f16.triscv.vector.tuple_nxv16i8_4t(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) %1, i32 1)3777  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 4), i64} %0, 13778  store i64 %3, ptr %outvl3779  ret <vscale x 8 x half> %23780}3781 3782define <vscale x 8 x half> @test_vlseg4ff_mask_nxv8f16_triscv.vector.tuple_nxv16i8_4t(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) %val, ptr %base, i64 %vl, <vscale x 8 x i1> %mask, ptr %outvl) {3783; CHECK-LABEL: test_vlseg4ff_mask_nxv8f16_triscv.vector.tuple_nxv16i8_4t:3784; CHECK:       # %bb.0: # %entry3785; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, mu3786; CHECK-NEXT:    vmv2r.v v6, v83787; CHECK-NEXT:    vmv2r.v v8, v103788; CHECK-NEXT:    vmv2r.v v10, v123789; CHECK-NEXT:    vmv2r.v v12, v143790; CHECK-NEXT:    vlseg4e16ff.v v6, (a0), v0.t3791; CHECK-NEXT:    csrr a0, vl3792; CHECK-NEXT:    sd a0, 0(a2)3793; CHECK-NEXT:    ret3794entry:3795  %0 = tail call {target("riscv.vector.tuple", <vscale x 16 x i8>, 4), i64} @llvm.riscv.vlseg4ff.mask.triscv.vector.tuple_nxv16i8_4t.nxv8i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) %val, ptr %base, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 4)3796  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 4), i64} %0, 03797  %2 = call <vscale x 8 x half> @llvm.riscv.tuple.extract.nxv8f16.triscv.vector.tuple_nxv16i8_4t(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) %1, i32 1)3798  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 4), i64} %0, 13799  store i64 %3, ptr %outvl3800  ret <vscale x 8 x half> %23801}3802 3803define <vscale x 1 x half> @test_vlseg5ff_nxv1f16_triscv.vector.tuple_nxv2i8_5t(ptr %base, i64 %vl, ptr %outvl) {3804; CHECK-LABEL: test_vlseg5ff_nxv1f16_triscv.vector.tuple_nxv2i8_5t:3805; CHECK:       # %bb.0: # %entry3806; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma3807; CHECK-NEXT:    vlseg5e16ff.v v7, (a0)3808; CHECK-NEXT:    csrr a0, vl3809; CHECK-NEXT:    sd a0, 0(a2)3810; CHECK-NEXT:    ret3811entry:3812  %0 = tail call {target("riscv.vector.tuple", <vscale x 2 x i8>, 5), i64} @llvm.riscv.vlseg5ff.triscv.vector.tuple_nxv2i8_5t(target("riscv.vector.tuple", <vscale x 2 x i8>, 5) poison, ptr %base, i64 %vl, i64 4)3813  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 5), i64} %0, 03814  %2 = call <vscale x 1 x half> @llvm.riscv.tuple.extract.nxv1f16.triscv.vector.tuple_nxv2i8_5t(target("riscv.vector.tuple", <vscale x 2 x i8>, 5) %1, i32 1)3815  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 5), i64} %0, 13816  store i64 %3, ptr %outvl3817  ret <vscale x 1 x half> %23818}3819 3820define <vscale x 1 x half> @test_vlseg5ff_mask_nxv1f16_triscv.vector.tuple_nxv2i8_5t(target("riscv.vector.tuple", <vscale x 2 x i8>, 5) %val, ptr %base, i64 %vl, <vscale x 1 x i1> %mask, ptr %outvl) {3821; CHECK-LABEL: test_vlseg5ff_mask_nxv1f16_triscv.vector.tuple_nxv2i8_5t:3822; CHECK:       # %bb.0: # %entry3823; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, mu3824; CHECK-NEXT:    vmv1r.v v7, v83825; CHECK-NEXT:    vmv1r.v v8, v93826; CHECK-NEXT:    vmv1r.v v9, v103827; CHECK-NEXT:    vmv1r.v v10, v113828; CHECK-NEXT:    vmv1r.v v11, v123829; CHECK-NEXT:    vlseg5e16ff.v v7, (a0), v0.t3830; CHECK-NEXT:    csrr a0, vl3831; CHECK-NEXT:    sd a0, 0(a2)3832; CHECK-NEXT:    ret3833entry:3834  %0 = tail call {target("riscv.vector.tuple", <vscale x 2 x i8>, 5), i64} @llvm.riscv.vlseg5ff.mask.triscv.vector.tuple_nxv2i8_5t.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 5) %val, ptr %base, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4)3835  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 5), i64} %0, 03836  %2 = call <vscale x 1 x half> @llvm.riscv.tuple.extract.nxv1f16.triscv.vector.tuple_nxv2i8_5t(target("riscv.vector.tuple", <vscale x 2 x i8>, 5) %1, i32 1)3837  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 5), i64} %0, 13838  store i64 %3, ptr %outvl3839  ret <vscale x 1 x half> %23840}3841 3842define <vscale x 2 x half> @test_vlseg5ff_nxv2f16_triscv.vector.tuple_nxv4i8_5t(ptr %base, i64 %vl, ptr %outvl) {3843; CHECK-LABEL: test_vlseg5ff_nxv2f16_triscv.vector.tuple_nxv4i8_5t:3844; CHECK:       # %bb.0: # %entry3845; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma3846; CHECK-NEXT:    vlseg5e16ff.v v7, (a0)3847; CHECK-NEXT:    csrr a0, vl3848; CHECK-NEXT:    sd a0, 0(a2)3849; CHECK-NEXT:    ret3850entry:3851  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 5), i64} @llvm.riscv.vlseg5ff.triscv.vector.tuple_nxv4i8_5t(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) poison, ptr %base, i64 %vl, i64 4)3852  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 5), i64} %0, 03853  %2 = call <vscale x 2 x half> @llvm.riscv.tuple.extract.nxv2f16.triscv.vector.tuple_nxv4i8_5t(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) %1, i32 1)3854  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 5), i64} %0, 13855  store i64 %3, ptr %outvl3856  ret <vscale x 2 x half> %23857}3858 3859define <vscale x 2 x half> @test_vlseg5ff_mask_nxv2f16_triscv.vector.tuple_nxv4i8_5t(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) %val, ptr %base, i64 %vl, <vscale x 2 x i1> %mask, ptr %outvl) {3860; CHECK-LABEL: test_vlseg5ff_mask_nxv2f16_triscv.vector.tuple_nxv4i8_5t:3861; CHECK:       # %bb.0: # %entry3862; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, mu3863; CHECK-NEXT:    vmv1r.v v7, v83864; CHECK-NEXT:    vmv1r.v v8, v93865; CHECK-NEXT:    vmv1r.v v9, v103866; CHECK-NEXT:    vmv1r.v v10, v113867; CHECK-NEXT:    vmv1r.v v11, v123868; CHECK-NEXT:    vlseg5e16ff.v v7, (a0), v0.t3869; CHECK-NEXT:    csrr a0, vl3870; CHECK-NEXT:    sd a0, 0(a2)3871; CHECK-NEXT:    ret3872entry:3873  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 5), i64} @llvm.riscv.vlseg5ff.mask.triscv.vector.tuple_nxv4i8_5t.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) %val, ptr %base, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4)3874  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 5), i64} %0, 03875  %2 = call <vscale x 2 x half> @llvm.riscv.tuple.extract.nxv2f16.triscv.vector.tuple_nxv4i8_5t(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) %1, i32 1)3876  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 5), i64} %0, 13877  store i64 %3, ptr %outvl3878  ret <vscale x 2 x half> %23879}3880 3881define <vscale x 4 x half> @test_vlseg5ff_nxv4f16_triscv.vector.tuple_nxv8i8_5t(ptr %base, i64 %vl, ptr %outvl) {3882; CHECK-LABEL: test_vlseg5ff_nxv4f16_triscv.vector.tuple_nxv8i8_5t:3883; CHECK:       # %bb.0: # %entry3884; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma3885; CHECK-NEXT:    vlseg5e16ff.v v7, (a0)3886; CHECK-NEXT:    csrr a0, vl3887; CHECK-NEXT:    sd a0, 0(a2)3888; CHECK-NEXT:    ret3889entry:3890  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 5), i64} @llvm.riscv.vlseg5ff.triscv.vector.tuple_nxv8i8_5t(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) poison, ptr %base, i64 %vl, i64 4)3891  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 5), i64} %0, 03892  %2 = call <vscale x 4 x half> @llvm.riscv.tuple.extract.nxv4f16.triscv.vector.tuple_nxv8i8_5t(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) %1, i32 1)3893  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 5), i64} %0, 13894  store i64 %3, ptr %outvl3895  ret <vscale x 4 x half> %23896}3897 3898define <vscale x 4 x half> @test_vlseg5ff_mask_nxv4f16_triscv.vector.tuple_nxv8i8_5t(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) %val, ptr %base, i64 %vl, <vscale x 4 x i1> %mask, ptr %outvl) {3899; CHECK-LABEL: test_vlseg5ff_mask_nxv4f16_triscv.vector.tuple_nxv8i8_5t:3900; CHECK:       # %bb.0: # %entry3901; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, mu3902; CHECK-NEXT:    vmv1r.v v7, v83903; CHECK-NEXT:    vmv1r.v v8, v93904; CHECK-NEXT:    vmv1r.v v9, v103905; CHECK-NEXT:    vmv1r.v v10, v113906; CHECK-NEXT:    vmv1r.v v11, v123907; CHECK-NEXT:    vlseg5e16ff.v v7, (a0), v0.t3908; CHECK-NEXT:    csrr a0, vl3909; CHECK-NEXT:    sd a0, 0(a2)3910; CHECK-NEXT:    ret3911entry:3912  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 5), i64} @llvm.riscv.vlseg5ff.mask.triscv.vector.tuple_nxv8i8_5t.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) %val, ptr %base, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4)3913  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 5), i64} %0, 03914  %2 = call <vscale x 4 x half> @llvm.riscv.tuple.extract.nxv4f16.triscv.vector.tuple_nxv8i8_5t(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) %1, i32 1)3915  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 5), i64} %0, 13916  store i64 %3, ptr %outvl3917  ret <vscale x 4 x half> %23918}3919 3920define <vscale x 1 x half> @test_vlseg6ff_nxv1f16_triscv.vector.tuple_nxv2i8_6t(ptr %base, i64 %vl, ptr %outvl) {3921; CHECK-LABEL: test_vlseg6ff_nxv1f16_triscv.vector.tuple_nxv2i8_6t:3922; CHECK:       # %bb.0: # %entry3923; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma3924; CHECK-NEXT:    vlseg6e16ff.v v7, (a0)3925; CHECK-NEXT:    csrr a0, vl3926; CHECK-NEXT:    sd a0, 0(a2)3927; CHECK-NEXT:    ret3928entry:3929  %0 = tail call {target("riscv.vector.tuple", <vscale x 2 x i8>, 6), i64} @llvm.riscv.vlseg6ff.triscv.vector.tuple_nxv2i8_6t(target("riscv.vector.tuple", <vscale x 2 x i8>, 6) poison, ptr %base, i64 %vl, i64 4)3930  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 6), i64} %0, 03931  %2 = call <vscale x 1 x half> @llvm.riscv.tuple.extract.nxv1f16.triscv.vector.tuple_nxv2i8_6t(target("riscv.vector.tuple", <vscale x 2 x i8>, 6) %1, i32 1)3932  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 6), i64} %0, 13933  store i64 %3, ptr %outvl3934  ret <vscale x 1 x half> %23935}3936 3937define <vscale x 1 x half> @test_vlseg6ff_mask_nxv1f16_triscv.vector.tuple_nxv2i8_6t(target("riscv.vector.tuple", <vscale x 2 x i8>, 6) %val, ptr %base, i64 %vl, <vscale x 1 x i1> %mask, ptr %outvl) {3938; CHECK-LABEL: test_vlseg6ff_mask_nxv1f16_triscv.vector.tuple_nxv2i8_6t:3939; CHECK:       # %bb.0: # %entry3940; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, mu3941; CHECK-NEXT:    vmv1r.v v7, v83942; CHECK-NEXT:    vmv1r.v v8, v93943; CHECK-NEXT:    vmv1r.v v9, v103944; CHECK-NEXT:    vmv1r.v v10, v113945; CHECK-NEXT:    vmv1r.v v11, v123946; CHECK-NEXT:    vmv1r.v v12, v133947; CHECK-NEXT:    vlseg6e16ff.v v7, (a0), v0.t3948; CHECK-NEXT:    csrr a0, vl3949; CHECK-NEXT:    sd a0, 0(a2)3950; CHECK-NEXT:    ret3951entry:3952  %0 = tail call {target("riscv.vector.tuple", <vscale x 2 x i8>, 6), i64} @llvm.riscv.vlseg6ff.mask.triscv.vector.tuple_nxv2i8_6t.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 6) %val, ptr %base, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4)3953  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 6), i64} %0, 03954  %2 = call <vscale x 1 x half> @llvm.riscv.tuple.extract.nxv1f16.triscv.vector.tuple_nxv2i8_6t(target("riscv.vector.tuple", <vscale x 2 x i8>, 6) %1, i32 1)3955  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 6), i64} %0, 13956  store i64 %3, ptr %outvl3957  ret <vscale x 1 x half> %23958}3959 3960define <vscale x 2 x half> @test_vlseg6ff_nxv2f16_triscv.vector.tuple_nxv4i8_6t(ptr %base, i64 %vl, ptr %outvl) {3961; CHECK-LABEL: test_vlseg6ff_nxv2f16_triscv.vector.tuple_nxv4i8_6t:3962; CHECK:       # %bb.0: # %entry3963; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma3964; CHECK-NEXT:    vlseg6e16ff.v v7, (a0)3965; CHECK-NEXT:    csrr a0, vl3966; CHECK-NEXT:    sd a0, 0(a2)3967; CHECK-NEXT:    ret3968entry:3969  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 6), i64} @llvm.riscv.vlseg6ff.triscv.vector.tuple_nxv4i8_6t(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) poison, ptr %base, i64 %vl, i64 4)3970  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 6), i64} %0, 03971  %2 = call <vscale x 2 x half> @llvm.riscv.tuple.extract.nxv2f16.triscv.vector.tuple_nxv4i8_6t(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) %1, i32 1)3972  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 6), i64} %0, 13973  store i64 %3, ptr %outvl3974  ret <vscale x 2 x half> %23975}3976 3977define <vscale x 2 x half> @test_vlseg6ff_mask_nxv2f16_triscv.vector.tuple_nxv4i8_6t(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) %val, ptr %base, i64 %vl, <vscale x 2 x i1> %mask, ptr %outvl) {3978; CHECK-LABEL: test_vlseg6ff_mask_nxv2f16_triscv.vector.tuple_nxv4i8_6t:3979; CHECK:       # %bb.0: # %entry3980; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, mu3981; CHECK-NEXT:    vmv1r.v v7, v83982; CHECK-NEXT:    vmv1r.v v8, v93983; CHECK-NEXT:    vmv1r.v v9, v103984; CHECK-NEXT:    vmv1r.v v10, v113985; CHECK-NEXT:    vmv1r.v v11, v123986; CHECK-NEXT:    vmv1r.v v12, v133987; CHECK-NEXT:    vlseg6e16ff.v v7, (a0), v0.t3988; CHECK-NEXT:    csrr a0, vl3989; CHECK-NEXT:    sd a0, 0(a2)3990; CHECK-NEXT:    ret3991entry:3992  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 6), i64} @llvm.riscv.vlseg6ff.mask.triscv.vector.tuple_nxv4i8_6t.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) %val, ptr %base, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4)3993  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 6), i64} %0, 03994  %2 = call <vscale x 2 x half> @llvm.riscv.tuple.extract.nxv2f16.triscv.vector.tuple_nxv4i8_6t(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) %1, i32 1)3995  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 6), i64} %0, 13996  store i64 %3, ptr %outvl3997  ret <vscale x 2 x half> %23998}3999 4000define <vscale x 4 x half> @test_vlseg6ff_nxv4f16_triscv.vector.tuple_nxv8i8_6t(ptr %base, i64 %vl, ptr %outvl) {4001; CHECK-LABEL: test_vlseg6ff_nxv4f16_triscv.vector.tuple_nxv8i8_6t:4002; CHECK:       # %bb.0: # %entry4003; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma4004; CHECK-NEXT:    vlseg6e16ff.v v7, (a0)4005; CHECK-NEXT:    csrr a0, vl4006; CHECK-NEXT:    sd a0, 0(a2)4007; CHECK-NEXT:    ret4008entry:4009  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 6), i64} @llvm.riscv.vlseg6ff.triscv.vector.tuple_nxv8i8_6t(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) poison, ptr %base, i64 %vl, i64 4)4010  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 6), i64} %0, 04011  %2 = call <vscale x 4 x half> @llvm.riscv.tuple.extract.nxv4f16.triscv.vector.tuple_nxv8i8_6t(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) %1, i32 1)4012  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 6), i64} %0, 14013  store i64 %3, ptr %outvl4014  ret <vscale x 4 x half> %24015}4016 4017define <vscale x 4 x half> @test_vlseg6ff_mask_nxv4f16_triscv.vector.tuple_nxv8i8_6t(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) %val, ptr %base, i64 %vl, <vscale x 4 x i1> %mask, ptr %outvl) {4018; CHECK-LABEL: test_vlseg6ff_mask_nxv4f16_triscv.vector.tuple_nxv8i8_6t:4019; CHECK:       # %bb.0: # %entry4020; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, mu4021; CHECK-NEXT:    vmv1r.v v7, v84022; CHECK-NEXT:    vmv1r.v v8, v94023; CHECK-NEXT:    vmv1r.v v9, v104024; CHECK-NEXT:    vmv1r.v v10, v114025; CHECK-NEXT:    vmv1r.v v11, v124026; CHECK-NEXT:    vmv1r.v v12, v134027; CHECK-NEXT:    vlseg6e16ff.v v7, (a0), v0.t4028; CHECK-NEXT:    csrr a0, vl4029; CHECK-NEXT:    sd a0, 0(a2)4030; CHECK-NEXT:    ret4031entry:4032  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 6), i64} @llvm.riscv.vlseg6ff.mask.triscv.vector.tuple_nxv8i8_6t.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) %val, ptr %base, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4)4033  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 6), i64} %0, 04034  %2 = call <vscale x 4 x half> @llvm.riscv.tuple.extract.nxv4f16.triscv.vector.tuple_nxv8i8_6t(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) %1, i32 1)4035  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 6), i64} %0, 14036  store i64 %3, ptr %outvl4037  ret <vscale x 4 x half> %24038}4039 4040define <vscale x 1 x half> @test_vlseg7ff_nxv1f16_triscv.vector.tuple_nxv2i8_7t(ptr %base, i64 %vl, ptr %outvl) {4041; CHECK-LABEL: test_vlseg7ff_nxv1f16_triscv.vector.tuple_nxv2i8_7t:4042; CHECK:       # %bb.0: # %entry4043; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma4044; CHECK-NEXT:    vlseg7e16ff.v v7, (a0)4045; CHECK-NEXT:    csrr a0, vl4046; CHECK-NEXT:    sd a0, 0(a2)4047; CHECK-NEXT:    ret4048entry:4049  %0 = tail call {target("riscv.vector.tuple", <vscale x 2 x i8>, 7), i64} @llvm.riscv.vlseg7ff.triscv.vector.tuple_nxv2i8_7t(target("riscv.vector.tuple", <vscale x 2 x i8>, 7) poison, ptr %base, i64 %vl, i64 4)4050  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 7), i64} %0, 04051  %2 = call <vscale x 1 x half> @llvm.riscv.tuple.extract.nxv1f16.triscv.vector.tuple_nxv2i8_7t(target("riscv.vector.tuple", <vscale x 2 x i8>, 7) %1, i32 1)4052  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 7), i64} %0, 14053  store i64 %3, ptr %outvl4054  ret <vscale x 1 x half> %24055}4056 4057define <vscale x 1 x half> @test_vlseg7ff_mask_nxv1f16_triscv.vector.tuple_nxv2i8_7t(target("riscv.vector.tuple", <vscale x 2 x i8>, 7) %val, ptr %base, i64 %vl, <vscale x 1 x i1> %mask, ptr %outvl) {4058; CHECK-LABEL: test_vlseg7ff_mask_nxv1f16_triscv.vector.tuple_nxv2i8_7t:4059; CHECK:       # %bb.0: # %entry4060; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, mu4061; CHECK-NEXT:    vmv1r.v v7, v84062; CHECK-NEXT:    vmv1r.v v8, v94063; CHECK-NEXT:    vmv1r.v v9, v104064; CHECK-NEXT:    vmv1r.v v10, v114065; CHECK-NEXT:    vmv1r.v v11, v124066; CHECK-NEXT:    vmv1r.v v12, v134067; CHECK-NEXT:    vmv1r.v v13, v144068; CHECK-NEXT:    vlseg7e16ff.v v7, (a0), v0.t4069; CHECK-NEXT:    csrr a0, vl4070; CHECK-NEXT:    sd a0, 0(a2)4071; CHECK-NEXT:    ret4072entry:4073  %0 = tail call {target("riscv.vector.tuple", <vscale x 2 x i8>, 7), i64} @llvm.riscv.vlseg7ff.mask.triscv.vector.tuple_nxv2i8_7t.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 7) %val, ptr %base, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4)4074  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 7), i64} %0, 04075  %2 = call <vscale x 1 x half> @llvm.riscv.tuple.extract.nxv1f16.triscv.vector.tuple_nxv2i8_7t(target("riscv.vector.tuple", <vscale x 2 x i8>, 7) %1, i32 1)4076  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 7), i64} %0, 14077  store i64 %3, ptr %outvl4078  ret <vscale x 1 x half> %24079}4080 4081define <vscale x 2 x half> @test_vlseg7ff_nxv2f16_triscv.vector.tuple_nxv4i8_7t(ptr %base, i64 %vl, ptr %outvl) {4082; CHECK-LABEL: test_vlseg7ff_nxv2f16_triscv.vector.tuple_nxv4i8_7t:4083; CHECK:       # %bb.0: # %entry4084; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma4085; CHECK-NEXT:    vlseg7e16ff.v v7, (a0)4086; CHECK-NEXT:    csrr a0, vl4087; CHECK-NEXT:    sd a0, 0(a2)4088; CHECK-NEXT:    ret4089entry:4090  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 7), i64} @llvm.riscv.vlseg7ff.triscv.vector.tuple_nxv4i8_7t(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) poison, ptr %base, i64 %vl, i64 4)4091  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 7), i64} %0, 04092  %2 = call <vscale x 2 x half> @llvm.riscv.tuple.extract.nxv2f16.triscv.vector.tuple_nxv4i8_7t(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) %1, i32 1)4093  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 7), i64} %0, 14094  store i64 %3, ptr %outvl4095  ret <vscale x 2 x half> %24096}4097 4098define <vscale x 2 x half> @test_vlseg7ff_mask_nxv2f16_triscv.vector.tuple_nxv4i8_7t(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) %val, ptr %base, i64 %vl, <vscale x 2 x i1> %mask, ptr %outvl) {4099; CHECK-LABEL: test_vlseg7ff_mask_nxv2f16_triscv.vector.tuple_nxv4i8_7t:4100; CHECK:       # %bb.0: # %entry4101; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, mu4102; CHECK-NEXT:    vmv1r.v v7, v84103; CHECK-NEXT:    vmv1r.v v8, v94104; CHECK-NEXT:    vmv1r.v v9, v104105; CHECK-NEXT:    vmv1r.v v10, v114106; CHECK-NEXT:    vmv1r.v v11, v124107; CHECK-NEXT:    vmv1r.v v12, v134108; CHECK-NEXT:    vmv1r.v v13, v144109; CHECK-NEXT:    vlseg7e16ff.v v7, (a0), v0.t4110; CHECK-NEXT:    csrr a0, vl4111; CHECK-NEXT:    sd a0, 0(a2)4112; CHECK-NEXT:    ret4113entry:4114  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 7), i64} @llvm.riscv.vlseg7ff.mask.triscv.vector.tuple_nxv4i8_7t.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) %val, ptr %base, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4)4115  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 7), i64} %0, 04116  %2 = call <vscale x 2 x half> @llvm.riscv.tuple.extract.nxv2f16.triscv.vector.tuple_nxv4i8_7t(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) %1, i32 1)4117  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 7), i64} %0, 14118  store i64 %3, ptr %outvl4119  ret <vscale x 2 x half> %24120}4121 4122define <vscale x 4 x half> @test_vlseg7ff_nxv4f16_triscv.vector.tuple_nxv8i8_7t(ptr %base, i64 %vl, ptr %outvl) {4123; CHECK-LABEL: test_vlseg7ff_nxv4f16_triscv.vector.tuple_nxv8i8_7t:4124; CHECK:       # %bb.0: # %entry4125; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma4126; CHECK-NEXT:    vlseg7e16ff.v v7, (a0)4127; CHECK-NEXT:    csrr a0, vl4128; CHECK-NEXT:    sd a0, 0(a2)4129; CHECK-NEXT:    ret4130entry:4131  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 7), i64} @llvm.riscv.vlseg7ff.triscv.vector.tuple_nxv8i8_7t(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) poison, ptr %base, i64 %vl, i64 4)4132  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 7), i64} %0, 04133  %2 = call <vscale x 4 x half> @llvm.riscv.tuple.extract.nxv4f16.triscv.vector.tuple_nxv8i8_7t(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) %1, i32 1)4134  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 7), i64} %0, 14135  store i64 %3, ptr %outvl4136  ret <vscale x 4 x half> %24137}4138 4139define <vscale x 4 x half> @test_vlseg7ff_mask_nxv4f16_triscv.vector.tuple_nxv8i8_7t(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) %val, ptr %base, i64 %vl, <vscale x 4 x i1> %mask, ptr %outvl) {4140; CHECK-LABEL: test_vlseg7ff_mask_nxv4f16_triscv.vector.tuple_nxv8i8_7t:4141; CHECK:       # %bb.0: # %entry4142; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, mu4143; CHECK-NEXT:    vmv1r.v v7, v84144; CHECK-NEXT:    vmv1r.v v8, v94145; CHECK-NEXT:    vmv1r.v v9, v104146; CHECK-NEXT:    vmv1r.v v10, v114147; CHECK-NEXT:    vmv1r.v v11, v124148; CHECK-NEXT:    vmv1r.v v12, v134149; CHECK-NEXT:    vmv1r.v v13, v144150; CHECK-NEXT:    vlseg7e16ff.v v7, (a0), v0.t4151; CHECK-NEXT:    csrr a0, vl4152; CHECK-NEXT:    sd a0, 0(a2)4153; CHECK-NEXT:    ret4154entry:4155  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 7), i64} @llvm.riscv.vlseg7ff.mask.triscv.vector.tuple_nxv8i8_7t.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) %val, ptr %base, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4)4156  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 7), i64} %0, 04157  %2 = call <vscale x 4 x half> @llvm.riscv.tuple.extract.nxv4f16.triscv.vector.tuple_nxv8i8_7t(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) %1, i32 1)4158  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 7), i64} %0, 14159  store i64 %3, ptr %outvl4160  ret <vscale x 4 x half> %24161}4162 4163define <vscale x 1 x half> @test_vlseg8ff_nxv1f16_triscv.vector.tuple_nxv2i8_8t(ptr %base, i64 %vl, ptr %outvl) {4164; CHECK-LABEL: test_vlseg8ff_nxv1f16_triscv.vector.tuple_nxv2i8_8t:4165; CHECK:       # %bb.0: # %entry4166; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma4167; CHECK-NEXT:    vlseg8e16ff.v v7, (a0)4168; CHECK-NEXT:    csrr a0, vl4169; CHECK-NEXT:    sd a0, 0(a2)4170; CHECK-NEXT:    ret4171entry:4172  %0 = tail call {target("riscv.vector.tuple", <vscale x 2 x i8>, 8), i64} @llvm.riscv.vlseg8ff.triscv.vector.tuple_nxv2i8_8t(target("riscv.vector.tuple", <vscale x 2 x i8>, 8) poison, ptr %base, i64 %vl, i64 4)4173  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 8), i64} %0, 04174  %2 = call <vscale x 1 x half> @llvm.riscv.tuple.extract.nxv1f16.triscv.vector.tuple_nxv2i8_8t(target("riscv.vector.tuple", <vscale x 2 x i8>, 8) %1, i32 1)4175  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 8), i64} %0, 14176  store i64 %3, ptr %outvl4177  ret <vscale x 1 x half> %24178}4179 4180define <vscale x 1 x half> @test_vlseg8ff_mask_nxv1f16_triscv.vector.tuple_nxv2i8_8t(target("riscv.vector.tuple", <vscale x 2 x i8>, 8) %val, ptr %base, i64 %vl, <vscale x 1 x i1> %mask, ptr %outvl) {4181; CHECK-LABEL: test_vlseg8ff_mask_nxv1f16_triscv.vector.tuple_nxv2i8_8t:4182; CHECK:       # %bb.0: # %entry4183; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, mu4184; CHECK-NEXT:    vmv1r.v v7, v84185; CHECK-NEXT:    vmv1r.v v8, v94186; CHECK-NEXT:    vmv1r.v v9, v104187; CHECK-NEXT:    vmv1r.v v10, v114188; CHECK-NEXT:    vmv1r.v v11, v124189; CHECK-NEXT:    vmv1r.v v12, v134190; CHECK-NEXT:    vmv1r.v v13, v144191; CHECK-NEXT:    vmv1r.v v14, v154192; CHECK-NEXT:    vlseg8e16ff.v v7, (a0), v0.t4193; CHECK-NEXT:    csrr a0, vl4194; CHECK-NEXT:    sd a0, 0(a2)4195; CHECK-NEXT:    ret4196entry:4197  %0 = tail call {target("riscv.vector.tuple", <vscale x 2 x i8>, 8), i64} @llvm.riscv.vlseg8ff.mask.triscv.vector.tuple_nxv2i8_8t.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 8) %val, ptr %base, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4)4198  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 8), i64} %0, 04199  %2 = call <vscale x 1 x half> @llvm.riscv.tuple.extract.nxv1f16.triscv.vector.tuple_nxv2i8_8t(target("riscv.vector.tuple", <vscale x 2 x i8>, 8) %1, i32 1)4200  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 8), i64} %0, 14201  store i64 %3, ptr %outvl4202  ret <vscale x 1 x half> %24203}4204 4205define <vscale x 2 x half> @test_vlseg8ff_nxv2f16_triscv.vector.tuple_nxv4i8_8t(ptr %base, i64 %vl, ptr %outvl) {4206; CHECK-LABEL: test_vlseg8ff_nxv2f16_triscv.vector.tuple_nxv4i8_8t:4207; CHECK:       # %bb.0: # %entry4208; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma4209; CHECK-NEXT:    vlseg8e16ff.v v7, (a0)4210; CHECK-NEXT:    csrr a0, vl4211; CHECK-NEXT:    sd a0, 0(a2)4212; CHECK-NEXT:    ret4213entry:4214  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 8), i64} @llvm.riscv.vlseg8ff.triscv.vector.tuple_nxv4i8_8t(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) poison, ptr %base, i64 %vl, i64 4)4215  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 8), i64} %0, 04216  %2 = call <vscale x 2 x half> @llvm.riscv.tuple.extract.nxv2f16.triscv.vector.tuple_nxv4i8_8t(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) %1, i32 1)4217  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 8), i64} %0, 14218  store i64 %3, ptr %outvl4219  ret <vscale x 2 x half> %24220}4221 4222define <vscale x 2 x half> @test_vlseg8ff_mask_nxv2f16_triscv.vector.tuple_nxv4i8_8t(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) %val, ptr %base, i64 %vl, <vscale x 2 x i1> %mask, ptr %outvl) {4223; CHECK-LABEL: test_vlseg8ff_mask_nxv2f16_triscv.vector.tuple_nxv4i8_8t:4224; CHECK:       # %bb.0: # %entry4225; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, mu4226; CHECK-NEXT:    vmv1r.v v7, v84227; CHECK-NEXT:    vmv1r.v v8, v94228; CHECK-NEXT:    vmv1r.v v9, v104229; CHECK-NEXT:    vmv1r.v v10, v114230; CHECK-NEXT:    vmv1r.v v11, v124231; CHECK-NEXT:    vmv1r.v v12, v134232; CHECK-NEXT:    vmv1r.v v13, v144233; CHECK-NEXT:    vmv1r.v v14, v154234; CHECK-NEXT:    vlseg8e16ff.v v7, (a0), v0.t4235; CHECK-NEXT:    csrr a0, vl4236; CHECK-NEXT:    sd a0, 0(a2)4237; CHECK-NEXT:    ret4238entry:4239  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 8), i64} @llvm.riscv.vlseg8ff.mask.triscv.vector.tuple_nxv4i8_8t.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) %val, ptr %base, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4)4240  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 8), i64} %0, 04241  %2 = call <vscale x 2 x half> @llvm.riscv.tuple.extract.nxv2f16.triscv.vector.tuple_nxv4i8_8t(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) %1, i32 1)4242  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 8), i64} %0, 14243  store i64 %3, ptr %outvl4244  ret <vscale x 2 x half> %24245}4246 4247define <vscale x 4 x half> @test_vlseg8ff_nxv4f16_triscv.vector.tuple_nxv8i8_8t(ptr %base, i64 %vl, ptr %outvl) {4248; CHECK-LABEL: test_vlseg8ff_nxv4f16_triscv.vector.tuple_nxv8i8_8t:4249; CHECK:       # %bb.0: # %entry4250; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma4251; CHECK-NEXT:    vlseg8e16ff.v v7, (a0)4252; CHECK-NEXT:    csrr a0, vl4253; CHECK-NEXT:    sd a0, 0(a2)4254; CHECK-NEXT:    ret4255entry:4256  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 8), i64} @llvm.riscv.vlseg8ff.triscv.vector.tuple_nxv8i8_8t(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) poison, ptr %base, i64 %vl, i64 4)4257  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 8), i64} %0, 04258  %2 = call <vscale x 4 x half> @llvm.riscv.tuple.extract.nxv4f16.triscv.vector.tuple_nxv8i8_8t(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) %1, i32 1)4259  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 8), i64} %0, 14260  store i64 %3, ptr %outvl4261  ret <vscale x 4 x half> %24262}4263 4264define <vscale x 4 x half> @test_vlseg8ff_mask_nxv4f16_triscv.vector.tuple_nxv8i8_8t(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) %val, ptr %base, i64 %vl, <vscale x 4 x i1> %mask, ptr %outvl) {4265; CHECK-LABEL: test_vlseg8ff_mask_nxv4f16_triscv.vector.tuple_nxv8i8_8t:4266; CHECK:       # %bb.0: # %entry4267; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, mu4268; CHECK-NEXT:    vmv1r.v v7, v84269; CHECK-NEXT:    vmv1r.v v8, v94270; CHECK-NEXT:    vmv1r.v v9, v104271; CHECK-NEXT:    vmv1r.v v10, v114272; CHECK-NEXT:    vmv1r.v v11, v124273; CHECK-NEXT:    vmv1r.v v12, v134274; CHECK-NEXT:    vmv1r.v v13, v144275; CHECK-NEXT:    vmv1r.v v14, v154276; CHECK-NEXT:    vlseg8e16ff.v v7, (a0), v0.t4277; CHECK-NEXT:    csrr a0, vl4278; CHECK-NEXT:    sd a0, 0(a2)4279; CHECK-NEXT:    ret4280entry:4281  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 8), i64} @llvm.riscv.vlseg8ff.mask.triscv.vector.tuple_nxv8i8_8t.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) %val, ptr %base, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4)4282  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 8), i64} %0, 04283  %2 = call <vscale x 4 x half> @llvm.riscv.tuple.extract.nxv4f16.triscv.vector.tuple_nxv8i8_8t(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) %1, i32 1)4284  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 8), i64} %0, 14285  store i64 %3, ptr %outvl4286  ret <vscale x 4 x half> %24287}4288 4289define <vscale x 1 x float> @test_vlseg2ff_nxv1f32_triscv.vector.tuple_nxv4i8_2t(ptr %base, i64 %vl, ptr %outvl) {4290; CHECK-LABEL: test_vlseg2ff_nxv1f32_triscv.vector.tuple_nxv4i8_2t:4291; CHECK:       # %bb.0: # %entry4292; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma4293; CHECK-NEXT:    vlseg2e32ff.v v7, (a0)4294; CHECK-NEXT:    csrr a0, vl4295; CHECK-NEXT:    sd a0, 0(a2)4296; CHECK-NEXT:    ret4297entry:4298  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 2), i64} @llvm.riscv.vlseg2ff.triscv.vector.tuple_nxv4i8_2t(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) poison, ptr %base, i64 %vl, i64 5)4299  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 2), i64} %0, 04300  %2 = call <vscale x 1 x float> @llvm.riscv.tuple.extract.nxv1f32.triscv.vector.tuple_nxv4i8_2t(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) %1, i32 1)4301  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 2), i64} %0, 14302  store i64 %3, ptr %outvl4303  ret <vscale x 1 x float> %24304}4305 4306define <vscale x 1 x float> @test_vlseg2ff_mask_nxv1f32_triscv.vector.tuple_nxv4i8_2t(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) %val, ptr %base, i64 %vl, <vscale x 1 x i1> %mask, ptr %outvl) {4307; CHECK-LABEL: test_vlseg2ff_mask_nxv1f32_triscv.vector.tuple_nxv4i8_2t:4308; CHECK:       # %bb.0: # %entry4309; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, mu4310; CHECK-NEXT:    vmv1r.v v7, v84311; CHECK-NEXT:    vmv1r.v v8, v94312; CHECK-NEXT:    vlseg2e32ff.v v7, (a0), v0.t4313; CHECK-NEXT:    csrr a0, vl4314; CHECK-NEXT:    sd a0, 0(a2)4315; CHECK-NEXT:    ret4316entry:4317  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 2), i64} @llvm.riscv.vlseg2ff.mask.triscv.vector.tuple_nxv4i8_2t.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) %val, ptr %base, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5)4318  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 2), i64} %0, 04319  %2 = call <vscale x 1 x float> @llvm.riscv.tuple.extract.nxv1f32.triscv.vector.tuple_nxv4i8_2t(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) %1, i32 1)4320  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 2), i64} %0, 14321  store i64 %3, ptr %outvl4322  ret <vscale x 1 x float> %24323}4324 4325define <vscale x 2 x float> @test_vlseg2ff_nxv2f32_triscv.vector.tuple_nxv8i8_2t(ptr %base, i64 %vl, ptr %outvl) {4326; CHECK-LABEL: test_vlseg2ff_nxv2f32_triscv.vector.tuple_nxv8i8_2t:4327; CHECK:       # %bb.0: # %entry4328; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma4329; CHECK-NEXT:    vlseg2e32ff.v v7, (a0)4330; CHECK-NEXT:    csrr a0, vl4331; CHECK-NEXT:    sd a0, 0(a2)4332; CHECK-NEXT:    ret4333entry:4334  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 2), i64} @llvm.riscv.vlseg2ff.triscv.vector.tuple_nxv8i8_2t(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) poison, ptr %base, i64 %vl, i64 5)4335  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 2), i64} %0, 04336  %2 = call <vscale x 2 x float> @llvm.riscv.tuple.extract.nxv2f32.triscv.vector.tuple_nxv8i8_2t(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) %1, i32 1)4337  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 2), i64} %0, 14338  store i64 %3, ptr %outvl4339  ret <vscale x 2 x float> %24340}4341 4342define <vscale x 2 x float> @test_vlseg2ff_mask_nxv2f32_triscv.vector.tuple_nxv8i8_2t(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) %val, ptr %base, i64 %vl, <vscale x 2 x i1> %mask, ptr %outvl) {4343; CHECK-LABEL: test_vlseg2ff_mask_nxv2f32_triscv.vector.tuple_nxv8i8_2t:4344; CHECK:       # %bb.0: # %entry4345; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, mu4346; CHECK-NEXT:    vmv1r.v v7, v84347; CHECK-NEXT:    vmv1r.v v8, v94348; CHECK-NEXT:    vlseg2e32ff.v v7, (a0), v0.t4349; CHECK-NEXT:    csrr a0, vl4350; CHECK-NEXT:    sd a0, 0(a2)4351; CHECK-NEXT:    ret4352entry:4353  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 2), i64} @llvm.riscv.vlseg2ff.mask.triscv.vector.tuple_nxv8i8_2t.nxv2i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) %val, ptr %base, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5)4354  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 2), i64} %0, 04355  %2 = call <vscale x 2 x float> @llvm.riscv.tuple.extract.nxv2f32.triscv.vector.tuple_nxv8i8_2t(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) %1, i32 1)4356  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 2), i64} %0, 14357  store i64 %3, ptr %outvl4358  ret <vscale x 2 x float> %24359}4360 4361define <vscale x 4 x float> @test_vlseg2ff_nxv4f32_triscv.vector.tuple_nxv16i8_2t(ptr %base, i64 %vl, ptr %outvl) {4362; CHECK-LABEL: test_vlseg2ff_nxv4f32_triscv.vector.tuple_nxv16i8_2t:4363; CHECK:       # %bb.0: # %entry4364; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma4365; CHECK-NEXT:    vlseg2e32ff.v v6, (a0)4366; CHECK-NEXT:    csrr a0, vl4367; CHECK-NEXT:    sd a0, 0(a2)4368; CHECK-NEXT:    ret4369entry:4370  %0 = tail call {target("riscv.vector.tuple", <vscale x 16 x i8>, 2), i64} @llvm.riscv.vlseg2ff.triscv.vector.tuple_nxv16i8_2t(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) poison, ptr %base, i64 %vl, i64 5)4371  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 2), i64} %0, 04372  %2 = call <vscale x 4 x float> @llvm.riscv.tuple.extract.nxv4f32.triscv.vector.tuple_nxv16i8_2t(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) %1, i32 1)4373  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 2), i64} %0, 14374  store i64 %3, ptr %outvl4375  ret <vscale x 4 x float> %24376}4377 4378define <vscale x 4 x float> @test_vlseg2ff_mask_nxv4f32_triscv.vector.tuple_nxv16i8_2t(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) %val, ptr %base, i64 %vl, <vscale x 4 x i1> %mask, ptr %outvl) {4379; CHECK-LABEL: test_vlseg2ff_mask_nxv4f32_triscv.vector.tuple_nxv16i8_2t:4380; CHECK:       # %bb.0: # %entry4381; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, mu4382; CHECK-NEXT:    vmv2r.v v6, v84383; CHECK-NEXT:    vmv2r.v v8, v104384; CHECK-NEXT:    vlseg2e32ff.v v6, (a0), v0.t4385; CHECK-NEXT:    csrr a0, vl4386; CHECK-NEXT:    sd a0, 0(a2)4387; CHECK-NEXT:    ret4388entry:4389  %0 = tail call {target("riscv.vector.tuple", <vscale x 16 x i8>, 2), i64} @llvm.riscv.vlseg2ff.mask.triscv.vector.tuple_nxv16i8_2t.nxv4i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) %val, ptr %base, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 5)4390  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 2), i64} %0, 04391  %2 = call <vscale x 4 x float> @llvm.riscv.tuple.extract.nxv4f32.triscv.vector.tuple_nxv16i8_2t(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) %1, i32 1)4392  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 2), i64} %0, 14393  store i64 %3, ptr %outvl4394  ret <vscale x 4 x float> %24395}4396 4397define <vscale x 8 x float> @test_vlseg2ff_nxv8f32_triscv.vector.tuple_nxv32i8_2t(ptr %base, i64 %vl, ptr %outvl) {4398; CHECK-LABEL: test_vlseg2ff_nxv8f32_triscv.vector.tuple_nxv32i8_2t:4399; CHECK:       # %bb.0: # %entry4400; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma4401; CHECK-NEXT:    vlseg2e32ff.v v4, (a0)4402; CHECK-NEXT:    csrr a0, vl4403; CHECK-NEXT:    sd a0, 0(a2)4404; CHECK-NEXT:    ret4405entry:4406  %0 = tail call {target("riscv.vector.tuple", <vscale x 32 x i8>, 2), i64} @llvm.riscv.vlseg2ff.triscv.vector.tuple_nxv32i8_2t(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) poison, ptr %base, i64 %vl, i64 5)4407  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 32 x i8>, 2), i64} %0, 04408  %2 = call <vscale x 8 x float> @llvm.riscv.tuple.extract.nxv8f32.triscv.vector.tuple_nxv32i8_2t(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) %1, i32 1)4409  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 32 x i8>, 2), i64} %0, 14410  store i64 %3, ptr %outvl4411  ret <vscale x 8 x float> %24412}4413 4414define <vscale x 8 x float> @test_vlseg2ff_mask_nxv8f32_triscv.vector.tuple_nxv32i8_2t(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) %val, ptr %base, i64 %vl, <vscale x 8 x i1> %mask, ptr %outvl) {4415; CHECK-LABEL: test_vlseg2ff_mask_nxv8f32_triscv.vector.tuple_nxv32i8_2t:4416; CHECK:       # %bb.0: # %entry4417; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, mu4418; CHECK-NEXT:    vmv4r.v v4, v84419; CHECK-NEXT:    vmv4r.v v8, v124420; CHECK-NEXT:    vlseg2e32ff.v v4, (a0), v0.t4421; CHECK-NEXT:    csrr a0, vl4422; CHECK-NEXT:    sd a0, 0(a2)4423; CHECK-NEXT:    ret4424entry:4425  %0 = tail call {target("riscv.vector.tuple", <vscale x 32 x i8>, 2), i64} @llvm.riscv.vlseg2ff.mask.triscv.vector.tuple_nxv32i8_2t.nxv8i1(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) %val, ptr %base, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 5)4426  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 32 x i8>, 2), i64} %0, 04427  %2 = call <vscale x 8 x float> @llvm.riscv.tuple.extract.nxv8f32.triscv.vector.tuple_nxv32i8_2t(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) %1, i32 1)4428  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 32 x i8>, 2), i64} %0, 14429  store i64 %3, ptr %outvl4430  ret <vscale x 8 x float> %24431}4432 4433define <vscale x 1 x float> @test_vlseg3ff_nxv1f32_triscv.vector.tuple_nxv4i8_3t(ptr %base, i64 %vl, ptr %outvl) {4434; CHECK-LABEL: test_vlseg3ff_nxv1f32_triscv.vector.tuple_nxv4i8_3t:4435; CHECK:       # %bb.0: # %entry4436; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma4437; CHECK-NEXT:    vlseg3e32ff.v v7, (a0)4438; CHECK-NEXT:    csrr a0, vl4439; CHECK-NEXT:    sd a0, 0(a2)4440; CHECK-NEXT:    ret4441entry:4442  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 3), i64} @llvm.riscv.vlseg3ff.triscv.vector.tuple_nxv4i8_3t(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) poison, ptr %base, i64 %vl, i64 5)4443  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 3), i64} %0, 04444  %2 = call <vscale x 1 x float> @llvm.riscv.tuple.extract.nxv1f32.triscv.vector.tuple_nxv4i8_3t(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) %1, i32 1)4445  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 3), i64} %0, 14446  store i64 %3, ptr %outvl4447  ret <vscale x 1 x float> %24448}4449 4450define <vscale x 1 x float> @test_vlseg3ff_mask_nxv1f32_triscv.vector.tuple_nxv4i8_3t(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) %val, ptr %base, i64 %vl, <vscale x 1 x i1> %mask, ptr %outvl) {4451; CHECK-LABEL: test_vlseg3ff_mask_nxv1f32_triscv.vector.tuple_nxv4i8_3t:4452; CHECK:       # %bb.0: # %entry4453; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, mu4454; CHECK-NEXT:    vmv1r.v v7, v84455; CHECK-NEXT:    vmv1r.v v8, v94456; CHECK-NEXT:    vmv1r.v v9, v104457; CHECK-NEXT:    vlseg3e32ff.v v7, (a0), v0.t4458; CHECK-NEXT:    csrr a0, vl4459; CHECK-NEXT:    sd a0, 0(a2)4460; CHECK-NEXT:    ret4461entry:4462  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 3), i64} @llvm.riscv.vlseg3ff.mask.triscv.vector.tuple_nxv4i8_3t.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) %val, ptr %base, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5)4463  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 3), i64} %0, 04464  %2 = call <vscale x 1 x float> @llvm.riscv.tuple.extract.nxv1f32.triscv.vector.tuple_nxv4i8_3t(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) %1, i32 1)4465  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 3), i64} %0, 14466  store i64 %3, ptr %outvl4467  ret <vscale x 1 x float> %24468}4469 4470define <vscale x 2 x float> @test_vlseg3ff_nxv2f32_triscv.vector.tuple_nxv8i8_3t(ptr %base, i64 %vl, ptr %outvl) {4471; CHECK-LABEL: test_vlseg3ff_nxv2f32_triscv.vector.tuple_nxv8i8_3t:4472; CHECK:       # %bb.0: # %entry4473; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma4474; CHECK-NEXT:    vlseg3e32ff.v v7, (a0)4475; CHECK-NEXT:    csrr a0, vl4476; CHECK-NEXT:    sd a0, 0(a2)4477; CHECK-NEXT:    ret4478entry:4479  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 3), i64} @llvm.riscv.vlseg3ff.triscv.vector.tuple_nxv8i8_3t(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) poison, ptr %base, i64 %vl, i64 5)4480  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 3), i64} %0, 04481  %2 = call <vscale x 2 x float> @llvm.riscv.tuple.extract.nxv2f32.triscv.vector.tuple_nxv8i8_3t(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) %1, i32 1)4482  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 3), i64} %0, 14483  store i64 %3, ptr %outvl4484  ret <vscale x 2 x float> %24485}4486 4487define <vscale x 2 x float> @test_vlseg3ff_mask_nxv2f32_triscv.vector.tuple_nxv8i8_3t(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) %val, ptr %base, i64 %vl, <vscale x 2 x i1> %mask, ptr %outvl) {4488; CHECK-LABEL: test_vlseg3ff_mask_nxv2f32_triscv.vector.tuple_nxv8i8_3t:4489; CHECK:       # %bb.0: # %entry4490; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, mu4491; CHECK-NEXT:    vmv1r.v v7, v84492; CHECK-NEXT:    vmv1r.v v8, v94493; CHECK-NEXT:    vmv1r.v v9, v104494; CHECK-NEXT:    vlseg3e32ff.v v7, (a0), v0.t4495; CHECK-NEXT:    csrr a0, vl4496; CHECK-NEXT:    sd a0, 0(a2)4497; CHECK-NEXT:    ret4498entry:4499  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 3), i64} @llvm.riscv.vlseg3ff.mask.triscv.vector.tuple_nxv8i8_3t.nxv2i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) %val, ptr %base, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5)4500  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 3), i64} %0, 04501  %2 = call <vscale x 2 x float> @llvm.riscv.tuple.extract.nxv2f32.triscv.vector.tuple_nxv8i8_3t(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) %1, i32 1)4502  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 3), i64} %0, 14503  store i64 %3, ptr %outvl4504  ret <vscale x 2 x float> %24505}4506 4507define <vscale x 4 x float> @test_vlseg3ff_nxv4f32_triscv.vector.tuple_nxv16i8_3t(ptr %base, i64 %vl, ptr %outvl) {4508; CHECK-LABEL: test_vlseg3ff_nxv4f32_triscv.vector.tuple_nxv16i8_3t:4509; CHECK:       # %bb.0: # %entry4510; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma4511; CHECK-NEXT:    vlseg3e32ff.v v6, (a0)4512; CHECK-NEXT:    csrr a0, vl4513; CHECK-NEXT:    sd a0, 0(a2)4514; CHECK-NEXT:    ret4515entry:4516  %0 = tail call {target("riscv.vector.tuple", <vscale x 16 x i8>, 3), i64} @llvm.riscv.vlseg3ff.triscv.vector.tuple_nxv16i8_3t(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) poison, ptr %base, i64 %vl, i64 5)4517  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 3), i64} %0, 04518  %2 = call <vscale x 4 x float> @llvm.riscv.tuple.extract.nxv4f32.triscv.vector.tuple_nxv16i8_3t(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) %1, i32 1)4519  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 3), i64} %0, 14520  store i64 %3, ptr %outvl4521  ret <vscale x 4 x float> %24522}4523 4524define <vscale x 4 x float> @test_vlseg3ff_mask_nxv4f32_triscv.vector.tuple_nxv16i8_3t(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) %val, ptr %base, i64 %vl, <vscale x 4 x i1> %mask, ptr %outvl) {4525; CHECK-LABEL: test_vlseg3ff_mask_nxv4f32_triscv.vector.tuple_nxv16i8_3t:4526; CHECK:       # %bb.0: # %entry4527; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, mu4528; CHECK-NEXT:    vmv2r.v v6, v84529; CHECK-NEXT:    vmv2r.v v8, v104530; CHECK-NEXT:    vmv2r.v v10, v124531; CHECK-NEXT:    vlseg3e32ff.v v6, (a0), v0.t4532; CHECK-NEXT:    csrr a0, vl4533; CHECK-NEXT:    sd a0, 0(a2)4534; CHECK-NEXT:    ret4535entry:4536  %0 = tail call {target("riscv.vector.tuple", <vscale x 16 x i8>, 3), i64} @llvm.riscv.vlseg3ff.mask.triscv.vector.tuple_nxv16i8_3t.nxv4i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) %val, ptr %base, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 5)4537  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 3), i64} %0, 04538  %2 = call <vscale x 4 x float> @llvm.riscv.tuple.extract.nxv4f32.triscv.vector.tuple_nxv16i8_3t(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) %1, i32 1)4539  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 3), i64} %0, 14540  store i64 %3, ptr %outvl4541  ret <vscale x 4 x float> %24542}4543 4544define <vscale x 1 x float> @test_vlseg4ff_nxv1f32_triscv.vector.tuple_nxv4i8_4t(ptr %base, i64 %vl, ptr %outvl) {4545; CHECK-LABEL: test_vlseg4ff_nxv1f32_triscv.vector.tuple_nxv4i8_4t:4546; CHECK:       # %bb.0: # %entry4547; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma4548; CHECK-NEXT:    vlseg4e32ff.v v7, (a0)4549; CHECK-NEXT:    csrr a0, vl4550; CHECK-NEXT:    sd a0, 0(a2)4551; CHECK-NEXT:    ret4552entry:4553  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 4), i64} @llvm.riscv.vlseg4ff.triscv.vector.tuple_nxv4i8_4t(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) poison, ptr %base, i64 %vl, i64 5)4554  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 4), i64} %0, 04555  %2 = call <vscale x 1 x float> @llvm.riscv.tuple.extract.nxv1f32.triscv.vector.tuple_nxv4i8_4t(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) %1, i32 1)4556  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 4), i64} %0, 14557  store i64 %3, ptr %outvl4558  ret <vscale x 1 x float> %24559}4560 4561define <vscale x 1 x float> @test_vlseg4ff_mask_nxv1f32_triscv.vector.tuple_nxv4i8_4t(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) %val, ptr %base, i64 %vl, <vscale x 1 x i1> %mask, ptr %outvl) {4562; CHECK-LABEL: test_vlseg4ff_mask_nxv1f32_triscv.vector.tuple_nxv4i8_4t:4563; CHECK:       # %bb.0: # %entry4564; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, mu4565; CHECK-NEXT:    vmv1r.v v7, v84566; CHECK-NEXT:    vmv1r.v v8, v94567; CHECK-NEXT:    vmv1r.v v9, v104568; CHECK-NEXT:    vmv1r.v v10, v114569; CHECK-NEXT:    vlseg4e32ff.v v7, (a0), v0.t4570; CHECK-NEXT:    csrr a0, vl4571; CHECK-NEXT:    sd a0, 0(a2)4572; CHECK-NEXT:    ret4573entry:4574  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 4), i64} @llvm.riscv.vlseg4ff.mask.triscv.vector.tuple_nxv4i8_4t.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) %val, ptr %base, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5)4575  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 4), i64} %0, 04576  %2 = call <vscale x 1 x float> @llvm.riscv.tuple.extract.nxv1f32.triscv.vector.tuple_nxv4i8_4t(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) %1, i32 1)4577  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 4), i64} %0, 14578  store i64 %3, ptr %outvl4579  ret <vscale x 1 x float> %24580}4581 4582define <vscale x 2 x float> @test_vlseg4ff_nxv2f32_triscv.vector.tuple_nxv8i8_4t(ptr %base, i64 %vl, ptr %outvl) {4583; CHECK-LABEL: test_vlseg4ff_nxv2f32_triscv.vector.tuple_nxv8i8_4t:4584; CHECK:       # %bb.0: # %entry4585; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma4586; CHECK-NEXT:    vlseg4e32ff.v v7, (a0)4587; CHECK-NEXT:    csrr a0, vl4588; CHECK-NEXT:    sd a0, 0(a2)4589; CHECK-NEXT:    ret4590entry:4591  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 4), i64} @llvm.riscv.vlseg4ff.triscv.vector.tuple_nxv8i8_4t(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) poison, ptr %base, i64 %vl, i64 5)4592  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 4), i64} %0, 04593  %2 = call <vscale x 2 x float> @llvm.riscv.tuple.extract.nxv2f32.triscv.vector.tuple_nxv8i8_4t(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) %1, i32 1)4594  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 4), i64} %0, 14595  store i64 %3, ptr %outvl4596  ret <vscale x 2 x float> %24597}4598 4599define <vscale x 2 x float> @test_vlseg4ff_mask_nxv2f32_triscv.vector.tuple_nxv8i8_4t(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) %val, ptr %base, i64 %vl, <vscale x 2 x i1> %mask, ptr %outvl) {4600; CHECK-LABEL: test_vlseg4ff_mask_nxv2f32_triscv.vector.tuple_nxv8i8_4t:4601; CHECK:       # %bb.0: # %entry4602; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, mu4603; CHECK-NEXT:    vmv1r.v v7, v84604; CHECK-NEXT:    vmv1r.v v8, v94605; CHECK-NEXT:    vmv1r.v v9, v104606; CHECK-NEXT:    vmv1r.v v10, v114607; CHECK-NEXT:    vlseg4e32ff.v v7, (a0), v0.t4608; CHECK-NEXT:    csrr a0, vl4609; CHECK-NEXT:    sd a0, 0(a2)4610; CHECK-NEXT:    ret4611entry:4612  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 4), i64} @llvm.riscv.vlseg4ff.mask.triscv.vector.tuple_nxv8i8_4t.nxv2i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) %val, ptr %base, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5)4613  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 4), i64} %0, 04614  %2 = call <vscale x 2 x float> @llvm.riscv.tuple.extract.nxv2f32.triscv.vector.tuple_nxv8i8_4t(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) %1, i32 1)4615  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 4), i64} %0, 14616  store i64 %3, ptr %outvl4617  ret <vscale x 2 x float> %24618}4619 4620define <vscale x 4 x float> @test_vlseg4ff_nxv4f32_triscv.vector.tuple_nxv16i8_4t(ptr %base, i64 %vl, ptr %outvl) {4621; CHECK-LABEL: test_vlseg4ff_nxv4f32_triscv.vector.tuple_nxv16i8_4t:4622; CHECK:       # %bb.0: # %entry4623; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma4624; CHECK-NEXT:    vlseg4e32ff.v v6, (a0)4625; CHECK-NEXT:    csrr a0, vl4626; CHECK-NEXT:    sd a0, 0(a2)4627; CHECK-NEXT:    ret4628entry:4629  %0 = tail call {target("riscv.vector.tuple", <vscale x 16 x i8>, 4), i64} @llvm.riscv.vlseg4ff.triscv.vector.tuple_nxv16i8_4t(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) poison, ptr %base, i64 %vl, i64 5)4630  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 4), i64} %0, 04631  %2 = call <vscale x 4 x float> @llvm.riscv.tuple.extract.nxv4f32.triscv.vector.tuple_nxv16i8_4t(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) %1, i32 1)4632  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 4), i64} %0, 14633  store i64 %3, ptr %outvl4634  ret <vscale x 4 x float> %24635}4636 4637define <vscale x 4 x float> @test_vlseg4ff_mask_nxv4f32_triscv.vector.tuple_nxv16i8_4t(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) %val, ptr %base, i64 %vl, <vscale x 4 x i1> %mask, ptr %outvl) {4638; CHECK-LABEL: test_vlseg4ff_mask_nxv4f32_triscv.vector.tuple_nxv16i8_4t:4639; CHECK:       # %bb.0: # %entry4640; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, mu4641; CHECK-NEXT:    vmv2r.v v6, v84642; CHECK-NEXT:    vmv2r.v v8, v104643; CHECK-NEXT:    vmv2r.v v10, v124644; CHECK-NEXT:    vmv2r.v v12, v144645; CHECK-NEXT:    vlseg4e32ff.v v6, (a0), v0.t4646; CHECK-NEXT:    csrr a0, vl4647; CHECK-NEXT:    sd a0, 0(a2)4648; CHECK-NEXT:    ret4649entry:4650  %0 = tail call {target("riscv.vector.tuple", <vscale x 16 x i8>, 4), i64} @llvm.riscv.vlseg4ff.mask.triscv.vector.tuple_nxv16i8_4t.nxv4i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) %val, ptr %base, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 5)4651  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 4), i64} %0, 04652  %2 = call <vscale x 4 x float> @llvm.riscv.tuple.extract.nxv4f32.triscv.vector.tuple_nxv16i8_4t(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) %1, i32 1)4653  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 4), i64} %0, 14654  store i64 %3, ptr %outvl4655  ret <vscale x 4 x float> %24656}4657 4658define <vscale x 1 x float> @test_vlseg5ff_nxv1f32_triscv.vector.tuple_nxv4i8_5t(ptr %base, i64 %vl, ptr %outvl) {4659; CHECK-LABEL: test_vlseg5ff_nxv1f32_triscv.vector.tuple_nxv4i8_5t:4660; CHECK:       # %bb.0: # %entry4661; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma4662; CHECK-NEXT:    vlseg5e32ff.v v7, (a0)4663; CHECK-NEXT:    csrr a0, vl4664; CHECK-NEXT:    sd a0, 0(a2)4665; CHECK-NEXT:    ret4666entry:4667  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 5), i64} @llvm.riscv.vlseg5ff.triscv.vector.tuple_nxv4i8_5t(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) poison, ptr %base, i64 %vl, i64 5)4668  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 5), i64} %0, 04669  %2 = call <vscale x 1 x float> @llvm.riscv.tuple.extract.nxv1f32.triscv.vector.tuple_nxv4i8_5t(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) %1, i32 1)4670  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 5), i64} %0, 14671  store i64 %3, ptr %outvl4672  ret <vscale x 1 x float> %24673}4674 4675define <vscale x 1 x float> @test_vlseg5ff_mask_nxv1f32_triscv.vector.tuple_nxv4i8_5t(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) %val, ptr %base, i64 %vl, <vscale x 1 x i1> %mask, ptr %outvl) {4676; CHECK-LABEL: test_vlseg5ff_mask_nxv1f32_triscv.vector.tuple_nxv4i8_5t:4677; CHECK:       # %bb.0: # %entry4678; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, mu4679; CHECK-NEXT:    vmv1r.v v7, v84680; CHECK-NEXT:    vmv1r.v v8, v94681; CHECK-NEXT:    vmv1r.v v9, v104682; CHECK-NEXT:    vmv1r.v v10, v114683; CHECK-NEXT:    vmv1r.v v11, v124684; CHECK-NEXT:    vlseg5e32ff.v v7, (a0), v0.t4685; CHECK-NEXT:    csrr a0, vl4686; CHECK-NEXT:    sd a0, 0(a2)4687; CHECK-NEXT:    ret4688entry:4689  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 5), i64} @llvm.riscv.vlseg5ff.mask.triscv.vector.tuple_nxv4i8_5t.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) %val, ptr %base, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5)4690  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 5), i64} %0, 04691  %2 = call <vscale x 1 x float> @llvm.riscv.tuple.extract.nxv1f32.triscv.vector.tuple_nxv4i8_5t(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) %1, i32 1)4692  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 5), i64} %0, 14693  store i64 %3, ptr %outvl4694  ret <vscale x 1 x float> %24695}4696 4697define <vscale x 2 x float> @test_vlseg5ff_nxv2f32_triscv.vector.tuple_nxv8i8_5t(ptr %base, i64 %vl, ptr %outvl) {4698; CHECK-LABEL: test_vlseg5ff_nxv2f32_triscv.vector.tuple_nxv8i8_5t:4699; CHECK:       # %bb.0: # %entry4700; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma4701; CHECK-NEXT:    vlseg5e32ff.v v7, (a0)4702; CHECK-NEXT:    csrr a0, vl4703; CHECK-NEXT:    sd a0, 0(a2)4704; CHECK-NEXT:    ret4705entry:4706  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 5), i64} @llvm.riscv.vlseg5ff.triscv.vector.tuple_nxv8i8_5t(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) poison, ptr %base, i64 %vl, i64 5)4707  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 5), i64} %0, 04708  %2 = call <vscale x 2 x float> @llvm.riscv.tuple.extract.nxv2f32.triscv.vector.tuple_nxv8i8_5t(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) %1, i32 1)4709  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 5), i64} %0, 14710  store i64 %3, ptr %outvl4711  ret <vscale x 2 x float> %24712}4713 4714define <vscale x 2 x float> @test_vlseg5ff_mask_nxv2f32_triscv.vector.tuple_nxv8i8_5t(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) %val, ptr %base, i64 %vl, <vscale x 2 x i1> %mask, ptr %outvl) {4715; CHECK-LABEL: test_vlseg5ff_mask_nxv2f32_triscv.vector.tuple_nxv8i8_5t:4716; CHECK:       # %bb.0: # %entry4717; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, mu4718; CHECK-NEXT:    vmv1r.v v7, v84719; CHECK-NEXT:    vmv1r.v v8, v94720; CHECK-NEXT:    vmv1r.v v9, v104721; CHECK-NEXT:    vmv1r.v v10, v114722; CHECK-NEXT:    vmv1r.v v11, v124723; CHECK-NEXT:    vlseg5e32ff.v v7, (a0), v0.t4724; CHECK-NEXT:    csrr a0, vl4725; CHECK-NEXT:    sd a0, 0(a2)4726; CHECK-NEXT:    ret4727entry:4728  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 5), i64} @llvm.riscv.vlseg5ff.mask.triscv.vector.tuple_nxv8i8_5t.nxv2i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) %val, ptr %base, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5)4729  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 5), i64} %0, 04730  %2 = call <vscale x 2 x float> @llvm.riscv.tuple.extract.nxv2f32.triscv.vector.tuple_nxv8i8_5t(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) %1, i32 1)4731  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 5), i64} %0, 14732  store i64 %3, ptr %outvl4733  ret <vscale x 2 x float> %24734}4735 4736define <vscale x 1 x float> @test_vlseg6ff_nxv1f32_triscv.vector.tuple_nxv4i8_6t(ptr %base, i64 %vl, ptr %outvl) {4737; CHECK-LABEL: test_vlseg6ff_nxv1f32_triscv.vector.tuple_nxv4i8_6t:4738; CHECK:       # %bb.0: # %entry4739; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma4740; CHECK-NEXT:    vlseg6e32ff.v v7, (a0)4741; CHECK-NEXT:    csrr a0, vl4742; CHECK-NEXT:    sd a0, 0(a2)4743; CHECK-NEXT:    ret4744entry:4745  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 6), i64} @llvm.riscv.vlseg6ff.triscv.vector.tuple_nxv4i8_6t(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) poison, ptr %base, i64 %vl, i64 5)4746  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 6), i64} %0, 04747  %2 = call <vscale x 1 x float> @llvm.riscv.tuple.extract.nxv1f32.triscv.vector.tuple_nxv4i8_6t(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) %1, i32 1)4748  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 6), i64} %0, 14749  store i64 %3, ptr %outvl4750  ret <vscale x 1 x float> %24751}4752 4753define <vscale x 1 x float> @test_vlseg6ff_mask_nxv1f32_triscv.vector.tuple_nxv4i8_6t(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) %val, ptr %base, i64 %vl, <vscale x 1 x i1> %mask, ptr %outvl) {4754; CHECK-LABEL: test_vlseg6ff_mask_nxv1f32_triscv.vector.tuple_nxv4i8_6t:4755; CHECK:       # %bb.0: # %entry4756; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, mu4757; CHECK-NEXT:    vmv1r.v v7, v84758; CHECK-NEXT:    vmv1r.v v8, v94759; CHECK-NEXT:    vmv1r.v v9, v104760; CHECK-NEXT:    vmv1r.v v10, v114761; CHECK-NEXT:    vmv1r.v v11, v124762; CHECK-NEXT:    vmv1r.v v12, v134763; CHECK-NEXT:    vlseg6e32ff.v v7, (a0), v0.t4764; CHECK-NEXT:    csrr a0, vl4765; CHECK-NEXT:    sd a0, 0(a2)4766; CHECK-NEXT:    ret4767entry:4768  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 6), i64} @llvm.riscv.vlseg6ff.mask.triscv.vector.tuple_nxv4i8_6t.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) %val, ptr %base, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5)4769  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 6), i64} %0, 04770  %2 = call <vscale x 1 x float> @llvm.riscv.tuple.extract.nxv1f32.triscv.vector.tuple_nxv4i8_6t(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) %1, i32 1)4771  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 6), i64} %0, 14772  store i64 %3, ptr %outvl4773  ret <vscale x 1 x float> %24774}4775 4776define <vscale x 2 x float> @test_vlseg6ff_nxv2f32_triscv.vector.tuple_nxv8i8_6t(ptr %base, i64 %vl, ptr %outvl) {4777; CHECK-LABEL: test_vlseg6ff_nxv2f32_triscv.vector.tuple_nxv8i8_6t:4778; CHECK:       # %bb.0: # %entry4779; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma4780; CHECK-NEXT:    vlseg6e32ff.v v7, (a0)4781; CHECK-NEXT:    csrr a0, vl4782; CHECK-NEXT:    sd a0, 0(a2)4783; CHECK-NEXT:    ret4784entry:4785  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 6), i64} @llvm.riscv.vlseg6ff.triscv.vector.tuple_nxv8i8_6t(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) poison, ptr %base, i64 %vl, i64 5)4786  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 6), i64} %0, 04787  %2 = call <vscale x 2 x float> @llvm.riscv.tuple.extract.nxv2f32.triscv.vector.tuple_nxv8i8_6t(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) %1, i32 1)4788  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 6), i64} %0, 14789  store i64 %3, ptr %outvl4790  ret <vscale x 2 x float> %24791}4792 4793define <vscale x 2 x float> @test_vlseg6ff_mask_nxv2f32_triscv.vector.tuple_nxv8i8_6t(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) %val, ptr %base, i64 %vl, <vscale x 2 x i1> %mask, ptr %outvl) {4794; CHECK-LABEL: test_vlseg6ff_mask_nxv2f32_triscv.vector.tuple_nxv8i8_6t:4795; CHECK:       # %bb.0: # %entry4796; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, mu4797; CHECK-NEXT:    vmv1r.v v7, v84798; CHECK-NEXT:    vmv1r.v v8, v94799; CHECK-NEXT:    vmv1r.v v9, v104800; CHECK-NEXT:    vmv1r.v v10, v114801; CHECK-NEXT:    vmv1r.v v11, v124802; CHECK-NEXT:    vmv1r.v v12, v134803; CHECK-NEXT:    vlseg6e32ff.v v7, (a0), v0.t4804; CHECK-NEXT:    csrr a0, vl4805; CHECK-NEXT:    sd a0, 0(a2)4806; CHECK-NEXT:    ret4807entry:4808  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 6), i64} @llvm.riscv.vlseg6ff.mask.triscv.vector.tuple_nxv8i8_6t.nxv2i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) %val, ptr %base, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5)4809  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 6), i64} %0, 04810  %2 = call <vscale x 2 x float> @llvm.riscv.tuple.extract.nxv2f32.triscv.vector.tuple_nxv8i8_6t(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) %1, i32 1)4811  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 6), i64} %0, 14812  store i64 %3, ptr %outvl4813  ret <vscale x 2 x float> %24814}4815 4816define <vscale x 1 x float> @test_vlseg7ff_nxv1f32_triscv.vector.tuple_nxv4i8_7t(ptr %base, i64 %vl, ptr %outvl) {4817; CHECK-LABEL: test_vlseg7ff_nxv1f32_triscv.vector.tuple_nxv4i8_7t:4818; CHECK:       # %bb.0: # %entry4819; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma4820; CHECK-NEXT:    vlseg7e32ff.v v7, (a0)4821; CHECK-NEXT:    csrr a0, vl4822; CHECK-NEXT:    sd a0, 0(a2)4823; CHECK-NEXT:    ret4824entry:4825  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 7), i64} @llvm.riscv.vlseg7ff.triscv.vector.tuple_nxv4i8_7t(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) poison, ptr %base, i64 %vl, i64 5)4826  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 7), i64} %0, 04827  %2 = call <vscale x 1 x float> @llvm.riscv.tuple.extract.nxv1f32.triscv.vector.tuple_nxv4i8_7t(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) %1, i32 1)4828  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 7), i64} %0, 14829  store i64 %3, ptr %outvl4830  ret <vscale x 1 x float> %24831}4832 4833define <vscale x 1 x float> @test_vlseg7ff_mask_nxv1f32_triscv.vector.tuple_nxv4i8_7t(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) %val, ptr %base, i64 %vl, <vscale x 1 x i1> %mask, ptr %outvl) {4834; CHECK-LABEL: test_vlseg7ff_mask_nxv1f32_triscv.vector.tuple_nxv4i8_7t:4835; CHECK:       # %bb.0: # %entry4836; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, mu4837; CHECK-NEXT:    vmv1r.v v7, v84838; CHECK-NEXT:    vmv1r.v v8, v94839; CHECK-NEXT:    vmv1r.v v9, v104840; CHECK-NEXT:    vmv1r.v v10, v114841; CHECK-NEXT:    vmv1r.v v11, v124842; CHECK-NEXT:    vmv1r.v v12, v134843; CHECK-NEXT:    vmv1r.v v13, v144844; CHECK-NEXT:    vlseg7e32ff.v v7, (a0), v0.t4845; CHECK-NEXT:    csrr a0, vl4846; CHECK-NEXT:    sd a0, 0(a2)4847; CHECK-NEXT:    ret4848entry:4849  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 7), i64} @llvm.riscv.vlseg7ff.mask.triscv.vector.tuple_nxv4i8_7t.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) %val, ptr %base, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5)4850  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 7), i64} %0, 04851  %2 = call <vscale x 1 x float> @llvm.riscv.tuple.extract.nxv1f32.triscv.vector.tuple_nxv4i8_7t(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) %1, i32 1)4852  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 7), i64} %0, 14853  store i64 %3, ptr %outvl4854  ret <vscale x 1 x float> %24855}4856 4857define <vscale x 2 x float> @test_vlseg7ff_nxv2f32_triscv.vector.tuple_nxv8i8_7t(ptr %base, i64 %vl, ptr %outvl) {4858; CHECK-LABEL: test_vlseg7ff_nxv2f32_triscv.vector.tuple_nxv8i8_7t:4859; CHECK:       # %bb.0: # %entry4860; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma4861; CHECK-NEXT:    vlseg7e32ff.v v7, (a0)4862; CHECK-NEXT:    csrr a0, vl4863; CHECK-NEXT:    sd a0, 0(a2)4864; CHECK-NEXT:    ret4865entry:4866  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 7), i64} @llvm.riscv.vlseg7ff.triscv.vector.tuple_nxv8i8_7t(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) poison, ptr %base, i64 %vl, i64 5)4867  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 7), i64} %0, 04868  %2 = call <vscale x 2 x float> @llvm.riscv.tuple.extract.nxv2f32.triscv.vector.tuple_nxv8i8_7t(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) %1, i32 1)4869  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 7), i64} %0, 14870  store i64 %3, ptr %outvl4871  ret <vscale x 2 x float> %24872}4873 4874define <vscale x 2 x float> @test_vlseg7ff_mask_nxv2f32_triscv.vector.tuple_nxv8i8_7t(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) %val, ptr %base, i64 %vl, <vscale x 2 x i1> %mask, ptr %outvl) {4875; CHECK-LABEL: test_vlseg7ff_mask_nxv2f32_triscv.vector.tuple_nxv8i8_7t:4876; CHECK:       # %bb.0: # %entry4877; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, mu4878; CHECK-NEXT:    vmv1r.v v7, v84879; CHECK-NEXT:    vmv1r.v v8, v94880; CHECK-NEXT:    vmv1r.v v9, v104881; CHECK-NEXT:    vmv1r.v v10, v114882; CHECK-NEXT:    vmv1r.v v11, v124883; CHECK-NEXT:    vmv1r.v v12, v134884; CHECK-NEXT:    vmv1r.v v13, v144885; CHECK-NEXT:    vlseg7e32ff.v v7, (a0), v0.t4886; CHECK-NEXT:    csrr a0, vl4887; CHECK-NEXT:    sd a0, 0(a2)4888; CHECK-NEXT:    ret4889entry:4890  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 7), i64} @llvm.riscv.vlseg7ff.mask.triscv.vector.tuple_nxv8i8_7t.nxv2i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) %val, ptr %base, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5)4891  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 7), i64} %0, 04892  %2 = call <vscale x 2 x float> @llvm.riscv.tuple.extract.nxv2f32.triscv.vector.tuple_nxv8i8_7t(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) %1, i32 1)4893  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 7), i64} %0, 14894  store i64 %3, ptr %outvl4895  ret <vscale x 2 x float> %24896}4897 4898define <vscale x 1 x float> @test_vlseg8ff_nxv1f32_triscv.vector.tuple_nxv4i8_8t(ptr %base, i64 %vl, ptr %outvl) {4899; CHECK-LABEL: test_vlseg8ff_nxv1f32_triscv.vector.tuple_nxv4i8_8t:4900; CHECK:       # %bb.0: # %entry4901; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma4902; CHECK-NEXT:    vlseg8e32ff.v v7, (a0)4903; CHECK-NEXT:    csrr a0, vl4904; CHECK-NEXT:    sd a0, 0(a2)4905; CHECK-NEXT:    ret4906entry:4907  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 8), i64} @llvm.riscv.vlseg8ff.triscv.vector.tuple_nxv4i8_8t(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) poison, ptr %base, i64 %vl, i64 5)4908  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 8), i64} %0, 04909  %2 = call <vscale x 1 x float> @llvm.riscv.tuple.extract.nxv1f32.triscv.vector.tuple_nxv4i8_8t(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) %1, i32 1)4910  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 8), i64} %0, 14911  store i64 %3, ptr %outvl4912  ret <vscale x 1 x float> %24913}4914 4915define <vscale x 1 x float> @test_vlseg8ff_mask_nxv1f32_triscv.vector.tuple_nxv4i8_8t(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) %val, ptr %base, i64 %vl, <vscale x 1 x i1> %mask, ptr %outvl) {4916; CHECK-LABEL: test_vlseg8ff_mask_nxv1f32_triscv.vector.tuple_nxv4i8_8t:4917; CHECK:       # %bb.0: # %entry4918; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, mu4919; CHECK-NEXT:    vmv1r.v v7, v84920; CHECK-NEXT:    vmv1r.v v8, v94921; CHECK-NEXT:    vmv1r.v v9, v104922; CHECK-NEXT:    vmv1r.v v10, v114923; CHECK-NEXT:    vmv1r.v v11, v124924; CHECK-NEXT:    vmv1r.v v12, v134925; CHECK-NEXT:    vmv1r.v v13, v144926; CHECK-NEXT:    vmv1r.v v14, v154927; CHECK-NEXT:    vlseg8e32ff.v v7, (a0), v0.t4928; CHECK-NEXT:    csrr a0, vl4929; CHECK-NEXT:    sd a0, 0(a2)4930; CHECK-NEXT:    ret4931entry:4932  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 8), i64} @llvm.riscv.vlseg8ff.mask.triscv.vector.tuple_nxv4i8_8t.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) %val, ptr %base, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5)4933  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 8), i64} %0, 04934  %2 = call <vscale x 1 x float> @llvm.riscv.tuple.extract.nxv1f32.triscv.vector.tuple_nxv4i8_8t(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) %1, i32 1)4935  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 8), i64} %0, 14936  store i64 %3, ptr %outvl4937  ret <vscale x 1 x float> %24938}4939 4940define <vscale x 2 x float> @test_vlseg8ff_nxv2f32_triscv.vector.tuple_nxv8i8_8t(ptr %base, i64 %vl, ptr %outvl) {4941; CHECK-LABEL: test_vlseg8ff_nxv2f32_triscv.vector.tuple_nxv8i8_8t:4942; CHECK:       # %bb.0: # %entry4943; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma4944; CHECK-NEXT:    vlseg8e32ff.v v7, (a0)4945; CHECK-NEXT:    csrr a0, vl4946; CHECK-NEXT:    sd a0, 0(a2)4947; CHECK-NEXT:    ret4948entry:4949  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 8), i64} @llvm.riscv.vlseg8ff.triscv.vector.tuple_nxv8i8_8t(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) poison, ptr %base, i64 %vl, i64 5)4950  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 8), i64} %0, 04951  %2 = call <vscale x 2 x float> @llvm.riscv.tuple.extract.nxv2f32.triscv.vector.tuple_nxv8i8_8t(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) %1, i32 1)4952  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 8), i64} %0, 14953  store i64 %3, ptr %outvl4954  ret <vscale x 2 x float> %24955}4956 4957define <vscale x 2 x float> @test_vlseg8ff_mask_nxv2f32_triscv.vector.tuple_nxv8i8_8t(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) %val, ptr %base, i64 %vl, <vscale x 2 x i1> %mask, ptr %outvl) {4958; CHECK-LABEL: test_vlseg8ff_mask_nxv2f32_triscv.vector.tuple_nxv8i8_8t:4959; CHECK:       # %bb.0: # %entry4960; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, mu4961; CHECK-NEXT:    vmv1r.v v7, v84962; CHECK-NEXT:    vmv1r.v v8, v94963; CHECK-NEXT:    vmv1r.v v9, v104964; CHECK-NEXT:    vmv1r.v v10, v114965; CHECK-NEXT:    vmv1r.v v11, v124966; CHECK-NEXT:    vmv1r.v v12, v134967; CHECK-NEXT:    vmv1r.v v13, v144968; CHECK-NEXT:    vmv1r.v v14, v154969; CHECK-NEXT:    vlseg8e32ff.v v7, (a0), v0.t4970; CHECK-NEXT:    csrr a0, vl4971; CHECK-NEXT:    sd a0, 0(a2)4972; CHECK-NEXT:    ret4973entry:4974  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 8), i64} @llvm.riscv.vlseg8ff.mask.triscv.vector.tuple_nxv8i8_8t.nxv2i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) %val, ptr %base, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5)4975  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 8), i64} %0, 04976  %2 = call <vscale x 2 x float> @llvm.riscv.tuple.extract.nxv2f32.triscv.vector.tuple_nxv8i8_8t(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) %1, i32 1)4977  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 8), i64} %0, 14978  store i64 %3, ptr %outvl4979  ret <vscale x 2 x float> %24980}4981 4982define <vscale x 1 x double> @test_vlseg2ff_nxv1f64_triscv.vector.tuple_nxv8i8_2t(ptr %base, i64 %vl, ptr %outvl) {4983; CHECK-LABEL: test_vlseg2ff_nxv1f64_triscv.vector.tuple_nxv8i8_2t:4984; CHECK:       # %bb.0: # %entry4985; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, ma4986; CHECK-NEXT:    vlseg2e64ff.v v7, (a0)4987; CHECK-NEXT:    csrr a0, vl4988; CHECK-NEXT:    sd a0, 0(a2)4989; CHECK-NEXT:    ret4990entry:4991  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 2), i64} @llvm.riscv.vlseg2ff.triscv.vector.tuple_nxv8i8_2t(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) poison, ptr %base, i64 %vl, i64 6)4992  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 2), i64} %0, 04993  %2 = call <vscale x 1 x double> @llvm.riscv.tuple.extract.nxv1f64.triscv.vector.tuple_nxv8i8_2t(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) %1, i32 1)4994  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 2), i64} %0, 14995  store i64 %3, ptr %outvl4996  ret <vscale x 1 x double> %24997}4998 4999define <vscale x 1 x double> @test_vlseg2ff_mask_nxv1f64_triscv.vector.tuple_nxv8i8_2t(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) %val, ptr %base, i64 %vl, <vscale x 1 x i1> %mask, ptr %outvl) {5000; CHECK-LABEL: test_vlseg2ff_mask_nxv1f64_triscv.vector.tuple_nxv8i8_2t:5001; CHECK:       # %bb.0: # %entry5002; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, mu5003; CHECK-NEXT:    vmv1r.v v7, v85004; CHECK-NEXT:    vmv1r.v v8, v95005; CHECK-NEXT:    vlseg2e64ff.v v7, (a0), v0.t5006; CHECK-NEXT:    csrr a0, vl5007; CHECK-NEXT:    sd a0, 0(a2)5008; CHECK-NEXT:    ret5009entry:5010  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 2), i64} @llvm.riscv.vlseg2ff.mask.triscv.vector.tuple_nxv8i8_2t.nxv1i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) %val, ptr %base, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6)5011  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 2), i64} %0, 05012  %2 = call <vscale x 1 x double> @llvm.riscv.tuple.extract.nxv1f64.triscv.vector.tuple_nxv8i8_2t(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) %1, i32 1)5013  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 2), i64} %0, 15014  store i64 %3, ptr %outvl5015  ret <vscale x 1 x double> %25016}5017 5018define <vscale x 2 x double> @test_vlseg2ff_nxv2f64_triscv.vector.tuple_nxv16i8_2t(ptr %base, i64 %vl, ptr %outvl) {5019; CHECK-LABEL: test_vlseg2ff_nxv2f64_triscv.vector.tuple_nxv16i8_2t:5020; CHECK:       # %bb.0: # %entry5021; CHECK-NEXT:    vsetvli zero, a1, e64, m2, ta, ma5022; CHECK-NEXT:    vlseg2e64ff.v v6, (a0)5023; CHECK-NEXT:    csrr a0, vl5024; CHECK-NEXT:    sd a0, 0(a2)5025; CHECK-NEXT:    ret5026entry:5027  %0 = tail call {target("riscv.vector.tuple", <vscale x 16 x i8>, 2), i64} @llvm.riscv.vlseg2ff.triscv.vector.tuple_nxv16i8_2t(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) poison, ptr %base, i64 %vl, i64 6)5028  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 2), i64} %0, 05029  %2 = call <vscale x 2 x double> @llvm.riscv.tuple.extract.nxv2f64.triscv.vector.tuple_nxv16i8_2t(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) %1, i32 1)5030  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 2), i64} %0, 15031  store i64 %3, ptr %outvl5032  ret <vscale x 2 x double> %25033}5034 5035define <vscale x 2 x double> @test_vlseg2ff_mask_nxv2f64_triscv.vector.tuple_nxv16i8_2t(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) %val, ptr %base, i64 %vl, <vscale x 2 x i1> %mask, ptr %outvl) {5036; CHECK-LABEL: test_vlseg2ff_mask_nxv2f64_triscv.vector.tuple_nxv16i8_2t:5037; CHECK:       # %bb.0: # %entry5038; CHECK-NEXT:    vsetvli zero, a1, e64, m2, ta, mu5039; CHECK-NEXT:    vmv2r.v v6, v85040; CHECK-NEXT:    vmv2r.v v8, v105041; CHECK-NEXT:    vlseg2e64ff.v v6, (a0), v0.t5042; CHECK-NEXT:    csrr a0, vl5043; CHECK-NEXT:    sd a0, 0(a2)5044; CHECK-NEXT:    ret5045entry:5046  %0 = tail call {target("riscv.vector.tuple", <vscale x 16 x i8>, 2), i64} @llvm.riscv.vlseg2ff.mask.triscv.vector.tuple_nxv16i8_2t.nxv2i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) %val, ptr %base, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 6)5047  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 2), i64} %0, 05048  %2 = call <vscale x 2 x double> @llvm.riscv.tuple.extract.nxv2f64.triscv.vector.tuple_nxv16i8_2t(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) %1, i32 1)5049  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 2), i64} %0, 15050  store i64 %3, ptr %outvl5051  ret <vscale x 2 x double> %25052}5053 5054define <vscale x 4 x double> @test_vlseg2ff_nxv4f64_triscv.vector.tuple_nxv32i8_2t(ptr %base, i64 %vl, ptr %outvl) {5055; CHECK-LABEL: test_vlseg2ff_nxv4f64_triscv.vector.tuple_nxv32i8_2t:5056; CHECK:       # %bb.0: # %entry5057; CHECK-NEXT:    vsetvli zero, a1, e64, m4, ta, ma5058; CHECK-NEXT:    vlseg2e64ff.v v4, (a0)5059; CHECK-NEXT:    csrr a0, vl5060; CHECK-NEXT:    sd a0, 0(a2)5061; CHECK-NEXT:    ret5062entry:5063  %0 = tail call {target("riscv.vector.tuple", <vscale x 32 x i8>, 2), i64} @llvm.riscv.vlseg2ff.triscv.vector.tuple_nxv32i8_2t(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) poison, ptr %base, i64 %vl, i64 6)5064  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 32 x i8>, 2), i64} %0, 05065  %2 = call <vscale x 4 x double> @llvm.riscv.tuple.extract.nxv4f64.triscv.vector.tuple_nxv32i8_2t(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) %1, i32 1)5066  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 32 x i8>, 2), i64} %0, 15067  store i64 %3, ptr %outvl5068  ret <vscale x 4 x double> %25069}5070 5071define <vscale x 4 x double> @test_vlseg2ff_mask_nxv4f64_triscv.vector.tuple_nxv32i8_2t(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) %val, ptr %base, i64 %vl, <vscale x 4 x i1> %mask, ptr %outvl) {5072; CHECK-LABEL: test_vlseg2ff_mask_nxv4f64_triscv.vector.tuple_nxv32i8_2t:5073; CHECK:       # %bb.0: # %entry5074; CHECK-NEXT:    vsetvli zero, a1, e64, m4, ta, mu5075; CHECK-NEXT:    vmv4r.v v4, v85076; CHECK-NEXT:    vmv4r.v v8, v125077; CHECK-NEXT:    vlseg2e64ff.v v4, (a0), v0.t5078; CHECK-NEXT:    csrr a0, vl5079; CHECK-NEXT:    sd a0, 0(a2)5080; CHECK-NEXT:    ret5081entry:5082  %0 = tail call {target("riscv.vector.tuple", <vscale x 32 x i8>, 2), i64} @llvm.riscv.vlseg2ff.mask.triscv.vector.tuple_nxv32i8_2t.nxv4i1(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) %val, ptr %base, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 6)5083  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 32 x i8>, 2), i64} %0, 05084  %2 = call <vscale x 4 x double> @llvm.riscv.tuple.extract.nxv4f64.triscv.vector.tuple_nxv32i8_2t(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) %1, i32 1)5085  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 32 x i8>, 2), i64} %0, 15086  store i64 %3, ptr %outvl5087  ret <vscale x 4 x double> %25088}5089 5090define <vscale x 1 x double> @test_vlseg3ff_nxv1f64_triscv.vector.tuple_nxv8i8_3t(ptr %base, i64 %vl, ptr %outvl) {5091; CHECK-LABEL: test_vlseg3ff_nxv1f64_triscv.vector.tuple_nxv8i8_3t:5092; CHECK:       # %bb.0: # %entry5093; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, ma5094; CHECK-NEXT:    vlseg3e64ff.v v7, (a0)5095; CHECK-NEXT:    csrr a0, vl5096; CHECK-NEXT:    sd a0, 0(a2)5097; CHECK-NEXT:    ret5098entry:5099  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 3), i64} @llvm.riscv.vlseg3ff.triscv.vector.tuple_nxv8i8_3t(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) poison, ptr %base, i64 %vl, i64 6)5100  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 3), i64} %0, 05101  %2 = call <vscale x 1 x double> @llvm.riscv.tuple.extract.nxv1f64.triscv.vector.tuple_nxv8i8_3t(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) %1, i32 1)5102  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 3), i64} %0, 15103  store i64 %3, ptr %outvl5104  ret <vscale x 1 x double> %25105}5106 5107define <vscale x 1 x double> @test_vlseg3ff_mask_nxv1f64_triscv.vector.tuple_nxv8i8_3t(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) %val, ptr %base, i64 %vl, <vscale x 1 x i1> %mask, ptr %outvl) {5108; CHECK-LABEL: test_vlseg3ff_mask_nxv1f64_triscv.vector.tuple_nxv8i8_3t:5109; CHECK:       # %bb.0: # %entry5110; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, mu5111; CHECK-NEXT:    vmv1r.v v7, v85112; CHECK-NEXT:    vmv1r.v v8, v95113; CHECK-NEXT:    vmv1r.v v9, v105114; CHECK-NEXT:    vlseg3e64ff.v v7, (a0), v0.t5115; CHECK-NEXT:    csrr a0, vl5116; CHECK-NEXT:    sd a0, 0(a2)5117; CHECK-NEXT:    ret5118entry:5119  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 3), i64} @llvm.riscv.vlseg3ff.mask.triscv.vector.tuple_nxv8i8_3t.nxv1i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) %val, ptr %base, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6)5120  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 3), i64} %0, 05121  %2 = call <vscale x 1 x double> @llvm.riscv.tuple.extract.nxv1f64.triscv.vector.tuple_nxv8i8_3t(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) %1, i32 1)5122  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 3), i64} %0, 15123  store i64 %3, ptr %outvl5124  ret <vscale x 1 x double> %25125}5126 5127define <vscale x 2 x double> @test_vlseg3ff_nxv2f64_triscv.vector.tuple_nxv16i8_3t(ptr %base, i64 %vl, ptr %outvl) {5128; CHECK-LABEL: test_vlseg3ff_nxv2f64_triscv.vector.tuple_nxv16i8_3t:5129; CHECK:       # %bb.0: # %entry5130; CHECK-NEXT:    vsetvli zero, a1, e64, m2, ta, ma5131; CHECK-NEXT:    vlseg3e64ff.v v6, (a0)5132; CHECK-NEXT:    csrr a0, vl5133; CHECK-NEXT:    sd a0, 0(a2)5134; CHECK-NEXT:    ret5135entry:5136  %0 = tail call {target("riscv.vector.tuple", <vscale x 16 x i8>, 3), i64} @llvm.riscv.vlseg3ff.triscv.vector.tuple_nxv16i8_3t(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) poison, ptr %base, i64 %vl, i64 6)5137  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 3), i64} %0, 05138  %2 = call <vscale x 2 x double> @llvm.riscv.tuple.extract.nxv2f64.triscv.vector.tuple_nxv16i8_3t(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) %1, i32 1)5139  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 3), i64} %0, 15140  store i64 %3, ptr %outvl5141  ret <vscale x 2 x double> %25142}5143 5144define <vscale x 2 x double> @test_vlseg3ff_mask_nxv2f64_triscv.vector.tuple_nxv16i8_3t(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) %val, ptr %base, i64 %vl, <vscale x 2 x i1> %mask, ptr %outvl) {5145; CHECK-LABEL: test_vlseg3ff_mask_nxv2f64_triscv.vector.tuple_nxv16i8_3t:5146; CHECK:       # %bb.0: # %entry5147; CHECK-NEXT:    vsetvli zero, a1, e64, m2, ta, mu5148; CHECK-NEXT:    vmv2r.v v6, v85149; CHECK-NEXT:    vmv2r.v v8, v105150; CHECK-NEXT:    vmv2r.v v10, v125151; CHECK-NEXT:    vlseg3e64ff.v v6, (a0), v0.t5152; CHECK-NEXT:    csrr a0, vl5153; CHECK-NEXT:    sd a0, 0(a2)5154; CHECK-NEXT:    ret5155entry:5156  %0 = tail call {target("riscv.vector.tuple", <vscale x 16 x i8>, 3), i64} @llvm.riscv.vlseg3ff.mask.triscv.vector.tuple_nxv16i8_3t.nxv2i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) %val, ptr %base, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 6)5157  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 3), i64} %0, 05158  %2 = call <vscale x 2 x double> @llvm.riscv.tuple.extract.nxv2f64.triscv.vector.tuple_nxv16i8_3t(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) %1, i32 1)5159  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 3), i64} %0, 15160  store i64 %3, ptr %outvl5161  ret <vscale x 2 x double> %25162}5163 5164define <vscale x 1 x double> @test_vlseg4ff_nxv1f64_triscv.vector.tuple_nxv8i8_4t(ptr %base, i64 %vl, ptr %outvl) {5165; CHECK-LABEL: test_vlseg4ff_nxv1f64_triscv.vector.tuple_nxv8i8_4t:5166; CHECK:       # %bb.0: # %entry5167; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, ma5168; CHECK-NEXT:    vlseg4e64ff.v v7, (a0)5169; CHECK-NEXT:    csrr a0, vl5170; CHECK-NEXT:    sd a0, 0(a2)5171; CHECK-NEXT:    ret5172entry:5173  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 4), i64} @llvm.riscv.vlseg4ff.triscv.vector.tuple_nxv8i8_4t(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) poison, ptr %base, i64 %vl, i64 6)5174  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 4), i64} %0, 05175  %2 = call <vscale x 1 x double> @llvm.riscv.tuple.extract.nxv1f64.triscv.vector.tuple_nxv8i8_4t(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) %1, i32 1)5176  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 4), i64} %0, 15177  store i64 %3, ptr %outvl5178  ret <vscale x 1 x double> %25179}5180 5181define <vscale x 1 x double> @test_vlseg4ff_mask_nxv1f64_triscv.vector.tuple_nxv8i8_4t(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) %val, ptr %base, i64 %vl, <vscale x 1 x i1> %mask, ptr %outvl) {5182; CHECK-LABEL: test_vlseg4ff_mask_nxv1f64_triscv.vector.tuple_nxv8i8_4t:5183; CHECK:       # %bb.0: # %entry5184; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, mu5185; CHECK-NEXT:    vmv1r.v v7, v85186; CHECK-NEXT:    vmv1r.v v8, v95187; CHECK-NEXT:    vmv1r.v v9, v105188; CHECK-NEXT:    vmv1r.v v10, v115189; CHECK-NEXT:    vlseg4e64ff.v v7, (a0), v0.t5190; CHECK-NEXT:    csrr a0, vl5191; CHECK-NEXT:    sd a0, 0(a2)5192; CHECK-NEXT:    ret5193entry:5194  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 4), i64} @llvm.riscv.vlseg4ff.mask.triscv.vector.tuple_nxv8i8_4t.nxv1i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) %val, ptr %base, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6)5195  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 4), i64} %0, 05196  %2 = call <vscale x 1 x double> @llvm.riscv.tuple.extract.nxv1f64.triscv.vector.tuple_nxv8i8_4t(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) %1, i32 1)5197  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 4), i64} %0, 15198  store i64 %3, ptr %outvl5199  ret <vscale x 1 x double> %25200}5201 5202define <vscale x 2 x double> @test_vlseg4ff_nxv2f64_triscv.vector.tuple_nxv16i8_4t(ptr %base, i64 %vl, ptr %outvl) {5203; CHECK-LABEL: test_vlseg4ff_nxv2f64_triscv.vector.tuple_nxv16i8_4t:5204; CHECK:       # %bb.0: # %entry5205; CHECK-NEXT:    vsetvli zero, a1, e64, m2, ta, ma5206; CHECK-NEXT:    vlseg4e64ff.v v6, (a0)5207; CHECK-NEXT:    csrr a0, vl5208; CHECK-NEXT:    sd a0, 0(a2)5209; CHECK-NEXT:    ret5210entry:5211  %0 = tail call {target("riscv.vector.tuple", <vscale x 16 x i8>, 4), i64} @llvm.riscv.vlseg4ff.triscv.vector.tuple_nxv16i8_4t(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) poison, ptr %base, i64 %vl, i64 6)5212  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 4), i64} %0, 05213  %2 = call <vscale x 2 x double> @llvm.riscv.tuple.extract.nxv2f64.triscv.vector.tuple_nxv16i8_4t(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) %1, i32 1)5214  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 4), i64} %0, 15215  store i64 %3, ptr %outvl5216  ret <vscale x 2 x double> %25217}5218 5219define <vscale x 2 x double> @test_vlseg4ff_mask_nxv2f64_triscv.vector.tuple_nxv16i8_4t(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) %val, ptr %base, i64 %vl, <vscale x 2 x i1> %mask, ptr %outvl) {5220; CHECK-LABEL: test_vlseg4ff_mask_nxv2f64_triscv.vector.tuple_nxv16i8_4t:5221; CHECK:       # %bb.0: # %entry5222; CHECK-NEXT:    vsetvli zero, a1, e64, m2, ta, mu5223; CHECK-NEXT:    vmv2r.v v6, v85224; CHECK-NEXT:    vmv2r.v v8, v105225; CHECK-NEXT:    vmv2r.v v10, v125226; CHECK-NEXT:    vmv2r.v v12, v145227; CHECK-NEXT:    vlseg4e64ff.v v6, (a0), v0.t5228; CHECK-NEXT:    csrr a0, vl5229; CHECK-NEXT:    sd a0, 0(a2)5230; CHECK-NEXT:    ret5231entry:5232  %0 = tail call {target("riscv.vector.tuple", <vscale x 16 x i8>, 4), i64} @llvm.riscv.vlseg4ff.mask.triscv.vector.tuple_nxv16i8_4t.nxv2i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) %val, ptr %base, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 6)5233  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 4), i64} %0, 05234  %2 = call <vscale x 2 x double> @llvm.riscv.tuple.extract.nxv2f64.triscv.vector.tuple_nxv16i8_4t(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) %1, i32 1)5235  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 4), i64} %0, 15236  store i64 %3, ptr %outvl5237  ret <vscale x 2 x double> %25238}5239 5240define <vscale x 1 x double> @test_vlseg5ff_nxv1f64_triscv.vector.tuple_nxv8i8_5t(ptr %base, i64 %vl, ptr %outvl) {5241; CHECK-LABEL: test_vlseg5ff_nxv1f64_triscv.vector.tuple_nxv8i8_5t:5242; CHECK:       # %bb.0: # %entry5243; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, ma5244; CHECK-NEXT:    vlseg5e64ff.v v7, (a0)5245; CHECK-NEXT:    csrr a0, vl5246; CHECK-NEXT:    sd a0, 0(a2)5247; CHECK-NEXT:    ret5248entry:5249  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 5), i64} @llvm.riscv.vlseg5ff.triscv.vector.tuple_nxv8i8_5t(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) poison, ptr %base, i64 %vl, i64 6)5250  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 5), i64} %0, 05251  %2 = call <vscale x 1 x double> @llvm.riscv.tuple.extract.nxv1f64.triscv.vector.tuple_nxv8i8_5t(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) %1, i32 1)5252  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 5), i64} %0, 15253  store i64 %3, ptr %outvl5254  ret <vscale x 1 x double> %25255}5256 5257define <vscale x 1 x double> @test_vlseg5ff_mask_nxv1f64_triscv.vector.tuple_nxv8i8_5t(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) %val, ptr %base, i64 %vl, <vscale x 1 x i1> %mask, ptr %outvl) {5258; CHECK-LABEL: test_vlseg5ff_mask_nxv1f64_triscv.vector.tuple_nxv8i8_5t:5259; CHECK:       # %bb.0: # %entry5260; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, mu5261; CHECK-NEXT:    vmv1r.v v7, v85262; CHECK-NEXT:    vmv1r.v v8, v95263; CHECK-NEXT:    vmv1r.v v9, v105264; CHECK-NEXT:    vmv1r.v v10, v115265; CHECK-NEXT:    vmv1r.v v11, v125266; CHECK-NEXT:    vlseg5e64ff.v v7, (a0), v0.t5267; CHECK-NEXT:    csrr a0, vl5268; CHECK-NEXT:    sd a0, 0(a2)5269; CHECK-NEXT:    ret5270entry:5271  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 5), i64} @llvm.riscv.vlseg5ff.mask.triscv.vector.tuple_nxv8i8_5t.nxv1i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) %val, ptr %base, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6)5272  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 5), i64} %0, 05273  %2 = call <vscale x 1 x double> @llvm.riscv.tuple.extract.nxv1f64.triscv.vector.tuple_nxv8i8_5t(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) %1, i32 1)5274  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 5), i64} %0, 15275  store i64 %3, ptr %outvl5276  ret <vscale x 1 x double> %25277}5278 5279define <vscale x 1 x double> @test_vlseg6ff_nxv1f64_triscv.vector.tuple_nxv8i8_6t(ptr %base, i64 %vl, ptr %outvl) {5280; CHECK-LABEL: test_vlseg6ff_nxv1f64_triscv.vector.tuple_nxv8i8_6t:5281; CHECK:       # %bb.0: # %entry5282; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, ma5283; CHECK-NEXT:    vlseg6e64ff.v v7, (a0)5284; CHECK-NEXT:    csrr a0, vl5285; CHECK-NEXT:    sd a0, 0(a2)5286; CHECK-NEXT:    ret5287entry:5288  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 6), i64} @llvm.riscv.vlseg6ff.triscv.vector.tuple_nxv8i8_6t(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) poison, ptr %base, i64 %vl, i64 6)5289  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 6), i64} %0, 05290  %2 = call <vscale x 1 x double> @llvm.riscv.tuple.extract.nxv1f64.triscv.vector.tuple_nxv8i8_6t(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) %1, i32 1)5291  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 6), i64} %0, 15292  store i64 %3, ptr %outvl5293  ret <vscale x 1 x double> %25294}5295 5296define <vscale x 1 x double> @test_vlseg6ff_mask_nxv1f64_triscv.vector.tuple_nxv8i8_6t(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) %val, ptr %base, i64 %vl, <vscale x 1 x i1> %mask, ptr %outvl) {5297; CHECK-LABEL: test_vlseg6ff_mask_nxv1f64_triscv.vector.tuple_nxv8i8_6t:5298; CHECK:       # %bb.0: # %entry5299; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, mu5300; CHECK-NEXT:    vmv1r.v v7, v85301; CHECK-NEXT:    vmv1r.v v8, v95302; CHECK-NEXT:    vmv1r.v v9, v105303; CHECK-NEXT:    vmv1r.v v10, v115304; CHECK-NEXT:    vmv1r.v v11, v125305; CHECK-NEXT:    vmv1r.v v12, v135306; CHECK-NEXT:    vlseg6e64ff.v v7, (a0), v0.t5307; CHECK-NEXT:    csrr a0, vl5308; CHECK-NEXT:    sd a0, 0(a2)5309; CHECK-NEXT:    ret5310entry:5311  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 6), i64} @llvm.riscv.vlseg6ff.mask.triscv.vector.tuple_nxv8i8_6t.nxv1i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) %val, ptr %base, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6)5312  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 6), i64} %0, 05313  %2 = call <vscale x 1 x double> @llvm.riscv.tuple.extract.nxv1f64.triscv.vector.tuple_nxv8i8_6t(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) %1, i32 1)5314  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 6), i64} %0, 15315  store i64 %3, ptr %outvl5316  ret <vscale x 1 x double> %25317}5318 5319define <vscale x 1 x double> @test_vlseg7ff_nxv1f64_triscv.vector.tuple_nxv8i8_7t(ptr %base, i64 %vl, ptr %outvl) {5320; CHECK-LABEL: test_vlseg7ff_nxv1f64_triscv.vector.tuple_nxv8i8_7t:5321; CHECK:       # %bb.0: # %entry5322; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, ma5323; CHECK-NEXT:    vlseg7e64ff.v v7, (a0)5324; CHECK-NEXT:    csrr a0, vl5325; CHECK-NEXT:    sd a0, 0(a2)5326; CHECK-NEXT:    ret5327entry:5328  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 7), i64} @llvm.riscv.vlseg7ff.triscv.vector.tuple_nxv8i8_7t(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) poison, ptr %base, i64 %vl, i64 6)5329  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 7), i64} %0, 05330  %2 = call <vscale x 1 x double> @llvm.riscv.tuple.extract.nxv1f64.triscv.vector.tuple_nxv8i8_7t(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) %1, i32 1)5331  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 7), i64} %0, 15332  store i64 %3, ptr %outvl5333  ret <vscale x 1 x double> %25334}5335 5336define <vscale x 1 x double> @test_vlseg7ff_mask_nxv1f64_triscv.vector.tuple_nxv8i8_7t(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) %val, ptr %base, i64 %vl, <vscale x 1 x i1> %mask, ptr %outvl) {5337; CHECK-LABEL: test_vlseg7ff_mask_nxv1f64_triscv.vector.tuple_nxv8i8_7t:5338; CHECK:       # %bb.0: # %entry5339; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, mu5340; CHECK-NEXT:    vmv1r.v v7, v85341; CHECK-NEXT:    vmv1r.v v8, v95342; CHECK-NEXT:    vmv1r.v v9, v105343; CHECK-NEXT:    vmv1r.v v10, v115344; CHECK-NEXT:    vmv1r.v v11, v125345; CHECK-NEXT:    vmv1r.v v12, v135346; CHECK-NEXT:    vmv1r.v v13, v145347; CHECK-NEXT:    vlseg7e64ff.v v7, (a0), v0.t5348; CHECK-NEXT:    csrr a0, vl5349; CHECK-NEXT:    sd a0, 0(a2)5350; CHECK-NEXT:    ret5351entry:5352  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 7), i64} @llvm.riscv.vlseg7ff.mask.triscv.vector.tuple_nxv8i8_7t.nxv1i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) %val, ptr %base, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6)5353  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 7), i64} %0, 05354  %2 = call <vscale x 1 x double> @llvm.riscv.tuple.extract.nxv1f64.triscv.vector.tuple_nxv8i8_7t(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) %1, i32 1)5355  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 7), i64} %0, 15356  store i64 %3, ptr %outvl5357  ret <vscale x 1 x double> %25358}5359 5360define <vscale x 1 x double> @test_vlseg8ff_nxv1f64_triscv.vector.tuple_nxv8i8_8t(ptr %base, i64 %vl, ptr %outvl) {5361; CHECK-LABEL: test_vlseg8ff_nxv1f64_triscv.vector.tuple_nxv8i8_8t:5362; CHECK:       # %bb.0: # %entry5363; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, ma5364; CHECK-NEXT:    vlseg8e64ff.v v7, (a0)5365; CHECK-NEXT:    csrr a0, vl5366; CHECK-NEXT:    sd a0, 0(a2)5367; CHECK-NEXT:    ret5368entry:5369  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 8), i64} @llvm.riscv.vlseg8ff.triscv.vector.tuple_nxv8i8_8t(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) poison, ptr %base, i64 %vl, i64 6)5370  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 8), i64} %0, 05371  %2 = call <vscale x 1 x double> @llvm.riscv.tuple.extract.nxv1f64.triscv.vector.tuple_nxv8i8_8t(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) %1, i32 1)5372  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 8), i64} %0, 15373  store i64 %3, ptr %outvl5374  ret <vscale x 1 x double> %25375}5376 5377define <vscale x 1 x double> @test_vlseg8ff_mask_nxv1f64_triscv.vector.tuple_nxv8i8_8t(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) %val, ptr %base, i64 %vl, <vscale x 1 x i1> %mask, ptr %outvl) {5378; CHECK-LABEL: test_vlseg8ff_mask_nxv1f64_triscv.vector.tuple_nxv8i8_8t:5379; CHECK:       # %bb.0: # %entry5380; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, mu5381; CHECK-NEXT:    vmv1r.v v7, v85382; CHECK-NEXT:    vmv1r.v v8, v95383; CHECK-NEXT:    vmv1r.v v9, v105384; CHECK-NEXT:    vmv1r.v v10, v115385; CHECK-NEXT:    vmv1r.v v11, v125386; CHECK-NEXT:    vmv1r.v v12, v135387; CHECK-NEXT:    vmv1r.v v13, v145388; CHECK-NEXT:    vmv1r.v v14, v155389; CHECK-NEXT:    vlseg8e64ff.v v7, (a0), v0.t5390; CHECK-NEXT:    csrr a0, vl5391; CHECK-NEXT:    sd a0, 0(a2)5392; CHECK-NEXT:    ret5393entry:5394  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 8), i64} @llvm.riscv.vlseg8ff.mask.triscv.vector.tuple_nxv8i8_8t.nxv1i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) %val, ptr %base, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6)5395  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 8), i64} %0, 05396  %2 = call <vscale x 1 x double> @llvm.riscv.tuple.extract.nxv1f64.triscv.vector.tuple_nxv8i8_8t(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) %1, i32 1)5397  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 8), i64} %0, 15398  store i64 %3, ptr %outvl5399  ret <vscale x 1 x double> %25400}5401 5402define <vscale x 1 x bfloat> @test_vlseg2ff_nxv1bf16_triscv.vector.tuple_nxv2i8_2t(ptr %base, i64 %vl, ptr %outvl) {5403; CHECK-LABEL: test_vlseg2ff_nxv1bf16_triscv.vector.tuple_nxv2i8_2t:5404; CHECK:       # %bb.0: # %entry5405; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma5406; CHECK-NEXT:    vlseg2e16ff.v v7, (a0)5407; CHECK-NEXT:    csrr a0, vl5408; CHECK-NEXT:    sd a0, 0(a2)5409; CHECK-NEXT:    ret5410entry:5411  %0 = tail call {target("riscv.vector.tuple", <vscale x 2 x i8>, 2), i64} @llvm.riscv.vlseg2ff.triscv.vector.tuple_nxv2i8_2t(target("riscv.vector.tuple", <vscale x 2 x i8>, 2) poison, ptr %base, i64 %vl, i64 4)5412  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 2), i64} %0, 05413  %2 = call <vscale x 1 x bfloat> @llvm.riscv.tuple.extract.nxv1bf16.triscv.vector.tuple_nxv2i8_2t(target("riscv.vector.tuple", <vscale x 2 x i8>, 2) %1, i32 1)5414  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 2), i64} %0, 15415  store i64 %3, ptr %outvl5416  ret <vscale x 1 x bfloat> %25417}5418 5419define <vscale x 1 x bfloat> @test_vlseg2ff_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_2t(target("riscv.vector.tuple", <vscale x 2 x i8>, 2) %val, ptr %base, i64 %vl, <vscale x 1 x i1> %mask, ptr %outvl) {5420; CHECK-LABEL: test_vlseg2ff_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_2t:5421; CHECK:       # %bb.0: # %entry5422; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, mu5423; CHECK-NEXT:    vmv1r.v v7, v85424; CHECK-NEXT:    vmv1r.v v8, v95425; CHECK-NEXT:    vlseg2e16ff.v v7, (a0), v0.t5426; CHECK-NEXT:    csrr a0, vl5427; CHECK-NEXT:    sd a0, 0(a2)5428; CHECK-NEXT:    ret5429entry:5430  %0 = tail call {target("riscv.vector.tuple", <vscale x 2 x i8>, 2), i64} @llvm.riscv.vlseg2ff.mask.triscv.vector.tuple_nxv2i8_2t.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 2) %val, ptr %base, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4)5431  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 2), i64} %0, 05432  %2 = call <vscale x 1 x bfloat> @llvm.riscv.tuple.extract.nxv1bf16.triscv.vector.tuple_nxv2i8_2t(target("riscv.vector.tuple", <vscale x 2 x i8>, 2) %1, i32 1)5433  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 2), i64} %0, 15434  store i64 %3, ptr %outvl5435  ret <vscale x 1 x bfloat> %25436}5437 5438define <vscale x 2 x bfloat> @test_vlseg2ff_nxv2bf16_triscv.vector.tuple_nxv4i8_2t(ptr %base, i64 %vl, ptr %outvl) {5439; CHECK-LABEL: test_vlseg2ff_nxv2bf16_triscv.vector.tuple_nxv4i8_2t:5440; CHECK:       # %bb.0: # %entry5441; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma5442; CHECK-NEXT:    vlseg2e16ff.v v7, (a0)5443; CHECK-NEXT:    csrr a0, vl5444; CHECK-NEXT:    sd a0, 0(a2)5445; CHECK-NEXT:    ret5446entry:5447  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 2), i64} @llvm.riscv.vlseg2ff.triscv.vector.tuple_nxv4i8_2t(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) poison, ptr %base, i64 %vl, i64 4)5448  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 2), i64} %0, 05449  %2 = call <vscale x 2 x bfloat> @llvm.riscv.tuple.extract.nxv2bf16.triscv.vector.tuple_nxv4i8_2t(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) %1, i32 1)5450  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 2), i64} %0, 15451  store i64 %3, ptr %outvl5452  ret <vscale x 2 x bfloat> %25453}5454 5455define <vscale x 2 x bfloat> @test_vlseg2ff_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_2t(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) %val, ptr %base, i64 %vl, <vscale x 2 x i1> %mask, ptr %outvl) {5456; CHECK-LABEL: test_vlseg2ff_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_2t:5457; CHECK:       # %bb.0: # %entry5458; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, mu5459; CHECK-NEXT:    vmv1r.v v7, v85460; CHECK-NEXT:    vmv1r.v v8, v95461; CHECK-NEXT:    vlseg2e16ff.v v7, (a0), v0.t5462; CHECK-NEXT:    csrr a0, vl5463; CHECK-NEXT:    sd a0, 0(a2)5464; CHECK-NEXT:    ret5465entry:5466  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 2), i64} @llvm.riscv.vlseg2ff.mask.triscv.vector.tuple_nxv4i8_2t.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) %val, ptr %base, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4)5467  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 2), i64} %0, 05468  %2 = call <vscale x 2 x bfloat> @llvm.riscv.tuple.extract.nxv2bf16.triscv.vector.tuple_nxv4i8_2t(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) %1, i32 1)5469  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 2), i64} %0, 15470  store i64 %3, ptr %outvl5471  ret <vscale x 2 x bfloat> %25472}5473 5474define <vscale x 4 x bfloat> @test_vlseg2ff_nxv4bf16_triscv.vector.tuple_nxv8i8_2t(ptr %base, i64 %vl, ptr %outvl) {5475; CHECK-LABEL: test_vlseg2ff_nxv4bf16_triscv.vector.tuple_nxv8i8_2t:5476; CHECK:       # %bb.0: # %entry5477; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma5478; CHECK-NEXT:    vlseg2e16ff.v v7, (a0)5479; CHECK-NEXT:    csrr a0, vl5480; CHECK-NEXT:    sd a0, 0(a2)5481; CHECK-NEXT:    ret5482entry:5483  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 2), i64} @llvm.riscv.vlseg2ff.triscv.vector.tuple_nxv8i8_2t(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) poison, ptr %base, i64 %vl, i64 4)5484  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 2), i64} %0, 05485  %2 = call <vscale x 4 x bfloat> @llvm.riscv.tuple.extract.nxv4bf16.triscv.vector.tuple_nxv8i8_2t(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) %1, i32 1)5486  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 2), i64} %0, 15487  store i64 %3, ptr %outvl5488  ret <vscale x 4 x bfloat> %25489}5490 5491define <vscale x 4 x bfloat> @test_vlseg2ff_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_2t(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) %val, ptr %base, i64 %vl, <vscale x 4 x i1> %mask, ptr %outvl) {5492; CHECK-LABEL: test_vlseg2ff_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_2t:5493; CHECK:       # %bb.0: # %entry5494; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, mu5495; CHECK-NEXT:    vmv1r.v v7, v85496; CHECK-NEXT:    vmv1r.v v8, v95497; CHECK-NEXT:    vlseg2e16ff.v v7, (a0), v0.t5498; CHECK-NEXT:    csrr a0, vl5499; CHECK-NEXT:    sd a0, 0(a2)5500; CHECK-NEXT:    ret5501entry:5502  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 2), i64} @llvm.riscv.vlseg2ff.mask.triscv.vector.tuple_nxv8i8_2t.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) %val, ptr %base, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4)5503  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 2), i64} %0, 05504  %2 = call <vscale x 4 x bfloat> @llvm.riscv.tuple.extract.nxv4bf16.triscv.vector.tuple_nxv8i8_2t(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) %1, i32 1)5505  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 2), i64} %0, 15506  store i64 %3, ptr %outvl5507  ret <vscale x 4 x bfloat> %25508}5509 5510define <vscale x 8 x bfloat> @test_vlseg2ff_nxv8bf16_triscv.vector.tuple_nxv16i8_2t(ptr %base, i64 %vl, ptr %outvl) {5511; CHECK-LABEL: test_vlseg2ff_nxv8bf16_triscv.vector.tuple_nxv16i8_2t:5512; CHECK:       # %bb.0: # %entry5513; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma5514; CHECK-NEXT:    vlseg2e16ff.v v6, (a0)5515; CHECK-NEXT:    csrr a0, vl5516; CHECK-NEXT:    sd a0, 0(a2)5517; CHECK-NEXT:    ret5518entry:5519  %0 = tail call {target("riscv.vector.tuple", <vscale x 16 x i8>, 2), i64} @llvm.riscv.vlseg2ff.triscv.vector.tuple_nxv16i8_2t(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) poison, ptr %base, i64 %vl, i64 4)5520  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 2), i64} %0, 05521  %2 = call <vscale x 8 x bfloat> @llvm.riscv.tuple.extract.nxv8bf16.triscv.vector.tuple_nxv16i8_2t(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) %1, i32 1)5522  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 2), i64} %0, 15523  store i64 %3, ptr %outvl5524  ret <vscale x 8 x bfloat> %25525}5526 5527define <vscale x 8 x bfloat> @test_vlseg2ff_mask_nxv8bf16_triscv.vector.tuple_nxv16i8_2t(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) %val, ptr %base, i64 %vl, <vscale x 8 x i1> %mask, ptr %outvl) {5528; CHECK-LABEL: test_vlseg2ff_mask_nxv8bf16_triscv.vector.tuple_nxv16i8_2t:5529; CHECK:       # %bb.0: # %entry5530; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, mu5531; CHECK-NEXT:    vmv2r.v v6, v85532; CHECK-NEXT:    vmv2r.v v8, v105533; CHECK-NEXT:    vlseg2e16ff.v v6, (a0), v0.t5534; CHECK-NEXT:    csrr a0, vl5535; CHECK-NEXT:    sd a0, 0(a2)5536; CHECK-NEXT:    ret5537entry:5538  %0 = tail call {target("riscv.vector.tuple", <vscale x 16 x i8>, 2), i64} @llvm.riscv.vlseg2ff.mask.triscv.vector.tuple_nxv16i8_2t.nxv8i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) %val, ptr %base, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 4)5539  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 2), i64} %0, 05540  %2 = call <vscale x 8 x bfloat> @llvm.riscv.tuple.extract.nxv8bf16.triscv.vector.tuple_nxv16i8_2t(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) %1, i32 1)5541  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 2), i64} %0, 15542  store i64 %3, ptr %outvl5543  ret <vscale x 8 x bfloat> %25544}5545 5546define <vscale x 16 x bfloat> @test_vlseg2ff_nxv16bf16_triscv.vector.tuple_nxv32i8_2t(ptr %base, i64 %vl, ptr %outvl) {5547; CHECK-LABEL: test_vlseg2ff_nxv16bf16_triscv.vector.tuple_nxv32i8_2t:5548; CHECK:       # %bb.0: # %entry5549; CHECK-NEXT:    vsetvli zero, a1, e16, m4, ta, ma5550; CHECK-NEXT:    vlseg2e16ff.v v4, (a0)5551; CHECK-NEXT:    csrr a0, vl5552; CHECK-NEXT:    sd a0, 0(a2)5553; CHECK-NEXT:    ret5554entry:5555  %0 = tail call {target("riscv.vector.tuple", <vscale x 32 x i8>, 2), i64} @llvm.riscv.vlseg2ff.triscv.vector.tuple_nxv32i8_2t(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) poison, ptr %base, i64 %vl, i64 4)5556  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 32 x i8>, 2), i64} %0, 05557  %2 = call <vscale x 16 x bfloat> @llvm.riscv.tuple.extract.nxv16bf16.triscv.vector.tuple_nxv32i8_2t(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) %1, i32 1)5558  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 32 x i8>, 2), i64} %0, 15559  store i64 %3, ptr %outvl5560  ret <vscale x 16 x bfloat> %25561}5562 5563define <vscale x 16 x bfloat> @test_vlseg2ff_mask_nxv16bf16_triscv.vector.tuple_nxv32i8_2t(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) %val, ptr %base, i64 %vl, <vscale x 16 x i1> %mask, ptr %outvl) {5564; CHECK-LABEL: test_vlseg2ff_mask_nxv16bf16_triscv.vector.tuple_nxv32i8_2t:5565; CHECK:       # %bb.0: # %entry5566; CHECK-NEXT:    vsetvli zero, a1, e16, m4, ta, mu5567; CHECK-NEXT:    vmv4r.v v4, v85568; CHECK-NEXT:    vmv4r.v v8, v125569; CHECK-NEXT:    vlseg2e16ff.v v4, (a0), v0.t5570; CHECK-NEXT:    csrr a0, vl5571; CHECK-NEXT:    sd a0, 0(a2)5572; CHECK-NEXT:    ret5573entry:5574  %0 = tail call {target("riscv.vector.tuple", <vscale x 32 x i8>, 2), i64} @llvm.riscv.vlseg2ff.mask.triscv.vector.tuple_nxv32i8_2t.nxv16i1(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) %val, ptr %base, <vscale x 16 x i1> %mask, i64 %vl, i64 1, i64 4)5575  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 32 x i8>, 2), i64} %0, 05576  %2 = call <vscale x 16 x bfloat> @llvm.riscv.tuple.extract.nxv16bf16.triscv.vector.tuple_nxv32i8_2t(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) %1, i32 1)5577  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 32 x i8>, 2), i64} %0, 15578  store i64 %3, ptr %outvl5579  ret <vscale x 16 x bfloat> %25580}5581 5582define <vscale x 1 x bfloat> @test_vlseg3ff_nxv1bf16_triscv.vector.tuple_nxv2i8_3t(ptr %base, i64 %vl, ptr %outvl) {5583; CHECK-LABEL: test_vlseg3ff_nxv1bf16_triscv.vector.tuple_nxv2i8_3t:5584; CHECK:       # %bb.0: # %entry5585; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma5586; CHECK-NEXT:    vlseg3e16ff.v v7, (a0)5587; CHECK-NEXT:    csrr a0, vl5588; CHECK-NEXT:    sd a0, 0(a2)5589; CHECK-NEXT:    ret5590entry:5591  %0 = tail call {target("riscv.vector.tuple", <vscale x 2 x i8>, 3), i64} @llvm.riscv.vlseg3ff.triscv.vector.tuple_nxv2i8_3t(target("riscv.vector.tuple", <vscale x 2 x i8>, 3) poison, ptr %base, i64 %vl, i64 4)5592  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 3), i64} %0, 05593  %2 = call <vscale x 1 x bfloat> @llvm.riscv.tuple.extract.nxv1bf16.triscv.vector.tuple_nxv2i8_3t(target("riscv.vector.tuple", <vscale x 2 x i8>, 3) %1, i32 1)5594  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 3), i64} %0, 15595  store i64 %3, ptr %outvl5596  ret <vscale x 1 x bfloat> %25597}5598 5599define <vscale x 1 x bfloat> @test_vlseg3ff_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_3t(target("riscv.vector.tuple", <vscale x 2 x i8>, 3) %val, ptr %base, i64 %vl, <vscale x 1 x i1> %mask, ptr %outvl) {5600; CHECK-LABEL: test_vlseg3ff_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_3t:5601; CHECK:       # %bb.0: # %entry5602; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, mu5603; CHECK-NEXT:    vmv1r.v v7, v85604; CHECK-NEXT:    vmv1r.v v8, v95605; CHECK-NEXT:    vmv1r.v v9, v105606; CHECK-NEXT:    vlseg3e16ff.v v7, (a0), v0.t5607; CHECK-NEXT:    csrr a0, vl5608; CHECK-NEXT:    sd a0, 0(a2)5609; CHECK-NEXT:    ret5610entry:5611  %0 = tail call {target("riscv.vector.tuple", <vscale x 2 x i8>, 3), i64} @llvm.riscv.vlseg3ff.mask.triscv.vector.tuple_nxv2i8_3t.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 3) %val, ptr %base, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4)5612  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 3), i64} %0, 05613  %2 = call <vscale x 1 x bfloat> @llvm.riscv.tuple.extract.nxv1bf16.triscv.vector.tuple_nxv2i8_3t(target("riscv.vector.tuple", <vscale x 2 x i8>, 3) %1, i32 1)5614  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 3), i64} %0, 15615  store i64 %3, ptr %outvl5616  ret <vscale x 1 x bfloat> %25617}5618 5619define <vscale x 2 x bfloat> @test_vlseg3ff_nxv2bf16_triscv.vector.tuple_nxv4i8_3t(ptr %base, i64 %vl, ptr %outvl) {5620; CHECK-LABEL: test_vlseg3ff_nxv2bf16_triscv.vector.tuple_nxv4i8_3t:5621; CHECK:       # %bb.0: # %entry5622; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma5623; CHECK-NEXT:    vlseg3e16ff.v v7, (a0)5624; CHECK-NEXT:    csrr a0, vl5625; CHECK-NEXT:    sd a0, 0(a2)5626; CHECK-NEXT:    ret5627entry:5628  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 3), i64} @llvm.riscv.vlseg3ff.triscv.vector.tuple_nxv4i8_3t(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) poison, ptr %base, i64 %vl, i64 4)5629  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 3), i64} %0, 05630  %2 = call <vscale x 2 x bfloat> @llvm.riscv.tuple.extract.nxv2bf16.triscv.vector.tuple_nxv4i8_3t(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) %1, i32 1)5631  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 3), i64} %0, 15632  store i64 %3, ptr %outvl5633  ret <vscale x 2 x bfloat> %25634}5635 5636define <vscale x 2 x bfloat> @test_vlseg3ff_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_3t(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) %val, ptr %base, i64 %vl, <vscale x 2 x i1> %mask, ptr %outvl) {5637; CHECK-LABEL: test_vlseg3ff_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_3t:5638; CHECK:       # %bb.0: # %entry5639; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, mu5640; CHECK-NEXT:    vmv1r.v v7, v85641; CHECK-NEXT:    vmv1r.v v8, v95642; CHECK-NEXT:    vmv1r.v v9, v105643; CHECK-NEXT:    vlseg3e16ff.v v7, (a0), v0.t5644; CHECK-NEXT:    csrr a0, vl5645; CHECK-NEXT:    sd a0, 0(a2)5646; CHECK-NEXT:    ret5647entry:5648  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 3), i64} @llvm.riscv.vlseg3ff.mask.triscv.vector.tuple_nxv4i8_3t.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) %val, ptr %base, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4)5649  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 3), i64} %0, 05650  %2 = call <vscale x 2 x bfloat> @llvm.riscv.tuple.extract.nxv2bf16.triscv.vector.tuple_nxv4i8_3t(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) %1, i32 1)5651  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 3), i64} %0, 15652  store i64 %3, ptr %outvl5653  ret <vscale x 2 x bfloat> %25654}5655 5656define <vscale x 4 x bfloat> @test_vlseg3ff_nxv4bf16_triscv.vector.tuple_nxv8i8_3t(ptr %base, i64 %vl, ptr %outvl) {5657; CHECK-LABEL: test_vlseg3ff_nxv4bf16_triscv.vector.tuple_nxv8i8_3t:5658; CHECK:       # %bb.0: # %entry5659; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma5660; CHECK-NEXT:    vlseg3e16ff.v v7, (a0)5661; CHECK-NEXT:    csrr a0, vl5662; CHECK-NEXT:    sd a0, 0(a2)5663; CHECK-NEXT:    ret5664entry:5665  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 3), i64} @llvm.riscv.vlseg3ff.triscv.vector.tuple_nxv8i8_3t(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) poison, ptr %base, i64 %vl, i64 4)5666  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 3), i64} %0, 05667  %2 = call <vscale x 4 x bfloat> @llvm.riscv.tuple.extract.nxv4bf16.triscv.vector.tuple_nxv8i8_3t(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) %1, i32 1)5668  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 3), i64} %0, 15669  store i64 %3, ptr %outvl5670  ret <vscale x 4 x bfloat> %25671}5672 5673define <vscale x 4 x bfloat> @test_vlseg3ff_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_3t(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) %val, ptr %base, i64 %vl, <vscale x 4 x i1> %mask, ptr %outvl) {5674; CHECK-LABEL: test_vlseg3ff_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_3t:5675; CHECK:       # %bb.0: # %entry5676; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, mu5677; CHECK-NEXT:    vmv1r.v v7, v85678; CHECK-NEXT:    vmv1r.v v8, v95679; CHECK-NEXT:    vmv1r.v v9, v105680; CHECK-NEXT:    vlseg3e16ff.v v7, (a0), v0.t5681; CHECK-NEXT:    csrr a0, vl5682; CHECK-NEXT:    sd a0, 0(a2)5683; CHECK-NEXT:    ret5684entry:5685  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 3), i64} @llvm.riscv.vlseg3ff.mask.triscv.vector.tuple_nxv8i8_3t.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) %val, ptr %base, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4)5686  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 3), i64} %0, 05687  %2 = call <vscale x 4 x bfloat> @llvm.riscv.tuple.extract.nxv4bf16.triscv.vector.tuple_nxv8i8_3t(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) %1, i32 1)5688  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 3), i64} %0, 15689  store i64 %3, ptr %outvl5690  ret <vscale x 4 x bfloat> %25691}5692 5693define <vscale x 8 x bfloat> @test_vlseg3ff_nxv8bf16_triscv.vector.tuple_nxv16i8_3t(ptr %base, i64 %vl, ptr %outvl) {5694; CHECK-LABEL: test_vlseg3ff_nxv8bf16_triscv.vector.tuple_nxv16i8_3t:5695; CHECK:       # %bb.0: # %entry5696; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma5697; CHECK-NEXT:    vlseg3e16ff.v v6, (a0)5698; CHECK-NEXT:    csrr a0, vl5699; CHECK-NEXT:    sd a0, 0(a2)5700; CHECK-NEXT:    ret5701entry:5702  %0 = tail call {target("riscv.vector.tuple", <vscale x 16 x i8>, 3), i64} @llvm.riscv.vlseg3ff.triscv.vector.tuple_nxv16i8_3t(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) poison, ptr %base, i64 %vl, i64 4)5703  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 3), i64} %0, 05704  %2 = call <vscale x 8 x bfloat> @llvm.riscv.tuple.extract.nxv8bf16.triscv.vector.tuple_nxv16i8_3t(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) %1, i32 1)5705  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 3), i64} %0, 15706  store i64 %3, ptr %outvl5707  ret <vscale x 8 x bfloat> %25708}5709 5710define <vscale x 8 x bfloat> @test_vlseg3ff_mask_nxv8bf16_triscv.vector.tuple_nxv16i8_3t(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) %val, ptr %base, i64 %vl, <vscale x 8 x i1> %mask, ptr %outvl) {5711; CHECK-LABEL: test_vlseg3ff_mask_nxv8bf16_triscv.vector.tuple_nxv16i8_3t:5712; CHECK:       # %bb.0: # %entry5713; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, mu5714; CHECK-NEXT:    vmv2r.v v6, v85715; CHECK-NEXT:    vmv2r.v v8, v105716; CHECK-NEXT:    vmv2r.v v10, v125717; CHECK-NEXT:    vlseg3e16ff.v v6, (a0), v0.t5718; CHECK-NEXT:    csrr a0, vl5719; CHECK-NEXT:    sd a0, 0(a2)5720; CHECK-NEXT:    ret5721entry:5722  %0 = tail call {target("riscv.vector.tuple", <vscale x 16 x i8>, 3), i64} @llvm.riscv.vlseg3ff.mask.triscv.vector.tuple_nxv16i8_3t.nxv8i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) %val, ptr %base, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 4)5723  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 3), i64} %0, 05724  %2 = call <vscale x 8 x bfloat> @llvm.riscv.tuple.extract.nxv8bf16.triscv.vector.tuple_nxv16i8_3t(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) %1, i32 1)5725  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 3), i64} %0, 15726  store i64 %3, ptr %outvl5727  ret <vscale x 8 x bfloat> %25728}5729 5730define <vscale x 1 x bfloat> @test_vlseg4ff_nxv1bf16_triscv.vector.tuple_nxv2i8_4t(ptr %base, i64 %vl, ptr %outvl) {5731; CHECK-LABEL: test_vlseg4ff_nxv1bf16_triscv.vector.tuple_nxv2i8_4t:5732; CHECK:       # %bb.0: # %entry5733; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma5734; CHECK-NEXT:    vlseg4e16ff.v v7, (a0)5735; CHECK-NEXT:    csrr a0, vl5736; CHECK-NEXT:    sd a0, 0(a2)5737; CHECK-NEXT:    ret5738entry:5739  %0 = tail call {target("riscv.vector.tuple", <vscale x 2 x i8>, 4), i64} @llvm.riscv.vlseg4ff.triscv.vector.tuple_nxv2i8_4t(target("riscv.vector.tuple", <vscale x 2 x i8>, 4) poison, ptr %base, i64 %vl, i64 4)5740  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 4), i64} %0, 05741  %2 = call <vscale x 1 x bfloat> @llvm.riscv.tuple.extract.nxv1bf16.triscv.vector.tuple_nxv2i8_4t(target("riscv.vector.tuple", <vscale x 2 x i8>, 4) %1, i32 1)5742  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 4), i64} %0, 15743  store i64 %3, ptr %outvl5744  ret <vscale x 1 x bfloat> %25745}5746 5747define <vscale x 1 x bfloat> @test_vlseg4ff_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_4t(target("riscv.vector.tuple", <vscale x 2 x i8>, 4) %val, ptr %base, i64 %vl, <vscale x 1 x i1> %mask, ptr %outvl) {5748; CHECK-LABEL: test_vlseg4ff_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_4t:5749; CHECK:       # %bb.0: # %entry5750; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, mu5751; CHECK-NEXT:    vmv1r.v v7, v85752; CHECK-NEXT:    vmv1r.v v8, v95753; CHECK-NEXT:    vmv1r.v v9, v105754; CHECK-NEXT:    vmv1r.v v10, v115755; CHECK-NEXT:    vlseg4e16ff.v v7, (a0), v0.t5756; CHECK-NEXT:    csrr a0, vl5757; CHECK-NEXT:    sd a0, 0(a2)5758; CHECK-NEXT:    ret5759entry:5760  %0 = tail call {target("riscv.vector.tuple", <vscale x 2 x i8>, 4), i64} @llvm.riscv.vlseg4ff.mask.triscv.vector.tuple_nxv2i8_4t.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 4) %val, ptr %base, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4)5761  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 4), i64} %0, 05762  %2 = call <vscale x 1 x bfloat> @llvm.riscv.tuple.extract.nxv1bf16.triscv.vector.tuple_nxv2i8_4t(target("riscv.vector.tuple", <vscale x 2 x i8>, 4) %1, i32 1)5763  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 4), i64} %0, 15764  store i64 %3, ptr %outvl5765  ret <vscale x 1 x bfloat> %25766}5767 5768define <vscale x 2 x bfloat> @test_vlseg4ff_nxv2bf16_triscv.vector.tuple_nxv4i8_4t(ptr %base, i64 %vl, ptr %outvl) {5769; CHECK-LABEL: test_vlseg4ff_nxv2bf16_triscv.vector.tuple_nxv4i8_4t:5770; CHECK:       # %bb.0: # %entry5771; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma5772; CHECK-NEXT:    vlseg4e16ff.v v7, (a0)5773; CHECK-NEXT:    csrr a0, vl5774; CHECK-NEXT:    sd a0, 0(a2)5775; CHECK-NEXT:    ret5776entry:5777  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 4), i64} @llvm.riscv.vlseg4ff.triscv.vector.tuple_nxv4i8_4t(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) poison, ptr %base, i64 %vl, i64 4)5778  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 4), i64} %0, 05779  %2 = call <vscale x 2 x bfloat> @llvm.riscv.tuple.extract.nxv2bf16.triscv.vector.tuple_nxv4i8_4t(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) %1, i32 1)5780  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 4), i64} %0, 15781  store i64 %3, ptr %outvl5782  ret <vscale x 2 x bfloat> %25783}5784 5785define <vscale x 2 x bfloat> @test_vlseg4ff_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_4t(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) %val, ptr %base, i64 %vl, <vscale x 2 x i1> %mask, ptr %outvl) {5786; CHECK-LABEL: test_vlseg4ff_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_4t:5787; CHECK:       # %bb.0: # %entry5788; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, mu5789; CHECK-NEXT:    vmv1r.v v7, v85790; CHECK-NEXT:    vmv1r.v v8, v95791; CHECK-NEXT:    vmv1r.v v9, v105792; CHECK-NEXT:    vmv1r.v v10, v115793; CHECK-NEXT:    vlseg4e16ff.v v7, (a0), v0.t5794; CHECK-NEXT:    csrr a0, vl5795; CHECK-NEXT:    sd a0, 0(a2)5796; CHECK-NEXT:    ret5797entry:5798  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 4), i64} @llvm.riscv.vlseg4ff.mask.triscv.vector.tuple_nxv4i8_4t.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) %val, ptr %base, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4)5799  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 4), i64} %0, 05800  %2 = call <vscale x 2 x bfloat> @llvm.riscv.tuple.extract.nxv2bf16.triscv.vector.tuple_nxv4i8_4t(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) %1, i32 1)5801  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 4), i64} %0, 15802  store i64 %3, ptr %outvl5803  ret <vscale x 2 x bfloat> %25804}5805 5806define <vscale x 4 x bfloat> @test_vlseg4ff_nxv4bf16_triscv.vector.tuple_nxv8i8_4t(ptr %base, i64 %vl, ptr %outvl) {5807; CHECK-LABEL: test_vlseg4ff_nxv4bf16_triscv.vector.tuple_nxv8i8_4t:5808; CHECK:       # %bb.0: # %entry5809; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma5810; CHECK-NEXT:    vlseg4e16ff.v v7, (a0)5811; CHECK-NEXT:    csrr a0, vl5812; CHECK-NEXT:    sd a0, 0(a2)5813; CHECK-NEXT:    ret5814entry:5815  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 4), i64} @llvm.riscv.vlseg4ff.triscv.vector.tuple_nxv8i8_4t(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) poison, ptr %base, i64 %vl, i64 4)5816  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 4), i64} %0, 05817  %2 = call <vscale x 4 x bfloat> @llvm.riscv.tuple.extract.nxv4bf16.triscv.vector.tuple_nxv8i8_4t(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) %1, i32 1)5818  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 4), i64} %0, 15819  store i64 %3, ptr %outvl5820  ret <vscale x 4 x bfloat> %25821}5822 5823define <vscale x 4 x bfloat> @test_vlseg4ff_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_4t(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) %val, ptr %base, i64 %vl, <vscale x 4 x i1> %mask, ptr %outvl) {5824; CHECK-LABEL: test_vlseg4ff_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_4t:5825; CHECK:       # %bb.0: # %entry5826; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, mu5827; CHECK-NEXT:    vmv1r.v v7, v85828; CHECK-NEXT:    vmv1r.v v8, v95829; CHECK-NEXT:    vmv1r.v v9, v105830; CHECK-NEXT:    vmv1r.v v10, v115831; CHECK-NEXT:    vlseg4e16ff.v v7, (a0), v0.t5832; CHECK-NEXT:    csrr a0, vl5833; CHECK-NEXT:    sd a0, 0(a2)5834; CHECK-NEXT:    ret5835entry:5836  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 4), i64} @llvm.riscv.vlseg4ff.mask.triscv.vector.tuple_nxv8i8_4t.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) %val, ptr %base, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4)5837  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 4), i64} %0, 05838  %2 = call <vscale x 4 x bfloat> @llvm.riscv.tuple.extract.nxv4bf16.triscv.vector.tuple_nxv8i8_4t(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) %1, i32 1)5839  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 4), i64} %0, 15840  store i64 %3, ptr %outvl5841  ret <vscale x 4 x bfloat> %25842}5843 5844define <vscale x 8 x bfloat> @test_vlseg4ff_nxv8bf16_triscv.vector.tuple_nxv16i8_4t(ptr %base, i64 %vl, ptr %outvl) {5845; CHECK-LABEL: test_vlseg4ff_nxv8bf16_triscv.vector.tuple_nxv16i8_4t:5846; CHECK:       # %bb.0: # %entry5847; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma5848; CHECK-NEXT:    vlseg4e16ff.v v6, (a0)5849; CHECK-NEXT:    csrr a0, vl5850; CHECK-NEXT:    sd a0, 0(a2)5851; CHECK-NEXT:    ret5852entry:5853  %0 = tail call {target("riscv.vector.tuple", <vscale x 16 x i8>, 4), i64} @llvm.riscv.vlseg4ff.triscv.vector.tuple_nxv16i8_4t(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) poison, ptr %base, i64 %vl, i64 4)5854  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 4), i64} %0, 05855  %2 = call <vscale x 8 x bfloat> @llvm.riscv.tuple.extract.nxv8bf16.triscv.vector.tuple_nxv16i8_4t(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) %1, i32 1)5856  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 4), i64} %0, 15857  store i64 %3, ptr %outvl5858  ret <vscale x 8 x bfloat> %25859}5860 5861define <vscale x 8 x bfloat> @test_vlseg4ff_mask_nxv8bf16_triscv.vector.tuple_nxv16i8_4t(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) %val, ptr %base, i64 %vl, <vscale x 8 x i1> %mask, ptr %outvl) {5862; CHECK-LABEL: test_vlseg4ff_mask_nxv8bf16_triscv.vector.tuple_nxv16i8_4t:5863; CHECK:       # %bb.0: # %entry5864; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, mu5865; CHECK-NEXT:    vmv2r.v v6, v85866; CHECK-NEXT:    vmv2r.v v8, v105867; CHECK-NEXT:    vmv2r.v v10, v125868; CHECK-NEXT:    vmv2r.v v12, v145869; CHECK-NEXT:    vlseg4e16ff.v v6, (a0), v0.t5870; CHECK-NEXT:    csrr a0, vl5871; CHECK-NEXT:    sd a0, 0(a2)5872; CHECK-NEXT:    ret5873entry:5874  %0 = tail call {target("riscv.vector.tuple", <vscale x 16 x i8>, 4), i64} @llvm.riscv.vlseg4ff.mask.triscv.vector.tuple_nxv16i8_4t.nxv8i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) %val, ptr %base, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 4)5875  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 4), i64} %0, 05876  %2 = call <vscale x 8 x bfloat> @llvm.riscv.tuple.extract.nxv8bf16.triscv.vector.tuple_nxv16i8_4t(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) %1, i32 1)5877  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 16 x i8>, 4), i64} %0, 15878  store i64 %3, ptr %outvl5879  ret <vscale x 8 x bfloat> %25880}5881 5882define <vscale x 1 x bfloat> @test_vlseg5ff_nxv1bf16_triscv.vector.tuple_nxv2i8_5t(ptr %base, i64 %vl, ptr %outvl) {5883; CHECK-LABEL: test_vlseg5ff_nxv1bf16_triscv.vector.tuple_nxv2i8_5t:5884; CHECK:       # %bb.0: # %entry5885; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma5886; CHECK-NEXT:    vlseg5e16ff.v v7, (a0)5887; CHECK-NEXT:    csrr a0, vl5888; CHECK-NEXT:    sd a0, 0(a2)5889; CHECK-NEXT:    ret5890entry:5891  %0 = tail call {target("riscv.vector.tuple", <vscale x 2 x i8>, 5), i64} @llvm.riscv.vlseg5ff.triscv.vector.tuple_nxv2i8_5t(target("riscv.vector.tuple", <vscale x 2 x i8>, 5) poison, ptr %base, i64 %vl, i64 4)5892  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 5), i64} %0, 05893  %2 = call <vscale x 1 x bfloat> @llvm.riscv.tuple.extract.nxv1bf16.triscv.vector.tuple_nxv2i8_5t(target("riscv.vector.tuple", <vscale x 2 x i8>, 5) %1, i32 1)5894  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 5), i64} %0, 15895  store i64 %3, ptr %outvl5896  ret <vscale x 1 x bfloat> %25897}5898 5899define <vscale x 1 x bfloat> @test_vlseg5ff_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_5t(target("riscv.vector.tuple", <vscale x 2 x i8>, 5) %val, ptr %base, i64 %vl, <vscale x 1 x i1> %mask, ptr %outvl) {5900; CHECK-LABEL: test_vlseg5ff_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_5t:5901; CHECK:       # %bb.0: # %entry5902; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, mu5903; CHECK-NEXT:    vmv1r.v v7, v85904; CHECK-NEXT:    vmv1r.v v8, v95905; CHECK-NEXT:    vmv1r.v v9, v105906; CHECK-NEXT:    vmv1r.v v10, v115907; CHECK-NEXT:    vmv1r.v v11, v125908; CHECK-NEXT:    vlseg5e16ff.v v7, (a0), v0.t5909; CHECK-NEXT:    csrr a0, vl5910; CHECK-NEXT:    sd a0, 0(a2)5911; CHECK-NEXT:    ret5912entry:5913  %0 = tail call {target("riscv.vector.tuple", <vscale x 2 x i8>, 5), i64} @llvm.riscv.vlseg5ff.mask.triscv.vector.tuple_nxv2i8_5t.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 5) %val, ptr %base, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4)5914  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 5), i64} %0, 05915  %2 = call <vscale x 1 x bfloat> @llvm.riscv.tuple.extract.nxv1bf16.triscv.vector.tuple_nxv2i8_5t(target("riscv.vector.tuple", <vscale x 2 x i8>, 5) %1, i32 1)5916  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 5), i64} %0, 15917  store i64 %3, ptr %outvl5918  ret <vscale x 1 x bfloat> %25919}5920 5921define <vscale x 2 x bfloat> @test_vlseg5ff_nxv2bf16_triscv.vector.tuple_nxv4i8_5t(ptr %base, i64 %vl, ptr %outvl) {5922; CHECK-LABEL: test_vlseg5ff_nxv2bf16_triscv.vector.tuple_nxv4i8_5t:5923; CHECK:       # %bb.0: # %entry5924; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma5925; CHECK-NEXT:    vlseg5e16ff.v v7, (a0)5926; CHECK-NEXT:    csrr a0, vl5927; CHECK-NEXT:    sd a0, 0(a2)5928; CHECK-NEXT:    ret5929entry:5930  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 5), i64} @llvm.riscv.vlseg5ff.triscv.vector.tuple_nxv4i8_5t(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) poison, ptr %base, i64 %vl, i64 4)5931  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 5), i64} %0, 05932  %2 = call <vscale x 2 x bfloat> @llvm.riscv.tuple.extract.nxv2bf16.triscv.vector.tuple_nxv4i8_5t(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) %1, i32 1)5933  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 5), i64} %0, 15934  store i64 %3, ptr %outvl5935  ret <vscale x 2 x bfloat> %25936}5937 5938define <vscale x 2 x bfloat> @test_vlseg5ff_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_5t(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) %val, ptr %base, i64 %vl, <vscale x 2 x i1> %mask, ptr %outvl) {5939; CHECK-LABEL: test_vlseg5ff_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_5t:5940; CHECK:       # %bb.0: # %entry5941; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, mu5942; CHECK-NEXT:    vmv1r.v v7, v85943; CHECK-NEXT:    vmv1r.v v8, v95944; CHECK-NEXT:    vmv1r.v v9, v105945; CHECK-NEXT:    vmv1r.v v10, v115946; CHECK-NEXT:    vmv1r.v v11, v125947; CHECK-NEXT:    vlseg5e16ff.v v7, (a0), v0.t5948; CHECK-NEXT:    csrr a0, vl5949; CHECK-NEXT:    sd a0, 0(a2)5950; CHECK-NEXT:    ret5951entry:5952  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 5), i64} @llvm.riscv.vlseg5ff.mask.triscv.vector.tuple_nxv4i8_5t.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) %val, ptr %base, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4)5953  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 5), i64} %0, 05954  %2 = call <vscale x 2 x bfloat> @llvm.riscv.tuple.extract.nxv2bf16.triscv.vector.tuple_nxv4i8_5t(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) %1, i32 1)5955  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 5), i64} %0, 15956  store i64 %3, ptr %outvl5957  ret <vscale x 2 x bfloat> %25958}5959 5960define <vscale x 4 x bfloat> @test_vlseg5ff_nxv4bf16_triscv.vector.tuple_nxv8i8_5t(ptr %base, i64 %vl, ptr %outvl) {5961; CHECK-LABEL: test_vlseg5ff_nxv4bf16_triscv.vector.tuple_nxv8i8_5t:5962; CHECK:       # %bb.0: # %entry5963; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma5964; CHECK-NEXT:    vlseg5e16ff.v v7, (a0)5965; CHECK-NEXT:    csrr a0, vl5966; CHECK-NEXT:    sd a0, 0(a2)5967; CHECK-NEXT:    ret5968entry:5969  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 5), i64} @llvm.riscv.vlseg5ff.triscv.vector.tuple_nxv8i8_5t(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) poison, ptr %base, i64 %vl, i64 4)5970  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 5), i64} %0, 05971  %2 = call <vscale x 4 x bfloat> @llvm.riscv.tuple.extract.nxv4bf16.triscv.vector.tuple_nxv8i8_5t(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) %1, i32 1)5972  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 5), i64} %0, 15973  store i64 %3, ptr %outvl5974  ret <vscale x 4 x bfloat> %25975}5976 5977define <vscale x 4 x bfloat> @test_vlseg5ff_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_5t(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) %val, ptr %base, i64 %vl, <vscale x 4 x i1> %mask, ptr %outvl) {5978; CHECK-LABEL: test_vlseg5ff_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_5t:5979; CHECK:       # %bb.0: # %entry5980; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, mu5981; CHECK-NEXT:    vmv1r.v v7, v85982; CHECK-NEXT:    vmv1r.v v8, v95983; CHECK-NEXT:    vmv1r.v v9, v105984; CHECK-NEXT:    vmv1r.v v10, v115985; CHECK-NEXT:    vmv1r.v v11, v125986; CHECK-NEXT:    vlseg5e16ff.v v7, (a0), v0.t5987; CHECK-NEXT:    csrr a0, vl5988; CHECK-NEXT:    sd a0, 0(a2)5989; CHECK-NEXT:    ret5990entry:5991  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 5), i64} @llvm.riscv.vlseg5ff.mask.triscv.vector.tuple_nxv8i8_5t.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) %val, ptr %base, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4)5992  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 5), i64} %0, 05993  %2 = call <vscale x 4 x bfloat> @llvm.riscv.tuple.extract.nxv4bf16.triscv.vector.tuple_nxv8i8_5t(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) %1, i32 1)5994  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 5), i64} %0, 15995  store i64 %3, ptr %outvl5996  ret <vscale x 4 x bfloat> %25997}5998 5999define <vscale x 1 x bfloat> @test_vlseg6ff_nxv1bf16_triscv.vector.tuple_nxv2i8_6t(ptr %base, i64 %vl, ptr %outvl) {6000; CHECK-LABEL: test_vlseg6ff_nxv1bf16_triscv.vector.tuple_nxv2i8_6t:6001; CHECK:       # %bb.0: # %entry6002; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma6003; CHECK-NEXT:    vlseg6e16ff.v v7, (a0)6004; CHECK-NEXT:    csrr a0, vl6005; CHECK-NEXT:    sd a0, 0(a2)6006; CHECK-NEXT:    ret6007entry:6008  %0 = tail call {target("riscv.vector.tuple", <vscale x 2 x i8>, 6), i64} @llvm.riscv.vlseg6ff.triscv.vector.tuple_nxv2i8_6t(target("riscv.vector.tuple", <vscale x 2 x i8>, 6) poison, ptr %base, i64 %vl, i64 4)6009  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 6), i64} %0, 06010  %2 = call <vscale x 1 x bfloat> @llvm.riscv.tuple.extract.nxv1bf16.triscv.vector.tuple_nxv2i8_6t(target("riscv.vector.tuple", <vscale x 2 x i8>, 6) %1, i32 1)6011  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 6), i64} %0, 16012  store i64 %3, ptr %outvl6013  ret <vscale x 1 x bfloat> %26014}6015 6016define <vscale x 1 x bfloat> @test_vlseg6ff_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_6t(target("riscv.vector.tuple", <vscale x 2 x i8>, 6) %val, ptr %base, i64 %vl, <vscale x 1 x i1> %mask, ptr %outvl) {6017; CHECK-LABEL: test_vlseg6ff_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_6t:6018; CHECK:       # %bb.0: # %entry6019; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, mu6020; CHECK-NEXT:    vmv1r.v v7, v86021; CHECK-NEXT:    vmv1r.v v8, v96022; CHECK-NEXT:    vmv1r.v v9, v106023; CHECK-NEXT:    vmv1r.v v10, v116024; CHECK-NEXT:    vmv1r.v v11, v126025; CHECK-NEXT:    vmv1r.v v12, v136026; CHECK-NEXT:    vlseg6e16ff.v v7, (a0), v0.t6027; CHECK-NEXT:    csrr a0, vl6028; CHECK-NEXT:    sd a0, 0(a2)6029; CHECK-NEXT:    ret6030entry:6031  %0 = tail call {target("riscv.vector.tuple", <vscale x 2 x i8>, 6), i64} @llvm.riscv.vlseg6ff.mask.triscv.vector.tuple_nxv2i8_6t.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 6) %val, ptr %base, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4)6032  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 6), i64} %0, 06033  %2 = call <vscale x 1 x bfloat> @llvm.riscv.tuple.extract.nxv1bf16.triscv.vector.tuple_nxv2i8_6t(target("riscv.vector.tuple", <vscale x 2 x i8>, 6) %1, i32 1)6034  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 6), i64} %0, 16035  store i64 %3, ptr %outvl6036  ret <vscale x 1 x bfloat> %26037}6038 6039define <vscale x 2 x bfloat> @test_vlseg6ff_nxv2bf16_triscv.vector.tuple_nxv4i8_6t(ptr %base, i64 %vl, ptr %outvl) {6040; CHECK-LABEL: test_vlseg6ff_nxv2bf16_triscv.vector.tuple_nxv4i8_6t:6041; CHECK:       # %bb.0: # %entry6042; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma6043; CHECK-NEXT:    vlseg6e16ff.v v7, (a0)6044; CHECK-NEXT:    csrr a0, vl6045; CHECK-NEXT:    sd a0, 0(a2)6046; CHECK-NEXT:    ret6047entry:6048  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 6), i64} @llvm.riscv.vlseg6ff.triscv.vector.tuple_nxv4i8_6t(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) poison, ptr %base, i64 %vl, i64 4)6049  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 6), i64} %0, 06050  %2 = call <vscale x 2 x bfloat> @llvm.riscv.tuple.extract.nxv2bf16.triscv.vector.tuple_nxv4i8_6t(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) %1, i32 1)6051  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 6), i64} %0, 16052  store i64 %3, ptr %outvl6053  ret <vscale x 2 x bfloat> %26054}6055 6056define <vscale x 2 x bfloat> @test_vlseg6ff_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_6t(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) %val, ptr %base, i64 %vl, <vscale x 2 x i1> %mask, ptr %outvl) {6057; CHECK-LABEL: test_vlseg6ff_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_6t:6058; CHECK:       # %bb.0: # %entry6059; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, mu6060; CHECK-NEXT:    vmv1r.v v7, v86061; CHECK-NEXT:    vmv1r.v v8, v96062; CHECK-NEXT:    vmv1r.v v9, v106063; CHECK-NEXT:    vmv1r.v v10, v116064; CHECK-NEXT:    vmv1r.v v11, v126065; CHECK-NEXT:    vmv1r.v v12, v136066; CHECK-NEXT:    vlseg6e16ff.v v7, (a0), v0.t6067; CHECK-NEXT:    csrr a0, vl6068; CHECK-NEXT:    sd a0, 0(a2)6069; CHECK-NEXT:    ret6070entry:6071  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 6), i64} @llvm.riscv.vlseg6ff.mask.triscv.vector.tuple_nxv4i8_6t.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) %val, ptr %base, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4)6072  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 6), i64} %0, 06073  %2 = call <vscale x 2 x bfloat> @llvm.riscv.tuple.extract.nxv2bf16.triscv.vector.tuple_nxv4i8_6t(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) %1, i32 1)6074  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 6), i64} %0, 16075  store i64 %3, ptr %outvl6076  ret <vscale x 2 x bfloat> %26077}6078 6079define <vscale x 4 x bfloat> @test_vlseg6ff_nxv4bf16_triscv.vector.tuple_nxv8i8_6t(ptr %base, i64 %vl, ptr %outvl) {6080; CHECK-LABEL: test_vlseg6ff_nxv4bf16_triscv.vector.tuple_nxv8i8_6t:6081; CHECK:       # %bb.0: # %entry6082; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma6083; CHECK-NEXT:    vlseg6e16ff.v v7, (a0)6084; CHECK-NEXT:    csrr a0, vl6085; CHECK-NEXT:    sd a0, 0(a2)6086; CHECK-NEXT:    ret6087entry:6088  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 6), i64} @llvm.riscv.vlseg6ff.triscv.vector.tuple_nxv8i8_6t(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) poison, ptr %base, i64 %vl, i64 4)6089  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 6), i64} %0, 06090  %2 = call <vscale x 4 x bfloat> @llvm.riscv.tuple.extract.nxv4bf16.triscv.vector.tuple_nxv8i8_6t(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) %1, i32 1)6091  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 6), i64} %0, 16092  store i64 %3, ptr %outvl6093  ret <vscale x 4 x bfloat> %26094}6095 6096define <vscale x 4 x bfloat> @test_vlseg6ff_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_6t(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) %val, ptr %base, i64 %vl, <vscale x 4 x i1> %mask, ptr %outvl) {6097; CHECK-LABEL: test_vlseg6ff_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_6t:6098; CHECK:       # %bb.0: # %entry6099; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, mu6100; CHECK-NEXT:    vmv1r.v v7, v86101; CHECK-NEXT:    vmv1r.v v8, v96102; CHECK-NEXT:    vmv1r.v v9, v106103; CHECK-NEXT:    vmv1r.v v10, v116104; CHECK-NEXT:    vmv1r.v v11, v126105; CHECK-NEXT:    vmv1r.v v12, v136106; CHECK-NEXT:    vlseg6e16ff.v v7, (a0), v0.t6107; CHECK-NEXT:    csrr a0, vl6108; CHECK-NEXT:    sd a0, 0(a2)6109; CHECK-NEXT:    ret6110entry:6111  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 6), i64} @llvm.riscv.vlseg6ff.mask.triscv.vector.tuple_nxv8i8_6t.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) %val, ptr %base, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4)6112  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 6), i64} %0, 06113  %2 = call <vscale x 4 x bfloat> @llvm.riscv.tuple.extract.nxv4bf16.triscv.vector.tuple_nxv8i8_6t(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) %1, i32 1)6114  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 6), i64} %0, 16115  store i64 %3, ptr %outvl6116  ret <vscale x 4 x bfloat> %26117}6118 6119define <vscale x 1 x bfloat> @test_vlseg7ff_nxv1bf16_triscv.vector.tuple_nxv2i8_7t(ptr %base, i64 %vl, ptr %outvl) {6120; CHECK-LABEL: test_vlseg7ff_nxv1bf16_triscv.vector.tuple_nxv2i8_7t:6121; CHECK:       # %bb.0: # %entry6122; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma6123; CHECK-NEXT:    vlseg7e16ff.v v7, (a0)6124; CHECK-NEXT:    csrr a0, vl6125; CHECK-NEXT:    sd a0, 0(a2)6126; CHECK-NEXT:    ret6127entry:6128  %0 = tail call {target("riscv.vector.tuple", <vscale x 2 x i8>, 7), i64} @llvm.riscv.vlseg7ff.triscv.vector.tuple_nxv2i8_7t(target("riscv.vector.tuple", <vscale x 2 x i8>, 7) poison, ptr %base, i64 %vl, i64 4)6129  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 7), i64} %0, 06130  %2 = call <vscale x 1 x bfloat> @llvm.riscv.tuple.extract.nxv1bf16.triscv.vector.tuple_nxv2i8_7t(target("riscv.vector.tuple", <vscale x 2 x i8>, 7) %1, i32 1)6131  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 7), i64} %0, 16132  store i64 %3, ptr %outvl6133  ret <vscale x 1 x bfloat> %26134}6135 6136define <vscale x 1 x bfloat> @test_vlseg7ff_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_7t(target("riscv.vector.tuple", <vscale x 2 x i8>, 7) %val, ptr %base, i64 %vl, <vscale x 1 x i1> %mask, ptr %outvl) {6137; CHECK-LABEL: test_vlseg7ff_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_7t:6138; CHECK:       # %bb.0: # %entry6139; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, mu6140; CHECK-NEXT:    vmv1r.v v7, v86141; CHECK-NEXT:    vmv1r.v v8, v96142; CHECK-NEXT:    vmv1r.v v9, v106143; CHECK-NEXT:    vmv1r.v v10, v116144; CHECK-NEXT:    vmv1r.v v11, v126145; CHECK-NEXT:    vmv1r.v v12, v136146; CHECK-NEXT:    vmv1r.v v13, v146147; CHECK-NEXT:    vlseg7e16ff.v v7, (a0), v0.t6148; CHECK-NEXT:    csrr a0, vl6149; CHECK-NEXT:    sd a0, 0(a2)6150; CHECK-NEXT:    ret6151entry:6152  %0 = tail call {target("riscv.vector.tuple", <vscale x 2 x i8>, 7), i64} @llvm.riscv.vlseg7ff.mask.triscv.vector.tuple_nxv2i8_7t.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 7) %val, ptr %base, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4)6153  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 7), i64} %0, 06154  %2 = call <vscale x 1 x bfloat> @llvm.riscv.tuple.extract.nxv1bf16.triscv.vector.tuple_nxv2i8_7t(target("riscv.vector.tuple", <vscale x 2 x i8>, 7) %1, i32 1)6155  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 7), i64} %0, 16156  store i64 %3, ptr %outvl6157  ret <vscale x 1 x bfloat> %26158}6159 6160define <vscale x 2 x bfloat> @test_vlseg7ff_nxv2bf16_triscv.vector.tuple_nxv4i8_7t(ptr %base, i64 %vl, ptr %outvl) {6161; CHECK-LABEL: test_vlseg7ff_nxv2bf16_triscv.vector.tuple_nxv4i8_7t:6162; CHECK:       # %bb.0: # %entry6163; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma6164; CHECK-NEXT:    vlseg7e16ff.v v7, (a0)6165; CHECK-NEXT:    csrr a0, vl6166; CHECK-NEXT:    sd a0, 0(a2)6167; CHECK-NEXT:    ret6168entry:6169  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 7), i64} @llvm.riscv.vlseg7ff.triscv.vector.tuple_nxv4i8_7t(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) poison, ptr %base, i64 %vl, i64 4)6170  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 7), i64} %0, 06171  %2 = call <vscale x 2 x bfloat> @llvm.riscv.tuple.extract.nxv2bf16.triscv.vector.tuple_nxv4i8_7t(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) %1, i32 1)6172  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 7), i64} %0, 16173  store i64 %3, ptr %outvl6174  ret <vscale x 2 x bfloat> %26175}6176 6177define <vscale x 2 x bfloat> @test_vlseg7ff_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_7t(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) %val, ptr %base, i64 %vl, <vscale x 2 x i1> %mask, ptr %outvl) {6178; CHECK-LABEL: test_vlseg7ff_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_7t:6179; CHECK:       # %bb.0: # %entry6180; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, mu6181; CHECK-NEXT:    vmv1r.v v7, v86182; CHECK-NEXT:    vmv1r.v v8, v96183; CHECK-NEXT:    vmv1r.v v9, v106184; CHECK-NEXT:    vmv1r.v v10, v116185; CHECK-NEXT:    vmv1r.v v11, v126186; CHECK-NEXT:    vmv1r.v v12, v136187; CHECK-NEXT:    vmv1r.v v13, v146188; CHECK-NEXT:    vlseg7e16ff.v v7, (a0), v0.t6189; CHECK-NEXT:    csrr a0, vl6190; CHECK-NEXT:    sd a0, 0(a2)6191; CHECK-NEXT:    ret6192entry:6193  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 7), i64} @llvm.riscv.vlseg7ff.mask.triscv.vector.tuple_nxv4i8_7t.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) %val, ptr %base, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4)6194  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 7), i64} %0, 06195  %2 = call <vscale x 2 x bfloat> @llvm.riscv.tuple.extract.nxv2bf16.triscv.vector.tuple_nxv4i8_7t(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) %1, i32 1)6196  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 7), i64} %0, 16197  store i64 %3, ptr %outvl6198  ret <vscale x 2 x bfloat> %26199}6200 6201define <vscale x 4 x bfloat> @test_vlseg7ff_nxv4bf16_triscv.vector.tuple_nxv8i8_7t(ptr %base, i64 %vl, ptr %outvl) {6202; CHECK-LABEL: test_vlseg7ff_nxv4bf16_triscv.vector.tuple_nxv8i8_7t:6203; CHECK:       # %bb.0: # %entry6204; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma6205; CHECK-NEXT:    vlseg7e16ff.v v7, (a0)6206; CHECK-NEXT:    csrr a0, vl6207; CHECK-NEXT:    sd a0, 0(a2)6208; CHECK-NEXT:    ret6209entry:6210  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 7), i64} @llvm.riscv.vlseg7ff.triscv.vector.tuple_nxv8i8_7t(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) poison, ptr %base, i64 %vl, i64 4)6211  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 7), i64} %0, 06212  %2 = call <vscale x 4 x bfloat> @llvm.riscv.tuple.extract.nxv4bf16.triscv.vector.tuple_nxv8i8_7t(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) %1, i32 1)6213  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 7), i64} %0, 16214  store i64 %3, ptr %outvl6215  ret <vscale x 4 x bfloat> %26216}6217 6218define <vscale x 4 x bfloat> @test_vlseg7ff_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_7t(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) %val, ptr %base, i64 %vl, <vscale x 4 x i1> %mask, ptr %outvl) {6219; CHECK-LABEL: test_vlseg7ff_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_7t:6220; CHECK:       # %bb.0: # %entry6221; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, mu6222; CHECK-NEXT:    vmv1r.v v7, v86223; CHECK-NEXT:    vmv1r.v v8, v96224; CHECK-NEXT:    vmv1r.v v9, v106225; CHECK-NEXT:    vmv1r.v v10, v116226; CHECK-NEXT:    vmv1r.v v11, v126227; CHECK-NEXT:    vmv1r.v v12, v136228; CHECK-NEXT:    vmv1r.v v13, v146229; CHECK-NEXT:    vlseg7e16ff.v v7, (a0), v0.t6230; CHECK-NEXT:    csrr a0, vl6231; CHECK-NEXT:    sd a0, 0(a2)6232; CHECK-NEXT:    ret6233entry:6234  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 7), i64} @llvm.riscv.vlseg7ff.mask.triscv.vector.tuple_nxv8i8_7t.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) %val, ptr %base, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4)6235  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 7), i64} %0, 06236  %2 = call <vscale x 4 x bfloat> @llvm.riscv.tuple.extract.nxv4bf16.triscv.vector.tuple_nxv8i8_7t(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) %1, i32 1)6237  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 7), i64} %0, 16238  store i64 %3, ptr %outvl6239  ret <vscale x 4 x bfloat> %26240}6241 6242define <vscale x 1 x bfloat> @test_vlseg8ff_nxv1bf16_triscv.vector.tuple_nxv2i8_8t(ptr %base, i64 %vl, ptr %outvl) {6243; CHECK-LABEL: test_vlseg8ff_nxv1bf16_triscv.vector.tuple_nxv2i8_8t:6244; CHECK:       # %bb.0: # %entry6245; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma6246; CHECK-NEXT:    vlseg8e16ff.v v7, (a0)6247; CHECK-NEXT:    csrr a0, vl6248; CHECK-NEXT:    sd a0, 0(a2)6249; CHECK-NEXT:    ret6250entry:6251  %0 = tail call {target("riscv.vector.tuple", <vscale x 2 x i8>, 8), i64} @llvm.riscv.vlseg8ff.triscv.vector.tuple_nxv2i8_8t(target("riscv.vector.tuple", <vscale x 2 x i8>, 8) poison, ptr %base, i64 %vl, i64 4)6252  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 8), i64} %0, 06253  %2 = call <vscale x 1 x bfloat> @llvm.riscv.tuple.extract.nxv1bf16.triscv.vector.tuple_nxv2i8_8t(target("riscv.vector.tuple", <vscale x 2 x i8>, 8) %1, i32 1)6254  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 8), i64} %0, 16255  store i64 %3, ptr %outvl6256  ret <vscale x 1 x bfloat> %26257}6258 6259define <vscale x 1 x bfloat> @test_vlseg8ff_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_8t(target("riscv.vector.tuple", <vscale x 2 x i8>, 8) %val, ptr %base, i64 %vl, <vscale x 1 x i1> %mask, ptr %outvl) {6260; CHECK-LABEL: test_vlseg8ff_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_8t:6261; CHECK:       # %bb.0: # %entry6262; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, mu6263; CHECK-NEXT:    vmv1r.v v7, v86264; CHECK-NEXT:    vmv1r.v v8, v96265; CHECK-NEXT:    vmv1r.v v9, v106266; CHECK-NEXT:    vmv1r.v v10, v116267; CHECK-NEXT:    vmv1r.v v11, v126268; CHECK-NEXT:    vmv1r.v v12, v136269; CHECK-NEXT:    vmv1r.v v13, v146270; CHECK-NEXT:    vmv1r.v v14, v156271; CHECK-NEXT:    vlseg8e16ff.v v7, (a0), v0.t6272; CHECK-NEXT:    csrr a0, vl6273; CHECK-NEXT:    sd a0, 0(a2)6274; CHECK-NEXT:    ret6275entry:6276  %0 = tail call {target("riscv.vector.tuple", <vscale x 2 x i8>, 8), i64} @llvm.riscv.vlseg8ff.mask.triscv.vector.tuple_nxv2i8_8t.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 8) %val, ptr %base, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4)6277  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 8), i64} %0, 06278  %2 = call <vscale x 1 x bfloat> @llvm.riscv.tuple.extract.nxv1bf16.triscv.vector.tuple_nxv2i8_8t(target("riscv.vector.tuple", <vscale x 2 x i8>, 8) %1, i32 1)6279  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 2 x i8>, 8), i64} %0, 16280  store i64 %3, ptr %outvl6281  ret <vscale x 1 x bfloat> %26282}6283 6284define <vscale x 2 x bfloat> @test_vlseg8ff_nxv2bf16_triscv.vector.tuple_nxv4i8_8t(ptr %base, i64 %vl, ptr %outvl) {6285; CHECK-LABEL: test_vlseg8ff_nxv2bf16_triscv.vector.tuple_nxv4i8_8t:6286; CHECK:       # %bb.0: # %entry6287; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma6288; CHECK-NEXT:    vlseg8e16ff.v v7, (a0)6289; CHECK-NEXT:    csrr a0, vl6290; CHECK-NEXT:    sd a0, 0(a2)6291; CHECK-NEXT:    ret6292entry:6293  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 8), i64} @llvm.riscv.vlseg8ff.triscv.vector.tuple_nxv4i8_8t(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) poison, ptr %base, i64 %vl, i64 4)6294  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 8), i64} %0, 06295  %2 = call <vscale x 2 x bfloat> @llvm.riscv.tuple.extract.nxv2bf16.triscv.vector.tuple_nxv4i8_8t(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) %1, i32 1)6296  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 8), i64} %0, 16297  store i64 %3, ptr %outvl6298  ret <vscale x 2 x bfloat> %26299}6300 6301define <vscale x 2 x bfloat> @test_vlseg8ff_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_8t(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) %val, ptr %base, i64 %vl, <vscale x 2 x i1> %mask, ptr %outvl) {6302; CHECK-LABEL: test_vlseg8ff_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_8t:6303; CHECK:       # %bb.0: # %entry6304; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, mu6305; CHECK-NEXT:    vmv1r.v v7, v86306; CHECK-NEXT:    vmv1r.v v8, v96307; CHECK-NEXT:    vmv1r.v v9, v106308; CHECK-NEXT:    vmv1r.v v10, v116309; CHECK-NEXT:    vmv1r.v v11, v126310; CHECK-NEXT:    vmv1r.v v12, v136311; CHECK-NEXT:    vmv1r.v v13, v146312; CHECK-NEXT:    vmv1r.v v14, v156313; CHECK-NEXT:    vlseg8e16ff.v v7, (a0), v0.t6314; CHECK-NEXT:    csrr a0, vl6315; CHECK-NEXT:    sd a0, 0(a2)6316; CHECK-NEXT:    ret6317entry:6318  %0 = tail call {target("riscv.vector.tuple", <vscale x 4 x i8>, 8), i64} @llvm.riscv.vlseg8ff.mask.triscv.vector.tuple_nxv4i8_8t.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) %val, ptr %base, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4)6319  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 8), i64} %0, 06320  %2 = call <vscale x 2 x bfloat> @llvm.riscv.tuple.extract.nxv2bf16.triscv.vector.tuple_nxv4i8_8t(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) %1, i32 1)6321  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 4 x i8>, 8), i64} %0, 16322  store i64 %3, ptr %outvl6323  ret <vscale x 2 x bfloat> %26324}6325 6326define <vscale x 4 x bfloat> @test_vlseg8ff_nxv4bf16_triscv.vector.tuple_nxv8i8_8t(ptr %base, i64 %vl, ptr %outvl) {6327; CHECK-LABEL: test_vlseg8ff_nxv4bf16_triscv.vector.tuple_nxv8i8_8t:6328; CHECK:       # %bb.0: # %entry6329; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma6330; CHECK-NEXT:    vlseg8e16ff.v v7, (a0)6331; CHECK-NEXT:    csrr a0, vl6332; CHECK-NEXT:    sd a0, 0(a2)6333; CHECK-NEXT:    ret6334entry:6335  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 8), i64} @llvm.riscv.vlseg8ff.triscv.vector.tuple_nxv8i8_8t(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) poison, ptr %base, i64 %vl, i64 4)6336  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 8), i64} %0, 06337  %2 = call <vscale x 4 x bfloat> @llvm.riscv.tuple.extract.nxv4bf16.triscv.vector.tuple_nxv8i8_8t(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) %1, i32 1)6338  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 8), i64} %0, 16339  store i64 %3, ptr %outvl6340  ret <vscale x 4 x bfloat> %26341}6342 6343define <vscale x 4 x bfloat> @test_vlseg8ff_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_8t(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) %val, ptr %base, i64 %vl, <vscale x 4 x i1> %mask, ptr %outvl) {6344; CHECK-LABEL: test_vlseg8ff_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_8t:6345; CHECK:       # %bb.0: # %entry6346; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, mu6347; CHECK-NEXT:    vmv1r.v v7, v86348; CHECK-NEXT:    vmv1r.v v8, v96349; CHECK-NEXT:    vmv1r.v v9, v106350; CHECK-NEXT:    vmv1r.v v10, v116351; CHECK-NEXT:    vmv1r.v v11, v126352; CHECK-NEXT:    vmv1r.v v12, v136353; CHECK-NEXT:    vmv1r.v v13, v146354; CHECK-NEXT:    vmv1r.v v14, v156355; CHECK-NEXT:    vlseg8e16ff.v v7, (a0), v0.t6356; CHECK-NEXT:    csrr a0, vl6357; CHECK-NEXT:    sd a0, 0(a2)6358; CHECK-NEXT:    ret6359entry:6360  %0 = tail call {target("riscv.vector.tuple", <vscale x 8 x i8>, 8), i64} @llvm.riscv.vlseg8ff.mask.triscv.vector.tuple_nxv8i8_8t.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) %val, ptr %base, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4)6361  %1 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 8), i64} %0, 06362  %2 = call <vscale x 4 x bfloat> @llvm.riscv.tuple.extract.nxv4bf16.triscv.vector.tuple_nxv8i8_8t(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) %1, i32 1)6363  %3 = extractvalue {target("riscv.vector.tuple", <vscale x 8 x i8>, 8), i64} %0, 16364  store i64 %3, ptr %outvl6365  ret <vscale x 4 x bfloat> %26366}6367 6368