From 3ba467e5a30a611af64e8f98cb48000aaa124733 Mon Sep 17 00:00:00 2001 From: Ivan Butygin 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(); } //===----------------------------------------------------------------------===// 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 Date: Fri, 10 Oct 2025 20:04:53 +0200 Subject: [PATCH 2/2] final Signed-off-by: Ivan Butygin --- 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;