Lines Matching refs:Matcher

1 //===- DAGISelMatcherOpt.cpp - Optimize a DAG Matcher ---------------------===//
10 // This file implements the DAG Matcher optimizer.
25 static void ContractNodes(OwningPtr<Matcher> &MatcherPtr,
28 Matcher *N = MatcherPtr.get();
34 OwningPtr<Matcher> Child(Scope->takeChild(i));
44 Matcher *New = 0;
84 Matcher *EmitNode = MatcherPtr.take();
85 Matcher *MFR = EmitNode->takeNext();
86 Matcher *Tail = MFR->takeNext();
164 Matcher *CheckType = MatcherPtr.take();
165 Matcher *CheckOpcode = CheckType->takeNext();
166 Matcher *Tail = CheckOpcode->takeNext();
187 static void SinkPatternPredicates(OwningPtr<Matcher> &MatcherPtr) {
190 Matcher *N = MatcherPtr.get();
196 OwningPtr<Matcher> Child(Scope->takeChild(i));
232 static Matcher *FindNodeWithKind(Matcher *M, Matcher::KindTy Kind) {
252 static void FactorNodes(OwningPtr<Matcher> &MatcherPtr) {
254 Matcher *N = MatcherPtr.get();
265 SmallVector<Matcher*, 32> OptionsToMatch;
269 OwningPtr<Matcher> Child(Scope->takeChild(i));
272 if (Matcher *N = Child.take())
276 SmallVector<Matcher*, 32> NewOptionsToMatch;
282 Matcher *Optn = OptionsToMatch[OptionIdx++];
293 SmallVector<Matcher*, 8> EqualMatchers;
310 Matcher *ScanMatcher = OptionsToMatch[Scan];
334 Matcher *M2 = FindNodeWithKind(ScanMatcher, Optn->getKind());
338 Matcher *MatcherWithoutM2 = ScanMatcher->unlinkNode(M2);
372 Matcher *Shared = Optn;
378 Matcher *Tmp = EqualMatchers[i]->takeNext();
426 Matcher::CheckType));
450 SmallVector<std::pair<const SDNodeInfo*, Matcher*>, 8> Cases;
465 SmallVector<std::pair<MVT::SimpleValueType, Matcher*>, 8> Cases;
469 Matcher::CheckType));
470 Matcher *MatcherWithoutCTM = NewOptionsToMatch[i]->unlinkNode(CTM);
477 Matcher *PrevMatcher = Cases[Entry-1].second;
484 Matcher *Entries[2] = { PrevMatcher, MatcherWithoutCTM };
510 Matcher *llvm::OptimizeMatcher(Matcher *TheMatcher,
512 OwningPtr<Matcher> MatcherPtr(TheMatcher);