31void transform::ApplyVectorToLLVMConversionPatternsOp::populatePatterns(
35 getReassociateFpReductions(), getForce_32bitVectorIndices(),
36 getUseVectorAlignment());
40transform::ApplyVectorToLLVMConversionPatternsOp::verifyTypeConverter(
41 transform::TypeConverterBuilderOpInterface builder) {
42 if (builder.getTypeConverterType() !=
"LLVMTypeConverter")
51void transform::ApplyCastAwayVectorLeadingOneDimPatternsOp::populatePatterns(
53 vector::populateCastAwayVectorLeadingOneDimPatterns(patterns);
56void transform::ApplyFoldArithExtensionPatternsOp::populatePatterns(
61void transform::ApplyFoldElementwiseToVectorPatternsOp::populatePatterns(
66void transform::ApplyVectorReductionToContractPatternsOp::populatePatterns(
71void transform::ApplyLowerCreateMaskPatternsOp::populatePatterns(
76void transform::ApplyRankReducingSubviewPatternsOp::populatePatterns(
78 vector::populateVectorTransferDropUnitDimsPatterns(patterns);
81void transform::ApplyTransferPermutationPatternsOp::populatePatterns(
86void transform::ApplyDropUnitDimWithShapeCastPatternsOp::populatePatterns(
88 vector::populateDropUnitDimWithShapeCastPatterns(patterns);
91void transform::ApplyDropInnerMostUnitDimsFromXferOpsPatternsOp::
96void transform::ApplyLowerBitCastPatternsOp::populatePatterns(
101void transform::ApplyLowerBroadcastPatternsOp::populatePatterns(
106void transform::ApplyLowerContractionPatternsOp::populatePatterns(
113void transform::ApplyLowerMasksPatternsOp::populatePatterns(
118void transform::ApplyLowerMaskedTransfersPatternsOp::populatePatterns(
123void transform::ApplyMaterializeMasksPatternsOp::populatePatterns(
125 populateVectorMaskMaterializationPatterns(patterns,
132void transform::ApplyReorderMultiReductionPatternsOp::populatePatterns(
140void transform::ApplyMultiReductionFlatteningPatternsOp::populatePatterns(
148void transform::ApplyMultiReductionUnrollingPatternsOp::populatePatterns(
156void transform::ApplyLowerOuterProductPatternsOp::populatePatterns(
161void transform::ApplyLowerGatherPatternsOp::populatePatterns(
166void transform::ApplyUnrollFromElementsPatternsOp::populatePatterns(
168 vector::populateVectorFromElementsUnrollPatterns(patterns);
171void transform::ApplyUnrollToElementsPatternsOp::populatePatterns(
173 vector::populateVectorToElementsUnrollPatterns(patterns);
176void transform::ApplyLowerScanPatternsOp::populatePatterns(
181void transform::ApplyLowerShapeCastPatternsOp::populatePatterns(
186void transform::ApplyLowerTransferPatternsOp::populatePatterns(
189 getMaxTransferRank());
192void transform::ApplyLowerTransposePatternsOp::populatePatterns(
195 getLoweringStrategy());
196 if (getAvx2LoweringStrategy()) {
201 patterns, avx2LoweringOptions, 10);
205void transform::ApplyLowerInterleavePatternsOp::populatePatterns(
210void transform::ApplyInterleaveToShufflePatternsOp::populatePatterns(
215void transform::ApplyRewriteNarrowTypePatternsOp::populatePatterns(
217 populateVectorNarrowTypeRewritePatterns(patterns);
218 populateVectorTransposeNarrowTypeRewritePatterns(patterns);
221void transform::ApplySplitTransferFullPartialPatternsOp::populatePatterns(
228void transform::ApplyTransferToScfPatternsOp::populatePatterns(
237void transform::ApplySinkVectorPatternsOp::populatePatterns(
242void transform::ApplySinkVectorMemPatternsOp::populatePatterns(
244 vector::populateSinkVectorMemOpsPatterns(patterns);
247void transform::ApplyFlattenVectorTransferOpsPatternsOp::populatePatterns(
249 vector::populateFlattenVectorTransferPatterns(patterns,
250 getTargetVectorBitwidth());
260class VectorTransformDialectExtension
262 VectorTransformDialectExtension> {
266 VectorTransformDialectExtension() {
267 declareGeneratedDialect<vector::VectorDialect>();
268 declareGeneratedDialect<LLVM::LLVMDialect>();
269 registerTransformOps<
271#include "mlir/Dialect/Vector/TransformOps/VectorTransformOps.cpp.inc"
277#define GET_OP_CLASSES
278#include "mlir/Dialect/Vector/TransformOps/VectorTransformOps.cpp.inc"
p<< " : "<< getMemRefType()<< ", "<< getType();}static LogicalResult verifyVectorMemoryOp(Operation *op, MemRefType memrefType, VectorType vectorType) { if(memrefType.getElementType() !=vectorType.getElementType()) return op-> emitOpError("requires memref and vector types of the same elemental type")
Given a list of lists of parsed operands, populates uniqueOperands with unique operands.
#define MLIR_DEFINE_EXPLICIT_INTERNAL_INLINE_TYPE_ID(CLASS_NAME)
The DialectRegistry maps a dialect namespace to a constructor for the matching dialect.
void addExtensions()
Add the given extensions to the registry.
Conversion from types to the LLVM IR dialect.
Base class for extensions of the Transform dialect that supports injecting operations into the Transf...
void populateVectorTransferPermutationMapLoweringPatterns(RewritePatternSet &patterns, PatternBenefit benefit=1)
Collect a set of transfer read/write lowering patterns that simplify the permutation map (e....
void populateElementwiseToVectorOpsPatterns(RewritePatternSet &patterns)
Collect a set of patterns that fold elementwise op on vectors to the vector dialect.
void populateVectorInterleaveToShufflePatterns(RewritePatternSet &patterns, PatternBenefit benefit=1)
void populateVectorShapeCastLoweringPatterns(RewritePatternSet &patterns, PatternBenefit benefit=1)
Populate the pattern set with the following patterns:
void populateVectorGatherLoweringPatterns(RewritePatternSet &patterns, PatternBenefit benefit=1)
Populate the pattern set with the following patterns:
void populateVectorTransferLoweringPatterns(RewritePatternSet &patterns, std::optional< unsigned > maxTransferRank=std::nullopt, PatternBenefit benefit=1)
Populate the pattern set with the following patterns:
void populateDropInnerMostUnitDimsXferOpPatterns(RewritePatternSet &patterns, PatternBenefit benefit=1)
Collect a set of patterns to collapse the most inner unit dims in xfer Ops.
void registerTransformDialectExtension(DialectRegistry ®istry)
void populateVectorTransposeLoweringPatterns(RewritePatternSet &patterns, VectorTransposeLowering vectorTransposeLowering, PatternBenefit benefit=1)
Populate the pattern set with the following patterns:
void populateFoldArithExtensionPatterns(RewritePatternSet &patterns)
Collect a set of patterns that fold arithmetic extension on floating point into vector contract for t...
void populateSinkVectorOpsPatterns(RewritePatternSet &patterns, PatternBenefit benefit=1)
Patterns that remove redundant Vector Ops by re-ordering them with e.g.
void populateVectorMultiReductionUnrollingPatterns(RewritePatternSet &patterns, VectorMultiReductionLowering options, PatternBenefit benefit=1)
Populate the pattern set with the following patterns:
void populateVectorBroadcastLoweringPatterns(RewritePatternSet &patterns, PatternBenefit benefit=1)
Populate the pattern set with the following patterns:
void populateVectorBitCastLoweringPatterns(RewritePatternSet &patterns, int64_t targetRank=1, PatternBenefit benefit=1)
Populates the pattern set with the following patterns:
void populateVectorMultiReductionFlatteningPatterns(RewritePatternSet &patterns, VectorMultiReductionLowering options, PatternBenefit benefit=1)
Populate the pattern set with the following patterns:
void populateVectorOuterProductLoweringPatterns(RewritePatternSet &patterns, PatternBenefit benefit=1)
Populate the pattern set with the following patterns:
void populateVectorMaskOpLoweringPatterns(RewritePatternSet &patterns, PatternBenefit benefit=1)
Populate the pattern set with the following patterns:
void populateVectorReductionToContractPatterns(RewritePatternSet &patterns, PatternBenefit benefit=1)
Collect patterns to convert reduction op to vector.contract and fold transpose/broadcast ops into the...
void populateVectorTransferFullPartialPatterns(RewritePatternSet &patterns, const VectorTransformsOptions &options)
Populate patterns with the following patterns.
void populateVectorMaskLoweringPatternsForSideEffectingOps(RewritePatternSet &patterns)
Populates instances of MaskOpRewritePattern to lower masked operations with vector....
void populateVectorInterleaveLoweringPatterns(RewritePatternSet &patterns, int64_t targetRank=1, PatternBenefit benefit=1)
Populate the pattern set with the following patterns:
void populateVectorContractLoweringPatterns(RewritePatternSet &patterns, VectorContractLowering vectorContractLoweringOption, PatternBenefit benefit=1, bool disableOuterProductLowering=false)
Populate the pattern set with the following patterns:
void populateVectorMultiReductionReorderPatterns(RewritePatternSet &patterns, VectorMultiReductionLowering options, PatternBenefit benefit=1)
Populate the pattern set with the following patterns:
void populateVectorScanLoweringPatterns(RewritePatternSet &patterns, PatternBenefit benefit=1)
Populate the pattern set with the following patterns:
void populateSpecializedTransposeLoweringPatterns(RewritePatternSet &patterns, LoweringOptions options=LoweringOptions(), int benefit=10)
Insert specialized transpose lowering patterns.
Include the generated interface declarations.
void populateVectorToSCFConversionPatterns(RewritePatternSet &patterns, const VectorTransferToSCFOptions &options=VectorTransferToSCFOptions())
Collect a set of patterns to convert from the Vector dialect to SCF + func.
void populateVectorToLLVMConversionPatterns(const LLVMTypeConverter &converter, RewritePatternSet &patterns, bool reassociateFPReductions=false, bool force32BitVectorIndices=false, bool useVectorAlignment=false)
Collect a set of patterns to convert from the Vector dialect to LLVM.
When lowering an N-d vector transfer op to an (N-1)-d vector transfer op, a temporary buffer is creat...
VectorTransferToSCFOptions & setTargetRank(unsigned r)
VectorTransferToSCFOptions & enableFullUnroll(bool u=true)
Options for controlling specialized AVX2 lowerings.
LoweringOptions & setTransposeOptions(TransposeLoweringOptions options)
Structure to control the behavior of specialized AVX2 transpose lowering.