9 #ifndef MLIR_DIALECT_VECTOR_TRANSFORMS_VECTORDISTRIBUTION_H_
10 #define MLIR_DIALECT_VECTOR_TRANSFORMS_VECTORDISTRIBUTION_H_
15 class RewritePatternSet;
68 void populateDistributeTransferWriteOpPatterns(
74 void moveScalarUniformCode(WarpExecuteOnLane0Op op);
78 using WarpShuffleFromIdxFn =
93 void populatePropagateWarpVectorDistributionPatterns(
95 const WarpShuffleFromIdxFn &warpShuffleFromIdxFn,
100 using DistributedReductionFn =
105 void populateDistributeReduction(
107 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
Include the generated interface declarations.
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