8#ifndef FRONTENDS_P4_14_FROMV1_0_V1MODEL_H_
9#define FRONTENDS_P4_14_FROMV1_0_V1MODEL_H_
11#include "frontends/common/model.h"
12#include "frontends/p4/coreLibrary.h"
14#include "lib/cstring.h"
28 packetParam(
"packet"_cs, P4::P4CoreLibrary::instance().packetIn, 0),
29 headersParam(
"hdr"_cs, headersType, 1),
30 metadataParam(
"meta"_cs, userMetaType, 2),
31 standardMetadataParam(
"standard_metadata"_cs, standardMetadataType, 3) {}
41 packetParam(
"packet"_cs, P4::P4CoreLibrary::instance().packetOut, 0),
42 headersParam(
"hdr"_cs, headersType, 1) {}
52 headersParam(
"hdr"_cs, headersType, 0),
53 metadataParam(
"meta"_cs, metadataType, 1),
54 standardMetadataParam(
"standard_metadata"_cs, standardMetadataType, 2) {}
62 :
Model::Elem(name), headersParam(
"hdr"_cs, headersType, 0) {}
69 packets(
"packets"_cs),
71 both(
"packets_and_bytes"_cs) {}
86 : Extern_Model(
"action_profile"_cs),
87 sizeType(IR::Type_Bits::get(32)),
88 sizeParam(
"size"_cs) {}
89 const IR::Type *sizeType;
94 ActionSelector_Model()
95 : Extern_Model(
"action_selector"_cs),
96 sizeType(IR::Type_Bits::get(32)),
98 widthType(IR::Type_Bits::get(32)),
99 algorithmParam(
"algorithm"_cs) {}
100 const IR::Type *sizeType;
102 const IR::Type *widthType;
107 Random_Model() : Elem(
"random"_cs), modify_field_rng_uniform(
"modify_field_rng_uniform"_cs) {}
113 Truncate() : Extern_Model(
"truncate"_cs), length_type(IR::Type::Bits::get(32)) {}
114 const IR::Type *length_type;
118 explicit CounterOrMeter_Model(
cstring name)
119 : Extern_Model(name),
120 sizeParam(
"size"_cs),
121 typeParam(
"type"_cs),
122 size_type(IR::Type_Bits::get(32)) {}
125 const IR::Type *size_type;
132 : Extern_Model(
"register"_cs),
133 sizeParam(
"size"_cs),
136 size_type(IR::Type_Bits::get(32)) {}
140 const IR::Type *size_type;
144 DigestReceiver_Model() : Elem(
"digest"_cs), receiverType(IR::Type_Bits::get(32)) {}
145 const IR::Type *receiverType;
148struct Counter_Model :
public CounterOrMeter_Model {
149 Counter_Model() : CounterOrMeter_Model(
"counter"_cs), increment(
"count"_cs) {}
153struct Meter_Model :
public CounterOrMeter_Model {
154 Meter_Model() : CounterOrMeter_Model(
"meter"_cs), executeMeter(
"execute_meter"_cs) {}
158struct DirectMeter_Model :
public CounterOrMeter_Model {
159 DirectMeter_Model() : CounterOrMeter_Model(
"direct_meter"_cs), read(
"read"_cs) {}
163struct DirectCounter_Model :
public CounterOrMeter_Model {
164 DirectCounter_Model() : CounterOrMeter_Model(
"direct_counter"_cs), count(
"count"_cs) {}
169 explicit StandardMetadataType_Model(
cstring name)
172 recirculate(
"recirculate_port"_cs),
173 egress_spec(
"egress_spec"_cs) {}
189 crc32_custom(
"crc32_custom"_cs),
191 crc16_custom(
"crc16_custom"_cs),
193 identity(
"identity"_cs),
212 : Extern_Model(
"clone"_cs),
213 clone3(
"clone_preserving_field_list"_cs),
215 sessionType(IR::Type_Bits::get(32)) {}
218 const IR::Type *sessionType;
229 deparser(
"dep"_cs) {}
238struct TableAttributes_Model {
239 TableAttributes_Model()
240 : tableImplementation(
"implementation"_cs),
241 counters(
"counters"_cs),
244 supportTimeout(
"support_timeout"_cs) {}
250 const unsigned defaultTableSize = 1024;
256 : file(
"v1model.p4"_cs),
257 standardMetadata(
"standard_metadata"_cs),
259 intrinsicMetadata(
"intrinsic_metadata"_cs),
260 queueingMetadata(
"queueing_metadata"_cs),
261 headersType(
"headers"_cs),
262 metadataType(
"metadata"_cs),
263 standardMetadataType(
"standard_metadata_t"_cs),
264 parser(headersType, metadataType, standardMetadataType),
265 deparser(headersType),
266 egress(
"egress"_cs, headersType, metadataType, standardMetadataType),
267 ingress(
"ingress"_cs, headersType, metadataType, standardMetadataType),
269 counterOrMeter(
"$"_cs),
276 resubmit(
"resubmit_preserving_field_list"_cs),
278 rangeMatchType(
"range"_cs),
279 optionalMatchType(
"optional"_cs),
280 selectorMatchType(
"selector"_cs),
281 verify(
"verifyChecksum"_cs, headersType),
282 compute(
"computeChecksum"_cs, headersType),
287 drop(
"mark_to_drop"_cs),
288 recirculate(
"recirculate_preserving_field_list"_cs),
289 verify_checksum(
"verify_checksum"_cs),
290 update_checksum(
"update_checksum"_cs),
291 verify_checksum_with_payload(
"verify_checksum_with_payload"_cs),
292 update_checksum_with_payload(
"update_checksum_with_payload"_cs),
293 log_msg(
"log_msg"_cs),
298 const ::P4::Model::Elem file;
299 const ::P4::Model::Elem standardMetadata;
300 const ::P4::Model::Elem intrinsicMetadata;
301 const ::P4::Model::Elem queueingMetadata;
302 const ::P4::Model::Type_Model headersType;
303 const ::P4::Model::Type_Model metadataType;
318 const ::P4::Model::Elem resubmit;
320 const ::P4::Model::Elem rangeMatchType;
321 const ::P4::Model::Elem optionalMatchType;
322 const ::P4::Model::Elem selectorMatchType;
329 const ::P4::Model::Elem drop;
330 const ::P4::Model::Elem recirculate;
331 const ::P4::Model::Elem verify_checksum;
332 const ::P4::Model::Elem update_checksum;
333 const ::P4::Model::Elem verify_checksum_with_payload;
334 const ::P4::Model::Elem update_checksum_with_payload;
335 const ::P4::Model::Elem log_msg;
339 static V1Model instance;
341 static const char *versionInitial;
342 static const char *versionCurrent;
Definition frontends/common/model.h:64
Definition frontends/p4-14/fromv1.0/v1model.h:111
Definition converters.cpp:17
Definition frontends/common/model.h:28
Enum_Model : Type_Model.
Definition frontends/common/model.h:47
Extern_Model : Type_Model.
Definition frontends/common/model.h:52
Param_Model : Elem.
Definition frontends/common/model.h:57
Definition frontends/common/model.h:42
Definition frontends/p4-14/fromv1.0/v1model.h:84
Definition frontends/p4-14/fromv1.0/v1model.h:93
Definition frontends/p4-14/fromv1.0/v1model.h:185
Definition frontends/p4-14/fromv1.0/v1model.h:179
Definition frontends/p4-14/fromv1.0/v1model.h:210
Definition frontends/p4-14/fromv1.0/v1model.h:48
Definition frontends/p4-14/fromv1.0/v1model.h:148
Definition frontends/p4-14/fromv1.0/v1model.h:117
Definition frontends/p4-14/fromv1.0/v1model.h:66
Definition frontends/p4-14/fromv1.0/v1model.h:38
Definition frontends/p4-14/fromv1.0/v1model.h:143
Definition frontends/p4-14/fromv1.0/v1model.h:163
Definition frontends/p4-14/fromv1.0/v1model.h:158
Definition frontends/p4-14/fromv1.0/v1model.h:206
Definition frontends/p4-14/fromv1.0/v1model.h:153
Definition frontends/p4-14/fromv1.0/v1model.h:77
Definition frontends/p4-14/fromv1.0/v1model.h:24
Definition frontends/p4-14/fromv1.0/v1model.h:106
Definition frontends/p4-14/fromv1.0/v1model.h:130
Definition frontends/p4-14/fromv1.0/v1model.h:221
Definition frontends/p4-14/fromv1.0/v1model.h:238
Definition frontends/p4-14/fromv1.0/v1model.h:60