![]() The abstraction used is that of super-vectors, which provide a single, compact, representation in the vector types, information that is expected to reduce the impact of the phase ordering problem Implements a high-level vectorization strategy on a Function. Macro Definition Documentation ◆ DEBUG_TYPE Verify that affine loops in 'loops' meet the nesting criteria expected by SuperVectorizer: More. VerifyLoopNesting (const std::vector> &loops) Internal implementation to vectorize affine loops in 'loops' using the n-D vectorization factors in 'vectorSizes'. VectorizeLoops ( Operation *parentOp, DenseSet &loops, ArrayRef vectorSizes, ArrayRef fastestVaryingPattern, const ReductionLoopMap &reductionLoops) Traverses all the loop matches and classifies them into intersection buckets. More.ĬomputeIntersectionBuckets ( ArrayRef matches, std::vector> &intersectionBuckets) VectorizeRootMatch ( NestedMatch m, const VectorizationStrategy &strategy)Įxtracts the matched loops and vectorizes them following a topological order. Internal implementation to vectorize affine loops from a single loop nest using an n-D vectorization strategy. VectorizeLoopNest (std::vector> &loops, const VectorizationStrategy &strategy) GetMatchedAffineLoops ( NestedMatch match, std::vector> &loops)Ĭonverts all the nested loops in 'match' to a 2D vector container that preserves the relative nesting level of each loop with respect to the others in 'match'. Recursive implementation to convert all the nested loops in 'match' to a 2D vector container that preserves the relative nesting level of each loop with respect to the others in 'match'. GetMatchedAffineLoopsRec ( NestedMatch match, unsigned currentLevel, std::vector> &loops) VectorizeOneOperation ( Operation *op, VectorizationState &state)Įncodes Operation-specific behavior for vectorization. Vectorizes a yield operation by widening its types. VectorizeAffineYieldOp (AffineYieldOp yieldOp, VectorizationState &state) Vectorizes arbitrary operation by plain widening. WidenOp ( Operation *op, VectorizationState &state) Vectorizes a loop with the vectorization strategy in 'state'. VectorizeAffineForOp (AffineForOp forOp, VectorizationState &state) Returns true if value is a constant equal to the neutral element of the given vectorizable reduction. IsNeutralElementConst (arith::AtomicRMWKind reductionKind, Value value, VectorizationState &state) Vectorizes an affine store with the vectorization strategy in 'state' by generating a 'ansfer_write' op with the proper permutation map inferred from the indices of the store. VectorizeAffineStore (AffineStoreOp storeOp, VectorizationState &state) Vectorizes an affine load with the vectorization strategy in 'state' by generating a 'ansfer_read' op with the proper permutation map inferred from the indices of the load. VectorizeAffineLoad (AffineLoadOp loadOp, VectorizationState &state) ![]() Tries to vectorize a given operand by applying the following logic: More. VectorizeOperand ( Value operand, VectorizationState &state) Generates a broadcast op for the provided uniform value using the vectorization strategy in 'state'. VectorizeUniform ( Value uniformVal, VectorizationState &state) ![]() Returns true if the provided value is vector uniform given the vectorization strategy. IsUniformDefinition ( Value value, const VectorizationStrategy *strategy) More.ĬreateMask (AffineForOp vecForOp, VectorizationState &state)Ĭreates a mask used to filter out garbage elements in the last iteration of unaligned loops. More.ĬreateInitialVector (arith::AtomicRMWKind reductionKind, Value oldOperand, VectorizationState &state)Ĭreates a constant vector filled with the neutral elements of the given reduction. Tries to transform a scalar constant into a vector constant. VectorizeConstant (arith::ConstantOp constOp, VectorizationState &state) Returns the vector type resulting from applying the provided vectorization strategy on the scalar type. GetVectorType ( Type scalarTy, const VectorizationStrategy *strategy) More.ĬomputeMemoryOpIndices ( Operation *op, AffineMap map, ValueRange mapOperands, VectorizationState &state, SmallVectorImpl &results) More.Įrases a loop nest, including all its nested operations. Implements a simple strawman strategy for vectorization. VectorizeLoopIfProfitable ( Operation *loop, unsigned depthInPattern, unsigned patternDepth, VectorizationStrategy *strategy)ĪnalyzeProfitability ( ArrayRef matches, unsigned depthInPattern, unsigned patternDepth, VectorizationStrategy *strategy) MakePattern (const DenseSet ¶llelLoops, int vectorRank, ArrayRef fastestVaryingPattern)Ĭreates a vectorization pattern from the command line arguments. IsVectorizableLoopPtrFactory (const DenseSet ¶llelLoops, int fastestVaryingMemRefDimension) This header declares functions that assit transformations in the MemRef dialect. ![]()
0 Comments
Leave a Reply. |