7#ifndef BACKENDS_P4TOOLS_MODULES_TESTGEN_TARGETS_BMV2_TABLE_STEPPER_H_
8#define BACKENDS_P4TOOLS_MODULES_TESTGEN_TARGETS_BMV2_TABLE_STEPPER_H_
14#include "backends/p4tools/modules/testgen/core/small_step/table_stepper.h"
15#include "backends/p4tools/modules/testgen/lib/execution_state.h"
16#include "backends/p4tools/modules/testgen/lib/test_spec.h"
17#include "backends/p4tools/modules/testgen/targets/bmv2/expr_stepper.h"
18#include "backends/p4tools/modules/testgen/targets/bmv2/test_spec.h"
22class Bmv2V1ModelTableStepper :
public TableStepper {
30 enum class TableImplementation { standard, selector, profile, constant, skip };
33 struct Bmv2V1ModelProperties {
41 std::vector<const IR::Expression *> actionSelectorKeys;
44 bool addProfileToState =
false;
47 TableImplementation implementaton = TableImplementation::standard;
48 } bmv2V1ModelProperties;
51 bool checkForActionProfile();
54 bool checkForActionSelector();
58 void evalTableActionProfile(
const std::vector<const IR::ActionListElement *> &tableActionList);
62 void evalTableActionSelector(
const std::vector<const IR::ActionListElement *> &tableActionList);
66 TableMatchMap *matches,
67 const IR::Expression *hitCondition)
override;
70 const std::vector<const IR::ActionListElement *> &tableActionList)
override;
73 const std::vector<const IR::ActionListElement *> &tableActionList)
override;