P4C
The P4 Compiler
Loading...
Searching...
No Matches
tofino/match_table.cpp
1
17
18/* mau table template specializations for tofino -- #included directly in match_tables.cpp */
19
20template <>
21void MatchTable::write_next_table_regs(Target::Tofino::mau_regs &regs, Table *tbl) {
22 auto &merge = regs.rams.match.merge;
23 // Copies the values directly from the hit map provided by the compiler directly into the
24 // map
25 if (!tbl->get_hit_next().empty()) {
26 merge.next_table_map_en |= (1U << logical_id);
27 auto &mp = merge.next_table_map_data[logical_id];
28 ubits<8> *map_data[8] = {&mp[0].next_table_map_data0, &mp[0].next_table_map_data1,
29 &mp[0].next_table_map_data2, &mp[0].next_table_map_data3,
30 &mp[1].next_table_map_data0, &mp[1].next_table_map_data1,
31 &mp[1].next_table_map_data2, &mp[1].next_table_map_data3};
32 int index = 0;
33 for (auto &n : tbl->get_hit_next()) *map_data[index++] = n.next_table_id();
34 }
35
36 merge.next_table_format_data[logical_id].match_next_table_adr_mask = next_table_adr_mask;
37
51 merge.next_table_format_data[logical_id].match_next_table_adr_miss_value =
52 tbl->get_miss_next().next_table_id();
70}
71
72template <>
73void MatchTable::write_regs(Target::Tofino::mau_regs &regs, int type, Table *result) {
74 write_common_regs<Target::Tofino>(regs, type, result);
75}
Definition tables.h:98
Definition ubits.h:82