3965 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=riscv32 -mattr=+zve64d,+f,+d,+zvfh,+zvfbfmin \3; RUN: -verify-machineinstrs < %s | FileCheck %s4 5define <vscale x 1 x i8> @test_vlsseg2_nxv1i8_triscv.vector.tuple_nxv1i8_2t(ptr %base, i32 %offset, i32 %vl) {6; CHECK-LABEL: test_vlsseg2_nxv1i8_triscv.vector.tuple_nxv1i8_2t:7; CHECK: # %bb.0: # %entry8; CHECK-NEXT: vsetvli zero, a2, e8, mf8, ta, ma9; CHECK-NEXT: vlsseg2e8.v v7, (a0), a110; CHECK-NEXT: ret11entry:12 %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 2) @llvm.riscv.vlsseg2.triscv.vector.tuple_nxv1i8_2t(target("riscv.vector.tuple", <vscale x 1 x i8>, 2) poison, ptr %base, i32 %offset, i32 %vl, i32 3)13 %1 = 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) %0, i32 1)14 ret <vscale x 1 x i8> %115}16 17define <vscale x 1 x i8> @test_vlsseg2_mask_nxv1i8_triscv.vector.tuple_nxv1i8_2t(ptr %base, i32 %offset, i32 %vl, <vscale x 1 x i1> %mask) {18; CHECK-LABEL: test_vlsseg2_mask_nxv1i8_triscv.vector.tuple_nxv1i8_2t:19; CHECK: # %bb.0: # %entry20; CHECK-NEXT: vsetvli zero, a2, e8, mf8, ta, ma21; CHECK-NEXT: vlsseg2e8.v v7, (a0), a1, v0.t22; CHECK-NEXT: ret23entry:24 %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv1i8_2t.nxv1i1(target("riscv.vector.tuple", <vscale x 1 x i8>, 2) poison, ptr %base, i32 %offset, <vscale x 1 x i1> %mask, i32 %vl, i32 1, i32 3)25 %1 = 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) %0, i32 1)26 ret <vscale x 1 x i8> %127}28 29define <vscale x 2 x i8> @test_vlsseg2_nxv2i8_triscv.vector.tuple_nxv2i8_2t(ptr %base, i32 %offset, i32 %vl) {30; CHECK-LABEL: test_vlsseg2_nxv2i8_triscv.vector.tuple_nxv2i8_2t:31; CHECK: # %bb.0: # %entry32; CHECK-NEXT: vsetvli zero, a2, e8, mf4, ta, ma33; CHECK-NEXT: vlsseg2e8.v v7, (a0), a134; CHECK-NEXT: ret35entry:36 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 2) @llvm.riscv.vlsseg2.triscv.vector.tuple_nxv2i8_2t(target("riscv.vector.tuple", <vscale x 2 x i8>, 2) poison, ptr %base, i32 %offset, i32 %vl, i32 3)37 %1 = 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) %0, i32 1)38 ret <vscale x 2 x i8> %139}40 41define <vscale x 2 x i8> @test_vlsseg2_mask_nxv2i8_triscv.vector.tuple_nxv2i8_2t(ptr %base, i32 %offset, i32 %vl, <vscale x 2 x i1> %mask) {42; CHECK-LABEL: test_vlsseg2_mask_nxv2i8_triscv.vector.tuple_nxv2i8_2t:43; CHECK: # %bb.0: # %entry44; CHECK-NEXT: vsetvli zero, a2, e8, mf4, ta, ma45; CHECK-NEXT: vlsseg2e8.v v7, (a0), a1, v0.t46; CHECK-NEXT: ret47entry:48 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv2i8_2t.nxv2i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 2) poison, ptr %base, i32 %offset, <vscale x 2 x i1> %mask, i32 %vl, i32 1, i32 3)49 %1 = 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) %0, i32 1)50 ret <vscale x 2 x i8> %151}52 53define <vscale x 4 x i8> @test_vlsseg2_nxv4i8_triscv.vector.tuple_nxv4i8_2t(ptr %base, i32 %offset, i32 %vl) {54; CHECK-LABEL: test_vlsseg2_nxv4i8_triscv.vector.tuple_nxv4i8_2t:55; CHECK: # %bb.0: # %entry56; CHECK-NEXT: vsetvli zero, a2, e8, mf2, ta, ma57; CHECK-NEXT: vlsseg2e8.v v7, (a0), a158; CHECK-NEXT: ret59entry:60 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vlsseg2.triscv.vector.tuple_nxv4i8_2t(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) poison, ptr %base, i32 %offset, i32 %vl, i32 3)61 %1 = 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) %0, i32 1)62 ret <vscale x 4 x i8> %163}64 65define <vscale x 4 x i8> @test_vlsseg2_mask_nxv4i8_triscv.vector.tuple_nxv4i8_2t(ptr %base, i32 %offset, i32 %vl, <vscale x 4 x i1> %mask) {66; CHECK-LABEL: test_vlsseg2_mask_nxv4i8_triscv.vector.tuple_nxv4i8_2t:67; CHECK: # %bb.0: # %entry68; CHECK-NEXT: vsetvli zero, a2, e8, mf2, ta, ma69; CHECK-NEXT: vlsseg2e8.v v7, (a0), a1, v0.t70; CHECK-NEXT: ret71entry:72 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv4i8_2t.nxv4i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) poison, ptr %base, i32 %offset, <vscale x 4 x i1> %mask, i32 %vl, i32 1, i32 3)73 %1 = 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) %0, i32 1)74 ret <vscale x 4 x i8> %175}76 77define <vscale x 8 x i8> @test_vlsseg2_nxv8i8_triscv.vector.tuple_nxv8i8_2t(ptr %base, i32 %offset, i32 %vl) {78; CHECK-LABEL: test_vlsseg2_nxv8i8_triscv.vector.tuple_nxv8i8_2t:79; CHECK: # %bb.0: # %entry80; CHECK-NEXT: vsetvli zero, a2, e8, m1, ta, ma81; CHECK-NEXT: vlsseg2e8.v v7, (a0), a182; CHECK-NEXT: ret83entry:84 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vlsseg2.triscv.vector.tuple_nxv8i8_2t(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) poison, ptr %base, i32 %offset, i32 %vl, i32 3)85 %1 = 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) %0, i32 1)86 ret <vscale x 8 x i8> %187}88 89define <vscale x 8 x i8> @test_vlsseg2_mask_nxv8i8_triscv.vector.tuple_nxv8i8_2t(ptr %base, i32 %offset, i32 %vl, <vscale x 8 x i1> %mask) {90; CHECK-LABEL: test_vlsseg2_mask_nxv8i8_triscv.vector.tuple_nxv8i8_2t:91; CHECK: # %bb.0: # %entry92; CHECK-NEXT: vsetvli zero, a2, e8, m1, ta, ma93; CHECK-NEXT: vlsseg2e8.v v7, (a0), a1, v0.t94; CHECK-NEXT: ret95entry:96 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv8i8_2t.nxv8i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) poison, ptr %base, i32 %offset, <vscale x 8 x i1> %mask, i32 %vl, i32 1, i32 3)97 %1 = 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) %0, i32 1)98 ret <vscale x 8 x i8> %199}100 101define <vscale x 16 x i8> @test_vlsseg2_nxv16i8_triscv.vector.tuple_nxv16i8_2t(ptr %base, i32 %offset, i32 %vl) {102; CHECK-LABEL: test_vlsseg2_nxv16i8_triscv.vector.tuple_nxv16i8_2t:103; CHECK: # %bb.0: # %entry104; CHECK-NEXT: vsetvli zero, a2, e8, m2, ta, ma105; CHECK-NEXT: vlsseg2e8.v v6, (a0), a1106; CHECK-NEXT: ret107entry:108 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vlsseg2.triscv.vector.tuple_nxv16i8_2t(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) poison, ptr %base, i32 %offset, i32 %vl, i32 3)109 %1 = 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) %0, i32 1)110 ret <vscale x 16 x i8> %1111}112 113define <vscale x 16 x i8> @test_vlsseg2_mask_nxv16i8_triscv.vector.tuple_nxv16i8_2t(ptr %base, i32 %offset, i32 %vl, <vscale x 16 x i1> %mask) {114; CHECK-LABEL: test_vlsseg2_mask_nxv16i8_triscv.vector.tuple_nxv16i8_2t:115; CHECK: # %bb.0: # %entry116; CHECK-NEXT: vsetvli zero, a2, e8, m2, ta, ma117; CHECK-NEXT: vlsseg2e8.v v6, (a0), a1, v0.t118; CHECK-NEXT: ret119entry:120 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv16i8_2t.nxv16i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) poison, ptr %base, i32 %offset, <vscale x 16 x i1> %mask, i32 %vl, i32 1, i32 3)121 %1 = 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) %0, i32 1)122 ret <vscale x 16 x i8> %1123}124 125define <vscale x 32 x i8> @test_vlsseg2_nxv32i8_triscv.vector.tuple_nxv32i8_2t(ptr %base, i32 %offset, i32 %vl) {126; CHECK-LABEL: test_vlsseg2_nxv32i8_triscv.vector.tuple_nxv32i8_2t:127; CHECK: # %bb.0: # %entry128; CHECK-NEXT: vsetvli zero, a2, e8, m4, ta, ma129; CHECK-NEXT: vlsseg2e8.v v4, (a0), a1130; CHECK-NEXT: ret131entry:132 %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vlsseg2.triscv.vector.tuple_nxv32i8_2t(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) poison, ptr %base, i32 %offset, i32 %vl, i32 3)133 %1 = 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) %0, i32 1)134 ret <vscale x 32 x i8> %1135}136 137define <vscale x 32 x i8> @test_vlsseg2_mask_nxv32i8_triscv.vector.tuple_nxv32i8_2t(ptr %base, i32 %offset, i32 %vl, <vscale x 32 x i1> %mask) {138; CHECK-LABEL: test_vlsseg2_mask_nxv32i8_triscv.vector.tuple_nxv32i8_2t:139; CHECK: # %bb.0: # %entry140; CHECK-NEXT: vsetvli zero, a2, e8, m4, ta, ma141; CHECK-NEXT: vlsseg2e8.v v4, (a0), a1, v0.t142; CHECK-NEXT: ret143entry:144 %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv32i8_2t.nxv32i1(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) poison, ptr %base, i32 %offset, <vscale x 32 x i1> %mask, i32 %vl, i32 1, i32 3)145 %1 = 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) %0, i32 1)146 ret <vscale x 32 x i8> %1147}148 149define <vscale x 1 x i8> @test_vlsseg3_nxv1i8_triscv.vector.tuple_nxv1i8_3t(ptr %base, i32 %offset, i32 %vl) {150; CHECK-LABEL: test_vlsseg3_nxv1i8_triscv.vector.tuple_nxv1i8_3t:151; CHECK: # %bb.0: # %entry152; CHECK-NEXT: vsetvli zero, a2, e8, mf8, ta, ma153; CHECK-NEXT: vlsseg3e8.v v7, (a0), a1154; CHECK-NEXT: ret155entry:156 %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 3) @llvm.riscv.vlsseg3.triscv.vector.tuple_nxv1i8_3t(target("riscv.vector.tuple", <vscale x 1 x i8>, 3) poison, ptr %base, i32 %offset, i32 %vl, i32 3)157 %1 = 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) %0, i32 1)158 ret <vscale x 1 x i8> %1159}160 161define <vscale x 1 x i8> @test_vlsseg3_mask_nxv1i8_triscv.vector.tuple_nxv1i8_3t(ptr %base, i32 %offset, i32 %vl, <vscale x 1 x i1> %mask) {162; CHECK-LABEL: test_vlsseg3_mask_nxv1i8_triscv.vector.tuple_nxv1i8_3t:163; CHECK: # %bb.0: # %entry164; CHECK-NEXT: vsetvli zero, a2, e8, mf8, ta, ma165; CHECK-NEXT: vlsseg3e8.v v7, (a0), a1, v0.t166; CHECK-NEXT: ret167entry:168 %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 3) @llvm.riscv.vlsseg3.mask.triscv.vector.tuple_nxv1i8_3t.nxv1i1(target("riscv.vector.tuple", <vscale x 1 x i8>, 3) poison, ptr %base, i32 %offset, <vscale x 1 x i1> %mask, i32 %vl, i32 1, i32 3)169 %1 = 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) %0, i32 1)170 ret <vscale x 1 x i8> %1171}172 173define <vscale x 2 x i8> @test_vlsseg3_nxv2i8_triscv.vector.tuple_nxv2i8_3t(ptr %base, i32 %offset, i32 %vl) {174; CHECK-LABEL: test_vlsseg3_nxv2i8_triscv.vector.tuple_nxv2i8_3t:175; CHECK: # %bb.0: # %entry176; CHECK-NEXT: vsetvli zero, a2, e8, mf4, ta, ma177; CHECK-NEXT: vlsseg3e8.v v7, (a0), a1178; CHECK-NEXT: ret179entry:180 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 3) @llvm.riscv.vlsseg3.triscv.vector.tuple_nxv2i8_3t(target("riscv.vector.tuple", <vscale x 2 x i8>, 3) poison, ptr %base, i32 %offset, i32 %vl, i32 3)181 %1 = 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) %0, i32 1)182 ret <vscale x 2 x i8> %1183}184 185define <vscale x 2 x i8> @test_vlsseg3_mask_nxv2i8_triscv.vector.tuple_nxv2i8_3t(ptr %base, i32 %offset, i32 %vl, <vscale x 2 x i1> %mask) {186; CHECK-LABEL: test_vlsseg3_mask_nxv2i8_triscv.vector.tuple_nxv2i8_3t:187; CHECK: # %bb.0: # %entry188; CHECK-NEXT: vsetvli zero, a2, e8, mf4, ta, ma189; CHECK-NEXT: vlsseg3e8.v v7, (a0), a1, v0.t190; CHECK-NEXT: ret191entry:192 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 3) @llvm.riscv.vlsseg3.mask.triscv.vector.tuple_nxv2i8_3t.nxv2i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 3) poison, ptr %base, i32 %offset, <vscale x 2 x i1> %mask, i32 %vl, i32 1, i32 3)193 %1 = 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) %0, i32 1)194 ret <vscale x 2 x i8> %1195}196 197define <vscale x 4 x i8> @test_vlsseg3_nxv4i8_triscv.vector.tuple_nxv4i8_3t(ptr %base, i32 %offset, i32 %vl) {198; CHECK-LABEL: test_vlsseg3_nxv4i8_triscv.vector.tuple_nxv4i8_3t:199; CHECK: # %bb.0: # %entry200; CHECK-NEXT: vsetvli zero, a2, e8, mf2, ta, ma201; CHECK-NEXT: vlsseg3e8.v v7, (a0), a1202; CHECK-NEXT: ret203entry:204 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vlsseg3.triscv.vector.tuple_nxv4i8_3t(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) poison, ptr %base, i32 %offset, i32 %vl, i32 3)205 %1 = 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) %0, i32 1)206 ret <vscale x 4 x i8> %1207}208 209define <vscale x 4 x i8> @test_vlsseg3_mask_nxv4i8_triscv.vector.tuple_nxv4i8_3t(ptr %base, i32 %offset, i32 %vl, <vscale x 4 x i1> %mask) {210; CHECK-LABEL: test_vlsseg3_mask_nxv4i8_triscv.vector.tuple_nxv4i8_3t:211; CHECK: # %bb.0: # %entry212; CHECK-NEXT: vsetvli zero, a2, e8, mf2, ta, ma213; CHECK-NEXT: vlsseg3e8.v v7, (a0), a1, v0.t214; CHECK-NEXT: ret215entry:216 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vlsseg3.mask.triscv.vector.tuple_nxv4i8_3t.nxv4i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) poison, ptr %base, i32 %offset, <vscale x 4 x i1> %mask, i32 %vl, i32 1, i32 3)217 %1 = 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) %0, i32 1)218 ret <vscale x 4 x i8> %1219}220 221define <vscale x 8 x i8> @test_vlsseg3_nxv8i8_triscv.vector.tuple_nxv8i8_3t(ptr %base, i32 %offset, i32 %vl) {222; CHECK-LABEL: test_vlsseg3_nxv8i8_triscv.vector.tuple_nxv8i8_3t:223; CHECK: # %bb.0: # %entry224; CHECK-NEXT: vsetvli zero, a2, e8, m1, ta, ma225; CHECK-NEXT: vlsseg3e8.v v7, (a0), a1226; CHECK-NEXT: ret227entry:228 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vlsseg3.triscv.vector.tuple_nxv8i8_3t(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) poison, ptr %base, i32 %offset, i32 %vl, i32 3)229 %1 = 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) %0, i32 1)230 ret <vscale x 8 x i8> %1231}232 233define <vscale x 8 x i8> @test_vlsseg3_mask_nxv8i8_triscv.vector.tuple_nxv8i8_3t(ptr %base, i32 %offset, i32 %vl, <vscale x 8 x i1> %mask) {234; CHECK-LABEL: test_vlsseg3_mask_nxv8i8_triscv.vector.tuple_nxv8i8_3t:235; CHECK: # %bb.0: # %entry236; CHECK-NEXT: vsetvli zero, a2, e8, m1, ta, ma237; CHECK-NEXT: vlsseg3e8.v v7, (a0), a1, v0.t238; CHECK-NEXT: ret239entry:240 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vlsseg3.mask.triscv.vector.tuple_nxv8i8_3t.nxv8i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) poison, ptr %base, i32 %offset, <vscale x 8 x i1> %mask, i32 %vl, i32 1, i32 3)241 %1 = 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) %0, i32 1)242 ret <vscale x 8 x i8> %1243}244 245define <vscale x 16 x i8> @test_vlsseg3_nxv16i8_triscv.vector.tuple_nxv16i8_3t(ptr %base, i32 %offset, i32 %vl) {246; CHECK-LABEL: test_vlsseg3_nxv16i8_triscv.vector.tuple_nxv16i8_3t:247; CHECK: # %bb.0: # %entry248; CHECK-NEXT: vsetvli zero, a2, e8, m2, ta, ma249; CHECK-NEXT: vlsseg3e8.v v6, (a0), a1250; CHECK-NEXT: ret251entry:252 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vlsseg3.triscv.vector.tuple_nxv16i8_3t(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) poison, ptr %base, i32 %offset, i32 %vl, i32 3)253 %1 = 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) %0, i32 1)254 ret <vscale x 16 x i8> %1255}256 257define <vscale x 16 x i8> @test_vlsseg3_mask_nxv16i8_triscv.vector.tuple_nxv16i8_3t(ptr %base, i32 %offset, i32 %vl, <vscale x 16 x i1> %mask) {258; CHECK-LABEL: test_vlsseg3_mask_nxv16i8_triscv.vector.tuple_nxv16i8_3t:259; CHECK: # %bb.0: # %entry260; CHECK-NEXT: vsetvli zero, a2, e8, m2, ta, ma261; CHECK-NEXT: vlsseg3e8.v v6, (a0), a1, v0.t262; CHECK-NEXT: ret263entry:264 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vlsseg3.mask.triscv.vector.tuple_nxv16i8_3t.nxv16i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) poison, ptr %base, i32 %offset, <vscale x 16 x i1> %mask, i32 %vl, i32 1, i32 3)265 %1 = 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) %0, i32 1)266 ret <vscale x 16 x i8> %1267}268 269define <vscale x 1 x i8> @test_vlsseg4_nxv1i8_triscv.vector.tuple_nxv1i8_4t(ptr %base, i32 %offset, i32 %vl) {270; CHECK-LABEL: test_vlsseg4_nxv1i8_triscv.vector.tuple_nxv1i8_4t:271; CHECK: # %bb.0: # %entry272; CHECK-NEXT: vsetvli zero, a2, e8, mf8, ta, ma273; CHECK-NEXT: vlsseg4e8.v v7, (a0), a1274; CHECK-NEXT: ret275entry:276 %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 4) @llvm.riscv.vlsseg4.triscv.vector.tuple_nxv1i8_4t(target("riscv.vector.tuple", <vscale x 1 x i8>, 4) poison, ptr %base, i32 %offset, i32 %vl, i32 3)277 %1 = 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) %0, i32 1)278 ret <vscale x 1 x i8> %1279}280 281define <vscale x 1 x i8> @test_vlsseg4_mask_nxv1i8_triscv.vector.tuple_nxv1i8_4t(ptr %base, i32 %offset, i32 %vl, <vscale x 1 x i1> %mask) {282; CHECK-LABEL: test_vlsseg4_mask_nxv1i8_triscv.vector.tuple_nxv1i8_4t:283; CHECK: # %bb.0: # %entry284; CHECK-NEXT: vsetvli zero, a2, e8, mf8, ta, ma285; CHECK-NEXT: vlsseg4e8.v v7, (a0), a1, v0.t286; CHECK-NEXT: ret287entry:288 %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 4) @llvm.riscv.vlsseg4.mask.triscv.vector.tuple_nxv1i8_4t.nxv1i1(target("riscv.vector.tuple", <vscale x 1 x i8>, 4) poison, ptr %base, i32 %offset, <vscale x 1 x i1> %mask, i32 %vl, i32 1, i32 3)289 %1 = 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) %0, i32 1)290 ret <vscale x 1 x i8> %1291}292 293define <vscale x 2 x i8> @test_vlsseg4_nxv2i8_triscv.vector.tuple_nxv2i8_4t(ptr %base, i32 %offset, i32 %vl) {294; CHECK-LABEL: test_vlsseg4_nxv2i8_triscv.vector.tuple_nxv2i8_4t:295; CHECK: # %bb.0: # %entry296; CHECK-NEXT: vsetvli zero, a2, e8, mf4, ta, ma297; CHECK-NEXT: vlsseg4e8.v v7, (a0), a1298; CHECK-NEXT: ret299entry:300 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 4) @llvm.riscv.vlsseg4.triscv.vector.tuple_nxv2i8_4t(target("riscv.vector.tuple", <vscale x 2 x i8>, 4) poison, ptr %base, i32 %offset, i32 %vl, i32 3)301 %1 = 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) %0, i32 1)302 ret <vscale x 2 x i8> %1303}304 305define <vscale x 2 x i8> @test_vlsseg4_mask_nxv2i8_triscv.vector.tuple_nxv2i8_4t(ptr %base, i32 %offset, i32 %vl, <vscale x 2 x i1> %mask) {306; CHECK-LABEL: test_vlsseg4_mask_nxv2i8_triscv.vector.tuple_nxv2i8_4t:307; CHECK: # %bb.0: # %entry308; CHECK-NEXT: vsetvli zero, a2, e8, mf4, ta, ma309; CHECK-NEXT: vlsseg4e8.v v7, (a0), a1, v0.t310; CHECK-NEXT: ret311entry:312 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 4) @llvm.riscv.vlsseg4.mask.triscv.vector.tuple_nxv2i8_4t.nxv2i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 4) poison, ptr %base, i32 %offset, <vscale x 2 x i1> %mask, i32 %vl, i32 1, i32 3)313 %1 = 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) %0, i32 1)314 ret <vscale x 2 x i8> %1315}316 317define <vscale x 4 x i8> @test_vlsseg4_nxv4i8_triscv.vector.tuple_nxv4i8_4t(ptr %base, i32 %offset, i32 %vl) {318; CHECK-LABEL: test_vlsseg4_nxv4i8_triscv.vector.tuple_nxv4i8_4t:319; CHECK: # %bb.0: # %entry320; CHECK-NEXT: vsetvli zero, a2, e8, mf2, ta, ma321; CHECK-NEXT: vlsseg4e8.v v7, (a0), a1322; CHECK-NEXT: ret323entry:324 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vlsseg4.triscv.vector.tuple_nxv4i8_4t(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) poison, ptr %base, i32 %offset, i32 %vl, i32 3)325 %1 = 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) %0, i32 1)326 ret <vscale x 4 x i8> %1327}328 329define <vscale x 4 x i8> @test_vlsseg4_mask_nxv4i8_triscv.vector.tuple_nxv4i8_4t(ptr %base, i32 %offset, i32 %vl, <vscale x 4 x i1> %mask) {330; CHECK-LABEL: test_vlsseg4_mask_nxv4i8_triscv.vector.tuple_nxv4i8_4t:331; CHECK: # %bb.0: # %entry332; CHECK-NEXT: vsetvli zero, a2, e8, mf2, ta, ma333; CHECK-NEXT: vlsseg4e8.v v7, (a0), a1, v0.t334; CHECK-NEXT: ret335entry:336 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vlsseg4.mask.triscv.vector.tuple_nxv4i8_4t.nxv4i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) poison, ptr %base, i32 %offset, <vscale x 4 x i1> %mask, i32 %vl, i32 1, i32 3)337 %1 = 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) %0, i32 1)338 ret <vscale x 4 x i8> %1339}340 341define <vscale x 8 x i8> @test_vlsseg4_nxv8i8_triscv.vector.tuple_nxv8i8_4t(ptr %base, i32 %offset, i32 %vl) {342; CHECK-LABEL: test_vlsseg4_nxv8i8_triscv.vector.tuple_nxv8i8_4t:343; CHECK: # %bb.0: # %entry344; CHECK-NEXT: vsetvli zero, a2, e8, m1, ta, ma345; CHECK-NEXT: vlsseg4e8.v v7, (a0), a1346; CHECK-NEXT: ret347entry:348 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vlsseg4.triscv.vector.tuple_nxv8i8_4t(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) poison, ptr %base, i32 %offset, i32 %vl, i32 3)349 %1 = 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) %0, i32 1)350 ret <vscale x 8 x i8> %1351}352 353define <vscale x 8 x i8> @test_vlsseg4_mask_nxv8i8_triscv.vector.tuple_nxv8i8_4t(ptr %base, i32 %offset, i32 %vl, <vscale x 8 x i1> %mask) {354; CHECK-LABEL: test_vlsseg4_mask_nxv8i8_triscv.vector.tuple_nxv8i8_4t:355; CHECK: # %bb.0: # %entry356; CHECK-NEXT: vsetvli zero, a2, e8, m1, ta, ma357; CHECK-NEXT: vlsseg4e8.v v7, (a0), a1, v0.t358; CHECK-NEXT: ret359entry:360 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vlsseg4.mask.triscv.vector.tuple_nxv8i8_4t.nxv8i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) poison, ptr %base, i32 %offset, <vscale x 8 x i1> %mask, i32 %vl, i32 1, i32 3)361 %1 = 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) %0, i32 1)362 ret <vscale x 8 x i8> %1363}364 365define <vscale x 16 x i8> @test_vlsseg4_nxv16i8_triscv.vector.tuple_nxv16i8_4t(ptr %base, i32 %offset, i32 %vl) {366; CHECK-LABEL: test_vlsseg4_nxv16i8_triscv.vector.tuple_nxv16i8_4t:367; CHECK: # %bb.0: # %entry368; CHECK-NEXT: vsetvli zero, a2, e8, m2, ta, ma369; CHECK-NEXT: vlsseg4e8.v v6, (a0), a1370; CHECK-NEXT: ret371entry:372 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vlsseg4.triscv.vector.tuple_nxv16i8_4t(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) poison, ptr %base, i32 %offset, i32 %vl, i32 3)373 %1 = 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) %0, i32 1)374 ret <vscale x 16 x i8> %1375}376 377define <vscale x 16 x i8> @test_vlsseg4_mask_nxv16i8_triscv.vector.tuple_nxv16i8_4t(ptr %base, i32 %offset, i32 %vl, <vscale x 16 x i1> %mask) {378; CHECK-LABEL: test_vlsseg4_mask_nxv16i8_triscv.vector.tuple_nxv16i8_4t:379; CHECK: # %bb.0: # %entry380; CHECK-NEXT: vsetvli zero, a2, e8, m2, ta, ma381; CHECK-NEXT: vlsseg4e8.v v6, (a0), a1, v0.t382; CHECK-NEXT: ret383entry:384 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vlsseg4.mask.triscv.vector.tuple_nxv16i8_4t.nxv16i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) poison, ptr %base, i32 %offset, <vscale x 16 x i1> %mask, i32 %vl, i32 1, i32 3)385 %1 = 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) %0, i32 1)386 ret <vscale x 16 x i8> %1387}388 389define <vscale x 1 x i8> @test_vlsseg5_nxv1i8_triscv.vector.tuple_nxv1i8_5t(ptr %base, i32 %offset, i32 %vl) {390; CHECK-LABEL: test_vlsseg5_nxv1i8_triscv.vector.tuple_nxv1i8_5t:391; CHECK: # %bb.0: # %entry392; CHECK-NEXT: vsetvli zero, a2, e8, mf8, ta, ma393; CHECK-NEXT: vlsseg5e8.v v7, (a0), a1394; CHECK-NEXT: ret395entry:396 %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 5) @llvm.riscv.vlsseg5.triscv.vector.tuple_nxv1i8_5t(target("riscv.vector.tuple", <vscale x 1 x i8>, 5) poison, ptr %base, i32 %offset, i32 %vl, i32 3)397 %1 = 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) %0, i32 1)398 ret <vscale x 1 x i8> %1399}400 401define <vscale x 1 x i8> @test_vlsseg5_mask_nxv1i8_triscv.vector.tuple_nxv1i8_5t(ptr %base, i32 %offset, i32 %vl, <vscale x 1 x i1> %mask) {402; CHECK-LABEL: test_vlsseg5_mask_nxv1i8_triscv.vector.tuple_nxv1i8_5t:403; CHECK: # %bb.0: # %entry404; CHECK-NEXT: vsetvli zero, a2, e8, mf8, ta, ma405; CHECK-NEXT: vlsseg5e8.v v7, (a0), a1, v0.t406; CHECK-NEXT: ret407entry:408 %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 5) @llvm.riscv.vlsseg5.mask.triscv.vector.tuple_nxv1i8_5t.nxv1i1(target("riscv.vector.tuple", <vscale x 1 x i8>, 5) poison, ptr %base, i32 %offset, <vscale x 1 x i1> %mask, i32 %vl, i32 1, i32 3)409 %1 = 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) %0, i32 1)410 ret <vscale x 1 x i8> %1411}412 413define <vscale x 2 x i8> @test_vlsseg5_nxv2i8_triscv.vector.tuple_nxv2i8_5t(ptr %base, i32 %offset, i32 %vl) {414; CHECK-LABEL: test_vlsseg5_nxv2i8_triscv.vector.tuple_nxv2i8_5t:415; CHECK: # %bb.0: # %entry416; CHECK-NEXT: vsetvli zero, a2, e8, mf4, ta, ma417; CHECK-NEXT: vlsseg5e8.v v7, (a0), a1418; CHECK-NEXT: ret419entry:420 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 5) @llvm.riscv.vlsseg5.triscv.vector.tuple_nxv2i8_5t(target("riscv.vector.tuple", <vscale x 2 x i8>, 5) poison, ptr %base, i32 %offset, i32 %vl, i32 3)421 %1 = 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) %0, i32 1)422 ret <vscale x 2 x i8> %1423}424 425define <vscale x 2 x i8> @test_vlsseg5_mask_nxv2i8_triscv.vector.tuple_nxv2i8_5t(ptr %base, i32 %offset, i32 %vl, <vscale x 2 x i1> %mask) {426; CHECK-LABEL: test_vlsseg5_mask_nxv2i8_triscv.vector.tuple_nxv2i8_5t:427; CHECK: # %bb.0: # %entry428; CHECK-NEXT: vsetvli zero, a2, e8, mf4, ta, ma429; CHECK-NEXT: vlsseg5e8.v v7, (a0), a1, v0.t430; CHECK-NEXT: ret431entry:432 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 5) @llvm.riscv.vlsseg5.mask.triscv.vector.tuple_nxv2i8_5t.nxv2i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 5) poison, ptr %base, i32 %offset, <vscale x 2 x i1> %mask, i32 %vl, i32 1, i32 3)433 %1 = 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) %0, i32 1)434 ret <vscale x 2 x i8> %1435}436 437define <vscale x 4 x i8> @test_vlsseg5_nxv4i8_triscv.vector.tuple_nxv4i8_5t(ptr %base, i32 %offset, i32 %vl) {438; CHECK-LABEL: test_vlsseg5_nxv4i8_triscv.vector.tuple_nxv4i8_5t:439; CHECK: # %bb.0: # %entry440; CHECK-NEXT: vsetvli zero, a2, e8, mf2, ta, ma441; CHECK-NEXT: vlsseg5e8.v v7, (a0), a1442; CHECK-NEXT: ret443entry:444 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vlsseg5.triscv.vector.tuple_nxv4i8_5t(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) poison, ptr %base, i32 %offset, i32 %vl, i32 3)445 %1 = 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) %0, i32 1)446 ret <vscale x 4 x i8> %1447}448 449define <vscale x 4 x i8> @test_vlsseg5_mask_nxv4i8_triscv.vector.tuple_nxv4i8_5t(ptr %base, i32 %offset, i32 %vl, <vscale x 4 x i1> %mask) {450; CHECK-LABEL: test_vlsseg5_mask_nxv4i8_triscv.vector.tuple_nxv4i8_5t:451; CHECK: # %bb.0: # %entry452; CHECK-NEXT: vsetvli zero, a2, e8, mf2, ta, ma453; CHECK-NEXT: vlsseg5e8.v v7, (a0), a1, v0.t454; CHECK-NEXT: ret455entry:456 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vlsseg5.mask.triscv.vector.tuple_nxv4i8_5t.nxv4i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) poison, ptr %base, i32 %offset, <vscale x 4 x i1> %mask, i32 %vl, i32 1, i32 3)457 %1 = 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) %0, i32 1)458 ret <vscale x 4 x i8> %1459}460 461define <vscale x 8 x i8> @test_vlsseg5_nxv8i8_triscv.vector.tuple_nxv8i8_5t(ptr %base, i32 %offset, i32 %vl) {462; CHECK-LABEL: test_vlsseg5_nxv8i8_triscv.vector.tuple_nxv8i8_5t:463; CHECK: # %bb.0: # %entry464; CHECK-NEXT: vsetvli zero, a2, e8, m1, ta, ma465; CHECK-NEXT: vlsseg5e8.v v7, (a0), a1466; CHECK-NEXT: ret467entry:468 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vlsseg5.triscv.vector.tuple_nxv8i8_5t(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) poison, ptr %base, i32 %offset, i32 %vl, i32 3)469 %1 = 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) %0, i32 1)470 ret <vscale x 8 x i8> %1471}472 473define <vscale x 8 x i8> @test_vlsseg5_mask_nxv8i8_triscv.vector.tuple_nxv8i8_5t(ptr %base, i32 %offset, i32 %vl, <vscale x 8 x i1> %mask) {474; CHECK-LABEL: test_vlsseg5_mask_nxv8i8_triscv.vector.tuple_nxv8i8_5t:475; CHECK: # %bb.0: # %entry476; CHECK-NEXT: vsetvli zero, a2, e8, m1, ta, ma477; CHECK-NEXT: vlsseg5e8.v v7, (a0), a1, v0.t478; CHECK-NEXT: ret479entry:480 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vlsseg5.mask.triscv.vector.tuple_nxv8i8_5t.nxv8i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) poison, ptr %base, i32 %offset, <vscale x 8 x i1> %mask, i32 %vl, i32 1, i32 3)481 %1 = 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) %0, i32 1)482 ret <vscale x 8 x i8> %1483}484 485define <vscale x 1 x i8> @test_vlsseg6_nxv1i8_triscv.vector.tuple_nxv1i8_6t(ptr %base, i32 %offset, i32 %vl) {486; CHECK-LABEL: test_vlsseg6_nxv1i8_triscv.vector.tuple_nxv1i8_6t:487; CHECK: # %bb.0: # %entry488; CHECK-NEXT: vsetvli zero, a2, e8, mf8, ta, ma489; CHECK-NEXT: vlsseg6e8.v v7, (a0), a1490; CHECK-NEXT: ret491entry:492 %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 6) @llvm.riscv.vlsseg6.triscv.vector.tuple_nxv1i8_6t(target("riscv.vector.tuple", <vscale x 1 x i8>, 6) poison, ptr %base, i32 %offset, i32 %vl, i32 3)493 %1 = 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) %0, i32 1)494 ret <vscale x 1 x i8> %1495}496 497define <vscale x 1 x i8> @test_vlsseg6_mask_nxv1i8_triscv.vector.tuple_nxv1i8_6t(ptr %base, i32 %offset, i32 %vl, <vscale x 1 x i1> %mask) {498; CHECK-LABEL: test_vlsseg6_mask_nxv1i8_triscv.vector.tuple_nxv1i8_6t:499; CHECK: # %bb.0: # %entry500; CHECK-NEXT: vsetvli zero, a2, e8, mf8, ta, ma501; CHECK-NEXT: vlsseg6e8.v v7, (a0), a1, v0.t502; CHECK-NEXT: ret503entry:504 %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 6) @llvm.riscv.vlsseg6.mask.triscv.vector.tuple_nxv1i8_6t.nxv1i1(target("riscv.vector.tuple", <vscale x 1 x i8>, 6) poison, ptr %base, i32 %offset, <vscale x 1 x i1> %mask, i32 %vl, i32 1, i32 3)505 %1 = 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) %0, i32 1)506 ret <vscale x 1 x i8> %1507}508 509define <vscale x 2 x i8> @test_vlsseg6_nxv2i8_triscv.vector.tuple_nxv2i8_6t(ptr %base, i32 %offset, i32 %vl) {510; CHECK-LABEL: test_vlsseg6_nxv2i8_triscv.vector.tuple_nxv2i8_6t:511; CHECK: # %bb.0: # %entry512; CHECK-NEXT: vsetvli zero, a2, e8, mf4, ta, ma513; CHECK-NEXT: vlsseg6e8.v v7, (a0), a1514; CHECK-NEXT: ret515entry:516 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 6) @llvm.riscv.vlsseg6.triscv.vector.tuple_nxv2i8_6t(target("riscv.vector.tuple", <vscale x 2 x i8>, 6) poison, ptr %base, i32 %offset, i32 %vl, i32 3)517 %1 = 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) %0, i32 1)518 ret <vscale x 2 x i8> %1519}520 521define <vscale x 2 x i8> @test_vlsseg6_mask_nxv2i8_triscv.vector.tuple_nxv2i8_6t(ptr %base, i32 %offset, i32 %vl, <vscale x 2 x i1> %mask) {522; CHECK-LABEL: test_vlsseg6_mask_nxv2i8_triscv.vector.tuple_nxv2i8_6t:523; CHECK: # %bb.0: # %entry524; CHECK-NEXT: vsetvli zero, a2, e8, mf4, ta, ma525; CHECK-NEXT: vlsseg6e8.v v7, (a0), a1, v0.t526; CHECK-NEXT: ret527entry:528 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 6) @llvm.riscv.vlsseg6.mask.triscv.vector.tuple_nxv2i8_6t.nxv2i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 6) poison, ptr %base, i32 %offset, <vscale x 2 x i1> %mask, i32 %vl, i32 1, i32 3)529 %1 = 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) %0, i32 1)530 ret <vscale x 2 x i8> %1531}532 533define <vscale x 4 x i8> @test_vlsseg6_nxv4i8_triscv.vector.tuple_nxv4i8_6t(ptr %base, i32 %offset, i32 %vl) {534; CHECK-LABEL: test_vlsseg6_nxv4i8_triscv.vector.tuple_nxv4i8_6t:535; CHECK: # %bb.0: # %entry536; CHECK-NEXT: vsetvli zero, a2, e8, mf2, ta, ma537; CHECK-NEXT: vlsseg6e8.v v7, (a0), a1538; CHECK-NEXT: ret539entry:540 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vlsseg6.triscv.vector.tuple_nxv4i8_6t(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) poison, ptr %base, i32 %offset, i32 %vl, i32 3)541 %1 = 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) %0, i32 1)542 ret <vscale x 4 x i8> %1543}544 545define <vscale x 4 x i8> @test_vlsseg6_mask_nxv4i8_triscv.vector.tuple_nxv4i8_6t(ptr %base, i32 %offset, i32 %vl, <vscale x 4 x i1> %mask) {546; CHECK-LABEL: test_vlsseg6_mask_nxv4i8_triscv.vector.tuple_nxv4i8_6t:547; CHECK: # %bb.0: # %entry548; CHECK-NEXT: vsetvli zero, a2, e8, mf2, ta, ma549; CHECK-NEXT: vlsseg6e8.v v7, (a0), a1, v0.t550; CHECK-NEXT: ret551entry:552 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vlsseg6.mask.triscv.vector.tuple_nxv4i8_6t.nxv4i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) poison, ptr %base, i32 %offset, <vscale x 4 x i1> %mask, i32 %vl, i32 1, i32 3)553 %1 = 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) %0, i32 1)554 ret <vscale x 4 x i8> %1555}556 557define <vscale x 8 x i8> @test_vlsseg6_nxv8i8_triscv.vector.tuple_nxv8i8_6t(ptr %base, i32 %offset, i32 %vl) {558; CHECK-LABEL: test_vlsseg6_nxv8i8_triscv.vector.tuple_nxv8i8_6t:559; CHECK: # %bb.0: # %entry560; CHECK-NEXT: vsetvli zero, a2, e8, m1, ta, ma561; CHECK-NEXT: vlsseg6e8.v v7, (a0), a1562; CHECK-NEXT: ret563entry:564 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vlsseg6.triscv.vector.tuple_nxv8i8_6t(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) poison, ptr %base, i32 %offset, i32 %vl, i32 3)565 %1 = 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) %0, i32 1)566 ret <vscale x 8 x i8> %1567}568 569define <vscale x 8 x i8> @test_vlsseg6_mask_nxv8i8_triscv.vector.tuple_nxv8i8_6t(ptr %base, i32 %offset, i32 %vl, <vscale x 8 x i1> %mask) {570; CHECK-LABEL: test_vlsseg6_mask_nxv8i8_triscv.vector.tuple_nxv8i8_6t:571; CHECK: # %bb.0: # %entry572; CHECK-NEXT: vsetvli zero, a2, e8, m1, ta, ma573; CHECK-NEXT: vlsseg6e8.v v7, (a0), a1, v0.t574; CHECK-NEXT: ret575entry:576 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vlsseg6.mask.triscv.vector.tuple_nxv8i8_6t.nxv8i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) poison, ptr %base, i32 %offset, <vscale x 8 x i1> %mask, i32 %vl, i32 1, i32 3)577 %1 = 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) %0, i32 1)578 ret <vscale x 8 x i8> %1579}580 581define <vscale x 1 x i8> @test_vlsseg7_nxv1i8_triscv.vector.tuple_nxv1i8_7t(ptr %base, i32 %offset, i32 %vl) {582; CHECK-LABEL: test_vlsseg7_nxv1i8_triscv.vector.tuple_nxv1i8_7t:583; CHECK: # %bb.0: # %entry584; CHECK-NEXT: vsetvli zero, a2, e8, mf8, ta, ma585; CHECK-NEXT: vlsseg7e8.v v7, (a0), a1586; CHECK-NEXT: ret587entry:588 %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 7) @llvm.riscv.vlsseg7.triscv.vector.tuple_nxv1i8_7t(target("riscv.vector.tuple", <vscale x 1 x i8>, 7) poison, ptr %base, i32 %offset, i32 %vl, i32 3)589 %1 = 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) %0, i32 1)590 ret <vscale x 1 x i8> %1591}592 593define <vscale x 1 x i8> @test_vlsseg7_mask_nxv1i8_triscv.vector.tuple_nxv1i8_7t(ptr %base, i32 %offset, i32 %vl, <vscale x 1 x i1> %mask) {594; CHECK-LABEL: test_vlsseg7_mask_nxv1i8_triscv.vector.tuple_nxv1i8_7t:595; CHECK: # %bb.0: # %entry596; CHECK-NEXT: vsetvli zero, a2, e8, mf8, ta, ma597; CHECK-NEXT: vlsseg7e8.v v7, (a0), a1, v0.t598; CHECK-NEXT: ret599entry:600 %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 7) @llvm.riscv.vlsseg7.mask.triscv.vector.tuple_nxv1i8_7t.nxv1i1(target("riscv.vector.tuple", <vscale x 1 x i8>, 7) poison, ptr %base, i32 %offset, <vscale x 1 x i1> %mask, i32 %vl, i32 1, i32 3)601 %1 = 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) %0, i32 1)602 ret <vscale x 1 x i8> %1603}604 605define <vscale x 2 x i8> @test_vlsseg7_nxv2i8_triscv.vector.tuple_nxv2i8_7t(ptr %base, i32 %offset, i32 %vl) {606; CHECK-LABEL: test_vlsseg7_nxv2i8_triscv.vector.tuple_nxv2i8_7t:607; CHECK: # %bb.0: # %entry608; CHECK-NEXT: vsetvli zero, a2, e8, mf4, ta, ma609; CHECK-NEXT: vlsseg7e8.v v7, (a0), a1610; CHECK-NEXT: ret611entry:612 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 7) @llvm.riscv.vlsseg7.triscv.vector.tuple_nxv2i8_7t(target("riscv.vector.tuple", <vscale x 2 x i8>, 7) poison, ptr %base, i32 %offset, i32 %vl, i32 3)613 %1 = 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) %0, i32 1)614 ret <vscale x 2 x i8> %1615}616 617define <vscale x 2 x i8> @test_vlsseg7_mask_nxv2i8_triscv.vector.tuple_nxv2i8_7t(ptr %base, i32 %offset, i32 %vl, <vscale x 2 x i1> %mask) {618; CHECK-LABEL: test_vlsseg7_mask_nxv2i8_triscv.vector.tuple_nxv2i8_7t:619; CHECK: # %bb.0: # %entry620; CHECK-NEXT: vsetvli zero, a2, e8, mf4, ta, ma621; CHECK-NEXT: vlsseg7e8.v v7, (a0), a1, v0.t622; CHECK-NEXT: ret623entry:624 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 7) @llvm.riscv.vlsseg7.mask.triscv.vector.tuple_nxv2i8_7t.nxv2i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 7) poison, ptr %base, i32 %offset, <vscale x 2 x i1> %mask, i32 %vl, i32 1, i32 3)625 %1 = 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) %0, i32 1)626 ret <vscale x 2 x i8> %1627}628 629define <vscale x 4 x i8> @test_vlsseg7_nxv4i8_triscv.vector.tuple_nxv4i8_7t(ptr %base, i32 %offset, i32 %vl) {630; CHECK-LABEL: test_vlsseg7_nxv4i8_triscv.vector.tuple_nxv4i8_7t:631; CHECK: # %bb.0: # %entry632; CHECK-NEXT: vsetvli zero, a2, e8, mf2, ta, ma633; CHECK-NEXT: vlsseg7e8.v v7, (a0), a1634; CHECK-NEXT: ret635entry:636 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vlsseg7.triscv.vector.tuple_nxv4i8_7t(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) poison, ptr %base, i32 %offset, i32 %vl, i32 3)637 %1 = 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) %0, i32 1)638 ret <vscale x 4 x i8> %1639}640 641define <vscale x 4 x i8> @test_vlsseg7_mask_nxv4i8_triscv.vector.tuple_nxv4i8_7t(ptr %base, i32 %offset, i32 %vl, <vscale x 4 x i1> %mask) {642; CHECK-LABEL: test_vlsseg7_mask_nxv4i8_triscv.vector.tuple_nxv4i8_7t:643; CHECK: # %bb.0: # %entry644; CHECK-NEXT: vsetvli zero, a2, e8, mf2, ta, ma645; CHECK-NEXT: vlsseg7e8.v v7, (a0), a1, v0.t646; CHECK-NEXT: ret647entry:648 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vlsseg7.mask.triscv.vector.tuple_nxv4i8_7t.nxv4i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) poison, ptr %base, i32 %offset, <vscale x 4 x i1> %mask, i32 %vl, i32 1, i32 3)649 %1 = 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) %0, i32 1)650 ret <vscale x 4 x i8> %1651}652 653define <vscale x 8 x i8> @test_vlsseg7_nxv8i8_triscv.vector.tuple_nxv8i8_7t(ptr %base, i32 %offset, i32 %vl) {654; CHECK-LABEL: test_vlsseg7_nxv8i8_triscv.vector.tuple_nxv8i8_7t:655; CHECK: # %bb.0: # %entry656; CHECK-NEXT: vsetvli zero, a2, e8, m1, ta, ma657; CHECK-NEXT: vlsseg7e8.v v7, (a0), a1658; CHECK-NEXT: ret659entry:660 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vlsseg7.triscv.vector.tuple_nxv8i8_7t(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) poison, ptr %base, i32 %offset, i32 %vl, i32 3)661 %1 = 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) %0, i32 1)662 ret <vscale x 8 x i8> %1663}664 665define <vscale x 8 x i8> @test_vlsseg7_mask_nxv8i8_triscv.vector.tuple_nxv8i8_7t(ptr %base, i32 %offset, i32 %vl, <vscale x 8 x i1> %mask) {666; CHECK-LABEL: test_vlsseg7_mask_nxv8i8_triscv.vector.tuple_nxv8i8_7t:667; CHECK: # %bb.0: # %entry668; CHECK-NEXT: vsetvli zero, a2, e8, m1, ta, ma669; CHECK-NEXT: vlsseg7e8.v v7, (a0), a1, v0.t670; CHECK-NEXT: ret671entry:672 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vlsseg7.mask.triscv.vector.tuple_nxv8i8_7t.nxv8i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) poison, ptr %base, i32 %offset, <vscale x 8 x i1> %mask, i32 %vl, i32 1, i32 3)673 %1 = 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) %0, i32 1)674 ret <vscale x 8 x i8> %1675}676 677define <vscale x 1 x i8> @test_vlsseg8_nxv1i8_triscv.vector.tuple_nxv1i8_8t(ptr %base, i32 %offset, i32 %vl) {678; CHECK-LABEL: test_vlsseg8_nxv1i8_triscv.vector.tuple_nxv1i8_8t:679; CHECK: # %bb.0: # %entry680; CHECK-NEXT: vsetvli zero, a2, e8, mf8, ta, ma681; CHECK-NEXT: vlsseg8e8.v v7, (a0), a1682; CHECK-NEXT: ret683entry:684 %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 8) @llvm.riscv.vlsseg8.triscv.vector.tuple_nxv1i8_8t(target("riscv.vector.tuple", <vscale x 1 x i8>, 8) poison, ptr %base, i32 %offset, i32 %vl, i32 3)685 %1 = 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) %0, i32 1)686 ret <vscale x 1 x i8> %1687}688 689define <vscale x 1 x i8> @test_vlsseg8_mask_nxv1i8_triscv.vector.tuple_nxv1i8_8t(ptr %base, i32 %offset, i32 %vl, <vscale x 1 x i1> %mask) {690; CHECK-LABEL: test_vlsseg8_mask_nxv1i8_triscv.vector.tuple_nxv1i8_8t:691; CHECK: # %bb.0: # %entry692; CHECK-NEXT: vsetvli zero, a2, e8, mf8, ta, ma693; CHECK-NEXT: vlsseg8e8.v v7, (a0), a1, v0.t694; CHECK-NEXT: ret695entry:696 %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 8) @llvm.riscv.vlsseg8.mask.triscv.vector.tuple_nxv1i8_8t.nxv1i1(target("riscv.vector.tuple", <vscale x 1 x i8>, 8) poison, ptr %base, i32 %offset, <vscale x 1 x i1> %mask, i32 %vl, i32 1, i32 3)697 %1 = 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) %0, i32 1)698 ret <vscale x 1 x i8> %1699}700 701define <vscale x 2 x i8> @test_vlsseg8_nxv2i8_triscv.vector.tuple_nxv2i8_8t(ptr %base, i32 %offset, i32 %vl) {702; CHECK-LABEL: test_vlsseg8_nxv2i8_triscv.vector.tuple_nxv2i8_8t:703; CHECK: # %bb.0: # %entry704; CHECK-NEXT: vsetvli zero, a2, e8, mf4, ta, ma705; CHECK-NEXT: vlsseg8e8.v v7, (a0), a1706; CHECK-NEXT: ret707entry:708 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 8) @llvm.riscv.vlsseg8.triscv.vector.tuple_nxv2i8_8t(target("riscv.vector.tuple", <vscale x 2 x i8>, 8) poison, ptr %base, i32 %offset, i32 %vl, i32 3)709 %1 = 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) %0, i32 1)710 ret <vscale x 2 x i8> %1711}712 713define <vscale x 2 x i8> @test_vlsseg8_mask_nxv2i8_triscv.vector.tuple_nxv2i8_8t(ptr %base, i32 %offset, i32 %vl, <vscale x 2 x i1> %mask) {714; CHECK-LABEL: test_vlsseg8_mask_nxv2i8_triscv.vector.tuple_nxv2i8_8t:715; CHECK: # %bb.0: # %entry716; CHECK-NEXT: vsetvli zero, a2, e8, mf4, ta, ma717; CHECK-NEXT: vlsseg8e8.v v7, (a0), a1, v0.t718; CHECK-NEXT: ret719entry:720 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 8) @llvm.riscv.vlsseg8.mask.triscv.vector.tuple_nxv2i8_8t.nxv2i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 8) poison, ptr %base, i32 %offset, <vscale x 2 x i1> %mask, i32 %vl, i32 1, i32 3)721 %1 = 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) %0, i32 1)722 ret <vscale x 2 x i8> %1723}724 725define <vscale x 4 x i8> @test_vlsseg8_nxv4i8_triscv.vector.tuple_nxv4i8_8t(ptr %base, i32 %offset, i32 %vl) {726; CHECK-LABEL: test_vlsseg8_nxv4i8_triscv.vector.tuple_nxv4i8_8t:727; CHECK: # %bb.0: # %entry728; CHECK-NEXT: vsetvli zero, a2, e8, mf2, ta, ma729; CHECK-NEXT: vlsseg8e8.v v7, (a0), a1730; CHECK-NEXT: ret731entry:732 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vlsseg8.triscv.vector.tuple_nxv4i8_8t(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) poison, ptr %base, i32 %offset, i32 %vl, i32 3)733 %1 = 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) %0, i32 1)734 ret <vscale x 4 x i8> %1735}736 737define <vscale x 4 x i8> @test_vlsseg8_mask_nxv4i8_triscv.vector.tuple_nxv4i8_8t(ptr %base, i32 %offset, i32 %vl, <vscale x 4 x i1> %mask) {738; CHECK-LABEL: test_vlsseg8_mask_nxv4i8_triscv.vector.tuple_nxv4i8_8t:739; CHECK: # %bb.0: # %entry740; CHECK-NEXT: vsetvli zero, a2, e8, mf2, ta, ma741; CHECK-NEXT: vlsseg8e8.v v7, (a0), a1, v0.t742; CHECK-NEXT: ret743entry:744 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vlsseg8.mask.triscv.vector.tuple_nxv4i8_8t.nxv4i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) poison, ptr %base, i32 %offset, <vscale x 4 x i1> %mask, i32 %vl, i32 1, i32 3)745 %1 = 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) %0, i32 1)746 ret <vscale x 4 x i8> %1747}748 749define <vscale x 8 x i8> @test_vlsseg8_nxv8i8_triscv.vector.tuple_nxv8i8_8t(ptr %base, i32 %offset, i32 %vl) {750; CHECK-LABEL: test_vlsseg8_nxv8i8_triscv.vector.tuple_nxv8i8_8t:751; CHECK: # %bb.0: # %entry752; CHECK-NEXT: vsetvli zero, a2, e8, m1, ta, ma753; CHECK-NEXT: vlsseg8e8.v v7, (a0), a1754; CHECK-NEXT: ret755entry:756 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vlsseg8.triscv.vector.tuple_nxv8i8_8t(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) poison, ptr %base, i32 %offset, i32 %vl, i32 3)757 %1 = 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) %0, i32 1)758 ret <vscale x 8 x i8> %1759}760 761define <vscale x 8 x i8> @test_vlsseg8_mask_nxv8i8_triscv.vector.tuple_nxv8i8_8t(ptr %base, i32 %offset, i32 %vl, <vscale x 8 x i1> %mask) {762; CHECK-LABEL: test_vlsseg8_mask_nxv8i8_triscv.vector.tuple_nxv8i8_8t:763; CHECK: # %bb.0: # %entry764; CHECK-NEXT: vsetvli zero, a2, e8, m1, ta, ma765; CHECK-NEXT: vlsseg8e8.v v7, (a0), a1, v0.t766; CHECK-NEXT: ret767entry:768 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vlsseg8.mask.triscv.vector.tuple_nxv8i8_8t.nxv8i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) poison, ptr %base, i32 %offset, <vscale x 8 x i1> %mask, i32 %vl, i32 1, i32 3)769 %1 = 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) %0, i32 1)770 ret <vscale x 8 x i8> %1771}772 773define <vscale x 1 x i16> @test_vlsseg2_nxv1i16_triscv.vector.tuple_nxv2i8_2t(ptr %base, i32 %offset, i32 %vl) {774; CHECK-LABEL: test_vlsseg2_nxv1i16_triscv.vector.tuple_nxv2i8_2t:775; CHECK: # %bb.0: # %entry776; CHECK-NEXT: vsetvli zero, a2, e16, mf4, ta, ma777; CHECK-NEXT: vlsseg2e16.v v7, (a0), a1778; CHECK-NEXT: ret779entry:780 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 2) @llvm.riscv.vlsseg2.triscv.vector.tuple_nxv2i8_2t(target("riscv.vector.tuple", <vscale x 2 x i8>, 2) poison, ptr %base, i32 %offset, i32 %vl, i32 4)781 %1 = 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) %0, i32 1)782 ret <vscale x 1 x i16> %1783}784 785define <vscale x 1 x i16> @test_vlsseg2_mask_nxv1i16_triscv.vector.tuple_nxv2i8_2t(ptr %base, i32 %offset, i32 %vl, <vscale x 1 x i1> %mask) {786; CHECK-LABEL: test_vlsseg2_mask_nxv1i16_triscv.vector.tuple_nxv2i8_2t:787; CHECK: # %bb.0: # %entry788; CHECK-NEXT: vsetvli zero, a2, e16, mf4, ta, ma789; CHECK-NEXT: vlsseg2e16.v v7, (a0), a1, v0.t790; CHECK-NEXT: ret791entry:792 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv2i8_2t.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 2) poison, ptr %base, i32 %offset, <vscale x 1 x i1> %mask, i32 %vl, i32 1, i32 4)793 %1 = 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) %0, i32 1)794 ret <vscale x 1 x i16> %1795}796 797define <vscale x 2 x i16> @test_vlsseg2_nxv2i16_triscv.vector.tuple_nxv4i8_2t(ptr %base, i32 %offset, i32 %vl) {798; CHECK-LABEL: test_vlsseg2_nxv2i16_triscv.vector.tuple_nxv4i8_2t:799; CHECK: # %bb.0: # %entry800; CHECK-NEXT: vsetvli zero, a2, e16, mf2, ta, ma801; CHECK-NEXT: vlsseg2e16.v v7, (a0), a1802; CHECK-NEXT: ret803entry:804 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vlsseg2.triscv.vector.tuple_nxv4i8_2t(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) poison, ptr %base, i32 %offset, i32 %vl, i32 4)805 %1 = 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) %0, i32 1)806 ret <vscale x 2 x i16> %1807}808 809define <vscale x 2 x i16> @test_vlsseg2_mask_nxv2i16_triscv.vector.tuple_nxv4i8_2t(ptr %base, i32 %offset, i32 %vl, <vscale x 2 x i1> %mask) {810; CHECK-LABEL: test_vlsseg2_mask_nxv2i16_triscv.vector.tuple_nxv4i8_2t:811; CHECK: # %bb.0: # %entry812; CHECK-NEXT: vsetvli zero, a2, e16, mf2, ta, ma813; CHECK-NEXT: vlsseg2e16.v v7, (a0), a1, v0.t814; CHECK-NEXT: ret815entry:816 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv4i8_2t.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) poison, ptr %base, i32 %offset, <vscale x 2 x i1> %mask, i32 %vl, i32 1, i32 4)817 %1 = 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) %0, i32 1)818 ret <vscale x 2 x i16> %1819}820 821define <vscale x 4 x i16> @test_vlsseg2_nxv4i16_triscv.vector.tuple_nxv8i8_2t(ptr %base, i32 %offset, i32 %vl) {822; CHECK-LABEL: test_vlsseg2_nxv4i16_triscv.vector.tuple_nxv8i8_2t:823; CHECK: # %bb.0: # %entry824; CHECK-NEXT: vsetvli zero, a2, e16, m1, ta, ma825; CHECK-NEXT: vlsseg2e16.v v7, (a0), a1826; CHECK-NEXT: ret827entry:828 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vlsseg2.triscv.vector.tuple_nxv8i8_2t(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) poison, ptr %base, i32 %offset, i32 %vl, i32 4)829 %1 = 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) %0, i32 1)830 ret <vscale x 4 x i16> %1831}832 833define <vscale x 4 x i16> @test_vlsseg2_mask_nxv4i16_triscv.vector.tuple_nxv8i8_2t(ptr %base, i32 %offset, i32 %vl, <vscale x 4 x i1> %mask) {834; CHECK-LABEL: test_vlsseg2_mask_nxv4i16_triscv.vector.tuple_nxv8i8_2t:835; CHECK: # %bb.0: # %entry836; CHECK-NEXT: vsetvli zero, a2, e16, m1, ta, ma837; CHECK-NEXT: vlsseg2e16.v v7, (a0), a1, v0.t838; CHECK-NEXT: ret839entry:840 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv8i8_2t.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) poison, ptr %base, i32 %offset, <vscale x 4 x i1> %mask, i32 %vl, i32 1, i32 4)841 %1 = 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) %0, i32 1)842 ret <vscale x 4 x i16> %1843}844 845define <vscale x 8 x i16> @test_vlsseg2_nxv8i16_triscv.vector.tuple_nxv16i8_2t(ptr %base, i32 %offset, i32 %vl) {846; CHECK-LABEL: test_vlsseg2_nxv8i16_triscv.vector.tuple_nxv16i8_2t:847; CHECK: # %bb.0: # %entry848; CHECK-NEXT: vsetvli zero, a2, e16, m2, ta, ma849; CHECK-NEXT: vlsseg2e16.v v6, (a0), a1850; CHECK-NEXT: ret851entry:852 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vlsseg2.triscv.vector.tuple_nxv16i8_2t(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) poison, ptr %base, i32 %offset, i32 %vl, i32 4)853 %1 = 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) %0, i32 1)854 ret <vscale x 8 x i16> %1855}856 857define <vscale x 8 x i16> @test_vlsseg2_mask_nxv8i16_triscv.vector.tuple_nxv16i8_2t(ptr %base, i32 %offset, i32 %vl, <vscale x 8 x i1> %mask) {858; CHECK-LABEL: test_vlsseg2_mask_nxv8i16_triscv.vector.tuple_nxv16i8_2t:859; CHECK: # %bb.0: # %entry860; CHECK-NEXT: vsetvli zero, a2, e16, m2, ta, ma861; CHECK-NEXT: vlsseg2e16.v v6, (a0), a1, v0.t862; CHECK-NEXT: ret863entry:864 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv16i8_2t.nxv8i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) poison, ptr %base, i32 %offset, <vscale x 8 x i1> %mask, i32 %vl, i32 1, i32 4)865 %1 = 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) %0, i32 1)866 ret <vscale x 8 x i16> %1867}868 869define <vscale x 16 x i16> @test_vlsseg2_nxv16i16_triscv.vector.tuple_nxv32i8_2t(ptr %base, i32 %offset, i32 %vl) {870; CHECK-LABEL: test_vlsseg2_nxv16i16_triscv.vector.tuple_nxv32i8_2t:871; CHECK: # %bb.0: # %entry872; CHECK-NEXT: vsetvli zero, a2, e16, m4, ta, ma873; CHECK-NEXT: vlsseg2e16.v v4, (a0), a1874; CHECK-NEXT: ret875entry:876 %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vlsseg2.triscv.vector.tuple_nxv32i8_2t(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) poison, ptr %base, i32 %offset, i32 %vl, i32 4)877 %1 = 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) %0, i32 1)878 ret <vscale x 16 x i16> %1879}880 881define <vscale x 16 x i16> @test_vlsseg2_mask_nxv16i16_triscv.vector.tuple_nxv32i8_2t(ptr %base, i32 %offset, i32 %vl, <vscale x 16 x i1> %mask) {882; CHECK-LABEL: test_vlsseg2_mask_nxv16i16_triscv.vector.tuple_nxv32i8_2t:883; CHECK: # %bb.0: # %entry884; CHECK-NEXT: vsetvli zero, a2, e16, m4, ta, ma885; CHECK-NEXT: vlsseg2e16.v v4, (a0), a1, v0.t886; CHECK-NEXT: ret887entry:888 %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv32i8_2t.nxv16i1(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) poison, ptr %base, i32 %offset, <vscale x 16 x i1> %mask, i32 %vl, i32 1, i32 4)889 %1 = 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) %0, i32 1)890 ret <vscale x 16 x i16> %1891}892 893define <vscale x 1 x i16> @test_vlsseg3_nxv1i16_triscv.vector.tuple_nxv2i8_3t(ptr %base, i32 %offset, i32 %vl) {894; CHECK-LABEL: test_vlsseg3_nxv1i16_triscv.vector.tuple_nxv2i8_3t:895; CHECK: # %bb.0: # %entry896; CHECK-NEXT: vsetvli zero, a2, e16, mf4, ta, ma897; CHECK-NEXT: vlsseg3e16.v v7, (a0), a1898; CHECK-NEXT: ret899entry:900 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 3) @llvm.riscv.vlsseg3.triscv.vector.tuple_nxv2i8_3t(target("riscv.vector.tuple", <vscale x 2 x i8>, 3) poison, ptr %base, i32 %offset, i32 %vl, i32 4)901 %1 = 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) %0, i32 1)902 ret <vscale x 1 x i16> %1903}904 905define <vscale x 1 x i16> @test_vlsseg3_mask_nxv1i16_triscv.vector.tuple_nxv2i8_3t(ptr %base, i32 %offset, i32 %vl, <vscale x 1 x i1> %mask) {906; CHECK-LABEL: test_vlsseg3_mask_nxv1i16_triscv.vector.tuple_nxv2i8_3t:907; CHECK: # %bb.0: # %entry908; CHECK-NEXT: vsetvli zero, a2, e16, mf4, ta, ma909; CHECK-NEXT: vlsseg3e16.v v7, (a0), a1, v0.t910; CHECK-NEXT: ret911entry:912 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 3) @llvm.riscv.vlsseg3.mask.triscv.vector.tuple_nxv2i8_3t.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 3) poison, ptr %base, i32 %offset, <vscale x 1 x i1> %mask, i32 %vl, i32 1, i32 4)913 %1 = 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) %0, i32 1)914 ret <vscale x 1 x i16> %1915}916 917define <vscale x 2 x i16> @test_vlsseg3_nxv2i16_triscv.vector.tuple_nxv4i8_3t(ptr %base, i32 %offset, i32 %vl) {918; CHECK-LABEL: test_vlsseg3_nxv2i16_triscv.vector.tuple_nxv4i8_3t:919; CHECK: # %bb.0: # %entry920; CHECK-NEXT: vsetvli zero, a2, e16, mf2, ta, ma921; CHECK-NEXT: vlsseg3e16.v v7, (a0), a1922; CHECK-NEXT: ret923entry:924 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vlsseg3.triscv.vector.tuple_nxv4i8_3t(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) poison, ptr %base, i32 %offset, i32 %vl, i32 4)925 %1 = 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) %0, i32 1)926 ret <vscale x 2 x i16> %1927}928 929define <vscale x 2 x i16> @test_vlsseg3_mask_nxv2i16_triscv.vector.tuple_nxv4i8_3t(ptr %base, i32 %offset, i32 %vl, <vscale x 2 x i1> %mask) {930; CHECK-LABEL: test_vlsseg3_mask_nxv2i16_triscv.vector.tuple_nxv4i8_3t:931; CHECK: # %bb.0: # %entry932; CHECK-NEXT: vsetvli zero, a2, e16, mf2, ta, ma933; CHECK-NEXT: vlsseg3e16.v v7, (a0), a1, v0.t934; CHECK-NEXT: ret935entry:936 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vlsseg3.mask.triscv.vector.tuple_nxv4i8_3t.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) poison, ptr %base, i32 %offset, <vscale x 2 x i1> %mask, i32 %vl, i32 1, i32 4)937 %1 = 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) %0, i32 1)938 ret <vscale x 2 x i16> %1939}940 941define <vscale x 4 x i16> @test_vlsseg3_nxv4i16_triscv.vector.tuple_nxv8i8_3t(ptr %base, i32 %offset, i32 %vl) {942; CHECK-LABEL: test_vlsseg3_nxv4i16_triscv.vector.tuple_nxv8i8_3t:943; CHECK: # %bb.0: # %entry944; CHECK-NEXT: vsetvli zero, a2, e16, m1, ta, ma945; CHECK-NEXT: vlsseg3e16.v v7, (a0), a1946; CHECK-NEXT: ret947entry:948 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vlsseg3.triscv.vector.tuple_nxv8i8_3t(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) poison, ptr %base, i32 %offset, i32 %vl, i32 4)949 %1 = 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) %0, i32 1)950 ret <vscale x 4 x i16> %1951}952 953define <vscale x 4 x i16> @test_vlsseg3_mask_nxv4i16_triscv.vector.tuple_nxv8i8_3t(ptr %base, i32 %offset, i32 %vl, <vscale x 4 x i1> %mask) {954; CHECK-LABEL: test_vlsseg3_mask_nxv4i16_triscv.vector.tuple_nxv8i8_3t:955; CHECK: # %bb.0: # %entry956; CHECK-NEXT: vsetvli zero, a2, e16, m1, ta, ma957; CHECK-NEXT: vlsseg3e16.v v7, (a0), a1, v0.t958; CHECK-NEXT: ret959entry:960 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vlsseg3.mask.triscv.vector.tuple_nxv8i8_3t.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) poison, ptr %base, i32 %offset, <vscale x 4 x i1> %mask, i32 %vl, i32 1, i32 4)961 %1 = 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) %0, i32 1)962 ret <vscale x 4 x i16> %1963}964 965define <vscale x 8 x i16> @test_vlsseg3_nxv8i16_triscv.vector.tuple_nxv16i8_3t(ptr %base, i32 %offset, i32 %vl) {966; CHECK-LABEL: test_vlsseg3_nxv8i16_triscv.vector.tuple_nxv16i8_3t:967; CHECK: # %bb.0: # %entry968; CHECK-NEXT: vsetvli zero, a2, e16, m2, ta, ma969; CHECK-NEXT: vlsseg3e16.v v6, (a0), a1970; CHECK-NEXT: ret971entry:972 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vlsseg3.triscv.vector.tuple_nxv16i8_3t(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) poison, ptr %base, i32 %offset, i32 %vl, i32 4)973 %1 = 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) %0, i32 1)974 ret <vscale x 8 x i16> %1975}976 977define <vscale x 8 x i16> @test_vlsseg3_mask_nxv8i16_triscv.vector.tuple_nxv16i8_3t(ptr %base, i32 %offset, i32 %vl, <vscale x 8 x i1> %mask) {978; CHECK-LABEL: test_vlsseg3_mask_nxv8i16_triscv.vector.tuple_nxv16i8_3t:979; CHECK: # %bb.0: # %entry980; CHECK-NEXT: vsetvli zero, a2, e16, m2, ta, ma981; CHECK-NEXT: vlsseg3e16.v v6, (a0), a1, v0.t982; CHECK-NEXT: ret983entry:984 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vlsseg3.mask.triscv.vector.tuple_nxv16i8_3t.nxv8i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) poison, ptr %base, i32 %offset, <vscale x 8 x i1> %mask, i32 %vl, i32 1, i32 4)985 %1 = 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) %0, i32 1)986 ret <vscale x 8 x i16> %1987}988 989define <vscale x 1 x i16> @test_vlsseg4_nxv1i16_triscv.vector.tuple_nxv2i8_4t(ptr %base, i32 %offset, i32 %vl) {990; CHECK-LABEL: test_vlsseg4_nxv1i16_triscv.vector.tuple_nxv2i8_4t:991; CHECK: # %bb.0: # %entry992; CHECK-NEXT: vsetvli zero, a2, e16, mf4, ta, ma993; CHECK-NEXT: vlsseg4e16.v v7, (a0), a1994; CHECK-NEXT: ret995entry:996 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 4) @llvm.riscv.vlsseg4.triscv.vector.tuple_nxv2i8_4t(target("riscv.vector.tuple", <vscale x 2 x i8>, 4) poison, ptr %base, i32 %offset, i32 %vl, i32 4)997 %1 = 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) %0, i32 1)998 ret <vscale x 1 x i16> %1999}1000 1001define <vscale x 1 x i16> @test_vlsseg4_mask_nxv1i16_triscv.vector.tuple_nxv2i8_4t(ptr %base, i32 %offset, i32 %vl, <vscale x 1 x i1> %mask) {1002; CHECK-LABEL: test_vlsseg4_mask_nxv1i16_triscv.vector.tuple_nxv2i8_4t:1003; CHECK: # %bb.0: # %entry1004; CHECK-NEXT: vsetvli zero, a2, e16, mf4, ta, ma1005; CHECK-NEXT: vlsseg4e16.v v7, (a0), a1, v0.t1006; CHECK-NEXT: ret1007entry:1008 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 4) @llvm.riscv.vlsseg4.mask.triscv.vector.tuple_nxv2i8_4t.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 4) poison, ptr %base, i32 %offset, <vscale x 1 x i1> %mask, i32 %vl, i32 1, i32 4)1009 %1 = 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) %0, i32 1)1010 ret <vscale x 1 x i16> %11011}1012 1013define <vscale x 2 x i16> @test_vlsseg4_nxv2i16_triscv.vector.tuple_nxv4i8_4t(ptr %base, i32 %offset, i32 %vl) {1014; CHECK-LABEL: test_vlsseg4_nxv2i16_triscv.vector.tuple_nxv4i8_4t:1015; CHECK: # %bb.0: # %entry1016; CHECK-NEXT: vsetvli zero, a2, e16, mf2, ta, ma1017; CHECK-NEXT: vlsseg4e16.v v7, (a0), a11018; CHECK-NEXT: ret1019entry:1020 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vlsseg4.triscv.vector.tuple_nxv4i8_4t(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) poison, ptr %base, i32 %offset, i32 %vl, i32 4)1021 %1 = 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) %0, i32 1)1022 ret <vscale x 2 x i16> %11023}1024 1025define <vscale x 2 x i16> @test_vlsseg4_mask_nxv2i16_triscv.vector.tuple_nxv4i8_4t(ptr %base, i32 %offset, i32 %vl, <vscale x 2 x i1> %mask) {1026; CHECK-LABEL: test_vlsseg4_mask_nxv2i16_triscv.vector.tuple_nxv4i8_4t:1027; CHECK: # %bb.0: # %entry1028; CHECK-NEXT: vsetvli zero, a2, e16, mf2, ta, ma1029; CHECK-NEXT: vlsseg4e16.v v7, (a0), a1, v0.t1030; CHECK-NEXT: ret1031entry:1032 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vlsseg4.mask.triscv.vector.tuple_nxv4i8_4t.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) poison, ptr %base, i32 %offset, <vscale x 2 x i1> %mask, i32 %vl, i32 1, i32 4)1033 %1 = 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) %0, i32 1)1034 ret <vscale x 2 x i16> %11035}1036 1037define <vscale x 4 x i16> @test_vlsseg4_nxv4i16_triscv.vector.tuple_nxv8i8_4t(ptr %base, i32 %offset, i32 %vl) {1038; CHECK-LABEL: test_vlsseg4_nxv4i16_triscv.vector.tuple_nxv8i8_4t:1039; CHECK: # %bb.0: # %entry1040; CHECK-NEXT: vsetvli zero, a2, e16, m1, ta, ma1041; CHECK-NEXT: vlsseg4e16.v v7, (a0), a11042; CHECK-NEXT: ret1043entry:1044 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vlsseg4.triscv.vector.tuple_nxv8i8_4t(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) poison, ptr %base, i32 %offset, i32 %vl, i32 4)1045 %1 = 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) %0, i32 1)1046 ret <vscale x 4 x i16> %11047}1048 1049define <vscale x 4 x i16> @test_vlsseg4_mask_nxv4i16_triscv.vector.tuple_nxv8i8_4t(ptr %base, i32 %offset, i32 %vl, <vscale x 4 x i1> %mask) {1050; CHECK-LABEL: test_vlsseg4_mask_nxv4i16_triscv.vector.tuple_nxv8i8_4t:1051; CHECK: # %bb.0: # %entry1052; CHECK-NEXT: vsetvli zero, a2, e16, m1, ta, ma1053; CHECK-NEXT: vlsseg4e16.v v7, (a0), a1, v0.t1054; CHECK-NEXT: ret1055entry:1056 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vlsseg4.mask.triscv.vector.tuple_nxv8i8_4t.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) poison, ptr %base, i32 %offset, <vscale x 4 x i1> %mask, i32 %vl, i32 1, i32 4)1057 %1 = 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) %0, i32 1)1058 ret <vscale x 4 x i16> %11059}1060 1061define <vscale x 8 x i16> @test_vlsseg4_nxv8i16_triscv.vector.tuple_nxv16i8_4t(ptr %base, i32 %offset, i32 %vl) {1062; CHECK-LABEL: test_vlsseg4_nxv8i16_triscv.vector.tuple_nxv16i8_4t:1063; CHECK: # %bb.0: # %entry1064; CHECK-NEXT: vsetvli zero, a2, e16, m2, ta, ma1065; CHECK-NEXT: vlsseg4e16.v v6, (a0), a11066; CHECK-NEXT: ret1067entry:1068 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vlsseg4.triscv.vector.tuple_nxv16i8_4t(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) poison, ptr %base, i32 %offset, i32 %vl, i32 4)1069 %1 = 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) %0, i32 1)1070 ret <vscale x 8 x i16> %11071}1072 1073define <vscale x 8 x i16> @test_vlsseg4_mask_nxv8i16_triscv.vector.tuple_nxv16i8_4t(ptr %base, i32 %offset, i32 %vl, <vscale x 8 x i1> %mask) {1074; CHECK-LABEL: test_vlsseg4_mask_nxv8i16_triscv.vector.tuple_nxv16i8_4t:1075; CHECK: # %bb.0: # %entry1076; CHECK-NEXT: vsetvli zero, a2, e16, m2, ta, ma1077; CHECK-NEXT: vlsseg4e16.v v6, (a0), a1, v0.t1078; CHECK-NEXT: ret1079entry:1080 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vlsseg4.mask.triscv.vector.tuple_nxv16i8_4t.nxv8i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) poison, ptr %base, i32 %offset, <vscale x 8 x i1> %mask, i32 %vl, i32 1, i32 4)1081 %1 = 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) %0, i32 1)1082 ret <vscale x 8 x i16> %11083}1084 1085define <vscale x 1 x i16> @test_vlsseg5_nxv1i16_triscv.vector.tuple_nxv2i8_5t(ptr %base, i32 %offset, i32 %vl) {1086; CHECK-LABEL: test_vlsseg5_nxv1i16_triscv.vector.tuple_nxv2i8_5t:1087; CHECK: # %bb.0: # %entry1088; CHECK-NEXT: vsetvli zero, a2, e16, mf4, ta, ma1089; CHECK-NEXT: vlsseg5e16.v v7, (a0), a11090; CHECK-NEXT: ret1091entry:1092 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 5) @llvm.riscv.vlsseg5.triscv.vector.tuple_nxv2i8_5t(target("riscv.vector.tuple", <vscale x 2 x i8>, 5) poison, ptr %base, i32 %offset, i32 %vl, i32 4)1093 %1 = 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) %0, i32 1)1094 ret <vscale x 1 x i16> %11095}1096 1097define <vscale x 1 x i16> @test_vlsseg5_mask_nxv1i16_triscv.vector.tuple_nxv2i8_5t(ptr %base, i32 %offset, i32 %vl, <vscale x 1 x i1> %mask) {1098; CHECK-LABEL: test_vlsseg5_mask_nxv1i16_triscv.vector.tuple_nxv2i8_5t:1099; CHECK: # %bb.0: # %entry1100; CHECK-NEXT: vsetvli zero, a2, e16, mf4, ta, ma1101; CHECK-NEXT: vlsseg5e16.v v7, (a0), a1, v0.t1102; CHECK-NEXT: ret1103entry:1104 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 5) @llvm.riscv.vlsseg5.mask.triscv.vector.tuple_nxv2i8_5t.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 5) poison, ptr %base, i32 %offset, <vscale x 1 x i1> %mask, i32 %vl, i32 1, i32 4)1105 %1 = 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) %0, i32 1)1106 ret <vscale x 1 x i16> %11107}1108 1109define <vscale x 2 x i16> @test_vlsseg5_nxv2i16_triscv.vector.tuple_nxv4i8_5t(ptr %base, i32 %offset, i32 %vl) {1110; CHECK-LABEL: test_vlsseg5_nxv2i16_triscv.vector.tuple_nxv4i8_5t:1111; CHECK: # %bb.0: # %entry1112; CHECK-NEXT: vsetvli zero, a2, e16, mf2, ta, ma1113; CHECK-NEXT: vlsseg5e16.v v7, (a0), a11114; CHECK-NEXT: ret1115entry:1116 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vlsseg5.triscv.vector.tuple_nxv4i8_5t(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) poison, ptr %base, i32 %offset, i32 %vl, i32 4)1117 %1 = 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) %0, i32 1)1118 ret <vscale x 2 x i16> %11119}1120 1121define <vscale x 2 x i16> @test_vlsseg5_mask_nxv2i16_triscv.vector.tuple_nxv4i8_5t(ptr %base, i32 %offset, i32 %vl, <vscale x 2 x i1> %mask) {1122; CHECK-LABEL: test_vlsseg5_mask_nxv2i16_triscv.vector.tuple_nxv4i8_5t:1123; CHECK: # %bb.0: # %entry1124; CHECK-NEXT: vsetvli zero, a2, e16, mf2, ta, ma1125; CHECK-NEXT: vlsseg5e16.v v7, (a0), a1, v0.t1126; CHECK-NEXT: ret1127entry:1128 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vlsseg5.mask.triscv.vector.tuple_nxv4i8_5t.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) poison, ptr %base, i32 %offset, <vscale x 2 x i1> %mask, i32 %vl, i32 1, i32 4)1129 %1 = 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) %0, i32 1)1130 ret <vscale x 2 x i16> %11131}1132 1133define <vscale x 4 x i16> @test_vlsseg5_nxv4i16_triscv.vector.tuple_nxv8i8_5t(ptr %base, i32 %offset, i32 %vl) {1134; CHECK-LABEL: test_vlsseg5_nxv4i16_triscv.vector.tuple_nxv8i8_5t:1135; CHECK: # %bb.0: # %entry1136; CHECK-NEXT: vsetvli zero, a2, e16, m1, ta, ma1137; CHECK-NEXT: vlsseg5e16.v v7, (a0), a11138; CHECK-NEXT: ret1139entry:1140 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vlsseg5.triscv.vector.tuple_nxv8i8_5t(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) poison, ptr %base, i32 %offset, i32 %vl, i32 4)1141 %1 = 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) %0, i32 1)1142 ret <vscale x 4 x i16> %11143}1144 1145define <vscale x 4 x i16> @test_vlsseg5_mask_nxv4i16_triscv.vector.tuple_nxv8i8_5t(ptr %base, i32 %offset, i32 %vl, <vscale x 4 x i1> %mask) {1146; CHECK-LABEL: test_vlsseg5_mask_nxv4i16_triscv.vector.tuple_nxv8i8_5t:1147; CHECK: # %bb.0: # %entry1148; CHECK-NEXT: vsetvli zero, a2, e16, m1, ta, ma1149; CHECK-NEXT: vlsseg5e16.v v7, (a0), a1, v0.t1150; CHECK-NEXT: ret1151entry:1152 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vlsseg5.mask.triscv.vector.tuple_nxv8i8_5t.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) poison, ptr %base, i32 %offset, <vscale x 4 x i1> %mask, i32 %vl, i32 1, i32 4)1153 %1 = 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) %0, i32 1)1154 ret <vscale x 4 x i16> %11155}1156 1157define <vscale x 1 x i16> @test_vlsseg6_nxv1i16_triscv.vector.tuple_nxv2i8_6t(ptr %base, i32 %offset, i32 %vl) {1158; CHECK-LABEL: test_vlsseg6_nxv1i16_triscv.vector.tuple_nxv2i8_6t:1159; CHECK: # %bb.0: # %entry1160; CHECK-NEXT: vsetvli zero, a2, e16, mf4, ta, ma1161; CHECK-NEXT: vlsseg6e16.v v7, (a0), a11162; CHECK-NEXT: ret1163entry:1164 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 6) @llvm.riscv.vlsseg6.triscv.vector.tuple_nxv2i8_6t(target("riscv.vector.tuple", <vscale x 2 x i8>, 6) poison, ptr %base, i32 %offset, i32 %vl, i32 4)1165 %1 = 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) %0, i32 1)1166 ret <vscale x 1 x i16> %11167}1168 1169define <vscale x 1 x i16> @test_vlsseg6_mask_nxv1i16_triscv.vector.tuple_nxv2i8_6t(ptr %base, i32 %offset, i32 %vl, <vscale x 1 x i1> %mask) {1170; CHECK-LABEL: test_vlsseg6_mask_nxv1i16_triscv.vector.tuple_nxv2i8_6t:1171; CHECK: # %bb.0: # %entry1172; CHECK-NEXT: vsetvli zero, a2, e16, mf4, ta, ma1173; CHECK-NEXT: vlsseg6e16.v v7, (a0), a1, v0.t1174; CHECK-NEXT: ret1175entry:1176 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 6) @llvm.riscv.vlsseg6.mask.triscv.vector.tuple_nxv2i8_6t.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 6) poison, ptr %base, i32 %offset, <vscale x 1 x i1> %mask, i32 %vl, i32 1, i32 4)1177 %1 = 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) %0, i32 1)1178 ret <vscale x 1 x i16> %11179}1180 1181define <vscale x 2 x i16> @test_vlsseg6_nxv2i16_triscv.vector.tuple_nxv4i8_6t(ptr %base, i32 %offset, i32 %vl) {1182; CHECK-LABEL: test_vlsseg6_nxv2i16_triscv.vector.tuple_nxv4i8_6t:1183; CHECK: # %bb.0: # %entry1184; CHECK-NEXT: vsetvli zero, a2, e16, mf2, ta, ma1185; CHECK-NEXT: vlsseg6e16.v v7, (a0), a11186; CHECK-NEXT: ret1187entry:1188 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vlsseg6.triscv.vector.tuple_nxv4i8_6t(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) poison, ptr %base, i32 %offset, i32 %vl, i32 4)1189 %1 = 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) %0, i32 1)1190 ret <vscale x 2 x i16> %11191}1192 1193define <vscale x 2 x i16> @test_vlsseg6_mask_nxv2i16_triscv.vector.tuple_nxv4i8_6t(ptr %base, i32 %offset, i32 %vl, <vscale x 2 x i1> %mask) {1194; CHECK-LABEL: test_vlsseg6_mask_nxv2i16_triscv.vector.tuple_nxv4i8_6t:1195; CHECK: # %bb.0: # %entry1196; CHECK-NEXT: vsetvli zero, a2, e16, mf2, ta, ma1197; CHECK-NEXT: vlsseg6e16.v v7, (a0), a1, v0.t1198; CHECK-NEXT: ret1199entry:1200 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vlsseg6.mask.triscv.vector.tuple_nxv4i8_6t.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) poison, ptr %base, i32 %offset, <vscale x 2 x i1> %mask, i32 %vl, i32 1, i32 4)1201 %1 = 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) %0, i32 1)1202 ret <vscale x 2 x i16> %11203}1204 1205define <vscale x 4 x i16> @test_vlsseg6_nxv4i16_triscv.vector.tuple_nxv8i8_6t(ptr %base, i32 %offset, i32 %vl) {1206; CHECK-LABEL: test_vlsseg6_nxv4i16_triscv.vector.tuple_nxv8i8_6t:1207; CHECK: # %bb.0: # %entry1208; CHECK-NEXT: vsetvli zero, a2, e16, m1, ta, ma1209; CHECK-NEXT: vlsseg6e16.v v7, (a0), a11210; CHECK-NEXT: ret1211entry:1212 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vlsseg6.triscv.vector.tuple_nxv8i8_6t(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) poison, ptr %base, i32 %offset, i32 %vl, i32 4)1213 %1 = 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) %0, i32 1)1214 ret <vscale x 4 x i16> %11215}1216 1217define <vscale x 4 x i16> @test_vlsseg6_mask_nxv4i16_triscv.vector.tuple_nxv8i8_6t(ptr %base, i32 %offset, i32 %vl, <vscale x 4 x i1> %mask) {1218; CHECK-LABEL: test_vlsseg6_mask_nxv4i16_triscv.vector.tuple_nxv8i8_6t:1219; CHECK: # %bb.0: # %entry1220; CHECK-NEXT: vsetvli zero, a2, e16, m1, ta, ma1221; CHECK-NEXT: vlsseg6e16.v v7, (a0), a1, v0.t1222; CHECK-NEXT: ret1223entry:1224 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vlsseg6.mask.triscv.vector.tuple_nxv8i8_6t.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) poison, ptr %base, i32 %offset, <vscale x 4 x i1> %mask, i32 %vl, i32 1, i32 4)1225 %1 = 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) %0, i32 1)1226 ret <vscale x 4 x i16> %11227}1228 1229define <vscale x 1 x i16> @test_vlsseg7_nxv1i16_triscv.vector.tuple_nxv2i8_7t(ptr %base, i32 %offset, i32 %vl) {1230; CHECK-LABEL: test_vlsseg7_nxv1i16_triscv.vector.tuple_nxv2i8_7t:1231; CHECK: # %bb.0: # %entry1232; CHECK-NEXT: vsetvli zero, a2, e16, mf4, ta, ma1233; CHECK-NEXT: vlsseg7e16.v v7, (a0), a11234; CHECK-NEXT: ret1235entry:1236 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 7) @llvm.riscv.vlsseg7.triscv.vector.tuple_nxv2i8_7t(target("riscv.vector.tuple", <vscale x 2 x i8>, 7) poison, ptr %base, i32 %offset, i32 %vl, i32 4)1237 %1 = 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) %0, i32 1)1238 ret <vscale x 1 x i16> %11239}1240 1241define <vscale x 1 x i16> @test_vlsseg7_mask_nxv1i16_triscv.vector.tuple_nxv2i8_7t(ptr %base, i32 %offset, i32 %vl, <vscale x 1 x i1> %mask) {1242; CHECK-LABEL: test_vlsseg7_mask_nxv1i16_triscv.vector.tuple_nxv2i8_7t:1243; CHECK: # %bb.0: # %entry1244; CHECK-NEXT: vsetvli zero, a2, e16, mf4, ta, ma1245; CHECK-NEXT: vlsseg7e16.v v7, (a0), a1, v0.t1246; CHECK-NEXT: ret1247entry:1248 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 7) @llvm.riscv.vlsseg7.mask.triscv.vector.tuple_nxv2i8_7t.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 7) poison, ptr %base, i32 %offset, <vscale x 1 x i1> %mask, i32 %vl, i32 1, i32 4)1249 %1 = 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) %0, i32 1)1250 ret <vscale x 1 x i16> %11251}1252 1253define <vscale x 2 x i16> @test_vlsseg7_nxv2i16_triscv.vector.tuple_nxv4i8_7t(ptr %base, i32 %offset, i32 %vl) {1254; CHECK-LABEL: test_vlsseg7_nxv2i16_triscv.vector.tuple_nxv4i8_7t:1255; CHECK: # %bb.0: # %entry1256; CHECK-NEXT: vsetvli zero, a2, e16, mf2, ta, ma1257; CHECK-NEXT: vlsseg7e16.v v7, (a0), a11258; CHECK-NEXT: ret1259entry:1260 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vlsseg7.triscv.vector.tuple_nxv4i8_7t(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) poison, ptr %base, i32 %offset, i32 %vl, i32 4)1261 %1 = 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) %0, i32 1)1262 ret <vscale x 2 x i16> %11263}1264 1265define <vscale x 2 x i16> @test_vlsseg7_mask_nxv2i16_triscv.vector.tuple_nxv4i8_7t(ptr %base, i32 %offset, i32 %vl, <vscale x 2 x i1> %mask) {1266; CHECK-LABEL: test_vlsseg7_mask_nxv2i16_triscv.vector.tuple_nxv4i8_7t:1267; CHECK: # %bb.0: # %entry1268; CHECK-NEXT: vsetvli zero, a2, e16, mf2, ta, ma1269; CHECK-NEXT: vlsseg7e16.v v7, (a0), a1, v0.t1270; CHECK-NEXT: ret1271entry:1272 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vlsseg7.mask.triscv.vector.tuple_nxv4i8_7t.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) poison, ptr %base, i32 %offset, <vscale x 2 x i1> %mask, i32 %vl, i32 1, i32 4)1273 %1 = 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) %0, i32 1)1274 ret <vscale x 2 x i16> %11275}1276 1277define <vscale x 4 x i16> @test_vlsseg7_nxv4i16_triscv.vector.tuple_nxv8i8_7t(ptr %base, i32 %offset, i32 %vl) {1278; CHECK-LABEL: test_vlsseg7_nxv4i16_triscv.vector.tuple_nxv8i8_7t:1279; CHECK: # %bb.0: # %entry1280; CHECK-NEXT: vsetvli zero, a2, e16, m1, ta, ma1281; CHECK-NEXT: vlsseg7e16.v v7, (a0), a11282; CHECK-NEXT: ret1283entry:1284 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vlsseg7.triscv.vector.tuple_nxv8i8_7t(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) poison, ptr %base, i32 %offset, i32 %vl, i32 4)1285 %1 = 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) %0, i32 1)1286 ret <vscale x 4 x i16> %11287}1288 1289define <vscale x 4 x i16> @test_vlsseg7_mask_nxv4i16_triscv.vector.tuple_nxv8i8_7t(ptr %base, i32 %offset, i32 %vl, <vscale x 4 x i1> %mask) {1290; CHECK-LABEL: test_vlsseg7_mask_nxv4i16_triscv.vector.tuple_nxv8i8_7t:1291; CHECK: # %bb.0: # %entry1292; CHECK-NEXT: vsetvli zero, a2, e16, m1, ta, ma1293; CHECK-NEXT: vlsseg7e16.v v7, (a0), a1, v0.t1294; CHECK-NEXT: ret1295entry:1296 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vlsseg7.mask.triscv.vector.tuple_nxv8i8_7t.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) poison, ptr %base, i32 %offset, <vscale x 4 x i1> %mask, i32 %vl, i32 1, i32 4)1297 %1 = 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) %0, i32 1)1298 ret <vscale x 4 x i16> %11299}1300 1301define <vscale x 1 x i16> @test_vlsseg8_nxv1i16_triscv.vector.tuple_nxv2i8_8t(ptr %base, i32 %offset, i32 %vl) {1302; CHECK-LABEL: test_vlsseg8_nxv1i16_triscv.vector.tuple_nxv2i8_8t:1303; CHECK: # %bb.0: # %entry1304; CHECK-NEXT: vsetvli zero, a2, e16, mf4, ta, ma1305; CHECK-NEXT: vlsseg8e16.v v7, (a0), a11306; CHECK-NEXT: ret1307entry:1308 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 8) @llvm.riscv.vlsseg8.triscv.vector.tuple_nxv2i8_8t(target("riscv.vector.tuple", <vscale x 2 x i8>, 8) poison, ptr %base, i32 %offset, i32 %vl, i32 4)1309 %1 = 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) %0, i32 1)1310 ret <vscale x 1 x i16> %11311}1312 1313define <vscale x 1 x i16> @test_vlsseg8_mask_nxv1i16_triscv.vector.tuple_nxv2i8_8t(ptr %base, i32 %offset, i32 %vl, <vscale x 1 x i1> %mask) {1314; CHECK-LABEL: test_vlsseg8_mask_nxv1i16_triscv.vector.tuple_nxv2i8_8t:1315; CHECK: # %bb.0: # %entry1316; CHECK-NEXT: vsetvli zero, a2, e16, mf4, ta, ma1317; CHECK-NEXT: vlsseg8e16.v v7, (a0), a1, v0.t1318; CHECK-NEXT: ret1319entry:1320 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 8) @llvm.riscv.vlsseg8.mask.triscv.vector.tuple_nxv2i8_8t.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 8) poison, ptr %base, i32 %offset, <vscale x 1 x i1> %mask, i32 %vl, i32 1, i32 4)1321 %1 = 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) %0, i32 1)1322 ret <vscale x 1 x i16> %11323}1324 1325define <vscale x 2 x i16> @test_vlsseg8_nxv2i16_triscv.vector.tuple_nxv4i8_8t(ptr %base, i32 %offset, i32 %vl) {1326; CHECK-LABEL: test_vlsseg8_nxv2i16_triscv.vector.tuple_nxv4i8_8t:1327; CHECK: # %bb.0: # %entry1328; CHECK-NEXT: vsetvli zero, a2, e16, mf2, ta, ma1329; CHECK-NEXT: vlsseg8e16.v v7, (a0), a11330; CHECK-NEXT: ret1331entry:1332 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vlsseg8.triscv.vector.tuple_nxv4i8_8t(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) poison, ptr %base, i32 %offset, i32 %vl, i32 4)1333 %1 = 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) %0, i32 1)1334 ret <vscale x 2 x i16> %11335}1336 1337define <vscale x 2 x i16> @test_vlsseg8_mask_nxv2i16_triscv.vector.tuple_nxv4i8_8t(ptr %base, i32 %offset, i32 %vl, <vscale x 2 x i1> %mask) {1338; CHECK-LABEL: test_vlsseg8_mask_nxv2i16_triscv.vector.tuple_nxv4i8_8t:1339; CHECK: # %bb.0: # %entry1340; CHECK-NEXT: vsetvli zero, a2, e16, mf2, ta, ma1341; CHECK-NEXT: vlsseg8e16.v v7, (a0), a1, v0.t1342; CHECK-NEXT: ret1343entry:1344 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vlsseg8.mask.triscv.vector.tuple_nxv4i8_8t.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) poison, ptr %base, i32 %offset, <vscale x 2 x i1> %mask, i32 %vl, i32 1, i32 4)1345 %1 = 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) %0, i32 1)1346 ret <vscale x 2 x i16> %11347}1348 1349define <vscale x 4 x i16> @test_vlsseg8_nxv4i16_triscv.vector.tuple_nxv8i8_8t(ptr %base, i32 %offset, i32 %vl) {1350; CHECK-LABEL: test_vlsseg8_nxv4i16_triscv.vector.tuple_nxv8i8_8t:1351; CHECK: # %bb.0: # %entry1352; CHECK-NEXT: vsetvli zero, a2, e16, m1, ta, ma1353; CHECK-NEXT: vlsseg8e16.v v7, (a0), a11354; CHECK-NEXT: ret1355entry:1356 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vlsseg8.triscv.vector.tuple_nxv8i8_8t(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) poison, ptr %base, i32 %offset, i32 %vl, i32 4)1357 %1 = 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) %0, i32 1)1358 ret <vscale x 4 x i16> %11359}1360 1361define <vscale x 4 x i16> @test_vlsseg8_mask_nxv4i16_triscv.vector.tuple_nxv8i8_8t(ptr %base, i32 %offset, i32 %vl, <vscale x 4 x i1> %mask) {1362; CHECK-LABEL: test_vlsseg8_mask_nxv4i16_triscv.vector.tuple_nxv8i8_8t:1363; CHECK: # %bb.0: # %entry1364; CHECK-NEXT: vsetvli zero, a2, e16, m1, ta, ma1365; CHECK-NEXT: vlsseg8e16.v v7, (a0), a1, v0.t1366; CHECK-NEXT: ret1367entry:1368 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vlsseg8.mask.triscv.vector.tuple_nxv8i8_8t.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) poison, ptr %base, i32 %offset, <vscale x 4 x i1> %mask, i32 %vl, i32 1, i32 4)1369 %1 = 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) %0, i32 1)1370 ret <vscale x 4 x i16> %11371}1372 1373define <vscale x 1 x i32> @test_vlsseg2_nxv1i32_triscv.vector.tuple_nxv4i8_2t(ptr %base, i32 %offset, i32 %vl) {1374; CHECK-LABEL: test_vlsseg2_nxv1i32_triscv.vector.tuple_nxv4i8_2t:1375; CHECK: # %bb.0: # %entry1376; CHECK-NEXT: vsetvli zero, a2, e32, mf2, ta, ma1377; CHECK-NEXT: vlsseg2e32.v v7, (a0), a11378; CHECK-NEXT: ret1379entry:1380 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vlsseg2.triscv.vector.tuple_nxv4i8_2t(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) poison, ptr %base, i32 %offset, i32 %vl, i32 5)1381 %1 = 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) %0, i32 1)1382 ret <vscale x 1 x i32> %11383}1384 1385define <vscale x 1 x i32> @test_vlsseg2_mask_nxv1i32_triscv.vector.tuple_nxv4i8_2t(ptr %base, i32 %offset, i32 %vl, <vscale x 1 x i1> %mask) {1386; CHECK-LABEL: test_vlsseg2_mask_nxv1i32_triscv.vector.tuple_nxv4i8_2t:1387; CHECK: # %bb.0: # %entry1388; CHECK-NEXT: vsetvli zero, a2, e32, mf2, ta, ma1389; CHECK-NEXT: vlsseg2e32.v v7, (a0), a1, v0.t1390; CHECK-NEXT: ret1391entry:1392 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv4i8_2t.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) poison, ptr %base, i32 %offset, <vscale x 1 x i1> %mask, i32 %vl, i32 1, i32 5)1393 %1 = 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) %0, i32 1)1394 ret <vscale x 1 x i32> %11395}1396 1397define <vscale x 2 x i32> @test_vlsseg2_nxv2i32_triscv.vector.tuple_nxv8i8_2t(ptr %base, i32 %offset, i32 %vl) {1398; CHECK-LABEL: test_vlsseg2_nxv2i32_triscv.vector.tuple_nxv8i8_2t:1399; CHECK: # %bb.0: # %entry1400; CHECK-NEXT: vsetvli zero, a2, e32, m1, ta, ma1401; CHECK-NEXT: vlsseg2e32.v v7, (a0), a11402; CHECK-NEXT: ret1403entry:1404 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vlsseg2.triscv.vector.tuple_nxv8i8_2t(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) poison, ptr %base, i32 %offset, i32 %vl, i32 5)1405 %1 = 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) %0, i32 1)1406 ret <vscale x 2 x i32> %11407}1408 1409define <vscale x 2 x i32> @test_vlsseg2_mask_nxv2i32_triscv.vector.tuple_nxv8i8_2t(ptr %base, i32 %offset, i32 %vl, <vscale x 2 x i1> %mask) {1410; CHECK-LABEL: test_vlsseg2_mask_nxv2i32_triscv.vector.tuple_nxv8i8_2t:1411; CHECK: # %bb.0: # %entry1412; CHECK-NEXT: vsetvli zero, a2, e32, m1, ta, ma1413; CHECK-NEXT: vlsseg2e32.v v7, (a0), a1, v0.t1414; CHECK-NEXT: ret1415entry:1416 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv8i8_2t.nxv2i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) poison, ptr %base, i32 %offset, <vscale x 2 x i1> %mask, i32 %vl, i32 1, i32 5)1417 %1 = 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) %0, i32 1)1418 ret <vscale x 2 x i32> %11419}1420 1421define <vscale x 4 x i32> @test_vlsseg2_nxv4i32_triscv.vector.tuple_nxv16i8_2t(ptr %base, i32 %offset, i32 %vl) {1422; CHECK-LABEL: test_vlsseg2_nxv4i32_triscv.vector.tuple_nxv16i8_2t:1423; CHECK: # %bb.0: # %entry1424; CHECK-NEXT: vsetvli zero, a2, e32, m2, ta, ma1425; CHECK-NEXT: vlsseg2e32.v v6, (a0), a11426; CHECK-NEXT: ret1427entry:1428 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vlsseg2.triscv.vector.tuple_nxv16i8_2t(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) poison, ptr %base, i32 %offset, i32 %vl, i32 5)1429 %1 = 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) %0, i32 1)1430 ret <vscale x 4 x i32> %11431}1432 1433define <vscale x 4 x i32> @test_vlsseg2_mask_nxv4i32_triscv.vector.tuple_nxv16i8_2t(ptr %base, i32 %offset, i32 %vl, <vscale x 4 x i1> %mask) {1434; CHECK-LABEL: test_vlsseg2_mask_nxv4i32_triscv.vector.tuple_nxv16i8_2t:1435; CHECK: # %bb.0: # %entry1436; CHECK-NEXT: vsetvli zero, a2, e32, m2, ta, ma1437; CHECK-NEXT: vlsseg2e32.v v6, (a0), a1, v0.t1438; CHECK-NEXT: ret1439entry:1440 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv16i8_2t.nxv4i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) poison, ptr %base, i32 %offset, <vscale x 4 x i1> %mask, i32 %vl, i32 1, i32 5)1441 %1 = 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) %0, i32 1)1442 ret <vscale x 4 x i32> %11443}1444 1445define <vscale x 8 x i32> @test_vlsseg2_nxv8i32_triscv.vector.tuple_nxv32i8_2t(ptr %base, i32 %offset, i32 %vl) {1446; CHECK-LABEL: test_vlsseg2_nxv8i32_triscv.vector.tuple_nxv32i8_2t:1447; CHECK: # %bb.0: # %entry1448; CHECK-NEXT: vsetvli zero, a2, e32, m4, ta, ma1449; CHECK-NEXT: vlsseg2e32.v v4, (a0), a11450; CHECK-NEXT: ret1451entry:1452 %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vlsseg2.triscv.vector.tuple_nxv32i8_2t(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) poison, ptr %base, i32 %offset, i32 %vl, i32 5)1453 %1 = 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) %0, i32 1)1454 ret <vscale x 8 x i32> %11455}1456 1457define <vscale x 8 x i32> @test_vlsseg2_mask_nxv8i32_triscv.vector.tuple_nxv32i8_2t(ptr %base, i32 %offset, i32 %vl, <vscale x 8 x i1> %mask) {1458; CHECK-LABEL: test_vlsseg2_mask_nxv8i32_triscv.vector.tuple_nxv32i8_2t:1459; CHECK: # %bb.0: # %entry1460; CHECK-NEXT: vsetvli zero, a2, e32, m4, ta, ma1461; CHECK-NEXT: vlsseg2e32.v v4, (a0), a1, v0.t1462; CHECK-NEXT: ret1463entry:1464 %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv32i8_2t.nxv8i1(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) poison, ptr %base, i32 %offset, <vscale x 8 x i1> %mask, i32 %vl, i32 1, i32 5)1465 %1 = 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) %0, i32 1)1466 ret <vscale x 8 x i32> %11467}1468 1469define <vscale x 1 x i32> @test_vlsseg3_nxv1i32_triscv.vector.tuple_nxv4i8_3t(ptr %base, i32 %offset, i32 %vl) {1470; CHECK-LABEL: test_vlsseg3_nxv1i32_triscv.vector.tuple_nxv4i8_3t:1471; CHECK: # %bb.0: # %entry1472; CHECK-NEXT: vsetvli zero, a2, e32, mf2, ta, ma1473; CHECK-NEXT: vlsseg3e32.v v7, (a0), a11474; CHECK-NEXT: ret1475entry:1476 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vlsseg3.triscv.vector.tuple_nxv4i8_3t(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) poison, ptr %base, i32 %offset, i32 %vl, i32 5)1477 %1 = 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) %0, i32 1)1478 ret <vscale x 1 x i32> %11479}1480 1481define <vscale x 1 x i32> @test_vlsseg3_mask_nxv1i32_triscv.vector.tuple_nxv4i8_3t(ptr %base, i32 %offset, i32 %vl, <vscale x 1 x i1> %mask) {1482; CHECK-LABEL: test_vlsseg3_mask_nxv1i32_triscv.vector.tuple_nxv4i8_3t:1483; CHECK: # %bb.0: # %entry1484; CHECK-NEXT: vsetvli zero, a2, e32, mf2, ta, ma1485; CHECK-NEXT: vlsseg3e32.v v7, (a0), a1, v0.t1486; CHECK-NEXT: ret1487entry:1488 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vlsseg3.mask.triscv.vector.tuple_nxv4i8_3t.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) poison, ptr %base, i32 %offset, <vscale x 1 x i1> %mask, i32 %vl, i32 1, i32 5)1489 %1 = 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) %0, i32 1)1490 ret <vscale x 1 x i32> %11491}1492 1493define <vscale x 2 x i32> @test_vlsseg3_nxv2i32_triscv.vector.tuple_nxv8i8_3t(ptr %base, i32 %offset, i32 %vl) {1494; CHECK-LABEL: test_vlsseg3_nxv2i32_triscv.vector.tuple_nxv8i8_3t:1495; CHECK: # %bb.0: # %entry1496; CHECK-NEXT: vsetvli zero, a2, e32, m1, ta, ma1497; CHECK-NEXT: vlsseg3e32.v v7, (a0), a11498; CHECK-NEXT: ret1499entry:1500 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vlsseg3.triscv.vector.tuple_nxv8i8_3t(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) poison, ptr %base, i32 %offset, i32 %vl, i32 5)1501 %1 = 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) %0, i32 1)1502 ret <vscale x 2 x i32> %11503}1504 1505define <vscale x 2 x i32> @test_vlsseg3_mask_nxv2i32_triscv.vector.tuple_nxv8i8_3t(ptr %base, i32 %offset, i32 %vl, <vscale x 2 x i1> %mask) {1506; CHECK-LABEL: test_vlsseg3_mask_nxv2i32_triscv.vector.tuple_nxv8i8_3t:1507; CHECK: # %bb.0: # %entry1508; CHECK-NEXT: vsetvli zero, a2, e32, m1, ta, ma1509; CHECK-NEXT: vlsseg3e32.v v7, (a0), a1, v0.t1510; CHECK-NEXT: ret1511entry:1512 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vlsseg3.mask.triscv.vector.tuple_nxv8i8_3t.nxv2i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) poison, ptr %base, i32 %offset, <vscale x 2 x i1> %mask, i32 %vl, i32 1, i32 5)1513 %1 = 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) %0, i32 1)1514 ret <vscale x 2 x i32> %11515}1516 1517define <vscale x 4 x i32> @test_vlsseg3_nxv4i32_triscv.vector.tuple_nxv16i8_3t(ptr %base, i32 %offset, i32 %vl) {1518; CHECK-LABEL: test_vlsseg3_nxv4i32_triscv.vector.tuple_nxv16i8_3t:1519; CHECK: # %bb.0: # %entry1520; CHECK-NEXT: vsetvli zero, a2, e32, m2, ta, ma1521; CHECK-NEXT: vlsseg3e32.v v6, (a0), a11522; CHECK-NEXT: ret1523entry:1524 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vlsseg3.triscv.vector.tuple_nxv16i8_3t(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) poison, ptr %base, i32 %offset, i32 %vl, i32 5)1525 %1 = 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) %0, i32 1)1526 ret <vscale x 4 x i32> %11527}1528 1529define <vscale x 4 x i32> @test_vlsseg3_mask_nxv4i32_triscv.vector.tuple_nxv16i8_3t(ptr %base, i32 %offset, i32 %vl, <vscale x 4 x i1> %mask) {1530; CHECK-LABEL: test_vlsseg3_mask_nxv4i32_triscv.vector.tuple_nxv16i8_3t:1531; CHECK: # %bb.0: # %entry1532; CHECK-NEXT: vsetvli zero, a2, e32, m2, ta, ma1533; CHECK-NEXT: vlsseg3e32.v v6, (a0), a1, v0.t1534; CHECK-NEXT: ret1535entry:1536 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vlsseg3.mask.triscv.vector.tuple_nxv16i8_3t.nxv4i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) poison, ptr %base, i32 %offset, <vscale x 4 x i1> %mask, i32 %vl, i32 1, i32 5)1537 %1 = 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) %0, i32 1)1538 ret <vscale x 4 x i32> %11539}1540 1541define <vscale x 1 x i32> @test_vlsseg4_nxv1i32_triscv.vector.tuple_nxv4i8_4t(ptr %base, i32 %offset, i32 %vl) {1542; CHECK-LABEL: test_vlsseg4_nxv1i32_triscv.vector.tuple_nxv4i8_4t:1543; CHECK: # %bb.0: # %entry1544; CHECK-NEXT: vsetvli zero, a2, e32, mf2, ta, ma1545; CHECK-NEXT: vlsseg4e32.v v7, (a0), a11546; CHECK-NEXT: ret1547entry:1548 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vlsseg4.triscv.vector.tuple_nxv4i8_4t(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) poison, ptr %base, i32 %offset, i32 %vl, i32 5)1549 %1 = 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) %0, i32 1)1550 ret <vscale x 1 x i32> %11551}1552 1553define <vscale x 1 x i32> @test_vlsseg4_mask_nxv1i32_triscv.vector.tuple_nxv4i8_4t(ptr %base, i32 %offset, i32 %vl, <vscale x 1 x i1> %mask) {1554; CHECK-LABEL: test_vlsseg4_mask_nxv1i32_triscv.vector.tuple_nxv4i8_4t:1555; CHECK: # %bb.0: # %entry1556; CHECK-NEXT: vsetvli zero, a2, e32, mf2, ta, ma1557; CHECK-NEXT: vlsseg4e32.v v7, (a0), a1, v0.t1558; CHECK-NEXT: ret1559entry:1560 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vlsseg4.mask.triscv.vector.tuple_nxv4i8_4t.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) poison, ptr %base, i32 %offset, <vscale x 1 x i1> %mask, i32 %vl, i32 1, i32 5)1561 %1 = 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) %0, i32 1)1562 ret <vscale x 1 x i32> %11563}1564 1565define <vscale x 2 x i32> @test_vlsseg4_nxv2i32_triscv.vector.tuple_nxv8i8_4t(ptr %base, i32 %offset, i32 %vl) {1566; CHECK-LABEL: test_vlsseg4_nxv2i32_triscv.vector.tuple_nxv8i8_4t:1567; CHECK: # %bb.0: # %entry1568; CHECK-NEXT: vsetvli zero, a2, e32, m1, ta, ma1569; CHECK-NEXT: vlsseg4e32.v v7, (a0), a11570; CHECK-NEXT: ret1571entry:1572 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vlsseg4.triscv.vector.tuple_nxv8i8_4t(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) poison, ptr %base, i32 %offset, i32 %vl, i32 5)1573 %1 = 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) %0, i32 1)1574 ret <vscale x 2 x i32> %11575}1576 1577define <vscale x 2 x i32> @test_vlsseg4_mask_nxv2i32_triscv.vector.tuple_nxv8i8_4t(ptr %base, i32 %offset, i32 %vl, <vscale x 2 x i1> %mask) {1578; CHECK-LABEL: test_vlsseg4_mask_nxv2i32_triscv.vector.tuple_nxv8i8_4t:1579; CHECK: # %bb.0: # %entry1580; CHECK-NEXT: vsetvli zero, a2, e32, m1, ta, ma1581; CHECK-NEXT: vlsseg4e32.v v7, (a0), a1, v0.t1582; CHECK-NEXT: ret1583entry:1584 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vlsseg4.mask.triscv.vector.tuple_nxv8i8_4t.nxv2i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) poison, ptr %base, i32 %offset, <vscale x 2 x i1> %mask, i32 %vl, i32 1, i32 5)1585 %1 = 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) %0, i32 1)1586 ret <vscale x 2 x i32> %11587}1588 1589define <vscale x 4 x i32> @test_vlsseg4_nxv4i32_triscv.vector.tuple_nxv16i8_4t(ptr %base, i32 %offset, i32 %vl) {1590; CHECK-LABEL: test_vlsseg4_nxv4i32_triscv.vector.tuple_nxv16i8_4t:1591; CHECK: # %bb.0: # %entry1592; CHECK-NEXT: vsetvli zero, a2, e32, m2, ta, ma1593; CHECK-NEXT: vlsseg4e32.v v6, (a0), a11594; CHECK-NEXT: ret1595entry:1596 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vlsseg4.triscv.vector.tuple_nxv16i8_4t(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) poison, ptr %base, i32 %offset, i32 %vl, i32 5)1597 %1 = 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) %0, i32 1)1598 ret <vscale x 4 x i32> %11599}1600 1601define <vscale x 4 x i32> @test_vlsseg4_mask_nxv4i32_triscv.vector.tuple_nxv16i8_4t(ptr %base, i32 %offset, i32 %vl, <vscale x 4 x i1> %mask) {1602; CHECK-LABEL: test_vlsseg4_mask_nxv4i32_triscv.vector.tuple_nxv16i8_4t:1603; CHECK: # %bb.0: # %entry1604; CHECK-NEXT: vsetvli zero, a2, e32, m2, ta, ma1605; CHECK-NEXT: vlsseg4e32.v v6, (a0), a1, v0.t1606; CHECK-NEXT: ret1607entry:1608 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vlsseg4.mask.triscv.vector.tuple_nxv16i8_4t.nxv4i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) poison, ptr %base, i32 %offset, <vscale x 4 x i1> %mask, i32 %vl, i32 1, i32 5)1609 %1 = 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) %0, i32 1)1610 ret <vscale x 4 x i32> %11611}1612 1613define <vscale x 1 x i32> @test_vlsseg5_nxv1i32_triscv.vector.tuple_nxv4i8_5t(ptr %base, i32 %offset, i32 %vl) {1614; CHECK-LABEL: test_vlsseg5_nxv1i32_triscv.vector.tuple_nxv4i8_5t:1615; CHECK: # %bb.0: # %entry1616; CHECK-NEXT: vsetvli zero, a2, e32, mf2, ta, ma1617; CHECK-NEXT: vlsseg5e32.v v7, (a0), a11618; CHECK-NEXT: ret1619entry:1620 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vlsseg5.triscv.vector.tuple_nxv4i8_5t(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) poison, ptr %base, i32 %offset, i32 %vl, i32 5)1621 %1 = 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) %0, i32 1)1622 ret <vscale x 1 x i32> %11623}1624 1625define <vscale x 1 x i32> @test_vlsseg5_mask_nxv1i32_triscv.vector.tuple_nxv4i8_5t(ptr %base, i32 %offset, i32 %vl, <vscale x 1 x i1> %mask) {1626; CHECK-LABEL: test_vlsseg5_mask_nxv1i32_triscv.vector.tuple_nxv4i8_5t:1627; CHECK: # %bb.0: # %entry1628; CHECK-NEXT: vsetvli zero, a2, e32, mf2, ta, ma1629; CHECK-NEXT: vlsseg5e32.v v7, (a0), a1, v0.t1630; CHECK-NEXT: ret1631entry:1632 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vlsseg5.mask.triscv.vector.tuple_nxv4i8_5t.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) poison, ptr %base, i32 %offset, <vscale x 1 x i1> %mask, i32 %vl, i32 1, i32 5)1633 %1 = 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) %0, i32 1)1634 ret <vscale x 1 x i32> %11635}1636 1637define <vscale x 2 x i32> @test_vlsseg5_nxv2i32_triscv.vector.tuple_nxv8i8_5t(ptr %base, i32 %offset, i32 %vl) {1638; CHECK-LABEL: test_vlsseg5_nxv2i32_triscv.vector.tuple_nxv8i8_5t:1639; CHECK: # %bb.0: # %entry1640; CHECK-NEXT: vsetvli zero, a2, e32, m1, ta, ma1641; CHECK-NEXT: vlsseg5e32.v v7, (a0), a11642; CHECK-NEXT: ret1643entry:1644 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vlsseg5.triscv.vector.tuple_nxv8i8_5t(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) poison, ptr %base, i32 %offset, i32 %vl, i32 5)1645 %1 = 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) %0, i32 1)1646 ret <vscale x 2 x i32> %11647}1648 1649define <vscale x 2 x i32> @test_vlsseg5_mask_nxv2i32_triscv.vector.tuple_nxv8i8_5t(ptr %base, i32 %offset, i32 %vl, <vscale x 2 x i1> %mask) {1650; CHECK-LABEL: test_vlsseg5_mask_nxv2i32_triscv.vector.tuple_nxv8i8_5t:1651; CHECK: # %bb.0: # %entry1652; CHECK-NEXT: vsetvli zero, a2, e32, m1, ta, ma1653; CHECK-NEXT: vlsseg5e32.v v7, (a0), a1, v0.t1654; CHECK-NEXT: ret1655entry:1656 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vlsseg5.mask.triscv.vector.tuple_nxv8i8_5t.nxv2i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) poison, ptr %base, i32 %offset, <vscale x 2 x i1> %mask, i32 %vl, i32 1, i32 5)1657 %1 = 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) %0, i32 1)1658 ret <vscale x 2 x i32> %11659}1660 1661define <vscale x 1 x i32> @test_vlsseg6_nxv1i32_triscv.vector.tuple_nxv4i8_6t(ptr %base, i32 %offset, i32 %vl) {1662; CHECK-LABEL: test_vlsseg6_nxv1i32_triscv.vector.tuple_nxv4i8_6t:1663; CHECK: # %bb.0: # %entry1664; CHECK-NEXT: vsetvli zero, a2, e32, mf2, ta, ma1665; CHECK-NEXT: vlsseg6e32.v v7, (a0), a11666; CHECK-NEXT: ret1667entry:1668 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vlsseg6.triscv.vector.tuple_nxv4i8_6t(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) poison, ptr %base, i32 %offset, i32 %vl, i32 5)1669 %1 = 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) %0, i32 1)1670 ret <vscale x 1 x i32> %11671}1672 1673define <vscale x 1 x i32> @test_vlsseg6_mask_nxv1i32_triscv.vector.tuple_nxv4i8_6t(ptr %base, i32 %offset, i32 %vl, <vscale x 1 x i1> %mask) {1674; CHECK-LABEL: test_vlsseg6_mask_nxv1i32_triscv.vector.tuple_nxv4i8_6t:1675; CHECK: # %bb.0: # %entry1676; CHECK-NEXT: vsetvli zero, a2, e32, mf2, ta, ma1677; CHECK-NEXT: vlsseg6e32.v v7, (a0), a1, v0.t1678; CHECK-NEXT: ret1679entry:1680 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vlsseg6.mask.triscv.vector.tuple_nxv4i8_6t.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) poison, ptr %base, i32 %offset, <vscale x 1 x i1> %mask, i32 %vl, i32 1, i32 5)1681 %1 = 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) %0, i32 1)1682 ret <vscale x 1 x i32> %11683}1684 1685define <vscale x 2 x i32> @test_vlsseg6_nxv2i32_triscv.vector.tuple_nxv8i8_6t(ptr %base, i32 %offset, i32 %vl) {1686; CHECK-LABEL: test_vlsseg6_nxv2i32_triscv.vector.tuple_nxv8i8_6t:1687; CHECK: # %bb.0: # %entry1688; CHECK-NEXT: vsetvli zero, a2, e32, m1, ta, ma1689; CHECK-NEXT: vlsseg6e32.v v7, (a0), a11690; CHECK-NEXT: ret1691entry:1692 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vlsseg6.triscv.vector.tuple_nxv8i8_6t(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) poison, ptr %base, i32 %offset, i32 %vl, i32 5)1693 %1 = 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) %0, i32 1)1694 ret <vscale x 2 x i32> %11695}1696 1697define <vscale x 2 x i32> @test_vlsseg6_mask_nxv2i32_triscv.vector.tuple_nxv8i8_6t(ptr %base, i32 %offset, i32 %vl, <vscale x 2 x i1> %mask) {1698; CHECK-LABEL: test_vlsseg6_mask_nxv2i32_triscv.vector.tuple_nxv8i8_6t:1699; CHECK: # %bb.0: # %entry1700; CHECK-NEXT: vsetvli zero, a2, e32, m1, ta, ma1701; CHECK-NEXT: vlsseg6e32.v v7, (a0), a1, v0.t1702; CHECK-NEXT: ret1703entry:1704 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vlsseg6.mask.triscv.vector.tuple_nxv8i8_6t.nxv2i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) poison, ptr %base, i32 %offset, <vscale x 2 x i1> %mask, i32 %vl, i32 1, i32 5)1705 %1 = 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) %0, i32 1)1706 ret <vscale x 2 x i32> %11707}1708 1709define <vscale x 1 x i32> @test_vlsseg7_nxv1i32_triscv.vector.tuple_nxv4i8_7t(ptr %base, i32 %offset, i32 %vl) {1710; CHECK-LABEL: test_vlsseg7_nxv1i32_triscv.vector.tuple_nxv4i8_7t:1711; CHECK: # %bb.0: # %entry1712; CHECK-NEXT: vsetvli zero, a2, e32, mf2, ta, ma1713; CHECK-NEXT: vlsseg7e32.v v7, (a0), a11714; CHECK-NEXT: ret1715entry:1716 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vlsseg7.triscv.vector.tuple_nxv4i8_7t(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) poison, ptr %base, i32 %offset, i32 %vl, i32 5)1717 %1 = 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) %0, i32 1)1718 ret <vscale x 1 x i32> %11719}1720 1721define <vscale x 1 x i32> @test_vlsseg7_mask_nxv1i32_triscv.vector.tuple_nxv4i8_7t(ptr %base, i32 %offset, i32 %vl, <vscale x 1 x i1> %mask) {1722; CHECK-LABEL: test_vlsseg7_mask_nxv1i32_triscv.vector.tuple_nxv4i8_7t:1723; CHECK: # %bb.0: # %entry1724; CHECK-NEXT: vsetvli zero, a2, e32, mf2, ta, ma1725; CHECK-NEXT: vlsseg7e32.v v7, (a0), a1, v0.t1726; CHECK-NEXT: ret1727entry:1728 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vlsseg7.mask.triscv.vector.tuple_nxv4i8_7t.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) poison, ptr %base, i32 %offset, <vscale x 1 x i1> %mask, i32 %vl, i32 1, i32 5)1729 %1 = 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) %0, i32 1)1730 ret <vscale x 1 x i32> %11731}1732 1733define <vscale x 2 x i32> @test_vlsseg7_nxv2i32_triscv.vector.tuple_nxv8i8_7t(ptr %base, i32 %offset, i32 %vl) {1734; CHECK-LABEL: test_vlsseg7_nxv2i32_triscv.vector.tuple_nxv8i8_7t:1735; CHECK: # %bb.0: # %entry1736; CHECK-NEXT: vsetvli zero, a2, e32, m1, ta, ma1737; CHECK-NEXT: vlsseg7e32.v v7, (a0), a11738; CHECK-NEXT: ret1739entry:1740 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vlsseg7.triscv.vector.tuple_nxv8i8_7t(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) poison, ptr %base, i32 %offset, i32 %vl, i32 5)1741 %1 = 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) %0, i32 1)1742 ret <vscale x 2 x i32> %11743}1744 1745define <vscale x 2 x i32> @test_vlsseg7_mask_nxv2i32_triscv.vector.tuple_nxv8i8_7t(ptr %base, i32 %offset, i32 %vl, <vscale x 2 x i1> %mask) {1746; CHECK-LABEL: test_vlsseg7_mask_nxv2i32_triscv.vector.tuple_nxv8i8_7t:1747; CHECK: # %bb.0: # %entry1748; CHECK-NEXT: vsetvli zero, a2, e32, m1, ta, ma1749; CHECK-NEXT: vlsseg7e32.v v7, (a0), a1, v0.t1750; CHECK-NEXT: ret1751entry:1752 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vlsseg7.mask.triscv.vector.tuple_nxv8i8_7t.nxv2i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) poison, ptr %base, i32 %offset, <vscale x 2 x i1> %mask, i32 %vl, i32 1, i32 5)1753 %1 = 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) %0, i32 1)1754 ret <vscale x 2 x i32> %11755}1756 1757define <vscale x 1 x i32> @test_vlsseg8_nxv1i32_triscv.vector.tuple_nxv4i8_8t(ptr %base, i32 %offset, i32 %vl) {1758; CHECK-LABEL: test_vlsseg8_nxv1i32_triscv.vector.tuple_nxv4i8_8t:1759; CHECK: # %bb.0: # %entry1760; CHECK-NEXT: vsetvli zero, a2, e32, mf2, ta, ma1761; CHECK-NEXT: vlsseg8e32.v v7, (a0), a11762; CHECK-NEXT: ret1763entry:1764 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vlsseg8.triscv.vector.tuple_nxv4i8_8t(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) poison, ptr %base, i32 %offset, i32 %vl, i32 5)1765 %1 = 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) %0, i32 1)1766 ret <vscale x 1 x i32> %11767}1768 1769define <vscale x 1 x i32> @test_vlsseg8_mask_nxv1i32_triscv.vector.tuple_nxv4i8_8t(ptr %base, i32 %offset, i32 %vl, <vscale x 1 x i1> %mask) {1770; CHECK-LABEL: test_vlsseg8_mask_nxv1i32_triscv.vector.tuple_nxv4i8_8t:1771; CHECK: # %bb.0: # %entry1772; CHECK-NEXT: vsetvli zero, a2, e32, mf2, ta, ma1773; CHECK-NEXT: vlsseg8e32.v v7, (a0), a1, v0.t1774; CHECK-NEXT: ret1775entry:1776 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vlsseg8.mask.triscv.vector.tuple_nxv4i8_8t.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) poison, ptr %base, i32 %offset, <vscale x 1 x i1> %mask, i32 %vl, i32 1, i32 5)1777 %1 = 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) %0, i32 1)1778 ret <vscale x 1 x i32> %11779}1780 1781define <vscale x 2 x i32> @test_vlsseg8_nxv2i32_triscv.vector.tuple_nxv8i8_8t(ptr %base, i32 %offset, i32 %vl) {1782; CHECK-LABEL: test_vlsseg8_nxv2i32_triscv.vector.tuple_nxv8i8_8t:1783; CHECK: # %bb.0: # %entry1784; CHECK-NEXT: vsetvli zero, a2, e32, m1, ta, ma1785; CHECK-NEXT: vlsseg8e32.v v7, (a0), a11786; CHECK-NEXT: ret1787entry:1788 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vlsseg8.triscv.vector.tuple_nxv8i8_8t(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) poison, ptr %base, i32 %offset, i32 %vl, i32 5)1789 %1 = 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) %0, i32 1)1790 ret <vscale x 2 x i32> %11791}1792 1793define <vscale x 2 x i32> @test_vlsseg8_mask_nxv2i32_triscv.vector.tuple_nxv8i8_8t(ptr %base, i32 %offset, i32 %vl, <vscale x 2 x i1> %mask) {1794; CHECK-LABEL: test_vlsseg8_mask_nxv2i32_triscv.vector.tuple_nxv8i8_8t:1795; CHECK: # %bb.0: # %entry1796; CHECK-NEXT: vsetvli zero, a2, e32, m1, ta, ma1797; CHECK-NEXT: vlsseg8e32.v v7, (a0), a1, v0.t1798; CHECK-NEXT: ret1799entry:1800 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vlsseg8.mask.triscv.vector.tuple_nxv8i8_8t.nxv2i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) poison, ptr %base, i32 %offset, <vscale x 2 x i1> %mask, i32 %vl, i32 1, i32 5)1801 %1 = 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) %0, i32 1)1802 ret <vscale x 2 x i32> %11803}1804 1805define <vscale x 1 x i64> @test_vlsseg2_nxv1i64_triscv.vector.tuple_nxv8i8_2t(ptr %base, i32 %offset, i32 %vl) {1806; CHECK-LABEL: test_vlsseg2_nxv1i64_triscv.vector.tuple_nxv8i8_2t:1807; CHECK: # %bb.0: # %entry1808; CHECK-NEXT: vsetvli zero, a2, e64, m1, ta, ma1809; CHECK-NEXT: vlsseg2e64.v v7, (a0), a11810; CHECK-NEXT: ret1811entry:1812 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vlsseg2.triscv.vector.tuple_nxv8i8_2t(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) poison, ptr %base, i32 %offset, i32 %vl, i32 6)1813 %1 = 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) %0, i32 1)1814 ret <vscale x 1 x i64> %11815}1816 1817define <vscale x 1 x i64> @test_vlsseg2_mask_nxv1i64_triscv.vector.tuple_nxv8i8_2t(ptr %base, i32 %offset, i32 %vl, <vscale x 1 x i1> %mask) {1818; CHECK-LABEL: test_vlsseg2_mask_nxv1i64_triscv.vector.tuple_nxv8i8_2t:1819; CHECK: # %bb.0: # %entry1820; CHECK-NEXT: vsetvli zero, a2, e64, m1, ta, ma1821; CHECK-NEXT: vlsseg2e64.v v7, (a0), a1, v0.t1822; CHECK-NEXT: ret1823entry:1824 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv8i8_2t.nxv1i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) poison, ptr %base, i32 %offset, <vscale x 1 x i1> %mask, i32 %vl, i32 1, i32 6)1825 %1 = 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) %0, i32 1)1826 ret <vscale x 1 x i64> %11827}1828 1829define <vscale x 2 x i64> @test_vlsseg2_nxv2i64_triscv.vector.tuple_nxv16i8_2t(ptr %base, i32 %offset, i32 %vl) {1830; CHECK-LABEL: test_vlsseg2_nxv2i64_triscv.vector.tuple_nxv16i8_2t:1831; CHECK: # %bb.0: # %entry1832; CHECK-NEXT: vsetvli zero, a2, e64, m2, ta, ma1833; CHECK-NEXT: vlsseg2e64.v v6, (a0), a11834; CHECK-NEXT: ret1835entry:1836 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vlsseg2.triscv.vector.tuple_nxv16i8_2t(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) poison, ptr %base, i32 %offset, i32 %vl, i32 6)1837 %1 = 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) %0, i32 1)1838 ret <vscale x 2 x i64> %11839}1840 1841define <vscale x 2 x i64> @test_vlsseg2_mask_nxv2i64_triscv.vector.tuple_nxv16i8_2t(ptr %base, i32 %offset, i32 %vl, <vscale x 2 x i1> %mask) {1842; CHECK-LABEL: test_vlsseg2_mask_nxv2i64_triscv.vector.tuple_nxv16i8_2t:1843; CHECK: # %bb.0: # %entry1844; CHECK-NEXT: vsetvli zero, a2, e64, m2, ta, ma1845; CHECK-NEXT: vlsseg2e64.v v6, (a0), a1, v0.t1846; CHECK-NEXT: ret1847entry:1848 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv16i8_2t.nxv2i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) poison, ptr %base, i32 %offset, <vscale x 2 x i1> %mask, i32 %vl, i32 1, i32 6)1849 %1 = 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) %0, i32 1)1850 ret <vscale x 2 x i64> %11851}1852 1853define <vscale x 4 x i64> @test_vlsseg2_nxv4i64_triscv.vector.tuple_nxv32i8_2t(ptr %base, i32 %offset, i32 %vl) {1854; CHECK-LABEL: test_vlsseg2_nxv4i64_triscv.vector.tuple_nxv32i8_2t:1855; CHECK: # %bb.0: # %entry1856; CHECK-NEXT: vsetvli zero, a2, e64, m4, ta, ma1857; CHECK-NEXT: vlsseg2e64.v v4, (a0), a11858; CHECK-NEXT: ret1859entry:1860 %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vlsseg2.triscv.vector.tuple_nxv32i8_2t(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) poison, ptr %base, i32 %offset, i32 %vl, i32 6)1861 %1 = 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) %0, i32 1)1862 ret <vscale x 4 x i64> %11863}1864 1865define <vscale x 4 x i64> @test_vlsseg2_mask_nxv4i64_triscv.vector.tuple_nxv32i8_2t(ptr %base, i32 %offset, i32 %vl, <vscale x 4 x i1> %mask) {1866; CHECK-LABEL: test_vlsseg2_mask_nxv4i64_triscv.vector.tuple_nxv32i8_2t:1867; CHECK: # %bb.0: # %entry1868; CHECK-NEXT: vsetvli zero, a2, e64, m4, ta, ma1869; CHECK-NEXT: vlsseg2e64.v v4, (a0), a1, v0.t1870; CHECK-NEXT: ret1871entry:1872 %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv32i8_2t.nxv4i1(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) poison, ptr %base, i32 %offset, <vscale x 4 x i1> %mask, i32 %vl, i32 1, i32 6)1873 %1 = 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) %0, i32 1)1874 ret <vscale x 4 x i64> %11875}1876 1877define <vscale x 1 x i64> @test_vlsseg3_nxv1i64_triscv.vector.tuple_nxv8i8_3t(ptr %base, i32 %offset, i32 %vl) {1878; CHECK-LABEL: test_vlsseg3_nxv1i64_triscv.vector.tuple_nxv8i8_3t:1879; CHECK: # %bb.0: # %entry1880; CHECK-NEXT: vsetvli zero, a2, e64, m1, ta, ma1881; CHECK-NEXT: vlsseg3e64.v v7, (a0), a11882; CHECK-NEXT: ret1883entry:1884 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vlsseg3.triscv.vector.tuple_nxv8i8_3t(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) poison, ptr %base, i32 %offset, i32 %vl, i32 6)1885 %1 = 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) %0, i32 1)1886 ret <vscale x 1 x i64> %11887}1888 1889define <vscale x 1 x i64> @test_vlsseg3_mask_nxv1i64_triscv.vector.tuple_nxv8i8_3t(ptr %base, i32 %offset, i32 %vl, <vscale x 1 x i1> %mask) {1890; CHECK-LABEL: test_vlsseg3_mask_nxv1i64_triscv.vector.tuple_nxv8i8_3t:1891; CHECK: # %bb.0: # %entry1892; CHECK-NEXT: vsetvli zero, a2, e64, m1, ta, ma1893; CHECK-NEXT: vlsseg3e64.v v7, (a0), a1, v0.t1894; CHECK-NEXT: ret1895entry:1896 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vlsseg3.mask.triscv.vector.tuple_nxv8i8_3t.nxv1i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) poison, ptr %base, i32 %offset, <vscale x 1 x i1> %mask, i32 %vl, i32 1, i32 6)1897 %1 = 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) %0, i32 1)1898 ret <vscale x 1 x i64> %11899}1900 1901define <vscale x 2 x i64> @test_vlsseg3_nxv2i64_triscv.vector.tuple_nxv16i8_3t(ptr %base, i32 %offset, i32 %vl) {1902; CHECK-LABEL: test_vlsseg3_nxv2i64_triscv.vector.tuple_nxv16i8_3t:1903; CHECK: # %bb.0: # %entry1904; CHECK-NEXT: vsetvli zero, a2, e64, m2, ta, ma1905; CHECK-NEXT: vlsseg3e64.v v6, (a0), a11906; CHECK-NEXT: ret1907entry:1908 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vlsseg3.triscv.vector.tuple_nxv16i8_3t(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) poison, ptr %base, i32 %offset, i32 %vl, i32 6)1909 %1 = 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) %0, i32 1)1910 ret <vscale x 2 x i64> %11911}1912 1913define <vscale x 2 x i64> @test_vlsseg3_mask_nxv2i64_triscv.vector.tuple_nxv16i8_3t(ptr %base, i32 %offset, i32 %vl, <vscale x 2 x i1> %mask) {1914; CHECK-LABEL: test_vlsseg3_mask_nxv2i64_triscv.vector.tuple_nxv16i8_3t:1915; CHECK: # %bb.0: # %entry1916; CHECK-NEXT: vsetvli zero, a2, e64, m2, ta, ma1917; CHECK-NEXT: vlsseg3e64.v v6, (a0), a1, v0.t1918; CHECK-NEXT: ret1919entry:1920 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vlsseg3.mask.triscv.vector.tuple_nxv16i8_3t.nxv2i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) poison, ptr %base, i32 %offset, <vscale x 2 x i1> %mask, i32 %vl, i32 1, i32 6)1921 %1 = 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) %0, i32 1)1922 ret <vscale x 2 x i64> %11923}1924 1925define <vscale x 1 x i64> @test_vlsseg4_nxv1i64_triscv.vector.tuple_nxv8i8_4t(ptr %base, i32 %offset, i32 %vl) {1926; CHECK-LABEL: test_vlsseg4_nxv1i64_triscv.vector.tuple_nxv8i8_4t:1927; CHECK: # %bb.0: # %entry1928; CHECK-NEXT: vsetvli zero, a2, e64, m1, ta, ma1929; CHECK-NEXT: vlsseg4e64.v v7, (a0), a11930; CHECK-NEXT: ret1931entry:1932 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vlsseg4.triscv.vector.tuple_nxv8i8_4t(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) poison, ptr %base, i32 %offset, i32 %vl, i32 6)1933 %1 = 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) %0, i32 1)1934 ret <vscale x 1 x i64> %11935}1936 1937define <vscale x 1 x i64> @test_vlsseg4_mask_nxv1i64_triscv.vector.tuple_nxv8i8_4t(ptr %base, i32 %offset, i32 %vl, <vscale x 1 x i1> %mask) {1938; CHECK-LABEL: test_vlsseg4_mask_nxv1i64_triscv.vector.tuple_nxv8i8_4t:1939; CHECK: # %bb.0: # %entry1940; CHECK-NEXT: vsetvli zero, a2, e64, m1, ta, ma1941; CHECK-NEXT: vlsseg4e64.v v7, (a0), a1, v0.t1942; CHECK-NEXT: ret1943entry:1944 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vlsseg4.mask.triscv.vector.tuple_nxv8i8_4t.nxv1i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) poison, ptr %base, i32 %offset, <vscale x 1 x i1> %mask, i32 %vl, i32 1, i32 6)1945 %1 = 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) %0, i32 1)1946 ret <vscale x 1 x i64> %11947}1948 1949define <vscale x 2 x i64> @test_vlsseg4_nxv2i64_triscv.vector.tuple_nxv16i8_4t(ptr %base, i32 %offset, i32 %vl) {1950; CHECK-LABEL: test_vlsseg4_nxv2i64_triscv.vector.tuple_nxv16i8_4t:1951; CHECK: # %bb.0: # %entry1952; CHECK-NEXT: vsetvli zero, a2, e64, m2, ta, ma1953; CHECK-NEXT: vlsseg4e64.v v6, (a0), a11954; CHECK-NEXT: ret1955entry:1956 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vlsseg4.triscv.vector.tuple_nxv16i8_4t(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) poison, ptr %base, i32 %offset, i32 %vl, i32 6)1957 %1 = 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) %0, i32 1)1958 ret <vscale x 2 x i64> %11959}1960 1961define <vscale x 2 x i64> @test_vlsseg4_mask_nxv2i64_triscv.vector.tuple_nxv16i8_4t(ptr %base, i32 %offset, i32 %vl, <vscale x 2 x i1> %mask) {1962; CHECK-LABEL: test_vlsseg4_mask_nxv2i64_triscv.vector.tuple_nxv16i8_4t:1963; CHECK: # %bb.0: # %entry1964; CHECK-NEXT: vsetvli zero, a2, e64, m2, ta, ma1965; CHECK-NEXT: vlsseg4e64.v v6, (a0), a1, v0.t1966; CHECK-NEXT: ret1967entry:1968 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vlsseg4.mask.triscv.vector.tuple_nxv16i8_4t.nxv2i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) poison, ptr %base, i32 %offset, <vscale x 2 x i1> %mask, i32 %vl, i32 1, i32 6)1969 %1 = 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) %0, i32 1)1970 ret <vscale x 2 x i64> %11971}1972 1973define <vscale x 1 x i64> @test_vlsseg5_nxv1i64_triscv.vector.tuple_nxv8i8_5t(ptr %base, i32 %offset, i32 %vl) {1974; CHECK-LABEL: test_vlsseg5_nxv1i64_triscv.vector.tuple_nxv8i8_5t:1975; CHECK: # %bb.0: # %entry1976; CHECK-NEXT: vsetvli zero, a2, e64, m1, ta, ma1977; CHECK-NEXT: vlsseg5e64.v v7, (a0), a11978; CHECK-NEXT: ret1979entry:1980 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vlsseg5.triscv.vector.tuple_nxv8i8_5t(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) poison, ptr %base, i32 %offset, i32 %vl, i32 6)1981 %1 = 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) %0, i32 1)1982 ret <vscale x 1 x i64> %11983}1984 1985define <vscale x 1 x i64> @test_vlsseg5_mask_nxv1i64_triscv.vector.tuple_nxv8i8_5t(ptr %base, i32 %offset, i32 %vl, <vscale x 1 x i1> %mask) {1986; CHECK-LABEL: test_vlsseg5_mask_nxv1i64_triscv.vector.tuple_nxv8i8_5t:1987; CHECK: # %bb.0: # %entry1988; CHECK-NEXT: vsetvli zero, a2, e64, m1, ta, ma1989; CHECK-NEXT: vlsseg5e64.v v7, (a0), a1, v0.t1990; CHECK-NEXT: ret1991entry:1992 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vlsseg5.mask.triscv.vector.tuple_nxv8i8_5t.nxv1i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) poison, ptr %base, i32 %offset, <vscale x 1 x i1> %mask, i32 %vl, i32 1, i32 6)1993 %1 = 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) %0, i32 1)1994 ret <vscale x 1 x i64> %11995}1996 1997define <vscale x 1 x i64> @test_vlsseg6_nxv1i64_triscv.vector.tuple_nxv8i8_6t(ptr %base, i32 %offset, i32 %vl) {1998; CHECK-LABEL: test_vlsseg6_nxv1i64_triscv.vector.tuple_nxv8i8_6t:1999; CHECK: # %bb.0: # %entry2000; CHECK-NEXT: vsetvli zero, a2, e64, m1, ta, ma2001; CHECK-NEXT: vlsseg6e64.v v7, (a0), a12002; CHECK-NEXT: ret2003entry:2004 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vlsseg6.triscv.vector.tuple_nxv8i8_6t(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) poison, ptr %base, i32 %offset, i32 %vl, i32 6)2005 %1 = 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) %0, i32 1)2006 ret <vscale x 1 x i64> %12007}2008 2009define <vscale x 1 x i64> @test_vlsseg6_mask_nxv1i64_triscv.vector.tuple_nxv8i8_6t(ptr %base, i32 %offset, i32 %vl, <vscale x 1 x i1> %mask) {2010; CHECK-LABEL: test_vlsseg6_mask_nxv1i64_triscv.vector.tuple_nxv8i8_6t:2011; CHECK: # %bb.0: # %entry2012; CHECK-NEXT: vsetvli zero, a2, e64, m1, ta, ma2013; CHECK-NEXT: vlsseg6e64.v v7, (a0), a1, v0.t2014; CHECK-NEXT: ret2015entry:2016 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vlsseg6.mask.triscv.vector.tuple_nxv8i8_6t.nxv1i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) poison, ptr %base, i32 %offset, <vscale x 1 x i1> %mask, i32 %vl, i32 1, i32 6)2017 %1 = 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) %0, i32 1)2018 ret <vscale x 1 x i64> %12019}2020 2021define <vscale x 1 x i64> @test_vlsseg7_nxv1i64_triscv.vector.tuple_nxv8i8_7t(ptr %base, i32 %offset, i32 %vl) {2022; CHECK-LABEL: test_vlsseg7_nxv1i64_triscv.vector.tuple_nxv8i8_7t:2023; CHECK: # %bb.0: # %entry2024; CHECK-NEXT: vsetvli zero, a2, e64, m1, ta, ma2025; CHECK-NEXT: vlsseg7e64.v v7, (a0), a12026; CHECK-NEXT: ret2027entry:2028 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vlsseg7.triscv.vector.tuple_nxv8i8_7t(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) poison, ptr %base, i32 %offset, i32 %vl, i32 6)2029 %1 = 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) %0, i32 1)2030 ret <vscale x 1 x i64> %12031}2032 2033define <vscale x 1 x i64> @test_vlsseg7_mask_nxv1i64_triscv.vector.tuple_nxv8i8_7t(ptr %base, i32 %offset, i32 %vl, <vscale x 1 x i1> %mask) {2034; CHECK-LABEL: test_vlsseg7_mask_nxv1i64_triscv.vector.tuple_nxv8i8_7t:2035; CHECK: # %bb.0: # %entry2036; CHECK-NEXT: vsetvli zero, a2, e64, m1, ta, ma2037; CHECK-NEXT: vlsseg7e64.v v7, (a0), a1, v0.t2038; CHECK-NEXT: ret2039entry:2040 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vlsseg7.mask.triscv.vector.tuple_nxv8i8_7t.nxv1i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) poison, ptr %base, i32 %offset, <vscale x 1 x i1> %mask, i32 %vl, i32 1, i32 6)2041 %1 = 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) %0, i32 1)2042 ret <vscale x 1 x i64> %12043}2044 2045define <vscale x 1 x i64> @test_vlsseg8_nxv1i64_triscv.vector.tuple_nxv8i8_8t(ptr %base, i32 %offset, i32 %vl) {2046; CHECK-LABEL: test_vlsseg8_nxv1i64_triscv.vector.tuple_nxv8i8_8t:2047; CHECK: # %bb.0: # %entry2048; CHECK-NEXT: vsetvli zero, a2, e64, m1, ta, ma2049; CHECK-NEXT: vlsseg8e64.v v7, (a0), a12050; CHECK-NEXT: ret2051entry:2052 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vlsseg8.triscv.vector.tuple_nxv8i8_8t(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) poison, ptr %base, i32 %offset, i32 %vl, i32 6)2053 %1 = 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) %0, i32 1)2054 ret <vscale x 1 x i64> %12055}2056 2057define <vscale x 1 x i64> @test_vlsseg8_mask_nxv1i64_triscv.vector.tuple_nxv8i8_8t(ptr %base, i32 %offset, i32 %vl, <vscale x 1 x i1> %mask) {2058; CHECK-LABEL: test_vlsseg8_mask_nxv1i64_triscv.vector.tuple_nxv8i8_8t:2059; CHECK: # %bb.0: # %entry2060; CHECK-NEXT: vsetvli zero, a2, e64, m1, ta, ma2061; CHECK-NEXT: vlsseg8e64.v v7, (a0), a1, v0.t2062; CHECK-NEXT: ret2063entry:2064 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vlsseg8.mask.triscv.vector.tuple_nxv8i8_8t.nxv1i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) poison, ptr %base, i32 %offset, <vscale x 1 x i1> %mask, i32 %vl, i32 1, i32 6)2065 %1 = 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) %0, i32 1)2066 ret <vscale x 1 x i64> %12067}2068 2069define <vscale x 1 x half> @test_vlsseg2_nxv1f16_triscv.vector.tuple_nxv2i8_2t(ptr %base, i32 %offset, i32 %vl) {2070; CHECK-LABEL: test_vlsseg2_nxv1f16_triscv.vector.tuple_nxv2i8_2t:2071; CHECK: # %bb.0: # %entry2072; CHECK-NEXT: vsetvli zero, a2, e16, mf4, ta, ma2073; CHECK-NEXT: vlsseg2e16.v v7, (a0), a12074; CHECK-NEXT: ret2075entry:2076 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 2) @llvm.riscv.vlsseg2.triscv.vector.tuple_nxv2i8_2t(target("riscv.vector.tuple", <vscale x 2 x i8>, 2) poison, ptr %base, i32 %offset, i32 %vl, i32 4)2077 %1 = 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) %0, i32 1)2078 ret <vscale x 1 x half> %12079}2080 2081define <vscale x 1 x half> @test_vlsseg2_mask_nxv1f16_triscv.vector.tuple_nxv2i8_2t(ptr %base, i32 %offset, i32 %vl, <vscale x 1 x i1> %mask) {2082; CHECK-LABEL: test_vlsseg2_mask_nxv1f16_triscv.vector.tuple_nxv2i8_2t:2083; CHECK: # %bb.0: # %entry2084; CHECK-NEXT: vsetvli zero, a2, e16, mf4, ta, ma2085; CHECK-NEXT: vlsseg2e16.v v7, (a0), a1, v0.t2086; CHECK-NEXT: ret2087entry:2088 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv2i8_2t.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 2) poison, ptr %base, i32 %offset, <vscale x 1 x i1> %mask, i32 %vl, i32 1, i32 4)2089 %1 = 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) %0, i32 1)2090 ret <vscale x 1 x half> %12091}2092 2093define <vscale x 2 x half> @test_vlsseg2_nxv2f16_triscv.vector.tuple_nxv4i8_2t(ptr %base, i32 %offset, i32 %vl) {2094; CHECK-LABEL: test_vlsseg2_nxv2f16_triscv.vector.tuple_nxv4i8_2t:2095; CHECK: # %bb.0: # %entry2096; CHECK-NEXT: vsetvli zero, a2, e16, mf2, ta, ma2097; CHECK-NEXT: vlsseg2e16.v v7, (a0), a12098; CHECK-NEXT: ret2099entry:2100 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vlsseg2.triscv.vector.tuple_nxv4i8_2t(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) poison, ptr %base, i32 %offset, i32 %vl, i32 4)2101 %1 = 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) %0, i32 1)2102 ret <vscale x 2 x half> %12103}2104 2105define <vscale x 2 x half> @test_vlsseg2_mask_nxv2f16_triscv.vector.tuple_nxv4i8_2t(ptr %base, i32 %offset, i32 %vl, <vscale x 2 x i1> %mask) {2106; CHECK-LABEL: test_vlsseg2_mask_nxv2f16_triscv.vector.tuple_nxv4i8_2t:2107; CHECK: # %bb.0: # %entry2108; CHECK-NEXT: vsetvli zero, a2, e16, mf2, ta, ma2109; CHECK-NEXT: vlsseg2e16.v v7, (a0), a1, v0.t2110; CHECK-NEXT: ret2111entry:2112 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv4i8_2t.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) poison, ptr %base, i32 %offset, <vscale x 2 x i1> %mask, i32 %vl, i32 1, i32 4)2113 %1 = 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) %0, i32 1)2114 ret <vscale x 2 x half> %12115}2116 2117define <vscale x 4 x half> @test_vlsseg2_nxv4f16_triscv.vector.tuple_nxv8i8_2t(ptr %base, i32 %offset, i32 %vl) {2118; CHECK-LABEL: test_vlsseg2_nxv4f16_triscv.vector.tuple_nxv8i8_2t:2119; CHECK: # %bb.0: # %entry2120; CHECK-NEXT: vsetvli zero, a2, e16, m1, ta, ma2121; CHECK-NEXT: vlsseg2e16.v v7, (a0), a12122; CHECK-NEXT: ret2123entry:2124 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vlsseg2.triscv.vector.tuple_nxv8i8_2t(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) poison, ptr %base, i32 %offset, i32 %vl, i32 4)2125 %1 = 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) %0, i32 1)2126 ret <vscale x 4 x half> %12127}2128 2129define <vscale x 4 x half> @test_vlsseg2_mask_nxv4f16_triscv.vector.tuple_nxv8i8_2t(ptr %base, i32 %offset, i32 %vl, <vscale x 4 x i1> %mask) {2130; CHECK-LABEL: test_vlsseg2_mask_nxv4f16_triscv.vector.tuple_nxv8i8_2t:2131; CHECK: # %bb.0: # %entry2132; CHECK-NEXT: vsetvli zero, a2, e16, m1, ta, ma2133; CHECK-NEXT: vlsseg2e16.v v7, (a0), a1, v0.t2134; CHECK-NEXT: ret2135entry:2136 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv8i8_2t.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) poison, ptr %base, i32 %offset, <vscale x 4 x i1> %mask, i32 %vl, i32 1, i32 4)2137 %1 = 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) %0, i32 1)2138 ret <vscale x 4 x half> %12139}2140 2141define <vscale x 8 x half> @test_vlsseg2_nxv8f16_triscv.vector.tuple_nxv16i8_2t(ptr %base, i32 %offset, i32 %vl) {2142; CHECK-LABEL: test_vlsseg2_nxv8f16_triscv.vector.tuple_nxv16i8_2t:2143; CHECK: # %bb.0: # %entry2144; CHECK-NEXT: vsetvli zero, a2, e16, m2, ta, ma2145; CHECK-NEXT: vlsseg2e16.v v6, (a0), a12146; CHECK-NEXT: ret2147entry:2148 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vlsseg2.triscv.vector.tuple_nxv16i8_2t(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) poison, ptr %base, i32 %offset, i32 %vl, i32 4)2149 %1 = 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) %0, i32 1)2150 ret <vscale x 8 x half> %12151}2152 2153define <vscale x 8 x half> @test_vlsseg2_mask_nxv8f16_triscv.vector.tuple_nxv16i8_2t(ptr %base, i32 %offset, i32 %vl, <vscale x 8 x i1> %mask) {2154; CHECK-LABEL: test_vlsseg2_mask_nxv8f16_triscv.vector.tuple_nxv16i8_2t:2155; CHECK: # %bb.0: # %entry2156; CHECK-NEXT: vsetvli zero, a2, e16, m2, ta, ma2157; CHECK-NEXT: vlsseg2e16.v v6, (a0), a1, v0.t2158; CHECK-NEXT: ret2159entry:2160 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv16i8_2t.nxv8i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) poison, ptr %base, i32 %offset, <vscale x 8 x i1> %mask, i32 %vl, i32 1, i32 4)2161 %1 = 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) %0, i32 1)2162 ret <vscale x 8 x half> %12163}2164 2165define <vscale x 16 x half> @test_vlsseg2_nxv16f16_triscv.vector.tuple_nxv32i8_2t(ptr %base, i32 %offset, i32 %vl) {2166; CHECK-LABEL: test_vlsseg2_nxv16f16_triscv.vector.tuple_nxv32i8_2t:2167; CHECK: # %bb.0: # %entry2168; CHECK-NEXT: vsetvli zero, a2, e16, m4, ta, ma2169; CHECK-NEXT: vlsseg2e16.v v4, (a0), a12170; CHECK-NEXT: ret2171entry:2172 %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vlsseg2.triscv.vector.tuple_nxv32i8_2t(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) poison, ptr %base, i32 %offset, i32 %vl, i32 4)2173 %1 = 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) %0, i32 1)2174 ret <vscale x 16 x half> %12175}2176 2177define <vscale x 16 x half> @test_vlsseg2_mask_nxv16f16_triscv.vector.tuple_nxv32i8_2t(ptr %base, i32 %offset, i32 %vl, <vscale x 16 x i1> %mask) {2178; CHECK-LABEL: test_vlsseg2_mask_nxv16f16_triscv.vector.tuple_nxv32i8_2t:2179; CHECK: # %bb.0: # %entry2180; CHECK-NEXT: vsetvli zero, a2, e16, m4, ta, ma2181; CHECK-NEXT: vlsseg2e16.v v4, (a0), a1, v0.t2182; CHECK-NEXT: ret2183entry:2184 %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv32i8_2t.nxv16i1(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) poison, ptr %base, i32 %offset, <vscale x 16 x i1> %mask, i32 %vl, i32 1, i32 4)2185 %1 = 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) %0, i32 1)2186 ret <vscale x 16 x half> %12187}2188 2189define <vscale x 1 x half> @test_vlsseg3_nxv1f16_triscv.vector.tuple_nxv2i8_3t(ptr %base, i32 %offset, i32 %vl) {2190; CHECK-LABEL: test_vlsseg3_nxv1f16_triscv.vector.tuple_nxv2i8_3t:2191; CHECK: # %bb.0: # %entry2192; CHECK-NEXT: vsetvli zero, a2, e16, mf4, ta, ma2193; CHECK-NEXT: vlsseg3e16.v v7, (a0), a12194; CHECK-NEXT: ret2195entry:2196 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 3) @llvm.riscv.vlsseg3.triscv.vector.tuple_nxv2i8_3t(target("riscv.vector.tuple", <vscale x 2 x i8>, 3) poison, ptr %base, i32 %offset, i32 %vl, i32 4)2197 %1 = 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) %0, i32 1)2198 ret <vscale x 1 x half> %12199}2200 2201define <vscale x 1 x half> @test_vlsseg3_mask_nxv1f16_triscv.vector.tuple_nxv2i8_3t(ptr %base, i32 %offset, i32 %vl, <vscale x 1 x i1> %mask) {2202; CHECK-LABEL: test_vlsseg3_mask_nxv1f16_triscv.vector.tuple_nxv2i8_3t:2203; CHECK: # %bb.0: # %entry2204; CHECK-NEXT: vsetvli zero, a2, e16, mf4, ta, ma2205; CHECK-NEXT: vlsseg3e16.v v7, (a0), a1, v0.t2206; CHECK-NEXT: ret2207entry:2208 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 3) @llvm.riscv.vlsseg3.mask.triscv.vector.tuple_nxv2i8_3t.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 3) poison, ptr %base, i32 %offset, <vscale x 1 x i1> %mask, i32 %vl, i32 1, i32 4)2209 %1 = 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) %0, i32 1)2210 ret <vscale x 1 x half> %12211}2212 2213define <vscale x 2 x half> @test_vlsseg3_nxv2f16_triscv.vector.tuple_nxv4i8_3t(ptr %base, i32 %offset, i32 %vl) {2214; CHECK-LABEL: test_vlsseg3_nxv2f16_triscv.vector.tuple_nxv4i8_3t:2215; CHECK: # %bb.0: # %entry2216; CHECK-NEXT: vsetvli zero, a2, e16, mf2, ta, ma2217; CHECK-NEXT: vlsseg3e16.v v7, (a0), a12218; CHECK-NEXT: ret2219entry:2220 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vlsseg3.triscv.vector.tuple_nxv4i8_3t(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) poison, ptr %base, i32 %offset, i32 %vl, i32 4)2221 %1 = 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) %0, i32 1)2222 ret <vscale x 2 x half> %12223}2224 2225define <vscale x 2 x half> @test_vlsseg3_mask_nxv2f16_triscv.vector.tuple_nxv4i8_3t(ptr %base, i32 %offset, i32 %vl, <vscale x 2 x i1> %mask) {2226; CHECK-LABEL: test_vlsseg3_mask_nxv2f16_triscv.vector.tuple_nxv4i8_3t:2227; CHECK: # %bb.0: # %entry2228; CHECK-NEXT: vsetvli zero, a2, e16, mf2, ta, ma2229; CHECK-NEXT: vlsseg3e16.v v7, (a0), a1, v0.t2230; CHECK-NEXT: ret2231entry:2232 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vlsseg3.mask.triscv.vector.tuple_nxv4i8_3t.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) poison, ptr %base, i32 %offset, <vscale x 2 x i1> %mask, i32 %vl, i32 1, i32 4)2233 %1 = 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) %0, i32 1)2234 ret <vscale x 2 x half> %12235}2236 2237define <vscale x 4 x half> @test_vlsseg3_nxv4f16_triscv.vector.tuple_nxv8i8_3t(ptr %base, i32 %offset, i32 %vl) {2238; CHECK-LABEL: test_vlsseg3_nxv4f16_triscv.vector.tuple_nxv8i8_3t:2239; CHECK: # %bb.0: # %entry2240; CHECK-NEXT: vsetvli zero, a2, e16, m1, ta, ma2241; CHECK-NEXT: vlsseg3e16.v v7, (a0), a12242; CHECK-NEXT: ret2243entry:2244 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vlsseg3.triscv.vector.tuple_nxv8i8_3t(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) poison, ptr %base, i32 %offset, i32 %vl, i32 4)2245 %1 = 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) %0, i32 1)2246 ret <vscale x 4 x half> %12247}2248 2249define <vscale x 4 x half> @test_vlsseg3_mask_nxv4f16_triscv.vector.tuple_nxv8i8_3t(ptr %base, i32 %offset, i32 %vl, <vscale x 4 x i1> %mask) {2250; CHECK-LABEL: test_vlsseg3_mask_nxv4f16_triscv.vector.tuple_nxv8i8_3t:2251; CHECK: # %bb.0: # %entry2252; CHECK-NEXT: vsetvli zero, a2, e16, m1, ta, ma2253; CHECK-NEXT: vlsseg3e16.v v7, (a0), a1, v0.t2254; CHECK-NEXT: ret2255entry:2256 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vlsseg3.mask.triscv.vector.tuple_nxv8i8_3t.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) poison, ptr %base, i32 %offset, <vscale x 4 x i1> %mask, i32 %vl, i32 1, i32 4)2257 %1 = 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) %0, i32 1)2258 ret <vscale x 4 x half> %12259}2260 2261define <vscale x 8 x half> @test_vlsseg3_nxv8f16_triscv.vector.tuple_nxv16i8_3t(ptr %base, i32 %offset, i32 %vl) {2262; CHECK-LABEL: test_vlsseg3_nxv8f16_triscv.vector.tuple_nxv16i8_3t:2263; CHECK: # %bb.0: # %entry2264; CHECK-NEXT: vsetvli zero, a2, e16, m2, ta, ma2265; CHECK-NEXT: vlsseg3e16.v v6, (a0), a12266; CHECK-NEXT: ret2267entry:2268 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vlsseg3.triscv.vector.tuple_nxv16i8_3t(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) poison, ptr %base, i32 %offset, i32 %vl, i32 4)2269 %1 = 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) %0, i32 1)2270 ret <vscale x 8 x half> %12271}2272 2273define <vscale x 8 x half> @test_vlsseg3_mask_nxv8f16_triscv.vector.tuple_nxv16i8_3t(ptr %base, i32 %offset, i32 %vl, <vscale x 8 x i1> %mask) {2274; CHECK-LABEL: test_vlsseg3_mask_nxv8f16_triscv.vector.tuple_nxv16i8_3t:2275; CHECK: # %bb.0: # %entry2276; CHECK-NEXT: vsetvli zero, a2, e16, m2, ta, ma2277; CHECK-NEXT: vlsseg3e16.v v6, (a0), a1, v0.t2278; CHECK-NEXT: ret2279entry:2280 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vlsseg3.mask.triscv.vector.tuple_nxv16i8_3t.nxv8i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) poison, ptr %base, i32 %offset, <vscale x 8 x i1> %mask, i32 %vl, i32 1, i32 4)2281 %1 = 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) %0, i32 1)2282 ret <vscale x 8 x half> %12283}2284 2285define <vscale x 1 x half> @test_vlsseg4_nxv1f16_triscv.vector.tuple_nxv2i8_4t(ptr %base, i32 %offset, i32 %vl) {2286; CHECK-LABEL: test_vlsseg4_nxv1f16_triscv.vector.tuple_nxv2i8_4t:2287; CHECK: # %bb.0: # %entry2288; CHECK-NEXT: vsetvli zero, a2, e16, mf4, ta, ma2289; CHECK-NEXT: vlsseg4e16.v v7, (a0), a12290; CHECK-NEXT: ret2291entry:2292 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 4) @llvm.riscv.vlsseg4.triscv.vector.tuple_nxv2i8_4t(target("riscv.vector.tuple", <vscale x 2 x i8>, 4) poison, ptr %base, i32 %offset, i32 %vl, i32 4)2293 %1 = 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) %0, i32 1)2294 ret <vscale x 1 x half> %12295}2296 2297define <vscale x 1 x half> @test_vlsseg4_mask_nxv1f16_triscv.vector.tuple_nxv2i8_4t(ptr %base, i32 %offset, i32 %vl, <vscale x 1 x i1> %mask) {2298; CHECK-LABEL: test_vlsseg4_mask_nxv1f16_triscv.vector.tuple_nxv2i8_4t:2299; CHECK: # %bb.0: # %entry2300; CHECK-NEXT: vsetvli zero, a2, e16, mf4, ta, ma2301; CHECK-NEXT: vlsseg4e16.v v7, (a0), a1, v0.t2302; CHECK-NEXT: ret2303entry:2304 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 4) @llvm.riscv.vlsseg4.mask.triscv.vector.tuple_nxv2i8_4t.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 4) poison, ptr %base, i32 %offset, <vscale x 1 x i1> %mask, i32 %vl, i32 1, i32 4)2305 %1 = 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) %0, i32 1)2306 ret <vscale x 1 x half> %12307}2308 2309define <vscale x 2 x half> @test_vlsseg4_nxv2f16_triscv.vector.tuple_nxv4i8_4t(ptr %base, i32 %offset, i32 %vl) {2310; CHECK-LABEL: test_vlsseg4_nxv2f16_triscv.vector.tuple_nxv4i8_4t:2311; CHECK: # %bb.0: # %entry2312; CHECK-NEXT: vsetvli zero, a2, e16, mf2, ta, ma2313; CHECK-NEXT: vlsseg4e16.v v7, (a0), a12314; CHECK-NEXT: ret2315entry:2316 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vlsseg4.triscv.vector.tuple_nxv4i8_4t(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) poison, ptr %base, i32 %offset, i32 %vl, i32 4)2317 %1 = 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) %0, i32 1)2318 ret <vscale x 2 x half> %12319}2320 2321define <vscale x 2 x half> @test_vlsseg4_mask_nxv2f16_triscv.vector.tuple_nxv4i8_4t(ptr %base, i32 %offset, i32 %vl, <vscale x 2 x i1> %mask) {2322; CHECK-LABEL: test_vlsseg4_mask_nxv2f16_triscv.vector.tuple_nxv4i8_4t:2323; CHECK: # %bb.0: # %entry2324; CHECK-NEXT: vsetvli zero, a2, e16, mf2, ta, ma2325; CHECK-NEXT: vlsseg4e16.v v7, (a0), a1, v0.t2326; CHECK-NEXT: ret2327entry:2328 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vlsseg4.mask.triscv.vector.tuple_nxv4i8_4t.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) poison, ptr %base, i32 %offset, <vscale x 2 x i1> %mask, i32 %vl, i32 1, i32 4)2329 %1 = 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) %0, i32 1)2330 ret <vscale x 2 x half> %12331}2332 2333define <vscale x 4 x half> @test_vlsseg4_nxv4f16_triscv.vector.tuple_nxv8i8_4t(ptr %base, i32 %offset, i32 %vl) {2334; CHECK-LABEL: test_vlsseg4_nxv4f16_triscv.vector.tuple_nxv8i8_4t:2335; CHECK: # %bb.0: # %entry2336; CHECK-NEXT: vsetvli zero, a2, e16, m1, ta, ma2337; CHECK-NEXT: vlsseg4e16.v v7, (a0), a12338; CHECK-NEXT: ret2339entry:2340 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vlsseg4.triscv.vector.tuple_nxv8i8_4t(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) poison, ptr %base, i32 %offset, i32 %vl, i32 4)2341 %1 = 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) %0, i32 1)2342 ret <vscale x 4 x half> %12343}2344 2345define <vscale x 4 x half> @test_vlsseg4_mask_nxv4f16_triscv.vector.tuple_nxv8i8_4t(ptr %base, i32 %offset, i32 %vl, <vscale x 4 x i1> %mask) {2346; CHECK-LABEL: test_vlsseg4_mask_nxv4f16_triscv.vector.tuple_nxv8i8_4t:2347; CHECK: # %bb.0: # %entry2348; CHECK-NEXT: vsetvli zero, a2, e16, m1, ta, ma2349; CHECK-NEXT: vlsseg4e16.v v7, (a0), a1, v0.t2350; CHECK-NEXT: ret2351entry:2352 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vlsseg4.mask.triscv.vector.tuple_nxv8i8_4t.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) poison, ptr %base, i32 %offset, <vscale x 4 x i1> %mask, i32 %vl, i32 1, i32 4)2353 %1 = 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) %0, i32 1)2354 ret <vscale x 4 x half> %12355}2356 2357define <vscale x 8 x half> @test_vlsseg4_nxv8f16_triscv.vector.tuple_nxv16i8_4t(ptr %base, i32 %offset, i32 %vl) {2358; CHECK-LABEL: test_vlsseg4_nxv8f16_triscv.vector.tuple_nxv16i8_4t:2359; CHECK: # %bb.0: # %entry2360; CHECK-NEXT: vsetvli zero, a2, e16, m2, ta, ma2361; CHECK-NEXT: vlsseg4e16.v v6, (a0), a12362; CHECK-NEXT: ret2363entry:2364 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vlsseg4.triscv.vector.tuple_nxv16i8_4t(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) poison, ptr %base, i32 %offset, i32 %vl, i32 4)2365 %1 = 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) %0, i32 1)2366 ret <vscale x 8 x half> %12367}2368 2369define <vscale x 8 x half> @test_vlsseg4_mask_nxv8f16_triscv.vector.tuple_nxv16i8_4t(ptr %base, i32 %offset, i32 %vl, <vscale x 8 x i1> %mask) {2370; CHECK-LABEL: test_vlsseg4_mask_nxv8f16_triscv.vector.tuple_nxv16i8_4t:2371; CHECK: # %bb.0: # %entry2372; CHECK-NEXT: vsetvli zero, a2, e16, m2, ta, ma2373; CHECK-NEXT: vlsseg4e16.v v6, (a0), a1, v0.t2374; CHECK-NEXT: ret2375entry:2376 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vlsseg4.mask.triscv.vector.tuple_nxv16i8_4t.nxv8i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) poison, ptr %base, i32 %offset, <vscale x 8 x i1> %mask, i32 %vl, i32 1, i32 4)2377 %1 = 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) %0, i32 1)2378 ret <vscale x 8 x half> %12379}2380 2381define <vscale x 1 x half> @test_vlsseg5_nxv1f16_triscv.vector.tuple_nxv2i8_5t(ptr %base, i32 %offset, i32 %vl) {2382; CHECK-LABEL: test_vlsseg5_nxv1f16_triscv.vector.tuple_nxv2i8_5t:2383; CHECK: # %bb.0: # %entry2384; CHECK-NEXT: vsetvli zero, a2, e16, mf4, ta, ma2385; CHECK-NEXT: vlsseg5e16.v v7, (a0), a12386; CHECK-NEXT: ret2387entry:2388 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 5) @llvm.riscv.vlsseg5.triscv.vector.tuple_nxv2i8_5t(target("riscv.vector.tuple", <vscale x 2 x i8>, 5) poison, ptr %base, i32 %offset, i32 %vl, i32 4)2389 %1 = 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) %0, i32 1)2390 ret <vscale x 1 x half> %12391}2392 2393define <vscale x 1 x half> @test_vlsseg5_mask_nxv1f16_triscv.vector.tuple_nxv2i8_5t(ptr %base, i32 %offset, i32 %vl, <vscale x 1 x i1> %mask) {2394; CHECK-LABEL: test_vlsseg5_mask_nxv1f16_triscv.vector.tuple_nxv2i8_5t:2395; CHECK: # %bb.0: # %entry2396; CHECK-NEXT: vsetvli zero, a2, e16, mf4, ta, ma2397; CHECK-NEXT: vlsseg5e16.v v7, (a0), a1, v0.t2398; CHECK-NEXT: ret2399entry:2400 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 5) @llvm.riscv.vlsseg5.mask.triscv.vector.tuple_nxv2i8_5t.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 5) poison, ptr %base, i32 %offset, <vscale x 1 x i1> %mask, i32 %vl, i32 1, i32 4)2401 %1 = 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) %0, i32 1)2402 ret <vscale x 1 x half> %12403}2404 2405define <vscale x 2 x half> @test_vlsseg5_nxv2f16_triscv.vector.tuple_nxv4i8_5t(ptr %base, i32 %offset, i32 %vl) {2406; CHECK-LABEL: test_vlsseg5_nxv2f16_triscv.vector.tuple_nxv4i8_5t:2407; CHECK: # %bb.0: # %entry2408; CHECK-NEXT: vsetvli zero, a2, e16, mf2, ta, ma2409; CHECK-NEXT: vlsseg5e16.v v7, (a0), a12410; CHECK-NEXT: ret2411entry:2412 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vlsseg5.triscv.vector.tuple_nxv4i8_5t(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) poison, ptr %base, i32 %offset, i32 %vl, i32 4)2413 %1 = 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) %0, i32 1)2414 ret <vscale x 2 x half> %12415}2416 2417define <vscale x 2 x half> @test_vlsseg5_mask_nxv2f16_triscv.vector.tuple_nxv4i8_5t(ptr %base, i32 %offset, i32 %vl, <vscale x 2 x i1> %mask) {2418; CHECK-LABEL: test_vlsseg5_mask_nxv2f16_triscv.vector.tuple_nxv4i8_5t:2419; CHECK: # %bb.0: # %entry2420; CHECK-NEXT: vsetvli zero, a2, e16, mf2, ta, ma2421; CHECK-NEXT: vlsseg5e16.v v7, (a0), a1, v0.t2422; CHECK-NEXT: ret2423entry:2424 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vlsseg5.mask.triscv.vector.tuple_nxv4i8_5t.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) poison, ptr %base, i32 %offset, <vscale x 2 x i1> %mask, i32 %vl, i32 1, i32 4)2425 %1 = 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) %0, i32 1)2426 ret <vscale x 2 x half> %12427}2428 2429define <vscale x 4 x half> @test_vlsseg5_nxv4f16_triscv.vector.tuple_nxv8i8_5t(ptr %base, i32 %offset, i32 %vl) {2430; CHECK-LABEL: test_vlsseg5_nxv4f16_triscv.vector.tuple_nxv8i8_5t:2431; CHECK: # %bb.0: # %entry2432; CHECK-NEXT: vsetvli zero, a2, e16, m1, ta, ma2433; CHECK-NEXT: vlsseg5e16.v v7, (a0), a12434; CHECK-NEXT: ret2435entry:2436 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vlsseg5.triscv.vector.tuple_nxv8i8_5t(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) poison, ptr %base, i32 %offset, i32 %vl, i32 4)2437 %1 = 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) %0, i32 1)2438 ret <vscale x 4 x half> %12439}2440 2441define <vscale x 4 x half> @test_vlsseg5_mask_nxv4f16_triscv.vector.tuple_nxv8i8_5t(ptr %base, i32 %offset, i32 %vl, <vscale x 4 x i1> %mask) {2442; CHECK-LABEL: test_vlsseg5_mask_nxv4f16_triscv.vector.tuple_nxv8i8_5t:2443; CHECK: # %bb.0: # %entry2444; CHECK-NEXT: vsetvli zero, a2, e16, m1, ta, ma2445; CHECK-NEXT: vlsseg5e16.v v7, (a0), a1, v0.t2446; CHECK-NEXT: ret2447entry:2448 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vlsseg5.mask.triscv.vector.tuple_nxv8i8_5t.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) poison, ptr %base, i32 %offset, <vscale x 4 x i1> %mask, i32 %vl, i32 1, i32 4)2449 %1 = 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) %0, i32 1)2450 ret <vscale x 4 x half> %12451}2452 2453define <vscale x 1 x half> @test_vlsseg6_nxv1f16_triscv.vector.tuple_nxv2i8_6t(ptr %base, i32 %offset, i32 %vl) {2454; CHECK-LABEL: test_vlsseg6_nxv1f16_triscv.vector.tuple_nxv2i8_6t:2455; CHECK: # %bb.0: # %entry2456; CHECK-NEXT: vsetvli zero, a2, e16, mf4, ta, ma2457; CHECK-NEXT: vlsseg6e16.v v7, (a0), a12458; CHECK-NEXT: ret2459entry:2460 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 6) @llvm.riscv.vlsseg6.triscv.vector.tuple_nxv2i8_6t(target("riscv.vector.tuple", <vscale x 2 x i8>, 6) poison, ptr %base, i32 %offset, i32 %vl, i32 4)2461 %1 = 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) %0, i32 1)2462 ret <vscale x 1 x half> %12463}2464 2465define <vscale x 1 x half> @test_vlsseg6_mask_nxv1f16_triscv.vector.tuple_nxv2i8_6t(ptr %base, i32 %offset, i32 %vl, <vscale x 1 x i1> %mask) {2466; CHECK-LABEL: test_vlsseg6_mask_nxv1f16_triscv.vector.tuple_nxv2i8_6t:2467; CHECK: # %bb.0: # %entry2468; CHECK-NEXT: vsetvli zero, a2, e16, mf4, ta, ma2469; CHECK-NEXT: vlsseg6e16.v v7, (a0), a1, v0.t2470; CHECK-NEXT: ret2471entry:2472 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 6) @llvm.riscv.vlsseg6.mask.triscv.vector.tuple_nxv2i8_6t.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 6) poison, ptr %base, i32 %offset, <vscale x 1 x i1> %mask, i32 %vl, i32 1, i32 4)2473 %1 = 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) %0, i32 1)2474 ret <vscale x 1 x half> %12475}2476 2477define <vscale x 2 x half> @test_vlsseg6_nxv2f16_triscv.vector.tuple_nxv4i8_6t(ptr %base, i32 %offset, i32 %vl) {2478; CHECK-LABEL: test_vlsseg6_nxv2f16_triscv.vector.tuple_nxv4i8_6t:2479; CHECK: # %bb.0: # %entry2480; CHECK-NEXT: vsetvli zero, a2, e16, mf2, ta, ma2481; CHECK-NEXT: vlsseg6e16.v v7, (a0), a12482; CHECK-NEXT: ret2483entry:2484 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vlsseg6.triscv.vector.tuple_nxv4i8_6t(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) poison, ptr %base, i32 %offset, i32 %vl, i32 4)2485 %1 = 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) %0, i32 1)2486 ret <vscale x 2 x half> %12487}2488 2489define <vscale x 2 x half> @test_vlsseg6_mask_nxv2f16_triscv.vector.tuple_nxv4i8_6t(ptr %base, i32 %offset, i32 %vl, <vscale x 2 x i1> %mask) {2490; CHECK-LABEL: test_vlsseg6_mask_nxv2f16_triscv.vector.tuple_nxv4i8_6t:2491; CHECK: # %bb.0: # %entry2492; CHECK-NEXT: vsetvli zero, a2, e16, mf2, ta, ma2493; CHECK-NEXT: vlsseg6e16.v v7, (a0), a1, v0.t2494; CHECK-NEXT: ret2495entry:2496 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vlsseg6.mask.triscv.vector.tuple_nxv4i8_6t.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) poison, ptr %base, i32 %offset, <vscale x 2 x i1> %mask, i32 %vl, i32 1, i32 4)2497 %1 = 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) %0, i32 1)2498 ret <vscale x 2 x half> %12499}2500 2501define <vscale x 4 x half> @test_vlsseg6_nxv4f16_triscv.vector.tuple_nxv8i8_6t(ptr %base, i32 %offset, i32 %vl) {2502; CHECK-LABEL: test_vlsseg6_nxv4f16_triscv.vector.tuple_nxv8i8_6t:2503; CHECK: # %bb.0: # %entry2504; CHECK-NEXT: vsetvli zero, a2, e16, m1, ta, ma2505; CHECK-NEXT: vlsseg6e16.v v7, (a0), a12506; CHECK-NEXT: ret2507entry:2508 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vlsseg6.triscv.vector.tuple_nxv8i8_6t(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) poison, ptr %base, i32 %offset, i32 %vl, i32 4)2509 %1 = 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) %0, i32 1)2510 ret <vscale x 4 x half> %12511}2512 2513define <vscale x 4 x half> @test_vlsseg6_mask_nxv4f16_triscv.vector.tuple_nxv8i8_6t(ptr %base, i32 %offset, i32 %vl, <vscale x 4 x i1> %mask) {2514; CHECK-LABEL: test_vlsseg6_mask_nxv4f16_triscv.vector.tuple_nxv8i8_6t:2515; CHECK: # %bb.0: # %entry2516; CHECK-NEXT: vsetvli zero, a2, e16, m1, ta, ma2517; CHECK-NEXT: vlsseg6e16.v v7, (a0), a1, v0.t2518; CHECK-NEXT: ret2519entry:2520 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vlsseg6.mask.triscv.vector.tuple_nxv8i8_6t.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) poison, ptr %base, i32 %offset, <vscale x 4 x i1> %mask, i32 %vl, i32 1, i32 4)2521 %1 = 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) %0, i32 1)2522 ret <vscale x 4 x half> %12523}2524 2525define <vscale x 1 x half> @test_vlsseg7_nxv1f16_triscv.vector.tuple_nxv2i8_7t(ptr %base, i32 %offset, i32 %vl) {2526; CHECK-LABEL: test_vlsseg7_nxv1f16_triscv.vector.tuple_nxv2i8_7t:2527; CHECK: # %bb.0: # %entry2528; CHECK-NEXT: vsetvli zero, a2, e16, mf4, ta, ma2529; CHECK-NEXT: vlsseg7e16.v v7, (a0), a12530; CHECK-NEXT: ret2531entry:2532 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 7) @llvm.riscv.vlsseg7.triscv.vector.tuple_nxv2i8_7t(target("riscv.vector.tuple", <vscale x 2 x i8>, 7) poison, ptr %base, i32 %offset, i32 %vl, i32 4)2533 %1 = 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) %0, i32 1)2534 ret <vscale x 1 x half> %12535}2536 2537define <vscale x 1 x half> @test_vlsseg7_mask_nxv1f16_triscv.vector.tuple_nxv2i8_7t(ptr %base, i32 %offset, i32 %vl, <vscale x 1 x i1> %mask) {2538; CHECK-LABEL: test_vlsseg7_mask_nxv1f16_triscv.vector.tuple_nxv2i8_7t:2539; CHECK: # %bb.0: # %entry2540; CHECK-NEXT: vsetvli zero, a2, e16, mf4, ta, ma2541; CHECK-NEXT: vlsseg7e16.v v7, (a0), a1, v0.t2542; CHECK-NEXT: ret2543entry:2544 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 7) @llvm.riscv.vlsseg7.mask.triscv.vector.tuple_nxv2i8_7t.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 7) poison, ptr %base, i32 %offset, <vscale x 1 x i1> %mask, i32 %vl, i32 1, i32 4)2545 %1 = 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) %0, i32 1)2546 ret <vscale x 1 x half> %12547}2548 2549define <vscale x 2 x half> @test_vlsseg7_nxv2f16_triscv.vector.tuple_nxv4i8_7t(ptr %base, i32 %offset, i32 %vl) {2550; CHECK-LABEL: test_vlsseg7_nxv2f16_triscv.vector.tuple_nxv4i8_7t:2551; CHECK: # %bb.0: # %entry2552; CHECK-NEXT: vsetvli zero, a2, e16, mf2, ta, ma2553; CHECK-NEXT: vlsseg7e16.v v7, (a0), a12554; CHECK-NEXT: ret2555entry:2556 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vlsseg7.triscv.vector.tuple_nxv4i8_7t(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) poison, ptr %base, i32 %offset, i32 %vl, i32 4)2557 %1 = 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) %0, i32 1)2558 ret <vscale x 2 x half> %12559}2560 2561define <vscale x 2 x half> @test_vlsseg7_mask_nxv2f16_triscv.vector.tuple_nxv4i8_7t(ptr %base, i32 %offset, i32 %vl, <vscale x 2 x i1> %mask) {2562; CHECK-LABEL: test_vlsseg7_mask_nxv2f16_triscv.vector.tuple_nxv4i8_7t:2563; CHECK: # %bb.0: # %entry2564; CHECK-NEXT: vsetvli zero, a2, e16, mf2, ta, ma2565; CHECK-NEXT: vlsseg7e16.v v7, (a0), a1, v0.t2566; CHECK-NEXT: ret2567entry:2568 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vlsseg7.mask.triscv.vector.tuple_nxv4i8_7t.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) poison, ptr %base, i32 %offset, <vscale x 2 x i1> %mask, i32 %vl, i32 1, i32 4)2569 %1 = 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) %0, i32 1)2570 ret <vscale x 2 x half> %12571}2572 2573define <vscale x 4 x half> @test_vlsseg7_nxv4f16_triscv.vector.tuple_nxv8i8_7t(ptr %base, i32 %offset, i32 %vl) {2574; CHECK-LABEL: test_vlsseg7_nxv4f16_triscv.vector.tuple_nxv8i8_7t:2575; CHECK: # %bb.0: # %entry2576; CHECK-NEXT: vsetvli zero, a2, e16, m1, ta, ma2577; CHECK-NEXT: vlsseg7e16.v v7, (a0), a12578; CHECK-NEXT: ret2579entry:2580 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vlsseg7.triscv.vector.tuple_nxv8i8_7t(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) poison, ptr %base, i32 %offset, i32 %vl, i32 4)2581 %1 = 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) %0, i32 1)2582 ret <vscale x 4 x half> %12583}2584 2585define <vscale x 4 x half> @test_vlsseg7_mask_nxv4f16_triscv.vector.tuple_nxv8i8_7t(ptr %base, i32 %offset, i32 %vl, <vscale x 4 x i1> %mask) {2586; CHECK-LABEL: test_vlsseg7_mask_nxv4f16_triscv.vector.tuple_nxv8i8_7t:2587; CHECK: # %bb.0: # %entry2588; CHECK-NEXT: vsetvli zero, a2, e16, m1, ta, ma2589; CHECK-NEXT: vlsseg7e16.v v7, (a0), a1, v0.t2590; CHECK-NEXT: ret2591entry:2592 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vlsseg7.mask.triscv.vector.tuple_nxv8i8_7t.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) poison, ptr %base, i32 %offset, <vscale x 4 x i1> %mask, i32 %vl, i32 1, i32 4)2593 %1 = 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) %0, i32 1)2594 ret <vscale x 4 x half> %12595}2596 2597define <vscale x 1 x half> @test_vlsseg8_nxv1f16_triscv.vector.tuple_nxv2i8_8t(ptr %base, i32 %offset, i32 %vl) {2598; CHECK-LABEL: test_vlsseg8_nxv1f16_triscv.vector.tuple_nxv2i8_8t:2599; CHECK: # %bb.0: # %entry2600; CHECK-NEXT: vsetvli zero, a2, e16, mf4, ta, ma2601; CHECK-NEXT: vlsseg8e16.v v7, (a0), a12602; CHECK-NEXT: ret2603entry:2604 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 8) @llvm.riscv.vlsseg8.triscv.vector.tuple_nxv2i8_8t(target("riscv.vector.tuple", <vscale x 2 x i8>, 8) poison, ptr %base, i32 %offset, i32 %vl, i32 4)2605 %1 = 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) %0, i32 1)2606 ret <vscale x 1 x half> %12607}2608 2609define <vscale x 1 x half> @test_vlsseg8_mask_nxv1f16_triscv.vector.tuple_nxv2i8_8t(ptr %base, i32 %offset, i32 %vl, <vscale x 1 x i1> %mask) {2610; CHECK-LABEL: test_vlsseg8_mask_nxv1f16_triscv.vector.tuple_nxv2i8_8t:2611; CHECK: # %bb.0: # %entry2612; CHECK-NEXT: vsetvli zero, a2, e16, mf4, ta, ma2613; CHECK-NEXT: vlsseg8e16.v v7, (a0), a1, v0.t2614; CHECK-NEXT: ret2615entry:2616 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 8) @llvm.riscv.vlsseg8.mask.triscv.vector.tuple_nxv2i8_8t.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 8) poison, ptr %base, i32 %offset, <vscale x 1 x i1> %mask, i32 %vl, i32 1, i32 4)2617 %1 = 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) %0, i32 1)2618 ret <vscale x 1 x half> %12619}2620 2621define <vscale x 2 x half> @test_vlsseg8_nxv2f16_triscv.vector.tuple_nxv4i8_8t(ptr %base, i32 %offset, i32 %vl) {2622; CHECK-LABEL: test_vlsseg8_nxv2f16_triscv.vector.tuple_nxv4i8_8t:2623; CHECK: # %bb.0: # %entry2624; CHECK-NEXT: vsetvli zero, a2, e16, mf2, ta, ma2625; CHECK-NEXT: vlsseg8e16.v v7, (a0), a12626; CHECK-NEXT: ret2627entry:2628 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vlsseg8.triscv.vector.tuple_nxv4i8_8t(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) poison, ptr %base, i32 %offset, i32 %vl, i32 4)2629 %1 = 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) %0, i32 1)2630 ret <vscale x 2 x half> %12631}2632 2633define <vscale x 2 x half> @test_vlsseg8_mask_nxv2f16_triscv.vector.tuple_nxv4i8_8t(ptr %base, i32 %offset, i32 %vl, <vscale x 2 x i1> %mask) {2634; CHECK-LABEL: test_vlsseg8_mask_nxv2f16_triscv.vector.tuple_nxv4i8_8t:2635; CHECK: # %bb.0: # %entry2636; CHECK-NEXT: vsetvli zero, a2, e16, mf2, ta, ma2637; CHECK-NEXT: vlsseg8e16.v v7, (a0), a1, v0.t2638; CHECK-NEXT: ret2639entry:2640 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vlsseg8.mask.triscv.vector.tuple_nxv4i8_8t.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) poison, ptr %base, i32 %offset, <vscale x 2 x i1> %mask, i32 %vl, i32 1, i32 4)2641 %1 = 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) %0, i32 1)2642 ret <vscale x 2 x half> %12643}2644 2645define <vscale x 4 x half> @test_vlsseg8_nxv4f16_triscv.vector.tuple_nxv8i8_8t(ptr %base, i32 %offset, i32 %vl) {2646; CHECK-LABEL: test_vlsseg8_nxv4f16_triscv.vector.tuple_nxv8i8_8t:2647; CHECK: # %bb.0: # %entry2648; CHECK-NEXT: vsetvli zero, a2, e16, m1, ta, ma2649; CHECK-NEXT: vlsseg8e16.v v7, (a0), a12650; CHECK-NEXT: ret2651entry:2652 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vlsseg8.triscv.vector.tuple_nxv8i8_8t(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) poison, ptr %base, i32 %offset, i32 %vl, i32 4)2653 %1 = 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) %0, i32 1)2654 ret <vscale x 4 x half> %12655}2656 2657define <vscale x 4 x half> @test_vlsseg8_mask_nxv4f16_triscv.vector.tuple_nxv8i8_8t(ptr %base, i32 %offset, i32 %vl, <vscale x 4 x i1> %mask) {2658; CHECK-LABEL: test_vlsseg8_mask_nxv4f16_triscv.vector.tuple_nxv8i8_8t:2659; CHECK: # %bb.0: # %entry2660; CHECK-NEXT: vsetvli zero, a2, e16, m1, ta, ma2661; CHECK-NEXT: vlsseg8e16.v v7, (a0), a1, v0.t2662; CHECK-NEXT: ret2663entry:2664 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vlsseg8.mask.triscv.vector.tuple_nxv8i8_8t.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) poison, ptr %base, i32 %offset, <vscale x 4 x i1> %mask, i32 %vl, i32 1, i32 4)2665 %1 = 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) %0, i32 1)2666 ret <vscale x 4 x half> %12667}2668 2669define <vscale x 1 x float> @test_vlsseg2_nxv1f32_triscv.vector.tuple_nxv4i8_2t(ptr %base, i32 %offset, i32 %vl) {2670; CHECK-LABEL: test_vlsseg2_nxv1f32_triscv.vector.tuple_nxv4i8_2t:2671; CHECK: # %bb.0: # %entry2672; CHECK-NEXT: vsetvli zero, a2, e32, mf2, ta, ma2673; CHECK-NEXT: vlsseg2e32.v v7, (a0), a12674; CHECK-NEXT: ret2675entry:2676 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vlsseg2.triscv.vector.tuple_nxv4i8_2t(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) poison, ptr %base, i32 %offset, i32 %vl, i32 5)2677 %1 = 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) %0, i32 1)2678 ret <vscale x 1 x float> %12679}2680 2681define <vscale x 1 x float> @test_vlsseg2_mask_nxv1f32_triscv.vector.tuple_nxv4i8_2t(ptr %base, i32 %offset, i32 %vl, <vscale x 1 x i1> %mask) {2682; CHECK-LABEL: test_vlsseg2_mask_nxv1f32_triscv.vector.tuple_nxv4i8_2t:2683; CHECK: # %bb.0: # %entry2684; CHECK-NEXT: vsetvli zero, a2, e32, mf2, ta, ma2685; CHECK-NEXT: vlsseg2e32.v v7, (a0), a1, v0.t2686; CHECK-NEXT: ret2687entry:2688 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv4i8_2t.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) poison, ptr %base, i32 %offset, <vscale x 1 x i1> %mask, i32 %vl, i32 1, i32 5)2689 %1 = 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) %0, i32 1)2690 ret <vscale x 1 x float> %12691}2692 2693define <vscale x 2 x float> @test_vlsseg2_nxv2f32_triscv.vector.tuple_nxv8i8_2t(ptr %base, i32 %offset, i32 %vl) {2694; CHECK-LABEL: test_vlsseg2_nxv2f32_triscv.vector.tuple_nxv8i8_2t:2695; CHECK: # %bb.0: # %entry2696; CHECK-NEXT: vsetvli zero, a2, e32, m1, ta, ma2697; CHECK-NEXT: vlsseg2e32.v v7, (a0), a12698; CHECK-NEXT: ret2699entry:2700 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vlsseg2.triscv.vector.tuple_nxv8i8_2t(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) poison, ptr %base, i32 %offset, i32 %vl, i32 5)2701 %1 = 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) %0, i32 1)2702 ret <vscale x 2 x float> %12703}2704 2705define <vscale x 2 x float> @test_vlsseg2_mask_nxv2f32_triscv.vector.tuple_nxv8i8_2t(ptr %base, i32 %offset, i32 %vl, <vscale x 2 x i1> %mask) {2706; CHECK-LABEL: test_vlsseg2_mask_nxv2f32_triscv.vector.tuple_nxv8i8_2t:2707; CHECK: # %bb.0: # %entry2708; CHECK-NEXT: vsetvli zero, a2, e32, m1, ta, ma2709; CHECK-NEXT: vlsseg2e32.v v7, (a0), a1, v0.t2710; CHECK-NEXT: ret2711entry:2712 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv8i8_2t.nxv2i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) poison, ptr %base, i32 %offset, <vscale x 2 x i1> %mask, i32 %vl, i32 1, i32 5)2713 %1 = 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) %0, i32 1)2714 ret <vscale x 2 x float> %12715}2716 2717define <vscale x 4 x float> @test_vlsseg2_nxv4f32_triscv.vector.tuple_nxv16i8_2t(ptr %base, i32 %offset, i32 %vl) {2718; CHECK-LABEL: test_vlsseg2_nxv4f32_triscv.vector.tuple_nxv16i8_2t:2719; CHECK: # %bb.0: # %entry2720; CHECK-NEXT: vsetvli zero, a2, e32, m2, ta, ma2721; CHECK-NEXT: vlsseg2e32.v v6, (a0), a12722; CHECK-NEXT: ret2723entry:2724 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vlsseg2.triscv.vector.tuple_nxv16i8_2t(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) poison, ptr %base, i32 %offset, i32 %vl, i32 5)2725 %1 = 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) %0, i32 1)2726 ret <vscale x 4 x float> %12727}2728 2729define <vscale x 4 x float> @test_vlsseg2_mask_nxv4f32_triscv.vector.tuple_nxv16i8_2t(ptr %base, i32 %offset, i32 %vl, <vscale x 4 x i1> %mask) {2730; CHECK-LABEL: test_vlsseg2_mask_nxv4f32_triscv.vector.tuple_nxv16i8_2t:2731; CHECK: # %bb.0: # %entry2732; CHECK-NEXT: vsetvli zero, a2, e32, m2, ta, ma2733; CHECK-NEXT: vlsseg2e32.v v6, (a0), a1, v0.t2734; CHECK-NEXT: ret2735entry:2736 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv16i8_2t.nxv4i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) poison, ptr %base, i32 %offset, <vscale x 4 x i1> %mask, i32 %vl, i32 1, i32 5)2737 %1 = 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) %0, i32 1)2738 ret <vscale x 4 x float> %12739}2740 2741define <vscale x 8 x float> @test_vlsseg2_nxv8f32_triscv.vector.tuple_nxv32i8_2t(ptr %base, i32 %offset, i32 %vl) {2742; CHECK-LABEL: test_vlsseg2_nxv8f32_triscv.vector.tuple_nxv32i8_2t:2743; CHECK: # %bb.0: # %entry2744; CHECK-NEXT: vsetvli zero, a2, e32, m4, ta, ma2745; CHECK-NEXT: vlsseg2e32.v v4, (a0), a12746; CHECK-NEXT: ret2747entry:2748 %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vlsseg2.triscv.vector.tuple_nxv32i8_2t(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) poison, ptr %base, i32 %offset, i32 %vl, i32 5)2749 %1 = 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) %0, i32 1)2750 ret <vscale x 8 x float> %12751}2752 2753define <vscale x 8 x float> @test_vlsseg2_mask_nxv8f32_triscv.vector.tuple_nxv32i8_2t(ptr %base, i32 %offset, i32 %vl, <vscale x 8 x i1> %mask) {2754; CHECK-LABEL: test_vlsseg2_mask_nxv8f32_triscv.vector.tuple_nxv32i8_2t:2755; CHECK: # %bb.0: # %entry2756; CHECK-NEXT: vsetvli zero, a2, e32, m4, ta, ma2757; CHECK-NEXT: vlsseg2e32.v v4, (a0), a1, v0.t2758; CHECK-NEXT: ret2759entry:2760 %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv32i8_2t.nxv8i1(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) poison, ptr %base, i32 %offset, <vscale x 8 x i1> %mask, i32 %vl, i32 1, i32 5)2761 %1 = 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) %0, i32 1)2762 ret <vscale x 8 x float> %12763}2764 2765define <vscale x 1 x float> @test_vlsseg3_nxv1f32_triscv.vector.tuple_nxv4i8_3t(ptr %base, i32 %offset, i32 %vl) {2766; CHECK-LABEL: test_vlsseg3_nxv1f32_triscv.vector.tuple_nxv4i8_3t:2767; CHECK: # %bb.0: # %entry2768; CHECK-NEXT: vsetvli zero, a2, e32, mf2, ta, ma2769; CHECK-NEXT: vlsseg3e32.v v7, (a0), a12770; CHECK-NEXT: ret2771entry:2772 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vlsseg3.triscv.vector.tuple_nxv4i8_3t(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) poison, ptr %base, i32 %offset, i32 %vl, i32 5)2773 %1 = 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) %0, i32 1)2774 ret <vscale x 1 x float> %12775}2776 2777define <vscale x 1 x float> @test_vlsseg3_mask_nxv1f32_triscv.vector.tuple_nxv4i8_3t(ptr %base, i32 %offset, i32 %vl, <vscale x 1 x i1> %mask) {2778; CHECK-LABEL: test_vlsseg3_mask_nxv1f32_triscv.vector.tuple_nxv4i8_3t:2779; CHECK: # %bb.0: # %entry2780; CHECK-NEXT: vsetvli zero, a2, e32, mf2, ta, ma2781; CHECK-NEXT: vlsseg3e32.v v7, (a0), a1, v0.t2782; CHECK-NEXT: ret2783entry:2784 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vlsseg3.mask.triscv.vector.tuple_nxv4i8_3t.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) poison, ptr %base, i32 %offset, <vscale x 1 x i1> %mask, i32 %vl, i32 1, i32 5)2785 %1 = 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) %0, i32 1)2786 ret <vscale x 1 x float> %12787}2788 2789define <vscale x 2 x float> @test_vlsseg3_nxv2f32_triscv.vector.tuple_nxv8i8_3t(ptr %base, i32 %offset, i32 %vl) {2790; CHECK-LABEL: test_vlsseg3_nxv2f32_triscv.vector.tuple_nxv8i8_3t:2791; CHECK: # %bb.0: # %entry2792; CHECK-NEXT: vsetvli zero, a2, e32, m1, ta, ma2793; CHECK-NEXT: vlsseg3e32.v v7, (a0), a12794; CHECK-NEXT: ret2795entry:2796 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vlsseg3.triscv.vector.tuple_nxv8i8_3t(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) poison, ptr %base, i32 %offset, i32 %vl, i32 5)2797 %1 = 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) %0, i32 1)2798 ret <vscale x 2 x float> %12799}2800 2801define <vscale x 2 x float> @test_vlsseg3_mask_nxv2f32_triscv.vector.tuple_nxv8i8_3t(ptr %base, i32 %offset, i32 %vl, <vscale x 2 x i1> %mask) {2802; CHECK-LABEL: test_vlsseg3_mask_nxv2f32_triscv.vector.tuple_nxv8i8_3t:2803; CHECK: # %bb.0: # %entry2804; CHECK-NEXT: vsetvli zero, a2, e32, m1, ta, ma2805; CHECK-NEXT: vlsseg3e32.v v7, (a0), a1, v0.t2806; CHECK-NEXT: ret2807entry:2808 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vlsseg3.mask.triscv.vector.tuple_nxv8i8_3t.nxv2i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) poison, ptr %base, i32 %offset, <vscale x 2 x i1> %mask, i32 %vl, i32 1, i32 5)2809 %1 = 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) %0, i32 1)2810 ret <vscale x 2 x float> %12811}2812 2813define <vscale x 4 x float> @test_vlsseg3_nxv4f32_triscv.vector.tuple_nxv16i8_3t(ptr %base, i32 %offset, i32 %vl) {2814; CHECK-LABEL: test_vlsseg3_nxv4f32_triscv.vector.tuple_nxv16i8_3t:2815; CHECK: # %bb.0: # %entry2816; CHECK-NEXT: vsetvli zero, a2, e32, m2, ta, ma2817; CHECK-NEXT: vlsseg3e32.v v6, (a0), a12818; CHECK-NEXT: ret2819entry:2820 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vlsseg3.triscv.vector.tuple_nxv16i8_3t(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) poison, ptr %base, i32 %offset, i32 %vl, i32 5)2821 %1 = 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) %0, i32 1)2822 ret <vscale x 4 x float> %12823}2824 2825define <vscale x 4 x float> @test_vlsseg3_mask_nxv4f32_triscv.vector.tuple_nxv16i8_3t(ptr %base, i32 %offset, i32 %vl, <vscale x 4 x i1> %mask) {2826; CHECK-LABEL: test_vlsseg3_mask_nxv4f32_triscv.vector.tuple_nxv16i8_3t:2827; CHECK: # %bb.0: # %entry2828; CHECK-NEXT: vsetvli zero, a2, e32, m2, ta, ma2829; CHECK-NEXT: vlsseg3e32.v v6, (a0), a1, v0.t2830; CHECK-NEXT: ret2831entry:2832 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vlsseg3.mask.triscv.vector.tuple_nxv16i8_3t.nxv4i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) poison, ptr %base, i32 %offset, <vscale x 4 x i1> %mask, i32 %vl, i32 1, i32 5)2833 %1 = 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) %0, i32 1)2834 ret <vscale x 4 x float> %12835}2836 2837define <vscale x 1 x float> @test_vlsseg4_nxv1f32_triscv.vector.tuple_nxv4i8_4t(ptr %base, i32 %offset, i32 %vl) {2838; CHECK-LABEL: test_vlsseg4_nxv1f32_triscv.vector.tuple_nxv4i8_4t:2839; CHECK: # %bb.0: # %entry2840; CHECK-NEXT: vsetvli zero, a2, e32, mf2, ta, ma2841; CHECK-NEXT: vlsseg4e32.v v7, (a0), a12842; CHECK-NEXT: ret2843entry:2844 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vlsseg4.triscv.vector.tuple_nxv4i8_4t(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) poison, ptr %base, i32 %offset, i32 %vl, i32 5)2845 %1 = 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) %0, i32 1)2846 ret <vscale x 1 x float> %12847}2848 2849define <vscale x 1 x float> @test_vlsseg4_mask_nxv1f32_triscv.vector.tuple_nxv4i8_4t(ptr %base, i32 %offset, i32 %vl, <vscale x 1 x i1> %mask) {2850; CHECK-LABEL: test_vlsseg4_mask_nxv1f32_triscv.vector.tuple_nxv4i8_4t:2851; CHECK: # %bb.0: # %entry2852; CHECK-NEXT: vsetvli zero, a2, e32, mf2, ta, ma2853; CHECK-NEXT: vlsseg4e32.v v7, (a0), a1, v0.t2854; CHECK-NEXT: ret2855entry:2856 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vlsseg4.mask.triscv.vector.tuple_nxv4i8_4t.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) poison, ptr %base, i32 %offset, <vscale x 1 x i1> %mask, i32 %vl, i32 1, i32 5)2857 %1 = 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) %0, i32 1)2858 ret <vscale x 1 x float> %12859}2860 2861define <vscale x 2 x float> @test_vlsseg4_nxv2f32_triscv.vector.tuple_nxv8i8_4t(ptr %base, i32 %offset, i32 %vl) {2862; CHECK-LABEL: test_vlsseg4_nxv2f32_triscv.vector.tuple_nxv8i8_4t:2863; CHECK: # %bb.0: # %entry2864; CHECK-NEXT: vsetvli zero, a2, e32, m1, ta, ma2865; CHECK-NEXT: vlsseg4e32.v v7, (a0), a12866; CHECK-NEXT: ret2867entry:2868 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vlsseg4.triscv.vector.tuple_nxv8i8_4t(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) poison, ptr %base, i32 %offset, i32 %vl, i32 5)2869 %1 = 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) %0, i32 1)2870 ret <vscale x 2 x float> %12871}2872 2873define <vscale x 2 x float> @test_vlsseg4_mask_nxv2f32_triscv.vector.tuple_nxv8i8_4t(ptr %base, i32 %offset, i32 %vl, <vscale x 2 x i1> %mask) {2874; CHECK-LABEL: test_vlsseg4_mask_nxv2f32_triscv.vector.tuple_nxv8i8_4t:2875; CHECK: # %bb.0: # %entry2876; CHECK-NEXT: vsetvli zero, a2, e32, m1, ta, ma2877; CHECK-NEXT: vlsseg4e32.v v7, (a0), a1, v0.t2878; CHECK-NEXT: ret2879entry:2880 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vlsseg4.mask.triscv.vector.tuple_nxv8i8_4t.nxv2i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) poison, ptr %base, i32 %offset, <vscale x 2 x i1> %mask, i32 %vl, i32 1, i32 5)2881 %1 = 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) %0, i32 1)2882 ret <vscale x 2 x float> %12883}2884 2885define <vscale x 4 x float> @test_vlsseg4_nxv4f32_triscv.vector.tuple_nxv16i8_4t(ptr %base, i32 %offset, i32 %vl) {2886; CHECK-LABEL: test_vlsseg4_nxv4f32_triscv.vector.tuple_nxv16i8_4t:2887; CHECK: # %bb.0: # %entry2888; CHECK-NEXT: vsetvli zero, a2, e32, m2, ta, ma2889; CHECK-NEXT: vlsseg4e32.v v6, (a0), a12890; CHECK-NEXT: ret2891entry:2892 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vlsseg4.triscv.vector.tuple_nxv16i8_4t(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) poison, ptr %base, i32 %offset, i32 %vl, i32 5)2893 %1 = 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) %0, i32 1)2894 ret <vscale x 4 x float> %12895}2896 2897define <vscale x 4 x float> @test_vlsseg4_mask_nxv4f32_triscv.vector.tuple_nxv16i8_4t(ptr %base, i32 %offset, i32 %vl, <vscale x 4 x i1> %mask) {2898; CHECK-LABEL: test_vlsseg4_mask_nxv4f32_triscv.vector.tuple_nxv16i8_4t:2899; CHECK: # %bb.0: # %entry2900; CHECK-NEXT: vsetvli zero, a2, e32, m2, ta, ma2901; CHECK-NEXT: vlsseg4e32.v v6, (a0), a1, v0.t2902; CHECK-NEXT: ret2903entry:2904 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vlsseg4.mask.triscv.vector.tuple_nxv16i8_4t.nxv4i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) poison, ptr %base, i32 %offset, <vscale x 4 x i1> %mask, i32 %vl, i32 1, i32 5)2905 %1 = 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) %0, i32 1)2906 ret <vscale x 4 x float> %12907}2908 2909define <vscale x 1 x float> @test_vlsseg5_nxv1f32_triscv.vector.tuple_nxv4i8_5t(ptr %base, i32 %offset, i32 %vl) {2910; CHECK-LABEL: test_vlsseg5_nxv1f32_triscv.vector.tuple_nxv4i8_5t:2911; CHECK: # %bb.0: # %entry2912; CHECK-NEXT: vsetvli zero, a2, e32, mf2, ta, ma2913; CHECK-NEXT: vlsseg5e32.v v7, (a0), a12914; CHECK-NEXT: ret2915entry:2916 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vlsseg5.triscv.vector.tuple_nxv4i8_5t(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) poison, ptr %base, i32 %offset, i32 %vl, i32 5)2917 %1 = 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) %0, i32 1)2918 ret <vscale x 1 x float> %12919}2920 2921define <vscale x 1 x float> @test_vlsseg5_mask_nxv1f32_triscv.vector.tuple_nxv4i8_5t(ptr %base, i32 %offset, i32 %vl, <vscale x 1 x i1> %mask) {2922; CHECK-LABEL: test_vlsseg5_mask_nxv1f32_triscv.vector.tuple_nxv4i8_5t:2923; CHECK: # %bb.0: # %entry2924; CHECK-NEXT: vsetvli zero, a2, e32, mf2, ta, ma2925; CHECK-NEXT: vlsseg5e32.v v7, (a0), a1, v0.t2926; CHECK-NEXT: ret2927entry:2928 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vlsseg5.mask.triscv.vector.tuple_nxv4i8_5t.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) poison, ptr %base, i32 %offset, <vscale x 1 x i1> %mask, i32 %vl, i32 1, i32 5)2929 %1 = 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) %0, i32 1)2930 ret <vscale x 1 x float> %12931}2932 2933define <vscale x 2 x float> @test_vlsseg5_nxv2f32_triscv.vector.tuple_nxv8i8_5t(ptr %base, i32 %offset, i32 %vl) {2934; CHECK-LABEL: test_vlsseg5_nxv2f32_triscv.vector.tuple_nxv8i8_5t:2935; CHECK: # %bb.0: # %entry2936; CHECK-NEXT: vsetvli zero, a2, e32, m1, ta, ma2937; CHECK-NEXT: vlsseg5e32.v v7, (a0), a12938; CHECK-NEXT: ret2939entry:2940 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vlsseg5.triscv.vector.tuple_nxv8i8_5t(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) poison, ptr %base, i32 %offset, i32 %vl, i32 5)2941 %1 = 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) %0, i32 1)2942 ret <vscale x 2 x float> %12943}2944 2945define <vscale x 2 x float> @test_vlsseg5_mask_nxv2f32_triscv.vector.tuple_nxv8i8_5t(ptr %base, i32 %offset, i32 %vl, <vscale x 2 x i1> %mask) {2946; CHECK-LABEL: test_vlsseg5_mask_nxv2f32_triscv.vector.tuple_nxv8i8_5t:2947; CHECK: # %bb.0: # %entry2948; CHECK-NEXT: vsetvli zero, a2, e32, m1, ta, ma2949; CHECK-NEXT: vlsseg5e32.v v7, (a0), a1, v0.t2950; CHECK-NEXT: ret2951entry:2952 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vlsseg5.mask.triscv.vector.tuple_nxv8i8_5t.nxv2i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) poison, ptr %base, i32 %offset, <vscale x 2 x i1> %mask, i32 %vl, i32 1, i32 5)2953 %1 = 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) %0, i32 1)2954 ret <vscale x 2 x float> %12955}2956 2957define <vscale x 1 x float> @test_vlsseg6_nxv1f32_triscv.vector.tuple_nxv4i8_6t(ptr %base, i32 %offset, i32 %vl) {2958; CHECK-LABEL: test_vlsseg6_nxv1f32_triscv.vector.tuple_nxv4i8_6t:2959; CHECK: # %bb.0: # %entry2960; CHECK-NEXT: vsetvli zero, a2, e32, mf2, ta, ma2961; CHECK-NEXT: vlsseg6e32.v v7, (a0), a12962; CHECK-NEXT: ret2963entry:2964 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vlsseg6.triscv.vector.tuple_nxv4i8_6t(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) poison, ptr %base, i32 %offset, i32 %vl, i32 5)2965 %1 = 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) %0, i32 1)2966 ret <vscale x 1 x float> %12967}2968 2969define <vscale x 1 x float> @test_vlsseg6_mask_nxv1f32_triscv.vector.tuple_nxv4i8_6t(ptr %base, i32 %offset, i32 %vl, <vscale x 1 x i1> %mask) {2970; CHECK-LABEL: test_vlsseg6_mask_nxv1f32_triscv.vector.tuple_nxv4i8_6t:2971; CHECK: # %bb.0: # %entry2972; CHECK-NEXT: vsetvli zero, a2, e32, mf2, ta, ma2973; CHECK-NEXT: vlsseg6e32.v v7, (a0), a1, v0.t2974; CHECK-NEXT: ret2975entry:2976 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vlsseg6.mask.triscv.vector.tuple_nxv4i8_6t.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) poison, ptr %base, i32 %offset, <vscale x 1 x i1> %mask, i32 %vl, i32 1, i32 5)2977 %1 = 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) %0, i32 1)2978 ret <vscale x 1 x float> %12979}2980 2981define <vscale x 2 x float> @test_vlsseg6_nxv2f32_triscv.vector.tuple_nxv8i8_6t(ptr %base, i32 %offset, i32 %vl) {2982; CHECK-LABEL: test_vlsseg6_nxv2f32_triscv.vector.tuple_nxv8i8_6t:2983; CHECK: # %bb.0: # %entry2984; CHECK-NEXT: vsetvli zero, a2, e32, m1, ta, ma2985; CHECK-NEXT: vlsseg6e32.v v7, (a0), a12986; CHECK-NEXT: ret2987entry:2988 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vlsseg6.triscv.vector.tuple_nxv8i8_6t(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) poison, ptr %base, i32 %offset, i32 %vl, i32 5)2989 %1 = 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) %0, i32 1)2990 ret <vscale x 2 x float> %12991}2992 2993define <vscale x 2 x float> @test_vlsseg6_mask_nxv2f32_triscv.vector.tuple_nxv8i8_6t(ptr %base, i32 %offset, i32 %vl, <vscale x 2 x i1> %mask) {2994; CHECK-LABEL: test_vlsseg6_mask_nxv2f32_triscv.vector.tuple_nxv8i8_6t:2995; CHECK: # %bb.0: # %entry2996; CHECK-NEXT: vsetvli zero, a2, e32, m1, ta, ma2997; CHECK-NEXT: vlsseg6e32.v v7, (a0), a1, v0.t2998; CHECK-NEXT: ret2999entry:3000 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vlsseg6.mask.triscv.vector.tuple_nxv8i8_6t.nxv2i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) poison, ptr %base, i32 %offset, <vscale x 2 x i1> %mask, i32 %vl, i32 1, i32 5)3001 %1 = 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) %0, i32 1)3002 ret <vscale x 2 x float> %13003}3004 3005define <vscale x 1 x float> @test_vlsseg7_nxv1f32_triscv.vector.tuple_nxv4i8_7t(ptr %base, i32 %offset, i32 %vl) {3006; CHECK-LABEL: test_vlsseg7_nxv1f32_triscv.vector.tuple_nxv4i8_7t:3007; CHECK: # %bb.0: # %entry3008; CHECK-NEXT: vsetvli zero, a2, e32, mf2, ta, ma3009; CHECK-NEXT: vlsseg7e32.v v7, (a0), a13010; CHECK-NEXT: ret3011entry:3012 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vlsseg7.triscv.vector.tuple_nxv4i8_7t(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) poison, ptr %base, i32 %offset, i32 %vl, i32 5)3013 %1 = 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) %0, i32 1)3014 ret <vscale x 1 x float> %13015}3016 3017define <vscale x 1 x float> @test_vlsseg7_mask_nxv1f32_triscv.vector.tuple_nxv4i8_7t(ptr %base, i32 %offset, i32 %vl, <vscale x 1 x i1> %mask) {3018; CHECK-LABEL: test_vlsseg7_mask_nxv1f32_triscv.vector.tuple_nxv4i8_7t:3019; CHECK: # %bb.0: # %entry3020; CHECK-NEXT: vsetvli zero, a2, e32, mf2, ta, ma3021; CHECK-NEXT: vlsseg7e32.v v7, (a0), a1, v0.t3022; CHECK-NEXT: ret3023entry:3024 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vlsseg7.mask.triscv.vector.tuple_nxv4i8_7t.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) poison, ptr %base, i32 %offset, <vscale x 1 x i1> %mask, i32 %vl, i32 1, i32 5)3025 %1 = 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) %0, i32 1)3026 ret <vscale x 1 x float> %13027}3028 3029define <vscale x 2 x float> @test_vlsseg7_nxv2f32_triscv.vector.tuple_nxv8i8_7t(ptr %base, i32 %offset, i32 %vl) {3030; CHECK-LABEL: test_vlsseg7_nxv2f32_triscv.vector.tuple_nxv8i8_7t:3031; CHECK: # %bb.0: # %entry3032; CHECK-NEXT: vsetvli zero, a2, e32, m1, ta, ma3033; CHECK-NEXT: vlsseg7e32.v v7, (a0), a13034; CHECK-NEXT: ret3035entry:3036 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vlsseg7.triscv.vector.tuple_nxv8i8_7t(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) poison, ptr %base, i32 %offset, i32 %vl, i32 5)3037 %1 = 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) %0, i32 1)3038 ret <vscale x 2 x float> %13039}3040 3041define <vscale x 2 x float> @test_vlsseg7_mask_nxv2f32_triscv.vector.tuple_nxv8i8_7t(ptr %base, i32 %offset, i32 %vl, <vscale x 2 x i1> %mask) {3042; CHECK-LABEL: test_vlsseg7_mask_nxv2f32_triscv.vector.tuple_nxv8i8_7t:3043; CHECK: # %bb.0: # %entry3044; CHECK-NEXT: vsetvli zero, a2, e32, m1, ta, ma3045; CHECK-NEXT: vlsseg7e32.v v7, (a0), a1, v0.t3046; CHECK-NEXT: ret3047entry:3048 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vlsseg7.mask.triscv.vector.tuple_nxv8i8_7t.nxv2i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) poison, ptr %base, i32 %offset, <vscale x 2 x i1> %mask, i32 %vl, i32 1, i32 5)3049 %1 = 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) %0, i32 1)3050 ret <vscale x 2 x float> %13051}3052 3053define <vscale x 1 x float> @test_vlsseg8_nxv1f32_triscv.vector.tuple_nxv4i8_8t(ptr %base, i32 %offset, i32 %vl) {3054; CHECK-LABEL: test_vlsseg8_nxv1f32_triscv.vector.tuple_nxv4i8_8t:3055; CHECK: # %bb.0: # %entry3056; CHECK-NEXT: vsetvli zero, a2, e32, mf2, ta, ma3057; CHECK-NEXT: vlsseg8e32.v v7, (a0), a13058; CHECK-NEXT: ret3059entry:3060 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vlsseg8.triscv.vector.tuple_nxv4i8_8t(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) poison, ptr %base, i32 %offset, i32 %vl, i32 5)3061 %1 = 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) %0, i32 1)3062 ret <vscale x 1 x float> %13063}3064 3065define <vscale x 1 x float> @test_vlsseg8_mask_nxv1f32_triscv.vector.tuple_nxv4i8_8t(ptr %base, i32 %offset, i32 %vl, <vscale x 1 x i1> %mask) {3066; CHECK-LABEL: test_vlsseg8_mask_nxv1f32_triscv.vector.tuple_nxv4i8_8t:3067; CHECK: # %bb.0: # %entry3068; CHECK-NEXT: vsetvli zero, a2, e32, mf2, ta, ma3069; CHECK-NEXT: vlsseg8e32.v v7, (a0), a1, v0.t3070; CHECK-NEXT: ret3071entry:3072 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vlsseg8.mask.triscv.vector.tuple_nxv4i8_8t.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) poison, ptr %base, i32 %offset, <vscale x 1 x i1> %mask, i32 %vl, i32 1, i32 5)3073 %1 = 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) %0, i32 1)3074 ret <vscale x 1 x float> %13075}3076 3077define <vscale x 2 x float> @test_vlsseg8_nxv2f32_triscv.vector.tuple_nxv8i8_8t(ptr %base, i32 %offset, i32 %vl) {3078; CHECK-LABEL: test_vlsseg8_nxv2f32_triscv.vector.tuple_nxv8i8_8t:3079; CHECK: # %bb.0: # %entry3080; CHECK-NEXT: vsetvli zero, a2, e32, m1, ta, ma3081; CHECK-NEXT: vlsseg8e32.v v7, (a0), a13082; CHECK-NEXT: ret3083entry:3084 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vlsseg8.triscv.vector.tuple_nxv8i8_8t(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) poison, ptr %base, i32 %offset, i32 %vl, i32 5)3085 %1 = 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) %0, i32 1)3086 ret <vscale x 2 x float> %13087}3088 3089define <vscale x 2 x float> @test_vlsseg8_mask_nxv2f32_triscv.vector.tuple_nxv8i8_8t(ptr %base, i32 %offset, i32 %vl, <vscale x 2 x i1> %mask) {3090; CHECK-LABEL: test_vlsseg8_mask_nxv2f32_triscv.vector.tuple_nxv8i8_8t:3091; CHECK: # %bb.0: # %entry3092; CHECK-NEXT: vsetvli zero, a2, e32, m1, ta, ma3093; CHECK-NEXT: vlsseg8e32.v v7, (a0), a1, v0.t3094; CHECK-NEXT: ret3095entry:3096 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vlsseg8.mask.triscv.vector.tuple_nxv8i8_8t.nxv2i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) poison, ptr %base, i32 %offset, <vscale x 2 x i1> %mask, i32 %vl, i32 1, i32 5)3097 %1 = 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) %0, i32 1)3098 ret <vscale x 2 x float> %13099}3100 3101define <vscale x 1 x double> @test_vlsseg2_nxv1f64_triscv.vector.tuple_nxv8i8_2t(ptr %base, i32 %offset, i32 %vl) {3102; CHECK-LABEL: test_vlsseg2_nxv1f64_triscv.vector.tuple_nxv8i8_2t:3103; CHECK: # %bb.0: # %entry3104; CHECK-NEXT: vsetvli zero, a2, e64, m1, ta, ma3105; CHECK-NEXT: vlsseg2e64.v v7, (a0), a13106; CHECK-NEXT: ret3107entry:3108 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vlsseg2.triscv.vector.tuple_nxv8i8_2t(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) poison, ptr %base, i32 %offset, i32 %vl, i32 6)3109 %1 = 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) %0, i32 1)3110 ret <vscale x 1 x double> %13111}3112 3113define <vscale x 1 x double> @test_vlsseg2_mask_nxv1f64_triscv.vector.tuple_nxv8i8_2t(ptr %base, i32 %offset, i32 %vl, <vscale x 1 x i1> %mask) {3114; CHECK-LABEL: test_vlsseg2_mask_nxv1f64_triscv.vector.tuple_nxv8i8_2t:3115; CHECK: # %bb.0: # %entry3116; CHECK-NEXT: vsetvli zero, a2, e64, m1, ta, ma3117; CHECK-NEXT: vlsseg2e64.v v7, (a0), a1, v0.t3118; CHECK-NEXT: ret3119entry:3120 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv8i8_2t.nxv1i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) poison, ptr %base, i32 %offset, <vscale x 1 x i1> %mask, i32 %vl, i32 1, i32 6)3121 %1 = 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) %0, i32 1)3122 ret <vscale x 1 x double> %13123}3124 3125define <vscale x 2 x double> @test_vlsseg2_nxv2f64_triscv.vector.tuple_nxv16i8_2t(ptr %base, i32 %offset, i32 %vl) {3126; CHECK-LABEL: test_vlsseg2_nxv2f64_triscv.vector.tuple_nxv16i8_2t:3127; CHECK: # %bb.0: # %entry3128; CHECK-NEXT: vsetvli zero, a2, e64, m2, ta, ma3129; CHECK-NEXT: vlsseg2e64.v v6, (a0), a13130; CHECK-NEXT: ret3131entry:3132 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vlsseg2.triscv.vector.tuple_nxv16i8_2t(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) poison, ptr %base, i32 %offset, i32 %vl, i32 6)3133 %1 = 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) %0, i32 1)3134 ret <vscale x 2 x double> %13135}3136 3137define <vscale x 2 x double> @test_vlsseg2_mask_nxv2f64_triscv.vector.tuple_nxv16i8_2t(ptr %base, i32 %offset, i32 %vl, <vscale x 2 x i1> %mask) {3138; CHECK-LABEL: test_vlsseg2_mask_nxv2f64_triscv.vector.tuple_nxv16i8_2t:3139; CHECK: # %bb.0: # %entry3140; CHECK-NEXT: vsetvli zero, a2, e64, m2, ta, ma3141; CHECK-NEXT: vlsseg2e64.v v6, (a0), a1, v0.t3142; CHECK-NEXT: ret3143entry:3144 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv16i8_2t.nxv2i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) poison, ptr %base, i32 %offset, <vscale x 2 x i1> %mask, i32 %vl, i32 1, i32 6)3145 %1 = 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) %0, i32 1)3146 ret <vscale x 2 x double> %13147}3148 3149define <vscale x 4 x double> @test_vlsseg2_nxv4f64_triscv.vector.tuple_nxv32i8_2t(ptr %base, i32 %offset, i32 %vl) {3150; CHECK-LABEL: test_vlsseg2_nxv4f64_triscv.vector.tuple_nxv32i8_2t:3151; CHECK: # %bb.0: # %entry3152; CHECK-NEXT: vsetvli zero, a2, e64, m4, ta, ma3153; CHECK-NEXT: vlsseg2e64.v v4, (a0), a13154; CHECK-NEXT: ret3155entry:3156 %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vlsseg2.triscv.vector.tuple_nxv32i8_2t(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) poison, ptr %base, i32 %offset, i32 %vl, i32 6)3157 %1 = 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) %0, i32 1)3158 ret <vscale x 4 x double> %13159}3160 3161define <vscale x 4 x double> @test_vlsseg2_mask_nxv4f64_triscv.vector.tuple_nxv32i8_2t(ptr %base, i32 %offset, i32 %vl, <vscale x 4 x i1> %mask) {3162; CHECK-LABEL: test_vlsseg2_mask_nxv4f64_triscv.vector.tuple_nxv32i8_2t:3163; CHECK: # %bb.0: # %entry3164; CHECK-NEXT: vsetvli zero, a2, e64, m4, ta, ma3165; CHECK-NEXT: vlsseg2e64.v v4, (a0), a1, v0.t3166; CHECK-NEXT: ret3167entry:3168 %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv32i8_2t.nxv4i1(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) poison, ptr %base, i32 %offset, <vscale x 4 x i1> %mask, i32 %vl, i32 1, i32 6)3169 %1 = 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) %0, i32 1)3170 ret <vscale x 4 x double> %13171}3172 3173define <vscale x 1 x double> @test_vlsseg3_nxv1f64_triscv.vector.tuple_nxv8i8_3t(ptr %base, i32 %offset, i32 %vl) {3174; CHECK-LABEL: test_vlsseg3_nxv1f64_triscv.vector.tuple_nxv8i8_3t:3175; CHECK: # %bb.0: # %entry3176; CHECK-NEXT: vsetvli zero, a2, e64, m1, ta, ma3177; CHECK-NEXT: vlsseg3e64.v v7, (a0), a13178; CHECK-NEXT: ret3179entry:3180 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vlsseg3.triscv.vector.tuple_nxv8i8_3t(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) poison, ptr %base, i32 %offset, i32 %vl, i32 6)3181 %1 = 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) %0, i32 1)3182 ret <vscale x 1 x double> %13183}3184 3185define <vscale x 1 x double> @test_vlsseg3_mask_nxv1f64_triscv.vector.tuple_nxv8i8_3t(ptr %base, i32 %offset, i32 %vl, <vscale x 1 x i1> %mask) {3186; CHECK-LABEL: test_vlsseg3_mask_nxv1f64_triscv.vector.tuple_nxv8i8_3t:3187; CHECK: # %bb.0: # %entry3188; CHECK-NEXT: vsetvli zero, a2, e64, m1, ta, ma3189; CHECK-NEXT: vlsseg3e64.v v7, (a0), a1, v0.t3190; CHECK-NEXT: ret3191entry:3192 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vlsseg3.mask.triscv.vector.tuple_nxv8i8_3t.nxv1i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) poison, ptr %base, i32 %offset, <vscale x 1 x i1> %mask, i32 %vl, i32 1, i32 6)3193 %1 = 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) %0, i32 1)3194 ret <vscale x 1 x double> %13195}3196 3197define <vscale x 2 x double> @test_vlsseg3_nxv2f64_triscv.vector.tuple_nxv16i8_3t(ptr %base, i32 %offset, i32 %vl) {3198; CHECK-LABEL: test_vlsseg3_nxv2f64_triscv.vector.tuple_nxv16i8_3t:3199; CHECK: # %bb.0: # %entry3200; CHECK-NEXT: vsetvli zero, a2, e64, m2, ta, ma3201; CHECK-NEXT: vlsseg3e64.v v6, (a0), a13202; CHECK-NEXT: ret3203entry:3204 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vlsseg3.triscv.vector.tuple_nxv16i8_3t(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) poison, ptr %base, i32 %offset, i32 %vl, i32 6)3205 %1 = 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) %0, i32 1)3206 ret <vscale x 2 x double> %13207}3208 3209define <vscale x 2 x double> @test_vlsseg3_mask_nxv2f64_triscv.vector.tuple_nxv16i8_3t(ptr %base, i32 %offset, i32 %vl, <vscale x 2 x i1> %mask) {3210; CHECK-LABEL: test_vlsseg3_mask_nxv2f64_triscv.vector.tuple_nxv16i8_3t:3211; CHECK: # %bb.0: # %entry3212; CHECK-NEXT: vsetvli zero, a2, e64, m2, ta, ma3213; CHECK-NEXT: vlsseg3e64.v v6, (a0), a1, v0.t3214; CHECK-NEXT: ret3215entry:3216 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vlsseg3.mask.triscv.vector.tuple_nxv16i8_3t.nxv2i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) poison, ptr %base, i32 %offset, <vscale x 2 x i1> %mask, i32 %vl, i32 1, i32 6)3217 %1 = 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) %0, i32 1)3218 ret <vscale x 2 x double> %13219}3220 3221define <vscale x 1 x double> @test_vlsseg4_nxv1f64_triscv.vector.tuple_nxv8i8_4t(ptr %base, i32 %offset, i32 %vl) {3222; CHECK-LABEL: test_vlsseg4_nxv1f64_triscv.vector.tuple_nxv8i8_4t:3223; CHECK: # %bb.0: # %entry3224; CHECK-NEXT: vsetvli zero, a2, e64, m1, ta, ma3225; CHECK-NEXT: vlsseg4e64.v v7, (a0), a13226; CHECK-NEXT: ret3227entry:3228 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vlsseg4.triscv.vector.tuple_nxv8i8_4t(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) poison, ptr %base, i32 %offset, i32 %vl, i32 6)3229 %1 = 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) %0, i32 1)3230 ret <vscale x 1 x double> %13231}3232 3233define <vscale x 1 x double> @test_vlsseg4_mask_nxv1f64_triscv.vector.tuple_nxv8i8_4t(ptr %base, i32 %offset, i32 %vl, <vscale x 1 x i1> %mask) {3234; CHECK-LABEL: test_vlsseg4_mask_nxv1f64_triscv.vector.tuple_nxv8i8_4t:3235; CHECK: # %bb.0: # %entry3236; CHECK-NEXT: vsetvli zero, a2, e64, m1, ta, ma3237; CHECK-NEXT: vlsseg4e64.v v7, (a0), a1, v0.t3238; CHECK-NEXT: ret3239entry:3240 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vlsseg4.mask.triscv.vector.tuple_nxv8i8_4t.nxv1i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) poison, ptr %base, i32 %offset, <vscale x 1 x i1> %mask, i32 %vl, i32 1, i32 6)3241 %1 = 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) %0, i32 1)3242 ret <vscale x 1 x double> %13243}3244 3245define <vscale x 2 x double> @test_vlsseg4_nxv2f64_triscv.vector.tuple_nxv16i8_4t(ptr %base, i32 %offset, i32 %vl) {3246; CHECK-LABEL: test_vlsseg4_nxv2f64_triscv.vector.tuple_nxv16i8_4t:3247; CHECK: # %bb.0: # %entry3248; CHECK-NEXT: vsetvli zero, a2, e64, m2, ta, ma3249; CHECK-NEXT: vlsseg4e64.v v6, (a0), a13250; CHECK-NEXT: ret3251entry:3252 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vlsseg4.triscv.vector.tuple_nxv16i8_4t(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) poison, ptr %base, i32 %offset, i32 %vl, i32 6)3253 %1 = 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) %0, i32 1)3254 ret <vscale x 2 x double> %13255}3256 3257define <vscale x 2 x double> @test_vlsseg4_mask_nxv2f64_triscv.vector.tuple_nxv16i8_4t(ptr %base, i32 %offset, i32 %vl, <vscale x 2 x i1> %mask) {3258; CHECK-LABEL: test_vlsseg4_mask_nxv2f64_triscv.vector.tuple_nxv16i8_4t:3259; CHECK: # %bb.0: # %entry3260; CHECK-NEXT: vsetvli zero, a2, e64, m2, ta, ma3261; CHECK-NEXT: vlsseg4e64.v v6, (a0), a1, v0.t3262; CHECK-NEXT: ret3263entry:3264 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vlsseg4.mask.triscv.vector.tuple_nxv16i8_4t.nxv2i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) poison, ptr %base, i32 %offset, <vscale x 2 x i1> %mask, i32 %vl, i32 1, i32 6)3265 %1 = 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) %0, i32 1)3266 ret <vscale x 2 x double> %13267}3268 3269define <vscale x 1 x double> @test_vlsseg5_nxv1f64_triscv.vector.tuple_nxv8i8_5t(ptr %base, i32 %offset, i32 %vl) {3270; CHECK-LABEL: test_vlsseg5_nxv1f64_triscv.vector.tuple_nxv8i8_5t:3271; CHECK: # %bb.0: # %entry3272; CHECK-NEXT: vsetvli zero, a2, e64, m1, ta, ma3273; CHECK-NEXT: vlsseg5e64.v v7, (a0), a13274; CHECK-NEXT: ret3275entry:3276 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vlsseg5.triscv.vector.tuple_nxv8i8_5t(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) poison, ptr %base, i32 %offset, i32 %vl, i32 6)3277 %1 = 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) %0, i32 1)3278 ret <vscale x 1 x double> %13279}3280 3281define <vscale x 1 x double> @test_vlsseg5_mask_nxv1f64_triscv.vector.tuple_nxv8i8_5t(ptr %base, i32 %offset, i32 %vl, <vscale x 1 x i1> %mask) {3282; CHECK-LABEL: test_vlsseg5_mask_nxv1f64_triscv.vector.tuple_nxv8i8_5t:3283; CHECK: # %bb.0: # %entry3284; CHECK-NEXT: vsetvli zero, a2, e64, m1, ta, ma3285; CHECK-NEXT: vlsseg5e64.v v7, (a0), a1, v0.t3286; CHECK-NEXT: ret3287entry:3288 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vlsseg5.mask.triscv.vector.tuple_nxv8i8_5t.nxv1i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) poison, ptr %base, i32 %offset, <vscale x 1 x i1> %mask, i32 %vl, i32 1, i32 6)3289 %1 = 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) %0, i32 1)3290 ret <vscale x 1 x double> %13291}3292 3293define <vscale x 1 x double> @test_vlsseg6_nxv1f64_triscv.vector.tuple_nxv8i8_6t(ptr %base, i32 %offset, i32 %vl) {3294; CHECK-LABEL: test_vlsseg6_nxv1f64_triscv.vector.tuple_nxv8i8_6t:3295; CHECK: # %bb.0: # %entry3296; CHECK-NEXT: vsetvli zero, a2, e64, m1, ta, ma3297; CHECK-NEXT: vlsseg6e64.v v7, (a0), a13298; CHECK-NEXT: ret3299entry:3300 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vlsseg6.triscv.vector.tuple_nxv8i8_6t(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) poison, ptr %base, i32 %offset, i32 %vl, i32 6)3301 %1 = 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) %0, i32 1)3302 ret <vscale x 1 x double> %13303}3304 3305define <vscale x 1 x double> @test_vlsseg6_mask_nxv1f64_triscv.vector.tuple_nxv8i8_6t(ptr %base, i32 %offset, i32 %vl, <vscale x 1 x i1> %mask) {3306; CHECK-LABEL: test_vlsseg6_mask_nxv1f64_triscv.vector.tuple_nxv8i8_6t:3307; CHECK: # %bb.0: # %entry3308; CHECK-NEXT: vsetvli zero, a2, e64, m1, ta, ma3309; CHECK-NEXT: vlsseg6e64.v v7, (a0), a1, v0.t3310; CHECK-NEXT: ret3311entry:3312 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vlsseg6.mask.triscv.vector.tuple_nxv8i8_6t.nxv1i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) poison, ptr %base, i32 %offset, <vscale x 1 x i1> %mask, i32 %vl, i32 1, i32 6)3313 %1 = 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) %0, i32 1)3314 ret <vscale x 1 x double> %13315}3316 3317define <vscale x 1 x double> @test_vlsseg7_nxv1f64_triscv.vector.tuple_nxv8i8_7t(ptr %base, i32 %offset, i32 %vl) {3318; CHECK-LABEL: test_vlsseg7_nxv1f64_triscv.vector.tuple_nxv8i8_7t:3319; CHECK: # %bb.0: # %entry3320; CHECK-NEXT: vsetvli zero, a2, e64, m1, ta, ma3321; CHECK-NEXT: vlsseg7e64.v v7, (a0), a13322; CHECK-NEXT: ret3323entry:3324 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vlsseg7.triscv.vector.tuple_nxv8i8_7t(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) poison, ptr %base, i32 %offset, i32 %vl, i32 6)3325 %1 = 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) %0, i32 1)3326 ret <vscale x 1 x double> %13327}3328 3329define <vscale x 1 x double> @test_vlsseg7_mask_nxv1f64_triscv.vector.tuple_nxv8i8_7t(ptr %base, i32 %offset, i32 %vl, <vscale x 1 x i1> %mask) {3330; CHECK-LABEL: test_vlsseg7_mask_nxv1f64_triscv.vector.tuple_nxv8i8_7t:3331; CHECK: # %bb.0: # %entry3332; CHECK-NEXT: vsetvli zero, a2, e64, m1, ta, ma3333; CHECK-NEXT: vlsseg7e64.v v7, (a0), a1, v0.t3334; CHECK-NEXT: ret3335entry:3336 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vlsseg7.mask.triscv.vector.tuple_nxv8i8_7t.nxv1i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) poison, ptr %base, i32 %offset, <vscale x 1 x i1> %mask, i32 %vl, i32 1, i32 6)3337 %1 = 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) %0, i32 1)3338 ret <vscale x 1 x double> %13339}3340 3341define <vscale x 1 x double> @test_vlsseg8_nxv1f64_triscv.vector.tuple_nxv8i8_8t(ptr %base, i32 %offset, i32 %vl) {3342; CHECK-LABEL: test_vlsseg8_nxv1f64_triscv.vector.tuple_nxv8i8_8t:3343; CHECK: # %bb.0: # %entry3344; CHECK-NEXT: vsetvli zero, a2, e64, m1, ta, ma3345; CHECK-NEXT: vlsseg8e64.v v7, (a0), a13346; CHECK-NEXT: ret3347entry:3348 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vlsseg8.triscv.vector.tuple_nxv8i8_8t(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) poison, ptr %base, i32 %offset, i32 %vl, i32 6)3349 %1 = 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) %0, i32 1)3350 ret <vscale x 1 x double> %13351}3352 3353define <vscale x 1 x double> @test_vlsseg8_mask_nxv1f64_triscv.vector.tuple_nxv8i8_8t(ptr %base, i32 %offset, i32 %vl, <vscale x 1 x i1> %mask) {3354; CHECK-LABEL: test_vlsseg8_mask_nxv1f64_triscv.vector.tuple_nxv8i8_8t:3355; CHECK: # %bb.0: # %entry3356; CHECK-NEXT: vsetvli zero, a2, e64, m1, ta, ma3357; CHECK-NEXT: vlsseg8e64.v v7, (a0), a1, v0.t3358; CHECK-NEXT: ret3359entry:3360 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vlsseg8.mask.triscv.vector.tuple_nxv8i8_8t.nxv1i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) poison, ptr %base, i32 %offset, <vscale x 1 x i1> %mask, i32 %vl, i32 1, i32 6)3361 %1 = 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) %0, i32 1)3362 ret <vscale x 1 x double> %13363}3364 3365define <vscale x 1 x bfloat> @test_vlsseg2_nxv1bf16_triscv.vector.tuple_nxv2i8_2t(ptr %base, i32 %offset, i32 %vl) {3366; CHECK-LABEL: test_vlsseg2_nxv1bf16_triscv.vector.tuple_nxv2i8_2t:3367; CHECK: # %bb.0: # %entry3368; CHECK-NEXT: vsetvli zero, a2, e16, mf4, ta, ma3369; CHECK-NEXT: vlsseg2e16.v v7, (a0), a13370; CHECK-NEXT: ret3371entry:3372 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 2) @llvm.riscv.vlsseg2.triscv.vector.tuple_nxv2i8_2t(target("riscv.vector.tuple", <vscale x 2 x i8>, 2) poison, ptr %base, i32 %offset, i32 %vl, i32 4)3373 %1 = 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) %0, i32 1)3374 ret <vscale x 1 x bfloat> %13375}3376 3377define <vscale x 1 x bfloat> @test_vlsseg2_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_2t(ptr %base, i32 %offset, i32 %vl, <vscale x 1 x i1> %mask) {3378; CHECK-LABEL: test_vlsseg2_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_2t:3379; CHECK: # %bb.0: # %entry3380; CHECK-NEXT: vsetvli zero, a2, e16, mf4, ta, ma3381; CHECK-NEXT: vlsseg2e16.v v7, (a0), a1, v0.t3382; CHECK-NEXT: ret3383entry:3384 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv2i8_2t.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 2) poison, ptr %base, i32 %offset, <vscale x 1 x i1> %mask, i32 %vl, i32 1, i32 4)3385 %1 = 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) %0, i32 1)3386 ret <vscale x 1 x bfloat> %13387}3388 3389define <vscale x 2 x bfloat> @test_vlsseg2_nxv2bf16_triscv.vector.tuple_nxv4i8_2t(ptr %base, i32 %offset, i32 %vl) {3390; CHECK-LABEL: test_vlsseg2_nxv2bf16_triscv.vector.tuple_nxv4i8_2t:3391; CHECK: # %bb.0: # %entry3392; CHECK-NEXT: vsetvli zero, a2, e16, mf2, ta, ma3393; CHECK-NEXT: vlsseg2e16.v v7, (a0), a13394; CHECK-NEXT: ret3395entry:3396 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vlsseg2.triscv.vector.tuple_nxv4i8_2t(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) poison, ptr %base, i32 %offset, i32 %vl, i32 4)3397 %1 = 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) %0, i32 1)3398 ret <vscale x 2 x bfloat> %13399}3400 3401define <vscale x 2 x bfloat> @test_vlsseg2_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_2t(ptr %base, i32 %offset, i32 %vl, <vscale x 2 x i1> %mask) {3402; CHECK-LABEL: test_vlsseg2_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_2t:3403; CHECK: # %bb.0: # %entry3404; CHECK-NEXT: vsetvli zero, a2, e16, mf2, ta, ma3405; CHECK-NEXT: vlsseg2e16.v v7, (a0), a1, v0.t3406; CHECK-NEXT: ret3407entry:3408 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv4i8_2t.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) poison, ptr %base, i32 %offset, <vscale x 2 x i1> %mask, i32 %vl, i32 1, i32 4)3409 %1 = 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) %0, i32 1)3410 ret <vscale x 2 x bfloat> %13411}3412 3413define <vscale x 4 x bfloat> @test_vlsseg2_nxv4bf16_triscv.vector.tuple_nxv8i8_2t(ptr %base, i32 %offset, i32 %vl) {3414; CHECK-LABEL: test_vlsseg2_nxv4bf16_triscv.vector.tuple_nxv8i8_2t:3415; CHECK: # %bb.0: # %entry3416; CHECK-NEXT: vsetvli zero, a2, e16, m1, ta, ma3417; CHECK-NEXT: vlsseg2e16.v v7, (a0), a13418; CHECK-NEXT: ret3419entry:3420 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vlsseg2.triscv.vector.tuple_nxv8i8_2t(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) poison, ptr %base, i32 %offset, i32 %vl, i32 4)3421 %1 = 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) %0, i32 1)3422 ret <vscale x 4 x bfloat> %13423}3424 3425define <vscale x 4 x bfloat> @test_vlsseg2_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_2t(ptr %base, i32 %offset, i32 %vl, <vscale x 4 x i1> %mask) {3426; CHECK-LABEL: test_vlsseg2_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_2t:3427; CHECK: # %bb.0: # %entry3428; CHECK-NEXT: vsetvli zero, a2, e16, m1, ta, ma3429; CHECK-NEXT: vlsseg2e16.v v7, (a0), a1, v0.t3430; CHECK-NEXT: ret3431entry:3432 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv8i8_2t.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) poison, ptr %base, i32 %offset, <vscale x 4 x i1> %mask, i32 %vl, i32 1, i32 4)3433 %1 = 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) %0, i32 1)3434 ret <vscale x 4 x bfloat> %13435}3436 3437define <vscale x 8 x bfloat> @test_vlsseg2_nxv8bf16_triscv.vector.tuple_nxv16i8_2t(ptr %base, i32 %offset, i32 %vl) {3438; CHECK-LABEL: test_vlsseg2_nxv8bf16_triscv.vector.tuple_nxv16i8_2t:3439; CHECK: # %bb.0: # %entry3440; CHECK-NEXT: vsetvli zero, a2, e16, m2, ta, ma3441; CHECK-NEXT: vlsseg2e16.v v6, (a0), a13442; CHECK-NEXT: ret3443entry:3444 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vlsseg2.triscv.vector.tuple_nxv16i8_2t(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) poison, ptr %base, i32 %offset, i32 %vl, i32 4)3445 %1 = 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) %0, i32 1)3446 ret <vscale x 8 x bfloat> %13447}3448 3449define <vscale x 8 x bfloat> @test_vlsseg2_mask_nxv8bf16_triscv.vector.tuple_nxv16i8_2t(ptr %base, i32 %offset, i32 %vl, <vscale x 8 x i1> %mask) {3450; CHECK-LABEL: test_vlsseg2_mask_nxv8bf16_triscv.vector.tuple_nxv16i8_2t:3451; CHECK: # %bb.0: # %entry3452; CHECK-NEXT: vsetvli zero, a2, e16, m2, ta, ma3453; CHECK-NEXT: vlsseg2e16.v v6, (a0), a1, v0.t3454; CHECK-NEXT: ret3455entry:3456 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv16i8_2t.nxv8i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) poison, ptr %base, i32 %offset, <vscale x 8 x i1> %mask, i32 %vl, i32 1, i32 4)3457 %1 = 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) %0, i32 1)3458 ret <vscale x 8 x bfloat> %13459}3460 3461define <vscale x 16 x bfloat> @test_vlsseg2_nxv16bf16_triscv.vector.tuple_nxv32i8_2t(ptr %base, i32 %offset, i32 %vl) {3462; CHECK-LABEL: test_vlsseg2_nxv16bf16_triscv.vector.tuple_nxv32i8_2t:3463; CHECK: # %bb.0: # %entry3464; CHECK-NEXT: vsetvli zero, a2, e16, m4, ta, ma3465; CHECK-NEXT: vlsseg2e16.v v4, (a0), a13466; CHECK-NEXT: ret3467entry:3468 %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vlsseg2.triscv.vector.tuple_nxv32i8_2t(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) poison, ptr %base, i32 %offset, i32 %vl, i32 4)3469 %1 = 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) %0, i32 1)3470 ret <vscale x 16 x bfloat> %13471}3472 3473define <vscale x 16 x bfloat> @test_vlsseg2_mask_nxv16bf16_triscv.vector.tuple_nxv32i8_2t(ptr %base, i32 %offset, i32 %vl, <vscale x 16 x i1> %mask) {3474; CHECK-LABEL: test_vlsseg2_mask_nxv16bf16_triscv.vector.tuple_nxv32i8_2t:3475; CHECK: # %bb.0: # %entry3476; CHECK-NEXT: vsetvli zero, a2, e16, m4, ta, ma3477; CHECK-NEXT: vlsseg2e16.v v4, (a0), a1, v0.t3478; CHECK-NEXT: ret3479entry:3480 %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv32i8_2t.nxv16i1(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) poison, ptr %base, i32 %offset, <vscale x 16 x i1> %mask, i32 %vl, i32 1, i32 4)3481 %1 = 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) %0, i32 1)3482 ret <vscale x 16 x bfloat> %13483}3484 3485define <vscale x 1 x bfloat> @test_vlsseg3_nxv1bf16_triscv.vector.tuple_nxv2i8_3t(ptr %base, i32 %offset, i32 %vl) {3486; CHECK-LABEL: test_vlsseg3_nxv1bf16_triscv.vector.tuple_nxv2i8_3t:3487; CHECK: # %bb.0: # %entry3488; CHECK-NEXT: vsetvli zero, a2, e16, mf4, ta, ma3489; CHECK-NEXT: vlsseg3e16.v v7, (a0), a13490; CHECK-NEXT: ret3491entry:3492 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 3) @llvm.riscv.vlsseg3.triscv.vector.tuple_nxv2i8_3t(target("riscv.vector.tuple", <vscale x 2 x i8>, 3) poison, ptr %base, i32 %offset, i32 %vl, i32 4)3493 %1 = 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) %0, i32 1)3494 ret <vscale x 1 x bfloat> %13495}3496 3497define <vscale x 1 x bfloat> @test_vlsseg3_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_3t(ptr %base, i32 %offset, i32 %vl, <vscale x 1 x i1> %mask) {3498; CHECK-LABEL: test_vlsseg3_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_3t:3499; CHECK: # %bb.0: # %entry3500; CHECK-NEXT: vsetvli zero, a2, e16, mf4, ta, ma3501; CHECK-NEXT: vlsseg3e16.v v7, (a0), a1, v0.t3502; CHECK-NEXT: ret3503entry:3504 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 3) @llvm.riscv.vlsseg3.mask.triscv.vector.tuple_nxv2i8_3t.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 3) poison, ptr %base, i32 %offset, <vscale x 1 x i1> %mask, i32 %vl, i32 1, i32 4)3505 %1 = 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) %0, i32 1)3506 ret <vscale x 1 x bfloat> %13507}3508 3509define <vscale x 2 x bfloat> @test_vlsseg3_nxv2bf16_triscv.vector.tuple_nxv4i8_3t(ptr %base, i32 %offset, i32 %vl) {3510; CHECK-LABEL: test_vlsseg3_nxv2bf16_triscv.vector.tuple_nxv4i8_3t:3511; CHECK: # %bb.0: # %entry3512; CHECK-NEXT: vsetvli zero, a2, e16, mf2, ta, ma3513; CHECK-NEXT: vlsseg3e16.v v7, (a0), a13514; CHECK-NEXT: ret3515entry:3516 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vlsseg3.triscv.vector.tuple_nxv4i8_3t(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) poison, ptr %base, i32 %offset, i32 %vl, i32 4)3517 %1 = 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) %0, i32 1)3518 ret <vscale x 2 x bfloat> %13519}3520 3521define <vscale x 2 x bfloat> @test_vlsseg3_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_3t(ptr %base, i32 %offset, i32 %vl, <vscale x 2 x i1> %mask) {3522; CHECK-LABEL: test_vlsseg3_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_3t:3523; CHECK: # %bb.0: # %entry3524; CHECK-NEXT: vsetvli zero, a2, e16, mf2, ta, ma3525; CHECK-NEXT: vlsseg3e16.v v7, (a0), a1, v0.t3526; CHECK-NEXT: ret3527entry:3528 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vlsseg3.mask.triscv.vector.tuple_nxv4i8_3t.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) poison, ptr %base, i32 %offset, <vscale x 2 x i1> %mask, i32 %vl, i32 1, i32 4)3529 %1 = 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) %0, i32 1)3530 ret <vscale x 2 x bfloat> %13531}3532 3533define <vscale x 4 x bfloat> @test_vlsseg3_nxv4bf16_triscv.vector.tuple_nxv8i8_3t(ptr %base, i32 %offset, i32 %vl) {3534; CHECK-LABEL: test_vlsseg3_nxv4bf16_triscv.vector.tuple_nxv8i8_3t:3535; CHECK: # %bb.0: # %entry3536; CHECK-NEXT: vsetvli zero, a2, e16, m1, ta, ma3537; CHECK-NEXT: vlsseg3e16.v v7, (a0), a13538; CHECK-NEXT: ret3539entry:3540 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vlsseg3.triscv.vector.tuple_nxv8i8_3t(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) poison, ptr %base, i32 %offset, i32 %vl, i32 4)3541 %1 = 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) %0, i32 1)3542 ret <vscale x 4 x bfloat> %13543}3544 3545define <vscale x 4 x bfloat> @test_vlsseg3_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_3t(ptr %base, i32 %offset, i32 %vl, <vscale x 4 x i1> %mask) {3546; CHECK-LABEL: test_vlsseg3_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_3t:3547; CHECK: # %bb.0: # %entry3548; CHECK-NEXT: vsetvli zero, a2, e16, m1, ta, ma3549; CHECK-NEXT: vlsseg3e16.v v7, (a0), a1, v0.t3550; CHECK-NEXT: ret3551entry:3552 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vlsseg3.mask.triscv.vector.tuple_nxv8i8_3t.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) poison, ptr %base, i32 %offset, <vscale x 4 x i1> %mask, i32 %vl, i32 1, i32 4)3553 %1 = 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) %0, i32 1)3554 ret <vscale x 4 x bfloat> %13555}3556 3557define <vscale x 8 x bfloat> @test_vlsseg3_nxv8bf16_triscv.vector.tuple_nxv16i8_3t(ptr %base, i32 %offset, i32 %vl) {3558; CHECK-LABEL: test_vlsseg3_nxv8bf16_triscv.vector.tuple_nxv16i8_3t:3559; CHECK: # %bb.0: # %entry3560; CHECK-NEXT: vsetvli zero, a2, e16, m2, ta, ma3561; CHECK-NEXT: vlsseg3e16.v v6, (a0), a13562; CHECK-NEXT: ret3563entry:3564 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vlsseg3.triscv.vector.tuple_nxv16i8_3t(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) poison, ptr %base, i32 %offset, i32 %vl, i32 4)3565 %1 = 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) %0, i32 1)3566 ret <vscale x 8 x bfloat> %13567}3568 3569define <vscale x 8 x bfloat> @test_vlsseg3_mask_nxv8bf16_triscv.vector.tuple_nxv16i8_3t(ptr %base, i32 %offset, i32 %vl, <vscale x 8 x i1> %mask) {3570; CHECK-LABEL: test_vlsseg3_mask_nxv8bf16_triscv.vector.tuple_nxv16i8_3t:3571; CHECK: # %bb.0: # %entry3572; CHECK-NEXT: vsetvli zero, a2, e16, m2, ta, ma3573; CHECK-NEXT: vlsseg3e16.v v6, (a0), a1, v0.t3574; CHECK-NEXT: ret3575entry:3576 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vlsseg3.mask.triscv.vector.tuple_nxv16i8_3t.nxv8i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) poison, ptr %base, i32 %offset, <vscale x 8 x i1> %mask, i32 %vl, i32 1, i32 4)3577 %1 = 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) %0, i32 1)3578 ret <vscale x 8 x bfloat> %13579}3580 3581define <vscale x 1 x bfloat> @test_vlsseg4_nxv1bf16_triscv.vector.tuple_nxv2i8_4t(ptr %base, i32 %offset, i32 %vl) {3582; CHECK-LABEL: test_vlsseg4_nxv1bf16_triscv.vector.tuple_nxv2i8_4t:3583; CHECK: # %bb.0: # %entry3584; CHECK-NEXT: vsetvli zero, a2, e16, mf4, ta, ma3585; CHECK-NEXT: vlsseg4e16.v v7, (a0), a13586; CHECK-NEXT: ret3587entry:3588 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 4) @llvm.riscv.vlsseg4.triscv.vector.tuple_nxv2i8_4t(target("riscv.vector.tuple", <vscale x 2 x i8>, 4) poison, ptr %base, i32 %offset, i32 %vl, i32 4)3589 %1 = 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) %0, i32 1)3590 ret <vscale x 1 x bfloat> %13591}3592 3593define <vscale x 1 x bfloat> @test_vlsseg4_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_4t(ptr %base, i32 %offset, i32 %vl, <vscale x 1 x i1> %mask) {3594; CHECK-LABEL: test_vlsseg4_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_4t:3595; CHECK: # %bb.0: # %entry3596; CHECK-NEXT: vsetvli zero, a2, e16, mf4, ta, ma3597; CHECK-NEXT: vlsseg4e16.v v7, (a0), a1, v0.t3598; CHECK-NEXT: ret3599entry:3600 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 4) @llvm.riscv.vlsseg4.mask.triscv.vector.tuple_nxv2i8_4t.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 4) poison, ptr %base, i32 %offset, <vscale x 1 x i1> %mask, i32 %vl, i32 1, i32 4)3601 %1 = 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) %0, i32 1)3602 ret <vscale x 1 x bfloat> %13603}3604 3605define <vscale x 2 x bfloat> @test_vlsseg4_nxv2bf16_triscv.vector.tuple_nxv4i8_4t(ptr %base, i32 %offset, i32 %vl) {3606; CHECK-LABEL: test_vlsseg4_nxv2bf16_triscv.vector.tuple_nxv4i8_4t:3607; CHECK: # %bb.0: # %entry3608; CHECK-NEXT: vsetvli zero, a2, e16, mf2, ta, ma3609; CHECK-NEXT: vlsseg4e16.v v7, (a0), a13610; CHECK-NEXT: ret3611entry:3612 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vlsseg4.triscv.vector.tuple_nxv4i8_4t(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) poison, ptr %base, i32 %offset, i32 %vl, i32 4)3613 %1 = 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) %0, i32 1)3614 ret <vscale x 2 x bfloat> %13615}3616 3617define <vscale x 2 x bfloat> @test_vlsseg4_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_4t(ptr %base, i32 %offset, i32 %vl, <vscale x 2 x i1> %mask) {3618; CHECK-LABEL: test_vlsseg4_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_4t:3619; CHECK: # %bb.0: # %entry3620; CHECK-NEXT: vsetvli zero, a2, e16, mf2, ta, ma3621; CHECK-NEXT: vlsseg4e16.v v7, (a0), a1, v0.t3622; CHECK-NEXT: ret3623entry:3624 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vlsseg4.mask.triscv.vector.tuple_nxv4i8_4t.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) poison, ptr %base, i32 %offset, <vscale x 2 x i1> %mask, i32 %vl, i32 1, i32 4)3625 %1 = 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) %0, i32 1)3626 ret <vscale x 2 x bfloat> %13627}3628 3629define <vscale x 4 x bfloat> @test_vlsseg4_nxv4bf16_triscv.vector.tuple_nxv8i8_4t(ptr %base, i32 %offset, i32 %vl) {3630; CHECK-LABEL: test_vlsseg4_nxv4bf16_triscv.vector.tuple_nxv8i8_4t:3631; CHECK: # %bb.0: # %entry3632; CHECK-NEXT: vsetvli zero, a2, e16, m1, ta, ma3633; CHECK-NEXT: vlsseg4e16.v v7, (a0), a13634; CHECK-NEXT: ret3635entry:3636 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vlsseg4.triscv.vector.tuple_nxv8i8_4t(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) poison, ptr %base, i32 %offset, i32 %vl, i32 4)3637 %1 = 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) %0, i32 1)3638 ret <vscale x 4 x bfloat> %13639}3640 3641define <vscale x 4 x bfloat> @test_vlsseg4_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_4t(ptr %base, i32 %offset, i32 %vl, <vscale x 4 x i1> %mask) {3642; CHECK-LABEL: test_vlsseg4_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_4t:3643; CHECK: # %bb.0: # %entry3644; CHECK-NEXT: vsetvli zero, a2, e16, m1, ta, ma3645; CHECK-NEXT: vlsseg4e16.v v7, (a0), a1, v0.t3646; CHECK-NEXT: ret3647entry:3648 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vlsseg4.mask.triscv.vector.tuple_nxv8i8_4t.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) poison, ptr %base, i32 %offset, <vscale x 4 x i1> %mask, i32 %vl, i32 1, i32 4)3649 %1 = 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) %0, i32 1)3650 ret <vscale x 4 x bfloat> %13651}3652 3653define <vscale x 8 x bfloat> @test_vlsseg4_nxv8bf16_triscv.vector.tuple_nxv16i8_4t(ptr %base, i32 %offset, i32 %vl) {3654; CHECK-LABEL: test_vlsseg4_nxv8bf16_triscv.vector.tuple_nxv16i8_4t:3655; CHECK: # %bb.0: # %entry3656; CHECK-NEXT: vsetvli zero, a2, e16, m2, ta, ma3657; CHECK-NEXT: vlsseg4e16.v v6, (a0), a13658; CHECK-NEXT: ret3659entry:3660 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vlsseg4.triscv.vector.tuple_nxv16i8_4t(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) poison, ptr %base, i32 %offset, i32 %vl, i32 4)3661 %1 = 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) %0, i32 1)3662 ret <vscale x 8 x bfloat> %13663}3664 3665define <vscale x 8 x bfloat> @test_vlsseg4_mask_nxv8bf16_triscv.vector.tuple_nxv16i8_4t(ptr %base, i32 %offset, i32 %vl, <vscale x 8 x i1> %mask) {3666; CHECK-LABEL: test_vlsseg4_mask_nxv8bf16_triscv.vector.tuple_nxv16i8_4t:3667; CHECK: # %bb.0: # %entry3668; CHECK-NEXT: vsetvli zero, a2, e16, m2, ta, ma3669; CHECK-NEXT: vlsseg4e16.v v6, (a0), a1, v0.t3670; CHECK-NEXT: ret3671entry:3672 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vlsseg4.mask.triscv.vector.tuple_nxv16i8_4t.nxv8i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) poison, ptr %base, i32 %offset, <vscale x 8 x i1> %mask, i32 %vl, i32 1, i32 4)3673 %1 = 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) %0, i32 1)3674 ret <vscale x 8 x bfloat> %13675}3676 3677define <vscale x 1 x bfloat> @test_vlsseg5_nxv1bf16_triscv.vector.tuple_nxv2i8_5t(ptr %base, i32 %offset, i32 %vl) {3678; CHECK-LABEL: test_vlsseg5_nxv1bf16_triscv.vector.tuple_nxv2i8_5t:3679; CHECK: # %bb.0: # %entry3680; CHECK-NEXT: vsetvli zero, a2, e16, mf4, ta, ma3681; CHECK-NEXT: vlsseg5e16.v v7, (a0), a13682; CHECK-NEXT: ret3683entry:3684 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 5) @llvm.riscv.vlsseg5.triscv.vector.tuple_nxv2i8_5t(target("riscv.vector.tuple", <vscale x 2 x i8>, 5) poison, ptr %base, i32 %offset, i32 %vl, i32 4)3685 %1 = 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) %0, i32 1)3686 ret <vscale x 1 x bfloat> %13687}3688 3689define <vscale x 1 x bfloat> @test_vlsseg5_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_5t(ptr %base, i32 %offset, i32 %vl, <vscale x 1 x i1> %mask) {3690; CHECK-LABEL: test_vlsseg5_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_5t:3691; CHECK: # %bb.0: # %entry3692; CHECK-NEXT: vsetvli zero, a2, e16, mf4, ta, ma3693; CHECK-NEXT: vlsseg5e16.v v7, (a0), a1, v0.t3694; CHECK-NEXT: ret3695entry:3696 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 5) @llvm.riscv.vlsseg5.mask.triscv.vector.tuple_nxv2i8_5t.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 5) poison, ptr %base, i32 %offset, <vscale x 1 x i1> %mask, i32 %vl, i32 1, i32 4)3697 %1 = 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) %0, i32 1)3698 ret <vscale x 1 x bfloat> %13699}3700 3701define <vscale x 2 x bfloat> @test_vlsseg5_nxv2bf16_triscv.vector.tuple_nxv4i8_5t(ptr %base, i32 %offset, i32 %vl) {3702; CHECK-LABEL: test_vlsseg5_nxv2bf16_triscv.vector.tuple_nxv4i8_5t:3703; CHECK: # %bb.0: # %entry3704; CHECK-NEXT: vsetvli zero, a2, e16, mf2, ta, ma3705; CHECK-NEXT: vlsseg5e16.v v7, (a0), a13706; CHECK-NEXT: ret3707entry:3708 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vlsseg5.triscv.vector.tuple_nxv4i8_5t(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) poison, ptr %base, i32 %offset, i32 %vl, i32 4)3709 %1 = 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) %0, i32 1)3710 ret <vscale x 2 x bfloat> %13711}3712 3713define <vscale x 2 x bfloat> @test_vlsseg5_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_5t(ptr %base, i32 %offset, i32 %vl, <vscale x 2 x i1> %mask) {3714; CHECK-LABEL: test_vlsseg5_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_5t:3715; CHECK: # %bb.0: # %entry3716; CHECK-NEXT: vsetvli zero, a2, e16, mf2, ta, ma3717; CHECK-NEXT: vlsseg5e16.v v7, (a0), a1, v0.t3718; CHECK-NEXT: ret3719entry:3720 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vlsseg5.mask.triscv.vector.tuple_nxv4i8_5t.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) poison, ptr %base, i32 %offset, <vscale x 2 x i1> %mask, i32 %vl, i32 1, i32 4)3721 %1 = 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) %0, i32 1)3722 ret <vscale x 2 x bfloat> %13723}3724 3725define <vscale x 4 x bfloat> @test_vlsseg5_nxv4bf16_triscv.vector.tuple_nxv8i8_5t(ptr %base, i32 %offset, i32 %vl) {3726; CHECK-LABEL: test_vlsseg5_nxv4bf16_triscv.vector.tuple_nxv8i8_5t:3727; CHECK: # %bb.0: # %entry3728; CHECK-NEXT: vsetvli zero, a2, e16, m1, ta, ma3729; CHECK-NEXT: vlsseg5e16.v v7, (a0), a13730; CHECK-NEXT: ret3731entry:3732 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vlsseg5.triscv.vector.tuple_nxv8i8_5t(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) poison, ptr %base, i32 %offset, i32 %vl, i32 4)3733 %1 = 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) %0, i32 1)3734 ret <vscale x 4 x bfloat> %13735}3736 3737define <vscale x 4 x bfloat> @test_vlsseg5_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_5t(ptr %base, i32 %offset, i32 %vl, <vscale x 4 x i1> %mask) {3738; CHECK-LABEL: test_vlsseg5_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_5t:3739; CHECK: # %bb.0: # %entry3740; CHECK-NEXT: vsetvli zero, a2, e16, m1, ta, ma3741; CHECK-NEXT: vlsseg5e16.v v7, (a0), a1, v0.t3742; CHECK-NEXT: ret3743entry:3744 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vlsseg5.mask.triscv.vector.tuple_nxv8i8_5t.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) poison, ptr %base, i32 %offset, <vscale x 4 x i1> %mask, i32 %vl, i32 1, i32 4)3745 %1 = 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) %0, i32 1)3746 ret <vscale x 4 x bfloat> %13747}3748 3749define <vscale x 1 x bfloat> @test_vlsseg6_nxv1bf16_triscv.vector.tuple_nxv2i8_6t(ptr %base, i32 %offset, i32 %vl) {3750; CHECK-LABEL: test_vlsseg6_nxv1bf16_triscv.vector.tuple_nxv2i8_6t:3751; CHECK: # %bb.0: # %entry3752; CHECK-NEXT: vsetvli zero, a2, e16, mf4, ta, ma3753; CHECK-NEXT: vlsseg6e16.v v7, (a0), a13754; CHECK-NEXT: ret3755entry:3756 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 6) @llvm.riscv.vlsseg6.triscv.vector.tuple_nxv2i8_6t(target("riscv.vector.tuple", <vscale x 2 x i8>, 6) poison, ptr %base, i32 %offset, i32 %vl, i32 4)3757 %1 = 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) %0, i32 1)3758 ret <vscale x 1 x bfloat> %13759}3760 3761define <vscale x 1 x bfloat> @test_vlsseg6_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_6t(ptr %base, i32 %offset, i32 %vl, <vscale x 1 x i1> %mask) {3762; CHECK-LABEL: test_vlsseg6_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_6t:3763; CHECK: # %bb.0: # %entry3764; CHECK-NEXT: vsetvli zero, a2, e16, mf4, ta, ma3765; CHECK-NEXT: vlsseg6e16.v v7, (a0), a1, v0.t3766; CHECK-NEXT: ret3767entry:3768 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 6) @llvm.riscv.vlsseg6.mask.triscv.vector.tuple_nxv2i8_6t.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 6) poison, ptr %base, i32 %offset, <vscale x 1 x i1> %mask, i32 %vl, i32 1, i32 4)3769 %1 = 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) %0, i32 1)3770 ret <vscale x 1 x bfloat> %13771}3772 3773define <vscale x 2 x bfloat> @test_vlsseg6_nxv2bf16_triscv.vector.tuple_nxv4i8_6t(ptr %base, i32 %offset, i32 %vl) {3774; CHECK-LABEL: test_vlsseg6_nxv2bf16_triscv.vector.tuple_nxv4i8_6t:3775; CHECK: # %bb.0: # %entry3776; CHECK-NEXT: vsetvli zero, a2, e16, mf2, ta, ma3777; CHECK-NEXT: vlsseg6e16.v v7, (a0), a13778; CHECK-NEXT: ret3779entry:3780 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vlsseg6.triscv.vector.tuple_nxv4i8_6t(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) poison, ptr %base, i32 %offset, i32 %vl, i32 4)3781 %1 = 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) %0, i32 1)3782 ret <vscale x 2 x bfloat> %13783}3784 3785define <vscale x 2 x bfloat> @test_vlsseg6_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_6t(ptr %base, i32 %offset, i32 %vl, <vscale x 2 x i1> %mask) {3786; CHECK-LABEL: test_vlsseg6_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_6t:3787; CHECK: # %bb.0: # %entry3788; CHECK-NEXT: vsetvli zero, a2, e16, mf2, ta, ma3789; CHECK-NEXT: vlsseg6e16.v v7, (a0), a1, v0.t3790; CHECK-NEXT: ret3791entry:3792 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vlsseg6.mask.triscv.vector.tuple_nxv4i8_6t.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) poison, ptr %base, i32 %offset, <vscale x 2 x i1> %mask, i32 %vl, i32 1, i32 4)3793 %1 = 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) %0, i32 1)3794 ret <vscale x 2 x bfloat> %13795}3796 3797define <vscale x 4 x bfloat> @test_vlsseg6_nxv4bf16_triscv.vector.tuple_nxv8i8_6t(ptr %base, i32 %offset, i32 %vl) {3798; CHECK-LABEL: test_vlsseg6_nxv4bf16_triscv.vector.tuple_nxv8i8_6t:3799; CHECK: # %bb.0: # %entry3800; CHECK-NEXT: vsetvli zero, a2, e16, m1, ta, ma3801; CHECK-NEXT: vlsseg6e16.v v7, (a0), a13802; CHECK-NEXT: ret3803entry:3804 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vlsseg6.triscv.vector.tuple_nxv8i8_6t(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) poison, ptr %base, i32 %offset, i32 %vl, i32 4)3805 %1 = 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) %0, i32 1)3806 ret <vscale x 4 x bfloat> %13807}3808 3809define <vscale x 4 x bfloat> @test_vlsseg6_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_6t(ptr %base, i32 %offset, i32 %vl, <vscale x 4 x i1> %mask) {3810; CHECK-LABEL: test_vlsseg6_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_6t:3811; CHECK: # %bb.0: # %entry3812; CHECK-NEXT: vsetvli zero, a2, e16, m1, ta, ma3813; CHECK-NEXT: vlsseg6e16.v v7, (a0), a1, v0.t3814; CHECK-NEXT: ret3815entry:3816 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vlsseg6.mask.triscv.vector.tuple_nxv8i8_6t.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) poison, ptr %base, i32 %offset, <vscale x 4 x i1> %mask, i32 %vl, i32 1, i32 4)3817 %1 = 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) %0, i32 1)3818 ret <vscale x 4 x bfloat> %13819}3820 3821define <vscale x 1 x bfloat> @test_vlsseg7_nxv1bf16_triscv.vector.tuple_nxv2i8_7t(ptr %base, i32 %offset, i32 %vl) {3822; CHECK-LABEL: test_vlsseg7_nxv1bf16_triscv.vector.tuple_nxv2i8_7t:3823; CHECK: # %bb.0: # %entry3824; CHECK-NEXT: vsetvli zero, a2, e16, mf4, ta, ma3825; CHECK-NEXT: vlsseg7e16.v v7, (a0), a13826; CHECK-NEXT: ret3827entry:3828 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 7) @llvm.riscv.vlsseg7.triscv.vector.tuple_nxv2i8_7t(target("riscv.vector.tuple", <vscale x 2 x i8>, 7) poison, ptr %base, i32 %offset, i32 %vl, i32 4)3829 %1 = 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) %0, i32 1)3830 ret <vscale x 1 x bfloat> %13831}3832 3833define <vscale x 1 x bfloat> @test_vlsseg7_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_7t(ptr %base, i32 %offset, i32 %vl, <vscale x 1 x i1> %mask) {3834; CHECK-LABEL: test_vlsseg7_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_7t:3835; CHECK: # %bb.0: # %entry3836; CHECK-NEXT: vsetvli zero, a2, e16, mf4, ta, ma3837; CHECK-NEXT: vlsseg7e16.v v7, (a0), a1, v0.t3838; CHECK-NEXT: ret3839entry:3840 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 7) @llvm.riscv.vlsseg7.mask.triscv.vector.tuple_nxv2i8_7t.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 7) poison, ptr %base, i32 %offset, <vscale x 1 x i1> %mask, i32 %vl, i32 1, i32 4)3841 %1 = 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) %0, i32 1)3842 ret <vscale x 1 x bfloat> %13843}3844 3845define <vscale x 2 x bfloat> @test_vlsseg7_nxv2bf16_triscv.vector.tuple_nxv4i8_7t(ptr %base, i32 %offset, i32 %vl) {3846; CHECK-LABEL: test_vlsseg7_nxv2bf16_triscv.vector.tuple_nxv4i8_7t:3847; CHECK: # %bb.0: # %entry3848; CHECK-NEXT: vsetvli zero, a2, e16, mf2, ta, ma3849; CHECK-NEXT: vlsseg7e16.v v7, (a0), a13850; CHECK-NEXT: ret3851entry:3852 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vlsseg7.triscv.vector.tuple_nxv4i8_7t(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) poison, ptr %base, i32 %offset, i32 %vl, i32 4)3853 %1 = 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) %0, i32 1)3854 ret <vscale x 2 x bfloat> %13855}3856 3857define <vscale x 2 x bfloat> @test_vlsseg7_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_7t(ptr %base, i32 %offset, i32 %vl, <vscale x 2 x i1> %mask) {3858; CHECK-LABEL: test_vlsseg7_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_7t:3859; CHECK: # %bb.0: # %entry3860; CHECK-NEXT: vsetvli zero, a2, e16, mf2, ta, ma3861; CHECK-NEXT: vlsseg7e16.v v7, (a0), a1, v0.t3862; CHECK-NEXT: ret3863entry:3864 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vlsseg7.mask.triscv.vector.tuple_nxv4i8_7t.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) poison, ptr %base, i32 %offset, <vscale x 2 x i1> %mask, i32 %vl, i32 1, i32 4)3865 %1 = 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) %0, i32 1)3866 ret <vscale x 2 x bfloat> %13867}3868 3869define <vscale x 4 x bfloat> @test_vlsseg7_nxv4bf16_triscv.vector.tuple_nxv8i8_7t(ptr %base, i32 %offset, i32 %vl) {3870; CHECK-LABEL: test_vlsseg7_nxv4bf16_triscv.vector.tuple_nxv8i8_7t:3871; CHECK: # %bb.0: # %entry3872; CHECK-NEXT: vsetvli zero, a2, e16, m1, ta, ma3873; CHECK-NEXT: vlsseg7e16.v v7, (a0), a13874; CHECK-NEXT: ret3875entry:3876 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vlsseg7.triscv.vector.tuple_nxv8i8_7t(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) poison, ptr %base, i32 %offset, i32 %vl, i32 4)3877 %1 = 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) %0, i32 1)3878 ret <vscale x 4 x bfloat> %13879}3880 3881define <vscale x 4 x bfloat> @test_vlsseg7_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_7t(ptr %base, i32 %offset, i32 %vl, <vscale x 4 x i1> %mask) {3882; CHECK-LABEL: test_vlsseg7_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_7t:3883; CHECK: # %bb.0: # %entry3884; CHECK-NEXT: vsetvli zero, a2, e16, m1, ta, ma3885; CHECK-NEXT: vlsseg7e16.v v7, (a0), a1, v0.t3886; CHECK-NEXT: ret3887entry:3888 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vlsseg7.mask.triscv.vector.tuple_nxv8i8_7t.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) poison, ptr %base, i32 %offset, <vscale x 4 x i1> %mask, i32 %vl, i32 1, i32 4)3889 %1 = 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) %0, i32 1)3890 ret <vscale x 4 x bfloat> %13891}3892 3893define <vscale x 1 x bfloat> @test_vlsseg8_nxv1bf16_triscv.vector.tuple_nxv2i8_8t(ptr %base, i32 %offset, i32 %vl) {3894; CHECK-LABEL: test_vlsseg8_nxv1bf16_triscv.vector.tuple_nxv2i8_8t:3895; CHECK: # %bb.0: # %entry3896; CHECK-NEXT: vsetvli zero, a2, e16, mf4, ta, ma3897; CHECK-NEXT: vlsseg8e16.v v7, (a0), a13898; CHECK-NEXT: ret3899entry:3900 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 8) @llvm.riscv.vlsseg8.triscv.vector.tuple_nxv2i8_8t(target("riscv.vector.tuple", <vscale x 2 x i8>, 8) poison, ptr %base, i32 %offset, i32 %vl, i32 4)3901 %1 = 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) %0, i32 1)3902 ret <vscale x 1 x bfloat> %13903}3904 3905define <vscale x 1 x bfloat> @test_vlsseg8_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_8t(ptr %base, i32 %offset, i32 %vl, <vscale x 1 x i1> %mask) {3906; CHECK-LABEL: test_vlsseg8_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_8t:3907; CHECK: # %bb.0: # %entry3908; CHECK-NEXT: vsetvli zero, a2, e16, mf4, ta, ma3909; CHECK-NEXT: vlsseg8e16.v v7, (a0), a1, v0.t3910; CHECK-NEXT: ret3911entry:3912 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 8) @llvm.riscv.vlsseg8.mask.triscv.vector.tuple_nxv2i8_8t.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 8) poison, ptr %base, i32 %offset, <vscale x 1 x i1> %mask, i32 %vl, i32 1, i32 4)3913 %1 = 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) %0, i32 1)3914 ret <vscale x 1 x bfloat> %13915}3916 3917define <vscale x 2 x bfloat> @test_vlsseg8_nxv2bf16_triscv.vector.tuple_nxv4i8_8t(ptr %base, i32 %offset, i32 %vl) {3918; CHECK-LABEL: test_vlsseg8_nxv2bf16_triscv.vector.tuple_nxv4i8_8t:3919; CHECK: # %bb.0: # %entry3920; CHECK-NEXT: vsetvli zero, a2, e16, mf2, ta, ma3921; CHECK-NEXT: vlsseg8e16.v v7, (a0), a13922; CHECK-NEXT: ret3923entry:3924 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vlsseg8.triscv.vector.tuple_nxv4i8_8t(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) poison, ptr %base, i32 %offset, i32 %vl, i32 4)3925 %1 = 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) %0, i32 1)3926 ret <vscale x 2 x bfloat> %13927}3928 3929define <vscale x 2 x bfloat> @test_vlsseg8_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_8t(ptr %base, i32 %offset, i32 %vl, <vscale x 2 x i1> %mask) {3930; CHECK-LABEL: test_vlsseg8_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_8t:3931; CHECK: # %bb.0: # %entry3932; CHECK-NEXT: vsetvli zero, a2, e16, mf2, ta, ma3933; CHECK-NEXT: vlsseg8e16.v v7, (a0), a1, v0.t3934; CHECK-NEXT: ret3935entry:3936 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vlsseg8.mask.triscv.vector.tuple_nxv4i8_8t.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) poison, ptr %base, i32 %offset, <vscale x 2 x i1> %mask, i32 %vl, i32 1, i32 4)3937 %1 = 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) %0, i32 1)3938 ret <vscale x 2 x bfloat> %13939}3940 3941define <vscale x 4 x bfloat> @test_vlsseg8_nxv4bf16_triscv.vector.tuple_nxv8i8_8t(ptr %base, i32 %offset, i32 %vl) {3942; CHECK-LABEL: test_vlsseg8_nxv4bf16_triscv.vector.tuple_nxv8i8_8t:3943; CHECK: # %bb.0: # %entry3944; CHECK-NEXT: vsetvli zero, a2, e16, m1, ta, ma3945; CHECK-NEXT: vlsseg8e16.v v7, (a0), a13946; CHECK-NEXT: ret3947entry:3948 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vlsseg8.triscv.vector.tuple_nxv8i8_8t(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) poison, ptr %base, i32 %offset, i32 %vl, i32 4)3949 %1 = 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) %0, i32 1)3950 ret <vscale x 4 x bfloat> %13951}3952 3953define <vscale x 4 x bfloat> @test_vlsseg8_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_8t(ptr %base, i32 %offset, i32 %vl, <vscale x 4 x i1> %mask) {3954; CHECK-LABEL: test_vlsseg8_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_8t:3955; CHECK: # %bb.0: # %entry3956; CHECK-NEXT: vsetvli zero, a2, e16, m1, ta, ma3957; CHECK-NEXT: vlsseg8e16.v v7, (a0), a1, v0.t3958; CHECK-NEXT: ret3959entry:3960 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vlsseg8.mask.triscv.vector.tuple_nxv8i8_8t.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) poison, ptr %base, i32 %offset, <vscale x 4 x i1> %mask, i32 %vl, i32 1, i32 4)3961 %1 = 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) %0, i32 1)3962 ret <vscale x 4 x bfloat> %13963}3964 3965