P4C
The P4 Compiler
Loading...
Searching...
No Matches
TablePlacement::Placed Struct Reference

Public Member Functions

 Placed (const Placed &p)
 
 Placed (TablePlacement &self_, const IR::MAU::Table *t, const Placed *done)
 
const Placeddiff_prev (const Placed *new_prev) const
 
const DecidePlacement::GroupPlacefind_group (const IR::MAU::Table *tbl) const
 
void gateway_merge (const IR::MAU::Table *, cstring)
 
int init_stage () const
 
bool is_fully_placed (const IR::MAU::Table *tbl) const
 
bool is_fully_placed (const IR::MAU::TableSeq *seq) const
 
bool is_match_placed (const IR::MAU::Table *tbl) const
 
bool is_placed (const IR::MAU::Table *tbl) const
 
bool is_placed (cstring tbl) const
 
int logical_ids () const
 
int logical_ids_left () const
 
void setup_logical_id ()
 
void update_attached (Placed *latest)
 
void update_formats ()
 
void update_need_more (int needed_entries)
 

Public Attributes

attached_entries_t attached_entries
 
const int clone_id
 
int complete_shared = 0
 
int entries = 0
 
const DecidePlacement::GroupPlacegroup = 0
 
const IR::MAU::Table * gw = 0
 
cstring gw_result_tag
 
const int id
 
int logical_id = -1
 
bitvec match_placed
 
cstring name
 
bool need_more = false
 
bool need_more_match = false
 True if the match table (only) needs to be split across stages.
 
bitvec placed
 
const Placedprev = 0
 
int requested_stage_entries = -1
 
TableResourceAlloc resources
 
TablePlacementself
 
int stage = 0
 
cstring stage_advance_log
 
int stage_flags = 0
 
int stage_split = -1
 
const IR::MAU::Table * table
 
StageUseEstimate use
 

Friends

std::ostream & operator<< (std::ostream &out, const Placed *pl)
 
std::ostream & operator<< (std::ostream &out, const std::vector< Placed * > &placed_vector)
 

Member Function Documentation

◆ update_attached()

void TablePlacement::Placed::update_attached ( Placed * latest)
inline

Update a Placed object to reflect attached tables being allocated in the same stage due to another table being added to the stage.

Member Data Documentation

◆ need_more

bool TablePlacement::Placed::need_more = false

True if the table needs to be split across multiple stages, because it can't fit within a single stage (eg. not enough entries in the stage).

◆ stage_split

int TablePlacement::Placed::stage_split = -1

Information on which stage table this table is associated with. If the table is never split, then the stage_split should be -1