17#ifndef FRONTENDS_P4_14_FROMV1_0_V1MODEL_H_
18#define FRONTENDS_P4_14_FROMV1_0_V1MODEL_H_
20#include "frontends/common/model.h"
21#include "frontends/p4/coreLibrary.h"
23#include "lib/cstring.h"
37 packetParam(
"packet"_cs, P4::P4CoreLibrary::instance().packetIn, 0),
38 headersParam(
"hdr"_cs, headersType, 1),
39 metadataParam(
"meta"_cs, userMetaType, 2),
40 standardMetadataParam(
"standard_metadata"_cs, standardMetadataType, 3) {}
50 packetParam(
"packet"_cs, P4::P4CoreLibrary::instance().packetOut, 0),
51 headersParam(
"hdr"_cs, headersType, 1) {}
61 headersParam(
"hdr"_cs, headersType, 0),
62 metadataParam(
"meta"_cs, metadataType, 1),
63 standardMetadataParam(
"standard_metadata"_cs, standardMetadataType, 2) {}
71 :
Model::Elem(name), headersParam(
"hdr"_cs, headersType, 0) {}
78 packets(
"packets"_cs),
80 both(
"packets_and_bytes"_cs) {}
95 : Extern_Model(
"action_profile"_cs),
96 sizeType(IR::Type_Bits::get(32)),
97 sizeParam(
"size"_cs) {}
98 const IR::Type *sizeType;
103 ActionSelector_Model()
104 : Extern_Model(
"action_selector"_cs),
105 sizeType(IR::Type_Bits::get(32)),
106 sizeParam(
"size"_cs),
107 widthType(IR::Type_Bits::get(32)),
108 algorithmParam(
"algorithm"_cs) {}
109 const IR::Type *sizeType;
111 const IR::Type *widthType;
116 Random_Model() : Elem(
"random"_cs), modify_field_rng_uniform(
"modify_field_rng_uniform"_cs) {}
122 Truncate() : Extern_Model(
"truncate"_cs), length_type(IR::Type::Bits::get(32)) {}
123 const IR::Type *length_type;
127 explicit CounterOrMeter_Model(
cstring name)
128 : Extern_Model(name),
129 sizeParam(
"size"_cs),
130 typeParam(
"type"_cs),
131 size_type(IR::Type_Bits::get(32)) {}
134 const IR::Type *size_type;
141 : Extern_Model(
"register"_cs),
142 sizeParam(
"size"_cs),
145 size_type(IR::Type_Bits::get(32)) {}
149 const IR::Type *size_type;
153 DigestReceiver_Model() : Elem(
"digest"_cs), receiverType(IR::Type_Bits::get(32)) {}
154 const IR::Type *receiverType;
157struct Counter_Model :
public CounterOrMeter_Model {
158 Counter_Model() : CounterOrMeter_Model(
"counter"_cs), increment(
"count"_cs) {}
162struct Meter_Model :
public CounterOrMeter_Model {
163 Meter_Model() : CounterOrMeter_Model(
"meter"_cs), executeMeter(
"execute_meter"_cs) {}
167struct DirectMeter_Model :
public CounterOrMeter_Model {
168 DirectMeter_Model() : CounterOrMeter_Model(
"direct_meter"_cs), read(
"read"_cs) {}
172struct DirectCounter_Model :
public CounterOrMeter_Model {
173 DirectCounter_Model() : CounterOrMeter_Model(
"direct_counter"_cs), count(
"count"_cs) {}
178 explicit StandardMetadataType_Model(
cstring name)
181 recirculate(
"recirculate_port"_cs),
182 egress_spec(
"egress_spec"_cs) {}
198 crc32_custom(
"crc32_custom"_cs),
200 crc16_custom(
"crc16_custom"_cs),
202 identity(
"identity"_cs),
221 : Extern_Model(
"clone"_cs),
222 clone3(
"clone_preserving_field_list"_cs),
224 sessionType(IR::Type_Bits::get(32)) {}
227 const IR::Type *sessionType;
238 deparser(
"dep"_cs) {}
247struct TableAttributes_Model {
248 TableAttributes_Model()
249 : tableImplementation(
"implementation"_cs),
250 counters(
"counters"_cs),
253 supportTimeout(
"support_timeout"_cs) {}
259 const unsigned defaultTableSize = 1024;
265 : file(
"v1model.p4"_cs),
266 standardMetadata(
"standard_metadata"_cs),
268 intrinsicMetadata(
"intrinsic_metadata"_cs),
269 queueingMetadata(
"queueing_metadata"_cs),
270 headersType(
"headers"_cs),
271 metadataType(
"metadata"_cs),
272 standardMetadataType(
"standard_metadata_t"_cs),
273 parser(headersType, metadataType, standardMetadataType),
274 deparser(headersType),
275 egress(
"egress"_cs, headersType, metadataType, standardMetadataType),
276 ingress(
"ingress"_cs, headersType, metadataType, standardMetadataType),
278 counterOrMeter(
"$"_cs),
285 resubmit(
"resubmit_preserving_field_list"_cs),
287 rangeMatchType(
"range"_cs),
288 optionalMatchType(
"optional"_cs),
289 selectorMatchType(
"selector"_cs),
290 verify(
"verifyChecksum"_cs, headersType),
291 compute(
"computeChecksum"_cs, headersType),
296 drop(
"mark_to_drop"_cs),
297 recirculate(
"recirculate_preserving_field_list"_cs),
298 verify_checksum(
"verify_checksum"_cs),
299 update_checksum(
"update_checksum"_cs),
300 verify_checksum_with_payload(
"verify_checksum_with_payload"_cs),
301 update_checksum_with_payload(
"update_checksum_with_payload"_cs),
302 log_msg(
"log_msg"_cs),
307 const ::P4::Model::Elem file;
308 const ::P4::Model::Elem standardMetadata;
309 const ::P4::Model::Elem intrinsicMetadata;
310 const ::P4::Model::Elem queueingMetadata;
311 const ::P4::Model::Type_Model headersType;
312 const ::P4::Model::Type_Model metadataType;
327 const ::P4::Model::Elem resubmit;
329 const ::P4::Model::Elem rangeMatchType;
330 const ::P4::Model::Elem optionalMatchType;
331 const ::P4::Model::Elem selectorMatchType;
338 const ::P4::Model::Elem drop;
339 const ::P4::Model::Elem recirculate;
340 const ::P4::Model::Elem verify_checksum;
341 const ::P4::Model::Elem update_checksum;
342 const ::P4::Model::Elem verify_checksum_with_payload;
343 const ::P4::Model::Elem update_checksum_with_payload;
344 const ::P4::Model::Elem log_msg;
348 static V1Model instance;
350 static const char *versionInitial;
351 static const char *versionCurrent;
Definition frontends/common/model.h:64
Definition frontends/p4-14/fromv1.0/v1model.h:120
Definition converters.cpp:28
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:93
Definition frontends/p4-14/fromv1.0/v1model.h:102
Definition frontends/p4-14/fromv1.0/v1model.h:194
Definition frontends/p4-14/fromv1.0/v1model.h:188
Definition frontends/p4-14/fromv1.0/v1model.h:219
Definition frontends/p4-14/fromv1.0/v1model.h:57
Definition frontends/p4-14/fromv1.0/v1model.h:157
Definition frontends/p4-14/fromv1.0/v1model.h:126
Definition frontends/p4-14/fromv1.0/v1model.h:75
Definition frontends/p4-14/fromv1.0/v1model.h:47
Definition frontends/p4-14/fromv1.0/v1model.h:152
Definition frontends/p4-14/fromv1.0/v1model.h:172
Definition frontends/p4-14/fromv1.0/v1model.h:167
Definition frontends/p4-14/fromv1.0/v1model.h:215
Definition frontends/p4-14/fromv1.0/v1model.h:162
Definition frontends/p4-14/fromv1.0/v1model.h:86
Definition frontends/p4-14/fromv1.0/v1model.h:33
Definition frontends/p4-14/fromv1.0/v1model.h:115
Definition frontends/p4-14/fromv1.0/v1model.h:139
Definition frontends/p4-14/fromv1.0/v1model.h:230
Definition frontends/p4-14/fromv1.0/v1model.h:247
Definition frontends/p4-14/fromv1.0/v1model.h:69