P4C
The P4 Compiler
Loading...
Searching...
No Matches
probabilities.h
1#ifndef BACKENDS_P4TOOLS_MODULES_SMITH_COMMON_PROBABILITIES_H_
2#define BACKENDS_P4TOOLS_MODULES_SMITH_COMMON_PROBABILITIES_H_
3
4#include <cstdint>
5
6namespace P4::P4Tools::P4Smith {
7
9 // assignment or method call
10 uint16_t ASSIGNMENTORMETHODCALLSTATEMENT_ASSIGN = 75;
11 uint16_t ASSIGNMENTORMETHODCALLSTATEMENT_METHOD_CALL = 25;
12 // probabilities of assignment types
13 uint16_t ASSIGNMENTORMETHODCALLSTATEMENT_ASSIGN_BIT = 100;
14 uint16_t ASSIGNMENTORMETHODCALLSTATEMENT_ASSIGN_STRUCTLIKE = 0;
15 // probabilities of method calls
16 uint16_t ASSIGNMENTORMETHODCALLSTATEMENT_METHOD_ACTION = 44;
17 uint16_t ASSIGNMENTORMETHODCALLSTATEMENT_METHOD_FUNCTION = 45;
18 uint16_t ASSIGNMENTORMETHODCALLSTATEMENT_METHOD_TABLE = 10;
19 uint16_t ASSIGNMENTORMETHODCALLSTATEMENT_METHOD_CTRL = 5;
20 uint16_t ASSIGNMENTORMETHODCALLSTATEMENT_METHOD_BUILT_IN = 1;
21
22 // probabilities for statements
23 uint16_t STATEMENT_SWITCH = 5;
24 uint16_t STATEMENT_ASSIGNMENTORMETHODCALL = 85;
25 uint16_t STATEMENT_IF = 3;
26 uint16_t STATEMENT_RETURN = 2;
27 uint16_t STATEMENT_EXIT = 0;
28 uint16_t STATEMENT_BLOCK = 2;
29 // Add probabilities for for-loop and for-in-loop statement(s).
30 uint16_t STATEMENT_FOR = 1;
31 uint16_t STATEMENT_FOR_IN = 1;
32
33 // probabilities to pick a slice when requesting an lval
34 uint16_t SCOPE_LVAL_PATH = 90;
35 uint16_t SCOPE_LVAL_SLICE = 10;
36
37 // probabilities for statements or declarations
38 uint16_t STATEMENTORDECLARATION_VAR = 10;
39 uint16_t STATEMENTORDECLARATION_CONSTANT = 10;
40 uint16_t STATEMENTORDECLARATION_STATEMENT = 80;
41
42 // probabilities for unary bit expressions
43 uint16_t EXPRESSION_BIT_UNARY_NEG = 20;
44 uint16_t EXPRESSION_BIT_UNARY_CMPL = 20;
45 uint16_t EXPRESSION_BIT_UNARY_CAST = 10;
46 uint16_t EXPRESSION_BIT_UNARY_FUNCTION = 50;
47 // probabilities for binary bit expressions
48 uint16_t EXPRESSION_BIT_BINARY_MUL = 5;
49 uint16_t EXPRESSION_BIT_BINARY_DIV = 5;
50 uint16_t EXPRESSION_BIT_BINARY_MOD = 5;
51 uint16_t EXPRESSION_BIT_BINARY_ADD = 10;
52 uint16_t EXPRESSION_BIT_BINARY_SUB = 10;
53 uint16_t EXPRESSION_BIT_BINARY_ADDSAT = 10;
54 uint16_t EXPRESSION_BIT_BINARY_SUBSAT = 10;
55 uint16_t EXPRESSION_BIT_BINARY_LSHIFT = 5;
56 uint16_t EXPRESSION_BIT_BINARY_RSHIFT = 5;
57 uint16_t EXPRESSION_BIT_BINARY_BAND = 10;
58 uint16_t EXPRESSION_BIT_BINARY_BOR = 10;
59 uint16_t EXPRESSION_BIT_BINARY_BXOR = 10;
60 uint16_t EXPRESSION_BIT_BINARY_CONCAT = 5;
61 // probabilities for ternary bit expressions
62 uint16_t EXPRESSION_BIT_BINARY_SLICE = 50;
63 uint16_t EXPRESSION_BIT_BINARY_MUX = 50;
64 // probabilities for bit expressions
65 uint16_t EXPRESSION_BIT_VAR = 20;
66 uint16_t EXPRESSION_BIT_INT_LITERAL = 5;
67 uint16_t EXPRESSION_BIT_BIT_LITERAL = 25;
68 uint16_t EXPRESSION_BIT_UNARY = 10;
69 uint16_t EXPRESSION_BIT_BINARY = 20;
70 uint16_t EXPRESSION_BIT_TERNARY = 10;
71
72 // probabilities for unary int expressions
73 uint16_t EXPRESSION_INT_UNARY_NEG = 20;
74 uint16_t EXPRESSION_INT_UNARY_CMPL = 20;
75 uint16_t EXPRESSION_INT_UNARY_FUNCTION = 50;
76 // probabilities for binary int expressions
77 uint16_t EXPRESSION_INT_BINARY_MUL = 5;
78 uint16_t EXPRESSION_INT_BINARY_DIV = 5;
79 uint16_t EXPRESSION_INT_BINARY_MOD = 5;
80 uint16_t EXPRESSION_INT_BINARY_ADD = 10;
81 uint16_t EXPRESSION_INT_BINARY_SUB = 10;
82 uint16_t EXPRESSION_INT_BINARY_LSHIFT = 0;
83 uint16_t EXPRESSION_INT_BINARY_RSHIFT = 0;
84 uint16_t EXPRESSION_INT_BINARY_BAND = 10;
85 uint16_t EXPRESSION_INT_BINARY_BOR = 10;
86 uint16_t EXPRESSION_INT_BINARY_BXOR = 10;
87 // probabilities for ternary int expressions
88 uint16_t EXPRESSION_INT_BINARY_MUX = 50;
89 // probabilities for int expressions
90 uint16_t EXPRESSION_INT_VAR = 20;
91 uint16_t EXPRESSION_INT_INT_LITERAL = 5;
92 uint16_t EXPRESSION_INT_UNARY = 10;
93 uint16_t EXPRESSION_INT_BINARY = 20;
94
95 // probabilities for boolean expressions
96 uint16_t EXPRESSION_BOOLEAN_VAR = 15;
97 uint16_t EXPRESSION_BOOLEAN_LITERAL = 20;
98 uint16_t EXPRESSION_BOOLEAN_NOT = 35;
99 uint16_t EXPRESSION_BOOLEAN_LAND = 5;
100 uint16_t EXPRESSION_BOOLEAN_LOR = 5;
101 uint16_t EXPRESSION_BOOLEAN_CMP = 10;
102 uint16_t EXPRESSION_BOOLEAN_FUNCTION = 5;
103 uint16_t EXPRESSION_BOOLEAN_BUILT_IN = 5;
104 // probabilities for comparisons
105 uint16_t EXPRESSION_BOOLEAN_CMP_EQU = 50;
106 uint16_t EXPRESSION_BOOLEAN_CMP_NEQ = 50;
107
108 // probabilities for structlike expressions
109 uint16_t EXPRESSION_STRUCT_VAR = 50;
110 uint16_t EXPRESSION_STRUCT_LITERAL = 30;
111 uint16_t EXPRESSION_STRUCT_FUNCTION = 20;
112
113 // probabilities for state transitions in the parser
114 uint16_t P4STATE_TRANSITION_ACCEPT = 50;
115 uint16_t P4STATE_TRANSITION_REJECT = 10;
116 uint16_t P4STATE_TRANSITION_STATE = 30;
117 uint16_t P4STATE_TRANSITION_SELECT = 10;
118
119 uint16_t BASETYPE_BIT = 50;
120 uint16_t BASETYPE_SIGNED_BIT = 0;
121 uint16_t BASETYPE_VARBIT = 0;
122 uint16_t BASETYPE_INT = 10;
123 uint16_t BASETYPE_ERROR = 0;
124 uint16_t BASETYPE_BOOL = 10;
125 uint16_t BASETYPE_STRING = 0;
126 uint16_t DERIVED_ENUM = 0;
127 uint16_t DERIVED_HEADER = 5;
128 uint16_t DERIVED_HEADER_STACK = 2;
129 uint16_t DERIVED_STRUCT = 5;
130 uint16_t DERIVED_HEADER_UNION = 0;
131 uint16_t DERIVED_TUPLE = 0;
132 uint16_t TYPE_VOID = 0;
133 uint16_t TYPE_MATCH_KIND = 0;
134
135 // probabilities for the types of constant declarations
136 uint16_t CONSTANTDECLARATION_TYPE_BASE = 80;
137 uint16_t CONSTANTDECLARATION_TYPE_STRUCT = 0;
138 // probabilities for the base types in constant declarations
139 uint16_t CONSTANTDECLARATION_BASETYPE_BIT = BASETYPE_BIT;
140 uint16_t CONSTANTDECLARATION_BASETYPE_SIGNED_BIT = BASETYPE_SIGNED_BIT;
141 uint16_t CONSTANTDECLARATION_BASETYPE_VARBIT = BASETYPE_VARBIT;
142 uint16_t CONSTANTDECLARATION_BASETYPE_INT = BASETYPE_INT;
143 uint16_t CONSTANTDECLARATION_BASETYPE_ERROR = BASETYPE_ERROR;
144 uint16_t CONSTANTDECLARATION_BASETYPE_BOOL = BASETYPE_BOOL;
145 uint16_t CONSTANTDECLARATION_BASETYPE_STRING = BASETYPE_STRING;
146 uint16_t CONSTANTDECLARATION_DERIVED_ENUM = DERIVED_ENUM;
147 uint16_t CONSTANTDECLARATION_DERIVED_HEADER = DERIVED_HEADER;
148 uint16_t CONSTANTDECLARATION_DERIVED_HEADER_STACK = 0;
149 uint16_t CONSTANTDECLARATION_DERIVED_STRUCT = DERIVED_STRUCT;
150 uint16_t CONSTANTDECLARATION_DERIVED_HEADER_UNION = DERIVED_HEADER_UNION;
151 uint16_t CONSTANTDECLARATION_DERIVED_TUPLE = DERIVED_TUPLE;
152 uint16_t CONSTANTDECLARATION_TYPE_VOID = TYPE_VOID;
153 uint16_t CONSTANTDECLARATION_TYPE_MATCH_KIND = TYPE_MATCH_KIND;
154
155 // probabilities for the function return types
156 uint16_t FUNCTIONDECLARATION_TYPE_BASE = 90;
157 uint16_t FUNCTIONDECLARATION_TYPE_STRUCT = 9;
158 // probabilities for the base types in function declarations
159 uint16_t FUNCTIONDECLARATION_BASETYPE_BIT = BASETYPE_BIT;
160 uint16_t FUNCTIONDECLARATION_BASETYPE_SIGNED_BIT = BASETYPE_SIGNED_BIT;
161 uint16_t FUNCTIONDECLARATION_BASETYPE_VARBIT = BASETYPE_VARBIT;
162 uint16_t FUNCTIONDECLARATION_BASETYPE_INT = 0;
163 uint16_t FUNCTIONDECLARATION_BASETYPE_ERROR = BASETYPE_ERROR;
164 uint16_t FUNCTIONDECLARATION_BASETYPE_BOOL = BASETYPE_BOOL;
165 uint16_t FUNCTIONDECLARATION_BASETYPE_STRING = BASETYPE_STRING;
166 uint16_t FUNCTIONDECLARATION_DERIVED_ENUM = DERIVED_ENUM;
167 uint16_t FUNCTIONDECLARATION_DERIVED_HEADER = DERIVED_HEADER;
168 // there is no support yet for header stack initialization
169 uint16_t FUNCTIONDECLARATION_DERIVED_HEADER_STACK = 0;
170 uint16_t FUNCTIONDECLARATION_DERIVED_STRUCT = DERIVED_STRUCT;
171 uint16_t FUNCTIONDECLARATION_DERIVED_HEADER_UNION = DERIVED_HEADER_UNION;
172 uint16_t FUNCTIONDECLARATION_DERIVED_TUPLE = DERIVED_TUPLE;
173 uint16_t FUNCTIONDECLARATION_TYPE_VOID = 1;
174 uint16_t FUNCTIONDECLARATION_TYPE_MATCH_KIND = TYPE_MATCH_KIND;
175
176 // probabilities for types in header structures
177 uint16_t HEADERTYPEDECLARATION_FIELD_BASE = 100;
178 uint16_t HEADERTYPEDECLARATION_FIELD_STRUCT = 0;
179 // probabilities for the base types in header type declarations
180 uint16_t HEADERTYPEDECLARATION_BASETYPE_BIT = BASETYPE_BIT;
181 uint16_t HEADERTYPEDECLARATION_BASETYPE_SIGNED_BIT = BASETYPE_SIGNED_BIT;
182 uint16_t HEADERTYPEDECLARATION_BASETYPE_VARBIT = BASETYPE_VARBIT;
183 uint16_t HEADERTYPEDECLARATION_BASETYPE_INT = 0;
184 uint16_t HEADERTYPEDECLARATION_BASETYPE_ERROR = BASETYPE_ERROR;
185 uint16_t HEADERTYPEDECLARATION_BASETYPE_BOOL = 0;
186 uint16_t HEADERTYPEDECLARATION_BASETYPE_STRING = BASETYPE_STRING;
187 uint16_t HEADERTYPEDECLARATION_DERIVED_ENUM = DERIVED_ENUM;
188 uint16_t HEADERTYPEDECLARATION_DERIVED_HEADER = 0;
189 uint16_t HEADERTYPEDECLARATION_DERIVED_HEADER_STACK = 0;
190 // FIXME: Headers should be able to have structs?
191 uint16_t HEADERTYPEDECLARATION_DERIVED_STRUCT = 0;
192 uint16_t HEADERTYPEDECLARATION_DERIVED_HEADER_UNION = 0;
193 uint16_t HEADERTYPEDECLARATION_DERIVED_TUPLE = 0;
194 uint16_t HEADERTYPEDECLARATION_TYPE_VOID = 0;
195 uint16_t HEADERTYPEDECLARATION_TYPE_MATCH_KIND = 0;
196
197 // probabilities for the parameter direction
198 uint16_t PARAMETER_DIR_IN = 33;
199 uint16_t PARAMETER_DIR_OUT = 33;
200 uint16_t PARAMETER_DIR_INOUT = 33;
201 // probabilities for the base types in parameter declarations
202 uint16_t PARAMETER_BASETYPE_BIT = BASETYPE_BIT;
203 uint16_t PARAMETER_BASETYPE_SIGNED_BIT = BASETYPE_SIGNED_BIT;
204 uint16_t PARAMETER_BASETYPE_VARBIT = BASETYPE_VARBIT;
205 uint16_t PARAMETER_BASETYPE_INT = 0;
206 uint16_t PARAMETER_BASETYPE_ERROR = BASETYPE_ERROR;
207 uint16_t PARAMETER_BASETYPE_BOOL = 0;
208 uint16_t PARAMETER_BASETYPE_STRING = BASETYPE_STRING;
209 uint16_t PARAMETER_DERIVED_ENUM = DERIVED_ENUM;
210 uint16_t PARAMETER_DERIVED_HEADER = DERIVED_HEADER;
211 uint16_t PARAMETER_DERIVED_HEADER_STACK = 0;
212 uint16_t PARAMETER_DERIVED_STRUCT = DERIVED_STRUCT;
213 uint16_t PARAMETER_DERIVED_HEADER_UNION = DERIVED_HEADER_UNION;
214 uint16_t PARAMETER_DERIVED_TUPLE = DERIVED_TUPLE;
215 uint16_t PARAMETER_TYPE_VOID = TYPE_VOID;
216 uint16_t PARAMETER_TYPE_MATCH_KIND = TYPE_MATCH_KIND;
217 // probabilities for the directionless base types in parameter declarations
218 // the value is coming from the control, back ends can adjust these probs
219 uint16_t PARAMETER_NONEDIR_BASETYPE_BIT = PARAMETER_BASETYPE_BIT;
220 uint16_t PARAMETER_NONEDIR_BASETYPE_SIGNED_BIT = PARAMETER_BASETYPE_SIGNED_BIT;
221 uint16_t PARAMETER_NONEDIR_BASETYPE_VARBIT = PARAMETER_BASETYPE_VARBIT;
222 uint16_t PARAMETER_NONEDIR_BASETYPE_INT = PARAMETER_BASETYPE_INT;
223 uint16_t PARAMETER_NONEDIR_BASETYPE_ERROR = PARAMETER_BASETYPE_ERROR;
224 uint16_t PARAMETER_NONEDIR_BASETYPE_BOOL = PARAMETER_BASETYPE_BOOL;
225 uint16_t PARAMETER_NONEDIR_BASETYPE_STRING = PARAMETER_BASETYPE_STRING;
226 uint16_t PARAMETER_NONEDIR_DERIVED_ENUM = PARAMETER_DERIVED_ENUM;
227 uint16_t PARAMETER_NONEDIR_DERIVED_HEADER = PARAMETER_DERIVED_HEADER;
228 uint16_t PARAMETER_NONEDIR_DERIVED_HEADER_STACK = PARAMETER_DERIVED_HEADER_STACK;
229 uint16_t PARAMETER_NONEDIR_DERIVED_HEADER_UNION = DERIVED_HEADER_UNION;
230 uint16_t PARAMETER_NONEDIR_DERIVED_STRUCT = DERIVED_STRUCT;
231 uint16_t PARAMETER_NONEDIR_DERIVED_TUPLE = DERIVED_TUPLE;
232 uint16_t PARAMETER_NONEDIR_TYPE_VOID = TYPE_VOID;
233 uint16_t PARAMETER_NONEDIR_TYPE_MATCH_KIND = TYPE_MATCH_KIND;
234
235 // probabilities for types in struct structures
236 uint16_t STRUCTTYPEDECLARATION_FIELD_BASE = 75;
237 uint16_t STRUCTTYPEDECLARATION_FIELD_STRUCT = 25;
238 uint16_t STRUCTTYPEDECLARATION_FIELD_STACK = 0;
239 // probabilities for the headers struct type
240 uint16_t STRUCTTYPEDECLARATION_HEADERS_HEADER = 90;
241 uint16_t STRUCTTYPEDECLARATION_HEADERS_STACK = 10;
242 // probabilities for the base types in struct type declarations
243 uint16_t STRUCTTYPEDECLARATION_BASETYPE_BIT = BASETYPE_BIT;
244 uint16_t STRUCTTYPEDECLARATION_BASETYPE_SIGNED_BIT = BASETYPE_SIGNED_BIT;
245 uint16_t STRUCTTYPEDECLARATION_BASETYPE_VARBIT = BASETYPE_VARBIT;
246 uint16_t STRUCTTYPEDECLARATION_BASETYPE_INT = 0;
247 uint16_t STRUCTTYPEDECLARATION_BASETYPE_ERROR = BASETYPE_ERROR;
248 uint16_t STRUCTTYPEDECLARATION_BASETYPE_BOOL = BASETYPE_BOOL;
249 uint16_t STRUCTTYPEDECLARATION_BASETYPE_STRING = BASETYPE_STRING;
250 uint16_t STRUCTTYPEDECLARATION_DERIVED_ENUM = DERIVED_ENUM;
251 uint16_t STRUCTTYPEDECLARATION_DERIVED_HEADER = DERIVED_HEADER;
252 uint16_t STRUCTTYPEDECLARATION_DERIVED_HEADER_STACK = DERIVED_HEADER_STACK;
253 uint16_t STRUCTTYPEDECLARATION_DERIVED_STRUCT = DERIVED_STRUCT;
254 uint16_t STRUCTTYPEDECLARATION_DERIVED_HEADER_UNION = DERIVED_HEADER_UNION;
255 uint16_t STRUCTTYPEDECLARATION_DERIVED_TUPLE = DERIVED_TUPLE;
256 uint16_t STRUCTTYPEDECLARATION_TYPE_VOID = 0;
257 uint16_t STRUCTTYPEDECLARATION_TYPE_MATCH_KIND = 0;
258 // probabilities for types in struct structures
259 uint16_t TYPEDECLARATION_HEADER = 75;
260 uint16_t TYPEDECLARATION_STRUCT = 25;
261 uint16_t TYPEDECLARATION_UNION = 0;
262
263 // probabilities for types in struct structures
264 uint16_t TYPEDEFDECLARATION_BASE = 75;
265 uint16_t TYPEDEFDECLARATION_STRUCTLIKE = 25;
266 uint16_t TYPEDEFDECLARATION_STACK = 0;
267 // probabilities for the base types in typedef declarations
268 uint16_t TYPEDEFDECLARATION_BASETYPE_BIT = BASETYPE_BIT;
269 uint16_t TYPEDEFDECLARATION_BASETYPE_SIGNED_BIT = BASETYPE_SIGNED_BIT;
270 uint16_t TYPEDEFDECLARATION_BASETYPE_VARBIT = BASETYPE_VARBIT;
271 uint16_t TYPEDEFDECLARATION_BASETYPE_INT = 0;
272 uint16_t TYPEDEFDECLARATION_BASETYPE_ERROR = BASETYPE_ERROR;
273 uint16_t TYPEDEFDECLARATION_BASETYPE_BOOL = 0;
274 uint16_t TYPEDEFDECLARATION_BASETYPE_STRING = BASETYPE_STRING;
275 uint16_t TYPEDEFDECLARATION_DERIVED_ENUM = DERIVED_ENUM;
276 uint16_t TYPEDEFDECLARATION_DERIVED_HEADER = DERIVED_HEADER;
277 uint16_t TYPEDEFDECLARATION_DERIVED_HEADER_STACK = DERIVED_HEADER_STACK;
278 uint16_t TYPEDEFDECLARATION_STRUCT = DERIVED_STRUCT;
279 uint16_t TYPEDEFDECLARATION_HEADER_UNION = DERIVED_HEADER_UNION;
280 uint16_t TYPEDEFDECLARATION_TUPLE = DERIVED_TUPLE;
281 uint16_t TYPEDEFDECLARATION_TYPE_VOID = TYPE_VOID;
282 uint16_t TYPEDEFDECLARATION_TYPE_MATCH_KIND = TYPE_MATCH_KIND;
283
284 // probabilities for the types of constant declarations
285 uint16_t VARIABLEDECLARATION_TYPE_BASE = 80;
286 uint16_t VARIABLEDECLARATION_TYPE_STRUCT = 15;
287 uint16_t VARIABLEDECLARATION_TYPE_STACK = 5;
288 // probabilities for the base types in variable declarations
289 uint16_t VARIABLEDECLARATION_BASETYPE_BIT = BASETYPE_BIT;
290 uint16_t VARIABLEDECLARATION_BASETYPE_SIGNED_BIT = BASETYPE_SIGNED_BIT;
291 uint16_t VARIABLEDECLARATION_BASETYPE_VARBIT = BASETYPE_VARBIT;
292 uint16_t VARIABLEDECLARATION_BASETYPE_INT = 0;
293 uint16_t VARIABLEDECLARATION_BASETYPE_ERROR = BASETYPE_ERROR;
294 uint16_t VARIABLEDECLARATION_BASETYPE_BOOL = BASETYPE_BOOL;
295 uint16_t VARIABLEDECLARATION_BASETYPE_STRING = BASETYPE_STRING;
296 uint16_t VARIABLEDECLARATION_DERIVED_ENUM = DERIVED_ENUM;
297 uint16_t VARIABLEDECLARATION_DERIVED_HEADER = DERIVED_HEADER;
298 uint16_t VARIABLEDECLARATION_DERIVED_HEADER_STACK = DERIVED_HEADER_STACK;
299 uint16_t VARIABLEDECLARATION_DERIVED_STRUCT = DERIVED_STRUCT;
300 uint16_t VARIABLEDECLARATION_DERIVED_HEADER_UNION = DERIVED_HEADER_UNION;
301 uint16_t VARIABLEDECLARATION_DERIVED_TUPLE = DERIVED_TUPLE;
302 uint16_t VARIABLEDECLARATION_TYPE_VOID = TYPE_VOID;
303 uint16_t VARIABLEDECLARATION_TYPE_MATCH_KIND = TYPE_MATCH_KIND;
304
305 static Probabilities &get() {
306 static Probabilities INSTANCE;
307 return INSTANCE;
308 }
309
310 private:
311 Probabilities() = default;
312};
313
315 // minimum and maximum number of type declarations
316 uint16_t MIN_TYPE = 1;
317 uint16_t MAX_TYPE = 8;
318
319 // minimum and maximum number of statements in a block statement
320 uint16_t BLOCKSTATEMENT_MIN_STAT = 3;
321 uint16_t BLOCKSTATEMENT_MAX_STAT = 10;
322
323 // minimum and maximum number of callable declarations
324 uint16_t MIN_CALLABLES = 0;
325 uint16_t MAX_CALLABLES = 4;
326
327 // minimum and maximum variable declarations
328 uint16_t MIN_VAR = 0;
329 uint16_t MAX_VAR = 5;
330
331 uint16_t MIN_INSTANCE = 0;
332 uint16_t MAX_INSTANCE = 2;
333
334 uint16_t MIN_ACTION = 0;
335 uint16_t MAX_ACTION = 2;
336
337 uint16_t MIN_TABLE = 0;
338 uint16_t MAX_TABLE = 3;
339
340 static Declarations &get() {
341 static Declarations INSTANCE;
342 return INSTANCE;
343 }
344
345 private:
346 Declarations() = default;
347};
348
349} // namespace P4::P4Tools::P4Smith
350
351#endif /* BACKENDS_P4TOOLS_MODULES_SMITH_COMMON_PROBABILITIES_H_ */
Definition probabilities.h:314
Definition probabilities.h:8