brintos

brintos / llvm-project-archived public Read only

0
0
Text · 39.3 KiB · c5e1852 Raw
1032 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 32; RUN: llc < %s -mtriple=riscv32 -mattr=+v,+zvfh -verify-machineinstrs | FileCheck %s -check-prefixes=CHECK,RV323; RUN: llc < %s -mtriple=riscv64 -mattr=+v,+zvfh -verify-machineinstrs | FileCheck %s -check-prefixes=CHECK,RV644 5define <vscale x 16 x i1> @match_nxv16i8_v1i8(<vscale x 16 x i8> %op1, <1 x i8> %op2, <vscale x 16 x i1> %mask) {6; CHECK-LABEL: match_nxv16i8_v1i8:7; CHECK:       # %bb.0:8; CHECK-NEXT:    vsetvli a0, zero, e8, m2, ta, ma9; CHECK-NEXT:    vrgather.vi v12, v10, 010; CHECK-NEXT:    vmseq.vv v10, v8, v1211; CHECK-NEXT:    vmand.mm v0, v10, v012; CHECK-NEXT:    ret13  %r = tail call <vscale x 16 x i1> @llvm.experimental.vector.match(<vscale x 16 x i8> %op1, <1 x i8> %op2, <vscale x 16 x i1> %mask)14  ret <vscale x 16 x i1> %r15}16 17define <vscale x 16 x i1> @match_nxv16i8_v2i8(<vscale x 16 x i8> %op1, <2 x i8> %op2, <vscale x 16 x i1> %mask) {18; CHECK-LABEL: match_nxv16i8_v2i8:19; CHECK:       # %bb.0:20; CHECK-NEXT:    vsetvli a0, zero, e8, m2, ta, ma21; CHECK-NEXT:    vrgather.vi v12, v10, 122; CHECK-NEXT:    vmseq.vv v14, v8, v1223; CHECK-NEXT:    vrgather.vi v12, v10, 024; CHECK-NEXT:    vmseq.vv v10, v8, v1225; CHECK-NEXT:    vmor.mm v8, v10, v1426; CHECK-NEXT:    vmand.mm v0, v8, v027; CHECK-NEXT:    ret28  %r = tail call <vscale x 16 x i1> @llvm.experimental.vector.match(<vscale x 16 x i8> %op1, <2 x i8> %op2, <vscale x 16 x i1> %mask)29  ret <vscale x 16 x i1> %r30}31 32define <vscale x 16 x i1> @match_nxv16i8_v4i8(<vscale x 16 x i8> %op1, <4 x i8> %op2, <vscale x 16 x i1> %mask) {33; CHECK-LABEL: match_nxv16i8_v4i8:34; CHECK:       # %bb.0:35; CHECK-NEXT:    vsetvli a0, zero, e8, m2, ta, ma36; CHECK-NEXT:    vrgather.vi v12, v10, 137; CHECK-NEXT:    vmseq.vv v14, v8, v1238; CHECK-NEXT:    vrgather.vi v12, v10, 039; CHECK-NEXT:    vmseq.vv v15, v8, v1240; CHECK-NEXT:    vmor.mm v14, v15, v1441; CHECK-NEXT:    vrgather.vi v12, v10, 242; CHECK-NEXT:    vmseq.vv v15, v8, v1243; CHECK-NEXT:    vrgather.vi v12, v10, 344; CHECK-NEXT:    vmor.mm v10, v14, v1545; CHECK-NEXT:    vmseq.vv v11, v8, v1246; CHECK-NEXT:    vmor.mm v8, v10, v1147; CHECK-NEXT:    vmand.mm v0, v8, v048; CHECK-NEXT:    ret49  %r = tail call <vscale x 16 x i1> @llvm.experimental.vector.match(<vscale x 16 x i8> %op1, <4 x i8> %op2, <vscale x 16 x i1> %mask)50  ret <vscale x 16 x i1> %r51}52 53define <vscale x 16 x i1> @match_nxv16i8_v8i8(<vscale x 16 x i8> %op1, <8 x i8> %op2, <vscale x 16 x i1> %mask) {54; CHECK-LABEL: match_nxv16i8_v8i8:55; CHECK:       # %bb.0:56; CHECK-NEXT:    vsetvli a0, zero, e8, m2, ta, ma57; CHECK-NEXT:    vrgather.vi v12, v10, 158; CHECK-NEXT:    vmseq.vv v14, v8, v1259; CHECK-NEXT:    vrgather.vi v12, v10, 060; CHECK-NEXT:    vmseq.vv v15, v8, v1261; CHECK-NEXT:    vmor.mm v14, v15, v1462; CHECK-NEXT:    vrgather.vi v12, v10, 263; CHECK-NEXT:    vmseq.vv v15, v8, v1264; CHECK-NEXT:    vmor.mm v14, v14, v1565; CHECK-NEXT:    vrgather.vi v12, v10, 366; CHECK-NEXT:    vmseq.vv v15, v8, v1267; CHECK-NEXT:    vmor.mm v14, v14, v1568; CHECK-NEXT:    vrgather.vi v12, v10, 469; CHECK-NEXT:    vmseq.vv v15, v8, v1270; CHECK-NEXT:    vmor.mm v14, v14, v1571; CHECK-NEXT:    vrgather.vi v12, v10, 572; CHECK-NEXT:    vmseq.vv v15, v8, v1273; CHECK-NEXT:    vmor.mm v14, v14, v1574; CHECK-NEXT:    vrgather.vi v12, v10, 675; CHECK-NEXT:    vmseq.vv v15, v8, v1276; CHECK-NEXT:    vrgather.vi v12, v10, 777; CHECK-NEXT:    vmor.mm v10, v14, v1578; CHECK-NEXT:    vmseq.vv v11, v8, v1279; CHECK-NEXT:    vmor.mm v8, v10, v1180; CHECK-NEXT:    vmand.mm v0, v8, v081; CHECK-NEXT:    ret82  %r = tail call <vscale x 16 x i1> @llvm.experimental.vector.match(<vscale x 16 x i8> %op1, <8 x i8> %op2, <vscale x 16 x i1> %mask)83  ret <vscale x 16 x i1> %r84}85 86define <vscale x 16 x i1> @match_nxv16i8_v16i8(<vscale x 16 x i8> %op1, <16 x i8> %op2, <vscale x 16 x i1> %mask) {87; CHECK-LABEL: match_nxv16i8_v16i8:88; CHECK:       # %bb.0:89; CHECK-NEXT:    vsetvli a0, zero, e8, m2, ta, ma90; CHECK-NEXT:    vrgather.vi v12, v10, 191; CHECK-NEXT:    vmseq.vv v14, v8, v1292; CHECK-NEXT:    vrgather.vi v12, v10, 093; CHECK-NEXT:    vmseq.vv v15, v8, v1294; CHECK-NEXT:    vmor.mm v14, v15, v1495; CHECK-NEXT:    vrgather.vi v12, v10, 296; CHECK-NEXT:    vmseq.vv v15, v8, v1297; CHECK-NEXT:    vmor.mm v14, v14, v1598; CHECK-NEXT:    vrgather.vi v12, v10, 399; CHECK-NEXT:    vmseq.vv v15, v8, v12100; CHECK-NEXT:    vmor.mm v14, v14, v15101; CHECK-NEXT:    vrgather.vi v12, v10, 4102; CHECK-NEXT:    vmseq.vv v15, v8, v12103; CHECK-NEXT:    vmor.mm v14, v14, v15104; CHECK-NEXT:    vrgather.vi v12, v10, 5105; CHECK-NEXT:    vmseq.vv v15, v8, v12106; CHECK-NEXT:    vmor.mm v14, v14, v15107; CHECK-NEXT:    vrgather.vi v12, v10, 6108; CHECK-NEXT:    vmseq.vv v15, v8, v12109; CHECK-NEXT:    vmor.mm v14, v14, v15110; CHECK-NEXT:    vrgather.vi v12, v10, 7111; CHECK-NEXT:    vmseq.vv v15, v8, v12112; CHECK-NEXT:    vmor.mm v14, v14, v15113; CHECK-NEXT:    vrgather.vi v12, v10, 8114; CHECK-NEXT:    vmseq.vv v15, v8, v12115; CHECK-NEXT:    vmor.mm v14, v14, v15116; CHECK-NEXT:    vrgather.vi v12, v10, 9117; CHECK-NEXT:    vmseq.vv v15, v8, v12118; CHECK-NEXT:    vmor.mm v14, v14, v15119; CHECK-NEXT:    vrgather.vi v12, v10, 10120; CHECK-NEXT:    vmseq.vv v15, v8, v12121; CHECK-NEXT:    vmor.mm v14, v14, v15122; CHECK-NEXT:    vrgather.vi v12, v10, 11123; CHECK-NEXT:    vmseq.vv v15, v8, v12124; CHECK-NEXT:    vmor.mm v14, v14, v15125; CHECK-NEXT:    vrgather.vi v12, v10, 12126; CHECK-NEXT:    vmseq.vv v15, v8, v12127; CHECK-NEXT:    vmor.mm v14, v14, v15128; CHECK-NEXT:    vrgather.vi v12, v10, 13129; CHECK-NEXT:    vmseq.vv v15, v8, v12130; CHECK-NEXT:    vmor.mm v14, v14, v15131; CHECK-NEXT:    vrgather.vi v12, v10, 14132; CHECK-NEXT:    vmseq.vv v15, v8, v12133; CHECK-NEXT:    vrgather.vi v12, v10, 15134; CHECK-NEXT:    vmor.mm v10, v14, v15135; CHECK-NEXT:    vmseq.vv v11, v8, v12136; CHECK-NEXT:    vmor.mm v8, v10, v11137; CHECK-NEXT:    vmand.mm v0, v8, v0138; CHECK-NEXT:    ret139  %r = tail call <vscale x 16 x i1> @llvm.experimental.vector.match(<vscale x 16 x i8> %op1, <16 x i8> %op2, <vscale x 16 x i1> %mask)140  ret <vscale x 16 x i1> %r141}142 143define <16 x i1> @match_v16i8_v1i8(<16 x i8> %op1, <1 x i8> %op2, <16 x i1> %mask) {144; CHECK-LABEL: match_v16i8_v1i8:145; CHECK:       # %bb.0:146; CHECK-NEXT:    vsetivli zero, 16, e8, m1, ta, ma147; CHECK-NEXT:    vrgather.vi v10, v9, 0148; CHECK-NEXT:    vmseq.vv v8, v8, v10149; CHECK-NEXT:    vmand.mm v0, v8, v0150; CHECK-NEXT:    ret151  %r = tail call <16 x i1> @llvm.experimental.vector.match(<16 x i8> %op1, <1 x i8> %op2, <16 x i1> %mask)152  ret <16 x i1> %r153}154 155define <16 x i1> @match_v16i8_v2i8(<16 x i8> %op1, <2 x i8> %op2, <16 x i1> %mask) {156; CHECK-LABEL: match_v16i8_v2i8:157; CHECK:       # %bb.0:158; CHECK-NEXT:    vsetivli zero, 16, e8, m1, ta, ma159; CHECK-NEXT:    vrgather.vi v10, v9, 1160; CHECK-NEXT:    vrgather.vi v11, v9, 0161; CHECK-NEXT:    vmseq.vv v9, v8, v10162; CHECK-NEXT:    vmseq.vv v8, v8, v11163; CHECK-NEXT:    vmor.mm v8, v8, v9164; CHECK-NEXT:    vmand.mm v0, v8, v0165; CHECK-NEXT:    ret166  %r = tail call <16 x i1> @llvm.experimental.vector.match(<16 x i8> %op1, <2 x i8> %op2, <16 x i1> %mask)167  ret <16 x i1> %r168}169 170define <16 x i1> @match_v16i8_v4i8(<16 x i8> %op1, <4 x i8> %op2, <16 x i1> %mask) {171; CHECK-LABEL: match_v16i8_v4i8:172; CHECK:       # %bb.0:173; CHECK-NEXT:    vsetivli zero, 16, e8, m1, ta, ma174; CHECK-NEXT:    vrgather.vi v10, v9, 1175; CHECK-NEXT:    vrgather.vi v11, v9, 0176; CHECK-NEXT:    vmseq.vv v10, v8, v10177; CHECK-NEXT:    vmseq.vv v11, v8, v11178; CHECK-NEXT:    vmor.mm v10, v11, v10179; CHECK-NEXT:    vrgather.vi v11, v9, 2180; CHECK-NEXT:    vrgather.vi v12, v9, 3181; CHECK-NEXT:    vmseq.vv v9, v8, v11182; CHECK-NEXT:    vmor.mm v9, v10, v9183; CHECK-NEXT:    vmseq.vv v8, v8, v12184; CHECK-NEXT:    vmor.mm v8, v9, v8185; CHECK-NEXT:    vmand.mm v0, v8, v0186; CHECK-NEXT:    ret187  %r = tail call <16 x i1> @llvm.experimental.vector.match(<16 x i8> %op1, <4 x i8> %op2, <16 x i1> %mask)188  ret <16 x i1> %r189}190 191define <16 x i1> @match_v16i8_v8i8(<16 x i8> %op1, <8 x i8> %op2, <16 x i1> %mask) {192; CHECK-LABEL: match_v16i8_v8i8:193; CHECK:       # %bb.0:194; CHECK-NEXT:    vsetivli zero, 16, e8, m1, ta, ma195; CHECK-NEXT:    vrgather.vi v10, v9, 1196; CHECK-NEXT:    vrgather.vi v11, v9, 0197; CHECK-NEXT:    vmseq.vv v10, v8, v10198; CHECK-NEXT:    vmseq.vv v11, v8, v11199; CHECK-NEXT:    vmor.mm v10, v11, v10200; CHECK-NEXT:    vrgather.vi v11, v9, 2201; CHECK-NEXT:    vmseq.vv v11, v8, v11202; CHECK-NEXT:    vmor.mm v10, v10, v11203; CHECK-NEXT:    vrgather.vi v11, v9, 3204; CHECK-NEXT:    vmseq.vv v11, v8, v11205; CHECK-NEXT:    vmor.mm v10, v10, v11206; CHECK-NEXT:    vrgather.vi v11, v9, 4207; CHECK-NEXT:    vmseq.vv v11, v8, v11208; CHECK-NEXT:    vmor.mm v10, v10, v11209; CHECK-NEXT:    vrgather.vi v11, v9, 5210; CHECK-NEXT:    vmseq.vv v11, v8, v11211; CHECK-NEXT:    vmor.mm v10, v10, v11212; CHECK-NEXT:    vrgather.vi v11, v9, 6213; CHECK-NEXT:    vrgather.vi v12, v9, 7214; CHECK-NEXT:    vmseq.vv v9, v8, v11215; CHECK-NEXT:    vmor.mm v9, v10, v9216; CHECK-NEXT:    vmseq.vv v8, v8, v12217; CHECK-NEXT:    vmor.mm v8, v9, v8218; CHECK-NEXT:    vmand.mm v0, v8, v0219; CHECK-NEXT:    ret220  %r = tail call <16 x i1> @llvm.experimental.vector.match(<16 x i8> %op1, <8 x i8> %op2, <16 x i1> %mask)221  ret <16 x i1> %r222}223 224define <16 x i1> @match_v16i8_v16i8(<16 x i8> %op1, <16 x i8> %op2, <16 x i1> %mask) {225; CHECK-LABEL: match_v16i8_v16i8:226; CHECK:       # %bb.0:227; CHECK-NEXT:    vsetivli zero, 16, e8, m1, ta, ma228; CHECK-NEXT:    vrgather.vi v10, v9, 1229; CHECK-NEXT:    vrgather.vi v11, v9, 0230; CHECK-NEXT:    vmseq.vv v10, v8, v10231; CHECK-NEXT:    vmseq.vv v11, v8, v11232; CHECK-NEXT:    vmor.mm v10, v11, v10233; CHECK-NEXT:    vrgather.vi v11, v9, 2234; CHECK-NEXT:    vmseq.vv v11, v8, v11235; CHECK-NEXT:    vmor.mm v10, v10, v11236; CHECK-NEXT:    vrgather.vi v11, v9, 3237; CHECK-NEXT:    vmseq.vv v11, v8, v11238; CHECK-NEXT:    vmor.mm v10, v10, v11239; CHECK-NEXT:    vrgather.vi v11, v9, 4240; CHECK-NEXT:    vmseq.vv v11, v8, v11241; CHECK-NEXT:    vmor.mm v10, v10, v11242; CHECK-NEXT:    vrgather.vi v11, v9, 5243; CHECK-NEXT:    vmseq.vv v11, v8, v11244; CHECK-NEXT:    vmor.mm v10, v10, v11245; CHECK-NEXT:    vrgather.vi v11, v9, 6246; CHECK-NEXT:    vmseq.vv v11, v8, v11247; CHECK-NEXT:    vmor.mm v10, v10, v11248; CHECK-NEXT:    vrgather.vi v11, v9, 7249; CHECK-NEXT:    vmseq.vv v11, v8, v11250; CHECK-NEXT:    vmor.mm v10, v10, v11251; CHECK-NEXT:    vrgather.vi v11, v9, 8252; CHECK-NEXT:    vmseq.vv v11, v8, v11253; CHECK-NEXT:    vmor.mm v10, v10, v11254; CHECK-NEXT:    vrgather.vi v11, v9, 9255; CHECK-NEXT:    vmseq.vv v11, v8, v11256; CHECK-NEXT:    vmor.mm v10, v10, v11257; CHECK-NEXT:    vrgather.vi v11, v9, 10258; CHECK-NEXT:    vmseq.vv v11, v8, v11259; CHECK-NEXT:    vmor.mm v10, v10, v11260; CHECK-NEXT:    vrgather.vi v11, v9, 11261; CHECK-NEXT:    vmseq.vv v11, v8, v11262; CHECK-NEXT:    vmor.mm v10, v10, v11263; CHECK-NEXT:    vrgather.vi v11, v9, 12264; CHECK-NEXT:    vmseq.vv v11, v8, v11265; CHECK-NEXT:    vmor.mm v10, v10, v11266; CHECK-NEXT:    vrgather.vi v11, v9, 13267; CHECK-NEXT:    vmseq.vv v11, v8, v11268; CHECK-NEXT:    vmor.mm v10, v10, v11269; CHECK-NEXT:    vrgather.vi v11, v9, 14270; CHECK-NEXT:    vrgather.vi v12, v9, 15271; CHECK-NEXT:    vmseq.vv v9, v8, v11272; CHECK-NEXT:    vmor.mm v9, v10, v9273; CHECK-NEXT:    vmseq.vv v8, v8, v12274; CHECK-NEXT:    vmor.mm v8, v9, v8275; CHECK-NEXT:    vmand.mm v0, v8, v0276; CHECK-NEXT:    ret277  %r = tail call <16 x i1> @llvm.experimental.vector.match(<16 x i8> %op1, <16 x i8> %op2, <16 x i1> %mask)278  ret <16 x i1> %r279}280 281define <8 x i1> @match_v8i8_v8i8(<8 x i8> %op1, <8 x i8> %op2, <8 x i1> %mask) {282; CHECK-LABEL: match_v8i8_v8i8:283; CHECK:       # %bb.0:284; CHECK-NEXT:    vsetivli zero, 8, e8, mf2, ta, ma285; CHECK-NEXT:    vrgather.vi v10, v9, 1286; CHECK-NEXT:    vrgather.vi v11, v9, 0287; CHECK-NEXT:    vmseq.vv v10, v8, v10288; CHECK-NEXT:    vmseq.vv v11, v8, v11289; CHECK-NEXT:    vmor.mm v10, v11, v10290; CHECK-NEXT:    vrgather.vi v11, v9, 2291; CHECK-NEXT:    vmseq.vv v11, v8, v11292; CHECK-NEXT:    vmor.mm v10, v10, v11293; CHECK-NEXT:    vrgather.vi v11, v9, 3294; CHECK-NEXT:    vmseq.vv v11, v8, v11295; CHECK-NEXT:    vmor.mm v10, v10, v11296; CHECK-NEXT:    vrgather.vi v11, v9, 4297; CHECK-NEXT:    vmseq.vv v11, v8, v11298; CHECK-NEXT:    vmor.mm v10, v10, v11299; CHECK-NEXT:    vrgather.vi v11, v9, 5300; CHECK-NEXT:    vmseq.vv v11, v8, v11301; CHECK-NEXT:    vmor.mm v10, v10, v11302; CHECK-NEXT:    vrgather.vi v11, v9, 6303; CHECK-NEXT:    vrgather.vi v12, v9, 7304; CHECK-NEXT:    vmseq.vv v9, v8, v11305; CHECK-NEXT:    vmor.mm v9, v10, v9306; CHECK-NEXT:    vmseq.vv v8, v8, v12307; CHECK-NEXT:    vmor.mm v8, v9, v8308; CHECK-NEXT:    vmand.mm v0, v8, v0309; CHECK-NEXT:    ret310  %r = tail call <8 x i1> @llvm.experimental.vector.match(<8 x i8> %op1, <8 x i8> %op2, <8 x i1> %mask)311  ret <8 x i1> %r312}313 314define <vscale x 8 x i1> @match_nxv8i16_v8i16(<vscale x 8 x i16> %op1, <8 x i16> %op2, <vscale x 8 x i1> %mask) {315; CHECK-LABEL: match_nxv8i16_v8i16:316; CHECK:       # %bb.0:317; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma318; CHECK-NEXT:    vrgather.vi v12, v10, 1319; CHECK-NEXT:    vmseq.vv v14, v8, v12320; CHECK-NEXT:    vrgather.vi v12, v10, 0321; CHECK-NEXT:    vmseq.vv v15, v8, v12322; CHECK-NEXT:    vmor.mm v14, v15, v14323; CHECK-NEXT:    vrgather.vi v12, v10, 2324; CHECK-NEXT:    vmseq.vv v15, v8, v12325; CHECK-NEXT:    vmor.mm v14, v14, v15326; CHECK-NEXT:    vrgather.vi v12, v10, 3327; CHECK-NEXT:    vmseq.vv v15, v8, v12328; CHECK-NEXT:    vmor.mm v14, v14, v15329; CHECK-NEXT:    vrgather.vi v12, v10, 4330; CHECK-NEXT:    vmseq.vv v15, v8, v12331; CHECK-NEXT:    vmor.mm v14, v14, v15332; CHECK-NEXT:    vrgather.vi v12, v10, 5333; CHECK-NEXT:    vmseq.vv v15, v8, v12334; CHECK-NEXT:    vmor.mm v14, v14, v15335; CHECK-NEXT:    vrgather.vi v12, v10, 6336; CHECK-NEXT:    vmseq.vv v15, v8, v12337; CHECK-NEXT:    vrgather.vi v12, v10, 7338; CHECK-NEXT:    vmor.mm v10, v14, v15339; CHECK-NEXT:    vmseq.vv v11, v8, v12340; CHECK-NEXT:    vmor.mm v8, v10, v11341; CHECK-NEXT:    vmand.mm v0, v8, v0342; CHECK-NEXT:    ret343  %r = tail call <vscale x 8 x i1> @llvm.experimental.vector.match(<vscale x 8 x i16> %op1, <8 x i16> %op2, <vscale x 8 x i1> %mask)344  ret <vscale x 8 x i1> %r345}346 347define <8 x i1> @match_v8i16(<8 x i16> %op1, <8 x i16> %op2, <8 x i1> %mask) {348; CHECK-LABEL: match_v8i16:349; CHECK:       # %bb.0:350; CHECK-NEXT:    vsetivli zero, 8, e16, m1, ta, ma351; CHECK-NEXT:    vrgather.vi v10, v9, 1352; CHECK-NEXT:    vrgather.vi v11, v9, 0353; CHECK-NEXT:    vmseq.vv v10, v8, v10354; CHECK-NEXT:    vmseq.vv v11, v8, v11355; CHECK-NEXT:    vmor.mm v10, v11, v10356; CHECK-NEXT:    vrgather.vi v11, v9, 2357; CHECK-NEXT:    vmseq.vv v11, v8, v11358; CHECK-NEXT:    vmor.mm v10, v10, v11359; CHECK-NEXT:    vrgather.vi v11, v9, 3360; CHECK-NEXT:    vmseq.vv v11, v8, v11361; CHECK-NEXT:    vmor.mm v10, v10, v11362; CHECK-NEXT:    vrgather.vi v11, v9, 4363; CHECK-NEXT:    vmseq.vv v11, v8, v11364; CHECK-NEXT:    vmor.mm v10, v10, v11365; CHECK-NEXT:    vrgather.vi v11, v9, 5366; CHECK-NEXT:    vmseq.vv v11, v8, v11367; CHECK-NEXT:    vmor.mm v10, v10, v11368; CHECK-NEXT:    vrgather.vi v11, v9, 6369; CHECK-NEXT:    vrgather.vi v12, v9, 7370; CHECK-NEXT:    vmseq.vv v9, v8, v11371; CHECK-NEXT:    vmor.mm v9, v10, v9372; CHECK-NEXT:    vmseq.vv v8, v8, v12373; CHECK-NEXT:    vmor.mm v8, v9, v8374; CHECK-NEXT:    vmand.mm v0, v8, v0375; CHECK-NEXT:    ret376  %r = tail call <8 x i1> @llvm.experimental.vector.match(<8 x i16> %op1, <8 x i16> %op2, <8 x i1> %mask)377  ret <8 x i1> %r378}379 380; Cases where op2 has more elements than op1.381 382define <8 x i1> @match_v8i8_v16i8(<8 x i8> %op1, <16 x i8> %op2, <8 x i1> %mask) {383; CHECK-LABEL: match_v8i8_v16i8:384; CHECK:       # %bb.0:385; CHECK-NEXT:    vsetivli zero, 8, e8, mf2, ta, ma386; CHECK-NEXT:    vrgather.vi v10, v9, 1387; CHECK-NEXT:    vsetivli zero, 1, e8, m1, ta, ma388; CHECK-NEXT:    vslidedown.vi v11, v9, 8389; CHECK-NEXT:    vmv.x.s a0, v11390; CHECK-NEXT:    vslidedown.vi v11, v9, 9391; CHECK-NEXT:    vmv.x.s a1, v11392; CHECK-NEXT:    vslidedown.vi v11, v9, 10393; CHECK-NEXT:    vmv.x.s a2, v11394; CHECK-NEXT:    vslidedown.vi v11, v9, 11395; CHECK-NEXT:    vmv.x.s a3, v11396; CHECK-NEXT:    vslidedown.vi v11, v9, 12397; CHECK-NEXT:    vmv.x.s a4, v11398; CHECK-NEXT:    vslidedown.vi v11, v9, 13399; CHECK-NEXT:    vmv.x.s a5, v11400; CHECK-NEXT:    vslidedown.vi v11, v9, 14401; CHECK-NEXT:    vmv.x.s a6, v11402; CHECK-NEXT:    vslidedown.vi v11, v9, 15403; CHECK-NEXT:    vmv.x.s a7, v11404; CHECK-NEXT:    vsetivli zero, 8, e8, mf2, ta, ma405; CHECK-NEXT:    vrgather.vi v11, v9, 0406; CHECK-NEXT:    vmseq.vv v10, v8, v10407; CHECK-NEXT:    vmseq.vv v11, v8, v11408; CHECK-NEXT:    vmor.mm v10, v11, v10409; CHECK-NEXT:    vrgather.vi v11, v9, 2410; CHECK-NEXT:    vmseq.vv v11, v8, v11411; CHECK-NEXT:    vmor.mm v10, v10, v11412; CHECK-NEXT:    vrgather.vi v11, v9, 3413; CHECK-NEXT:    vmseq.vv v11, v8, v11414; CHECK-NEXT:    vmor.mm v10, v10, v11415; CHECK-NEXT:    vrgather.vi v11, v9, 4416; CHECK-NEXT:    vmseq.vv v11, v8, v11417; CHECK-NEXT:    vmor.mm v10, v10, v11418; CHECK-NEXT:    vrgather.vi v11, v9, 5419; CHECK-NEXT:    vmseq.vv v11, v8, v11420; CHECK-NEXT:    vmor.mm v10, v10, v11421; CHECK-NEXT:    vrgather.vi v11, v9, 6422; CHECK-NEXT:    vmseq.vv v11, v8, v11423; CHECK-NEXT:    vmor.mm v10, v10, v11424; CHECK-NEXT:    vmseq.vx v11, v8, a0425; CHECK-NEXT:    vrgather.vi v12, v9, 7426; CHECK-NEXT:    vmseq.vv v9, v8, v12427; CHECK-NEXT:    vmor.mm v9, v10, v9428; CHECK-NEXT:    vmseq.vx v10, v8, a1429; CHECK-NEXT:    vmor.mm v9, v9, v11430; CHECK-NEXT:    vmseq.vx v11, v8, a2431; CHECK-NEXT:    vmor.mm v9, v9, v10432; CHECK-NEXT:    vmseq.vx v10, v8, a3433; CHECK-NEXT:    vmor.mm v9, v9, v11434; CHECK-NEXT:    vmseq.vx v11, v8, a4435; CHECK-NEXT:    vmor.mm v9, v9, v10436; CHECK-NEXT:    vmseq.vx v10, v8, a5437; CHECK-NEXT:    vmor.mm v9, v9, v11438; CHECK-NEXT:    vmseq.vx v11, v8, a6439; CHECK-NEXT:    vmor.mm v9, v9, v10440; CHECK-NEXT:    vmor.mm v9, v9, v11441; CHECK-NEXT:    vmseq.vx v8, v8, a7442; CHECK-NEXT:    vmor.mm v8, v9, v8443; CHECK-NEXT:    vmand.mm v0, v8, v0444; CHECK-NEXT:    ret445  %r = tail call <8 x i1> @llvm.experimental.vector.match(<8 x i8> %op1, <16 x i8> %op2, <8 x i1> %mask)446  ret <8 x i1> %r447}448 449define <vscale x 16 x i1> @match_nxv16i8_v32i8(<vscale x 16 x i8> %op1, <32 x i8> %op2, <vscale x 16 x i1> %mask) {450; RV32-LABEL: match_nxv16i8_v32i8:451; RV32:       # %bb.0:452; RV32-NEXT:    addi sp, sp, -16453; RV32-NEXT:    .cfi_def_cfa_offset 16454; RV32-NEXT:    sw s0, 12(sp) # 4-byte Folded Spill455; RV32-NEXT:    .cfi_offset s0, -4456; RV32-NEXT:    vsetvli a0, zero, e8, m2, ta, ma457; RV32-NEXT:    vrgather.vi v14, v10, 1458; RV32-NEXT:    vrgather.vi v16, v10, 0459; RV32-NEXT:    vrgather.vi v18, v10, 2460; RV32-NEXT:    vrgather.vi v20, v10, 3461; RV32-NEXT:    vrgather.vi v22, v10, 4462; RV32-NEXT:    vrgather.vi v24, v10, 5463; RV32-NEXT:    vrgather.vi v26, v10, 6464; RV32-NEXT:    vrgather.vi v28, v10, 7465; RV32-NEXT:    vmseq.vv v12, v8, v14466; RV32-NEXT:    vmseq.vv v13, v8, v16467; RV32-NEXT:    vrgather.vi v30, v10, 8468; RV32-NEXT:    vmseq.vv v14, v8, v18469; RV32-NEXT:    vmseq.vv v15, v8, v20470; RV32-NEXT:    vrgather.vi v6, v10, 9471; RV32-NEXT:    vmseq.vv v16, v8, v22472; RV32-NEXT:    vmseq.vv v17, v8, v24473; RV32-NEXT:    vrgather.vi v24, v10, 10474; RV32-NEXT:    vmseq.vv v18, v8, v26475; RV32-NEXT:    vmseq.vv v19, v8, v28476; RV32-NEXT:    vrgather.vi v26, v10, 11477; RV32-NEXT:    vmseq.vv v20, v8, v30478; RV32-NEXT:    vmseq.vv v21, v8, v6479; RV32-NEXT:    vrgather.vi v28, v10, 12480; RV32-NEXT:    vmseq.vv v22, v8, v24481; RV32-NEXT:    vmseq.vv v23, v8, v26482; RV32-NEXT:    vrgather.vi v26, v10, 13483; RV32-NEXT:    vmseq.vv v25, v8, v28484; RV32-NEXT:    vmseq.vv v24, v8, v26485; RV32-NEXT:    vslidedown.vi v26, v10, 16486; RV32-NEXT:    vmv.x.s a0, v26487; RV32-NEXT:    vslidedown.vi v26, v10, 17488; RV32-NEXT:    vmv.x.s a1, v26489; RV32-NEXT:    vslidedown.vi v26, v10, 18490; RV32-NEXT:    vmv.x.s a2, v26491; RV32-NEXT:    vslidedown.vi v26, v10, 19492; RV32-NEXT:    vmv.x.s a3, v26493; RV32-NEXT:    vslidedown.vi v26, v10, 20494; RV32-NEXT:    vmv.x.s a4, v26495; RV32-NEXT:    vslidedown.vi v26, v10, 21496; RV32-NEXT:    vmv.x.s a5, v26497; RV32-NEXT:    vslidedown.vi v26, v10, 22498; RV32-NEXT:    vmv.x.s a6, v26499; RV32-NEXT:    vslidedown.vi v26, v10, 23500; RV32-NEXT:    vmv.x.s a7, v26501; RV32-NEXT:    vslidedown.vi v26, v10, 24502; RV32-NEXT:    vmv.x.s t0, v26503; RV32-NEXT:    vslidedown.vi v26, v10, 25504; RV32-NEXT:    vmv.x.s t1, v26505; RV32-NEXT:    vslidedown.vi v26, v10, 26506; RV32-NEXT:    vmv.x.s t2, v26507; RV32-NEXT:    vslidedown.vi v26, v10, 27508; RV32-NEXT:    vmv.x.s t3, v26509; RV32-NEXT:    vslidedown.vi v26, v10, 28510; RV32-NEXT:    vmv.x.s t4, v26511; RV32-NEXT:    vslidedown.vi v26, v10, 29512; RV32-NEXT:    vmv.x.s t5, v26513; RV32-NEXT:    vslidedown.vi v26, v10, 30514; RV32-NEXT:    vmv.x.s t6, v26515; RV32-NEXT:    vslidedown.vi v26, v10, 31516; RV32-NEXT:    vmv.x.s s0, v26517; RV32-NEXT:    vrgather.vi v26, v10, 14518; RV32-NEXT:    vmseq.vv v28, v8, v26519; RV32-NEXT:    vrgather.vi v26, v10, 15520; RV32-NEXT:    vmseq.vv v10, v8, v26521; RV32-NEXT:    vmor.mm v11, v13, v12522; RV32-NEXT:    vmor.mm v11, v11, v14523; RV32-NEXT:    vmor.mm v11, v11, v15524; RV32-NEXT:    vmor.mm v11, v11, v16525; RV32-NEXT:    vmor.mm v11, v11, v17526; RV32-NEXT:    vmor.mm v11, v11, v18527; RV32-NEXT:    vmor.mm v11, v11, v19528; RV32-NEXT:    vmor.mm v11, v11, v20529; RV32-NEXT:    vmor.mm v11, v11, v21530; RV32-NEXT:    vmor.mm v11, v11, v22531; RV32-NEXT:    vmor.mm v11, v11, v23532; RV32-NEXT:    vmor.mm v11, v11, v25533; RV32-NEXT:    vmseq.vx v12, v8, a0534; RV32-NEXT:    vmor.mm v11, v11, v24535; RV32-NEXT:    vmseq.vx v13, v8, a1536; RV32-NEXT:    vmor.mm v11, v11, v28537; RV32-NEXT:    vmseq.vx v14, v8, a2538; RV32-NEXT:    vmor.mm v10, v11, v10539; RV32-NEXT:    vmseq.vx v11, v8, a3540; RV32-NEXT:    vmor.mm v10, v10, v12541; RV32-NEXT:    vmseq.vx v12, v8, a4542; RV32-NEXT:    vmor.mm v10, v10, v13543; RV32-NEXT:    vmseq.vx v13, v8, a5544; RV32-NEXT:    vmor.mm v10, v10, v14545; RV32-NEXT:    vmseq.vx v14, v8, a6546; RV32-NEXT:    vmor.mm v10, v10, v11547; RV32-NEXT:    vmseq.vx v11, v8, a7548; RV32-NEXT:    vmor.mm v10, v10, v12549; RV32-NEXT:    vmseq.vx v12, v8, t0550; RV32-NEXT:    vmor.mm v10, v10, v13551; RV32-NEXT:    vmseq.vx v13, v8, t1552; RV32-NEXT:    vmor.mm v10, v10, v14553; RV32-NEXT:    vmseq.vx v14, v8, t2554; RV32-NEXT:    vmor.mm v10, v10, v11555; RV32-NEXT:    vmseq.vx v11, v8, t3556; RV32-NEXT:    vmor.mm v10, v10, v12557; RV32-NEXT:    vmseq.vx v12, v8, t4558; RV32-NEXT:    vmor.mm v10, v10, v13559; RV32-NEXT:    vmseq.vx v13, v8, t5560; RV32-NEXT:    vmor.mm v10, v10, v14561; RV32-NEXT:    vmseq.vx v14, v8, t6562; RV32-NEXT:    vmor.mm v10, v10, v11563; RV32-NEXT:    vmor.mm v10, v10, v12564; RV32-NEXT:    vmor.mm v10, v10, v13565; RV32-NEXT:    vmor.mm v10, v10, v14566; RV32-NEXT:    vmseq.vx v11, v8, s0567; RV32-NEXT:    vmor.mm v8, v10, v11568; RV32-NEXT:    vmand.mm v0, v8, v0569; RV32-NEXT:    lw s0, 12(sp) # 4-byte Folded Reload570; RV32-NEXT:    .cfi_restore s0571; RV32-NEXT:    addi sp, sp, 16572; RV32-NEXT:    .cfi_def_cfa_offset 0573; RV32-NEXT:    ret574;575; RV64-LABEL: match_nxv16i8_v32i8:576; RV64:       # %bb.0:577; RV64-NEXT:    addi sp, sp, -16578; RV64-NEXT:    .cfi_def_cfa_offset 16579; RV64-NEXT:    sd s0, 8(sp) # 8-byte Folded Spill580; RV64-NEXT:    .cfi_offset s0, -8581; RV64-NEXT:    vsetvli a0, zero, e8, m2, ta, ma582; RV64-NEXT:    vrgather.vi v14, v10, 1583; RV64-NEXT:    vrgather.vi v16, v10, 0584; RV64-NEXT:    vrgather.vi v18, v10, 2585; RV64-NEXT:    vrgather.vi v20, v10, 3586; RV64-NEXT:    vrgather.vi v22, v10, 4587; RV64-NEXT:    vrgather.vi v24, v10, 5588; RV64-NEXT:    vrgather.vi v26, v10, 6589; RV64-NEXT:    vrgather.vi v28, v10, 7590; RV64-NEXT:    vmseq.vv v12, v8, v14591; RV64-NEXT:    vmseq.vv v13, v8, v16592; RV64-NEXT:    vrgather.vi v30, v10, 8593; RV64-NEXT:    vmseq.vv v14, v8, v18594; RV64-NEXT:    vmseq.vv v15, v8, v20595; RV64-NEXT:    vrgather.vi v6, v10, 9596; RV64-NEXT:    vmseq.vv v16, v8, v22597; RV64-NEXT:    vmseq.vv v17, v8, v24598; RV64-NEXT:    vrgather.vi v24, v10, 10599; RV64-NEXT:    vmseq.vv v18, v8, v26600; RV64-NEXT:    vmseq.vv v19, v8, v28601; RV64-NEXT:    vrgather.vi v26, v10, 11602; RV64-NEXT:    vmseq.vv v20, v8, v30603; RV64-NEXT:    vmseq.vv v21, v8, v6604; RV64-NEXT:    vrgather.vi v28, v10, 12605; RV64-NEXT:    vmseq.vv v22, v8, v24606; RV64-NEXT:    vmseq.vv v23, v8, v26607; RV64-NEXT:    vrgather.vi v26, v10, 13608; RV64-NEXT:    vmseq.vv v25, v8, v28609; RV64-NEXT:    vmseq.vv v24, v8, v26610; RV64-NEXT:    vslidedown.vi v26, v10, 16611; RV64-NEXT:    vmv.x.s a0, v26612; RV64-NEXT:    vslidedown.vi v26, v10, 17613; RV64-NEXT:    vmv.x.s a1, v26614; RV64-NEXT:    vslidedown.vi v26, v10, 18615; RV64-NEXT:    vmv.x.s a2, v26616; RV64-NEXT:    vslidedown.vi v26, v10, 19617; RV64-NEXT:    vmv.x.s a3, v26618; RV64-NEXT:    vslidedown.vi v26, v10, 20619; RV64-NEXT:    vmv.x.s a4, v26620; RV64-NEXT:    vslidedown.vi v26, v10, 21621; RV64-NEXT:    vmv.x.s a5, v26622; RV64-NEXT:    vslidedown.vi v26, v10, 22623; RV64-NEXT:    vmv.x.s a6, v26624; RV64-NEXT:    vslidedown.vi v26, v10, 23625; RV64-NEXT:    vmv.x.s a7, v26626; RV64-NEXT:    vslidedown.vi v26, v10, 24627; RV64-NEXT:    vmv.x.s t0, v26628; RV64-NEXT:    vslidedown.vi v26, v10, 25629; RV64-NEXT:    vmv.x.s t1, v26630; RV64-NEXT:    vslidedown.vi v26, v10, 26631; RV64-NEXT:    vmv.x.s t2, v26632; RV64-NEXT:    vslidedown.vi v26, v10, 27633; RV64-NEXT:    vmv.x.s t3, v26634; RV64-NEXT:    vslidedown.vi v26, v10, 28635; RV64-NEXT:    vmv.x.s t4, v26636; RV64-NEXT:    vslidedown.vi v26, v10, 29637; RV64-NEXT:    vmv.x.s t5, v26638; RV64-NEXT:    vslidedown.vi v26, v10, 30639; RV64-NEXT:    vmv.x.s t6, v26640; RV64-NEXT:    vslidedown.vi v26, v10, 31641; RV64-NEXT:    vmv.x.s s0, v26642; RV64-NEXT:    vrgather.vi v26, v10, 14643; RV64-NEXT:    vmseq.vv v28, v8, v26644; RV64-NEXT:    vrgather.vi v26, v10, 15645; RV64-NEXT:    vmseq.vv v10, v8, v26646; RV64-NEXT:    vmor.mm v11, v13, v12647; RV64-NEXT:    vmor.mm v11, v11, v14648; RV64-NEXT:    vmor.mm v11, v11, v15649; RV64-NEXT:    vmor.mm v11, v11, v16650; RV64-NEXT:    vmor.mm v11, v11, v17651; RV64-NEXT:    vmor.mm v11, v11, v18652; RV64-NEXT:    vmor.mm v11, v11, v19653; RV64-NEXT:    vmor.mm v11, v11, v20654; RV64-NEXT:    vmor.mm v11, v11, v21655; RV64-NEXT:    vmor.mm v11, v11, v22656; RV64-NEXT:    vmor.mm v11, v11, v23657; RV64-NEXT:    vmor.mm v11, v11, v25658; RV64-NEXT:    vmseq.vx v12, v8, a0659; RV64-NEXT:    vmor.mm v11, v11, v24660; RV64-NEXT:    vmseq.vx v13, v8, a1661; RV64-NEXT:    vmor.mm v11, v11, v28662; RV64-NEXT:    vmseq.vx v14, v8, a2663; RV64-NEXT:    vmor.mm v10, v11, v10664; RV64-NEXT:    vmseq.vx v11, v8, a3665; RV64-NEXT:    vmor.mm v10, v10, v12666; RV64-NEXT:    vmseq.vx v12, v8, a4667; RV64-NEXT:    vmor.mm v10, v10, v13668; RV64-NEXT:    vmseq.vx v13, v8, a5669; RV64-NEXT:    vmor.mm v10, v10, v14670; RV64-NEXT:    vmseq.vx v14, v8, a6671; RV64-NEXT:    vmor.mm v10, v10, v11672; RV64-NEXT:    vmseq.vx v11, v8, a7673; RV64-NEXT:    vmor.mm v10, v10, v12674; RV64-NEXT:    vmseq.vx v12, v8, t0675; RV64-NEXT:    vmor.mm v10, v10, v13676; RV64-NEXT:    vmseq.vx v13, v8, t1677; RV64-NEXT:    vmor.mm v10, v10, v14678; RV64-NEXT:    vmseq.vx v14, v8, t2679; RV64-NEXT:    vmor.mm v10, v10, v11680; RV64-NEXT:    vmseq.vx v11, v8, t3681; RV64-NEXT:    vmor.mm v10, v10, v12682; RV64-NEXT:    vmseq.vx v12, v8, t4683; RV64-NEXT:    vmor.mm v10, v10, v13684; RV64-NEXT:    vmseq.vx v13, v8, t5685; RV64-NEXT:    vmor.mm v10, v10, v14686; RV64-NEXT:    vmseq.vx v14, v8, t6687; RV64-NEXT:    vmor.mm v10, v10, v11688; RV64-NEXT:    vmor.mm v10, v10, v12689; RV64-NEXT:    vmor.mm v10, v10, v13690; RV64-NEXT:    vmor.mm v10, v10, v14691; RV64-NEXT:    vmseq.vx v11, v8, s0692; RV64-NEXT:    vmor.mm v8, v10, v11693; RV64-NEXT:    vmand.mm v0, v8, v0694; RV64-NEXT:    ld s0, 8(sp) # 8-byte Folded Reload695; RV64-NEXT:    .cfi_restore s0696; RV64-NEXT:    addi sp, sp, 16697; RV64-NEXT:    .cfi_def_cfa_offset 0698; RV64-NEXT:    ret699  %r = tail call <vscale x 16 x i1> @llvm.experimental.vector.match(<vscale x 16 x i8> %op1, <32 x i8> %op2, <vscale x 16 x i1> %mask)700  ret <vscale x 16 x i1> %r701}702 703define <16 x i1> @match_v16i8_v32i8(<16 x i8> %op1, <32 x i8> %op2, <16 x i1> %mask) {704; RV32-LABEL: match_v16i8_v32i8:705; RV32:       # %bb.0:706; RV32-NEXT:    addi sp, sp, -16707; RV32-NEXT:    .cfi_def_cfa_offset 16708; RV32-NEXT:    sw s0, 12(sp) # 4-byte Folded Spill709; RV32-NEXT:    .cfi_offset s0, -4710; RV32-NEXT:    vsetivli zero, 16, e8, m1, ta, ma711; RV32-NEXT:    vrgather.vi v9, v10, 1712; RV32-NEXT:    vrgather.vi v12, v10, 0713; RV32-NEXT:    vrgather.vi v13, v10, 2714; RV32-NEXT:    vrgather.vi v14, v10, 3715; RV32-NEXT:    vrgather.vi v15, v10, 4716; RV32-NEXT:    vrgather.vi v16, v10, 5717; RV32-NEXT:    vrgather.vi v17, v10, 6718; RV32-NEXT:    vrgather.vi v18, v10, 7719; RV32-NEXT:    vrgather.vi v19, v10, 8720; RV32-NEXT:    vrgather.vi v20, v10, 9721; RV32-NEXT:    vrgather.vi v21, v10, 10722; RV32-NEXT:    vrgather.vi v22, v10, 11723; RV32-NEXT:    vrgather.vi v23, v10, 12724; RV32-NEXT:    vsetivli zero, 1, e8, m2, ta, ma725; RV32-NEXT:    vslidedown.vi v24, v10, 16726; RV32-NEXT:    vmv.x.s a0, v24727; RV32-NEXT:    vslidedown.vi v24, v10, 17728; RV32-NEXT:    vmv.x.s a1, v24729; RV32-NEXT:    vslidedown.vi v24, v10, 18730; RV32-NEXT:    vmv.x.s a2, v24731; RV32-NEXT:    vslidedown.vi v24, v10, 19732; RV32-NEXT:    vmv.x.s a3, v24733; RV32-NEXT:    vslidedown.vi v24, v10, 20734; RV32-NEXT:    vmv.x.s a4, v24735; RV32-NEXT:    vslidedown.vi v24, v10, 21736; RV32-NEXT:    vmv.x.s a5, v24737; RV32-NEXT:    vslidedown.vi v24, v10, 22738; RV32-NEXT:    vmv.x.s a6, v24739; RV32-NEXT:    vslidedown.vi v24, v10, 23740; RV32-NEXT:    vmv.x.s a7, v24741; RV32-NEXT:    vslidedown.vi v24, v10, 24742; RV32-NEXT:    vmv.x.s t0, v24743; RV32-NEXT:    vslidedown.vi v24, v10, 25744; RV32-NEXT:    vmv.x.s t1, v24745; RV32-NEXT:    vslidedown.vi v24, v10, 26746; RV32-NEXT:    vmv.x.s t2, v24747; RV32-NEXT:    vslidedown.vi v24, v10, 27748; RV32-NEXT:    vmv.x.s t3, v24749; RV32-NEXT:    vslidedown.vi v24, v10, 28750; RV32-NEXT:    vmv.x.s t4, v24751; RV32-NEXT:    vslidedown.vi v24, v10, 29752; RV32-NEXT:    vmv.x.s t5, v24753; RV32-NEXT:    vslidedown.vi v24, v10, 30754; RV32-NEXT:    vmv.x.s t6, v24755; RV32-NEXT:    vslidedown.vi v24, v10, 31756; RV32-NEXT:    vmv.x.s s0, v24757; RV32-NEXT:    vsetivli zero, 16, e8, m1, ta, ma758; RV32-NEXT:    vrgather.vi v11, v10, 13759; RV32-NEXT:    vrgather.vi v24, v10, 14760; RV32-NEXT:    vrgather.vi v25, v10, 15761; RV32-NEXT:    vmseq.vv v9, v8, v9762; RV32-NEXT:    vmseq.vv v10, v8, v12763; RV32-NEXT:    vmor.mm v9, v10, v9764; RV32-NEXT:    vmseq.vv v10, v8, v13765; RV32-NEXT:    vmor.mm v9, v9, v10766; RV32-NEXT:    vmseq.vv v10, v8, v14767; RV32-NEXT:    vmor.mm v9, v9, v10768; RV32-NEXT:    vmseq.vv v10, v8, v15769; RV32-NEXT:    vmor.mm v9, v9, v10770; RV32-NEXT:    vmseq.vv v10, v8, v16771; RV32-NEXT:    vmor.mm v9, v9, v10772; RV32-NEXT:    vmseq.vv v10, v8, v17773; RV32-NEXT:    vmor.mm v9, v9, v10774; RV32-NEXT:    vmseq.vv v10, v8, v18775; RV32-NEXT:    vmor.mm v9, v9, v10776; RV32-NEXT:    vmseq.vv v10, v8, v19777; RV32-NEXT:    vmor.mm v9, v9, v10778; RV32-NEXT:    vmseq.vv v10, v8, v20779; RV32-NEXT:    vmor.mm v9, v9, v10780; RV32-NEXT:    vmseq.vv v10, v8, v21781; RV32-NEXT:    vmor.mm v9, v9, v10782; RV32-NEXT:    vmseq.vv v10, v8, v22783; RV32-NEXT:    vmor.mm v9, v9, v10784; RV32-NEXT:    vmseq.vv v10, v8, v23785; RV32-NEXT:    vmor.mm v9, v9, v10786; RV32-NEXT:    vmseq.vx v10, v8, a0787; RV32-NEXT:    vmseq.vv v11, v8, v11788; RV32-NEXT:    vmor.mm v9, v9, v11789; RV32-NEXT:    vmseq.vx v11, v8, a1790; RV32-NEXT:    vmseq.vv v12, v8, v24791; RV32-NEXT:    vmor.mm v9, v9, v12792; RV32-NEXT:    vmseq.vx v12, v8, a2793; RV32-NEXT:    vmseq.vv v13, v8, v25794; RV32-NEXT:    vmor.mm v9, v9, v13795; RV32-NEXT:    vmseq.vx v13, v8, a3796; RV32-NEXT:    vmor.mm v9, v9, v10797; RV32-NEXT:    vmseq.vx v10, v8, a4798; RV32-NEXT:    vmor.mm v9, v9, v11799; RV32-NEXT:    vmseq.vx v11, v8, a5800; RV32-NEXT:    vmor.mm v9, v9, v12801; RV32-NEXT:    vmseq.vx v12, v8, a6802; RV32-NEXT:    vmor.mm v9, v9, v13803; RV32-NEXT:    vmseq.vx v13, v8, a7804; RV32-NEXT:    vmor.mm v9, v9, v10805; RV32-NEXT:    vmseq.vx v10, v8, t0806; RV32-NEXT:    vmor.mm v9, v9, v11807; RV32-NEXT:    vmseq.vx v11, v8, t1808; RV32-NEXT:    vmor.mm v9, v9, v12809; RV32-NEXT:    vmseq.vx v12, v8, t2810; RV32-NEXT:    vmor.mm v9, v9, v13811; RV32-NEXT:    vmseq.vx v13, v8, t3812; RV32-NEXT:    vmor.mm v9, v9, v10813; RV32-NEXT:    vmseq.vx v10, v8, t4814; RV32-NEXT:    vmor.mm v9, v9, v11815; RV32-NEXT:    vmseq.vx v11, v8, t5816; RV32-NEXT:    vmor.mm v9, v9, v12817; RV32-NEXT:    vmseq.vx v12, v8, t6818; RV32-NEXT:    vmor.mm v9, v9, v13819; RV32-NEXT:    vmor.mm v9, v9, v10820; RV32-NEXT:    vmor.mm v9, v9, v11821; RV32-NEXT:    vmor.mm v9, v9, v12822; RV32-NEXT:    vmseq.vx v8, v8, s0823; RV32-NEXT:    vmor.mm v8, v9, v8824; RV32-NEXT:    vmand.mm v0, v8, v0825; RV32-NEXT:    lw s0, 12(sp) # 4-byte Folded Reload826; RV32-NEXT:    .cfi_restore s0827; RV32-NEXT:    addi sp, sp, 16828; RV32-NEXT:    .cfi_def_cfa_offset 0829; RV32-NEXT:    ret830;831; RV64-LABEL: match_v16i8_v32i8:832; RV64:       # %bb.0:833; RV64-NEXT:    addi sp, sp, -16834; RV64-NEXT:    .cfi_def_cfa_offset 16835; RV64-NEXT:    sd s0, 8(sp) # 8-byte Folded Spill836; RV64-NEXT:    .cfi_offset s0, -8837; RV64-NEXT:    vsetivli zero, 16, e8, m1, ta, ma838; RV64-NEXT:    vrgather.vi v9, v10, 1839; RV64-NEXT:    vrgather.vi v12, v10, 0840; RV64-NEXT:    vrgather.vi v13, v10, 2841; RV64-NEXT:    vrgather.vi v14, v10, 3842; RV64-NEXT:    vrgather.vi v15, v10, 4843; RV64-NEXT:    vrgather.vi v16, v10, 5844; RV64-NEXT:    vrgather.vi v17, v10, 6845; RV64-NEXT:    vrgather.vi v18, v10, 7846; RV64-NEXT:    vrgather.vi v19, v10, 8847; RV64-NEXT:    vrgather.vi v20, v10, 9848; RV64-NEXT:    vrgather.vi v21, v10, 10849; RV64-NEXT:    vrgather.vi v22, v10, 11850; RV64-NEXT:    vrgather.vi v23, v10, 12851; RV64-NEXT:    vsetivli zero, 1, e8, m2, ta, ma852; RV64-NEXT:    vslidedown.vi v24, v10, 16853; RV64-NEXT:    vmv.x.s a0, v24854; RV64-NEXT:    vslidedown.vi v24, v10, 17855; RV64-NEXT:    vmv.x.s a1, v24856; RV64-NEXT:    vslidedown.vi v24, v10, 18857; RV64-NEXT:    vmv.x.s a2, v24858; RV64-NEXT:    vslidedown.vi v24, v10, 19859; RV64-NEXT:    vmv.x.s a3, v24860; RV64-NEXT:    vslidedown.vi v24, v10, 20861; RV64-NEXT:    vmv.x.s a4, v24862; RV64-NEXT:    vslidedown.vi v24, v10, 21863; RV64-NEXT:    vmv.x.s a5, v24864; RV64-NEXT:    vslidedown.vi v24, v10, 22865; RV64-NEXT:    vmv.x.s a6, v24866; RV64-NEXT:    vslidedown.vi v24, v10, 23867; RV64-NEXT:    vmv.x.s a7, v24868; RV64-NEXT:    vslidedown.vi v24, v10, 24869; RV64-NEXT:    vmv.x.s t0, v24870; RV64-NEXT:    vslidedown.vi v24, v10, 25871; RV64-NEXT:    vmv.x.s t1, v24872; RV64-NEXT:    vslidedown.vi v24, v10, 26873; RV64-NEXT:    vmv.x.s t2, v24874; RV64-NEXT:    vslidedown.vi v24, v10, 27875; RV64-NEXT:    vmv.x.s t3, v24876; RV64-NEXT:    vslidedown.vi v24, v10, 28877; RV64-NEXT:    vmv.x.s t4, v24878; RV64-NEXT:    vslidedown.vi v24, v10, 29879; RV64-NEXT:    vmv.x.s t5, v24880; RV64-NEXT:    vslidedown.vi v24, v10, 30881; RV64-NEXT:    vmv.x.s t6, v24882; RV64-NEXT:    vslidedown.vi v24, v10, 31883; RV64-NEXT:    vmv.x.s s0, v24884; RV64-NEXT:    vsetivli zero, 16, e8, m1, ta, ma885; RV64-NEXT:    vrgather.vi v11, v10, 13886; RV64-NEXT:    vrgather.vi v24, v10, 14887; RV64-NEXT:    vrgather.vi v25, v10, 15888; RV64-NEXT:    vmseq.vv v9, v8, v9889; RV64-NEXT:    vmseq.vv v10, v8, v12890; RV64-NEXT:    vmor.mm v9, v10, v9891; RV64-NEXT:    vmseq.vv v10, v8, v13892; RV64-NEXT:    vmor.mm v9, v9, v10893; RV64-NEXT:    vmseq.vv v10, v8, v14894; RV64-NEXT:    vmor.mm v9, v9, v10895; RV64-NEXT:    vmseq.vv v10, v8, v15896; RV64-NEXT:    vmor.mm v9, v9, v10897; RV64-NEXT:    vmseq.vv v10, v8, v16898; RV64-NEXT:    vmor.mm v9, v9, v10899; RV64-NEXT:    vmseq.vv v10, v8, v17900; RV64-NEXT:    vmor.mm v9, v9, v10901; RV64-NEXT:    vmseq.vv v10, v8, v18902; RV64-NEXT:    vmor.mm v9, v9, v10903; RV64-NEXT:    vmseq.vv v10, v8, v19904; RV64-NEXT:    vmor.mm v9, v9, v10905; RV64-NEXT:    vmseq.vv v10, v8, v20906; RV64-NEXT:    vmor.mm v9, v9, v10907; RV64-NEXT:    vmseq.vv v10, v8, v21908; RV64-NEXT:    vmor.mm v9, v9, v10909; RV64-NEXT:    vmseq.vv v10, v8, v22910; RV64-NEXT:    vmor.mm v9, v9, v10911; RV64-NEXT:    vmseq.vv v10, v8, v23912; RV64-NEXT:    vmor.mm v9, v9, v10913; RV64-NEXT:    vmseq.vx v10, v8, a0914; RV64-NEXT:    vmseq.vv v11, v8, v11915; RV64-NEXT:    vmor.mm v9, v9, v11916; RV64-NEXT:    vmseq.vx v11, v8, a1917; RV64-NEXT:    vmseq.vv v12, v8, v24918; RV64-NEXT:    vmor.mm v9, v9, v12919; RV64-NEXT:    vmseq.vx v12, v8, a2920; RV64-NEXT:    vmseq.vv v13, v8, v25921; RV64-NEXT:    vmor.mm v9, v9, v13922; RV64-NEXT:    vmseq.vx v13, v8, a3923; RV64-NEXT:    vmor.mm v9, v9, v10924; RV64-NEXT:    vmseq.vx v10, v8, a4925; RV64-NEXT:    vmor.mm v9, v9, v11926; RV64-NEXT:    vmseq.vx v11, v8, a5927; RV64-NEXT:    vmor.mm v9, v9, v12928; RV64-NEXT:    vmseq.vx v12, v8, a6929; RV64-NEXT:    vmor.mm v9, v9, v13930; RV64-NEXT:    vmseq.vx v13, v8, a7931; RV64-NEXT:    vmor.mm v9, v9, v10932; RV64-NEXT:    vmseq.vx v10, v8, t0933; RV64-NEXT:    vmor.mm v9, v9, v11934; RV64-NEXT:    vmseq.vx v11, v8, t1935; RV64-NEXT:    vmor.mm v9, v9, v12936; RV64-NEXT:    vmseq.vx v12, v8, t2937; RV64-NEXT:    vmor.mm v9, v9, v13938; RV64-NEXT:    vmseq.vx v13, v8, t3939; RV64-NEXT:    vmor.mm v9, v9, v10940; RV64-NEXT:    vmseq.vx v10, v8, t4941; RV64-NEXT:    vmor.mm v9, v9, v11942; RV64-NEXT:    vmseq.vx v11, v8, t5943; RV64-NEXT:    vmor.mm v9, v9, v12944; RV64-NEXT:    vmseq.vx v12, v8, t6945; RV64-NEXT:    vmor.mm v9, v9, v13946; RV64-NEXT:    vmor.mm v9, v9, v10947; RV64-NEXT:    vmor.mm v9, v9, v11948; RV64-NEXT:    vmor.mm v9, v9, v12949; RV64-NEXT:    vmseq.vx v8, v8, s0950; RV64-NEXT:    vmor.mm v8, v9, v8951; RV64-NEXT:    vmand.mm v0, v8, v0952; RV64-NEXT:    ld s0, 8(sp) # 8-byte Folded Reload953; RV64-NEXT:    .cfi_restore s0954; RV64-NEXT:    addi sp, sp, 16955; RV64-NEXT:    .cfi_def_cfa_offset 0956; RV64-NEXT:    ret957  %r = tail call <16 x i1> @llvm.experimental.vector.match(<16 x i8> %op1, <32 x i8> %op2, <16 x i1> %mask)958  ret <16 x i1> %r959}960 961define <vscale x 4 x i1> @match_nxv4xi32_v4i32(<vscale x 4 x i32> %op1, <4 x i32> %op2, <vscale x 4 x i1> %mask) {962; CHECK-LABEL: match_nxv4xi32_v4i32:963; CHECK:       # %bb.0:964; CHECK-NEXT:    vsetvli a0, zero, e32, m2, ta, ma965; CHECK-NEXT:    vrgather.vi v12, v10, 1966; CHECK-NEXT:    vmseq.vv v14, v8, v12967; CHECK-NEXT:    vrgather.vi v12, v10, 0968; CHECK-NEXT:    vmseq.vv v15, v8, v12969; CHECK-NEXT:    vmor.mm v14, v15, v14970; CHECK-NEXT:    vrgather.vi v12, v10, 2971; CHECK-NEXT:    vmseq.vv v15, v8, v12972; CHECK-NEXT:    vrgather.vi v12, v10, 3973; CHECK-NEXT:    vmor.mm v10, v14, v15974; CHECK-NEXT:    vmseq.vv v11, v8, v12975; CHECK-NEXT:    vmor.mm v8, v10, v11976; CHECK-NEXT:    vmand.mm v0, v8, v0977; CHECK-NEXT:    ret978  %r = tail call <vscale x 4 x i1> @llvm.experimental.vector.match(<vscale x 4 x i32> %op1, <4 x i32> %op2, <vscale x 4 x i1> %mask)979  ret <vscale x 4 x i1> %r980}981 982define <vscale x 2 x i1> @match_nxv2xi64_v2i64(<vscale x 2 x i64> %op1, <2 x i64> %op2, <vscale x 2 x i1> %mask) {983; CHECK-LABEL: match_nxv2xi64_v2i64:984; CHECK:       # %bb.0:985; CHECK-NEXT:    vsetvli a0, zero, e64, m2, ta, ma986; CHECK-NEXT:    vrgather.vi v12, v10, 1987; CHECK-NEXT:    vmseq.vv v14, v8, v12988; CHECK-NEXT:    vrgather.vi v12, v10, 0989; CHECK-NEXT:    vmseq.vv v10, v8, v12990; CHECK-NEXT:    vmor.mm v8, v10, v14991; CHECK-NEXT:    vmand.mm v0, v8, v0992; CHECK-NEXT:    ret993  %r = tail call <vscale x 2 x i1> @llvm.experimental.vector.match(<vscale x 2 x i64> %op1, <2 x i64> %op2, <vscale x 2 x i1> %mask)994  ret <vscale x 2 x i1> %r995}996 997define <4 x i1> @match_v4xi32_v4i32(<4 x i32> %op1, <4 x i32> %op2, <4 x i1> %mask) {998; CHECK-LABEL: match_v4xi32_v4i32:999; CHECK:       # %bb.0:1000; CHECK-NEXT:    vsetivli zero, 4, e32, m1, ta, ma1001; CHECK-NEXT:    vrgather.vi v10, v9, 11002; CHECK-NEXT:    vrgather.vi v11, v9, 01003; CHECK-NEXT:    vmseq.vv v10, v8, v101004; CHECK-NEXT:    vmseq.vv v11, v8, v111005; CHECK-NEXT:    vmor.mm v10, v11, v101006; CHECK-NEXT:    vrgather.vi v11, v9, 21007; CHECK-NEXT:    vrgather.vi v12, v9, 31008; CHECK-NEXT:    vmseq.vv v9, v8, v111009; CHECK-NEXT:    vmor.mm v9, v10, v91010; CHECK-NEXT:    vmseq.vv v8, v8, v121011; CHECK-NEXT:    vmor.mm v8, v9, v81012; CHECK-NEXT:    vmand.mm v0, v8, v01013; CHECK-NEXT:    ret1014  %r = tail call <4 x i1> @llvm.experimental.vector.match(<4 x i32> %op1, <4 x i32> %op2, <4 x i1> %mask)1015  ret <4 x i1> %r1016}1017 1018define <2 x i1> @match_v2xi64_v2i64(<2 x i64> %op1, <2 x i64> %op2, <2 x i1> %mask) {1019; CHECK-LABEL: match_v2xi64_v2i64:1020; CHECK:       # %bb.0:1021; CHECK-NEXT:    vsetivli zero, 2, e64, m1, ta, ma1022; CHECK-NEXT:    vrgather.vi v10, v9, 11023; CHECK-NEXT:    vrgather.vi v11, v9, 01024; CHECK-NEXT:    vmseq.vv v9, v8, v101025; CHECK-NEXT:    vmseq.vv v8, v8, v111026; CHECK-NEXT:    vmor.mm v8, v8, v91027; CHECK-NEXT:    vmand.mm v0, v8, v01028; CHECK-NEXT:    ret1029  %r = tail call <2 x i1> @llvm.experimental.vector.match(<2 x i64> %op1, <2 x i64> %op2, <2 x i1> %mask)1030  ret <2 x i1> %r1031}1032