• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1//===-- Passes.td - SCF 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_SCF_PASSES
10#define MLIR_DIALECT_SCF_PASSES
11
12include "mlir/Pass/PassBase.td"
13
14def SCFBufferize : FunctionPass<"scf-bufferize"> {
15  let summary = "Bufferize the scf dialect.";
16  let constructor = "mlir::createSCFBufferizePass()";
17}
18
19def SCFForLoopSpecialization
20    : FunctionPass<"for-loop-specialization"> {
21  let summary = "Specialize `for` loops for vectorization";
22  let constructor = "mlir::createForLoopSpecializationPass()";
23}
24
25def SCFParallelLoopFusion : Pass<"parallel-loop-fusion"> {
26  let summary = "Fuse adjacent parallel loops";
27  let constructor = "mlir::createParallelLoopFusionPass()";
28}
29
30def SCFParallelLoopSpecialization
31    : FunctionPass<"parallel-loop-specialization"> {
32  let summary = "Specialize parallel loops for vectorization";
33  let constructor = "mlir::createParallelLoopSpecializationPass()";
34}
35
36def SCFParallelLoopTiling : FunctionPass<"parallel-loop-tiling"> {
37  let summary = "Tile parallel loops";
38  let constructor = "mlir::createParallelLoopTilingPass()";
39  let options = [
40    ListOption<"tileSizes", "parallel-loop-tile-sizes", "int64_t",
41               "Factors to tile parallel loops by",
42               "llvm::cl::ZeroOrMore, llvm::cl::MiscFlags::CommaSeparated">
43  ];
44  let dependentDialects = ["AffineDialect"];
45}
46
47#endif // MLIR_DIALECT_SCF_PASSES
48