CIRCT  19.0.0git
Public Member Functions | Private Member Functions | Private Attributes | List of all members
StructuralHasher Struct Reference
Collaboration diagram for StructuralHasher:
Collaboration graph
[legend]

Public Member Functions

 StructuralHasher (const StructuralHasherSharedConstants &constants)
 
std::pair< std::array< uint8_t, 32 >, SmallVector< StringAttr > > getHashAndModuleNames (FModuleLike module)
 

Private Member Functions

void update (const void *pointer)
 
void update (size_t value)
 
void update (TypeID typeID)
 
void update (BundleType type)
 
void update (Type type)
 
void record (void *address)
 
void update (BlockArgument arg)
 
void update (OpResult result)
 
void update (OpOperand &operand)
 
void update (Operation *op, hw::InnerSymAttr attr)
 
void update (Value value, hw::InnerSymAttr attr)
 
void update (const SymbolTarget &target)
 
void update (InnerRefAttr attr)
 
void update (Operation *op, DictionaryAttr dict)
 Hash the top level attribute dictionary of the operation. More...
 
void update (Block &block)
 
void update (mlir::OperationName name)
 
void update (Operation *op)
 

Private Attributes

DenseMap< void *, unsigned > indices
 
DenseMap< StringAttr, SymbolTargetinnerSymTargets
 
SmallVector< mlir::StringAttr > referredModuleNames
 
const StructuralHasherSharedConstantsconstants
 
llvm::SHA256 sha
 

Detailed Description

Definition at line 115 of file Dedup.cpp.

Constructor & Destructor Documentation

◆ StructuralHasher()

StructuralHasher::StructuralHasher ( const StructuralHasherSharedConstants constants)
inlineexplicit

Definition at line 116 of file Dedup.cpp.

Member Function Documentation

◆ getHashAndModuleNames()

std::pair<std::array<uint8_t, 32>, SmallVector<StringAttr> > StructuralHasher::getHashAndModuleNames ( FModuleLike  module)
inline

Definition at line 120 of file Dedup.cpp.

◆ record()

void StructuralHasher::record ( void *  address)
inlineprivate

Definition at line 155 of file Dedup.cpp.

◆ update() [1/16]

void StructuralHasher::update ( Block &  block)
inlineprivate

Definition at line 277 of file Dedup.cpp.

◆ update() [2/16]

void StructuralHasher::update ( BlockArgument  arg)
inlineprivate

Definition at line 160 of file Dedup.cpp.

◆ update() [3/16]

void StructuralHasher::update ( BundleType  type)
inlineprivate

Definition at line 140 of file Dedup.cpp.

◆ update() [4/16]

void StructuralHasher::update ( const SymbolTarget target)
inlineprivate

Definition at line 195 of file Dedup.cpp.

References SymbolTarget::fieldID, and SymbolTarget::index.

◆ update() [5/16]

void StructuralHasher::update ( const void *  pointer)
inlineprivate

Definition at line 127 of file Dedup.cpp.

References circt::firrtl::addr.

◆ update() [6/16]

void StructuralHasher::update ( InnerRefAttr  attr)
inlineprivate

Definition at line 200 of file Dedup.cpp.

References assert().

◆ update() [7/16]

void StructuralHasher::update ( mlir::OperationName  name)
inlineprivate

Definition at line 286 of file Dedup.cpp.

◆ update() [8/16]

void StructuralHasher::update ( Operation *  op)
inlineprivate

Definition at line 292 of file Dedup.cpp.

◆ update() [9/16]

void StructuralHasher::update ( Operation *  op,
DictionaryAttr  dict 
)
inlineprivate

Hash the top level attribute dictionary of the operation.

This function has special handling for inner symbols, ports, and referenced modules.

Definition at line 211 of file Dedup.cpp.

References getAttr().

◆ update() [10/16]

void StructuralHasher::update ( Operation *  op,
hw::InnerSymAttr  attr 
)
inlineprivate

Definition at line 183 of file Dedup.cpp.

◆ update() [11/16]

void StructuralHasher::update ( OpOperand &  operand)
inlineprivate

Definition at line 176 of file Dedup.cpp.

References assert().

◆ update() [12/16]

void StructuralHasher::update ( OpResult  result)
inlineprivate

Definition at line 162 of file Dedup.cpp.

◆ update() [13/16]

void StructuralHasher::update ( size_t  value)
inlineprivate

Definition at line 132 of file Dedup.cpp.

References circt::firrtl::addr.

◆ update() [14/16]

void StructuralHasher::update ( Type  type)
inlineprivate

Definition at line 149 of file Dedup.cpp.

◆ update() [15/16]

void StructuralHasher::update ( TypeID  typeID)
inlineprivate

Definition at line 137 of file Dedup.cpp.

References update().

Referenced by update().

◆ update() [16/16]

void StructuralHasher::update ( Value  value,
hw::InnerSymAttr  attr 
)
inlineprivate

Definition at line 189 of file Dedup.cpp.

Member Data Documentation

◆ constants

const StructuralHasherSharedConstants& StructuralHasher::constants
private

Definition at line 321 of file Dedup.cpp.

◆ indices

DenseMap<void *, unsigned> StructuralHasher::indices
private

Definition at line 312 of file Dedup.cpp.

◆ innerSymTargets

DenseMap<StringAttr, SymbolTarget> StructuralHasher::innerSymTargets
private

Definition at line 315 of file Dedup.cpp.

◆ referredModuleNames

SmallVector<mlir::StringAttr> StructuralHasher::referredModuleNames
private

Definition at line 318 of file Dedup.cpp.

◆ sha

llvm::SHA256 StructuralHasher::sha
private

Definition at line 325 of file Dedup.cpp.


The documentation for this struct was generated from the following file: