CIRCT 24.0.0git
Loading...
Searching...
No Matches
StructuralHasher Struct Reference
Collaboration diagram for StructuralHasher:

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 (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 StructuralHasherSharedConstants & constants
llvm::SHA256 sha
size_t position = 0

Detailed Description

Definition at line 125 of file Dedup.cpp.

Constructor & Destructor Documentation

◆ StructuralHasher()

StructuralHasher::StructuralHasher ( const StructuralHasherSharedConstants & constants)
inlineexplicit

Definition at line 126 of file Dedup.cpp.

References constants.

Member Function Documentation

◆ finalizeID()

unsigned StructuralHasher::finalizeID ( void * object)
inlineprivate

Definition at line 168 of file Dedup.cpp.

References idTable, and nextID.

Referenced by update(), and update().

◆ getID()

unsigned StructuralHasher::getID ( void * object)
inlineprivate

Definition at line 160 of file Dedup.cpp.

References idTable, and nextID.

Referenced by update().

◆ getInnerSymID()

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

Definition at line 177 of file Dedup.cpp.

References innerSymIDTable.

Referenced by update().

◆ getModuleInfo()

ModuleInfo StructuralHasher::getModuleInfo ( FModuleLike module)
inline

Definition at line 129 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 141 of file Dedup.cpp.

References innerSymIDTable.

Referenced by getModuleInfo().

◆ update() [1/13]

void StructuralHasher::update ( Block * block)
inlineprivate

Definition at line 297 of file Dedup.cpp.

References finalizeID(), position, and update().

◆ update() [2/13]

void StructuralHasher::update ( BundleType type)
inlineprivate

Definition at line 217 of file Dedup.cpp.

References update().

◆ update() [3/13]

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

Definition at line 209 of file Dedup.cpp.

References update().

◆ update() [4/13]

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

Definition at line 198 of file Dedup.cpp.

References circt::firrtl::addr, and sha.

◆ update() [5/13]

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

Definition at line 291 of file Dedup.cpp.

References update().

◆ update() [6/13]

void StructuralHasher::update ( Operation * op)
inlineprivate

Definition at line 316 of file Dedup.cpp.

References finalizeID(), position, and update().

◆ update() [7/13]

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

References constants, getInnerSymID(), referredModuleNames, and update().

◆ update() [8/13]

void StructuralHasher::update ( OpOperand & operand)
inlineprivate

Definition at line 181 of file Dedup.cpp.

References getID(), and update().

Referenced by getModuleInfo(), update(), update(), update(), update(), update(), update(), update(), update(), and update().

◆ update() [9/13]

void StructuralHasher::update ( OpResult result)
inlineprivate

Definition at line 233 of file Dedup.cpp.

References update().

Referenced by update().

◆ update() [10/13]

void StructuralHasher::update ( Region * region)
inlineprivate

Definition at line 308 of file Dedup.cpp.

References position, and update().

◆ update() [11/13]

void StructuralHasher::update ( size_t value)
inlineprivate

Definition at line 203 of file Dedup.cpp.

References circt::firrtl::addr, and sha.

◆ update() [12/13]

void StructuralHasher::update ( Type type)
inlineprivate

Definition at line 227 of file Dedup.cpp.

References circt::firrtl::type_dyn_cast(), and update().

◆ update() [13/13]

void StructuralHasher::update ( TypeID typeID)
inlineprivate

Definition at line 214 of file Dedup.cpp.

References update().

Referenced by update().

Member Data Documentation

◆ constants

const StructuralHasherSharedConstants& StructuralHasher::constants
private

Definition at line 354 of file Dedup.cpp.

Referenced by StructuralHasher(), and update().

◆ idTable

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

Definition at line 344 of file Dedup.cpp.

Referenced by finalizeID(), and getID().

◆ innerSymIDTable

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

Definition at line 348 of file Dedup.cpp.

Referenced by getInnerSymID(), and populateInnerSymIDTable().

◆ nextID

unsigned StructuralHasher::nextID = 0
private

Definition at line 345 of file Dedup.cpp.

Referenced by finalizeID(), and getID().

◆ position

size_t StructuralHasher::position = 0
private

Definition at line 361 of file Dedup.cpp.

Referenced by update(), update(), and update().

◆ referredModuleNames

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

Definition at line 351 of file Dedup.cpp.

Referenced by getModuleInfo(), and update().

◆ sha

llvm::SHA256 StructuralHasher::sha
private

Definition at line 358 of file Dedup.cpp.

Referenced by getModuleInfo(), update(), and update().


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