16 #include "llvm/TableGen/Error.h"
17 #include "llvm/TableGen/Record.h"
27 auto *
def = cast<llvm::DefInit>(init)->getDef();
28 if (
def->isSubClassOf(
"PredTrait"))
30 if (
def->isSubClassOf(
"GenInternalTrait"))
32 if (
def->isSubClassOf(
"InterfaceTrait"))
34 assert(
def->isSubClassOf(
"NativeTrait"));
45 llvm::StringRef trait =
def->getValueAsString(
"trait");
46 llvm::StringRef cppNamespace =
def->getValueAsString(
"cppNamespace");
47 return cppNamespace.empty() ? trait.str()
48 : (cppNamespace +
"::" + trait).str();
52 return def->isSubClassOf(
"StructuralOpTrait");
56 return def->getValueAsString(
"extraConcreteClassDeclaration");
60 return def->getValueAsString(
"extraConcreteClassDefinition");
68 return def->getValueAsString(
"trait");
76 auto pred =
Pred(
def->getValueInit(
"predicate"));
77 return pred.getCondition();
81 return def->getValueAsString(
"summary");
91 llvm::StringRef trait =
def->getValueAsString(
"trait");
92 llvm::StringRef cppNamespace =
def->getValueAsString(
"cppNamespace");
93 return cppNamespace.empty() ? trait.str()
94 : (cppNamespace +
"::" + trait).str();
98 return def->isSubClassOf(
"DeclareInterfaceMethods");
102 return def->getValueAsListOfStrings(
"alwaysOverriddenMethods");
union mlir::linalg::@1242::ArityGroupAndKind::Kind kind
std::vector< StringRef > getAlwaysDeclaredMethods() const
std::string getFullyQualifiedTraitName() const
Interface getInterface() const
bool shouldDeclareMethods() const
StringRef getFullyQualifiedTraitName() const
bool isStructuralOpTrait() const
std::string getFullyQualifiedTraitName() const
StringRef getExtraConcreteClassDeclaration() const
StringRef getExtraConcreteClassDefinition() const
StringRef getSummary() const
std::string getPredTemplate() const
Trait(Kind kind, const llvm::Record *def)
static Trait create(const llvm::Init *init)
Include the generated interface declarations.