CIRCT 22.0.0git
Loading...
Searching...
No Matches
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)
 
ModuleInfo getModuleInfo (FModuleLike module)
 

Private Member Functions

void populateInnerSymIDTable (FModuleLike module)
 Find all the ports and operations which may define an inner symbol operations and give each a unique id.
 
unsigned getID (void *object)
 
unsigned finalizeID (void *object)
 
std::pair< size_t, size_t > getInnerSymID (StringAttr name)
 
void update (OpOperand &operand)
 
void update (const void *pointer)
 
void update (size_t value)
 
template<typename T , typename U >
void update (const std::pair< T, U > &pair)
 
void update (TypeID typeID)
 
void update (BundleType type)
 
void update (ClassType type)
 
void update (Type type)
 
void update (OpResult result)
 
void update (Operation *op, DictionaryAttr dict)
 Hash the top level attribute dictionary of the operation.
 
void update (mlir::OperationName name)
 
void update (Block *block)
 
void update (Region *region)
 
void update (Operation *op)
 

Private Attributes

DenseMap< void *, unsigned > idTable
 
unsigned nextID = 0
 
DenseMap< StringAttr, std::pair< size_t, size_t > > innerSymIDTable
 
std::vector< StringAttr > referredModuleNames
 
const StructuralHasherSharedConstantsconstants
 
llvm::SHA256 sha
 
size_t position = 0
 

Detailed Description

Definition at line 126 of file Dedup.cpp.

Constructor & Destructor Documentation

◆ StructuralHasher()

StructuralHasher::StructuralHasher ( const StructuralHasherSharedConstants constants)
inlineexplicit

Definition at line 127 of file Dedup.cpp.

Member Function Documentation

◆ finalizeID()

unsigned StructuralHasher::finalizeID ( void *  object)
inlineprivate

Definition at line 169 of file Dedup.cpp.

◆ getID()

unsigned StructuralHasher::getID ( void *  object)
inlineprivate

Definition at line 161 of file Dedup.cpp.

◆ getInnerSymID()

std::pair< size_t, size_t > StructuralHasher::getInnerSymID ( StringAttr  name)
inlineprivate

Definition at line 178 of file Dedup.cpp.

◆ getModuleInfo()

ModuleInfo StructuralHasher::getModuleInfo ( FModuleLike  module)
inline

Definition at line 130 of file Dedup.cpp.

References populateInnerSymIDTable(), referredModuleNames, sha, and update().

◆ populateInnerSymIDTable()

void StructuralHasher::populateInnerSymIDTable ( FModuleLike  module)
inlineprivate

Find all the ports and operations which may define an inner symbol operations and give each a unique id.

If the port/operation does define an inner symbol, map the symbol name to a pair of the id and the symbol's field id. When we hash (local) references to this inner symbol, we will hash in the id and the the field id.

Definition at line 142 of file Dedup.cpp.

References innerSymIDTable.

Referenced by getModuleInfo().

◆ update() [1/14]

void StructuralHasher::update ( Block *  block)
inlineprivate

Definition at line 318 of file Dedup.cpp.

◆ update() [2/14]

void StructuralHasher::update ( BundleType  type)
inlineprivate

Definition at line 218 of file Dedup.cpp.

◆ update() [3/14]

void StructuralHasher::update ( ClassType  type)
inlineprivate

Definition at line 227 of file Dedup.cpp.

◆ update() [4/14]

template<typename T , typename U >
void StructuralHasher::update ( const std::pair< T, U > &  pair)
inlineprivate

Definition at line 210 of file Dedup.cpp.

◆ update() [5/14]

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

Definition at line 199 of file Dedup.cpp.

References circt::firrtl::addr.

◆ update() [6/14]

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

Definition at line 312 of file Dedup.cpp.

◆ update() [7/14]

void StructuralHasher::update ( Operation *  op)
inlineprivate

Definition at line 337 of file Dedup.cpp.

◆ update() [8/14]

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 263 of file Dedup.cpp.

◆ update() [9/14]

void StructuralHasher::update ( OpOperand &  operand)
inlineprivate

Definition at line 182 of file Dedup.cpp.

Referenced by getModuleInfo().

◆ update() [10/14]

void StructuralHasher::update ( OpResult  result)
inlineprivate

Definition at line 249 of file Dedup.cpp.

◆ update() [11/14]

void StructuralHasher::update ( Region *  region)
inlineprivate

Definition at line 329 of file Dedup.cpp.

◆ update() [12/14]

void StructuralHasher::update ( size_t  value)
inlineprivate

Definition at line 204 of file Dedup.cpp.

References circt::firrtl::addr.

◆ update() [13/14]

void StructuralHasher::update ( Type  type)
inlineprivate

Definition at line 241 of file Dedup.cpp.

◆ update() [14/14]

void StructuralHasher::update ( TypeID  typeID)
inlineprivate

Definition at line 215 of file Dedup.cpp.

References update().

Referenced by update().

Member Data Documentation

◆ constants

const StructuralHasherSharedConstants& StructuralHasher::constants
private

Definition at line 375 of file Dedup.cpp.

◆ idTable

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

Definition at line 365 of file Dedup.cpp.

◆ innerSymIDTable

DenseMap<StringAttr, std::pair<size_t, size_t> > StructuralHasher::innerSymIDTable
private

Definition at line 369 of file Dedup.cpp.

Referenced by populateInnerSymIDTable().

◆ nextID

unsigned StructuralHasher::nextID = 0
private

Definition at line 366 of file Dedup.cpp.

◆ position

size_t StructuralHasher::position = 0
private

Definition at line 382 of file Dedup.cpp.

◆ referredModuleNames

std::vector<StringAttr> StructuralHasher::referredModuleNames
private

Definition at line 372 of file Dedup.cpp.

Referenced by getModuleInfo().

◆ sha

llvm::SHA256 StructuralHasher::sha
private

Definition at line 379 of file Dedup.cpp.

Referenced by getModuleInfo().


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