1//===-- Passes.td - Async pass definition file -------------*- tablegen -*-===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8
9#ifndef MLIR_DIALECT_ASYNC_PASSES
10#define MLIR_DIALECT_ASYNC_PASSES
11
12include "mlir/Pass/PassBase.td"
13
14def AsyncParallelFor : FunctionPass<"async-parallel-for"> {
15  let summary = "Convert scf.parallel operations to multiple async regions "
16                "executed concurrently for non-overlapping iteration ranges";
17  let constructor = "mlir::createAsyncParallelForPass()";
18  let options = [
19    Option<"numConcurrentAsyncExecute", "num-concurrent-async-execute",
20      "int32_t", /*default=*/"4",
21      "The number of async.execute operations that will be used for concurrent "
22      "loop execution.">
23  ];
24  let dependentDialects = ["async::AsyncDialect", "scf::SCFDialect"];
25}
26
27def AsyncRefCounting : FunctionPass<"async-ref-counting"> {
28  let summary = "Automatic reference counting for Async dialect data types";
29  let constructor = "mlir::createAsyncRefCountingPass()";
30  let dependentDialects = ["async::AsyncDialect"];
31}
32
33def AsyncRefCountingOptimization :
34    FunctionPass<"async-ref-counting-optimization"> {
35  let summary = "Optimize automatic reference counting operations for the"
36                "Async dialect by removing redundant operations";
37  let constructor = "mlir::createAsyncRefCountingOptimizationPass()";
38  let dependentDialects = ["async::AsyncDialect"];
39}
40
41#endif // MLIR_DIALECT_ASYNC_PASSES
42