12 #include "llvm/ADT/TypeSwitch.h"
21 #include "mlir/Dialect/MLProgram/IR/MLProgramOpsDialect.cpp.inc"
22 #define GET_ATTRDEF_CLASSES
23 #include "mlir/Dialect/MLProgram/IR/MLProgramAttributes.cpp.inc"
24 #define GET_TYPEDEF_CLASSES
25 #include "mlir/Dialect/MLProgram/IR/MLProgramTypes.cpp.inc"
44 if (llvm::isa<ExternAttr>(attr)) {
46 return AliasResult::OverridableAlias;
53 void ml_program::MLProgramDialect::initialize() {
54 #define GET_ATTRDEF_LIST
56 #include "mlir/Dialect/MLProgram/IR/MLProgramAttributes.cpp.inc"
59 #define GET_TYPEDEF_LIST
61 #include "mlir/Dialect/MLProgram/IR/MLProgramTypes.cpp.inc"
66 #include "mlir/Dialect/MLProgram/IR/MLProgramOps.cpp.inc"
69 addInterfaces<MLProgramInlinerInterface, MLProgramOpAsmDialectInterface>();
static bool isLegalToInline(InlinerInterface &interface, Region *src, Region *insertRegion, bool shouldCloneInlinedRegion, IRMapping &valueMapping)
Utility to check that all of the operations within 'src' can be inlined.
The possible results of an alias query.
@ NoAlias
The two locations do not alias at all.
Attributes are known-constant values of operations.
This is the interface that must be implemented by the dialects of operations to be inlined.
DialectInlinerInterface(Dialect *dialect)
This is a utility class for mapping one set of IR entities to another.
OpAsmDialectInterface(Dialect *dialect)
Operation is the basic unit of execution within MLIR.
This class contains a list of basic blocks and a link to the parent operation it is attached to.
Include the generated interface declarations.