reference, declaration → definition definition → references, declarations, derived classes, virtual overrides reference to multiple definitions → definitions unreferenced |
183 class ScopeMatcher : public Matcher { 226 class RecordMatcher : public Matcher { 253 class RecordChildMatcher : public Matcher { 285 class RecordMemRefMatcher : public Matcher { 301 class CaptureGlueInputMatcher : public Matcher { 316 class MoveChildMatcher : public Matcher { 336 class MoveParentMatcher : public Matcher { 352 class CheckSameMatcher : public Matcher { 374 class CheckChildSameMatcher : public Matcher { 399 class CheckPatternPredicateMatcher : public Matcher { 420 class CheckPredicateMatcher : public Matcher { 445 class CheckOpcodeMatcher : public Matcher { 467 class SwitchOpcodeMatcher : public Matcher { 491 class CheckTypeMatcher : public Matcher { 517 class SwitchTypeMatcher : public Matcher { 542 class CheckChildTypeMatcher : public Matcher { 568 class CheckIntegerMatcher : public Matcher { 590 class CheckChildIntegerMatcher : public Matcher { 615 class CheckCondCodeMatcher : public Matcher { 636 class CheckChild2CondCodeMatcher : public Matcher { 657 class CheckValueTypeMatcher : public Matcher { 681 class CheckComplexPatMatcher : public Matcher { 720 class CheckAndImmMatcher : public Matcher { 741 class CheckOrImmMatcher : public Matcher { 762 class CheckImmAllOnesVMatcher : public Matcher { 778 class CheckImmAllZerosVMatcher : public Matcher { 794 class CheckFoldableChainNodeMatcher : public Matcher { 809 class EmitIntegerMatcher : public Matcher { 833 class EmitStringIntegerMatcher : public Matcher { 856 class EmitRegisterMatcher : public Matcher { 883 class EmitConvertToTargetMatcher : public Matcher { 906 class EmitMergeInputChainsMatcher : public Matcher { 933 class EmitCopyToRegMatcher : public Matcher { 961 class EmitNodeXFormMatcher : public Matcher { 985 class EmitNodeMatcherCommon : public Matcher { 1090 class CompleteMatchMatcher : public Matcher {
21 class Matcher;
108 const ArrayRef<U *> &A, 110 std::is_convertible<U *const *, T const *>::value>::type * = nullptr) 118 const SmallVectorTemplateCommon<U *, DummyT> &Vec, 120 std::is_convertible<U *const *, T const *>::value>::type * = nullptr) 127 ArrayRef(const std::vector<U *, A> &Vec, 129 std::is_convertible<U *const *, T const *>::value>::type* = 0)include/llvm/Support/Casting.h
57 static inline bool doit(const From &Val) { 104 static inline bool doit(const From *Val) { 106 return isa_impl<To, From>::doit(*Val); 263 inline typename cast_retty<X, Y *>::ret_type cast(Y *Val) { 263 inline typename cast_retty<X, Y *>::ret_type cast(Y *Val) { 265 return cast_convert_val<X, Y*, 266 typename simplify_type<Y*>::SimpleType>::doit(Val); 305 LLVM_NODISCARD inline typename cast_retty<X, Y *>::ret_type 306 cast_or_null(Y *Val) { 342 LLVM_NODISCARD inline typename cast_retty<X, Y *>::ret_type dyn_cast(Y *Val) { 342 LLVM_NODISCARD inline typename cast_retty<X, Y *>::ret_type dyn_cast(Y *Val) {usr/include/c++/7.4.0/bits/unique_ptr.h
68 default_delete(const default_delete<_Up>&) noexcept { } 72 operator()(_Tp* __ptr) const 74 static_assert(!is_void<_Tp>::value, 76 static_assert(sizeof(_Tp)>0, 122 using type = _Up*; 137 using pointer = typename _Ptr<_Tp, _Dp>::type; 161 typename __uniq_ptr_impl<_Tp, _Up>::_DeleterConstraint::type; 163 __uniq_ptr_impl<_Tp, _Dp> _M_t; 166 using pointer = typename __uniq_ptr_impl<_Tp, _Dp>::pointer; 167 using element_type = _Tp; 252 unique_ptr(unique_ptr<_Up, _Ep>&& __u) noexcept 297 __safe_conversion_up<_Up, _Ep>, 301 operator=(unique_ptr<_Up, _Ep>&& __u) noexceptusr/include/c++/7.4.0/type_traits
215 : public __is_void_helper<typename remove_cv<_Tp>::type>::type 581 : public __or_<is_lvalue_reference<_Tp>, 582 is_rvalue_reference<_Tp>>::type 601 : public __not_<__or_<is_function<_Tp>, is_reference<_Tp>, 601 : public __not_<__or_<is_function<_Tp>, is_reference<_Tp>, 602 is_void<_Tp>>>::type 638 : public __or_<is_object<_Tp>, is_reference<_Tp>>::type 638 : public __or_<is_object<_Tp>, is_reference<_Tp>>::type 1554 { typedef _Tp type; }; 1563 { typedef _Tp type; }; 1574 remove_const<typename remove_volatile<_Tp>::type>::type type; 1645 { typedef _Tp& type; }; 1650 : public __add_lvalue_reference_helper<_Tp> 1983 { typedef _Up type; };utils/TableGen/DAGISelEmitter.cpp
165 std::vector<Matcher*> PatternMatchers; 168 if (Matcher *M = ConvertPatternToMatcher(*Patterns[i], Variant, CGP)) 175 std::unique_ptr<Matcher> TheMatcher =utils/TableGen/DAGISelMatcher.cpp
35 Matcher *Matcher::unlinkNode(Matcher *Other) { 35 Matcher *Matcher::unlinkNode(Matcher *Other) { 40 Matcher *Cur = this; 53 bool Matcher::canMoveBefore(const Matcher *Other) const { 66 bool Matcher::canMoveBeforeNode(const Matcher *Other) const { 81 for (Matcher *C : Children) 118 for (const Matcher *C : Children) { 309 bool CheckOpcodeMatcher::isEqualImpl(const Matcher *M) const { 316 bool EmitNodeMatcherCommon::isEqualImpl(const Matcher *m) const { 349 bool CheckOpcodeMatcher::isContradictoryImpl(const Matcher *M) const { 373 bool CheckTypeMatcher::isContradictoryImpl(const Matcher *M) const { 379 bool CheckChildTypeMatcher::isContradictoryImpl(const Matcher *M) const { 391 bool CheckIntegerMatcher::isContradictoryImpl(const Matcher *M) const { 397 bool CheckChildIntegerMatcher::isContradictoryImpl(const Matcher *M) const { 409 bool CheckValueTypeMatcher::isContradictoryImpl(const Matcher *M) const { 415 bool CheckImmAllOnesVMatcher::isContradictoryImpl(const Matcher *M) const { 420 bool CheckImmAllZerosVMatcher::isContradictoryImpl(const Matcher *M) const {utils/TableGen/DAGISelMatcher.h
30 Matcher *ConvertPatternToMatcher(const PatternToMatch &Pattern,unsigned Variant, 32 void OptimizeMatcher(std::unique_ptr<Matcher> &Matcher, 34 void EmitMatcherTable(const Matcher *Matcher, const CodeGenDAGPatterns &CGP, 43 std::unique_ptr<Matcher> Next; 99 Matcher *getNext() { return Next.get(); } 100 const Matcher *getNext() const { return Next.get(); } 101 void setNext(Matcher *C) { Next.reset(C); } 102 Matcher *takeNext() { return Next.release(); } 104 std::unique_ptr<Matcher> &getNextPtr() { return Next; } 106 bool isEqual(const Matcher *M) const { 148 Matcher *unlinkNode(Matcher *Other); 148 Matcher *unlinkNode(Matcher *Other); 153 bool canMoveBefore(const Matcher *Other) const; 157 bool canMoveBeforeNode(const Matcher *Other) const; 161 bool isContradictory(const Matcher *Other) const { 176 virtual bool isEqualImpl(const Matcher *M) const = 0; 177 virtual bool isContradictoryImpl(const Matcher *M) const { return false; } 183 class ScopeMatcher : public Matcher { 184 SmallVector<Matcher*, 4> Children; 186 ScopeMatcher(ArrayRef<Matcher *> children) 193 Matcher *getChild(unsigned i) { return Children[i]; } 194 const Matcher *getChild(unsigned i) const { return Children[i]; } 196 void resetChild(unsigned i, Matcher *N) { 201 Matcher *takeChild(unsigned i) { 202 Matcher *Res = Children[i]; 216 static bool classof(const Matcher *N) { 222 bool isEqualImpl(const Matcher *M) const override { return false; } 226 class RecordMatcher : public Matcher { 241 static bool classof(const Matcher *N) { 247 bool isEqualImpl(const Matcher *M) const override { return true; } 253 class RecordChildMatcher : public Matcher { 273 static bool classof(const Matcher *N) { 279 bool isEqualImpl(const Matcher *M) const override { 285 class RecordMemRefMatcher : public Matcher { 289 static bool classof(const Matcher *N) { 295 bool isEqualImpl(const Matcher *M) const override { return true; } 301 class CaptureGlueInputMatcher : public Matcher { 305 static bool classof(const Matcher *N) { 311 bool isEqualImpl(const Matcher *M) const override { return true; } 316 class MoveChildMatcher : public Matcher { 323 static bool classof(const Matcher *N) { 329 bool isEqualImpl(const Matcher *M) const override { 336 class MoveParentMatcher : public Matcher { 340 static bool classof(const Matcher *N) { 346 bool isEqualImpl(const Matcher *M) const override { return true; } 352 class CheckSameMatcher : public Matcher { 360 static bool classof(const Matcher *N) { 366 bool isEqualImpl(const Matcher *M) const override { 374 class CheckChildSameMatcher : public Matcher { 384 static bool classof(const Matcher *N) { 390 bool isEqualImpl(const Matcher *M) const override { 399 class CheckPatternPredicateMatcher : public Matcher { 407 static bool classof(const Matcher *N) { 413 bool isEqualImpl(const Matcher *M) const override { 420 class CheckPredicateMatcher : public Matcher { 431 static bool classof(const Matcher *N) { 437 bool isEqualImpl(const Matcher *M) const override { 445 class CheckOpcodeMatcher : public Matcher { 453 static bool classof(const Matcher *N) { 459 bool isEqualImpl(const Matcher *M) const override; 460 bool isContradictoryImpl(const Matcher *M) const override; 467 class SwitchOpcodeMatcher : public Matcher { 468 SmallVector<std::pair<const SDNodeInfo*, Matcher*>, 8> Cases; 470 SwitchOpcodeMatcher(ArrayRef<std::pair<const SDNodeInfo*, Matcher*> > cases) 474 static bool classof(const Matcher *N) { 481 Matcher *getCaseMatcher(unsigned i) { return Cases[i].second; } 482 const Matcher *getCaseMatcher(unsigned i) const { return Cases[i].second; } 486 bool isEqualImpl(const Matcher *M) const override { return false; } 491 class CheckTypeMatcher : public Matcher { 501 static bool classof(const Matcher *N) { 507 bool isEqualImpl(const Matcher *M) const override { 510 bool isContradictoryImpl(const Matcher *M) const override; 517 class SwitchTypeMatcher : public Matcher { 518 SmallVector<std::pair<MVT::SimpleValueType, Matcher*>, 8> Cases; 520 SwitchTypeMatcher(ArrayRef<std::pair<MVT::SimpleValueType, Matcher*> > cases) 524 static bool classof(const Matcher *N) { 531 Matcher *getCaseMatcher(unsigned i) { return Cases[i].second; } 532 const Matcher *getCaseMatcher(unsigned i) const { return Cases[i].second; } 536 bool isEqualImpl(const Matcher *M) const override { return false; } 542 class CheckChildTypeMatcher : public Matcher { 552 static bool classof(const Matcher *N) { 558 bool isEqualImpl(const Matcher *M) const override { 562 bool isContradictoryImpl(const Matcher *M) const override; 568 class CheckIntegerMatcher : public Matcher { 576 static bool classof(const Matcher *N) { 582 bool isEqualImpl(const Matcher *M) const override { 585 bool isContradictoryImpl(const Matcher *M) const override; 590 class CheckChildIntegerMatcher : public Matcher { 600 static bool classof(const Matcher *N) { 606 bool isEqualImpl(const Matcher *M) const override { 610 bool isContradictoryImpl(const Matcher *M) const override; 615 class CheckCondCodeMatcher : public Matcher { 623 static bool classof(const Matcher *N) { 629 bool isEqualImpl(const Matcher *M) const override { 636 class CheckChild2CondCodeMatcher : public Matcher { 644 static bool classof(const Matcher *N) { 650 bool isEqualImpl(const Matcher *M) const override { 657 class CheckValueTypeMatcher : public Matcher { 665 static bool classof(const Matcher *N) { 671 bool isEqualImpl(const Matcher *M) const override { 674 bool isContradictoryImpl(const Matcher *M) const override; 681 class CheckComplexPatMatcher : public Matcher { 706 static bool classof(const Matcher *N) { 712 bool isEqualImpl(const Matcher *M) const override { 720 class CheckAndImmMatcher : public Matcher { 728 static bool classof(const Matcher *N) { 734 bool isEqualImpl(const Matcher *M) const override { 741 class CheckOrImmMatcher : public Matcher { 749 static bool classof(const Matcher *N) { 755 bool isEqualImpl(const Matcher *M) const override { 762 class CheckImmAllOnesVMatcher : public Matcher { 766 static bool classof(const Matcher *N) { 772 bool isEqualImpl(const Matcher *M) const override { return true; } 773 bool isContradictoryImpl(const Matcher *M) const override; 778 class CheckImmAllZerosVMatcher : public Matcher { 782 static bool classof(const Matcher *N) { 788 bool isEqualImpl(const Matcher *M) const override { return true; } 789 bool isContradictoryImpl(const Matcher *M) const override; 794 class CheckFoldableChainNodeMatcher : public Matcher { 799 static bool classof(const Matcher *N) { 805 bool isEqualImpl(const Matcher *M) const override { return true; } 809 class EmitIntegerMatcher : public Matcher { 819 static bool classof(const Matcher *N) { 825 bool isEqualImpl(const Matcher *M) const override { 833 class EmitStringIntegerMatcher : public Matcher { 843 static bool classof(const Matcher *N) { 849 bool isEqualImpl(const Matcher *M) const override { 856 class EmitRegisterMatcher : public Matcher { 868 static bool classof(const Matcher *N) { 874 bool isEqualImpl(const Matcher *M) const override { 883 class EmitConvertToTargetMatcher : public Matcher { 891 static bool classof(const Matcher *N) { 897 bool isEqualImpl(const Matcher *M) const override { 906 class EmitMergeInputChainsMatcher : public Matcher { 919 static bool classof(const Matcher *N) { 925 bool isEqualImpl(const Matcher *M) const override { 933 class EmitCopyToRegMatcher : public Matcher { 945 static bool classof(const Matcher *N) { 951 bool isEqualImpl(const Matcher *M) const override { 961 class EmitNodeXFormMatcher : public Matcher { 971 static bool classof(const Matcher *N) { 977 bool isEqualImpl(const Matcher *M) const override { 985 class EmitNodeMatcherCommon : public Matcher { 1031 static bool classof(const Matcher *N) { 1037 bool isEqualImpl(const Matcher *M) const override; 1058 static bool classof(const Matcher *N) { 1082 static bool classof(const Matcher *N) { 1090 class CompleteMatchMatcher : public Matcher { 1103 static bool classof(const Matcher *N) { 1109 bool isEqualImpl(const Matcher *M) const override {utils/TableGen/DAGISelMatcherEmitter.cpp
85 unsigned EmitMatcherList(const Matcher *N, unsigned Indent, 90 void EmitHistogram(const Matcher *N, raw_ostream &OS); 98 unsigned EmitMatcher(const Matcher *N, unsigned Indent, unsigned CurrentIdx, 282 EmitMatcher(const Matcher *N, unsigned Indent, unsigned CurrentIdx, 287 case Matcher::Scope: { 347 case Matcher::RecordNode: 356 case Matcher::RecordChild: 366 case Matcher::RecordMemRef: 370 case Matcher::CaptureGlueInput: 374 case Matcher::MoveChild: { 385 case Matcher::MoveParent: 389 case Matcher::CheckSame: 394 case Matcher::CheckChildSame: 400 case Matcher::CheckPatternPredicate: { 408 case Matcher::CheckPredicate: { 429 case Matcher::CheckOpcode: 434 case Matcher::SwitchOpcode: 435 case Matcher::SwitchType: { 454 const Matcher *Child; 522 case Matcher::CheckType: 532 case Matcher::CheckChildType: 538 case Matcher::CheckInteger: { 544 case Matcher::CheckChildInteger: { 552 case Matcher::CheckCondCode: 557 case Matcher::CheckChild2CondCode: 562 case Matcher::CheckValueType: 567 case Matcher::CheckComplexPat: { 586 case Matcher::CheckAndImm: { 593 case Matcher::CheckOrImm: { 600 case Matcher::CheckFoldableChainNode: 604 case Matcher::CheckImmAllOnesV: 608 case Matcher::CheckImmAllZerosV: 612 case Matcher::EmitInteger: { 620 case Matcher::EmitStringInteger: { 629 case Matcher::EmitRegister: { 652 case Matcher::EmitConvertToTarget: 657 case Matcher::EmitMergeInputChains: { 673 case Matcher::EmitCopyToReg: { 689 case Matcher::EmitNodeXForm: { 699 case Matcher::EmitNode: 700 case Matcher::MorphNodeTo: { 777 case Matcher::CompleteMatch: { 815 EmitMatcherList(const Matcher *N, unsigned Indent, unsigned CurrentIdx, 977 static void BuildHistogram(const Matcher *M, std::vector<unsigned> &OpcodeFreq){ 999 static StringRef getOpcodeString(Matcher::KindTy Kind) { 1001 case Matcher::Scope: return "OPC_Scope"; break; 1002 case Matcher::RecordNode: return "OPC_RecordNode"; break; 1003 case Matcher::RecordChild: return "OPC_RecordChild"; break; 1004 case Matcher::RecordMemRef: return "OPC_RecordMemRef"; break; 1005 case Matcher::CaptureGlueInput: return "OPC_CaptureGlueInput"; break; 1006 case Matcher::MoveChild: return "OPC_MoveChild"; break; 1007 case Matcher::MoveParent: return "OPC_MoveParent"; break; 1008 case Matcher::CheckSame: return "OPC_CheckSame"; break; 1009 case Matcher::CheckChildSame: return "OPC_CheckChildSame"; break; 1010 case Matcher::CheckPatternPredicate: 1012 case Matcher::CheckPredicate: return "OPC_CheckPredicate"; break; 1013 case Matcher::CheckOpcode: return "OPC_CheckOpcode"; break; 1014 case Matcher::SwitchOpcode: return "OPC_SwitchOpcode"; break; 1015 case Matcher::CheckType: return "OPC_CheckType"; break; 1016 case Matcher::SwitchType: return "OPC_SwitchType"; break; 1017 case Matcher::CheckChildType: return "OPC_CheckChildType"; break; 1018 case Matcher::CheckInteger: return "OPC_CheckInteger"; break; 1019 case Matcher::CheckChildInteger: return "OPC_CheckChildInteger"; break; 1020 case Matcher::CheckCondCode: return "OPC_CheckCondCode"; break; 1021 case Matcher::CheckChild2CondCode: return "OPC_CheckChild2CondCode"; break; 1022 case Matcher::CheckValueType: return "OPC_CheckValueType"; break; 1023 case Matcher::CheckComplexPat: return "OPC_CheckComplexPat"; break; 1024 case Matcher::CheckAndImm: return "OPC_CheckAndImm"; break; 1025 case Matcher::CheckOrImm: return "OPC_CheckOrImm"; break; 1026 case Matcher::CheckFoldableChainNode: 1028 case Matcher::CheckImmAllOnesV: return "OPC_CheckImmAllOnesV"; break; 1029 case Matcher::CheckImmAllZerosV: return "OPC_CheckImmAllZerosV"; break; 1030 case Matcher::EmitInteger: return "OPC_EmitInteger"; break; 1031 case Matcher::EmitStringInteger: return "OPC_EmitStringInteger"; break; 1032 case Matcher::EmitRegister: return "OPC_EmitRegister"; break; 1033 case Matcher::EmitConvertToTarget: return "OPC_EmitConvertToTarget"; break; 1034 case Matcher::EmitMergeInputChains: return "OPC_EmitMergeInputChains"; break; 1035 case Matcher::EmitCopyToReg: return "OPC_EmitCopyToReg"; break; 1036 case Matcher::EmitNode: return "OPC_EmitNode"; break; 1037 case Matcher::MorphNodeTo: return "OPC_MorphNodeTo"; break; 1038 case Matcher::EmitNodeXForm: return "OPC_EmitNodeXForm"; break; 1039 case Matcher::CompleteMatch: return "OPC_CompleteMatch"; break; 1045 void MatcherTableEmitter::EmitHistogram(const Matcher *M, 1063 void llvm::EmitMatcherTable(const Matcher *TheMatcher,utils/TableGen/DAGISelMatcherGen.cpp
95 Matcher *TheMatcher; 99 Matcher *CurPredicate; 106 Matcher *GetMatcher() const { return TheMatcher; } 108 void AddMatcher(Matcher *NewNode); 188 void MatcherGen::AddMatcher(Matcher *NewNode) { 1066 Matcher *llvm::ConvertPatternToMatcher(const PatternToMatch &Pattern,utils/TableGen/DAGISelMatcherOpt.cpp
24 static void ContractNodes(std::unique_ptr<Matcher> &MatcherPtr, 27 Matcher *N = MatcherPtr.get(); 33 std::unique_ptr<Matcher> Child(Scope->takeChild(i)); 43 Matcher *New = nullptr; 152 Matcher *CheckType = MatcherPtr.release(); 153 Matcher *CheckOpcode = CheckType->takeNext(); 154 Matcher *Tail = CheckOpcode->takeNext(); 167 static Matcher *FindNodeWithKind(Matcher *M, Matcher::KindTy Kind) { 167 static Matcher *FindNodeWithKind(Matcher *M, Matcher::KindTy Kind) { 167 static Matcher *FindNodeWithKind(Matcher *M, Matcher::KindTy Kind) { 187 static void FactorNodes(std::unique_ptr<Matcher> &InputMatcherPtr) { 190 std::unique_ptr<Matcher> *RebindableMatcherPtr = &InputMatcherPtr; 193 Matcher *N = RebindableMatcherPtr->get(); 201 std::unique_ptr<Matcher> &MatcherPtr = *RebindableMatcherPtr; 205 SmallVector<Matcher*, 32> OptionsToMatch; 209 std::unique_ptr<Matcher> Child(Scope->takeChild(i)); 223 SmallVector<Matcher*, 32> NewOptionsToMatch; 229 Matcher *Optn = OptionsToMatch[OptionIdx++]; 240 SmallVector<Matcher*, 8> EqualMatchers; 257 Matcher *ScanMatcher = OptionsToMatch[Scan]; 281 Matcher *M2 = FindNodeWithKind(ScanMatcher, Optn->getKind()); 285 Matcher *MatcherWithoutM2 = ScanMatcher->unlinkNode(M2); 316 Matcher *Shared = Optn; 322 Matcher *Tmp = EqualMatchers[i]->takeNext(); 370 Matcher::CheckType)); 394 SmallVector<std::pair<const SDNodeInfo*, Matcher*>, 8> Cases; 410 SmallVector<std::pair<MVT::SimpleValueType, Matcher*>, 8> Cases; 412 Matcher* M = FindNodeWithKind(NewOptionsToMatch[i], Matcher::CheckType); 412 Matcher* M = FindNodeWithKind(NewOptionsToMatch[i], Matcher::CheckType); 416 Matcher *MatcherWithoutCTM = NewOptionsToMatch[i]->unlinkNode(CTM); 423 Matcher *PrevMatcher = Cases[Entry-1].second; 430 Matcher *Entries[2] = { PrevMatcher, MatcherWithoutCTM }; 442 std::unique_ptr<Matcher> Scope(SM); 467 llvm::OptimizeMatcher(std::unique_ptr<Matcher> &MatcherPtr,