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