Lines Matching defs:Pat
157 const Pattern *Pat = nullptr;
160 PrettyStackTraceEmit(const Record &Def, const Pattern *Pat = nullptr)
161 : Def(Def), Pat(Pat) {}
171 if (Pat)
172 OS << " [" << Pat->getKindName() << " '" << Pat->getName() << "']";
317 for (auto *Pat : ApplyPats) {
318 for (unsigned K = 0; K < Pat->operands_size(); ++K) {
319 auto &Op = Pat->getOperand(K);
335 inferNamedOperandType(*Pat, Op.getOperandName(), TECs)) {
347 if (PatternType Ty = inferImmediateType(*Pat, K, TECs)) {
364 for (auto *Pat : ApplyPats) {
365 if (!OTC.check(*Pat, [&](const auto &) { return true; }))
368 Pat->getName() + "' during Type Inference");
375 for (auto *Pat : ApplyPats) {
377 Pat->print(errs(), /*PrintName*/ true);
577 for (const auto *Pat : MatchPats)
578 getInstEqClasses(*Pat, TECs);
579 for (const auto *Pat : ApplyPats)
580 getInstEqClasses(*Pat, TECs);
674 bool addApplyPattern(std::unique_ptr<Pattern> Pat);
675 bool addMatchPattern(std::unique_ptr<Pattern> Pat);
803 [this](auto Pat) { return addMatchPattern(std::move(Pat)); }, "match",
809 [this](auto Pat) { return addApplyPattern(std::move(Pat)); }, "apply",
882 for (const auto &[Name, Pat] : Pats) {
884 if (Pat.get() == MatchRoot)
886 if (isa<InstructionPattern>(Pat.get()) &&
887 ApplyRoots.contains(cast<InstructionPattern>(Pat.get())))
890 Pat->print(OS, /*PrintName=*/false);
918 for (const auto &[Name, Pat] : Pats) {
919 if (!Pat)
922 if (Name != Pat->getName()) {
923 Pat->dump();
925 ", Pat name: " + Pat->getName());
930 if (Name.data() != Pat->getName().data()) {
933 dbgs() << "Pat String: '" << Pat->getName() << "' @ "
934 << (const void *)Pat->getName().data() << '\n';
991 bool CombineRuleBuilder::addApplyPattern(std::unique_ptr<Pattern> Pat) {
992 StringRef Name = Pat->getName();
998 if (isa<AnyOpcodePattern>(Pat.get())) {
1004 if (isa<PatFragPattern>(Pat.get())) {
1010 if (auto *CXXPat = dyn_cast<CXXPattern>(Pat.get()))
1013 ApplyPats[Name] = std::move(Pat);
1017 bool CombineRuleBuilder::addMatchPattern(std::unique_ptr<Pattern> Pat) {
1018 StringRef Name = Pat->getName();
1025 if (const auto *BP = dyn_cast<BuiltinPattern>(Pat.get())) {
1031 MatchPats[Name] = std::move(Pat);
1077 for (auto &Pat : values(MatchPats)) {
1078 if (auto *IP = dyn_cast<InstructionPattern>(Pat.get())) {
1084 for (auto &Pat : values(ApplyPats)) {
1085 if (auto *IP = dyn_cast<InstructionPattern>(Pat.get())) {
1095 for (auto &Pat : values(MatchPats)) {
1096 if (auto *IP = dyn_cast<InstructionPattern>(Pat.get())) {
1119 for (const auto &Pat : values(MatchPats)) {
1126 if (const auto *PFP = dyn_cast<PatFragPattern>(Pat.get()))
1137 assert(!Perm.count(Pat.get()) && "Pattern already emitted?");
1140 NewPerm[Pat.get()] = K;
1205 const auto *Pat = Match.second.get();
1207 if (const auto *CXXPat = dyn_cast<CXXPattern>(Pat)) {
1213 if (const auto IP = dyn_cast<InstructionPattern>(Pat)) {
1218 if (const auto *CGP = dyn_cast<CodeGenInstructionPattern>(Pat)) {
1232 const auto *AOP = dyn_cast<AnyOpcodePattern>(Pat);
1246 Pattern *Pat = Apply.second.get();
1248 if (*IsUsingCXXPatterns != isa<CXXPattern>(Pat)) {
1254 IsUsingCXXPatterns = isa<CXXPattern>(Pat);
1256 assert(Pat);
1257 const auto *IP = dyn_cast<InstructionPattern>(Pat);
1497 for (auto &Pat : values(MatchPats)) {
1498 auto *IP = dyn_cast<InstructionPattern>(Pat.get());
1503 for (auto &Pat : values(ApplyPats)) {
1504 auto *IP = dyn_cast<InstructionPattern>(Pat.get());
1590 for (auto &Pat : values(MatchPats)) {
1591 if (SeenPats.contains(Pat.get()))
1594 switch (Pat->getKind()) {
1600 *cast<PatFragPattern>(Pat.get()), SeenPats))
1608 cast<InstructionPattern>(Pat.get())->reportUnreachable(RuleDef.getLoc());
1613 CXXMatchers.push_back(cast<CXXPattern>(Pat.get()));
1615 addCXXPredicate(M, CE, *cast<CXXPattern>(Pat.get()), Alts);
1647 for (auto &Pat : values(MatchPats)) {
1648 if (Pat.get() == &AOP)
1651 switch (Pat->getKind()) {
1658 *cast<PatFragPattern>(Pat.get()),
1667 cast<InstructionPattern>(Pat.get())->reportUnreachable(
1673 CXXMatchers.push_back(cast<CXXPattern>(Pat.get()));
1675 addCXXPredicate(M, CE, *cast<CXXPattern>(Pat.get()), Alts);
1801 for (const auto &Pat : FragAlt.Pats) {
1802 if (PatFragSeenPats.contains(Pat.get()))
1805 if (const auto *CXXPat = dyn_cast<CXXPattern>(Pat.get())) {
1810 if (const auto *IP = dyn_cast<InstructionPattern>(Pat.get())) {
1842 for (auto &Pat : values(ApplyPats)) {
1843 if (SeenPats.contains(Pat.get()))
1846 switch (Pat->getKind()) {
1853 if (!emitInstructionApplyPattern(CE, M, cast<BuiltinPattern>(*Pat),
1858 cast<CodeGenInstructionPattern>(*Pat).reportUnreachable(RuleDef.getLoc());
1902 for (auto &Pat : ApplyPats) {
1903 auto *CXXPat = cast<CXXPattern>(Pat.second.get());