14#include "mlir/Conversion/LLVMCommon/ConversionTarget.h"
15#include "mlir/Conversion/LLVMCommon/Pattern.h"
16#include "mlir/Conversion/LLVMCommon/TypeConverter.h"
17#include "mlir/Dialect/Func/IR/FuncOps.h"
18#include "mlir/Dialect/LLVMIR/LLVMDialect.h"
19#include "mlir/Dialect/MemRef/IR/MemRef.h"
20#include "mlir/Dialect/Vector/IR/VectorOps.h"
21#include "mlir/Dialect/Vector/Transforms/LoweringPatterns.h"
22#include "mlir/Dialect/Vector/Transforms/VectorRewritePatterns.h"
23#include "mlir/IR/PatternMatch.h"
24#include "mlir/Pass/Pass.h"
25#include "mlir/Transforms/DialectConversion.h"
26#include "mlir/Transforms/GreedyPatternRewriteDriver.h"
29#define GEN_PASS_DEF_AIEVECTORTRANSFERLOWERING
30#include "aie/Dialect/AIE/Transforms/AIEPasses.h.inc"
33#define DEBUG_TYPE "aie-vector-transfer-opt"
41struct AIEVectorTransferLoweringPass
42 : xilinx::AIE::impl::AIEVectorTransferLoweringBase<
43 AIEVectorTransferLoweringPass> {
44 AIEVectorTransferLoweringPass() =
default;
45 AIEVectorTransferLoweringPass(
const AIEVectorTransferLoweringPass &pass)
46 : AIEVectorTransferLoweringPass() {}
47 AIEVectorTransferLoweringPass(
unsigned maxTransferRank) {
48 this->maxTransferRank = maxTransferRank;
51 void getDependentDialects(DialectRegistry ®istry)
const override {
52 registry.insert<LLVM::LLVMDialect>();
55 void runOnOperation()
override {
56 DeviceOp deviceOp = getOperation();
57 MLIRContext *context = &getContext();
59 std::optional<unsigned> maxRank = std::nullopt;
60 if (maxTransferRank !=
static_cast<unsigned>(-1))
61 maxRank = maxTransferRank;
63 RewritePatternSet patterns(context);
64 vector::populateVectorTransferLoweringPatterns(patterns, maxRank);
66 if (failed(applyPatternsGreedily(deviceOp, std::move(patterns))))
72std::unique_ptr<OperationPass<DeviceOp>>
74 return std::make_unique<AIEVectorTransferLoweringPass>();
Include the generated interface declarations.
std::unique_ptr< mlir::OperationPass< DeviceOp > > createAIEVectorTransferLoweringPass()