Lines Matching refs:N2

586     SDValue SimplifySelect(const SDLoc &DL, SDValue N0, SDValue N1, SDValue N2);
588 SDValue N2, SDValue N3, ISD::CondCode CC,
591 const SDLoc &DL, SDValue N0, SDValue N1, SDValue N2, SDValue N3,
595 SDValue N2, SDValue N3, ISD::CondCode CC);
976 SDValue N2) { in getNode() argument
981 {N1, N2, RootMaskOp, RootVectorLenOp}); in getNode()
985 SDValue N2, SDValue N3) { in getNode() argument
990 {N1, N2, N3, RootMaskOp, RootVectorLenOp}); in getNode()
1003 SDValue N2, SDNodeFlags Flags) { in getNode() argument
1007 return DAG.getNode(VPOpcode, DL, VT, {N1, N2, RootMaskOp, RootVectorLenOp}, in getNode()
1012 SDValue N2, SDValue N3, SDNodeFlags Flags) { in getNode() argument
1017 {N1, N2, N3, RootMaskOp, RootVectorLenOp}, Flags); in getNode()
1131 SDValue N0, N1, N2; in isOneUseSetCC() local
1132 if (isSetCCEquivalent(N, N0, N1, N2) && N->hasOneUse()) in isOneUseSetCC()
5517 static SDValue isSaturatingMinMax(SDValue N0, SDValue N1, SDValue N2, in isSaturatingMinMax() argument
5520 auto isSignedMinMax = [&](SDValue N0, SDValue N1, SDValue N2, SDValue N3, in isSaturatingMinMax()
5524 if (N0 != N2 && (N2.getOpcode() != ISD::TRUNCATE || N0 != N2.getOperand(0))) in isSaturatingMinMax()
5539 unsigned Opcode0 = isSignedMinMax(N0, N1, N2, N3, CC); in isSaturatingMinMax()
5620 static SDValue PerformMinMaxFpToSatCombine(SDValue N0, SDValue N1, SDValue N2, in PerformMinMaxFpToSatCombine() argument
5625 SDValue Fp = isSaturatingMinMax(N0, N1, N2, N3, CC, BW, Unsigned, DAG); in PerformMinMaxFpToSatCombine()
5639 return DAG.getExtOrTrunc(!Unsigned, Sat, DL, N2->getValueType(0)); in PerformMinMaxFpToSatCombine()
5642 static SDValue PerformUMinFpToSatCombine(SDValue N0, SDValue N1, SDValue N2, in PerformUMinFpToSatCombine() argument
5648 if ((N0 != N2 && in PerformUMinFpToSatCombine()
5649 (N2.getOpcode() != ISD::TRUNCATE || N0 != N2.getOperand(0))) || in PerformUMinFpToSatCombine()
10767 SDValue N2 = N->getOperand(2); in visitFunnelShift() local
10775 N2, APInt(N2.getScalarValueSizeInBits(), BitWidth - 1))) in visitFunnelShift()
10783 if (ConstantSDNode *Cst = isConstOrConstSplat(N2)) { in visitFunnelShift()
10784 EVT ShAmtTy = N2.getValueType(); in visitFunnelShift()
10855 APInt ModuloBits(N2.getScalarValueSizeInBits(), BitWidth - 1); in visitFunnelShift()
10856 if (IsUndefOrZero(N0) && !IsFSHL && DAG.MaskedValueIsZero(N2, ~ModuloBits)) in visitFunnelShift()
10857 return DAG.getNode(ISD::SRL, SDLoc(N), VT, N1, N2); in visitFunnelShift()
10858 if (IsUndefOrZero(N1) && IsFSHL && DAG.MaskedValueIsZero(N2, ~ModuloBits)) in visitFunnelShift()
10859 return DAG.getNode(ISD::SHL, SDLoc(N), VT, N0, N2); in visitFunnelShift()
10868 return DAG.getNode(RotOpc, SDLoc(N), VT, N0, N2); in visitFunnelShift()
11319 SDValue N2 = N->getOperand(2); in foldSelectOfConstants() local
11328 auto *C2 = dyn_cast<ConstantSDNode>(N2); in foldSelectOfConstants()
11399 return DAG.getNode(ISD::ADD, DL, VT, Cond, N2); in foldSelectOfConstants()
11405 return DAG.getNode(ISD::ADD, DL, VT, Cond, N2); in foldSelectOfConstants()
11419 return DAG.getNode(ISD::OR, DL, VT, Cond, N2); in foldSelectOfConstants()
11472 SDValue N2 = N->getOperand(2); in foldVSelectToSignBitSplatMask() local
11488 std::swap(N1, N2); in foldVSelectToSignBitSplatMask()
11493 if (isNullOrNullSplat(N2)) { in foldVSelectToSignBitSplatMask()
11505 return DAG.getNode(ISD::OR, DL, VT, Sra, N2); in foldVSelectToSignBitSplatMask()
11517 return DAG.getNode(ISD::AND, DL, VT, Not, N2); in foldVSelectToSignBitSplatMask()
11530 SDValue N2 = N->getOperand(2); in visitSELECT() local
11536 if (SDValue V = DAG.simplifySelect(N0, N1, N2)) in visitSELECT()
11544 SDValue SelectOp = DAG.getSelect(DL, VT, F, N2, N1); in visitSELECT()
11553 if (SimplifySelectOps(N, N1, N2)) in visitSELECT()
11573 DAG.getNode(ISD::SELECT, DL, N1.getValueType(), Cond1, N1, N2, Flags); in visitSELECT()
11576 InnerSelect, N2, Flags); in visitSELECT()
11586 Cond1, N1, N2, Flags); in visitSELECT()
11600 if (N1_2 == N2 && N0.getValueType() == N1_0.getValueType()) { in visitSELECT()
11605 N2, Flags); in visitSELECT()
11610 N2, Flags); in visitSELECT()
11615 if (N2->getOpcode() == ISD::SELECT && N2->hasOneUse()) { in visitSELECT()
11616 SDValue N2_0 = N2->getOperand(0); in visitSELECT()
11617 SDValue N2_1 = N2->getOperand(1); in visitSELECT()
11618 SDValue N2_2 = N2->getOperand(2); in visitSELECT()
11643 if (N0.hasOneUse() && isLegalToCombineMinNumMaxNum(DAG, N1, N2, TLI)) in visitSELECT()
11645 combineMinNumMaxNum(DL, VT, Cond0, Cond1, N1, N2, CC)) in visitSELECT()
11655 N2.getOpcode() == ISD::ADD && Cond0 == N2.getOperand(0)) { in visitSELECT()
11656 auto *C = dyn_cast<ConstantSDNode>(N2.getOperand(1)); in visitSELECT()
11672 SDValue UAO = DAG.getNode(ISD::UADDO, DL, VTs, Cond0, N2.getOperand(1)); in visitSELECT()
11684 N2, N0.getOperand(2)); in visitSELECT()
11689 if (SDValue NewSel = SimplifySelect(DL, N0, N1, N2)) in visitSELECT()
11697 if (SDValue R = combineSelectAsExtAnd(N0, N1, N2, DL, DAG)) in visitSELECT()
12093 SDValue N2 = N->getOperand(2); in foldVSelectOfConstants() local
12098 !ISD::isBuildVectorOfConstantSDNodes(N2.getNode())) in foldVSelectOfConstants()
12109 SDValue N2Elt = N2.getOperand(i); in foldVSelectOfConstants()
12131 return DAG.getNode(ISD::ADD, DL, VT, ExtendedCond, N2); in foldVSelectOfConstants()
12137 isNullOrNullSplat(N2)) { in foldVSelectOfConstants()
12156 SDValue N2 = N->getOperand(2); in visitVSELECT() local
12160 if (SDValue V = DAG.simplifySelect(N0, N1, N2)) in visitVSELECT()
12168 return DAG.getSelect(DL, VT, F, N2, N1); in visitVSELECT()
12183 N1 == LHS && N2.getOpcode() == ISD::SUB && N1 == N2.getOperand(1)) in visitVSELECT()
12184 isAbs = ISD::isBuildVectorAllZeros(N2.getOperand(0).getNode()); in visitVSELECT()
12186 N2 == LHS && N1.getOpcode() == ISD::SUB && N2 == N1.getOperand(1)) in visitVSELECT()
12209 if (SDValue FMinMax = combineMinNumMaxNum(DL, VT, LHS, RHS, N1, N2, CC)) in visitVSELECT()
12213 if (SDValue S = PerformMinMaxFpToSatCombine(LHS, RHS, N1, N2, CC, DAG)) in visitVSELECT()
12215 if (SDValue S = PerformUMinFpToSatCombine(LHS, RHS, N1, N2, CC, DAG)) in visitVSELECT()
12244 return DAG.getSelect(DL, N1.getValueType(), WideSetCC, N1, N2); in visitVSELECT()
12253 if (N1.getOpcode() == ISD::SUB && N2.getOpcode() == ISD::SUB && in visitVSELECT()
12254 N1.getOperand(0) == N2.getOperand(1) && in visitVSELECT()
12255 N1.getOperand(1) == N2.getOperand(0)) { in visitVSELECT()
12287 Other = N2; in visitVSELECT()
12289 } else if (ISD::isConstantSplatVectorAllOnes(N2.getNode())) { in visitVSELECT()
12334 Other = N2; in visitVSELECT()
12336 } else if (ISD::isConstantSplatVectorAllZeros(N2.getNode())) { in visitVSELECT()
12408 if (SimplifySelectOps(N, N1, N2)) in visitVSELECT()
12416 return N2; in visitVSELECT()
12422 N2.getOpcode() == ISD::CONCAT_VECTORS && in visitVSELECT()
12444 SDValue N2 = N->getOperand(2); in visitSELECT_CC() local
12450 if (N2 == N3) in visitSELECT_CC()
12451 return N2; in visitSELECT_CC()
12456 return DAG.getSelect(SDLoc(N), N2.getValueType(), N0, N3, N2); in visitSELECT_CC()
12466 return SCCC->isZero() ? N3 : N2; in visitSELECT_CC()
12471 return N2; in visitSELECT_CC()
12476 ISD::SELECT_CC, SDLoc(N), N2.getValueType(), SCC.getOperand(0), in visitSELECT_CC()
12477 SCC.getOperand(1), N2, N3, SCC.getOperand(2)); in visitSELECT_CC()
12484 if (SimplifySelectOps(N, N2, N3)) in visitSELECT_CC()
12488 return SimplifySelectCC(SDLoc(N), N0, N1, N2, N3, CC); in visitSELECT_CC()
16792 SDValue N2 = N->getOperand(2); in visitFMA() local
16808 isa<ConstantFPSDNode>(N2)) { in visitFMA()
16809 return matcher.getNode(ISD::FMA, DL, VT, N0, N1, N2); in visitFMA()
16825 return matcher.getNode(ISD::FMA, DL, VT, NegN0, NegN1, N2); in visitFMA()
16831 return N2; in visitFMA()
16833 return N2; in visitFMA()
16838 return matcher.getNode(ISD::FADD, SDLoc(N), VT, N1, N2); in visitFMA()
16840 return matcher.getNode(ISD::FADD, SDLoc(N), VT, N0, N2); in visitFMA()
16845 return matcher.getNode(ISD::FMA, SDLoc(N), VT, N1, N0, N2); in visitFMA()
16849 if (matcher.match(N2, ISD::FMUL) && N0 == N2.getOperand(0) && in visitFMA()
16851 DAG.isConstantFPBuildVectorOrConstantFP(N2.getOperand(1))) { in visitFMA()
16854 matcher.getNode(ISD::FADD, DL, VT, N1, N2.getOperand(1))); in visitFMA()
16863 matcher.getNode(ISD::FMUL, DL, VT, N1, N0.getOperand(1)), N2); in visitFMA()
16871 return matcher.getNode(ISD::FADD, DL, VT, N0, N2); in visitFMA()
16877 return matcher.getNode(ISD::FADD, DL, VT, N2, RHSNeg); in visitFMA()
16886 matcher.getNode(ISD::FNEG, DL, VT, N1), N2); in visitFMA()
16893 if (N1CFP && N0 == N2) { in visitFMA()
16900 if (N1CFP && matcher.match(N2, ISD::FNEG) && N2.getOperand(0) == N0) { in visitFMA()
16919 SDValue N2 = N->getOperand(2); in visitFMAD() local
16925 isa<ConstantFPSDNode>(N2)) in visitFMAD()
16926 return DAG.getNode(ISD::FMAD, DL, VT, N0, N1, N2); in visitFMAD()
17851 SDValue N2 = N->getOperand(2); in visitBRCOND() local
17857 N1->getOperand(0), N2); in visitBRCOND()
17906 DAG.getSetCC(SDLoc(N1), N1->getValueType(0), S0, S1, Cond), N2); in visitBRCOND()
17922 N1.getOperand(0), N1.getOperand(1), N2); in visitBRCOND()
17931 ChainHandle.getValue(), NewN1, N2); in visitBRCOND()
26125 SDValue N2 = N->getOperand(2); in visitINSERT_SUBVECTOR() local
26136 N1.getOperand(1) == N2) { in visitINSERT_SUBVECTOR()
26142 if (isNullConstant(N2) && in visitINSERT_SUBVECTOR()
26146 VT, N0, N1.getOperand(0), N2); in visitINSERT_SUBVECTOR()
26149 VT, N1.getOperand(0), N2); in visitINSERT_SUBVECTOR()
26165 N1.getOperand(0).getOperand(1) == N2 && in visitINSERT_SUBVECTOR()
26186 CN0.getValueType(), CN0, CN1, N2); in visitINSERT_SUBVECTOR()
26196 N0.getOperand(2) == N2) in visitINSERT_SUBVECTOR()
26198 N1, N2); in visitINSERT_SUBVECTOR()
26205 isNullConstant(N2)) in visitINSERT_SUBVECTOR()
26207 N1.getOperand(1), N2); in visitINSERT_SUBVECTOR()
26256 N0.getOperand(0), N1, N2); in visitINSERT_SUBVECTOR()
26817 SDValue N2) { in SimplifySelect() argument
26821 SDValue SCC = SimplifySelectCC(DL, N0.getOperand(0), N0.getOperand(1), N1, N2, in SimplifySelect()
27043 SDValue N1, SDValue N2, SDValue N3, in foldSelectCCToShiftAnd() argument
27050 EVT AType = N2.getValueType(); in foldSelectCCToShiftAnd()
27057 if (CC == ISD::SETGT && TLI.hasAndNot(N2)) { in foldSelectCCToShiftAnd()
27060 if (!(isAllOnesConstant(N1) || (isNullConstant(N1) && N0 == N2))) in foldSelectCCToShiftAnd()
27065 if (!(isNullConstant(N1) || (isOneConstant(N1) && N0 == N2))) in foldSelectCCToShiftAnd()
27074 auto *N2C = dyn_cast<ConstantSDNode>(N2.getNode()); in foldSelectCCToShiftAnd()
27090 return DAG.getNode(ISD::AND, DL, AType, Shift, N2); in foldSelectCCToShiftAnd()
27110 return DAG.getNode(ISD::AND, DL, AType, Shift, N2); in foldSelectCCToShiftAnd()
27117 SDValue N2 = N->getOperand(2); in foldSelectOfBinops() local
27121 if (!TLI.isBinOp(BinOpc) || (N2.getOpcode() != BinOpc) || in foldSelectOfBinops()
27122 (N1.getResNo() != N2.getResNo())) in foldSelectOfBinops()
27129 if (!N0->hasOneUse() || !N1->hasOneUse() || !N2->hasOneUse()) in foldSelectOfBinops()
27138 if (N1.getOperand(1) == N2.getOperand(1)) { in foldSelectOfBinops()
27140 SDValue N20 = N2.getOperand(0); in foldSelectOfBinops()
27144 NewBinOp->intersectFlagsWith(N2->getFlags()); in foldSelectOfBinops()
27150 if (N1.getOperand(0) == N2.getOperand(0)) { in foldSelectOfBinops()
27152 SDValue N21 = N2.getOperand(1); in foldSelectOfBinops()
27159 NewBinOp->intersectFlagsWith(N2->getFlags()); in foldSelectOfBinops()
27213 const SDLoc &DL, SDValue N0, SDValue N1, SDValue N2, SDValue N3, in convertSelectOfFPConstantsToLoadOffset() argument
27220 auto *TV = dyn_cast<ConstantFPSDNode>(N2); in convertSelectOfFPConstantsToLoadOffset()
27222 EVT VT = N2.getValueType(); in convertSelectOfFPConstantsToLoadOffset()
27268 SDValue N2, SDValue N3, ISD::CondCode CC, in SimplifySelectCC() argument
27271 if (N2 == N3) return N2; in SimplifySelectCC()
27275 EVT VT = N2.getValueType(); in SimplifySelectCC()
27277 auto *N2C = dyn_cast<ConstantSDNode>(N2.getNode()); in SimplifySelectCC()
27286 return !(SCCC->isZero()) ? N2 : N3; in SimplifySelectCC()
27291 convertSelectOfFPConstantsToLoadOffset(DL, N0, N1, N2, N3, CC)) in SimplifySelectCC()
27294 if (SDValue V = foldSelectCCToShiftAnd(DL, N0, N1, N2, N3, CC)) in SimplifySelectCC()
27304 N0->getValueType(0) == VT && isNullConstant(N1) && isNullConstant(N2)) { in SimplifySelectCC()
27331 bool Swap = N3C && isNullConstant(N2) && N3C->getAPIntValue().isPowerOf2(); in SimplifySelectCC()
27352 Temp = DAG.getZExtOrTrunc(SCC, SDLoc(N2), VT); in SimplifySelectCC()
27355 Temp = DAG.getNode(ISD::ZERO_EXTEND, SDLoc(N2), VT, SCC); in SimplifySelectCC()
27369 return DAG.getNode(ISD::SHL, DL, N2.getValueType(), Temp, in SimplifySelectCC()
27383 SDValue ValueOnZero = N2; in SimplifySelectCC()
27420 DAG.getSExtOrTrunc(CC == ISD::SETLT ? N3 : N2, DL, VT)); in SimplifySelectCC()
27423 if (SDValue S = PerformMinMaxFpToSatCombine(N0, N1, N2, N3, CC, DAG)) in SimplifySelectCC()
27425 if (SDValue S = PerformUMinFpToSatCombine(N0, N1, N2, N3, CC, DAG)) in SimplifySelectCC()