xref: /llvm-project/mlir/lib/TableGen/Pass.cpp (revision 3cfe412e4c90718a3c5abe0aaf2209053a490982)
18155e41aSRiver Riddle //===- Pass.cpp - Pass related classes ------------------------------------===//
28155e41aSRiver Riddle //
38155e41aSRiver Riddle // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
48155e41aSRiver Riddle // See https://llvm.org/LICENSE.txt for license information.
58155e41aSRiver Riddle // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
68155e41aSRiver Riddle //
78155e41aSRiver Riddle //===----------------------------------------------------------------------===//
88155e41aSRiver Riddle 
98155e41aSRiver Riddle #include "mlir/TableGen/Pass.h"
108155e41aSRiver Riddle #include "llvm/TableGen/Record.h"
118155e41aSRiver Riddle 
128155e41aSRiver Riddle using namespace mlir;
138155e41aSRiver Riddle using namespace mlir::tblgen;
148155e41aSRiver Riddle 
158155e41aSRiver Riddle //===----------------------------------------------------------------------===//
169a277af2SRiver Riddle // PassOption
179a277af2SRiver Riddle //===----------------------------------------------------------------------===//
189a277af2SRiver Riddle 
getCppVariableName() const199a277af2SRiver Riddle StringRef PassOption::getCppVariableName() const {
209a277af2SRiver Riddle   return def->getValueAsString("cppName");
219a277af2SRiver Riddle }
229a277af2SRiver Riddle 
getArgument() const239a277af2SRiver Riddle StringRef PassOption::getArgument() const {
249a277af2SRiver Riddle   return def->getValueAsString("argument");
259a277af2SRiver Riddle }
269a277af2SRiver Riddle 
getType() const279a277af2SRiver Riddle StringRef PassOption::getType() const { return def->getValueAsString("type"); }
289a277af2SRiver Riddle 
getDefaultValue() const29*3cfe412eSFangrui Song std::optional<StringRef> PassOption::getDefaultValue() const {
309a277af2SRiver Riddle   StringRef defaultVal = def->getValueAsString("defaultValue");
31*3cfe412eSFangrui Song   return defaultVal.empty() ? std::optional<StringRef>() : defaultVal;
329a277af2SRiver Riddle }
339a277af2SRiver Riddle 
getDescription() const349a277af2SRiver Riddle StringRef PassOption::getDescription() const {
359a277af2SRiver Riddle   return def->getValueAsString("description");
369a277af2SRiver Riddle }
379a277af2SRiver Riddle 
getAdditionalFlags() const38*3cfe412eSFangrui Song std::optional<StringRef> PassOption::getAdditionalFlags() const {
399a277af2SRiver Riddle   StringRef additionalFlags = def->getValueAsString("additionalOptFlags");
40*3cfe412eSFangrui Song   return additionalFlags.empty() ? std::optional<StringRef>() : additionalFlags;
419a277af2SRiver Riddle }
429a277af2SRiver Riddle 
isListOption() const439a277af2SRiver Riddle bool PassOption::isListOption() const {
449a277af2SRiver Riddle   return def->isSubClassOf("ListOption");
459a277af2SRiver Riddle }
469a277af2SRiver Riddle 
479a277af2SRiver Riddle //===----------------------------------------------------------------------===//
489a277af2SRiver Riddle // PassStatistic
499a277af2SRiver Riddle //===----------------------------------------------------------------------===//
509a277af2SRiver Riddle 
getCppVariableName() const519a277af2SRiver Riddle StringRef PassStatistic::getCppVariableName() const {
529a277af2SRiver Riddle   return def->getValueAsString("cppName");
539a277af2SRiver Riddle }
549a277af2SRiver Riddle 
getName() const559a277af2SRiver Riddle StringRef PassStatistic::getName() const {
569a277af2SRiver Riddle   return def->getValueAsString("name");
579a277af2SRiver Riddle }
589a277af2SRiver Riddle 
getDescription() const599a277af2SRiver Riddle StringRef PassStatistic::getDescription() const {
609a277af2SRiver Riddle   return def->getValueAsString("description");
619a277af2SRiver Riddle }
629a277af2SRiver Riddle 
639a277af2SRiver Riddle //===----------------------------------------------------------------------===//
648155e41aSRiver Riddle // Pass
658155e41aSRiver Riddle //===----------------------------------------------------------------------===//
668155e41aSRiver Riddle 
Pass(const llvm::Record * def)679a277af2SRiver Riddle Pass::Pass(const llvm::Record *def) : def(def) {
689a277af2SRiver Riddle   for (auto *init : def->getValueAsListOfDefs("options"))
69e5639b3fSMehdi Amini     options.emplace_back(init);
709a277af2SRiver Riddle   for (auto *init : def->getValueAsListOfDefs("statistics"))
71e5639b3fSMehdi Amini     statistics.emplace_back(init);
72f9dc2b70SMehdi Amini   for (StringRef dialect : def->getValueAsListOfStrings("dependentDialects"))
73f9dc2b70SMehdi Amini     dependentDialects.push_back(dialect);
749a277af2SRiver Riddle }
758155e41aSRiver Riddle 
getArgument() const768155e41aSRiver Riddle StringRef Pass::getArgument() const {
778155e41aSRiver Riddle   return def->getValueAsString("argument");
788155e41aSRiver Riddle }
798155e41aSRiver Riddle 
getBaseClass() const801834ad4aSRiver Riddle StringRef Pass::getBaseClass() const {
811834ad4aSRiver Riddle   return def->getValueAsString("baseClass");
821834ad4aSRiver Riddle }
831834ad4aSRiver Riddle 
getSummary() const848155e41aSRiver Riddle StringRef Pass::getSummary() const { return def->getValueAsString("summary"); }
858155e41aSRiver Riddle 
getDescription() const868155e41aSRiver Riddle StringRef Pass::getDescription() const {
878155e41aSRiver Riddle   return def->getValueAsString("description");
888155e41aSRiver Riddle }
898155e41aSRiver Riddle 
getConstructor() const908155e41aSRiver Riddle StringRef Pass::getConstructor() const {
918155e41aSRiver Riddle   return def->getValueAsString("constructor");
928155e41aSRiver Riddle }
9332c5578bSMichele Scuttari 
getDependentDialects() const94f9dc2b70SMehdi Amini ArrayRef<StringRef> Pass::getDependentDialects() const {
95f9dc2b70SMehdi Amini   return dependentDialects;
96f9dc2b70SMehdi Amini }
979a277af2SRiver Riddle 
getOptions() const989a277af2SRiver Riddle ArrayRef<PassOption> Pass::getOptions() const { return options; }
999a277af2SRiver Riddle 
getStatistics() const1009a277af2SRiver Riddle ArrayRef<PassStatistic> Pass::getStatistics() const { return statistics; }
101