9 #ifndef MLIR_DIALECT_VECTOR_TRANSFORMS_VECTORDISTRIBUTION_H_
10 #define MLIR_DIALECT_VECTOR_TRANSFORMS_VECTORDISTRIBUTION_H_
16 class RewritePatternSet;
71 void populateDistributeTransferWriteOpPatterns(
77 void moveScalarUniformCode(gpu::WarpExecuteOnLane0Op op);
81 using WarpShuffleFromIdxFn =
96 void populatePropagateWarpVectorDistributionPatterns(
98 const WarpShuffleFromIdxFn &warpShuffleFromIdxFn,
103 using DistributedReductionFn =
108 void populateDistributeReduction(
110 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.
const FrozenRewritePatternSet & patterns
WarpAllocationFn warpAllocationFn
std::function< void(Location, OpBuilder &, gpu::WarpExecuteOnLane0Op)> WarpSyncronizationFn
Lamdba function to let user emit operation to syncronize all the thread within a warp.
std::function< Value(Location, OpBuilder &, gpu::WarpExecuteOnLane0Op, Type)> WarpAllocationFn
Lamdba function to let users allocate memory needed for the lowering of WarpExecuteOnLane0Op.
WarpSyncronizationFn warpSyncronizationFn