CIRCT 20.0.0git
Loading...
Searching...
No Matches
HWArithToHW.h
Go to the documentation of this file.
1//===- HWArithToHW.h - HWArith to HW conversions ----------------*- C++ -*-===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8//
9// This header file defines prototypes that expose the HWArithToHW pass
10// constructor.
11//
12//===----------------------------------------------------------------------===//
13
14#ifndef CIRCT_CONVERSION_HWARITHTOHW_HWARITHTOHW_H
15#define CIRCT_CONVERSION_HWARITHTOHW_HWARITHTOHW_H
16
17#include "circt/Support/LLVM.h"
18#include "mlir/Transforms/DialectConversion.h"
19#include <memory>
20
21namespace mlir {
22class Pass;
23} // namespace mlir
24
25namespace circt {
26
27#define GEN_PASS_DECL_HWARITHTOHW
28#include "circt/Conversion/Passes.h.inc"
29
30/// A helper type converter class that automatically populates the relevant
31/// materializations and type conversions for converting HWArith to HW.
32class HWArithToHWTypeConverter : public mlir::TypeConverter {
33public:
35
36 // A function which recursively converts any integer type with signedness
37 // semantics to a signless counterpart.
38 mlir::Type removeSignedness(mlir::Type type);
39
40 // Returns true if any subtype in 'type' has signedness semantics.
41 bool hasSignednessSemantics(mlir::Type type);
42 bool hasSignednessSemantics(mlir::TypeRange types);
43
44private:
45 // Memoizations for signedness info and conversions.
47 mlir::Type type;
49 };
50 llvm::DenseMap<mlir::Type, ConvertedType> conversionCache;
51};
52
53/// Get the HWArith to HW conversion patterns.
55 HWArithToHWTypeConverter &typeConverter, RewritePatternSet &patterns);
56
57std::unique_ptr<mlir::Pass> createHWArithToHWPass();
58} // namespace circt
59
60#endif // CIRCT_CONVERSION_HWARITHTOHW_HWARITHTOHW_H
A helper type converter class that automatically populates the relevant materializations and type con...
Definition HWArithToHW.h:32
bool hasSignednessSemantics(mlir::Type type)
mlir::Type removeSignedness(mlir::Type type)
llvm::DenseMap< mlir::Type, ConvertedType > conversionCache
Definition HWArithToHW.h:50
bool hasSignednessSemantics(mlir::TypeRange types)
The InstanceGraph op interface, see InstanceGraphInterface.td for more details.
void populateHWArithToHWConversionPatterns(HWArithToHWTypeConverter &typeConverter, RewritePatternSet &patterns)
Get the HWArith to HW conversion patterns.
std::unique_ptr< mlir::Pass > createHWArithToHWPass()