[Mlir-commits] [mlir] 16f8d17 - [mlir] Add "memref::MemRefDialect" as dependentDialects for GpuToLLVMConversionPass
Xiang Li
llvmlistbot at llvm.org
Fri Jan 20 11:20:14 PST 2023
Author: Xiang Li
Date: 2023-01-20T14:12:38-05:00
New Revision: 16f8d17f7bd87c9da5266ae5136793a81624ecb7
URL: https://github.com/llvm/llvm-project/commit/16f8d17f7bd87c9da5266ae5136793a81624ecb7
DIFF: https://github.com/llvm/llvm-project/commit/16f8d17f7bd87c9da5266ae5136793a81624ecb7.diff
LOG: [mlir] Add "memref::MemRefDialect" as dependentDialects for GpuToLLVMConversionPass
For https://github.com/llvm/llvm-project/issues/60070.
The issue is caused by memref.store is not registed.
Registe it by add "memref::MemRefDialect" as dependetDialects for GpuToLLVMConsersionPass.
Differential Revision: https://reviews.llvm.org/D141987
Added:
mlir/test/Conversion/GPUCommon/transfer_write.mlir
Modified:
mlir/include/mlir/Conversion/Passes.td
mlir/lib/Conversion/GPUCommon/GPUToLLVMConversion.cpp
Removed:
################################################################################
diff --git a/mlir/include/mlir/Conversion/Passes.td b/mlir/include/mlir/Conversion/Passes.td
index 16a64caf1d7f5..d067cbd60b62c 100644
--- a/mlir/include/mlir/Conversion/Passes.td
+++ b/mlir/include/mlir/Conversion/Passes.td
@@ -335,7 +335,10 @@ def ConvertFuncToSPIRV : Pass<"convert-func-to-spirv"> {
def GpuToLLVMConversionPass : Pass<"gpu-to-llvm", "ModuleOp"> {
let summary = "Convert GPU dialect to LLVM dialect with GPU runtime calls";
let constructor = "mlir::createGpuToLLVMConversionPass()";
- let dependentDialects = ["LLVM::LLVMDialect"];
+ let dependentDialects = [
+ "LLVM::LLVMDialect",
+ "memref::MemRefDialect",
+ ];
}
def LowerHostCodeToLLVM : Pass<"lower-host-to-llvm", "ModuleOp"> {
diff --git a/mlir/lib/Conversion/GPUCommon/GPUToLLVMConversion.cpp b/mlir/lib/Conversion/GPUCommon/GPUToLLVMConversion.cpp
index 1efe26339dfad..c4dd47a762cf4 100644
--- a/mlir/lib/Conversion/GPUCommon/GPUToLLVMConversion.cpp
+++ b/mlir/lib/Conversion/GPUCommon/GPUToLLVMConversion.cpp
@@ -28,6 +28,7 @@
#include "mlir/Dialect/GPU/IR/GPUDialect.h"
#include "mlir/Dialect/GPU/Transforms/Passes.h"
#include "mlir/Dialect/LLVMIR/LLVMDialect.h"
+#include "mlir/Dialect/MemRef/IR/MemRef.h"
#include "mlir/IR/Attributes.h"
#include "mlir/IR/Builders.h"
#include "mlir/IR/BuiltinOps.h"
diff --git a/mlir/test/Conversion/GPUCommon/transfer_write.mlir b/mlir/test/Conversion/GPUCommon/transfer_write.mlir
new file mode 100644
index 0000000000000..cba85915b49e4
--- /dev/null
+++ b/mlir/test/Conversion/GPUCommon/transfer_write.mlir
@@ -0,0 +1,13 @@
+// RUN: mlir-opt %s --gpu-to-llvm | FileCheck %s
+
+ func.func @warp_extract(%arg0: index, %arg1: memref<1024x1024xf32>, %arg2: index, %arg3: vector<1xf32>) {
+ %c0 = arith.constant 0 : index
+ vector.warp_execute_on_lane_0(%arg0)[32] {
+ // CHECK:%[[val:[0-9]+]] = llvm.extractelement
+ // CHECK:%[[base:[0-9]+]] = llvm.extractvalue
+ // CHECK:%[[ptr:[0-9]+]] = llvm.getelementptr %[[base]]
+ // CHECK:llvm.store %[[val]], %[[ptr]]
+ vector.transfer_write %arg3, %arg1[%c0, %c0] {in_bounds = [true]} : vector<1xf32>, memref<1024x1024xf32>
+ }
+ return
+ }
More information about the Mlir-commits
mailing list