P4C
The P4 Compiler
Loading...
Searching...
No Matches
targets/bmv2/concolic.h
1/*
2 * SPDX-FileCopyrightText: 2022 The P4 Language Consortium
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
7#ifndef BACKENDS_P4TOOLS_MODULES_TESTGEN_TARGETS_BMV2_CONCOLIC_H_
8#define BACKENDS_P4TOOLS_MODULES_TESTGEN_TARGETS_BMV2_CONCOLIC_H_
9
10#include <cstddef>
11#include <functional>
12#include <vector>
13
14#include "backends/p4tools/common/lib/model.h"
15#include "ir/ir.h"
16#include "lib/big_int_util.h"
17
18#include "backends/p4tools/modules/testgen/lib/concolic.h"
19
21
22enum class Bmv2HashAlgorithm {
23 crc32,
24 crc32_custom,
25 crc16,
26 crc16_custom,
27 random,
28 identity,
29 csum16,
30 xor16
31};
32
33std::ostream &operator<<(std::ostream &os, Bmv2HashAlgorithm algo);
34
35class Bmv2Concolic : public Concolic {
36 private:
38 static constexpr int CHUNK_SIZE = 8;
39
41 static const ConcolicMethodImpls::ImplList BMV2_CONCOLIC_METHOD_IMPLS;
42
45 static big_int computeChecksum(const std::vector<const IR::Expression *> &exprList,
46 const Model &finalModel, Bmv2HashAlgorithm algo,
47 Model::ExpressionMap *resolvedExpressions);
48
53 static const IR::Expression *setAndComputePayload(
54 const Model &finalModel, ConcolicVariableMap *resolvedConcolicVariables, int payloadSize);
55
56 public:
58 static const ConcolicMethodImpls::ImplList *getBmv2ConcolicMethodImpls();
59};
60
61} // namespace P4::P4Tools::P4Testgen::Bmv2
62
63#endif /* BACKENDS_P4TOOLS_MODULES_TESTGEN_TARGETS_BMV2_CONCOLIC_H_ */
Definition backends/p4tools/common/lib/model.h:24
Definition targets/bmv2/concolic.h:35
static const ConcolicMethodImpls::ImplList * getBmv2ConcolicMethodImpls()
Definition targets/bmv2/concolic.cpp:277
Definition lib/concolic.h:92
Inja.
Definition targets/bmv2/cmd_stepper.cpp:37