CIRCT 21.0.0git
Loading...
Searching...
No Matches
Namespaces | Macros | Functions
CombToAIG.cpp File Reference
#include "circt/Conversion/CombToAIG.h"
#include "circt/Dialect/AIG/AIGOps.h"
#include "circt/Dialect/Comb/CombOps.h"
#include "circt/Dialect/HW/HWOps.h"
#include "mlir/Pass/Pass.h"
#include "mlir/Transforms/DialectConversion.h"
#include "llvm/ADT/PointerUnion.h"
#include "circt/Conversion/Passes.h.inc"
Include dependency graph for CombToAIG.cpp:

Go to the source code of this file.

Namespaces

namespace  circt
 The InstanceGraph op interface, see InstanceGraphInterface.td for more details.
 

Macros

#define GEN_PASS_DEF_CONVERTCOMBTOAIG
 

Functions

static SmallVector< Value > extractBits (OpBuilder &builder, Value val)
 
template<bool isLeftShift>
static Value createShiftLogic (ConversionPatternRewriter &rewriter, Location loc, Value shiftAmount, int64_t maxShiftAmount, llvm::function_ref< Value(int64_t)> getPadding, llvm::function_ref< Value(int64_t)> getExtract)
 
static int64_t getNumUnknownBitsAndPopulateValues (Value value, llvm::SmallVectorImpl< ConstantOrValue > &values)
 
static APInt substitueMaskToValues (size_t width, llvm::SmallVectorImpl< ConstantOrValue > &constantOrValues, uint32_t mask)
 
static LogicalResult emulateBinaryOpForUnknownBits (ConversionPatternRewriter &rewriter, int64_t maxEmulationUnknownBits, Operation *op, llvm::function_ref< APInt(const APInt &, const APInt &)> emulate)
 
static void populateCombToAIGConversionPatterns (RewritePatternSet &patterns, uint32_t maxEmulationUnknownBits)
 

Macro Definition Documentation

◆ GEN_PASS_DEF_CONVERTCOMBTOAIG

#define GEN_PASS_DEF_CONVERTCOMBTOAIG

Definition at line 22 of file CombToAIG.cpp.

Function Documentation

◆ createShiftLogic()

template<bool isLeftShift>
static Value createShiftLogic ( ConversionPatternRewriter &  rewriter,
Location  loc,
Value  shiftAmount,
int64_t  maxShiftAmount,
llvm::function_ref< Value(int64_t)>  getPadding,
llvm::function_ref< Value(int64_t)>  getExtract 
)
static

Definition at line 48 of file CombToAIG.cpp.

References assert(), and extractBits().

◆ emulateBinaryOpForUnknownBits()

static LogicalResult emulateBinaryOpForUnknownBits ( ConversionPatternRewriter &  rewriter,
int64_t  maxEmulationUnknownBits,
Operation *  op,
llvm::function_ref< APInt(const APInt &, const APInt &)>  emulate 
)
static

◆ extractBits()

static SmallVector< Value > extractBits ( OpBuilder &  builder,
Value  val 
)
static

Definition at line 34 of file CombToAIG.cpp.

Referenced by createShiftLogic(), and emulateBinaryOpForUnknownBits().

◆ getNumUnknownBitsAndPopulateValues()

static int64_t getNumUnknownBitsAndPopulateValues ( Value  value,
llvm::SmallVectorImpl< ConstantOrValue > &  values 
)
static

◆ populateCombToAIGConversionPatterns()

static void populateCombToAIGConversionPatterns ( RewritePatternSet &  patterns,
uint32_t  maxEmulationUnknownBits 
)
static

Definition at line 858 of file CombToAIG.cpp.

◆ substitueMaskToValues()

static APInt substitueMaskToValues ( size_t  width,
llvm::SmallVectorImpl< ConstantOrValue > &  constantOrValues,
uint32_t  mask 
)
static

Definition at line 133 of file CombToAIG.cpp.

References assert().

Referenced by emulateBinaryOpForUnknownBits().