[Mlir-commits] [mlir] [mlir][amdgpu] Add Inliner interface (PR #162873)

Ivan Butygin llvmlistbot at llvm.org
Fri Oct 10 11:10:13 PDT 2025


https://github.com/Hardcode84 updated https://github.com/llvm/llvm-project/pull/162873

>From 3ba467e5a30a611af64e8f98cb48000aaa124733 Mon Sep 17 00:00:00 2001
From: Ivan Butygin <ivan.butygin at gmail.com>
Date: Fri, 10 Oct 2025 17:39:07 +0200
Subject: [PATCH 1/2] [mlir][amdgpu] Add Inliner intreface

---
 mlir/lib/Dialect/AMDGPU/IR/AMDGPUDialect.cpp | 11 +++++++++++
 mlir/test/Dialect/AMDGPU/inlining.mlir       | 14 ++++++++++++++
 2 files changed, 25 insertions(+)
 create mode 100644 mlir/test/Dialect/AMDGPU/inlining.mlir

diff --git a/mlir/lib/Dialect/AMDGPU/IR/AMDGPUDialect.cpp b/mlir/lib/Dialect/AMDGPU/IR/AMDGPUDialect.cpp
index d5c71905f7b4a..9649f6138e1a1 100644
--- a/mlir/lib/Dialect/AMDGPU/IR/AMDGPUDialect.cpp
+++ b/mlir/lib/Dialect/AMDGPU/IR/AMDGPUDialect.cpp
@@ -26,6 +26,7 @@
 #include "mlir/IR/OpImplementation.h"
 #include "mlir/IR/PatternMatch.h"
 #include "mlir/IR/TypeUtilities.h"
+#include "mlir/Transforms/InliningUtils.h"
 #include "llvm/ADT/DenseMap.h"
 #include "llvm/ADT/SmallVector.h"
 #include "llvm/ADT/TypeSwitch.h"
@@ -40,6 +41,15 @@ using namespace mlir::amdgpu;
 
 #include "mlir/Dialect/AMDGPU/IR/AMDGPUDialect.cpp.inc"
 
+namespace {
+struct AMDGPUInlinerInterface : public DialectInlinerInterface {
+  using DialectInlinerInterface::DialectInlinerInterface;
+  bool isLegalToInline(Operation *, Region *, bool, IRMapping &) const final {
+    return true;
+  }
+};
+} // namespace
+
 void AMDGPUDialect::initialize() {
   addOperations<
 #define GET_OP_LIST
@@ -49,6 +59,7 @@ void AMDGPUDialect::initialize() {
 #define GET_ATTRDEF_LIST
 #include "mlir/Dialect/AMDGPU/IR/AMDGPUAttributes.cpp.inc"
       >();
+  addInterfaces<AMDGPUInlinerInterface>();
 }
 
 //===----------------------------------------------------------------------===//
diff --git a/mlir/test/Dialect/AMDGPU/inlining.mlir b/mlir/test/Dialect/AMDGPU/inlining.mlir
new file mode 100644
index 0000000000000..33fb635d0156b
--- /dev/null
+++ b/mlir/test/Dialect/AMDGPU/inlining.mlir
@@ -0,0 +1,14 @@
+// RUN: mlir-opt %s --inline | FileCheck %s
+
+func.func @calee(%arg0 : f32) -> f32 {
+  %0 = amdgpu.permlane_swap %arg0 32 : f32
+  func.return %0 : f32
+}
+
+// CHECK-LABEL: func @caller
+func.func @caller(%arg0 : f32) -> f32 {
+  // CHECK-NOT: call
+  //     CHECK: amdgpu.permlane_swap
+  %0 = call @calee(%arg0) : (f32) -> f32
+  func.return %0 : f32
+}

>From 79085525df58a448add4bdd4a94d2ff805835265 Mon Sep 17 00:00:00 2001
From: Ivan Butygin <ivan.butygin at gmail.com>
Date: Fri, 10 Oct 2025 20:04:53 +0200
Subject: [PATCH 2/2] final

Signed-off-by: Ivan Butygin <ivan.butygin at gmail.com>
---
 mlir/lib/Dialect/AMDGPU/IR/AMDGPUDialect.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/mlir/lib/Dialect/AMDGPU/IR/AMDGPUDialect.cpp b/mlir/lib/Dialect/AMDGPU/IR/AMDGPUDialect.cpp
index 9649f6138e1a1..f405d0cc7aa02 100644
--- a/mlir/lib/Dialect/AMDGPU/IR/AMDGPUDialect.cpp
+++ b/mlir/lib/Dialect/AMDGPU/IR/AMDGPUDialect.cpp
@@ -42,7 +42,7 @@ using namespace mlir::amdgpu;
 #include "mlir/Dialect/AMDGPU/IR/AMDGPUDialect.cpp.inc"
 
 namespace {
-struct AMDGPUInlinerInterface : public DialectInlinerInterface {
+struct AMDGPUInlinerInterface final : DialectInlinerInterface {
   using DialectInlinerInterface::DialectInlinerInterface;
   bool isLegalToInline(Operation *, Region *, bool, IRMapping &) const final {
     return true;



More information about the Mlir-commits mailing list