xref: /llvm-project/mlir/include/mlir/Dialect/Vector/Transforms/Passes.td (revision debdbeda15802900615d1bee83e4fc519abeaba6)
1//===-- Passes.td - Vector 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_VECTOR_TRANSFORMS_PASSES
10#define MLIR_DIALECT_VECTOR_TRANSFORMS_PASSES
11
12include "mlir/Pass/PassBase.td"
13
14def LowerVectorMaskPass : Pass<"lower-vector-mask", "func::FuncOp"> {
15  let summary = "Lower 'vector.mask' operations";
16  let constructor = "mlir::vector::createLowerVectorMaskPass()";
17}
18
19def LowerVectorMultiReduction : Pass<"lower-vector-multi-reduction", "func::FuncOp"> {
20  let summary = "Lower 'vector.multi_reduction' operations";
21  let constructor = "mlir::vector::createLowerVectorMultiReductionPass()";
22  let options = [
23    Option<"loweringStrategy", "lowering-strategy", "mlir::vector::VectorMultiReductionLowering",
24           /*default=*/"mlir::vector::VectorMultiReductionLowering::InnerParallel",
25           "Select the strategy to control how multi_reduction is lowered.",
26           [{::llvm::cl::values(
27            clEnumValN(mlir::vector::VectorMultiReductionLowering::InnerParallel,
28                       "inner-parallel",
29                       "Lower multi_reduction into outer-reduction and inner-parallel ops."),
30            clEnumValN(mlir::vector::VectorMultiReductionLowering::InnerReduction,
31                       "inner-reduction",
32                       "Lower multi_reduction into outer-parallel and inner-reduction ops.")
33        )}]>
34  ];
35}
36
37#endif // MLIR_DIALECT_VECTOR_TRANSFORMS_PASSES
38