MLIR 22.0.0git
VectorTransformOps.h
Go to the documentation of this file.
1//===- VectorTransformOps.h - Vector transform ops --------------*- C++ -*-===//
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_TRANSFORMOPS_VECTORTRANSFORMOPS_H
10#define MLIR_DIALECT_VECTOR_TRANSFORMOPS_VECTORTRANSFORMOPS_H
11
16
17namespace mlir {
18namespace vector {
19class VectorOp;
21} // namespace vector
22} // namespace mlir
23
24//===----------------------------------------------------------------------===//
25// Vector Transform Operations
26//===----------------------------------------------------------------------===//
27
28#define GET_OP_CLASSES
29#include "mlir/Dialect/Vector/TransformOps/VectorTransformOps.h.inc"
30
31namespace mlir {
32class DialectRegistry;
33
34namespace vector {
35void registerTransformDialectExtension(DialectRegistry &registry);
36
37/// Helper structure used to hold the different options of LowerVectorsOp.
39 // Have the default values match the LowerVectorsOp values in the td file.
41 setVectorTransformsOptions(VectorContractLowering::OuterProduct);
43 VectorMultiReductionLowering::InnerParallel);
44 setVectorTransposeLowering(VectorTransposeLowering::EltWise);
45 setVectorTransferSplit(VectorTransferSplit::LinalgCopy);
46 }
47
48 /// Duplicate the base API of VectorTransformsOptions but return the
49 /// LowerVectorsOptions type. This allows to really set up the different
50 /// options in any order via chained setXXX calls. @{
51 LowerVectorsOptions &setVectorTransformsOptions(VectorContractLowering opt) {
53 return *this;
54 }
55
57 setVectorMultiReductionLowering(VectorMultiReductionLowering opt) {
59 return *this;
60 }
61 LowerVectorsOptions &setVectorTransposeLowering(VectorTransposeLowering opt) {
63 return *this;
64 }
65 LowerVectorsOptions &setVectorTransferSplit(VectorTransferSplit opt) {
67 return *this;
68 }
69 /// @}
70
74 return *this;
75 }
76
80 return *this;
81 }
82};
83} // namespace vector
84} // namespace mlir
85
86#endif // MLIR_DIALECT_VECTOR_TRANSFORMOPS_VECTORTRANSFORMOPS_H
void registerTransformDialectExtension(DialectRegistry &registry)
Include the generated interface declarations.
Helper structure used to hold the different options of LowerVectorsOp.
LowerVectorsOptions & setVectorTransformsOptions(VectorContractLowering opt)
Duplicate the base API of VectorTransformsOptions but return the LowerVectorsOptions type.
LowerVectorsOptions & setVectorTransferSplit(VectorTransferSplit opt)
LowerVectorsOptions & setUnrollVectorTransfers(bool opt)
LowerVectorsOptions & setVectorTransposeLowering(VectorTransposeLowering opt)
LowerVectorsOptions & setVectorMultiReductionLowering(VectorMultiReductionLowering opt)
LowerVectorsOptions & setTransposeAVX2Lowering(bool opt)
Structure to control the behavior of vector transform patterns.
VectorTransformsOptions & setVectorMultiReductionLowering(VectorMultiReductionLowering opt)
VectorTransformsOptions & setVectorTransposeLowering(VectorTransposeLowering opt)
VectorTransformsOptions & setVectorTransferSplit(VectorTransferSplit opt)
VectorTransformsOptions & setVectorTransformsOptions(VectorContractLowering opt)