Lines Matching defs:DemandedElts

2983 /// DemandedElts.  We use this predicate to simplify operations downstream.
2986 const APInt &DemandedElts,
2988 return Mask.isSubsetOf(computeKnownBits(V, DemandedElts, Depth).Zero);
2992 /// DemandedElts. We use this predicate to simplify operations downstream.
2993 bool SelectionDAG::MaskedVectorIsZero(SDValue V, const APInt &DemandedElts,
2995 return computeKnownBits(V, DemandedElts, Depth).isZero();
3005 const APInt &DemandedElts,
3011 assert(DemandedElts.getBitWidth() == NumElts && "Unexpected demanded mask.");
3015 if (!DemandedElts[EltIdx])
3025 /// across all DemandedElts. For scalable vectors, we don't know the
3029 bool SelectionDAG::isSplatValue(SDValue V, const APInt &DemandedElts,
3034 assert((!VT.isScalableVector() || DemandedElts.getBitWidth() == 1) &&
3037 if (!DemandedElts)
3048 ? APInt::getAllOnes(DemandedElts.getBitWidth())
3049 : APInt(DemandedElts.getBitWidth(), 0);
3059 if (isSplatValue(LHS, DemandedElts, UndefLHS, Depth + 1) &&
3060 isSplatValue(RHS, DemandedElts, UndefRHS, Depth + 1)) {
3070 return isSplatValue(V.getOperand(0), DemandedElts, UndefElts, Depth + 1);
3074 return TLI->isSplatValueForTargetNode(V, DemandedElts, UndefElts, *this,
3085 assert(NumElts == DemandedElts.getBitWidth() && "Vector size mismatch");
3097 if (!DemandedElts[i])
3116 if (!DemandedElts[i])
3152 APInt DemandedSrcElts = DemandedElts.zext(NumSrcElts).shl(Idx);
3169 APInt DemandedSrcElts = DemandedElts.zext(NumSrcElts);
3193 APIntOps::ScaleBitMask(DemandedElts, NumSrcElts);
3223 APInt DemandedElts
3225 return isSplatValue(V, DemandedElts, UndefElts) &&
3240 APInt DemandedElts
3243 if (isSplatValue(V, DemandedElts, UndefElts)) {
3245 // DemandedElts and UndefElts are ignored for scalable vectors, since
3250 if (DemandedElts.isSubsetOf(UndefElts)) {
3254 SplatIdx = (UndefElts & DemandedElts).countr_one();
3300 SelectionDAG::getValidShiftAmountRange(SDValue V, const APInt &DemandedElts,
3318 if (!DemandedElts[i])
3341 KnownBits KnownAmt = computeKnownBits(V.getOperand(1), DemandedElts, Depth);
3349 SelectionDAG::getValidShiftAmount(SDValue V, const APInt &DemandedElts,
3355 getValidShiftAmountRange(V, DemandedElts, Depth))
3364 APInt DemandedElts = VT.isFixedLengthVector()
3367 return getValidShiftAmount(V, DemandedElts, Depth);
3371 SelectionDAG::getValidMinimumShiftAmount(SDValue V, const APInt &DemandedElts,
3377 getValidShiftAmountRange(V, DemandedElts, Depth))
3385 APInt DemandedElts = VT.isFixedLengthVector()
3388 return getValidMinimumShiftAmount(V, DemandedElts, Depth);
3392 SelectionDAG::getValidMaximumShiftAmount(SDValue V, const APInt &DemandedElts,
3398 getValidShiftAmountRange(V, DemandedElts, Depth))
3406 APInt DemandedElts = VT.isFixedLengthVector()
3409 return getValidMaximumShiftAmount(V, DemandedElts, Depth);
3421 APInt DemandedElts = VT.isFixedLengthVector()
3424 return computeKnownBits(Op, DemandedElts, Depth);
3428 /// them in Known. The DemandedElts argument allows us to only collect the known
3430 KnownBits SelectionDAG::computeKnownBits(SDValue Op, const APInt &DemandedElts,
3449 unsigned NumElts = DemandedElts.getBitWidth();
3454 if (!DemandedElts)
3460 return computeKnownBits(Op.getOperand(Op.getResNo()), DemandedElts,
3512 if (!DemandedElts[i])
3540 if (!getShuffleDemandedElts(NumElts, SVN->getMask(), DemandedElts,
3570 // Split DemandedElts and test each of the demanded subvectors.
3577 DemandedElts.extractBits(NumSubVectorElts, i * NumSubVectorElts);
3598 APInt DemandedSubElts = DemandedElts.extractBits(NumSubElts, Idx);
3599 APInt DemandedSrcElts = DemandedElts;
3623 APInt DemandedSrcElts = DemandedElts.zext(NumSrcElts).shl(Idx);
3632 if (DemandedElts != 1)
3656 Known = computeKnownBits(N0, DemandedElts, Depth + 1);
3673 if (DemandedElts[i])
3693 APIntOps::ScaleBitMask(DemandedElts, NumElts / SubScale);
3698 if (DemandedElts[i]) {
3710 Known = computeKnownBits(Op.getOperand(1), DemandedElts, Depth + 1);
3711 Known2 = computeKnownBits(Op.getOperand(0), DemandedElts, Depth + 1);
3716 Known = computeKnownBits(Op.getOperand(1), DemandedElts, Depth + 1);
3717 Known2 = computeKnownBits(Op.getOperand(0), DemandedElts, Depth + 1);
3722 Known = computeKnownBits(Op.getOperand(1), DemandedElts, Depth + 1);
3723 Known2 = computeKnownBits(Op.getOperand(0), DemandedElts, Depth + 1);
3728 Known = computeKnownBits(Op.getOperand(1), DemandedElts, Depth + 1);
3729 Known2 = computeKnownBits(Op.getOperand(0), DemandedElts, Depth + 1);
3734 Op.getOperand(0), DemandedElts, false, Depth + 1);
3747 Known = computeKnownBits(Op.getOperand(1), DemandedElts, Depth + 1);
3748 Known2 = computeKnownBits(Op.getOperand(0), DemandedElts, Depth + 1);
3753 Known = computeKnownBits(Op.getOperand(1), DemandedElts, Depth + 1);
3754 Known2 = computeKnownBits(Op.getOperand(0), DemandedElts, Depth + 1);
3759 Known = computeKnownBits(Op.getOperand(1), DemandedElts, Depth + 1);
3760 Known2 = computeKnownBits(Op.getOperand(0), DemandedElts, Depth + 1);
3765 Known = computeKnownBits(Op.getOperand(1), DemandedElts, Depth + 1);
3766 Known2 = computeKnownBits(Op.getOperand(0), DemandedElts, Depth + 1);
3769 ComputeNumSignBits(Op.getOperand(1), DemandedElts, Depth + 1);
3773 ComputeNumSignBits(Op.getOperand(0), DemandedElts, Depth + 1);
3779 Known = computeKnownBits(Op.getOperand(1), DemandedElts, Depth + 1);
3780 Known2 = computeKnownBits(Op.getOperand(0), DemandedElts, Depth + 1);
3790 Known = computeKnownBits(Op.getOperand(1), DemandedElts, Depth + 1);
3791 Known2 = computeKnownBits(Op.getOperand(0), DemandedElts, Depth + 1);
3800 Known = computeKnownBits(Op.getOperand(0), DemandedElts, Depth + 1);
3801 Known2 = computeKnownBits(Op.getOperand(1), DemandedElts, Depth + 1);
3806 Known = computeKnownBits(Op.getOperand(0), DemandedElts, Depth + 1);
3807 Known2 = computeKnownBits(Op.getOperand(1), DemandedElts, Depth + 1);
3812 Known = computeKnownBits(Op.getOperand(0), DemandedElts, Depth + 1);
3813 Known2 = computeKnownBits(Op.getOperand(1), DemandedElts, Depth + 1);
3818 Known = computeKnownBits(Op.getOperand(0), DemandedElts, Depth + 1);
3819 Known2 = computeKnownBits(Op.getOperand(1), DemandedElts, Depth + 1);
3825 Known = computeKnownBits(Op.getOperand(2), DemandedElts, Depth+1);
3829 Known2 = computeKnownBits(Op.getOperand(1), DemandedElts, Depth+1);
3835 Known = computeKnownBits(Op.getOperand(3), DemandedElts, Depth+1);
3839 Known2 = computeKnownBits(Op.getOperand(2), DemandedElts, Depth+1);
3870 Known = computeKnownBits(Op.getOperand(0), DemandedElts, Depth + 1);
3871 Known2 = computeKnownBits(Op.getOperand(1), DemandedElts, Depth + 1);
3882 getValidMinimumShiftAmount(Op, DemandedElts, Depth + 1))
3887 Known = computeKnownBits(Op.getOperand(0), DemandedElts, Depth + 1);
3888 Known2 = computeKnownBits(Op.getOperand(1), DemandedElts, Depth + 1);
3894 getValidMinimumShiftAmount(Op, DemandedElts, Depth + 1))
3898 Known = computeKnownBits(Op.getOperand(0), DemandedElts, Depth + 1);
3899 Known2 = computeKnownBits(Op.getOperand(1), DemandedElts, Depth + 1);
3905 if (ConstantSDNode *C = isConstOrConstSplat(Op.getOperand(2), DemandedElts)) {
3912 DemandedElts, Depth + 1);
3918 Known = computeKnownBits(Op.getOperand(0), DemandedElts, Depth + 1);
3919 Known2 = computeKnownBits(Op.getOperand(1), DemandedElts, Depth + 1);
3942 Known = computeKnownBits(Op.getOperand(0), DemandedElts, Depth + 1);
3943 Known2 = computeKnownBits(Op.getOperand(1), DemandedElts, Depth + 1);
3947 Known2 = computeKnownBits(Op.getOperand(2), DemandedElts, Depth + 1);
3965 Known = computeKnownBits(Op.getOperand(0), DemandedElts, Depth + 1);
3972 Known2 = computeKnownBits(Op.getOperand(0), DemandedElts, Depth + 1);
3981 Known2 = computeKnownBits(Op.getOperand(0), DemandedElts, Depth + 1);
3989 Known2 = computeKnownBits(Op.getOperand(0), DemandedElts, Depth + 1);
4035 if (!DemandedElts[i])
4080 if (DemandedElts != 1 || !getDataLayout().isLittleEndian())
4107 APInt InDemandedElts = DemandedElts.zext(InVT.getVectorNumElements());
4113 Known = computeKnownBits(Op.getOperand(0), DemandedElts, Depth + 1);
4121 APInt InDemandedElts = DemandedElts.zext(InVT.getVectorNumElements());
4129 Known = computeKnownBits(Op.getOperand(0), DemandedElts, Depth + 1);
4139 APInt InDemandedElts = DemandedElts.zext(InVT.getVectorNumElements());
4145 Known = computeKnownBits(Op.getOperand(0), DemandedElts, Depth + 1);
4150 Known = computeKnownBits(Op.getOperand(0), DemandedElts, Depth + 1);
4157 Known = computeKnownBits(Op.getOperand(0), DemandedElts, Depth + 1);
4180 Known = computeKnownBits(Op.getOperand(0), DemandedElts, Depth + 1);
4181 Known2 = computeKnownBits(Op.getOperand(1), DemandedElts, Depth + 1);
4207 Borrow = computeKnownBits(Op.getOperand(2), DemandedElts, Depth + 1);
4214 Known = computeKnownBits(Op.getOperand(0), DemandedElts, Depth + 1);
4215 Known2 = computeKnownBits(Op.getOperand(1), DemandedElts, Depth + 1);
4242 Carry = computeKnownBits(Op.getOperand(2), DemandedElts, Depth + 1);
4249 Known = computeKnownBits(Op.getOperand(0), DemandedElts, Depth + 1);
4250 Known2 = computeKnownBits(Op.getOperand(1), DemandedElts, Depth + 1);
4255 Known = computeKnownBits(Op.getOperand(0), DemandedElts, Depth + 1);
4256 Known2 = computeKnownBits(Op.getOperand(1), DemandedElts, Depth + 1);
4261 Known = computeKnownBits(Op.getOperand(0), DemandedElts, Depth + 1);
4262 Known2 = computeKnownBits(Op.getOperand(1), DemandedElts, Depth + 1);
4267 Known = computeKnownBits(Op.getOperand(0), DemandedElts, Depth + 1);
4268 Known2 = computeKnownBits(Op.getOperand(1), DemandedElts, Depth + 1);
4273 Known = computeKnownBits(Op.getOperand(0), DemandedElts, Depth + 1);
4274 Known2 = computeKnownBits(Op.getOperand(1), DemandedElts, Depth + 1);
4307 // an unknown element index, ignore DemandedElts and demand them all.
4330 APInt DemandedVecElts = DemandedElts;
4334 DemandedVal = !!DemandedElts[EltIdx];
4350 Known2 = computeKnownBits(Op.getOperand(0), DemandedElts, Depth + 1);
4355 Known2 = computeKnownBits(Op.getOperand(0), DemandedElts, Depth + 1);
4360 Known2 = computeKnownBits(Op.getOperand(0), DemandedElts, Depth + 1);
4363 ComputeNumSignBits(Op.getOperand(0), DemandedElts, Depth + 1) - 1);
4367 Known = computeKnownBits(Op.getOperand(0), DemandedElts, Depth + 1);
4368 Known2 = computeKnownBits(Op.getOperand(1), DemandedElts, Depth + 1);
4373 Known = computeKnownBits(Op.getOperand(0), DemandedElts, Depth + 1);
4374 Known2 = computeKnownBits(Op.getOperand(1), DemandedElts, Depth + 1);
4379 Known = computeKnownBits(Op.getOperand(0), DemandedElts, Depth + 1);
4380 Known2 = computeKnownBits(Op.getOperand(1), DemandedElts, Depth + 1);
4390 if ((CstLow = isConstOrConstSplat(Op.getOperand(1), DemandedElts)))
4393 isConstOrConstSplat(Op.getOperand(0).getOperand(1), DemandedElts);
4415 Known = computeKnownBits(Op.getOperand(0), DemandedElts, Depth + 1);
4416 Known2 = computeKnownBits(Op.getOperand(1), DemandedElts, Depth + 1);
4441 Known2 = computeKnownBits(Op.getOperand(0), DemandedElts, Depth + 1);
4512 TLI->computeKnownBitsForTargetNode(Op, Known, DemandedElts, *this, Depth);
4745 APInt DemandedElts = VT.isFixedLengthVector()
4748 return ComputeNumSignBits(Op, DemandedElts, Depth);
4751 unsigned SelectionDAG::ComputeNumSignBits(SDValue Op, const APInt &DemandedElts,
4756 unsigned NumElts = DemandedElts.getBitWidth();
4768 if (!DemandedElts)
4781 return ComputeNumSignBits(Op.getOperand(Op.getResNo()), DemandedElts,
4795 if (!DemandedElts[i])
4824 if (!getShuffleDemandedElts(NumElts, SVN->getMask(), DemandedElts,
4855 return ComputeNumSignBits(N0, DemandedElts, Depth + 1);
4865 APIntOps::ScaleBitMask(DemandedElts, NumElts / Scale);
4875 if (DemandedElts[i]) {
4894 return ComputeNumSignBits(Op.getOperand(0), DemandedElts, Depth+1) + Tmp;
4899 Tmp2 = ComputeNumSignBits(Op.getOperand(0), DemandedElts, Depth+1);
4906 APInt DemandedSrcElts = DemandedElts.zext(SrcVT.getVectorNumElements());
4911 Tmp = ComputeNumSignBits(Op.getOperand(0), DemandedElts, Depth + 1);
4914 getValidMinimumShiftAmount(Op, DemandedElts, Depth + 1))
4919 getValidShiftAmountRange(Op, DemandedElts, Depth + 1)) {
4936 ComputeNumSignBits(Extendee, DemandedElts, Depth + 1);
4942 Tmp = ComputeNumSignBits(Op.getOperand(0), DemandedElts, Depth + 1);
4951 Tmp = ComputeNumSignBits(Op.getOperand(0), DemandedElts, Depth+1);
4953 Tmp2 = ComputeNumSignBits(Op.getOperand(1), DemandedElts, Depth+1);
4963 Tmp = ComputeNumSignBits(Op.getOperand(1), DemandedElts, Depth+1);
4965 Tmp2 = ComputeNumSignBits(Op.getOperand(2), DemandedElts, Depth+1);
4968 Tmp = ComputeNumSignBits(Op.getOperand(2), DemandedElts, Depth+1);
4970 Tmp2 = ComputeNumSignBits(Op.getOperand(3), DemandedElts, Depth+1);
4979 if ((CstLow = isConstOrConstSplat(Op.getOperand(1), DemandedElts)))
4982 isConstOrConstSplat(Op.getOperand(0).getOperand(1), DemandedElts);
4994 Tmp = ComputeNumSignBits(Op.getOperand(0), DemandedElts, Depth + 1);
4997 Tmp2 = ComputeNumSignBits(Op.getOperand(1), DemandedElts, Depth + 1);
5002 Tmp = ComputeNumSignBits(Op.getOperand(0), DemandedElts, Depth + 1);
5005 Tmp2 = ComputeNumSignBits(Op.getOperand(1), DemandedElts, Depth + 1);
5044 Tmp = ComputeNumSignBits(Op.getOperand(0), DemandedElts, Depth + 1);
5051 isConstOrConstSplat(Op.getOperand(1), DemandedElts)) {
5067 Tmp = ComputeNumSignBits(Op.getOperand(0), DemandedElts, Depth + 1);
5072 isConstOrConstSplat(Op.getOperand(1), DemandedElts))
5075 computeKnownBits(Op.getOperand(0), DemandedElts, Depth + 1);
5088 Tmp2 = ComputeNumSignBits(Op.getOperand(1), DemandedElts, Depth + 1);
5092 Tmp2 = ComputeNumSignBits(Op.getOperand(1), DemandedElts, Depth + 1);
5097 isConstOrConstSplat(Op.getOperand(0), DemandedElts))
5100 computeKnownBits(Op.getOperand(1), DemandedElts, Depth + 1);
5116 Tmp = ComputeNumSignBits(Op.getOperand(0), DemandedElts, Depth + 1);
5133 Tmp = ComputeNumSignBits(Op.getOperand(0), DemandedElts, Depth + 1);
5136 Tmp2 = ComputeNumSignBits(Op.getOperand(1), DemandedElts, Depth + 1);
5143 return ComputeNumSignBits(Op.getOperand(0), DemandedElts, Depth + 1);
5177 APInt DemandedVecElts = DemandedElts;
5181 DemandedVal = !!DemandedElts[EltIdx];
5218 // an unknown element index, ignore DemandedElts and demand them all.
5235 APInt DemandedSrcElts = DemandedElts.zext(NumSrcElts).shl(Idx);
5249 DemandedElts.extractBits(NumSubVectorElts, i * NumSubVectorElts);
5267 APInt DemandedSubElts = DemandedElts.extractBits(NumSubElts, Idx);
5268 APInt DemandedSrcElts = DemandedElts;
5287 if (DemandedElts != 1)
5371 if (!DemandedElts[i])
5405 TLI->ComputeNumSignBitsForTargetNode(Op, DemandedElts, *this, Depth);
5413 KnownBits Known = computeKnownBits(Op, DemandedElts, Depth);
5424 const APInt &DemandedElts,
5426 unsigned SignBits = ComputeNumSignBits(Op, DemandedElts, Depth);
5437 APInt DemandedElts = VT.isFixedLengthVector()
5440 return isGuaranteedNotToBeUndefOrPoison(Op, DemandedElts, PoisonOnly, Depth);
5444 const APInt &DemandedElts,
5474 if (!DemandedElts[i])
5489 if (!getShuffleDemandedElts(DemandedElts.getBitWidth(), SVN->getMask(),
5490 DemandedElts, DemandedLHS, DemandedRHS,
5513 Op, DemandedElts, *this, PoisonOnly, Depth);
5533 APInt DemandedElts = VT.isFixedLengthVector()
5536 return canCreateUndefOrPoison(Op, DemandedElts, PoisonOnly, ConsiderFlags,
5540 bool SelectionDAG::canCreateUndefOrPoison(SDValue Op, const APInt &DemandedElts,
5614 return !isGuaranteedNotToBeUndefOrPoison(Op.getOperand(1), DemandedElts,
5616 !getValidMaximumShiftAmount(Op, DemandedElts, Depth + 1);
5620 return !PoisonOnly && DemandedElts.ugt(1);
5627 if (isGuaranteedNotToBeUndefOrPoison(Idx, DemandedElts, PoisonOnly,
5639 if (Elt < 0 && DemandedElts[Idx])
5649 Op, DemandedElts, *this, PoisonOnly, ConsiderFlags, Depth);
12334 APInt DemandedElts = VT.isFixedLengthVector()
12337 return isConstOrConstSplat(N, DemandedElts, AllowUndefs, AllowTruncation);
12340 ConstantSDNode *llvm::isConstOrConstSplat(SDValue N, const APInt &DemandedElts,
12360 ConstantSDNode *CN = BV->getConstantSplatNode(DemandedElts, &UndefElements);
12364 // TODO: Look into whether we should allow UndefElements in non-DemandedElts
12379 APInt DemandedElts = VT.isFixedLengthVector()
12382 return isConstOrConstSplatFP(N, DemandedElts, AllowUndefs);
12386 const APInt &DemandedElts,
12394 BV->getConstantFPSplatNode(DemandedElts, &UndefElements);
12395 // TODO: Look into whether we should allow UndefElements in non-DemandedElts
13156 SDValue BuildVectorSDNode::getSplatValue(const APInt &DemandedElts,
13163 assert(NumOps == DemandedElts.getBitWidth() && "Unexpected vector size");
13164 if (!DemandedElts)
13168 if (!DemandedElts[i])
13182 unsigned FirstDemandedIdx = DemandedElts.countr_zero();
13192 APInt DemandedElts = APInt::getAllOnes(getNumOperands());
13193 return getSplatValue(DemandedElts, UndefElements);
13196 bool BuildVectorSDNode::getRepeatedSequence(const APInt &DemandedElts,
13205 assert(NumOps == DemandedElts.getBitWidth() && "Unexpected vector size");
13206 if (!DemandedElts || NumOps < 2 || !isPowerOf2_32(NumOps))
13212 if (DemandedElts[I] && getOperand(I).isUndef())
13219 if (!DemandedElts[I])
13244 APInt DemandedElts = APInt::getAllOnes(getNumOperands());
13245 return getRepeatedSequence(DemandedElts, Sequence, UndefElements);
13249 BuildVectorSDNode::getConstantSplatNode(const APInt &DemandedElts,
13252 getSplatValue(DemandedElts, UndefElements));
13261 BuildVectorSDNode::getConstantFPSplatNode(const APInt &DemandedElts,
13264 getSplatValue(DemandedElts, UndefElements));