-
Notifications
You must be signed in to change notification settings - Fork 14.3k
[mlir] Make the ml_program dialect allow all of its operations to be inlined. #85479
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[mlir] Make the ml_program dialect allow all of its operations to be inlined. #85479
Conversation
@llvm/pr-subscribers-mlir @llvm/pr-subscribers-mlir-mlprogram Author: Stella Laurenzo (stellaraccident) ChangesFull diff: https://github.com/llvm/llvm-project/pull/85479.diff 2 Files Affected:
diff --git a/mlir/lib/Dialect/MLProgram/IR/CMakeLists.txt b/mlir/lib/Dialect/MLProgram/IR/CMakeLists.txt
index 90c9c9aa787503..725bb5fd9da9ed 100644
--- a/mlir/lib/Dialect/MLProgram/IR/CMakeLists.txt
+++ b/mlir/lib/Dialect/MLProgram/IR/CMakeLists.txt
@@ -15,5 +15,6 @@ add_mlir_dialect_library(MLIRMLProgramDialect
MLIRControlFlowInterfaces
MLIRFunctionInterfaces
MLIRInferTypeOpInterface
+ MLIRTransforms
MLIRIR
)
diff --git a/mlir/lib/Dialect/MLProgram/IR/MLProgramDialect.cpp b/mlir/lib/Dialect/MLProgram/IR/MLProgramDialect.cpp
index 1a8fe208d4099e..0b186a0d072aa6 100644
--- a/mlir/lib/Dialect/MLProgram/IR/MLProgramDialect.cpp
+++ b/mlir/lib/Dialect/MLProgram/IR/MLProgramDialect.cpp
@@ -8,6 +8,7 @@
#include "mlir/Dialect/MLProgram/IR/MLProgram.h"
#include "mlir/IR/DialectImplementation.h"
+#include "mlir/Transforms/InliningUtils.h"
#include "llvm/ADT/TypeSwitch.h"
using namespace mlir;
@@ -24,6 +25,17 @@ using namespace mlir::ml_program;
#include "mlir/Dialect/MLProgram/IR/MLProgramTypes.cpp.inc"
namespace {
+
+struct MLProgramInlinerInterface : public DialectInlinerInterface {
+ using DialectInlinerInterface::DialectInlinerInterface;
+
+ bool isLegalToInline(Operation *, Region *, bool, IRMapping &) const {
+ // We have no specific opinion on whether ops defined in this dialect should
+ // be inlined.
+ return true;
+ }
+};
+
struct MLProgramOpAsmDialectInterface : public OpAsmDialectInterface {
using OpAsmDialectInterface::OpAsmDialectInterface;
@@ -53,5 +65,5 @@ void ml_program::MLProgramDialect::initialize() {
#include "mlir/Dialect/MLProgram/IR/MLProgramOps.cpp.inc"
>();
- addInterfaces<MLProgramOpAsmDialectInterface>();
+ addInterfaces<MLProgramInlinerInterface, MLProgramOpAsmDialectInterface>();
}
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not super familiar with this but would this be easy to test? I can see some other dialect have those (LLVM, SPIR-V, Vector, Linalg).
Good point. Let me add a test. |
@kuhar ptal |
@@ -8,6 +8,7 @@ | |||
|
|||
#include "mlir/Dialect/MLProgram/IR/MLProgram.h" | |||
#include "mlir/IR/DialectImplementation.h" | |||
#include "mlir/Transforms/InliningUtils.h" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why is the utils needed for the interface?
No description provided.