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 RiddleStringRef PassOption::getCppVariableName() const { 209a277af2SRiver Riddle return def->getValueAsString("cppName"); 219a277af2SRiver Riddle } 229a277af2SRiver Riddle getArgument() const239a277af2SRiver RiddleStringRef PassOption::getArgument() const { 249a277af2SRiver Riddle return def->getValueAsString("argument"); 259a277af2SRiver Riddle } 269a277af2SRiver Riddle getType() const279a277af2SRiver RiddleStringRef PassOption::getType() const { return def->getValueAsString("type"); } 289a277af2SRiver Riddle getDefaultValue() const29*3cfe412eSFangrui Songstd::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 RiddleStringRef PassOption::getDescription() const { 359a277af2SRiver Riddle return def->getValueAsString("description"); 369a277af2SRiver Riddle } 379a277af2SRiver Riddle getAdditionalFlags() const38*3cfe412eSFangrui Songstd::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 Riddlebool PassOption::isListOption() const { 449a277af2SRiver Riddle return def->isSubClassOf("ListOption"); 459a277af2SRiver Riddle } 469a277af2SRiver Riddle 479a277af2SRiver Riddle //===----------------------------------------------------------------------===// 489a277af2SRiver Riddle // PassStatistic 499a277af2SRiver Riddle //===----------------------------------------------------------------------===// 509a277af2SRiver Riddle getCppVariableName() const519a277af2SRiver RiddleStringRef PassStatistic::getCppVariableName() const { 529a277af2SRiver Riddle return def->getValueAsString("cppName"); 539a277af2SRiver Riddle } 549a277af2SRiver Riddle getName() const559a277af2SRiver RiddleStringRef PassStatistic::getName() const { 569a277af2SRiver Riddle return def->getValueAsString("name"); 579a277af2SRiver Riddle } 589a277af2SRiver Riddle getDescription() const599a277af2SRiver RiddleStringRef 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 RiddlePass::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 RiddleStringRef Pass::getArgument() const { 778155e41aSRiver Riddle return def->getValueAsString("argument"); 788155e41aSRiver Riddle } 798155e41aSRiver Riddle getBaseClass() const801834ad4aSRiver RiddleStringRef Pass::getBaseClass() const { 811834ad4aSRiver Riddle return def->getValueAsString("baseClass"); 821834ad4aSRiver Riddle } 831834ad4aSRiver Riddle getSummary() const848155e41aSRiver RiddleStringRef Pass::getSummary() const { return def->getValueAsString("summary"); } 858155e41aSRiver Riddle getDescription() const868155e41aSRiver RiddleStringRef Pass::getDescription() const { 878155e41aSRiver Riddle return def->getValueAsString("description"); 888155e41aSRiver Riddle } 898155e41aSRiver Riddle getConstructor() const908155e41aSRiver RiddleStringRef Pass::getConstructor() const { 918155e41aSRiver Riddle return def->getValueAsString("constructor"); 928155e41aSRiver Riddle } 9332c5578bSMichele Scuttari getDependentDialects() const94f9dc2b70SMehdi AminiArrayRef<StringRef> Pass::getDependentDialects() const { 95f9dc2b70SMehdi Amini return dependentDialects; 96f9dc2b70SMehdi Amini } 979a277af2SRiver Riddle getOptions() const989a277af2SRiver RiddleArrayRef<PassOption> Pass::getOptions() const { return options; } 999a277af2SRiver Riddle getStatistics() const1009a277af2SRiver RiddleArrayRef<PassStatistic> Pass::getStatistics() const { return statistics; } 101