[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