9#ifndef MLIR_DIALECT_X86VECTOR_UTILS_X86VECTORUTILS_H_
10#define MLIR_DIALECT_X86VECTOR_UTILS_X86VECTORUTILS_H_
16#include "llvm/ADT/ArrayRef.h"
29bool isInVnniLayout(Operation *op, llvm::ArrayRef<AffineMap> indexingMaps,
30 std::optional<unsigned> blockingFactor = std::nullopt);
36 vector::ContractionOp pairContOp,
37 bool rhsHasMultipleNonUnitDims,
38 int64_t nonUnitDimValue);
56 vector::ContractionOp contractA,
57 vector::ContractionOp contractB,
58 int64_t nonUnitDimAcc, VectorType accTy);
63 Operation *opA, Operation *opB,
64 int64_t nonUnitDimAcc, VectorType accTy);
A multi-dimensional affine map Affine map's are immutable like Type's, and they are uniqued.
Operation is the basic unit of execution within MLIR.
Operation * traceToVectorReadLikeParentOperation(Value v)
Operation * traceToVectorWriteLikeUserOperation(Value v)
bool validatePairVectorContract(vector::ContractionOp contractOp, vector::ContractionOp pairContOp, bool rhsHasMultipleNonUnitDims, int64_t nonUnitDimValue)
LogicalResult shuffleBeforeWriteLikeOp(PatternRewriter &rewriter, Operation *opA, Operation *opB, int64_t nonUnitDimAcc, VectorType accTy)
LogicalResult shuffleAfterReadLikeOp(PatternRewriter &rewriter, Operation *opA, Operation *opB, vector::ContractionOp contractA, vector::ContractionOp contractB, int64_t nonUnitDimAcc, VectorType accTy)
bool isInVnniLayout(Operation *op, llvm::ArrayRef< AffineMap > indexingMaps, std::optional< unsigned > blockingFactor=std::nullopt)
Include the generated interface declarations.