[HWArithToHW] Expose conversion patterns (#3840)

This commit is contained in:
7FM 2022-09-08 18:45:21 +02:00 committed by GitHub
parent a9f0da9b98
commit 44793691b4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 13 additions and 5 deletions

View File

@ -14,6 +14,7 @@
#ifndef CIRCT_CONVERSION_HWARITHTOHW_HWARITHTOHW_H
#define CIRCT_CONVERSION_HWARITHTOHW_HWARITHTOHW_H
#include "circt/Support/LLVM.h"
#include <memory>
namespace mlir {
@ -21,6 +22,9 @@ class Pass;
} // namespace mlir
namespace circt {
/// Get the HWArith to HW conversion patterns.
void populateHWArithToHWConversionPatterns(RewritePatternSet &patterns);
std::unique_ptr<mlir::Pass> createHWArithToHWPass();
} // namespace circt

View File

@ -407,6 +407,14 @@ static void addSignatureConversion(ConversionTarget &target,
// Pass driver
//===----------------------------------------------------------------------===//
void circt::populateHWArithToHWConversionPatterns(RewritePatternSet &patterns) {
patterns.add<ConstantOpLowering, CastOpLowering, ICmpOpLowering,
BinaryOpLowering<AddOp, comb::AddOp>,
BinaryOpLowering<SubOp, comb::SubOp>,
BinaryOpLowering<MulOp, comb::MulOp>, DivOpLowering>(
patterns.getContext());
}
namespace {
class HWArithToHWPass : public HWArithToHWBase<HWArithToHWPass> {
@ -433,11 +441,7 @@ public:
hw::StructExplodeOp, hw::StructExtractOp, hw::StructInjectOp,
hw::UnionCreateOp, hw::UnionExtractOp>(target, patterns, typeConverter);
patterns.add<ConstantOpLowering, CastOpLowering, ICmpOpLowering,
BinaryOpLowering<AddOp, comb::AddOp>,
BinaryOpLowering<SubOp, comb::SubOp>,
BinaryOpLowering<MulOp, comb::MulOp>, DivOpLowering>(
patterns.getContext());
populateHWArithToHWConversionPatterns(patterns);
if (failed(applyPartialConversion(module, target, std::move(patterns))))
return signalPassFailure();