Lines Matching refs:N2

590     SDValue SimplifySelect(const SDLoc &DL, SDValue N0, SDValue N1, SDValue N2);
592 SDValue N2, SDValue N3, ISD::CondCode CC,
595 const SDLoc &DL, SDValue N0, SDValue N1, SDValue N2, SDValue N3,
599 SDValue N2, SDValue N3, ISD::CondCode CC);
1003 SDValue N0, N1, N2; in isOneUseSetCC() local
1004 if (isSetCCEquivalent(N, N0, N1, N2) && N->hasOneUse()) in isOneUseSetCC()
5514 static SDValue isSaturatingMinMax(SDValue N0, SDValue N1, SDValue N2, in isSaturatingMinMax() argument
5517 auto isSignedMinMax = [&](SDValue N0, SDValue N1, SDValue N2, SDValue N3, in isSaturatingMinMax()
5521 if (N0 != N2 && (N2.getOpcode() != ISD::TRUNCATE || N0 != N2.getOperand(0))) in isSaturatingMinMax()
5536 unsigned Opcode0 = isSignedMinMax(N0, N1, N2, N3, CC); in isSaturatingMinMax()
5617 static SDValue PerformMinMaxFpToSatCombine(SDValue N0, SDValue N1, SDValue N2, in PerformMinMaxFpToSatCombine() argument
5622 SDValue Fp = isSaturatingMinMax(N0, N1, N2, N3, CC, BW, Unsigned, DAG); in PerformMinMaxFpToSatCombine()
5636 return DAG.getExtOrTrunc(!Unsigned, Sat, DL, N2->getValueType(0)); in PerformMinMaxFpToSatCombine()
5639 static SDValue PerformUMinFpToSatCombine(SDValue N0, SDValue N1, SDValue N2, in PerformUMinFpToSatCombine() argument
5645 if ((N0 != N2 && in PerformUMinFpToSatCombine()
5646 (N2.getOpcode() != ISD::TRUNCATE || N0 != N2.getOperand(0))) || in PerformUMinFpToSatCombine()
10777 SDValue N2 = N->getOperand(2); in visitFunnelShift() local
10786 N2, APInt(N2.getScalarValueSizeInBits(), BitWidth - 1))) in visitFunnelShift()
10794 if (ConstantSDNode *Cst = isConstOrConstSplat(N2)) { in visitFunnelShift()
10795 EVT ShAmtTy = N2.getValueType(); in visitFunnelShift()
10866 APInt ModuloBits(N2.getScalarValueSizeInBits(), BitWidth - 1); in visitFunnelShift()
10867 if (IsUndefOrZero(N0) && !IsFSHL && DAG.MaskedValueIsZero(N2, ~ModuloBits)) in visitFunnelShift()
10868 return DAG.getNode(ISD::SRL, DL, VT, N1, N2); in visitFunnelShift()
10869 if (IsUndefOrZero(N1) && IsFSHL && DAG.MaskedValueIsZero(N2, ~ModuloBits)) in visitFunnelShift()
10870 return DAG.getNode(ISD::SHL, DL, VT, N0, N2); in visitFunnelShift()
10880 return DAG.getNode(RotOpc, DL, VT, N0, N2); in visitFunnelShift()
11380 SDValue N2 = N->getOperand(2); in foldSelectOfConstants() local
11389 auto *C2 = dyn_cast<ConstantSDNode>(N2); in foldSelectOfConstants()
11460 return DAG.getNode(ISD::ADD, DL, VT, Cond, N2); in foldSelectOfConstants()
11466 return DAG.getNode(ISD::ADD, DL, VT, Cond, N2); in foldSelectOfConstants()
11480 return DAG.getNode(ISD::OR, DL, VT, Cond, N2); in foldSelectOfConstants()
11541 SDValue N2 = N->getOperand(2); in foldVSelectToSignBitSplatMask() local
11556 std::swap(N1, N2); in foldVSelectToSignBitSplatMask()
11561 if (isNullOrNullSplat(N2)) { in foldVSelectToSignBitSplatMask()
11573 return DAG.getNode(ISD::OR, DL, VT, Sra, DAG.getFreeze(N2)); in foldVSelectToSignBitSplatMask()
11585 return DAG.getNode(ISD::AND, DL, VT, Not, DAG.getFreeze(N2)); in foldVSelectToSignBitSplatMask()
11598 SDValue N2 = N->getOperand(2); in visitSELECT() local
11604 if (SDValue V = DAG.simplifySelect(N0, N1, N2)) in visitSELECT()
11612 SDValue SelectOp = DAG.getSelect(DL, VT, F, N2, N1); in visitSELECT()
11621 if (SimplifySelectOps(N, N1, N2)) in visitSELECT()
11641 DAG.getNode(ISD::SELECT, DL, N1.getValueType(), Cond1, N1, N2, Flags); in visitSELECT()
11644 InnerSelect, N2, Flags); in visitSELECT()
11654 Cond1, N1, N2, Flags); in visitSELECT()
11668 if (N1_2 == N2 && N0.getValueType() == N1_0.getValueType()) { in visitSELECT()
11673 N2, Flags); in visitSELECT()
11678 N2, Flags); in visitSELECT()
11683 if (N2->getOpcode() == ISD::SELECT && N2->hasOneUse()) { in visitSELECT()
11684 SDValue N2_0 = N2->getOperand(0); in visitSELECT()
11685 SDValue N2_1 = N2->getOperand(1); in visitSELECT()
11686 SDValue N2_2 = N2->getOperand(2); in visitSELECT()
11711 if (N0.hasOneUse() && isLegalToCombineMinNumMaxNum(DAG, N1, N2, Flags, TLI)) in visitSELECT()
11713 combineMinNumMaxNum(DL, VT, Cond0, Cond1, N1, N2, CC)) in visitSELECT()
11723 N2.getOpcode() == ISD::ADD && Cond0 == N2.getOperand(0)) { in visitSELECT()
11724 auto *C = dyn_cast<ConstantSDNode>(N2.getOperand(1)); in visitSELECT()
11740 SDValue UAO = DAG.getNode(ISD::UADDO, DL, VTs, Cond0, N2.getOperand(1)); in visitSELECT()
11752 N2, N0.getOperand(2)); in visitSELECT()
11757 if (SDValue NewSel = SimplifySelect(DL, N0, N1, N2)) in visitSELECT()
11765 if (SDValue R = combineSelectAsExtAnd(N0, N1, N2, DL, DAG)) in visitSELECT()
12210 SDValue N2 = N->getOperand(2); in foldVSelectOfConstants() local
12215 !ISD::isBuildVectorOfConstantSDNodes(N2.getNode())) in foldVSelectOfConstants()
12226 SDValue N2Elt = N2.getOperand(i); in foldVSelectOfConstants()
12251 return DAG.getNode(ISD::ADD, DL, VT, ExtendedCond, N2); in foldVSelectOfConstants()
12257 isNullOrNullSplat(N2)) { in foldVSelectOfConstants()
12276 SDValue N2 = N->getOperand(2); in visitVP_SELECT() local
12279 if (SDValue V = DAG.simplifySelect(N0, N1, N2)) in visitVP_SELECT()
12291 SDValue N2 = N->getOperand(2); in visitVSELECT() local
12295 if (SDValue V = DAG.simplifySelect(N0, N1, N2)) in visitVSELECT()
12303 return DAG.getSelect(DL, VT, F, N2, N1); in visitVSELECT()
12306 if (N1.getOpcode() == ISD::ADD && N1.getOperand(0) == N2 && N1->hasOneUse() && in visitVSELECT()
12312 ISD::ADD, DL, N1.getValueType(), N2, in visitVSELECT()
12329 N1 == LHS && N2.getOpcode() == ISD::SUB && N1 == N2.getOperand(1)) in visitVSELECT()
12330 isAbs = ISD::isBuildVectorAllZeros(N2.getOperand(0).getNode()); in visitVSELECT()
12332 N2 == LHS && N1.getOpcode() == ISD::SUB && N2 == N1.getOperand(1)) in visitVSELECT()
12356 if (SDValue FMinMax = combineMinNumMaxNum(DL, VT, LHS, RHS, N1, N2, CC)) in visitVSELECT()
12360 if (SDValue S = PerformMinMaxFpToSatCombine(LHS, RHS, N1, N2, CC, DAG)) in visitVSELECT()
12362 if (SDValue S = PerformUMinFpToSatCombine(LHS, RHS, N1, N2, CC, DAG)) in visitVSELECT()
12391 return DAG.getSelect(DL, N1.getValueType(), WideSetCC, N1, N2); in visitVSELECT()
12400 if (N1.getOpcode() == ISD::SUB && N2.getOpcode() == ISD::SUB && in visitVSELECT()
12401 N1.getOperand(0) == N2.getOperand(1) && in visitVSELECT()
12402 N1.getOperand(1) == N2.getOperand(0)) { in visitVSELECT()
12434 Other = N2; in visitVSELECT()
12436 } else if (ISD::isConstantSplatVectorAllOnes(N2.getNode())) { in visitVSELECT()
12481 Other = N2; in visitVSELECT()
12483 } else if (ISD::isConstantSplatVectorAllZeros(N2.getNode())) { in visitVSELECT()
12555 if (SimplifySelectOps(N, N1, N2)) in visitVSELECT()
12563 return N2; in visitVSELECT()
12569 N2.getOpcode() == ISD::CONCAT_VECTORS && in visitVSELECT()
12591 SDValue N2 = N->getOperand(2); in visitSELECT_CC() local
12598 if (N2 == N3) in visitSELECT_CC()
12599 return N2; in visitSELECT_CC()
12604 return DAG.getSelect(DL, N2.getValueType(), N0, N3, N2); in visitSELECT_CC()
12614 return SCCC->isZero() ? N3 : N2; in visitSELECT_CC()
12619 return N2; in visitSELECT_CC()
12624 DAG.getNode(ISD::SELECT_CC, DL, N2.getValueType(), SCC.getOperand(0), in visitSELECT_CC()
12625 SCC.getOperand(1), N2, N3, SCC.getOperand(2)); in visitSELECT_CC()
12632 if (SimplifySelectOps(N, N2, N3)) in visitSELECT_CC()
12636 return SimplifySelectCC(DL, N0, N1, N2, N3, CC); in visitSELECT_CC()
17094 SDValue N2 = N->getOperand(2); in visitFMA() local
17107 isa<ConstantFPSDNode>(N2)) { in visitFMA()
17108 return matcher.getNode(ISD::FMA, DL, VT, N0, N1, N2); in visitFMA()
17124 return matcher.getNode(ISD::FMA, DL, VT, NegN0, NegN1, N2); in visitFMA()
17130 return N2; in visitFMA()
17132 return N2; in visitFMA()
17137 return matcher.getNode(ISD::FADD, SDLoc(N), VT, N1, N2); in visitFMA()
17139 return matcher.getNode(ISD::FADD, SDLoc(N), VT, N0, N2); in visitFMA()
17144 return matcher.getNode(ISD::FMA, SDLoc(N), VT, N1, N0, N2); in visitFMA()
17150 if (matcher.match(N2, ISD::FMUL) && N0 == N2.getOperand(0) && in visitFMA()
17152 DAG.isConstantFPBuildVectorOrConstantFP(N2.getOperand(1))) { in visitFMA()
17155 matcher.getNode(ISD::FADD, DL, VT, N1, N2.getOperand(1))); in visitFMA()
17164 matcher.getNode(ISD::FMUL, DL, VT, N1, N0.getOperand(1)), N2); in visitFMA()
17172 return matcher.getNode(ISD::FADD, DL, VT, N0, N2); in visitFMA()
17178 return matcher.getNode(ISD::FADD, DL, VT, N2, RHSNeg); in visitFMA()
17187 matcher.getNode(ISD::FNEG, DL, VT, N1), N2); in visitFMA()
17194 if (N1CFP && N0 == N2) { in visitFMA()
17201 if (N1CFP && matcher.match(N2, ISD::FNEG) && N2.getOperand(0) == N0) { in visitFMA()
17220 SDValue N2 = N->getOperand(2); in visitFMAD() local
17226 isa<ConstantFPSDNode>(N2)) in visitFMAD()
17227 return DAG.getNode(ISD::FMAD, DL, VT, N0, N1, N2); in visitFMAD()
18189 SDValue N2 = N->getOperand(2); in visitBRCOND() local
18195 N1->getOperand(0), N2); in visitBRCOND()
18244 DAG.getSetCC(SDLoc(N1), N1->getValueType(0), S0, S1, Cond), N2); in visitBRCOND()
18260 N1.getOperand(0), N1.getOperand(1), N2); in visitBRCOND()
18269 ChainHandle.getValue(), NewN1, N2); in visitBRCOND()
26500 SDValue N2 = N->getOperand(2); in visitINSERT_SUBVECTOR() local
26511 N1.getOperand(1) == N2) { in visitINSERT_SUBVECTOR()
26517 if (isNullConstant(N2)) { in visitINSERT_SUBVECTOR()
26521 VT, N0, N1.getOperand(0), N2); in visitINSERT_SUBVECTOR()
26525 VT, N1.getOperand(0), N2); in visitINSERT_SUBVECTOR()
26533 N1.getOperand(1) == N2) in visitINSERT_SUBVECTOR()
26548 N1.getOperand(0).getOperand(1) == N2 && in visitINSERT_SUBVECTOR()
26569 CN0.getValueType(), CN0, CN1, N2); in visitINSERT_SUBVECTOR()
26579 N0.getOperand(2) == N2) in visitINSERT_SUBVECTOR()
26581 N1, N2); in visitINSERT_SUBVECTOR()
26588 isNullConstant(N2)) in visitINSERT_SUBVECTOR()
26590 N1.getOperand(1), N2); in visitINSERT_SUBVECTOR()
26639 N0.getOperand(0), N1, N2); in visitINSERT_SUBVECTOR()
27211 SDValue N2) { in SimplifySelect() argument
27215 SDValue SCC = SimplifySelectCC(DL, N0.getOperand(0), N0.getOperand(1), N1, N2, in SimplifySelect()
27437 SDValue N1, SDValue N2, SDValue N3, in foldSelectCCToShiftAnd() argument
27444 EVT AType = N2.getValueType(); in foldSelectCCToShiftAnd()
27451 if (CC == ISD::SETGT && TLI.hasAndNot(N2)) { in foldSelectCCToShiftAnd()
27454 if (!(isAllOnesConstant(N1) || (isNullConstant(N1) && N0 == N2))) in foldSelectCCToShiftAnd()
27459 if (!(isNullConstant(N1) || (isOneConstant(N1) && N0 == N2))) in foldSelectCCToShiftAnd()
27467 auto *N2C = dyn_cast<ConstantSDNode>(N2.getNode()); in foldSelectCCToShiftAnd()
27483 return DAG.getNode(ISD::AND, DL, AType, Shift, N2); in foldSelectCCToShiftAnd()
27503 return DAG.getNode(ISD::AND, DL, AType, Shift, N2); in foldSelectCCToShiftAnd()
27510 SDValue N2 = N->getOperand(2); in foldSelectOfBinops() local
27514 if (!TLI.isBinOp(BinOpc) || (N2.getOpcode() != BinOpc) || in foldSelectOfBinops()
27515 (N1.getResNo() != N2.getResNo())) in foldSelectOfBinops()
27522 if (!N0->hasOneUse() || !N1->hasOneUse() || !N2->hasOneUse()) in foldSelectOfBinops()
27531 if (N1.getOperand(1) == N2.getOperand(1)) { in foldSelectOfBinops()
27533 SDValue N20 = N2.getOperand(0); in foldSelectOfBinops()
27537 NewBinOp->intersectFlagsWith(N2->getFlags()); in foldSelectOfBinops()
27543 if (N1.getOperand(0) == N2.getOperand(0)) { in foldSelectOfBinops()
27545 SDValue N21 = N2.getOperand(1); in foldSelectOfBinops()
27552 NewBinOp->intersectFlagsWith(N2->getFlags()); in foldSelectOfBinops()
27606 const SDLoc &DL, SDValue N0, SDValue N1, SDValue N2, SDValue N3, in convertSelectOfFPConstantsToLoadOffset() argument
27613 auto *TV = dyn_cast<ConstantFPSDNode>(N2); in convertSelectOfFPConstantsToLoadOffset()
27615 EVT VT = N2.getValueType(); in convertSelectOfFPConstantsToLoadOffset()
27661 SDValue N2, SDValue N3, ISD::CondCode CC, in SimplifySelectCC() argument
27664 if (N2 == N3) return N2; in SimplifySelectCC()
27668 EVT VT = N2.getValueType(); in SimplifySelectCC()
27670 auto *N2C = dyn_cast<ConstantSDNode>(N2.getNode()); in SimplifySelectCC()
27679 return !(SCCC->isZero()) ? N2 : N3; in SimplifySelectCC()
27684 convertSelectOfFPConstantsToLoadOffset(DL, N0, N1, N2, N3, CC)) in SimplifySelectCC()
27687 if (SDValue V = foldSelectCCToShiftAnd(DL, N0, N1, N2, N3, CC)) in SimplifySelectCC()
27697 N0->getValueType(0) == VT && isNullConstant(N1) && isNullConstant(N2)) { in SimplifySelectCC()
27721 bool Swap = N3C && isNullConstant(N2) && N3C->getAPIntValue().isPowerOf2(); in SimplifySelectCC()
27742 Temp = DAG.getZExtOrTrunc(SCC, SDLoc(N2), VT); in SimplifySelectCC()
27745 Temp = DAG.getNode(ISD::ZERO_EXTEND, SDLoc(N2), VT, SCC); in SimplifySelectCC()
27760 ISD::SHL, DL, N2.getValueType(), Temp, in SimplifySelectCC()
27761 DAG.getShiftAmountConstant(ShCt, N2.getValueType(), SDLoc(Temp))); in SimplifySelectCC()
27773 SDValue ValueOnZero = N2; in SimplifySelectCC()
27810 DAG.getSExtOrTrunc(CC == ISD::SETLT ? N3 : N2, DL, VT)); in SimplifySelectCC()
27813 if (SDValue S = PerformMinMaxFpToSatCombine(N0, N1, N2, N3, CC, DAG)) in SimplifySelectCC()
27815 if (SDValue S = PerformUMinFpToSatCombine(N0, N1, N2, N3, CC, DAG)) in SimplifySelectCC()