13 #ifndef MLIR_IR_DIALECT_H 14 #define MLIR_IR_DIALECT_H 19 class DialectAsmParser;
20 class DialectAsmPrinter;
21 class DialectInterface;
26 std::function<bool(const OpaqueElementsAttr, ElementsAttr &)>;
30 std::function<Attribute(const OpaqueElementsAttr, ArrayRef<uint64_t>)>;
117 llvm_unreachable(
"dialect has no registered attribute printing hook");
125 llvm_unreachable(
"dialect has no registered type printing hook");
137 unsigned regionIndex,
146 unsigned regionIndex,
147 unsigned resultIndex,
163 auto it = registeredInterfaces.find(interfaceID);
164 return it != registeredInterfaces.end() ? it->getSecond().get() :
nullptr;
167 return static_cast<const InterfaceT *
>(
194 dialect.
addOperation(AbstractOperation::get<First>(dialect));
202 dialect.
addOperation(AbstractOperation::get<First>(dialect));
231 dialect.addSymbol(First::getClassID());
242 void addInterface(std::unique_ptr<DialectInterface> interface);
255 void addSymbol(
const ClassID *
const classID);
258 void operator=(
Dialect &) =
delete;
273 bool unknownOpsAllowed =
false;
278 bool unknownTypesAllowed =
false;
298 new ConcreteDialect(ctx);
Definition: InferTypeOpInterface.cpp:20
Definition: Attributes.h:1052
void addInterfaces()
Definition: Dialect.h:249
Definition: STLExtras.h:95
Definition: Operation.h:27
void allowUnknownOperations(bool allow=true)
Enable support for unregistered operations.
Definition: Dialect.h:236
virtual Attribute parseAttribute(DialectAsmParser &parser, Type type) const
Parse an attribute registered to this dialect.
Definition: Dialect.cpp:96
std::function< void(MLIRContext *)> DialectAllocatorFunction
Definition: Dialect.h:284
Definition: Attributes.h:139
static void addToSet(Dialect &dialect)
Definition: Dialect.h:223
std::function< LogicalResult(Operation *, ArrayRef< Attribute >, SmallVectorImpl< Attribute > &)> DialectConstantFoldHook
Definition: Dialect.h:28
std::function< Attribute(const OpaqueElementsAttr, ArrayRef< uint64_t >)> DialectExtractElementHook
Definition: Dialect.h:30
Dialect(StringRef name, MLIRContext *context)
Definition: Dialect.cpp:69
DialectConstantFoldHook constantFoldHook
Definition: Dialect.h:72
void addInterfaces()
Register a set of dialect interfaces with this dialect instance.
Definition: Dialect.h:245
virtual ~Dialect()
Definition: Dialect.cpp:75
void addOperations()
Definition: Dialect.h:183
Definition: Location.h:52
std::pair< Identifier, Attribute > NamedAttribute
Definition: Attributes.h:264
static void addToSet(Dialect &dialect)
Definition: Dialect.h:230
LogicalResult success(bool isSuccess=true)
Definition: LogicalResult.h:25
Definition: LogicalResult.h:18
LogicalResult failure(bool isFailure=true)
Definition: LogicalResult.h:32
const InterfaceT * getRegisteredInterface()
Definition: Dialect.h:166
static void addToSet(Dialect &dialect)
Definition: Dialect.h:193
Definition: Attributes.h:53
DialectRegistration()
Definition: Dialect.h:310
Definition: OperationSupport.h:83
bool allowsUnknownTypes() const
Definition: Dialect.h:59
MLIRContext * getContext() const
Definition: Dialect.h:47
std::function< bool(const OpaqueElementsAttr, ElementsAttr &)> DialectConstantDecodeHook
Definition: Dialect.h:26
virtual LogicalResult verifyOperationAttribute(Operation *, NamedAttribute)
Definition: Dialect.h:152
DialectConstantDecodeHook decodeHook
Definition: Dialect.h:81
static void addToSet(Dialect &dialect)
Definition: Dialect.h:201
void addOperation(AbstractOperation opInfo)
Definition: MLIRContext.cpp:379
void addAttributes()
This method is used by derived classes to add their attributes to the set.
Definition: Dialect.h:214
StringRef getNamespace() const
Definition: Dialect.h:49
void addInterface(std::unique_ptr< DialectInterface > interface)
Register a dialect interface with this dialect instance.
Definition: Dialect.cpp:126
void allowUnknownTypes(bool allow=true)
Enable support for unregistered types.
Definition: Dialect.h:239
Definition: DialectImplementation.h:33
Definition: Dialect.h:222
void addTypes()
This method is used by derived classes to add their types to the set.
Definition: Dialect.h:209
Definition: MLIRContext.h:34
const DialectInterface * getRegisteredInterface(ClassID *interfaceID)
Definition: Dialect.h:162
void registerDialect()
Definition: Dialect.h:295
bool allowsUnknownOperations() const
Definition: Dialect.h:54
virtual void printType(Type, DialectAsmPrinter &) const
Print a type registered to this dialect.
Definition: Dialect.h:124
Definition: Dialect.h:309
virtual LogicalResult verifyRegionArgAttribute(Operation *, unsigned regionIndex, unsigned argIndex, NamedAttribute)
Definition: Dialect.cpp:81
virtual void printAttribute(Attribute, DialectAsmPrinter &) const
Definition: Dialect.h:116
DialectExtractElementHook extractElementHook
Definition: Dialect.h:88
virtual Operation * materializeConstant(OpBuilder &builder, Attribute value, Type type, Location loc)
Definition: Dialect.h:100
void registerDialectAllocator(const DialectAllocatorFunction &function)
Definition: Dialect.cpp:39
Definition: Attributes.h:559
Definition: Builders.h:158
Definition: Dialect.h:191
Definition: DialectImplementation.h:100
virtual Type parseType(DialectAsmParser &parser) const
Parse a type registered to this dialect.
Definition: Dialect.cpp:104
This class represents an interface overridden for a single dialect.
Definition: DialectInterface.h:40
void registerAllDialects(MLIRContext *context)
Registers all dialects with the specified MLIRContext.
Definition: Dialect.cpp:57
virtual LogicalResult verifyRegionResultAttribute(Operation *, unsigned regionIndex, unsigned resultIndex, NamedAttribute)
Definition: Dialect.cpp:90
static bool isValidNamespace(StringRef str)
Definition: Dialect.cpp:118