[Mlir-commits] [mlir] [MLIR][gpu-to-llvm] Support multiple async dependencies when calling `gpu.launch_func` (PR #165475)
llvmlistbot at llvm.org
llvmlistbot at llvm.org
Tue Oct 28 13:51:18 PDT 2025
github-actions[bot] wrote:
<!--LLVM CODE FORMAT COMMENT: {clang-format}-->
:warning: C/C++ code formatter, clang-format found issues in your code. :warning:
<details>
<summary>
You can test this locally with the following command:
</summary>
``````````bash
git-clang-format --diff origin/main HEAD --extensions cpp,h -- mlir/include/mlir/Conversion/GPUCommon/GPUCommonPass.h mlir/lib/Conversion/GPUCommon/GPUToLLVMConversion.cpp --diff_from_common_commit
``````````
:warning:
The reproduction instructions above might return results for more than one PR
in a stack if you are using a stacked PR workflow. You can limit the results by
changing `origin/main` to the base branch/commit you want to compare against.
:warning:
</details>
<details>
<summary>
View the diff from clang-format here.
</summary>
``````````diff
diff --git a/mlir/lib/Conversion/GPUCommon/GPUToLLVMConversion.cpp b/mlir/lib/Conversion/GPUCommon/GPUToLLVMConversion.cpp
index 8cc0b7622..4ea470b0a 100644
--- a/mlir/lib/Conversion/GPUCommon/GPUToLLVMConversion.cpp
+++ b/mlir/lib/Conversion/GPUCommon/GPUToLLVMConversion.cpp
@@ -487,8 +487,8 @@ template <typename Op>
struct ConvertMultipleAsyncDepsToGpuWaitPattern final : OpRewritePattern<Op> {
using OpRewritePattern<Op>::OpRewritePattern;
- LogicalResult
- matchAndRewrite(Op op, PatternRewriter &rewriter) const override;
+ LogicalResult matchAndRewrite(Op op,
+ PatternRewriter &rewriter) const override;
};
/// Generic rewriting rule for operation on sparse matrices.
@@ -556,12 +556,13 @@ void GpuToLLVMConversionPass::runOnOperation() {
return signalPassFailure();
}
- LLVM_DEBUG(llvm::dbgs() << "--- IR After Adding Additional gpu.waits: ---\n");
+ LLVM_DEBUG(llvm::dbgs()
+ << "--- IR After Adding Additional gpu.waits: ---\n");
LLVM_DEBUG(getOperation()->print(llvm::dbgs()));
- LLVM_DEBUG(llvm::dbgs() << "---------------------------------------------\n");
+ LLVM_DEBUG(llvm::dbgs()
+ << "---------------------------------------------\n");
}
-
LowerToLLVMOptions options(context);
options.useBarePtrCallConv = hostBarePtrCallConv;
RewritePatternSet patterns(context);
@@ -1810,16 +1811,18 @@ LogicalResult ConvertCreateBsrOpToGpuRuntimeCallPattern::matchAndRewrite(
return success();
}
-template<class Op>
+template <class Op>
LogicalResult ConvertMultipleAsyncDepsToGpuWaitPattern<Op>::matchAndRewrite(
- Op op, PatternRewriter &rewriter) const {
+ Op op, PatternRewriter &rewriter) const {
if (op.getAsyncDependencies().size() <= 1)
return rewriter.notifyMatchFailure(
op, "Can only convert ops with multiple async dependencies.");
// Create a new gpu.wait with the original async deps.
Type tokenType = rewriter.getType<gpu::AsyncTokenType>();
- Value waitToken = gpu::WaitOp::create(rewriter, op.getLoc(), tokenType, op.getAsyncDependencies()).getAsyncToken();
+ Value waitToken = gpu::WaitOp::create(rewriter, op.getLoc(), tokenType,
+ op.getAsyncDependencies())
+ .getAsyncToken();
// TODO is it safe to just do getAsyncDependenciesMutable on the original op?
Operation *newOp = rewriter.clone(*op.getOperation());
@@ -1876,7 +1879,7 @@ void mlir::populateGpuToLLVMConversionPatterns(
void mlir::populateGpuMultipleAsyncDepsConversionPatterns(
RewritePatternSet &patterns) {
- // TODO: Other ops to consider handling:
+ // TODO: Other ops to consider handling:
// - gpu::AllocOp,
// - gpu::DeallocOp,
// - gpu::MemcpyOp,
@@ -1903,9 +1906,8 @@ void mlir::populateGpuMultipleAsyncDepsConversionPatterns(
// - gpu::CreateCscOp,
// - gpu::CreateBsrOp,
// - gpu::LaunchFuncOp
- patterns.add<
- ConvertMultipleAsyncDepsToGpuWaitPattern<gpu::LaunchFuncOp>
- >(patterns.getContext());
+ patterns.add<ConvertMultipleAsyncDepsToGpuWaitPattern<gpu::LaunchFuncOp>>(
+ patterns.getContext());
}
//===----------------------------------------------------------------------===//
``````````
</details>
https://github.com/llvm/llvm-project/pull/165475
More information about the Mlir-commits
mailing list