17 #ifndef MLIR_DIALECT_UTILS_STRUCTUREDOPSUTILS_H 18 #define MLIR_DIALECT_UTILS_STRUCTUREDOPSUTILS_H 22 #include "llvm/ADT/StringRef.h" 27 static constexpr StringLiteral getIndexingMapsAttrName() {
28 return StringLiteral(
"indexing_maps");
33 static constexpr StringLiteral getIteratorTypesAttrName() {
34 return StringLiteral(
"iterator_types");
39 static constexpr StringLiteral getArgsInAttrName() {
40 return StringLiteral(
"args_in");
45 static constexpr StringLiteral getArgsOutAttrName() {
46 return StringLiteral(
"args_out");
51 static constexpr StringLiteral getDocAttrName() {
return StringLiteral(
"doc"); }
55 static constexpr StringLiteral getFunAttrName() {
return StringLiteral(
"fun"); }
59 static constexpr StringLiteral getLibraryCallAttrName() {
60 return StringLiteral(
"library_call");
64 inline static constexpr StringLiteral getParallelIteratorTypeName() {
65 return StringLiteral(
"parallel");
69 inline static constexpr StringLiteral getReductionIteratorTypeName() {
70 return StringLiteral(
"reduction");
74 inline static constexpr StringLiteral getWindowIteratorTypeName() {
75 return StringLiteral(
"window");
79 inline static ArrayRef<StringRef> getAllIteratorTypeNames() {
80 static StringRef names[3] = {getParallelIteratorTypeName(),
81 getReductionIteratorTypeName(),
82 getWindowIteratorTypeName()};
83 return llvm::makeArrayRef(names);
88 auto names = getAllIteratorTypeNames();
90 assert(llvm::is_contained(names, name));
91 return llvm::count_if(iteratorTypes, [name](
Attribute a) {
98 for (
auto n : getAllIteratorTypeNames())
105 #endif // MLIR_UTILS_STRUCTUREDOPSUTILS_H Definition: InferTypeOpInterface.cpp:20
U cast() const
Definition: Attributes.h:1353
Definition: Attributes.h:198
unsigned getNumIterators(StringRef name, ArrayAttr iteratorTypes)
Returns the iterator of a certain type.
Definition: StructuredOpsUtils.h:87
Definition: Attributes.h:53
Definition: Attributes.h:428