[llvm] [SelectionDAG] Add space-optimized forms of OPC_CheckPredicate (PR #73488)
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Mon Dec 11 01:47:07 PST 2023
================
@@ -85,7 +83,45 @@ class MatcherTableEmitter {
public:
MatcherTableEmitter(const CodeGenDAGPatterns &cgp)
- : CGP(cgp), OpcodeCounts(Matcher::HighestKind + 1, 0) {}
+ : CGP(cgp), OpcodeCounts(Matcher::HighestKind + 1, 0) {
+ // Sort ComplexPatterns by usage.
+ auto &Usage = cgp.getComplexPatternUsage();
+ std::vector<std::pair<const ComplexPattern *, unsigned>> PatternList(
+ Usage.begin(), Usage.end());
+ sort(PatternList, [](auto &A, auto &B) { return A.second > B.second; });
+ for (auto &Pattern : PatternList)
+ ComplexPatterns.push_back(Pattern.first);
+
+ // Sort Predicates by usage.
+ auto &PredicateUsage = cgp.getPredicateUsage();
+ // Merge predicates with same code.
+ for (auto &Usage : PredicateUsage) {
+ TreePattern *TP = Usage.first;
+ TreePredicateFn Pred(TP);
+ NodePredicatesByCodeToRun[Pred.getCodeToRunOnSDNode()].push_back(TP);
+ }
+
+ std::vector<std::pair<TreePattern *, unsigned>> PredicateList;
+ // Sum the usage.
+ for (auto &Predicate : NodePredicatesByCodeToRun) {
+ TinyPtrVector<TreePattern *> TPs = Predicate.second;
----------------
arsenm wrote:
Why copy?
https://github.com/llvm/llvm-project/pull/73488
More information about the llvm-commits
mailing list