Lines Matching defs:matcher

11506   MatchContextClass matcher(DAG, TLI, N);
11514 return matcher.getNode(ISD::OR, DL, VT, Cond, DAG.getFreeze(F));
11519 return matcher.getNode(ISD::AND, DL, VT, Cond, DAG.getFreeze(T));
11524 matcher.getNode(ISD::XOR, DL, VT, Cond, DAG.getAllOnesConstant(DL, VT));
11525 return matcher.getNode(ISD::OR, DL, VT, NotCond, DAG.getFreeze(T));
11531 matcher.getNode(ISD::XOR, DL, VT, Cond, DAG.getAllOnesConstant(DL, VT));
11532 return matcher.getNode(ISD::AND, DL, VT, NotCond, DAG.getFreeze(F));
15868 MatchContextClass matcher(DAG, TLI, N);
15881 (!LegalOperations || matcher.isOperationLegalOrCustom(ISD::FMA, VT));
15908 return matcher.match(N, ISD::FMA) || matcher.match(N, ISD::FMAD);
15913 auto isContractableFMUL = [AllowFusionGlobally, &matcher](SDValue N) {
15914 if (!matcher.match(N, ISD::FMUL))
15927 return matcher.getNode(PreferredFusedOpcode, SL, VT, N0.getOperand(0),
15934 return matcher.getNode(PreferredFusedOpcode, SL, VT, N1.getOperand(0),
15961 if (matcher.match(FMul, ISD::FMUL) && FMul.hasOneUse()) {
15964 SDValue CDE = matcher.getNode(PreferredFusedOpcode, SL, VT, C, D, E);
15978 if (matcher.match(N0, ISD::FP_EXTEND)) {
15983 return matcher.getNode(
15985 matcher.getNode(ISD::FP_EXTEND, SL, VT, N00.getOperand(0)),
15986 matcher.getNode(ISD::FP_EXTEND, SL, VT, N00.getOperand(1)), N1);
15992 if (matcher.match(N1, ISD::FP_EXTEND)) {
15997 return matcher.getNode(
15999 matcher.getNode(ISD::FP_EXTEND, SL, VT, N10.getOperand(0)),
16000 matcher.getNode(ISD::FP_EXTEND, SL, VT, N10.getOperand(1)), N0);
16010 return matcher.getNode(
16012 matcher.getNode(PreferredFusedOpcode, SL, VT,
16013 matcher.getNode(ISD::FP_EXTEND, SL, VT, U),
16014 matcher.getNode(ISD::FP_EXTEND, SL, VT, V), Z));
16018 if (matcher.match(N02, ISD::FP_EXTEND)) {
16037 return matcher.getNode(
16039 matcher.getNode(ISD::FP_EXTEND, SL, VT, X),
16040 matcher.getNode(ISD::FP_EXTEND, SL, VT, Y),
16041 matcher.getNode(PreferredFusedOpcode, SL, VT,
16042 matcher.getNode(ISD::FP_EXTEND, SL, VT, U),
16043 matcher.getNode(ISD::FP_EXTEND, SL, VT, V), Z));
16105 MatchContextClass matcher(DAG, TLI, N);
16118 (!LegalOperations || matcher.isOperationLegalOrCustom(ISD::FMA, VT));
16142 auto isContractableFMUL = [AllowFusionGlobally, &matcher](SDValue N) {
16143 if (!matcher.match(N, ISD::FMUL))
16151 return matcher.getNode(PreferredFusedOpcode, SL, VT, XY.getOperand(0),
16153 matcher.getNode(ISD::FNEG, SL, VT, Z));
16162 return matcher.getNode(
16164 matcher.getNode(ISD::FNEG, SL, VT, YZ.getOperand(0)),
16190 if (matcher.match(N0, ISD::FNEG) && isContractableFMUL(N0.getOperand(0)) &&
16194 return matcher.getNode(PreferredFusedOpcode, SL, VT,
16195 matcher.getNode(ISD::FNEG, SL, VT, N00), N01,
16196 matcher.getNode(ISD::FNEG, SL, VT, N1));
16203 if (matcher.match(N0, ISD::FP_EXTEND)) {
16208 return matcher.getNode(
16210 matcher.getNode(ISD::FP_EXTEND, SL, VT, N00.getOperand(0)),
16211 matcher.getNode(ISD::FP_EXTEND, SL, VT, N00.getOperand(1)),
16212 matcher.getNode(ISD::FNEG, SL, VT, N1));
16219 if (matcher.match(N1, ISD::FP_EXTEND)) {
16224 return matcher.getNode(
16226 matcher.getNode(
16228 matcher.getNode(ISD::FP_EXTEND, SL, VT, N10.getOperand(0))),
16229 matcher.getNode(ISD::FP_EXTEND, SL, VT, N10.getOperand(1)), N0);
16239 if (matcher.match(N0, ISD::FP_EXTEND)) {
16241 if (matcher.match(N00, ISD::FNEG)) {
16246 return matcher.getNode(
16248 matcher.getNode(
16250 matcher.getNode(ISD::FP_EXTEND, SL, VT, N000.getOperand(0)),
16251 matcher.getNode(ISD::FP_EXTEND, SL, VT, N000.getOperand(1)),
16263 if (matcher.match(N0, ISD::FNEG)) {
16265 if (matcher.match(N00, ISD::FP_EXTEND)) {
16270 return matcher.getNode(
16272 matcher.getNode(
16274 matcher.getNode(ISD::FP_EXTEND, SL, VT, N000.getOperand(0)),
16275 matcher.getNode(ISD::FP_EXTEND, SL, VT, N000.getOperand(1)),
16291 return matcher.match(N, ISD::FMA) || matcher.match(N, ISD::FMAD);
16302 return matcher.getNode(
16304 matcher.getNode(PreferredFusedOpcode, SL, VT,
16307 matcher.getNode(ISD::FNEG, SL, VT, N1)));
16317 return matcher.getNode(
16319 matcher.getNode(ISD::FNEG, SL, VT, N1.getOperand(0)),
16321 matcher.getNode(PreferredFusedOpcode, SL, VT,
16322 matcher.getNode(ISD::FNEG, SL, VT, N20), N21, N0));
16329 if (matcher.match(N02, ISD::FP_EXTEND)) {
16334 return matcher.getNode(
16336 matcher.getNode(
16338 matcher.getNode(ISD::FP_EXTEND, SL, VT, N020.getOperand(0)),
16339 matcher.getNode(ISD::FP_EXTEND, SL, VT, N020.getOperand(1)),
16340 matcher.getNode(ISD::FNEG, SL, VT, N1)));
16351 if (matcher.match(N0, ISD::FP_EXTEND)) {
16358 return matcher.getNode(
16360 matcher.getNode(ISD::FP_EXTEND, SL, VT, N00.getOperand(0)),
16361 matcher.getNode(ISD::FP_EXTEND, SL, VT, N00.getOperand(1)),
16362 matcher.getNode(
16364 matcher.getNode(ISD::FP_EXTEND, SL, VT, N002.getOperand(0)),
16365 matcher.getNode(ISD::FP_EXTEND, SL, VT, N002.getOperand(1)),
16366 matcher.getNode(ISD::FNEG, SL, VT, N1)));
16373 if (isFusedOp(N1) && matcher.match(N1.getOperand(2), ISD::FP_EXTEND) &&
16381 return matcher.getNode(
16383 matcher.getNode(ISD::FNEG, SL, VT, N1.getOperand(0)),
16385 matcher.getNode(
16387 matcher.getNode(ISD::FNEG, SL, VT,
16388 matcher.getNode(ISD::FP_EXTEND, SL, VT, N1200)),
16389 matcher.getNode(ISD::FP_EXTEND, SL, VT, N1201), N0));
16399 if (matcher.match(N1, ISD::FP_EXTEND) && isFusedOp(N1.getOperand(0))) {
16409 return matcher.getNode(
16411 matcher.getNode(ISD::FNEG, SL, VT,
16412 matcher.getNode(ISD::FP_EXTEND, SL, VT, N100)),
16413 matcher.getNode(ISD::FP_EXTEND, SL, VT, N101),
16414 matcher.getNode(
16416 matcher.getNode(ISD::FNEG, SL, VT,
16417 matcher.getNode(ISD::FP_EXTEND, SL, VT, N1020)),
16418 matcher.getNode(ISD::FP_EXTEND, SL, VT, N1021), N0));
17102 MatchContextClass matcher(DAG, TLI, N);
17108 return matcher.getNode(ISD::FMA, DL, VT, N0, N1, N2);
17124 return matcher.getNode(ISD::FMA, DL, VT, NegN0, NegN1, N2);
17137 return matcher.getNode(ISD::FADD, SDLoc(N), VT, N1, N2);
17139 return matcher.getNode(ISD::FADD, SDLoc(N), VT, N0, N2);
17144 return matcher.getNode(ISD::FMA, SDLoc(N), VT, N1, N0, N2);
17150 if (matcher.match(N2, ISD::FMUL) && N0 == N2.getOperand(0) &&
17153 return matcher.getNode(
17155 matcher.getNode(ISD::FADD, DL, VT, N1, N2.getOperand(1)));
17159 if (matcher.match(N0, ISD::FMUL) &&
17162 return matcher.getNode(
17164 matcher.getNode(ISD::FMUL, DL, VT, N1, N0.getOperand(1)), N2);
17172 return matcher.getNode(ISD::FADD, DL, VT, N0, N2);
17176 SDValue RHSNeg = matcher.getNode(ISD::FNEG, DL, VT, N0);
17178 return matcher.getNode(ISD::FADD, DL, VT, N2, RHSNeg);
17182 if (matcher.match(N0, ISD::FNEG) &&
17186 return matcher.getNode(ISD::FMA, DL, VT, N0.getOperand(0),
17187 matcher.getNode(ISD::FNEG, DL, VT, N1), N2);
17195 return matcher.getNode(ISD::FMUL, DL, VT, N0,
17196 matcher.getNode(ISD::FADD, DL, VT, N1,
17201 if (N1CFP && matcher.match(N2, ISD::FNEG) && N2.getOperand(0) == N0) {
17202 return matcher.getNode(ISD::FMUL, DL, VT, N0,
17203 matcher.getNode(ISD::FADD, DL, VT, N1,
17213 return matcher.getNode(ISD::FNEG, DL, VT, Neg);