P4C
The P4 Compiler
All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
HashExpr::XorHash Class Reference

XOR hashing algorithm implemented on the hashing matrix. More...

Inheritance diagram for HashExpr::XorHash:
[legend]

Public Member Functions

 XorHash (int lineno, int bit_width_)
 
void build_algorithm () override
 
bool check_ixbar (InputXbar *ix, InputXbar::HashTable hash_table) override
 
void gen_ixbar_inputs (std::vector< ixbar_input_t > &inputs, InputXbar *ix, InputXbar::HashTable hash_table) override
 
void get_sources (int, std::vector< Phv::Ref > &rv) const override
 
int input_size () override
 
XorHashoperator= (XorHash &&)=delete
 
bool operator== (const HashExpr &a_) const override
 
int width () override
 
- Public Member Functions inherited from HashExpr
virtual void dbprint (std::ostream &out) const
 
void find_input (Phv::Ref what, std::vector< ixbar_input_t > &inputs, InputXbar *ix, InputXbar::HashTable hash_table)
 
virtual void gen_data (bitvec &data, int bit, InputXbar *ix, InputXbar::HashTable hash_table)
 
void gen_ixbar_init (ixbar_init_t *ixbar_init, std::vector< ixbar_input_t > &inputs, std::vector< hash_matrix_output_t > &outputs, int logical_hash_bit, InputXbar *ix, InputXbar::HashTable hash_table)
 
virtual Phv::Refget_ghost_slice ()
 
std::vector< Phv::Refget_sources (int bit) const
 
virtual bool match_phvref (const Phv::Ref &ref)
 
bool operator!= (const HashExpr &a) const
 
- Public Member Functions inherited from P4::IHasDbPrint
void print () const
 

Friends

class HashExpr
 

Additional Inherited Members

- Static Public Member Functions inherited from HashExpr
static HashExprcreate (gress_t, int stage, const value_t &)
 
- Public Attributes inherited from HashExpr
bfn_hash_algorithm_t hash_algorithm = {}
 
int lineno
 
- Protected Member Functions inherited from HashExpr
 HashExpr (int l)
 

Detailed Description

XOR hashing algorithm implemented on the hashing matrix.

This expression implements XOR over the hasing matrix. The input message is handled as a big integer number - the highest bit is the begining, the zero-th bit is the end. The message is split from the begining into blocks of length bit_width and these blocks are bitwise XORed together.

Member Function Documentation

◆ build_algorithm()

void HashExpr::XorHash::build_algorithm ( )
overridevirtual

Implements HashExpr.

◆ check_ixbar()

bool HashExpr::XorHash::check_ixbar ( InputXbar * ix,
InputXbar::HashTable hash_table )
overridevirtual

Implements HashExpr.

◆ gen_ixbar_inputs()

void HashExpr::XorHash::gen_ixbar_inputs ( std::vector< ixbar_input_t > & inputs,
InputXbar * ix,
InputXbar::HashTable hash_table )
overridevirtual

Implements HashExpr.

◆ get_sources()

void HashExpr::XorHash::get_sources ( int ,
std::vector< Phv::Ref > & rv ) const
overridevirtual

Implements HashExpr.

◆ input_size()

int HashExpr::XorHash::input_size ( )
overridevirtual

Implements HashExpr.

◆ operator==()

bool HashExpr::XorHash::operator== ( const HashExpr & a_) const
overridevirtual

Implements HashExpr.

◆ width()

int HashExpr::XorHash::width ( )
overridevirtual

Implements HashExpr.