26#ifndef BF_P4C_PHV_PHV_ANALYSIS_H_
27#define BF_P4C_PHV_PHV_ANALYSIS_H_
29#include "bf-p4c/bf-p4c-options.h"
30#include "bf-p4c/common/field_defuse.h"
31#include "bf-p4c/common/map_tables_to_actions.h"
32#include "bf-p4c/logging/pass_manager.h"
33#include "bf-p4c/logging/phv_logging.h"
34#include "bf-p4c/mau/action_mutex.h"
35#include "bf-p4c/mau/table_dependency_graph.h"
36#include "bf-p4c/mau/table_flow_graph.h"
37#include "bf-p4c/mau/table_mutex.h"
38#include "bf-p4c/parde/clot/clot_info.h"
39#include "bf-p4c/parde/decaf.h"
40#include "bf-p4c/phv/action_phv_constraints.h"
41#include "bf-p4c/phv/action_source_tracker.h"
42#include "bf-p4c/phv/allocate_phv.h"
43#include "bf-p4c/phv/analysis/critical_path_clusters.h"
44#include "bf-p4c/phv/analysis/dark_live_range.h"
45#include "bf-p4c/phv/analysis/dominator_tree.h"
46#include "bf-p4c/phv/analysis/live_range_shrinking.h"
47#include "bf-p4c/phv/analysis/meta_live_range.h"
48#include "bf-p4c/phv/analysis/non_mocha_dark_fields.h"
49#include "bf-p4c/phv/analysis/pack_conflicts.h"
50#include "bf-p4c/phv/analysis/parser_critical_path.h"
51#include "bf-p4c/phv/collect_strided_headers.h"
52#include "bf-p4c/phv/collect_table_keys.h"
53#include "bf-p4c/phv/fieldslice_live_range.h"
54#include "bf-p4c/phv/make_clusters.h"
55#include "bf-p4c/phv/mau_backtracker.h"
56#include "bf-p4c/phv/phv_parde_mau_use.h"
57#include "bf-p4c/phv/pragma/phv_pragmas.h"
58#include "bf-p4c/phv/utils/tables_to_ids.h"
59#include "bf-p4c/phv/v2/phv_kit.h"
60#include "bf-p4c/phv/v2/table_replay_friendly_constraints.h"
138 std::list<const PHV::SuperCluster *> unallocated;
144 std::set<PHV::FieldRange> &mauInitFields,
const TableSummary &table_summary);
148 void set_trivial_alloc(
bool enable) { settings.
trivial_alloc = enable; }
149 void set_no_code_change(
bool enable) { settings.no_code_change = enable; }
150 void set_physical_liverange_overlay(
bool enable) {
151 settings.physical_liverange_overlay = enable;
153 void set_physical_stage_trivial(
bool enable) { settings.physical_stage_trivial = enable; }
154 const bool &get_limit_tmp_creation() {
return settings.limit_tmp_creation; }
156 void end_apply()
override;
Definition action_mutex.h:29
Definition action_phv_constraints.h:107
Definition allocate_phv.h:813
Definition bf-p4c-options.h:28
Definition dominator_tree.h:32
Definition critical_path_clusters.h:38
Definition parser_critical_path.h:131
Definition clot_info.h:41
Builds "clusters" of field slices that must be placed in the same group.
Definition make_clusters.h:67
Definition dark_live_range.h:389
Definition live_range_shrinking.h:183
Definition backends/tofino/bf-p4c/logging/pass_manager.h:36
Definition map_tables_to_actions.h:29
Definition tables_to_ids.h:22
Definition mau_backtracker.h:29
Definition non_mocha_dark_fields.h:29
Definition ordered_map.h:32
Definition ordered_set.h:32
ActionSourceTracker collects all source-to-destination for all field slices.
Definition action_source_tracker.h:49
Definition collect_table_keys.h:27
Definition fieldslice_live_range.h:152
Definition phv_pragmas.h:46
Definition table_replay_friendly_constraints.h:99
Definition table_replay_friendly_constraints.h:45
Definition phv_analysis.h:64
Definition pack_conflicts.h:36
Definition phv_fields.h:1095
Definition phv_parde_mau_use.h:154
Definition table_phv_constraints.h:97
Definition table_summary.h:158
Definition mau/table_mutex.h:110
Top level PassManager.
Definition decaf.h:749
Definition field_defuse.h:77
bool trivial_alloc
Definition alloc_setting.h:30
Definition alloc_setting.h:25
Definition phv_logging.h:52
Definition table_dependency_graph.h:52
Map field to the parser states in which they are extracted or assigned from checksums.
Definition phv_fields.h:1755
Definition allocate_phv.h:55