33 static constexpr int GATEWAY_ROWS_FOR_ENTRIES = 4;
34 using PayloadArguments = std::vector<const IR::Constant *>;
37 struct ContainerByte {
41 bool operator<(
const ContainerByte &cb)
const {
42 if (container != cb.container)
return container < cb.container;
43 return bit_start < cb.bit_start;
46 bool operator==(
const ContainerByte &cb)
const {
47 return !((*this) < cb) && !(cb < (*
this));
50 bool operator!=(
const ContainerByte &cb)
const {
return !((*this) == cb); }
52 ContainerByte(
PHV::Container c,
int bs) : container(c), bit_start(bs) {}
58 static PayloadArguments convert_entry_to_payload_args(
const IR::MAU::Table *tbl,
59 const IR::Entry *entry,
61 static bitvec determine_instr_address_payload(
const IR::MAU::Action *act,
63 static bitvec determine_immediate_payload(
const IR::MAU::Action *act, PayloadArguments &entry,
65 static bitvec determine_indirect_addr_payload(
const IR::MAU::Action *act,
66 PayloadArguments &payload_args,
67 const IR::MAU::AttachedMemory *at);
68 static bitvec determine_indirect_pfe_payload(
const IR::MAU::Action *act,
69 const IR::MAU::AttachedMemory *at);
70 static bitvec determine_meter_type_payload(
const IR::MAU::Action *act,
71 const IR::MAU::AttachedMemory *at);
73 static bitvec determine_match_group_payload(
const IR::MAU::Table *tbl,
75 const IR::MAU::Action *act,
76 std::vector<const IR::Constant *> arguments,
82 void clear() { candidates.clear(); }
85 const IR::MAU::Table::Layout *layout);
static bitvec determine_payload(const IR::MAU::Table *tbl, const TableResourceAlloc *alloc, const IR::MAU::Table::Layout *layout)
Definition mau/payload_gateway.cpp:571
TODO: this is not really specific to BMV2, it should reside somewhere else.
Definition applyOptionsPragmas.cpp:24