9 #ifndef MLIR_DIALECT_VECTOR_TRANSFORMS_VECTORDISTRIBUTION_H_
10 #define MLIR_DIALECT_VECTOR_TRANSFORMS_VECTORDISTRIBUTION_H_
15 class RewritePatternSet;
62 void populateDistributeTransferWriteOpPatterns(
68 void moveScalarUniformCode(WarpExecuteOnLane0Op op);
72 using WarpShuffleFromIdxFn =
78 void populatePropagateWarpVectorDistributionPatterns(
80 const WarpShuffleFromIdxFn &warpShuffleFromIdxFn,
85 using DistributedReductionFn =
90 void populateDistributeReduction(
92 const DistributedReductionFn &distributedReductionFn,
static llvm::ManagedStatic< PassManagerOptions > options
A multi-dimensional affine map Affine map's are immutable like Type's, and they are uniqued.
This class defines the main interface for locations in MLIR and acts as a non-nullable wrapper around...
This class helps build Operations.
This class represents the benefit of a pattern match in a unitless scheme that ranges from 0 (very li...
Instances of the Type class are uniqued, have an immutable identifier and an optional mutable compone...
This class represents an instance of an SSA value in the MLIR system, representing a computable value...
void populateWarpExecuteOnLane0OpToScfForPattern(RewritePatternSet &patterns, const WarpExecuteOnLane0LoweringOptions &options, PatternBenefit benefit=1)
std::function< AffineMap(Value)> DistributionMapFn
This header declares functions that assit transformations in the MemRef dialect.
WarpAllocationFn warpAllocationFn
std::function< Value(Location, OpBuilder &, WarpExecuteOnLane0Op, Type)> WarpAllocationFn
Lamdba function to let users allocate memory needed for the lowering of WarpExecuteOnLane0Op.
std::function< void(Location, OpBuilder &, WarpExecuteOnLane0Op)> WarpSyncronizationFn
Lamdba function to let user emit operation to syncronize all the thread within a warp.
WarpSyncronizationFn warpSyncronizationFn