MLIR-AIE
1.4.5.dev
lib
Dialect
AIEX
Transforms
AIEXToStandard.cpp
Go to the documentation of this file.
1
//===- AIEXToStandard.cpp ---------------------------------------*- C++ -*-===//
2
//
3
// Copyright (C) 2023 Advanced Micro Devices, Inc.
4
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
5
//
6
//===----------------------------------------------------------------------===//
7
8
#include "
aie/Dialect/AIE/IR/AIEDialect.h
"
9
#include "
aie/Dialect/AIEX/IR/AIEXDialect.h
"
10
#include "
aie/Dialect/AIEX/Transforms/AIEXPasses.h
"
11
12
#include "mlir/IR/IRMapping.h"
13
#include "mlir/IR/PatternMatch.h"
14
#include "mlir/Pass/Pass.h"
15
#include "mlir/Tools/mlir-translate/MlirTranslateMain.h"
16
#include "mlir/Transforms/DialectConversion.h"
17
18
namespace
xilinx::AIEX
{
19
#define GEN_PASS_DEF_AIEXTOSTANDARD
20
#include "aie/Dialect/AIEX/Transforms/AIEXPasses.h.inc"
21
}
// namespace xilinx::AIEX
22
23
using namespace
mlir
;
24
using namespace
xilinx
;
25
using namespace
xilinx::AIE
;
26
using namespace
xilinx::AIEX
;
27
28
template
<
typename
MyAIEXOp>
29
struct
AIEXOpRemoval
: OpConversionPattern<MyAIEXOp> {
30
using
OpConversionPattern<MyAIEXOp>::OpConversionPattern;
31
using
OpAdaptor
=
typename
MyAIEXOp::Adaptor;
32
ModuleOp &
module
;
33
34
AIEXOpRemoval
(MLIRContext *context, ModuleOp &m, PatternBenefit benefit = 1)
35
: OpConversionPattern<MyAIEXOp>(context, benefit),
module
(m) {}
36
37
LogicalResult
38
matchAndRewrite
(MyAIEXOp op,
OpAdaptor
adaptor,
39
ConversionPatternRewriter &rewriter)
const override
{
40
Operation *Op = op.getOperation();
41
rewriter.eraseOp(Op);
42
return
success();
43
}
44
};
45
46
struct
AIEXToStandardPass
47
:
xilinx::AIEX::impl::AIEXToStandardBase
<AIEXToStandardPass> {
48
void
runOnOperation
()
override
{
49
50
ModuleOp m = getOperation();
51
ConversionTarget target(getContext());
52
RewritePatternSet removepatterns(&getContext());
53
removepatterns.add<
AIEXOpRemoval<NpuDmaMemcpyNdOp>
>(m.getContext(), m);
54
removepatterns.add<
AIEXOpRemoval<NpuDmaWaitOp>
>(m.getContext(), m);
55
removepatterns.add<
AIEXOpRemoval<NpuPushQueueOp>
>(m.getContext(), m);
56
removepatterns.add<
AIEXOpRemoval<NpuWriteRTPOp>
>(m.getContext(), m);
57
removepatterns.add<
AIEXOpRemoval<NpuWrite32Op>
>(m.getContext(), m);
58
removepatterns.add<
AIEXOpRemoval<NpuSyncOp>
>(m.getContext(), m);
59
removepatterns.add<
AIEXOpRemoval<NpuWriteBdOp>
>(m.getContext(), m);
60
removepatterns.add<
AIEXOpRemoval<NpuAddressPatchOp>
>(m.getContext(), m);
61
removepatterns.add<
AIEXOpRemoval<NpuPreemptOp>
>(m.getContext(), m);
62
removepatterns.add<
AIEXOpRemoval<NpuCreateScratchpadOp>
>(m.getContext(), m);
63
removepatterns.add<
AIEXOpRemoval<NpuUpdateFromScratchpadOp>
>(m.getContext(),
64
m);
65
removepatterns.add<
AIEXOpRemoval<ScratchpadParameterOp>
>(m.getContext(), m);
66
removepatterns.add<
AIEXOpRemoval<SyncScratchpadParametersFromHostOp>
>(
67
m.getContext(), m);
68
69
if
(failed(applyPartialConversion(m, target, std::move(removepatterns))))
70
signalPassFailure();
71
}
72
};
73
74
std::unique_ptr<OperationPass<ModuleOp>>
AIEX::createAIEXToStandardPass
() {
75
return
std::make_unique<AIEXToStandardPass>();
76
}
AIEDialect.h
AIEXDialect.h
AIEXPasses.h
xilinx::AIEX::impl::AIEXToStandardBase
mlir
Definition
AIEVecToLLVM.h:16
xilinx::AIEX
Definition
AIEToConfiguration.h:15
xilinx::AIEX::createAIEXToStandardPass
std::unique_ptr< mlir::OperationPass< mlir::ModuleOp > > createAIEXToStandardPass()
Definition
AIEXToStandard.cpp:74
xilinx::AIE
Definition
AIEToConfiguration.h:19
xilinx
Definition
AIEToConfiguration.h:15
AIEXOpRemoval
Definition
AIEXToStandard.cpp:29
AIEXOpRemoval::module
ModuleOp & module
Definition
AIEXToStandard.cpp:32
AIEXOpRemoval::AIEXOpRemoval
AIEXOpRemoval(MLIRContext *context, ModuleOp &m, PatternBenefit benefit=1)
Definition
AIEXToStandard.cpp:34
AIEXOpRemoval::matchAndRewrite
LogicalResult matchAndRewrite(MyAIEXOp op, OpAdaptor adaptor, ConversionPatternRewriter &rewriter) const override
Definition
AIEXToStandard.cpp:38
AIEXOpRemoval::OpAdaptor
typename MyAIEXOp::Adaptor OpAdaptor
Definition
AIEXToStandard.cpp:31
AIEXToStandardPass
Definition
AIEXToStandard.cpp:47
AIEXToStandardPass::runOnOperation
void runOnOperation() override
Definition
AIEXToStandard.cpp:48
Generated by
1.15.0