Lines Matching defs:auto

113 template <typename Container> auto keys(Container &&C) {
114 return map_range(C, [](auto &Entry) -> auto & { return Entry.first; });
117 template <typename Container> auto values(Container &&C) {
118 return map_range(C, [](auto &Entry) -> auto & { return Entry.second; });
139 auto &OM = RM.getOperandMatcher(PT.getTypeOfOpName());
290 return check(P, /*CheckTypeOf*/ [](const auto &) {
301 const auto OpName = Ty.getTypeOfOpName();
324 for (auto *Pat : ApplyPats) {
326 auto &Op = Pat->getOperand(K);
371 for (auto *Pat : ApplyPats) {
372 if (!OTC.check(*Pat, [&](const auto &) { return true; }))
382 for (auto *Pat : ApplyPats) {
396 const auto *CGP = dyn_cast<CodeGenInstructionPattern>(&IP);
412 const auto MCOITypes = getMCOIOperandTypes(*CGP);
415 for (const auto &[Idx, Ty] : enumerate(MCOITypes)) {
417 const auto &Op = IP.getOperand(Idx);
442 for (auto It = TECs.findLeader(OpName); It != TECs.member_end(); ++It) {
446 const auto LookupRes = MatchOpTable.lookup(*It);
469 auto &CGI = CGP.getInst();
525 auto *CGP = dyn_cast<CodeGenInstructionPattern>(&P);
529 const auto MCOITypes = getMCOIOperandTypes(*CGP);
533 for (const auto &[Idx, Ty] : enumerate(MCOITypes))
539 for (const auto &[Ty, Idxs] : TyToOpIdx) {
550 const auto &Op = P.getOperand(Idx);
554 const auto OpName = Op.getOperandName();
583 for (const auto *Pat : MatchPats)
585 for (const auto *Pat : ApplyPats)
590 for (auto ClassIt = TECs.begin(); ClassIt != TECs.end(); ++ClassIt) {
592 if (auto MembIt = TECs.member_begin(ClassIt);
766 OperandMapperFnRef OperandMapper = [](const auto &O) { return O; });
799 auto StackTrace = PrettyStackTraceParse(RuleDef);
806 [this](auto Pat) { return addMatchPattern(std::move(Pat)); }, "match",
812 [this](auto Pat) { return addApplyPattern(std::move(Pat)); }, "apply",
824 auto StackTrace = PrettyStackTraceEmit(RuleDef);
830 for (const auto &Alts : PermutationsToEmit) {
860 for (const auto &MD : MatchDatas) {
867 const auto &SeenPFs = Parser.getSeenPatFrags();
870 for (const auto *PF : Parser.getSeenPatFrags()) {
877 const auto DumpPats = [&](StringRef Name, const PatternMap &Pats) {
885 for (const auto &[Name, Pat] : Pats) {
907 for (const auto &Perm : PermutationsToEmit) {
920 const auto VerifyPats = [&](const PatternMap &Pats) {
921 for (const auto &[Name, Pat] : Pats) {
949 [&](auto &E) { return isa<AnyOpcodePattern>(E.second.get()); })) {
966 map_range(Alts, [](const auto &PatAndPerm) {
995 if (auto *CXXPat = dyn_cast<CXXPattern>(Pat.get()))
1010 if (const auto *BP = dyn_cast<BuiltinPattern>(Pat.get())) {
1022 for (const auto &MD : MatchDatas)
1032 auto &IM = *std::prev(M.insnmatchers().end());
1033 auto Loc = RuleDef.getLoc();
1034 const auto AddComment = [&](raw_ostream &OS) {
1039 const auto &ExpandedCode =
1046 return all_of(ApplyPats, [&](auto &Entry) {
1052 return any_of(ApplyPats, [&](auto &Entry) {
1053 if (const auto *BP = dyn_cast<BuiltinPattern>(Entry.second.get()))
1062 for (auto &Pat : values(MatchPats)) {
1063 if (auto *IP = dyn_cast<InstructionPattern>(Pat.get())) {
1069 for (auto &Pat : values(ApplyPats)) {
1070 if (auto *IP = dyn_cast<InstructionPattern>(Pat.get())) {
1080 for (auto &Pat : values(MatchPats)) {
1081 if (auto *IP = dyn_cast<InstructionPattern>(Pat.get())) {
1097 for (const auto &Pat : values(MatchPats)) {
1104 if (const auto *PFP = dyn_cast<PatFragPattern>(Pat.get()))
1111 auto CurPerms = PermutationsToEmit;
1114 for (const auto &Perm : CurPerms) {
1149 for (const auto &Match : MatchPats) {
1150 const auto *Pat = Match.second.get();
1152 if (const auto *CXXPat = dyn_cast<CXXPattern>(Pat)) {
1159 if (const auto *CGP = dyn_cast<CodeGenInstructionPattern>(Pat)) {
1160 if (auto *FI = CGP->getMIFlagsInfo()) {
1171 const auto *AOP = dyn_cast<AnyOpcodePattern>(Pat);
1184 for (const auto &Apply : ApplyPats) {
1196 const auto *IP = dyn_cast<InstructionPattern>(Pat);
1207 if (const auto *CGP = dyn_cast<CodeGenInstructionPattern>(IP)) {
1208 if (auto *FI = CGP->getMIFlagsInfo()) {
1209 for (auto InstName : FI->copy_flags()) {
1210 auto It = MatchPats.find(InstName);
1228 const auto *BIP = dyn_cast<BuiltinPattern>(IP);
1242 const auto *IRoot = dyn_cast<CodeGenInstructionPattern>(MatchRoot);
1262 auto *Def = MatchOpTable.getDef(OldRegName);
1290 auto &RM = OutRMs.emplace_back(RuleDef.getLoc());
1339 const auto Finish = [&]() {
1345 auto *IPRoot = dyn_cast<InstructionPattern>(MatchRoot);
1351 auto It = ApplyPats.find(RootName);
1357 auto *ApplyRoot = dyn_cast<InstructionPattern>(It->second.get());
1370 const auto DefsNeeded = IPRoot->getApplyDefsNeeded();
1371 for (auto &Op : DefsNeeded) {
1375 auto *ApplyRedef = ApplyOpTable.getDef(Name);
1384 if (auto It = ApplyPats.find(RootName); It != ApplyPats.end()) {
1398 if (auto MatchPatIt = MatchPats.find(RootName);
1406 auto LookupRes = MatchOpTable.lookup(RootName);
1423 const auto DiagnoseRedefMatch = [&](StringRef OpName) {
1428 const auto DiagnoseRedefApply = [&](StringRef OpName) {
1433 for (auto &Pat : values(MatchPats)) {
1434 auto *IP = dyn_cast<InstructionPattern>(Pat.get());
1439 for (auto &Pat : values(ApplyPats)) {
1440 auto *IP = dyn_cast<InstructionPattern>(Pat.get());
1494 auto StackTrace = PrettyStackTraceEmit(RuleDef, &IP);
1496 auto &M = addRuleMatcher(Alts);
1502 const auto FindOperandDef = [&](StringRef Op) -> InstructionPattern * {
1506 if (const auto *CGP = dyn_cast<CodeGenInstructionPattern>(&IP)) {
1510 } else if (const auto *PFP = dyn_cast<PatFragPattern>(&IP)) {
1526 for (auto &Pat : values(MatchPats)) {
1566 auto StackTrace = PrettyStackTraceEmit(RuleDef, &AOP);
1570 auto &M = addRuleMatcher(Alts, "wip_match_opcode '" +
1583 for (auto &Pat : values(MatchPats)) {
1633 auto StackTrace = PrettyStackTraceEmit(RuleDef, &PFP);
1639 const auto &PF = PFP.getPatFrag();
1667 const auto OperandMapper =
1689 auto ArgOp = PFP.getOperand(PIdx);
1712 const auto &FragAlt = PF.getAlternative(Alts.lookup(&PFP));
1713 const auto &FragAltOT = FragAlt.OpTable;
1714 const auto LookupOperandDef =
1720 for (const auto &[Idx, InOp] : enumerate(PF.out_params())) {
1725 const auto *Def = FragAltOT.getDef(ParamName);
1738 for (const auto &Pat : FragAlt.Pats) {
1742 if (const auto *CXXPat = dyn_cast<CXXPattern>(Pat.get())) {
1747 if (const auto *IP = dyn_cast<InstructionPattern>(Pat.get())) {
1755 for (const auto &[ParamName, ArgName] : CEsToImport) {
1770 for (auto *ApplyRoot : ApplyRoots) {
1779 for (auto &Pat : values(ApplyPats)) {
1822 for (auto &MD : MatchDatas)
1827 for (auto *M : Matchers) {
1839 for (auto &Pat : ApplyPats) {
1840 auto *CXXPat = cast<CXXPattern>(Pat.second.get());
1847 const auto &Code = CXXPredicateCode::getCustomActionCode(CodeStr);
1856 auto StackTrace = PrettyStackTraceEmit(RuleDef, &P);
1864 for (auto &Op : P.named_operands()) {
1869 if (const auto *DefPat = ApplyOpTable.getDef(OpName)) {
1884 if (const auto *BP = dyn_cast<BuiltinPattern>(&P))
1890 auto &CGIP = cast<CodeGenInstructionPattern>(P);
1893 auto &DstMI =
1897 const auto EmitIntrinsicID = [&]() {
1903 for (auto &Op : P.operands()) {
1926 if (auto It = OperandToTempRegID.find(OpName);
1944 auto OpLookupRes = MatchOpTable.lookup(OpName);
1972 if (auto It = OperandToTempRegID.find(OpName);
1979 const auto Ty = Op.getType();
2002 if (const auto *FI = CGIP.getMIFlagsInfo()) {
2033 const auto Ty = O.getType();
2046 auto ImmTy = getLLTCodeGenOrTempType(Ty, M);
2055 auto InsertIt = M.insertAction<MakeTempRegisterAction>(M.actions_begin(),
2065 const auto Error = [&](Twine Reason) {
2083 auto &OldOM = M.getOperandMatcher(Old);
2084 if (auto It = OperandToTempRegID.find(New);
2091 auto &NewOM = M.getOperandMatcher(New);
2106 if (const auto *CGP = dyn_cast<CodeGenInstructionPattern>(&P)) {
2120 auto StackTrace = PrettyStackTraceEmit(RuleDef, &P);
2139 if (const auto *FI = P.getMIFlagsInfo()) {
2142 if (const auto &SetF = FI->set_flags(); !SetF.empty())
2144 if (const auto &UnsetF = FI->unset_flags(); !UnsetF.empty())
2149 for (auto [Idx, OriginalO] : enumerate(P.operands())) {
2158 auto RemappedO = OperandMapper(OriginalO);
2162 const auto OpName =
2195 if (const auto Ty = RemappedO.getType()) {
2209 const auto *DefPat = LookupOperandDef(OriginalO.getOperandName());
2228 auto InstOpM =
2239 auto &IM = (*InstOpM)->getInsnMatcher();
2240 if (const auto *CGIDef = dyn_cast<CodeGenInstructionPattern>(DefPat)) {
2248 if (const auto *PFPDef = dyn_cast<PatFragPattern>(DefPat)) {
2334 for (const auto &[ID, Name] : AllCombineRules)
2356 << " const auto First = "
2358 << " const auto Last = "
2370 << " const auto I = getRuleIdxForIdentifier(RangePair.first);\n"
2379 << " auto MaybeRange = getRuleRangeForIdentifier(RuleIdentifier);\n"
2382 << " for (auto I = MaybeRange->first; I < MaybeRange->second; ++I)\n"
2409 << " auto X = Str.split(\",\");\n"
2451 auto MatchCode = CXXPredicateCode::getAllMatchCode();
2488 for (const auto &ID : keys(AllCombineRules)) {
2505 const auto CustomActionsCode = CXXPredicateCode::getAllCustomActionsCode();
2510 for (const auto &CA : CustomActionsCode) {
2524 for (const auto &CA : CustomActionsCode) {
2559 auto *L = static_cast<const RuleMatcher *>(A);
2560 auto *R = static_cast<const RuleMatcher *>(B);
2635 for (const auto &Rule : Rules)
2706 for (const auto &Combiner : SelectedCombiners) {