9#ifndef MLIR_AIEX_DIALECT_H
10#define MLIR_AIEX_DIALECT_H
14#include "mlir/IR/BuiltinAttributes.h"
17#include "aie/Dialect/AIEX/IR/AIEXDialect.h.inc"
19#include "mlir/IR/Operation.h"
21#include "aie/Dialect/AIEX/IR/AIEXInterfaces.h.inc"
23#define GET_ATTRDEF_CLASSES
24#include "aie/Dialect/AIEX/IR/AIEXAttrDefs.h.inc"
28#include "aie/Dialect/AIEX/IR/AIEX.h.inc"
30#define GET_TYPEDEF_CLASSES
31#include "aie/Dialect/AIEX/IR/AIEXTypes.h.inc"
33#include "llvm/ADT/StringRef.h"
42 mlir::BaseMemRefType referencedBufType,
43 llvm::SmallVector<int64_t, 4> inputSizes,
44 llvm::SmallVector<int64_t, 4> inputStrides,
45 llvm::SmallVector<int64_t, 4> &sizes,
46 llvm::SmallVector<int64_t, 4> &strides);
49 llvm::function_ref<mlir::InFlightDiagnostic()> emitError,
50 mlir::BaseMemRefType referencedBufType,
int tileCol,
51 int tileRow, llvm::SmallVector<int64_t, 4> inputSizes,
52 llvm::SmallVector<int64_t, 4> inputStrides,
53 llvm::SmallVector<int64_t, 4> hardwareSizes,
54 llvm::SmallVector<int64_t, 4> hardwareStrides,
55 bool skipTransformationChecks =
false);
57 llvm::ArrayRef<int64_t> strides);
68 llvm::ArrayRef<int64_t> strides);
73 int row, llvm::ArrayRef<int64_t> sizes,
74 llvm::ArrayRef<int64_t> strides);
mlir::Operation * findShimDmaStart(AIE::DeviceOp device)
bool isContiguousTransfer(llvm::ArrayRef< int64_t > sizes, llvm::ArrayRef< int64_t > strides)
mlir::LogicalResult verifyStridesWraps(mlir::Operation *forOp, llvm::function_ref< mlir::InFlightDiagnostic()> emitError, mlir::BaseMemRefType referencedBufType, int tileCol, int tileRow, llvm::SmallVector< int64_t, 4 > inputSizes, llvm::SmallVector< int64_t, 4 > inputStrides, llvm::SmallVector< int64_t, 4 > hardwareSizes, llvm::SmallVector< int64_t, 4 > hardwareStrides, bool skipTransformationChecks=false)
std::optional< uint64_t > getConstantInt64Operand(mlir::Value v)
std::optional< uint32_t > getConstantIntOperand(mlir::Value v)
mlir::Value createConstantArgPlus(mlir::OpBuilder &builder, mlir::Location loc, uint64_t value)
void getHardwareStridesWraps(const AIE::AIETargetModel &targetModel, mlir::Operation *op, mlir::BaseMemRefType referencedBufType, llvm::SmallVector< int64_t, 4 > inputSizes, llvm::SmallVector< int64_t, 4 > inputStrides, llvm::SmallVector< int64_t, 4 > &sizes, llvm::SmallVector< int64_t, 4 > &strides)
bool isLinearModeTransfer(const AIE::AIETargetModel &targetModel, int col, int row, llvm::ArrayRef< int64_t > sizes, llvm::ArrayRef< int64_t > strides)
bool isLinearTransfer(llvm::ArrayRef< int64_t > sizes, llvm::ArrayRef< int64_t > strides)
mlir::Value createConstantI32(mlir::OpBuilder &builder, mlir::Location loc, uint32_t value)