Lines Matching refs:Pat
173 const Pattern *Pat = nullptr; member in __anon26f8cc580111::PrettyStackTraceEmit
176 PrettyStackTraceEmit(const Record &Def, const Pattern *Pat = nullptr) in PrettyStackTraceEmit() argument
177 : Def(Def), Pat(Pat) {} in PrettyStackTraceEmit()
187 if (Pat) in print()
188 OS << " [" << Pat->getKindName() << " '" << Pat->getName() << "']"; in print()
333 for (auto *Pat : ApplyPats) { in propagateAndInferTypes() local
334 for (unsigned K = 0; K < Pat->operands_size(); ++K) { in propagateAndInferTypes()
335 auto &Op = Pat->getOperand(K); in propagateAndInferTypes()
351 inferNamedOperandType(*Pat, Op.getOperandName(), TECs)) { in propagateAndInferTypes()
363 if (PatternType Ty = inferImmediateType(*Pat, K, TECs)) { in propagateAndInferTypes()
380 for (auto *Pat : ApplyPats) { in propagateAndInferTypes() local
381 if (!OTC.check(*Pat, [&](const auto &) { return true; })) in propagateAndInferTypes()
384 Pat->getName() + "' during Type Inference"); in propagateAndInferTypes()
391 for (auto *Pat : ApplyPats) { in propagateAndInferTypes() local
393 Pat->print(errs(), /*PrintName*/ true); in propagateAndInferTypes()
588 for (const auto *Pat : MatchPats) in getRuleEqClasses() local
589 getInstEqClasses(*Pat, TECs); in getRuleEqClasses()
590 for (const auto *Pat : ApplyPats) in getRuleEqClasses() local
591 getInstEqClasses(*Pat, TECs); in getRuleEqClasses()
666 bool addApplyPattern(std::unique_ptr<Pattern> Pat);
667 bool addMatchPattern(std::unique_ptr<Pattern> Pat);
819 [this](auto Pat) { return addMatchPattern(std::move(Pat)); }, "match", in parseAll() argument
825 [this](auto Pat) { return addApplyPattern(std::move(Pat)); }, "apply", in parseAll() argument
899 for (const auto &[Name, Pat] : Pats) { in print()
901 if (Pat.get() == MatchRoot) in print()
903 if (isa<InstructionPattern>(Pat.get()) && in print()
904 ApplyRoots.contains(cast<InstructionPattern>(Pat.get()))) in print()
907 Pat->print(OS, /*PrintName=*/false); in print()
935 for (const auto &[Name, Pat] : Pats) { in verify()
936 if (!Pat) in verify()
939 if (Name != Pat->getName()) { in verify()
940 Pat->dump(); in verify()
942 ", Pat name: " + Pat->getName()); in verify()
947 if (Name.data() != Pat->getName().data()) { in verify()
950 dbgs() << "Pat String: '" << Pat->getName() << "' @ " in verify()
951 << (const void *)Pat->getName().data() << '\n'; in verify()
990 bool CombineRuleBuilder::addApplyPattern(std::unique_ptr<Pattern> Pat) { in addApplyPattern() argument
991 StringRef Name = Pat->getName(); in addApplyPattern()
997 if (isa<AnyOpcodePattern>(Pat.get())) { in addApplyPattern()
1003 if (isa<PatFragPattern>(Pat.get())) { in addApplyPattern()
1009 if (auto *CXXPat = dyn_cast<CXXPattern>(Pat.get())) in addApplyPattern()
1012 ApplyPats[Name] = std::move(Pat); in addApplyPattern()
1016 bool CombineRuleBuilder::addMatchPattern(std::unique_ptr<Pattern> Pat) { in addMatchPattern() argument
1017 StringRef Name = Pat->getName(); in addMatchPattern()
1024 if (const auto *BP = dyn_cast<BuiltinPattern>(Pat.get())) { in addMatchPattern()
1030 MatchPats[Name] = std::move(Pat); in addMatchPattern()
1083 for (auto &Pat : values(MatchPats)) { in typecheckPatterns() local
1084 if (auto *IP = dyn_cast<InstructionPattern>(Pat.get())) { in typecheckPatterns()
1090 for (auto &Pat : values(ApplyPats)) { in typecheckPatterns() local
1091 if (auto *IP = dyn_cast<InstructionPattern>(Pat.get())) { in typecheckPatterns()
1101 for (auto &Pat : values(MatchPats)) { in typecheckPatterns() local
1102 if (auto *IP = dyn_cast<InstructionPattern>(Pat.get())) { in typecheckPatterns()
1118 for (const auto &Pat : values(MatchPats)) { in buildPermutationsToEmit() local
1125 if (const auto *PFP = dyn_cast<PatFragPattern>(Pat.get())) in buildPermutationsToEmit()
1136 assert(!Perm.count(Pat.get()) && "Pattern already emitted?"); in buildPermutationsToEmit()
1139 NewPerm[Pat.get()] = K; in buildPermutationsToEmit()
1171 const auto *Pat = Match.second.get(); in checkSemantics() local
1173 if (const auto *CXXPat = dyn_cast<CXXPattern>(Pat)) { in checkSemantics()
1180 if (const auto *CGP = dyn_cast<CodeGenInstructionPattern>(Pat)) { in checkSemantics()
1192 const auto *AOP = dyn_cast<AnyOpcodePattern>(Pat); in checkSemantics()
1437 for (auto &Pat : values(MatchPats)) { in buildRuleOperandsTable() local
1438 auto *IP = dyn_cast<InstructionPattern>(Pat.get()); in buildRuleOperandsTable()
1443 for (auto &Pat : values(ApplyPats)) { in buildRuleOperandsTable() local
1444 auto *IP = dyn_cast<InstructionPattern>(Pat.get()); in buildRuleOperandsTable()
1521 if (auto Pat = parseInstructionPattern(*Arg, Name)) { in parsePatternList() local
1522 if (!ParseAction(std::move(Pat))) in parsePatternList()
1527 if (auto Pat = parseWipMatchOpcodeMatcher(*Arg, Name)) { in parsePatternList() local
1528 if (!ParseAction(std::move(Pat))) in parsePatternList()
1556 std::unique_ptr<InstructionPattern> Pat; in parseInstructionPattern() local
1559 Pat = in parseInstructionPattern()
1567 Pat = std::make_unique<PatFragPattern>(*PF, insertStrRef(Name)); in parseInstructionPattern()
1570 Pat = std::make_unique<BuiltinPattern>( in parseInstructionPattern()
1579 if (!parseInstructionPatternMIFlags(*Pat, DagArg)) in parseInstructionPattern()
1584 if (!parseInstructionPatternOperand(*Pat, Arg, DagPat->getArgName(K))) in parseInstructionPattern()
1588 if (!Pat->checkSemantics(RuleDef.getLoc())) in parseInstructionPattern()
1591 return std::move(Pat); in parseInstructionPattern()
1806 const auto AddPat = [&](std::unique_ptr<Pattern> Pat) { in parsePatFragImpl() argument
1807 A.Pats.push_back(std::move(Pat)); in parsePatFragImpl()
1918 for (auto &Pat : values(MatchPats)) { in emitMatchPattern() local
1919 if (SeenPats.contains(Pat.get())) in emitMatchPattern()
1922 switch (Pat->getKind()) { in emitMatchPattern()
1928 *cast<PatFragPattern>(Pat.get()), SeenPats)) in emitMatchPattern()
1936 cast<InstructionPattern>(Pat.get())->reportUnreachable(RuleDef.getLoc()); in emitMatchPattern()
1939 addCXXPredicate(M, CE, *cast<CXXPattern>(Pat.get()), Alts); in emitMatchPattern()
1968 for (auto &Pat : values(MatchPats)) { in emitMatchPattern() local
1969 if (Pat.get() == &AOP) in emitMatchPattern()
1972 switch (Pat->getKind()) { in emitMatchPattern()
1979 *cast<PatFragPattern>(Pat.get()), in emitMatchPattern()
1988 cast<InstructionPattern>(Pat.get())->reportUnreachable( in emitMatchPattern()
1992 addCXXPredicate(M, CE, *cast<CXXPattern>(Pat.get()), Alts); in emitMatchPattern()
2116 for (const auto &Pat : FragAlt.Pats) { in emitPatFragMatchPattern() local
2117 if (PatFragSeenPats.contains(Pat.get())) in emitPatFragMatchPattern()
2120 if (const auto *CXXPat = dyn_cast<CXXPattern>(Pat.get())) { in emitPatFragMatchPattern()
2125 if (const auto *IP = dyn_cast<InstructionPattern>(Pat.get())) { in emitPatFragMatchPattern()
2144 for (auto &Pat : values(ApplyPats)) in emitApplyPatterns() local
2145 addCXXAction(M, CE, *cast<CXXPattern>(Pat.get())); in emitApplyPatterns()
2161 for (auto &Pat : values(ApplyPats)) { in emitApplyPatterns() local
2162 if (SeenPats.contains(Pat.get())) in emitApplyPatterns()
2165 switch (Pat->getKind()) { in emitApplyPatterns()
2172 if (!emitInstructionApplyPattern(CE, M, cast<BuiltinPattern>(*Pat), in emitApplyPatterns()
2177 cast<CodeGenInstructionPattern>(*Pat).reportUnreachable(RuleDef.getLoc()); in emitApplyPatterns()
2180 addCXXAction(M, CE, *cast<CXXPattern>(Pat.get())); in emitApplyPatterns()