#include "bishengir/Dialect/Utils/Util.h"
#include "bishengir/Dialect/Vector/Transforms/Passes.h"
#include "mlir/Dialect/MemRef/IR/MemRef.h"
#include "mlir/Dialect/Vector/Transforms/LoweringPatterns.h"
#include "mlir/Dialect/Vector/Transforms/VectorRewritePatterns.h"
#include "mlir/Transforms/GreedyPatternRewriteDriver.h"
namespace mlir {
#define GEN_PASS_DEF_VECTORTRANSFERLOWERING
#include "bishengir/Dialect/Vector/Transforms/Passes.h.inc"
}
using namespace mlir;
using namespace mlir::vector;
#define DEBUG_TYPE "vector-transfer-lowering"
namespace {
struct VectorTransferLoweringPass
: public impl::VectorTransferLoweringBase<VectorTransferLoweringPass> {
using Base::Base;
void runOnOperation() override;
};
}
void VectorTransferLoweringPass::runOnOperation() {
Operation *op = getOperation();
RewritePatternSet patterns(op->getContext());
vector::populateVectorMaskLoweringPatternsForSideEffectingOps(patterns);
vector::populateVectorTransferLoweringPatterns(patterns,
1);
if (failed(applyPatternsGreedily(op, std::move(patterns)))) {
signalPassFailure();
}
}
std::unique_ptr<Pass> mlir::vector::createVectorTransferLoweringPass() {
return std::make_unique<VectorTransferLoweringPass>();
}