Lines Matching defs:ContainerVT

223         MVT ContainerVT = getContainerForFixedLengthVector(VT);
224 unsigned RCID = getRegClassIDForVecVT(ContainerVT);
2765 getDefaultVLOps(uint64_t NumElts, MVT ContainerVT, const SDLoc &DL,
2767 assert(ContainerVT.isScalableVector() && "Expecting scalable container type");
2769 SDValue Mask = getAllOnesMask(ContainerVT, VL, DL, DAG);
2774 // VecVT is a vector type, either fixed-length or scalable, and ContainerVT is
2776 // VecVT is scalable, then ContainerVT should be the same as VecVT.
2778 getDefaultVLOps(MVT VecVT, MVT ContainerVT, const SDLoc &DL, SelectionDAG &DAG,
2781 return getDefaultVLOps(VecVT.getVectorNumElements(), ContainerVT, DL, DAG,
2783 assert(ContainerVT.isScalableVector() && "Expecting scalable container type");
2784 return getDefaultScalableVLOps(ContainerVT, DL, DAG, Subtarget);
3088 MVT ContainerVT = VT;
3090 ContainerVT = getContainerForFixedLengthVector(DAG, VT, Subtarget);
3091 Src = convertToScalableVector(ContainerVT, Src, DAG, Subtarget);
3098 Mask = convertToScalableVector(getMaskTypeFor(ContainerVT), Mask, DAG,
3102 std::tie(Mask, VL) = getDefaultVLOps(VT, ContainerVT, DL, DAG, Subtarget);
3109 SDValue Abs = DAG.getNode(RISCVISD::FABS_VL, DL, ContainerVT, Src, Mask, VL);
3114 const fltSemantics &FltSem = ContainerVT.getFltSemantics();
3120 DAG.getConstantFP(MaxVal, DL, ContainerVT.getVectorElementType());
3121 SDValue MaxValSplat = DAG.getNode(RISCVISD::VFMV_V_F_VL, DL, ContainerVT,
3122 DAG.getUNDEF(ContainerVT), MaxValNode, VL);
3125 MVT SetccVT = MVT::getVectorVT(MVT::i1, ContainerVT.getVectorElementCount());
3132 MVT IntVT = ContainerVT.changeVectorElementTypeToInteger();
3162 Truncated = DAG.getNode(RISCVISD::VFROUND_NOEXCEPT_VL, DL, ContainerVT, Src,
3169 Truncated = DAG.getNode(RISCVISD::SINT_TO_FP_VL, DL, ContainerVT, Truncated,
3173 Truncated = DAG.getNode(RISCVISD::FCOPYSIGN_VL, DL, ContainerVT, Truncated,
3193 MVT ContainerVT = VT;
3195 ContainerVT = getContainerForFixedLengthVector(DAG, VT, Subtarget);
3196 Src = convertToScalableVector(ContainerVT, Src, DAG, Subtarget);
3199 auto [Mask, VL] = getDefaultVLOps(VT, ContainerVT, DL, DAG, Subtarget);
3212 DAG.getVTList(ContainerVT, MVT::Other),
3217 SDValue Abs = DAG.getNode(RISCVISD::FABS_VL, DL, ContainerVT, Src, Mask, VL);
3222 const fltSemantics &FltSem = ContainerVT.getFltSemantics();
3228 DAG.getConstantFP(MaxVal, DL, ContainerVT.getVectorElementType());
3229 SDValue MaxValSplat = DAG.getNode(RISCVISD::VFMV_V_F_VL, DL, ContainerVT,
3230 DAG.getUNDEF(ContainerVT), MaxValNode, VL);
3238 MVT IntVT = ContainerVT.changeVectorElementTypeToInteger();
3263 DAG.getVTList(ContainerVT, MVT::Other), Chain, Src,
3272 DAG.getVTList(ContainerVT, MVT::Other), Chain,
3278 Truncated = DAG.getNode(RISCVISD::FCOPYSIGN_VL, DL, ContainerVT, Truncated,
3322 MVT ContainerVT = VT;
3325 ContainerVT = getContainerForFixedLengthVector(DAG, VT, Subtarget);
3326 Src = convertToScalableVector(ContainerVT, Src, DAG, Subtarget);
3329 auto [Mask, VL] = getDefaultVLOps(VT, ContainerVT, DL, DAG, Subtarget);
3331 RISCVISD::VFCVT_RM_X_F_VL, DL, ContainerVT, Src, Mask,
3544 MVT ContainerVT = VT;
3546 ContainerVT = getContainerForFixedLengthVector(DAG, VT, Subtarget);
3556 ContainerVT.getVectorMinNumElements())
3557 Src = DAG.getNode(ISD::INSERT_SUBVECTOR, DL, ContainerVT,
3558 DAG.getUNDEF(ContainerVT), Src,
3561 Src = DAG.getNode(ISD::EXTRACT_SUBVECTOR, DL, ContainerVT, Src,
3565 auto [Mask, VL] = getDefaultVLOps(VT, ContainerVT, DL, DAG, Subtarget);
3566 SDValue Gather = DAG.getNode(RISCVISD::VRGATHER_VX_VL, DL, ContainerVT, Src,
3567 Idx, DAG.getUNDEF(ContainerVT), Mask, VL);
3586 MVT ContainerVT = getContainerForFixedLengthVector(DAG, VT, Subtarget);
3589 auto [Mask, VL] = getDefaultVLOps(VT, ContainerVT, DL, DAG, Subtarget);
3648 Vec = convertToScalableVector(ContainerVT, Vec, DAG, Subtarget);
3653 Vec = DAG.getNode(OpCode, DL, ContainerVT, DAG.getUNDEF(ContainerVT), Vec,
3692 MVT ContainerVT = getContainerForFixedLengthVector(DAG, VT, Subtarget);
3695 auto [Mask, VL] = getDefaultVLOps(VT, ContainerVT, DL, DAG, Subtarget);
3702 SDValue VMClr = DAG.getNode(RISCVISD::VMCLR_VL, DL, ContainerVT, VL);
3707 SDValue VMSet = DAG.getNode(RISCVISD::VMSET_VL, DL, ContainerVT, VL);
3783 DAG.getNode(Opc, DL, ContainerVT, DAG.getUNDEF(ContainerVT), Splat, VL);
3973 Source = convertToScalableVector(ContainerVT.changeVectorElementType(MVT::i8),
3975 SDValue Res = DAG.getNode(RISCVISD::VSEXT_VL, DL, ContainerVT, Source, Mask, VL);
4109 MVT ContainerVT = getContainerForFixedLengthVector(DAG, VT, Subtarget);
4111 auto [Mask, VL] = getDefaultVLOps(VT, ContainerVT, DL, DAG, Subtarget);
4145 DAG.getNode(Opc, DL, ContainerVT, DAG.getUNDEF(ContainerVT), Splat, VL);
4158 EVT ContainerVT = getContainerForFixedLengthVector(DAG, VT, Subtarget);
4169 SDValue Vec = DAG.getUNDEF(ContainerVT);
4176 Vec = DAG.getNode(ISD::INSERT_SUBVECTOR, DL, ContainerVT, Vec, SubBV,
4202 ContainerVT.bitsLE(getLMUL1VT(ContainerVT))) {
4241 switch (RISCVTargetLowering::getLMUL(ContainerVT)) {
4294 Vec = convertToScalableVector(ContainerVT, Vec, DAG, Subtarget);
4301 Vec = getVSlidedown(DAG, Subtarget, DL, ContainerVT, DAG.getUNDEF(ContainerVT),
4309 Vec = DAG.getNode(OpCode, DL, ContainerVT, DAG.getUNDEF(ContainerVT), Vec,
4314 Vec = getVSlidedown(DAG, Subtarget, DL, ContainerVT, DAG.getUNDEF(ContainerVT),
4496 static SDValue getSingleShuffleSrc(MVT VT, MVT ContainerVT, SDValue V1,
4500 RISCVTargetLowering::getLMUL(ContainerVT) != RISCVII::VLMUL::LMUL_8)
4728 MVT ContainerVT = getContainerForFixedLengthVector(DAG, SrcVT, Subtarget);
4729 auto [TrueMask, VL] = getDefaultVLOps(SrcVT, ContainerVT, DL, DAG, Subtarget);
4731 getVSlidedown(DAG, Subtarget, DL, ContainerVT, DAG.getUNDEF(ContainerVT),
4732 convertToScalableVector(ContainerVT, Src, DAG, Subtarget),
4768 MVT ContainerVT = getContainerForFixedLengthVector(DAG, VT, Subtarget);
4769 auto TrueMask = getDefaultVLOps(VT, ContainerVT, DL, DAG, Subtarget).first;
4778 InPlace = convertToScalableVector(ContainerVT, InPlace, DAG, Subtarget);
4779 ToInsert = convertToScalableVector(ContainerVT, ToInsert, DAG, Subtarget);
4786 Res = DAG.getNode(RISCVISD::VMV_V_V_VL, DL, ContainerVT, InPlace, ToInsert,
4789 Res = getVSlideup(DAG, Subtarget, DL, ContainerVT, InPlace, ToInsert,
4833 MVT ContainerVT = getContainerForFixedLengthVector(DAG, VT, Subtarget);
4834 auto [TrueMask, VL] = getDefaultVLOps(VT, ContainerVT, DL, DAG, Subtarget);
4841 MVT IntVT = ContainerVT.changeVectorElementTypeToInteger();
4845 IntVT, convertToScalableVector(ContainerVT, V2, DAG, Subtarget));
4849 Vec = DAG.getBitcast(ContainerVT, Vec);
4858 auto Vec = DAG.getNode(OpCode, DL, ContainerVT,
4859 DAG.getUNDEF(ContainerVT),
4860 convertToScalableVector(ContainerVT, V2, DAG, Subtarget),
5145 EVT ContainerVT = getContainerForFixedLengthVector(DAG, VT, Subtarget);
5150 unsigned NumElts = ContainerVT.getVectorMinNumElements();
5156 V1 = convertToScalableVector(ContainerVT, V1, DAG, Subtarget);
5157 V2 = convertToScalableVector(ContainerVT, V2, DAG, Subtarget);
5210 SDValue Vec = DAG.getUNDEF(ContainerVT);
5239 Vec = DAG.getNode(ISD::INSERT_SUBVECTOR, DL, ContainerVT, Vec, V,
5389 MVT ContainerVT = getContainerForFixedLengthVector(DAG, VT, Subtarget);
5391 auto [TrueMask, VL] = getDefaultVLOps(VT, ContainerVT, DL, DAG, Subtarget);
5420 SDVTList VTs = DAG.getVTList({ContainerVT, MVT::Other});
5425 DAG.getUNDEF(ContainerVT),
5437 MVT SplatVT = ContainerVT;
5443 SplatVT = ContainerVT.changeVectorElementType(SVT);
5464 DAG.getNode(Opc, DL, SplatVT, DAG.getUNDEF(ContainerVT), V, VL);
5465 Splat = DAG.getBitcast(ContainerVT, Splat);
5469 V1 = convertToScalableVector(ContainerVT, V1, DAG, Subtarget);
5471 SDValue Gather = DAG.getNode(RISCVISD::VRGATHER_VX_VL, DL, ContainerVT,
5473 DAG.getUNDEF(ContainerVT), TrueMask, VL);
5507 LoV = convertToScalableVector(ContainerVT, LoV, DAG, Subtarget);
5511 HiV = convertToScalableVector(ContainerVT, HiV, DAG, Subtarget);
5518 SDValue Res = DAG.getUNDEF(ContainerVT);
5522 Res = getVSlidedown(DAG, Subtarget, DL, ContainerVT, Res, HiV,
5526 Res = getVSlideup(DAG, Subtarget, DL, ContainerVT, Res, LoV,
5549 if (SDValue Src = getSingleShuffleSrc(VT, ContainerVT, V1, V2))
5678 ContainerVT.changeVectorElementType(IndexVT.getScalarType());
5680 V1 = convertToScalableVector(ContainerVT, V1, DAG, Subtarget);
5691 SDValue Gather = DAG.getNode(GatherVVOpc, DL, ContainerVT, V1, LHSIndices,
5692 DAG.getUNDEF(ContainerVT), TrueMask, VL);
5780 MVT ContainerVT = VT;
5786 Mask = convertToScalableVector(getMaskTypeFor(ContainerVT), Mask, DAG,
5826 ContainerVT = getContainerForFixedLengthVector(VT);
5827 Src = convertToScalableVector(ContainerVT, Src, DAG, Subtarget);
5830 std::tie(Mask, VL) = getDefaultVLOps(VT, ContainerVT, DL, DAG, Subtarget);
5834 MVT::getVectorVT(FloatEltVT, ContainerVT.getVectorElementCount());
5900 MVT ContainerVT = getContainerForFixedLengthVector(SrcVT);
5901 Source = convertToScalableVector(ContainerVT, Source, DAG, Subtarget);
5902 Mask = convertToScalableVector(getMaskTypeFor(ContainerVT), Mask, DAG,
5904 SrcVT = ContainerVT;
6143 MVT ContainerVT = getContainerForFixedLengthVector(VT);
6162 DAG.getNode(RISCVISD::SETCC_VL, DL, ContainerVT,
6164 DAG.getUNDEF(ContainerVT), Mask, VL});
6174 SDValue VMSNE = DAG.getNode(RISCVISD::SETCC_VL, DL, ContainerVT,
6176 DAG.getUNDEF(ContainerVT), Mask, VL});
6226 MVT ContainerVT = VT;
6228 ContainerVT = getContainerForFixedLengthVector(DAG, VT, Subtarget);
6229 X = convertToScalableVector(ContainerVT, X, DAG, Subtarget);
6230 Y = convertToScalableVector(ContainerVT, Y, DAG, Subtarget);
6237 Mask = convertToScalableVector(getMaskTypeFor(ContainerVT), Mask, DAG,
6241 std::tie(Mask, VL) = getDefaultVLOps(VT, ContainerVT, DL, DAG, Subtarget);
6248 DAG.getUNDEF(ContainerVT), Mask, VL});
6249 NewY = DAG.getNode(RISCVISD::VMERGE_VL, DL, ContainerVT, XIsNonNan, Y, X,
6250 DAG.getUNDEF(ContainerVT), VL);
6257 DAG.getUNDEF(ContainerVT), Mask, VL});
6258 NewX = DAG.getNode(RISCVISD::VMERGE_VL, DL, ContainerVT, YIsNonNan, X, Y,
6259 DAG.getUNDEF(ContainerVT), VL);
6266 SDValue Res = DAG.getNode(Opc, DL, ContainerVT, NewX, NewY,
6267 DAG.getUNDEF(ContainerVT), Mask, VL);
6832 MVT ContainerVT = VT;
6834 ContainerVT = getContainerForFixedLengthVector(VT);
6835 SDValue VL = getDefaultVLOps(VT, ContainerVT, DL, DAG, Subtarget).second;
6839 V = DAG.getNode(RISCVISD::VFMV_S_F_VL, DL, ContainerVT,
6840 DAG.getUNDEF(ContainerVT), Scalar, VL);
6843 V = DAG.getNode(RISCVISD::VMV_S_X_VL, DL, ContainerVT,
6844 DAG.getUNDEF(ContainerVT), Scalar, VL);
7072 MVT ContainerVT = getContainerForFixedLengthVector(VT);
7074 assert(ContainerVT.getVectorElementCount() == SrcContainerVT.getVectorElementCount() &&
7077 auto [Mask, VL] = getDefaultVLOps(VT, ContainerVT, DL, DAG, Subtarget);
7081 Src = DAG.getNode(RVVOpc, DL, DAG.getVTList(ContainerVT, MVT::Other),
7086 Src = DAG.getNode(RVVOpc, DL, ContainerVT, Src, Mask, VL);
7240 MVT ContainerVT = getContainerForFixedLengthVector(Op.getSimpleValueType());
7242 DAG.getUNDEF(ContainerVT), DAG, Subtarget);
7289 MVT ContainerVT = VT;
7291 ContainerVT = ::getContainerForFixedLengthVector(DAG, VT, Subtarget);
7302 ContainerVT.bitsGE(getLMUL1VT(ContainerVT))) {
8731 MVT ContainerVT = VecVT;
8733 ContainerVT = getContainerForFixedLengthVector(VecVT);
8735 auto VL = getDefaultVLOps(VecVT, ContainerVT, DL, DAG, Subtarget).second;
8738 splatPartsI64WithVL(DL, ContainerVT, SDValue(), Lo, Hi, VL, DAG);
8765 MVT ContainerVT = getContainerForFixedLengthVector(VecVT);
8767 MVT::getVectorVT(MVT::i1, ContainerVT.getVectorElementCount());
8771 SDValue VL = getDefaultVLOps(VecVT, ContainerVT, DL, DAG, Subtarget).second;
8777 SplatZero = DAG.getNode(RISCVISD::VMV_V_X_VL, DL, ContainerVT,
8778 DAG.getUNDEF(ContainerVT), SplatZero, VL);
8779 SplatTrueVal = DAG.getNode(RISCVISD::VMV_V_X_VL, DL, ContainerVT,
8780 DAG.getUNDEF(ContainerVT), SplatTrueVal, VL);
8782 DAG.getNode(RISCVISD::VMERGE_VL, DL, ContainerVT, CC, SplatTrueVal,
8783 SplatZero, DAG.getUNDEF(ContainerVT), VL);
8801 MVT ContainerVT = MVT::getVectorVT(VT.getVectorElementType(),
8805 convertToScalableVector(ContainerVT, Op.getOperand(0), DAG, Subtarget);
8808 auto [Mask, VL] = getDefaultVLOps(VT, ContainerVT, DL, DAG, Subtarget);
8834 MVT ContainerVT = VecVT;
8837 ContainerVT = getContainerForFixedLengthVector(VecVT);
8838 Src = convertToScalableVector(ContainerVT, Src, DAG, Subtarget);
8848 getDefaultVLOps(VecVT, ContainerVT, DL, DAG, Subtarget);
8854 SplatOne = DAG.getNode(RISCVISD::VMV_V_X_VL, DL, ContainerVT,
8855 DAG.getUNDEF(ContainerVT), SplatOne, VL);
8856 SplatZero = DAG.getNode(RISCVISD::VMV_V_X_VL, DL, ContainerVT,
8857 DAG.getUNDEF(ContainerVT), SplatZero, VL);
8859 MVT MaskContainerVT = ContainerVT.changeVectorElementType(MVT::i1);
8860 SDValue Trunc = DAG.getNode(RISCVISD::AND_VL, DL, ContainerVT, Src, SplatOne,
8861 DAG.getUNDEF(ContainerVT), Mask, VL);
8897 MVT ContainerVT = SrcVT;
8904 ContainerVT = getContainerForFixedLengthVector(SrcVT);
8905 Src = convertToScalableVector(ContainerVT, Src, DAG, Subtarget);
8907 MVT MaskVT = getMaskTypeFor(ContainerVT);
8915 getDefaultVLOps(SrcVT, ContainerVT, DL, DAG, Subtarget);
8928 MVT ResultVT = ContainerVT.changeVectorElementType(SrcEltVT);
8946 MVT ContainerVT = VT;
8949 ContainerVT =
8954 auto [Mask, VL] = getDefaultVLOps(SrcVT, ContainerVT, DL, DAG, Subtarget);
8967 MVT InterVT = ContainerVT.changeVectorElementType(MVT::f32);
8976 SDValue Res = DAG.getNode(ConvOpc, DL, DAG.getVTList(ContainerVT, MVT::Other),
9016 MVT ContainerVT = VT;
9024 ContainerVT =
9028 MVT MaskVT = getMaskTypeFor(ContainerVT);
9035 getDefaultVLOps(SrcVT, ContainerVT, DL, DAG, Subtarget);
9040 Src = DAG.getNode(ConvOpc, DL, ContainerVT, Src, Mask, VL);
9049 MVT InterVT = ContainerVT.changeVectorElementType(MVT::f32);
9053 DAG.getNode(ConvOpc, DL, ContainerVT, IntermediateConv, Mask, VL);
9120 MVT ContainerVT = VecVT;
9123 ContainerVT = getContainerForFixedLengthVector(VecVT);
9124 Vec = convertToScalableVector(ContainerVT, Vec, DAG, Subtarget);
9129 MVT OrigContainerVT = ContainerVT;
9135 if (auto ShrunkVT = getSmallestVTForIndex(ContainerVT, OrigIdx,
9137 ContainerVT = *ShrunkVT;
9144 const MVT M1VT = getLMUL1VT(ContainerVT);
9146 VLEN && ContainerVT.bitsGT(M1VT)) {
9155 ContainerVT = M1VT;
9159 Vec = DAG.getNode(ISD::EXTRACT_SUBVECTOR, DL, ContainerVT, Vec,
9176 auto [Mask, VL] = getDefaultVLOps(VecVT, ContainerVT, DL, DAG, Subtarget);
9186 Vec = DAG.getNode(Opc, DL, ContainerVT, Vec, Val, VL);
9195 ValInVec = lowerScalarInsert(Val, VL, ContainerVT, DL, DAG, Subtarget);
9204 MVT::getVectorVT(MVT::i32, ContainerVT.getVectorElementCount() * 2);
9221 ValInVec = DAG.getBitcast(ContainerVT, ValInVec);
9242 ValInVec = DAG.getBitcast(ContainerVT, ValInVec);
9254 SDValue Slideup = getVSlideup(DAG, Subtarget, DL, ContainerVT, Vec, ValInVec,
9281 MVT ContainerVT = VecVT;
9283 ContainerVT = getContainerForFixedLengthVector(VecVT);
9284 Vec = convertToScalableVector(ContainerVT, Vec, DAG, Subtarget);
9286 auto [Mask, VL] = getDefaultVLOps(VecVT, ContainerVT, DL, DAG, Subtarget);
9351 MVT ContainerVT = VecVT;
9353 ContainerVT = getContainerForFixedLengthVector(VecVT);
9354 Vec = convertToScalableVector(ContainerVT, Vec, DAG, Subtarget);
9364 MVT M1VT = getLMUL1VT(ContainerVT);
9375 ContainerVT = M1VT;
9387 getSmallestVTForIndex(ContainerVT, *MaxIdx, DL, DAG, Subtarget)) {
9388 ContainerVT = *SmallerVT;
9389 Vec = DAG.getNode(ISD::EXTRACT_SUBVECTOR, DL, ContainerVT, Vec,
9406 MVT LMUL2VT = getLMUL1VT(ContainerVT).getDoubleNumVectorElementsVT();
9407 if (ContainerVT.bitsGT(LMUL2VT) && VecVT.isFixedLengthVector())
9413 auto [Mask, VL] = getDefaultVLOps(1, ContainerVT, DL, DAG, Subtarget);
9414 Vec = getVSlidedown(DAG, Subtarget, DL, ContainerVT,
9415 DAG.getUNDEF(ContainerVT), Vec, Idx, Mask, VL);
9650 MVT ContainerVT = OpVT;
9652 ContainerVT = getContainerForFixedLengthVector(DAG, OpVT, Subtarget);
9653 Op0 = convertToScalableVector(ContainerVT, Op0, DAG, Subtarget);
9657 auto [Mask, VL] = getDefaultVLOps(OpVT, ContainerVT, DL, DAG, Subtarget);
10038 MVT ContainerVT = getContainerForFixedLengthVector(VT);
10039 unsigned Sz = NF * ContainerVT.getVectorMinNumElements() *
10040 ContainerVT.getScalarSizeInBits();
10061 DAG.getNode(RISCVISD::TUPLE_EXTRACT, DL, ContainerVT,
10125 MVT ContainerVT = getContainerForFixedLengthVector(VT);
10126 unsigned Sz = NF * ContainerVT.getVectorMinNumElements() *
10127 ContainerVT.getScalarSizeInBits();
10141 ContainerVT, FixedIntrinsic->getOperand(2 + i), DAG, Subtarget),
10243 MVT ContainerVT = VecVT;
10245 ContainerVT = getContainerForFixedLengthVector(VecVT);
10246 Vec = convertToScalableVector(ContainerVT, Vec, DAG, Subtarget);
10255 getDefaultVLOps(VecVT, ContainerVT, DL, DAG, Subtarget);
10265 SDValue TrueMask = DAG.getNode(RISCVISD::VMSET_VL, DL, ContainerVT, VL);
10267 Vec = DAG.getNode(RISCVISD::VMXOR_VL, DL, ContainerVT, Vec, TrueMask, VL);
10269 Vec = DAG.getNode(ISD::XOR, DL, ContainerVT, Vec, TrueMask);
10373 MVT ContainerVT = VecVT;
10375 ContainerVT = getContainerForFixedLengthVector(VecVT);
10376 Vec = convertToScalableVector(ContainerVT, Vec, DAG, Subtarget);
10379 auto [Mask, VL] = getDefaultVLOps(VecVT, ContainerVT, DL, DAG, Subtarget);
10444 MVT ContainerVT = VecVT;
10446 ContainerVT = getContainerForFixedLengthVector(VecVT);
10447 VectorVal = convertToScalableVector(ContainerVT, VectorVal, DAG, Subtarget);
10451 auto [Mask, VL] = getDefaultVLOps(VecVT, ContainerVT, DL, DAG, Subtarget);
10493 auto ContainerVT = getContainerForFixedLengthVector(VecVT);
10494 Vec = convertToScalableVector(ContainerVT, Vec, DAG, Subtarget);
10582 MVT ContainerVT = VecVT;
10584 ContainerVT = getContainerForFixedLengthVector(VecVT);
10585 Vec = convertToScalableVector(ContainerVT, Vec, DAG, Subtarget);
10588 SubVec = DAG.getNode(ISD::INSERT_SUBVECTOR, DL, ContainerVT,
10589 DAG.getUNDEF(ContainerVT), SubVec,
10593 getDefaultVLOps(VecVT, ContainerVT, DL, DAG, Subtarget).first;
10608 DAG.getNode(RISCVISD::VMV_V_V_VL, DL, ContainerVT, Vec, SubVec, VL);
10611 SubVec = getVSlideup(DAG, Subtarget, DL, ContainerVT, Vec, SubVec,
10821 MVT ContainerVT = VecVT;
10823 ContainerVT = getContainerForFixedLengthVector(VecVT);
10824 Vec = convertToScalableVector(ContainerVT, Vec, DAG, Subtarget);
10830 getSmallestVTForIndex(ContainerVT, LastIdx, DL, DAG, Subtarget)) {
10831 ContainerVT = *ShrunkVT;
10832 Vec = DAG.getNode(ISD::EXTRACT_SUBVECTOR, DL, ContainerVT, Vec,
10837 getDefaultVLOps(VecVT, ContainerVT, DL, DAG, Subtarget).first;
10843 getVSlidedown(DAG, Subtarget, DL, ContainerVT,
10844 DAG.getUNDEF(ContainerVT), Vec, SlidedownAmt, Mask, VL);
11184 MVT ContainerVT = VecVT;
11187 ContainerVT = getContainerForFixedLengthVector(VecVT);
11188 Vec = convertToScalableVector(ContainerVT, Vec, DAG, Subtarget);
11192 auto [Mask, VL] = getDefaultVLOps(VecVT, ContainerVT, DL, DAG, Subtarget);
11208 if (ContainerVT.bitsGT(getLMUL1VT(ContainerVT)) &&
11209 ContainerVT.getVectorElementCount().isKnownMultipleOf(2)) {
11213 SDValue Concat = DAG.getNode(ISD::CONCAT_VECTORS, DL, ContainerVT, Hi, Lo);
11225 DAG.getElementCount(DL, XLenVT, ContainerVT.getVectorElementCount()),
11228 getVSlidedown(DAG, Subtarget, DL, ContainerVT,
11229 DAG.getUNDEF(ContainerVT), Concat, Offset, Mask, VL);
11235 unsigned EltSize = ContainerVT.getScalarSizeInBits();
11236 unsigned MinSize = ContainerVT.getSizeInBits().getKnownMinValue();
11244 MVT IntVT = ContainerVT.changeVectorElementTypeToInteger();
11269 IntVT = MVT::getVectorVT(MVT::i16, ContainerVT.getVectorElementCount());
11302 SDValue Gather = DAG.getNode(GatherOpc, DL, ContainerVT, Vec, Indices,
11303 DAG.getUNDEF(ContainerVT), Mask, VL);
11356 MVT ContainerVT = getContainerForFixedLengthVector(VT);
11361 RISCVTargetLowering::computeVLMAXBounds(ContainerVT, Subtarget);
11363 getLMUL1VT(ContainerVT).bitsLE(ContainerVT)) {
11366 DAG.getLoad(ContainerVT, DL, Load->getChain(), Load->getBasePtr(),
11380 Ops.push_back(DAG.getUNDEF(ContainerVT));
11383 SDVTList VTs = DAG.getVTList({ContainerVT, MVT::Other});
11415 MVT ContainerVT = getContainerForFixedLengthVector(VT);
11418 convertToScalableVector(ContainerVT, StoreVal, DAG, Subtarget);
11423 RISCVTargetLowering::computeVLMAXBounds(ContainerVT, Subtarget);
11425 getLMUL1VT(ContainerVT).bitsLE(ContainerVT)) {
11471 MVT ContainerVT = VT;
11473 ContainerVT = getContainerForFixedLengthVector(VT);
11474 PassThru = convertToScalableVector(ContainerVT, PassThru, DAG, Subtarget);
11476 MVT MaskVT = getMaskTypeFor(ContainerVT);
11482 VL = getDefaultVLOps(VT, ContainerVT, DL, DAG, Subtarget).second;
11496 Ops.push_back(DAG.getUNDEF(ContainerVT));
11506 SDVTList VTs = DAG.getVTList({ContainerVT, MVT::Other});
11512 MVT IndexVT = ContainerVT;
11513 if (ContainerVT.isFloatingPoint())
11514 IndexVT = ContainerVT.changeVectorElementTypeToInteger();
11535 DL, ContainerVT, Result, Iota, PassThru, Mask, ExpandingVL);
11573 MVT ContainerVT = VT;
11575 ContainerVT = getContainerForFixedLengthVector(VT);
11577 Val = convertToScalableVector(ContainerVT, Val, DAG, Subtarget);
11579 MVT MaskVT = getMaskTypeFor(ContainerVT);
11585 VL = getDefaultVLOps(VT, ContainerVT, DL, DAG, Subtarget).second;
11588 Val = DAG.getNode(ISD::INTRINSIC_WO_CHAIN, DL, ContainerVT,
11590 DAG.getUNDEF(ContainerVT), Val, Mask, VL);
11618 MVT ContainerVT = VT;
11620 ContainerVT = getContainerForFixedLengthVector(VT);
11621 MVT MaskVT = getMaskTypeFor(ContainerVT);
11622 Val = convertToScalableVector(ContainerVT, Val, DAG, Subtarget);
11624 Passthru = convertToScalableVector(ContainerVT, Passthru, DAG, Subtarget);
11627 SDValue VL = getDefaultVLOps(VT, ContainerVT, DL, DAG, Subtarget).second;
11629 DAG.getNode(ISD::INTRINSIC_WO_CHAIN, DL, ContainerVT,
11643 MVT ContainerVT = getContainerForFixedLengthVector(InVT);
11648 convertToScalableVector(ContainerVT, Op.getOperand(0), DAG, Subtarget);
11650 convertToScalableVector(ContainerVT, Op.getOperand(1), DAG, Subtarget);
11653 auto [Mask, VL] = getDefaultVLOps(VT.getVectorNumElements(), ContainerVT, DL,
11655 MVT MaskVT = getMaskTypeFor(ContainerVT);
11761 MVT ContainerVT = VT;
11763 ContainerVT = getContainerForFixedLengthVector(VT);
11764 X = convertToScalableVector(ContainerVT, X, DAG, Subtarget);
11771 Mask = convertToScalableVector(getMaskTypeFor(ContainerVT), Mask, DAG,
11775 std::tie(Mask, VL) = getDefaultVLOps(VT, ContainerVT, DL, DAG, Subtarget);
11778 RISCVISD::VMV_V_X_VL, DL, ContainerVT, DAG.getUNDEF(ContainerVT),
11780 SDValue NegX = DAG.getNode(RISCVISD::SUB_VL, DL, ContainerVT, SplatZero, X,
11781 DAG.getUNDEF(ContainerVT), Mask, VL);
11782 SDValue Max = DAG.getNode(RISCVISD::SMAX_VL, DL, ContainerVT, X, NegX,
11783 DAG.getUNDEF(ContainerVT), Mask, VL);
11799 MVT ContainerVT = getContainerForFixedLengthVector(VT);
11800 Mag = convertToScalableVector(ContainerVT, Mag, DAG, Subtarget);
11801 Sign = convertToScalableVector(ContainerVT, Sign, DAG, Subtarget);
11803 auto [Mask, VL] = getDefaultVLOps(VT, ContainerVT, DL, DAG, Subtarget);
11805 SDValue CopySign = DAG.getNode(RISCVISD::FCOPYSIGN_VL, DL, ContainerVT, Mag,
11806 Sign, DAG.getUNDEF(ContainerVT), Mask, VL);
11814 MVT ContainerVT = getContainerForFixedLengthVector(VT);
11817 MVT::getVectorVT(MVT::i1, ContainerVT.getVectorElementCount());
11822 convertToScalableVector(ContainerVT, Op.getOperand(1), DAG, Subtarget);
11824 convertToScalableVector(ContainerVT, Op.getOperand(2), DAG, Subtarget);
11827 SDValue VL = getDefaultVLOps(VT, ContainerVT, DL, DAG, Subtarget).second;
11829 SDValue Select = DAG.getNode(RISCVISD::VMERGE_VL, DL, ContainerVT, CC, Op1,
11830 Op2, DAG.getUNDEF(ContainerVT), VL);
11842 MVT ContainerVT = getContainerForFixedLengthVector(VT);
11858 Ops.push_back(convertToScalableVector(ContainerVT, V, DAG, Subtarget));
11862 auto [Mask, VL] = getDefaultVLOps(VT, ContainerVT, DL, DAG, Subtarget);
11864 Ops.push_back(DAG.getUNDEF(ContainerVT));
11873 DAG.getNode(NewOpc, DL, DAG.getVTList(ContainerVT, MVT::Other), Ops,
11880 DAG.getNode(NewOpc, DL, ContainerVT, Ops, Op->getFlags());
11897 MVT ContainerVT = VT;
11899 ContainerVT = getContainerForFixedLengthVector(VT);
11910 Ops.push_back(DAG.getUNDEF(ContainerVT));
11919 Ops.push_back(DAG.getUNDEF(ContainerVT));
11935 MVT ContainerVT = getContainerForFixedLengthVector(OpVT);
11938 Ops.push_back(convertToScalableVector(ContainerVT, V, DAG, Subtarget));
11944 SDValue VPOp = DAG.getNode(RISCVISDOpc, DL, ContainerVT, Ops, Op->getFlags());
11958 MVT ContainerVT = VT;
11960 ContainerVT = getContainerForFixedLengthVector(VT);
11961 MVT SrcVT = MVT::getVectorVT(MVT::i1, ContainerVT.getVectorElementCount());
11967 SDValue ZeroSplat = DAG.getNode(RISCVISD::VMV_V_X_VL, DL, ContainerVT,
11968 DAG.getUNDEF(ContainerVT), Zero, VL);
11972 SDValue Splat = DAG.getNode(RISCVISD::VMV_V_X_VL, DL, ContainerVT,
11973 DAG.getUNDEF(ContainerVT), SplatValue, VL);
11975 SDValue Result = DAG.getNode(RISCVISD::VMERGE_VL, DL, ContainerVT, Src, Splat,
11976 ZeroSplat, DAG.getUNDEF(ContainerVT), VL);
11993 MVT ContainerVT = VT;
11995 ContainerVT = getContainerForFixedLengthVector(VT);
11996 Op1 = convertToScalableVector(ContainerVT, Op1, DAG, Subtarget);
11997 Op2 = convertToScalableVector(ContainerVT, Op2, DAG, Subtarget);
12001 SDValue AllOneMask = DAG.getNode(RISCVISD::VMSET_VL, DL, ContainerVT, VL);
12008 Result = DAG.getNode(RISCVISD::VMXOR_VL, DL, ContainerVT, Op1, Op2, VL);
12013 DAG.getNode(RISCVISD::VMXOR_VL, DL, ContainerVT, Op1, Op2, VL);
12015 DAG.getNode(RISCVISD::VMXOR_VL, DL, ContainerVT, Temp, AllOneMask, VL);
12023 DAG.getNode(RISCVISD::VMXOR_VL, DL, ContainerVT, Op1, AllOneMask, VL);
12024 Result = DAG.getNode(RISCVISD::VMAND_VL, DL, ContainerVT, Temp, Op2, VL);
12032 DAG.getNode(RISCVISD::VMXOR_VL, DL, ContainerVT, Op2, AllOneMask, VL);
12033 Result = DAG.getNode(RISCVISD::VMAND_VL, DL, ContainerVT, Op1, Temp, VL);
12041 DAG.getNode(RISCVISD::VMXOR_VL, DL, ContainerVT, Op1, AllOneMask, VL);
12042 Result = DAG.getNode(RISCVISD::VMXOR_VL, DL, ContainerVT, Temp, Op2, VL);
12050 DAG.getNode(RISCVISD::VMXOR_VL, DL, ContainerVT, Op2, AllOneMask, VL);
12051 Result = DAG.getNode(RISCVISD::VMXOR_VL, DL, ContainerVT, Temp, Op1, VL);
12212 MVT ContainerVT = VT;
12214 ContainerVT = getContainerForFixedLengthVector(VT);
12215 Mask = convertToScalableVector(ContainerVT, Mask, DAG, Subtarget);
12216 TrueVal = convertToScalableVector(ContainerVT, TrueVal, DAG, Subtarget);
12217 FalseVal = convertToScalableVector(ContainerVT, FalseVal, DAG, Subtarget);
12221 MVT PromotedVT = ContainerVT.changeVectorElementType(MVT::i8);
12243 SDValue TrueMask = DAG.getNode(RISCVISD::VMSET_VL, DL, ContainerVT, VL);
12245 RISCVISD::SETCC_VL, DL, ContainerVT,
12247 DAG.getUNDEF(getMaskTypeFor(ContainerVT)), TrueMask, VLMax});
12268 MVT ContainerVT = VT;
12270 ContainerVT = getContainerForFixedLengthVector(VT);
12271 Op1 = convertToScalableVector(ContainerVT, Op1, DAG, Subtarget);
12272 Op2 = convertToScalableVector(ContainerVT, Op2, DAG, Subtarget);
12273 MVT MaskVT = getMaskTypeFor(ContainerVT);
12279 ContainerVT = ContainerVT.changeVectorElementType(MVT::i8);
12282 SDValue SplatOneOp1 = DAG.getNode(RISCVISD::VMV_V_X_VL, DL, ContainerVT,
12283 DAG.getUNDEF(ContainerVT),
12285 SDValue SplatZeroOp1 = DAG.getNode(RISCVISD::VMV_V_X_VL, DL, ContainerVT,
12286 DAG.getUNDEF(ContainerVT),
12288 Op1 = DAG.getNode(RISCVISD::VMERGE_VL, DL, ContainerVT, Op1, SplatOneOp1,
12289 SplatZeroOp1, DAG.getUNDEF(ContainerVT), EVL1);
12291 SDValue SplatOneOp2 = DAG.getNode(RISCVISD::VMV_V_X_VL, DL, ContainerVT,
12292 DAG.getUNDEF(ContainerVT),
12294 SDValue SplatZeroOp2 = DAG.getNode(RISCVISD::VMV_V_X_VL, DL, ContainerVT,
12295 DAG.getUNDEF(ContainerVT),
12297 Op2 = DAG.getNode(RISCVISD::VMERGE_VL, DL, ContainerVT, Op2, SplatOneOp2,
12298 SplatZeroOp2, DAG.getUNDEF(ContainerVT), EVL2);
12316 getVSlidedown(DAG, Subtarget, DL, ContainerVT, DAG.getUNDEF(ContainerVT),
12318 SDValue Result = getVSlideup(DAG, Subtarget, DL, ContainerVT, SlideDown, Op2,
12324 RISCVISD::SETCC_VL, DL, ContainerVT.changeVectorElementType(MVT::i1),
12325 {Result, DAG.getConstant(0, DL, ContainerVT),
12326 DAG.getCondCode(ISD::SETNE), DAG.getUNDEF(getMaskTypeFor(ContainerVT)),
12343 MVT ContainerVT = VT;
12345 ContainerVT = getContainerForFixedLengthVector(VT);
12346 MVT MaskVT = getMaskTypeFor(ContainerVT);
12351 lowerScalarSplat(SDValue(), Val, VL, ContainerVT, DL, DAG, Subtarget);
12369 MVT ContainerVT = VT;
12371 ContainerVT = getContainerForFixedLengthVector(VT);
12372 Op1 = convertToScalableVector(ContainerVT, Op1, DAG, Subtarget);
12373 MVT MaskVT = getMaskTypeFor(ContainerVT);
12377 MVT GatherVT = ContainerVT;
12378 MVT IndicesVT = ContainerVT.changeVectorElementTypeToInteger();
12380 bool IsMaskVector = ContainerVT.getVectorElementType() == MVT::i1;
12382 GatherVT = IndicesVT = ContainerVT.changeVectorElementType(MVT::i8);
12440 DAG.getNode(RISCVISD::SETCC_VL, DL, ContainerVT,
12443 DAG.getUNDEF(getMaskTypeFor(ContainerVT)), Mask, EVL});
12469 RISCVISD::SETCC_VL, DL, ContainerVT,
12471 DAG.getUNDEF(getMaskTypeFor(ContainerVT)), Mask, EVL});
12490 MVT ContainerVT = VT;
12493 ContainerVT = getContainerForFixedLengthVector(VT);
12494 Op1 = convertToScalableVector(ContainerVT, Op1, DAG, Subtarget);
12495 Op2 = convertToScalableVector(ContainerVT, Op2, DAG, Subtarget);
12499 SDValue Val = DAG.getNode(getRISCVVLOp(Op), DL, ContainerVT, Op1, Op2, VL);
12510 MVT ContainerVT = VT;
12512 ContainerVT = getContainerForFixedLengthVector(VT);
12514 SDVTList VTs = DAG.getVTList({ContainerVT, MVT::Other});
12525 DAG.getUNDEF(ContainerVT), VPNode->getBasePtr(),
12529 MVT MaskVT = ContainerVT.changeVectorElementType(MVT::i1);
12559 MVT ContainerVT = VT;
12561 ContainerVT = getContainerForFixedLengthVector(VT);
12562 StoreVal = convertToScalableVector(ContainerVT, StoreVal, DAG, Subtarget);
12576 MVT MaskVT = ContainerVT.changeVectorElementType(MVT::i1);
12638 MVT ContainerVT = VT;
12640 ContainerVT = getContainerForFixedLengthVector(VT);
12642 ContainerVT.getVectorElementCount());
12647 MVT MaskVT = getMaskTypeFor(ContainerVT);
12649 PassThru = convertToScalableVector(ContainerVT, PassThru, DAG, Subtarget);
12654 VL = getDefaultVLOps(VT, ContainerVT, DL, DAG, Subtarget).second;
12665 Ops.push_back(DAG.getUNDEF(ContainerVT));
12676 SDVTList VTs = DAG.getVTList({ContainerVT, MVT::Other});
12736 MVT ContainerVT = VT;
12738 ContainerVT = getContainerForFixedLengthVector(VT);
12740 ContainerVT.getVectorElementCount());
12743 Val = convertToScalableVector(ContainerVT, Val, DAG, Subtarget);
12746 MVT MaskVT = getMaskTypeFor(ContainerVT);
12752 VL = getDefaultVLOps(VT, ContainerVT, DL, DAG, Subtarget).second;
13373 MVT ContainerVT = VecVT;
13375 ContainerVT = getContainerForFixedLengthVector(VecVT);
13376 Vec = convertToScalableVector(ContainerVT, Vec, DAG, Subtarget);
13382 auto [Mask, VL] = getDefaultVLOps(1, ContainerVT, DL, DAG, Subtarget);
13387 Vec = getVSlidedown(DAG, Subtarget, DL, ContainerVT,
13388 DAG.getUNDEF(ContainerVT), Vec, Idx, Mask, VL);
13396 SDValue ThirtyTwoV = DAG.getNode(RISCVISD::VMV_V_X_VL, DL, ContainerVT,
13397 DAG.getUNDEF(ContainerVT),
13400 DAG.getNode(RISCVISD::SRL_VL, DL, ContainerVT, Vec, ThirtyTwoV,
13401 DAG.getUNDEF(ContainerVT), Mask, VL);
16109 MVT ContainerVT = VT.getSimpleVT();
16124 ContainerVT =
16125 getContainerForFixedLengthVector(DAG, ContainerVT, Subtarget);
16137 FpToInt = DAG.getNode(Opc, DL, ContainerVT, XVal, Mask, VL);
16141 FpToInt = DAG.getNode(Opc, DL, ContainerVT, XVal, Mask,
17665 MVT ContainerVT = getContainerForFixedLengthVector(DAG, SrcMVT, Subtarget);
17666 Src = convertToScalableVector(ContainerVT, Src, DAG, Subtarget);
17669 auto [Mask, VL] = getDefaultVLOps(SrcMVT, ContainerVT, DL, DAG, Subtarget);
22281 MVT ContainerVT = VT.getSimpleVT();
22291 ContainerVT = getContainerForFixedLengthVector(VT.getSimpleVT());
22300 auto [LMUL, Fractional] = RISCVVType::decodeVLMUL(getLMUL(ContainerVT));