mirror of https://github.com/llvm/circt.git
[HWArithToHW] Expose conversion patterns (#3840)
This commit is contained in:
parent
a9f0da9b98
commit
44793691b4
|
@ -14,6 +14,7 @@
|
||||||
#ifndef CIRCT_CONVERSION_HWARITHTOHW_HWARITHTOHW_H
|
#ifndef CIRCT_CONVERSION_HWARITHTOHW_HWARITHTOHW_H
|
||||||
#define CIRCT_CONVERSION_HWARITHTOHW_HWARITHTOHW_H
|
#define CIRCT_CONVERSION_HWARITHTOHW_HWARITHTOHW_H
|
||||||
|
|
||||||
|
#include "circt/Support/LLVM.h"
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
|
||||||
namespace mlir {
|
namespace mlir {
|
||||||
|
@ -21,6 +22,9 @@ class Pass;
|
||||||
} // namespace mlir
|
} // namespace mlir
|
||||||
|
|
||||||
namespace circt {
|
namespace circt {
|
||||||
|
/// Get the HWArith to HW conversion patterns.
|
||||||
|
void populateHWArithToHWConversionPatterns(RewritePatternSet &patterns);
|
||||||
|
|
||||||
std::unique_ptr<mlir::Pass> createHWArithToHWPass();
|
std::unique_ptr<mlir::Pass> createHWArithToHWPass();
|
||||||
} // namespace circt
|
} // namespace circt
|
||||||
|
|
||||||
|
|
|
@ -407,6 +407,14 @@ static void addSignatureConversion(ConversionTarget &target,
|
||||||
// Pass driver
|
// 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 {
|
namespace {
|
||||||
|
|
||||||
class HWArithToHWPass : public HWArithToHWBase<HWArithToHWPass> {
|
class HWArithToHWPass : public HWArithToHWBase<HWArithToHWPass> {
|
||||||
|
@ -433,11 +441,7 @@ public:
|
||||||
hw::StructExplodeOp, hw::StructExtractOp, hw::StructInjectOp,
|
hw::StructExplodeOp, hw::StructExtractOp, hw::StructInjectOp,
|
||||||
hw::UnionCreateOp, hw::UnionExtractOp>(target, patterns, typeConverter);
|
hw::UnionCreateOp, hw::UnionExtractOp>(target, patterns, typeConverter);
|
||||||
|
|
||||||
patterns.add<ConstantOpLowering, CastOpLowering, ICmpOpLowering,
|
populateHWArithToHWConversionPatterns(patterns);
|
||||||
BinaryOpLowering<AddOp, comb::AddOp>,
|
|
||||||
BinaryOpLowering<SubOp, comb::SubOp>,
|
|
||||||
BinaryOpLowering<MulOp, comb::MulOp>, DivOpLowering>(
|
|
||||||
patterns.getContext());
|
|
||||||
|
|
||||||
if (failed(applyPartialConversion(module, target, std::move(patterns))))
|
if (failed(applyPartialConversion(module, target, std::move(patterns))))
|
||||||
return signalPassFailure();
|
return signalPassFailure();
|
||||||
|
|
Loading…
Reference in New Issue