Lines Matching defs:NumElems
4308 unsigned NumElems = VT.getVectorNumElements();
4310 assert((NumElems % 2) == 0 && (SizeInBits % 2) == 0 &&
4319 SDValue Hi = extractSubVector(Op, NumElems / 2, DAG, dl, SizeInBits / 2);
4506 unsigned NumElems = OpVT.getVectorNumElements();
4524 assert(IdxVal + SubVecNumElems <= NumElems &&
4563 NumElems = WideOpVT.getVectorNumElements();
4564 unsigned ShiftLeft = NumElems - SubVecNumElems;
4565 unsigned ShiftRight = NumElems - SubVecNumElems - IdxVal;
4576 if (IdxVal + SubVecNumElems == NumElems) {
4579 if (SubVecNumElems * 2 == NumElems) {
4590 NumElems = WideOpVT.getVectorNumElements();
4591 SDValue ShiftBits = DAG.getTargetConstant(NumElems - IdxVal, dl, MVT::i8);
4601 NumElems = WideOpVT.getVectorNumElements();
4606 unsigned ShiftLeft = NumElems - SubVecNumElems;
4607 unsigned ShiftRight = NumElems - SubVecNumElems - IdxVal;
4611 APInt Mask0 = APInt::getBitsSet(NumElems, IdxVal, IdxVal + SubVecNumElems);
4613 SDValue CMask0 = DAG.getConstant(Mask0, dl, MVT::getIntegerVT(NumElems));
4633 unsigned LowShift = NumElems - IdxVal;
4855 int NumElems = VT.getVectorNumElements();
4856 SmallVector<int, 16> MaskVec(NumElems);
4857 for (int i = 0; i != NumElems; ++i)
4859 MaskVec[i] = (i == Idx) ? NumElems : i;
5432 unsigned NumElems = VT.getVectorNumElements();
5448 DecodeBLENDMask(NumElems, ImmN, Mask);
5455 DecodeSHUFPMask(NumElems, MaskEltSize, ImmN, Mask);
5471 DecodeEXTRQIMask(NumElems, MaskEltSize, BitLen, BitIdx, Mask);
5482 DecodeINSERTQIMask(NumElems, MaskEltSize, BitLen, BitIdx, Mask);
5489 DecodeUNPCKHMask(NumElems, MaskEltSize, Mask);
5495 DecodeUNPCKLMask(NumElems, MaskEltSize, Mask);
5501 DecodeMOVHLPSMask(NumElems, Mask);
5507 DecodeMOVLHPSMask(NumElems, Mask);
5516 DecodeVALIGNMask(NumElems, ImmN, Mask);
5526 DecodePALIGNRMask(NumElems, ImmN, Mask);
5535 DecodePSLLDQMask(NumElems, ImmN, Mask);
5542 DecodePSRLDQMask(NumElems, ImmN, Mask);
5549 DecodePSHUFMask(NumElems, MaskEltSize, ImmN, Mask);
5555 DecodePSHUFHWMask(NumElems, ImmN, Mask);
5561 DecodePSHUFLWMask(NumElems, ImmN, Mask);
5566 DecodeZeroMoveLowMask(NumElems, Mask);
5574 DecodeVectorBroadcast(NumElems, Mask);
5585 DecodeVPERMILPMask(NumElems, MaskEltSize, RawMask, RawUndefs, Mask);
5605 DecodeVPERMMask(NumElems, ImmN, Mask);
5613 DecodeScalarMoveMask(NumElems, /* IsLoad */ false, Mask);
5619 DecodeVPERM2X128Mask(NumElems, ImmN, Mask);
5626 decodeVSHUF64x2FamilyMask(NumElems, MaskEltSize, ImmN, Mask);
5631 DecodeMOVSLDUPMask(NumElems, Mask);
5636 DecodeMOVSHDUPMask(NumElems, Mask);
5641 DecodeMOVDDUPMask(NumElems, Mask);
5654 DecodeVPERMIL2PMask(NumElems, MaskEltSize, CtrlImm, RawMask, RawUndefs,
6627 unsigned NumElems = VT.getVectorNumElements();
6636 SDValue Src = (Elt < (int)NumElems) ? SV->getOperand(0) : SV->getOperand(1);
6637 return getShuffleScalarElt(Src, Elt % NumElems, DAG, Depth + 1);
6644 int NumElems = (int)ShufVT.getVectorNumElements();
6657 assert(0 <= Elt && Elt < (2 * NumElems) && "Shuffle index out of range");
6658 SDValue Src = (Elt < NumElems) ? ShuffleOps[0] : ShuffleOps[1];
6659 return getShuffleScalarElt(Src, Elt % NumElems, DAG, Depth + 1);
6694 if (SrcVT.isVector() && SrcVT.getVectorNumElements() == NumElems)
7058 unsigned NumElems = VT.getVectorNumElements();
7060 EVT NVT = EVT::getVectorVT(*DAG.getContext(), PVT, NumElems);
7064 SmallVector<int, 8> Mask(NumElems, EltNo);
7127 unsigned NumElems = Elts.size();
7130 APInt LoadMask = APInt::getZero(NumElems);
7131 APInt ZeroMask = APInt::getZero(NumElems);
7132 APInt UndefMask = APInt::getZero(NumElems);
7134 SmallVector<LoadSDNode*, 8> Loads(NumElems, nullptr);
7135 SmallVector<int64_t, 8> ByteOffsets(NumElems, 0);
7139 for (unsigned i = 0; i < NumElems; ++i) {
7155 if ((NumElems * EltSizeInBits) != VT.getSizeInBits())
7168 NumElems &&
7172 if (UndefMask.popcount() == NumElems)
7174 if ((ZeroMask.popcount() + UndefMask.popcount()) == NumElems)
7203 return (0 <= BaseIdx && BaseIdx < (int)NumElems && LoadMask[BaseIdx] &&
7251 (NumLoadedElts == (int)NumElems || IsDereferenceable) &&
7262 if (NumElems == 1)
7272 if ((NumMaskElts % NumElems) == 0) {
7273 unsigned Scale = NumMaskElts / NumElems;
7275 for (unsigned i = 0; i < NumElems; ++i) {
7292 unsigned HalfNumElems = NumElems / 2;
7332 if (ZeroMask.isZero() && isPowerOf2_32(NumElems) && Subtarget.hasAVX() &&
7334 for (unsigned SubElems = 1; SubElems < NumElems; SubElems *= 2) {
7347 for (unsigned i = 0; i != NumElems && Match; ++i) {
7779 unsigned NumElems = Op.getNumOperands();
7783 SmallVector<int, 8> Mask(NumElems, -1);
7785 for (unsigned i = 0; i != NumElems; ++i) {
7825 Mask[i] = Idx + NumElems;
8585 unsigned NumElems = VT.getVectorNumElements();
8591 for (unsigned i = 1; i < NumElems; ++i)
9003 unsigned NumElems = Op.getNumOperands();
9017 APInt UndefMask = APInt::getZero(NumElems);
9018 APInt FrozenUndefMask = APInt::getZero(NumElems);
9019 APInt ZeroMask = APInt::getZero(NumElems);
9020 APInt NonZeroMask = APInt::getZero(NumElems);
9024 unsigned NumConstants = NumElems;
9025 for (unsigned i = 0; i < NumElems; ++i) {
9066 NumFrozenUndefElts >= 2 && NumFrozenUndefElts < NumElems) {
9067 SmallVector<int, 16> BlendMask(NumElems, -1);
9068 SmallVector<SDValue, 16> Elts(NumElems, DAG.getUNDEF(OpEltVT));
9069 for (unsigned i = 0; i < NumElems; ++i) {
9078 BlendMask[i] += NumElems;
9093 unsigned UpperElems = NumElems / 2;
9098 NumUpperUndefsOrZeros >= (NumElems - (NumElems / 4)))
9099 UpperElems = NumElems - (NumElems / 4);
9102 MVT LowerVT = MVT::getVectorVT(EltVT, NumElems - UpperElems);
9127 if (NumConstants == NumElems - 1 && NumNonZero != 1 &&
9136 SmallVector<Constant *, 16> ConstVecOps(NumElems, UndefValue::get(EltType));
9139 for (unsigned i = 0; i != NumElems; ++i) {
9219 if (NumElems == 2 && Idx == 1 &&
9268 SmallVector<SDValue, 64> Ops(Op->op_begin(), Op->op_begin() + NumElems);
9280 auto CanSplat = [](SDValue Op, unsigned NumElems, ArrayRef<SDValue> Ops) {
9282 for (unsigned i = 2; i != NumElems; ++i)
9287 if (CanSplat(Op, NumElems, Ops)) {
9294 MVT BcastVT = MVT::getVectorVT(WideEltVT, NumElems / 2);
9303 MVT HVT = MVT::getVectorVT(EltVT, NumElems / 2);
9307 DAG.getBuildVector(HVT, dl, Op->ops().slice(0, NumElems / 2));
9309 HVT, dl, Op->ops().slice(NumElems / 2, NumElems /2));
9328 if (EVTBits == 8 && NumElems == 16)
9333 if (EltVT == MVT::i16 && NumElems == 8)
9339 if (EVTBits == 32 && NumElems == 4)
9344 if (NumElems == 4 && NumZero > 0) {
9345 SmallVector<SDValue, 8> Ops(NumElems);
9377 static_cast<int>(Reverse2 ? NumElems+1 : NumElems),
9378 static_cast<int>(Reverse2 ? NumElems : NumElems+1)
9397 for (unsigned i = 1; i < NumElems; ++i) {
9408 SmallVector<SDValue, 8> Ops(NumElems);
9409 for (unsigned i = 0; i < NumElems; ++i) {
9420 for (unsigned Scale = 1; Scale < NumElems; Scale *= 2) {
9426 Mask.push_back(NumElems+i);
9427 Mask.append(NumElems - Mask.size(), SM_SentinelUndef);
9429 for (unsigned i = 0, e = NumElems / (2 * Scale); i != e; ++i)
9527 unsigned NumElems = ResVT.getVectorNumElements();
9576 DAG.getVectorIdxConstant(NumElems / 2, dl));
17785 int NumElems = VT.getVectorNumElements();
17786 if ((Subtarget.hasBWI() && (NumElems >= 32)) ||
17787 (Subtarget.hasDQI() && (NumElems < 32)))
20697 unsigned NumElems = SrcVT.getVectorNumElements();
20698 if (NumElems < 2 || !isPowerOf2_32(NumElems) )
20703 assert(DstVT.getVectorNumElements() == NumElems && "Illegal truncation");
20708 EVT PackedVT = EVT::getVectorVT(Ctx, PackedSVT, NumElems);
20791 EVT HalfPackedVT = EVT::getVectorVT(Ctx, PackedSVT, NumElems / 2);
20953 unsigned NumElems = DstVT.getVectorNumElements();
20955 (DstSVT == MVT::i8 || DstSVT == MVT::i16) && isPowerOf2_32(NumElems) &&
20956 NumElems >= 8))
20960 if (Subtarget.hasSSSE3() && NumElems == 8) {
20990 MVT TruncVT = MVT::getVectorVT(MVT::i32, NumElems);
25085 unsigned NumElems = InVT.getVectorNumElements();
25086 SmallVector<int,8> ShufMask(NumElems, -1);
25087 for (unsigned i = 0; i != NumElems/2; ++i)
25088 ShufMask[i] = i + NumElems/2;
25145 unsigned NumElems = StoreVT.getVectorNumElements();
25150 for (unsigned i = 0; i != NumElems; ++i) {
28555 unsigned NumElems = VT.getVectorNumElements();
28561 if (NumElems > 16 ||
28562 (NumElems == 16 && !Subtarget.canExtendTo512DQ()))
28565 MVT NewVT = MVT::getVectorVT(MVT::i32, NumElems);
30062 unsigned NumElems = VT.getVectorNumElements();
30068 SmallVector<SDValue> Elts(NumElems, DAG.getUNDEF(SVT));
30069 for (unsigned I = 0; I != NumElems; ++I) {
32160 unsigned NumElems = VT.getVectorNumElements();
32163 if (NumElems < 16 || (NumElems == 16 && Subtarget.canExtendTo512DQ())) {
32164 MVT NewVT = MVT::getVectorVT(MVT::i32, NumElems);
52425 unsigned NumElems = RegVT.getVectorNumElements();
52426 if (NumElems < 2)
52434 NumElems / 2);
52906 unsigned NumElems = VT.getVectorNumElements();
52907 if (NumElems < 2)
52919 unsigned NumElems = VT.getVectorNumElements();
52920 if (NumElems < 2)
53736 unsigned NumElems = VT.getVectorNumElements();
53738 if (ScalarVT != MVT::i16 || NumElems < 8 || !isPowerOf2_32(NumElems))
53801 for (unsigned i = 0; i != NumElems; ++i) {
53845 auto ExtractVec = [&DAG, &DL, NumElems](SDValue &Ext) {
53847 if (ExtVT.getVectorNumElements() != NumElems * 2) {
53848 MVT NVT = MVT::getVectorVT(MVT::i8, NumElems * 2);