Lines Matching refs:NumElems
4144 unsigned NumElems = VT.getVectorNumElements(); in splitVector() local
4146 assert((NumElems % 2) == 0 && (SizeInBits % 2) == 0 && in splitVector()
4155 SDValue Hi = extractSubVector(Op, NumElems / 2, DAG, dl, SizeInBits / 2); in splitVector()
4342 unsigned NumElems = OpVT.getVectorNumElements(); in insert1BitVector() local
4360 assert(IdxVal + SubVecNumElems <= NumElems && in insert1BitVector()
4399 NumElems = WideOpVT.getVectorNumElements(); in insert1BitVector()
4400 unsigned ShiftLeft = NumElems - SubVecNumElems; in insert1BitVector()
4401 unsigned ShiftRight = NumElems - SubVecNumElems - IdxVal; in insert1BitVector()
4412 if (IdxVal + SubVecNumElems == NumElems) { in insert1BitVector()
4415 if (SubVecNumElems * 2 == NumElems) { in insert1BitVector()
4426 NumElems = WideOpVT.getVectorNumElements(); in insert1BitVector()
4427 SDValue ShiftBits = DAG.getTargetConstant(NumElems - IdxVal, dl, MVT::i8); in insert1BitVector()
4437 NumElems = WideOpVT.getVectorNumElements(); in insert1BitVector()
4442 unsigned ShiftLeft = NumElems - SubVecNumElems; in insert1BitVector()
4443 unsigned ShiftRight = NumElems - SubVecNumElems - IdxVal; in insert1BitVector()
4447 APInt Mask0 = APInt::getBitsSet(NumElems, IdxVal, IdxVal + SubVecNumElems); in insert1BitVector()
4449 SDValue CMask0 = DAG.getConstant(Mask0, dl, MVT::getIntegerVT(NumElems)); in insert1BitVector()
4469 unsigned LowShift = NumElems - IdxVal; in insert1BitVector()
4691 int NumElems = VT.getVectorNumElements(); in getShuffleVectorZeroOrUndef() local
4692 SmallVector<int, 16> MaskVec(NumElems); in getShuffleVectorZeroOrUndef()
4693 for (int i = 0; i != NumElems; ++i) in getShuffleVectorZeroOrUndef()
4695 MaskVec[i] = (i == Idx) ? NumElems : i; in getShuffleVectorZeroOrUndef()
5233 unsigned NumElems = VT.getVectorNumElements(); in getTargetShuffleMask() local
5249 DecodeBLENDMask(NumElems, ImmN, Mask); in getTargetShuffleMask()
5256 DecodeSHUFPMask(NumElems, MaskEltSize, ImmN, Mask); in getTargetShuffleMask()
5272 DecodeEXTRQIMask(NumElems, MaskEltSize, BitLen, BitIdx, Mask); in getTargetShuffleMask()
5283 DecodeINSERTQIMask(NumElems, MaskEltSize, BitLen, BitIdx, Mask); in getTargetShuffleMask()
5290 DecodeUNPCKHMask(NumElems, MaskEltSize, Mask); in getTargetShuffleMask()
5296 DecodeUNPCKLMask(NumElems, MaskEltSize, Mask); in getTargetShuffleMask()
5302 DecodeMOVHLPSMask(NumElems, Mask); in getTargetShuffleMask()
5308 DecodeMOVLHPSMask(NumElems, Mask); in getTargetShuffleMask()
5317 DecodeVALIGNMask(NumElems, ImmN, Mask); in getTargetShuffleMask()
5327 DecodePALIGNRMask(NumElems, ImmN, Mask); in getTargetShuffleMask()
5336 DecodePSLLDQMask(NumElems, ImmN, Mask); in getTargetShuffleMask()
5343 DecodePSRLDQMask(NumElems, ImmN, Mask); in getTargetShuffleMask()
5350 DecodePSHUFMask(NumElems, MaskEltSize, ImmN, Mask); in getTargetShuffleMask()
5356 DecodePSHUFHWMask(NumElems, ImmN, Mask); in getTargetShuffleMask()
5362 DecodePSHUFLWMask(NumElems, ImmN, Mask); in getTargetShuffleMask()
5367 DecodeZeroMoveLowMask(NumElems, Mask); in getTargetShuffleMask()
5375 DecodeVectorBroadcast(NumElems, Mask); in getTargetShuffleMask()
5386 DecodeVPERMILPMask(NumElems, MaskEltSize, RawMask, RawUndefs, Mask); in getTargetShuffleMask()
5406 DecodeVPERMMask(NumElems, ImmN, Mask); in getTargetShuffleMask()
5414 DecodeScalarMoveMask(NumElems, /* IsLoad */ false, Mask); in getTargetShuffleMask()
5420 DecodeVPERM2X128Mask(NumElems, ImmN, Mask); in getTargetShuffleMask()
5427 decodeVSHUF64x2FamilyMask(NumElems, MaskEltSize, ImmN, Mask); in getTargetShuffleMask()
5432 DecodeMOVSLDUPMask(NumElems, Mask); in getTargetShuffleMask()
5437 DecodeMOVSHDUPMask(NumElems, Mask); in getTargetShuffleMask()
5442 DecodeMOVDDUPMask(NumElems, Mask); in getTargetShuffleMask()
5455 DecodeVPERMIL2PMask(NumElems, MaskEltSize, CtrlImm, RawMask, RawUndefs, in getTargetShuffleMask()
6404 unsigned NumElems = VT.getVectorNumElements(); in getShuffleScalarElt() local
6413 SDValue Src = (Elt < (int)NumElems) ? SV->getOperand(0) : SV->getOperand(1); in getShuffleScalarElt()
6414 return getShuffleScalarElt(Src, Elt % NumElems, DAG, Depth + 1); in getShuffleScalarElt()
6421 int NumElems = (int)ShufVT.getVectorNumElements(); in getShuffleScalarElt() local
6434 assert(0 <= Elt && Elt < (2 * NumElems) && "Shuffle index out of range"); in getShuffleScalarElt()
6435 SDValue Src = (Elt < NumElems) ? ShuffleOps[0] : ShuffleOps[1]; in getShuffleScalarElt()
6436 return getShuffleScalarElt(Src, Elt % NumElems, DAG, Depth + 1); in getShuffleScalarElt()
6471 if (SrcVT.isVector() && SrcVT.getVectorNumElements() == NumElems) in getShuffleScalarElt()
6834 unsigned NumElems = VT.getVectorNumElements(); in LowerAsSplatVectorLoad() local
6836 EVT NVT = EVT::getVectorVT(*DAG.getContext(), PVT, NumElems); in LowerAsSplatVectorLoad()
6840 SmallVector<int, 8> Mask(NumElems, EltNo); in LowerAsSplatVectorLoad()
6903 unsigned NumElems = Elts.size(); in EltsFromConsecutiveLoads() local
6906 APInt LoadMask = APInt::getZero(NumElems); in EltsFromConsecutiveLoads()
6907 APInt ZeroMask = APInt::getZero(NumElems); in EltsFromConsecutiveLoads()
6908 APInt UndefMask = APInt::getZero(NumElems); in EltsFromConsecutiveLoads()
6910 SmallVector<LoadSDNode*, 8> Loads(NumElems, nullptr); in EltsFromConsecutiveLoads()
6911 SmallVector<int64_t, 8> ByteOffsets(NumElems, 0); in EltsFromConsecutiveLoads()
6915 for (unsigned i = 0; i < NumElems; ++i) { in EltsFromConsecutiveLoads()
6931 if ((NumElems * EltSizeInBits) != VT.getSizeInBits()) in EltsFromConsecutiveLoads()
6944 NumElems && in EltsFromConsecutiveLoads()
6948 if (UndefMask.popcount() == NumElems) in EltsFromConsecutiveLoads()
6950 if ((ZeroMask.popcount() + UndefMask.popcount()) == NumElems) in EltsFromConsecutiveLoads()
6979 return (0 <= BaseIdx && BaseIdx < (int)NumElems && LoadMask[BaseIdx] && in EltsFromConsecutiveLoads()
7027 (NumLoadedElts == (int)NumElems || IsDereferenceable) && in EltsFromConsecutiveLoads()
7038 if (NumElems == 1) in EltsFromConsecutiveLoads()
7048 if ((NumMaskElts % NumElems) == 0) { in EltsFromConsecutiveLoads()
7049 unsigned Scale = NumMaskElts / NumElems; in EltsFromConsecutiveLoads()
7051 for (unsigned i = 0; i < NumElems; ++i) { in EltsFromConsecutiveLoads()
7068 unsigned HalfNumElems = NumElems / 2; in EltsFromConsecutiveLoads()
7108 if (ZeroMask.isZero() && isPowerOf2_32(NumElems) && Subtarget.hasAVX() && in EltsFromConsecutiveLoads()
7110 for (unsigned SubElems = 1; SubElems < NumElems; SubElems *= 2) { in EltsFromConsecutiveLoads()
7123 for (unsigned i = 0; i != NumElems && Match; ++i) { in EltsFromConsecutiveLoads()
7555 unsigned NumElems = Op.getNumOperands(); in buildFromShuffleMostly() local
7559 SmallVector<int, 8> Mask(NumElems, -1); in buildFromShuffleMostly()
7561 for (unsigned i = 0; i != NumElems; ++i) { in buildFromShuffleMostly()
7601 Mask[i] = Idx + NumElems; in buildFromShuffleMostly()
8361 unsigned NumElems = VT.getVectorNumElements(); in lowerBuildVectorToBitOp() local
8367 for (unsigned i = 1; i < NumElems; ++i) in lowerBuildVectorToBitOp()
8779 unsigned NumElems = Op.getNumOperands(); in LowerBUILD_VECTOR() local
8793 APInt UndefMask = APInt::getZero(NumElems); in LowerBUILD_VECTOR()
8794 APInt FrozenUndefMask = APInt::getZero(NumElems); in LowerBUILD_VECTOR()
8795 APInt ZeroMask = APInt::getZero(NumElems); in LowerBUILD_VECTOR()
8796 APInt NonZeroMask = APInt::getZero(NumElems); in LowerBUILD_VECTOR()
8800 unsigned NumConstants = NumElems; in LowerBUILD_VECTOR()
8801 for (unsigned i = 0; i < NumElems; ++i) { in LowerBUILD_VECTOR()
8842 NumFrozenUndefElts >= 2 && NumFrozenUndefElts < NumElems) { in LowerBUILD_VECTOR()
8843 SmallVector<int, 16> BlendMask(NumElems, -1); in LowerBUILD_VECTOR()
8844 SmallVector<SDValue, 16> Elts(NumElems, DAG.getUNDEF(OpEltVT)); in LowerBUILD_VECTOR()
8845 for (unsigned i = 0; i < NumElems; ++i) { in LowerBUILD_VECTOR()
8854 BlendMask[i] += NumElems; in LowerBUILD_VECTOR()
8869 unsigned UpperElems = NumElems / 2; in LowerBUILD_VECTOR()
8874 NumUpperUndefsOrZeros >= (NumElems - (NumElems / 4))) in LowerBUILD_VECTOR()
8875 UpperElems = NumElems - (NumElems / 4); in LowerBUILD_VECTOR()
8878 MVT LowerVT = MVT::getVectorVT(EltVT, NumElems - UpperElems); in LowerBUILD_VECTOR()
8903 if (NumConstants == NumElems - 1 && NumNonZero != 1 && in LowerBUILD_VECTOR()
8912 SmallVector<Constant *, 16> ConstVecOps(NumElems, UndefValue::get(EltType)); in LowerBUILD_VECTOR()
8915 for (unsigned i = 0; i != NumElems; ++i) { in LowerBUILD_VECTOR()
8995 if (NumElems == 2 && Idx == 1 && in LowerBUILD_VECTOR()
9044 SmallVector<SDValue, 64> Ops(Op->op_begin(), Op->op_begin() + NumElems); in LowerBUILD_VECTOR()
9056 auto CanSplat = [](SDValue Op, unsigned NumElems, ArrayRef<SDValue> Ops) { in LowerBUILD_VECTOR() argument
9058 for (unsigned i = 2; i != NumElems; ++i) in LowerBUILD_VECTOR()
9063 if (CanSplat(Op, NumElems, Ops)) { in LowerBUILD_VECTOR()
9070 MVT BcastVT = MVT::getVectorVT(WideEltVT, NumElems / 2); in LowerBUILD_VECTOR()
9079 MVT HVT = MVT::getVectorVT(EltVT, NumElems / 2); in LowerBUILD_VECTOR()
9083 DAG.getBuildVector(HVT, dl, Op->ops().slice(0, NumElems / 2)); in LowerBUILD_VECTOR()
9085 HVT, dl, Op->ops().slice(NumElems / 2, NumElems /2)); in LowerBUILD_VECTOR()
9104 if (EVTBits == 8 && NumElems == 16) in LowerBUILD_VECTOR()
9109 if (EltVT == MVT::i16 && NumElems == 8) in LowerBUILD_VECTOR()
9115 if (EVTBits == 32 && NumElems == 4) in LowerBUILD_VECTOR()
9120 if (NumElems == 4 && NumZero > 0) { in LowerBUILD_VECTOR()
9121 SmallVector<SDValue, 8> Ops(NumElems); in LowerBUILD_VECTOR()
9153 static_cast<int>(Reverse2 ? NumElems+1 : NumElems), in LowerBUILD_VECTOR()
9154 static_cast<int>(Reverse2 ? NumElems : NumElems+1) in LowerBUILD_VECTOR()
9173 for (unsigned i = 1; i < NumElems; ++i) { in LowerBUILD_VECTOR()
9184 SmallVector<SDValue, 8> Ops(NumElems); in LowerBUILD_VECTOR()
9185 for (unsigned i = 0; i < NumElems; ++i) { in LowerBUILD_VECTOR()
9196 for (unsigned Scale = 1; Scale < NumElems; Scale *= 2) { in LowerBUILD_VECTOR()
9202 Mask.push_back(NumElems+i); in LowerBUILD_VECTOR()
9203 Mask.append(NumElems - Mask.size(), SM_SentinelUndef); in LowerBUILD_VECTOR()
9205 for (unsigned i = 0, e = NumElems / (2 * Scale); i != e; ++i) in LowerBUILD_VECTOR()
9304 unsigned NumElems = ResVT.getVectorNumElements(); in LowerCONCAT_VECTORSvXi1() local
9353 DAG.getIntPtrConstant(NumElems/2, dl)); in LowerCONCAT_VECTORSvXi1()
17478 int NumElems = VT.getVectorNumElements(); in lower1BitShuffle() local
17479 if ((Subtarget.hasBWI() && (NumElems >= 32)) || in lower1BitShuffle()
17480 (Subtarget.hasDQI() && (NumElems < 32))) in lower1BitShuffle()
20317 unsigned NumElems = SrcVT.getVectorNumElements(); in truncateVectorWithPACK() local
20318 if (NumElems < 2 || !isPowerOf2_32(NumElems) ) in truncateVectorWithPACK()
20323 assert(DstVT.getVectorNumElements() == NumElems && "Illegal truncation"); in truncateVectorWithPACK()
20328 EVT PackedVT = EVT::getVectorVT(Ctx, PackedSVT, NumElems); in truncateVectorWithPACK()
20411 EVT HalfPackedVT = EVT::getVectorVT(Ctx, PackedSVT, NumElems / 2); in truncateVectorWithPACK()
20572 unsigned NumElems = DstVT.getVectorNumElements(); in LowerTruncateVecPack() local
20574 (DstSVT == MVT::i8 || DstSVT == MVT::i16) && isPowerOf2_32(NumElems) && in LowerTruncateVecPack()
20575 NumElems >= 8)) in LowerTruncateVecPack()
20579 if (Subtarget.hasSSSE3() && NumElems == 8) { in LowerTruncateVecPack()
20609 MVT TruncVT = MVT::getVectorVT(MVT::i32, NumElems); in LowerTruncateVecPack()
24588 unsigned NumElems = InVT.getVectorNumElements(); in LowerSIGN_EXTEND() local
24589 SmallVector<int,8> ShufMask(NumElems, -1); in LowerSIGN_EXTEND()
24590 for (unsigned i = 0; i != NumElems/2; ++i) in LowerSIGN_EXTEND()
24591 ShufMask[i] = i + NumElems/2; in LowerSIGN_EXTEND()
24648 unsigned NumElems = StoreVT.getVectorNumElements(); in scalarizeVectorStore() local
24653 for (unsigned i = 0; i != NumElems; ++i) { in scalarizeVectorStore()
27926 unsigned NumElems = VT.getVectorNumElements(); in LowerVectorCTLZ_AVX512CDI() local
27932 if (NumElems > 16 || in LowerVectorCTLZ_AVX512CDI()
27933 (NumElems == 16 && !Subtarget.canExtendTo512DQ())) in LowerVectorCTLZ_AVX512CDI()
27936 MVT NewVT = MVT::getVectorVT(MVT::i32, NumElems); in LowerVectorCTLZ_AVX512CDI()
29422 unsigned NumElems = VT.getVectorNumElements(); in convertShiftLeftToScale() local
29428 SmallVector<SDValue> Elts(NumElems, DAG.getUNDEF(SVT)); in convertShiftLeftToScale()
29429 for (unsigned I = 0; I != NumElems; ++I) { in convertShiftLeftToScale()
31329 unsigned NumElems = VT.getVectorNumElements(); in LowerVectorCTPOP() local
31332 if (NumElems < 16 || (NumElems == 16 && Subtarget.canExtendTo512DQ())) { in LowerVectorCTPOP()
31333 MVT NewVT = MVT::getVectorVT(MVT::i32, NumElems); in LowerVectorCTPOP()
51233 unsigned NumElems = RegVT.getVectorNumElements(); in combineLoad() local
51234 if (NumElems < 2) in combineLoad()
51242 NumElems / 2); in combineLoad()
51691 unsigned NumElems = VT.getVectorNumElements(); in combineStore() local
51692 if (NumElems < 2) in combineStore()
51704 unsigned NumElems = VT.getVectorNumElements(); in combineStore() local
51705 if (NumElems < 2) in combineStore()
52488 unsigned NumElems = VT.getVectorNumElements(); in detectPMADDUBSW() local
52490 if (ScalarVT != MVT::i16 || NumElems < 8 || !isPowerOf2_32(NumElems)) in detectPMADDUBSW()
52553 for (unsigned i = 0; i != NumElems; ++i) { in detectPMADDUBSW()
52597 auto ExtractVec = [&DAG, &DL, NumElems](SDValue &Ext) { in detectPMADDUBSW()
52599 if (ExtVT.getVectorNumElements() != NumElems * 2) { in detectPMADDUBSW()
52600 MVT NVT = MVT::getVectorVT(MVT::i8, NumElems * 2); in detectPMADDUBSW()