From c9d44bc3d1e0faeb0aef4bed8add0b387c01277e Mon Sep 17 00:00:00 2001 From: Usha Gupta Date: Wed, 15 Feb 2023 11:38:26 +0000 Subject: [PATCH] Add support for toeplitz hash --- backends/dpdk/constants.h | 2 +- backends/dpdk/dpdk.def | 8 + backends/dpdk/dpdkArch.h | 5 + backends/dpdk/dpdkHelpers.cpp | 16 +- backends/dpdk/spec.cpp | 28 +++- p4include/dpdk/pna.p4 | 7 + .../pna-example-ipsec-err3.p4-error | 4 +- .../pna-dpdk-direct-counter-err-3.p4-error | 2 +- .../p4_16_samples/pna-dpdk-toeplitz-hash-1.p4 | 120 +++++++++++++++ .../p4_16_samples/pna-dpdk-toeplitz-hash.p4 | 142 ++++++++++++++++++ .../pna-action-selector-1.p4.spec | 1 - .../pna-action-selector.p4.spec | 1 - .../pna-add-on-miss.p4.spec | 1 - .../pna-add_on_miss_action_name.p4.spec | 1 - .../pna-direction-main-parser-err.p4.spec | 1 - .../pna-direction.p4.spec | 1 - .../pna-dpdk-bvec_union.p4.spec | 1 - .../pna-dpdk-direct-counter-learner.p4.spec | 2 - .../pna-dpdk-direct-counter.p4.spec | 4 - .../pna-dpdk-direct-meter-learner.p4.spec | 2 - .../pna-dpdk-parser-state-err.p4.spec | 1 - ...-table-key-consolidation-learner-1.p4.spec | 1 - ...-table-key-consolidation-learner-3.p4.spec | 1 - ...-table-key-consolidation-learner-4.p4.spec | 1 - ...-table-key-consolidation-learner-5.p4.spec | 1 - ...-table-key-consolidation-learner-6.p4.spec | 1 - ...-table-key-consolidation-learner-7.p4.spec | 1 - .../pna-dpdk-table-key-use-annon.p4.spec | 1 - .../pna-dpdk-toeplitz-hash-1-first.p4 | 71 +++++++++ .../pna-dpdk-toeplitz-hash-1-frontend.p4 | 71 +++++++++ .../pna-dpdk-toeplitz-hash-1-midend.p4 | 93 ++++++++++++ .../pna-dpdk-toeplitz-hash-1.p4 | 71 +++++++++ .../pna-dpdk-toeplitz-hash-1.p4-error | 0 .../pna-dpdk-toeplitz-hash-1.p4-stderr | 0 .../pna-dpdk-toeplitz-hash-1.p4.bfrt.json | 5 + .../pna-dpdk-toeplitz-hash-1.p4.spec | 51 +++++++ .../pna-dpdk-toeplitz-hash-first.p4 | 84 +++++++++++ .../pna-dpdk-toeplitz-hash-frontend.p4 | 86 +++++++++++ .../pna-dpdk-toeplitz-hash-midend.p4 | 94 ++++++++++++ .../pna-dpdk-toeplitz-hash.p4 | 83 ++++++++++ .../pna-dpdk-toeplitz-hash.p4-error | 0 .../pna-dpdk-toeplitz-hash.p4-stderr | 0 .../pna-dpdk-toeplitz-hash.p4.bfrt.json | 48 ++++++ .../pna-dpdk-toeplitz-hash.p4.spec | 68 +++++++++ .../pna-dpdk-union-bmv2.p4.spec | 1 - .../pna-elim-hdr-copy-dpdk.p4.spec | 1 - .../pna-example-SelectByDirection.p4.spec | 1 - .../pna-example-SelectByDirection1.p4.spec | 1 - .../pna-example-SelectByDirection2.p4.spec | 1 - .../pna-example-bAnd-in-tableKey.p4.spec | 1 - .../pna-example-dpdk-optional.p4.spec | 1 - .../pna-example-dpdk-varbit-1.p4.spec | 1 - .../pna-example-dpdk-varbit.p4.spec | 1 - .../pna-example-header-union.p4.spec | 1 - .../pna-example-header-union1.p4.spec | 1 - .../pna-example-ipsec.p4.spec | 5 - .../pna-example-mirror-packet-1.p4.spec | 1 - .../pna-example-mirror-packet.p4.spec | 1 - .../pna-example-pass-1.p4.spec | 1 - .../pna-example-pass-2.p4.spec | 1 - .../pna-example-pass-3.p4.spec | 1 - .../pna-example-pass-parser.p4.spec | 1 - .../pna-example-pass.p4.spec | 1 - .../pna-example-recirculate.p4.spec | 1 - ...na-example-tcp-connection-tracking.p4.spec | 1 - .../pna-example-template.p4.spec | 1 - .../pna-example-tunnel.p4.spec | 1 - .../pna-example-varIndex-1.p4.spec | 1 - .../pna-example-varIndex-2.p4.spec | 1 - .../pna-example-varIndex.p4.spec | 1 - .../pna-extract-local-header.p4.spec | 1 - .../pna-issue3041.p4.spec | 1 - .../pna-lookahead-structure-bit-field.p4.spec | 1 - .../pna-lookahead-structure.p4.spec | 1 - .../pna-mux-dismantle.p4.spec | 1 - .../pna-subparser.p4.spec | 1 - .../pna-too-big-label-name-dpdk.p4.spec | 1 - .../psa-basic-counter-bmv2.p4.spec | 1 - .../psa-counter1.p4.spec | 1 - .../psa-counter2.p4.spec | 2 - .../psa-counter3.p4.spec | 2 - .../psa-counter4.p4.spec | 1 - .../psa-custom-type-counter-index.p4.spec | 1 - .../psa-end-of-ingress-test-bmv2.p4.spec | 1 - .../psa-example-dpdk-byte-alignment_1.p4.spec | 5 - .../psa-example-dpdk-byte-alignment_2.p4.spec | 5 - .../psa-example-dpdk-byte-alignment_3.p4.spec | 5 - .../psa-example-dpdk-byte-alignment_5.p4.spec | 5 - .../psa-example-dpdk-byte-alignment_6.p4.spec | 5 - .../psa-example-dpdk-byte-alignment_7.p4.spec | 5 - .../psa-example-dpdk-byte-alignment_8.p4.spec | 5 - .../psa-example-dpdk-byte-alignment_9.p4.spec | 5 - .../psa-example-dpdk-counter.p4.spec | 3 - .../psa-example-dpdk-directmeter.p4.spec | 1 - .../psa-example-dpdk-externs.p4.spec | 5 - .../psa-example-dpdk-meter.p4.spec | 1 - .../psa-example-dpdk-meter1.p4.spec | 1 - .../psa-example-parser-checksum.p4.spec | 1 - .../psa-example-register2-bmv2.p4.spec | 1 - .../p4_16_samples_outputs/psa-meter4.p4.spec | 1 - .../p4_16_samples_outputs/psa-meter5.p4.spec | 1 - .../psa-register-complex-bmv2.p4.spec | 1 - .../psa-register-read-write-2-bmv2.p4.spec | 1 - .../psa-register-read-write-bmv2.p4.spec | 1 - .../psa-register1.p4.spec | 1 - .../psa-register2.p4.spec | 1 - .../psa-register3.p4.spec | 1 - 107 files changed, 1147 insertions(+), 142 deletions(-) create mode 100644 testdata/p4_16_samples/pna-dpdk-toeplitz-hash-1.p4 create mode 100644 testdata/p4_16_samples/pna-dpdk-toeplitz-hash.p4 create mode 100644 testdata/p4_16_samples_outputs/pna-dpdk-toeplitz-hash-1-first.p4 create mode 100644 testdata/p4_16_samples_outputs/pna-dpdk-toeplitz-hash-1-frontend.p4 create mode 100644 testdata/p4_16_samples_outputs/pna-dpdk-toeplitz-hash-1-midend.p4 create mode 100644 testdata/p4_16_samples_outputs/pna-dpdk-toeplitz-hash-1.p4 create mode 100644 testdata/p4_16_samples_outputs/pna-dpdk-toeplitz-hash-1.p4-error create mode 100644 testdata/p4_16_samples_outputs/pna-dpdk-toeplitz-hash-1.p4-stderr create mode 100644 testdata/p4_16_samples_outputs/pna-dpdk-toeplitz-hash-1.p4.bfrt.json create mode 100644 testdata/p4_16_samples_outputs/pna-dpdk-toeplitz-hash-1.p4.spec create mode 100644 testdata/p4_16_samples_outputs/pna-dpdk-toeplitz-hash-first.p4 create mode 100644 testdata/p4_16_samples_outputs/pna-dpdk-toeplitz-hash-frontend.p4 create mode 100644 testdata/p4_16_samples_outputs/pna-dpdk-toeplitz-hash-midend.p4 create mode 100644 testdata/p4_16_samples_outputs/pna-dpdk-toeplitz-hash.p4 create mode 100644 testdata/p4_16_samples_outputs/pna-dpdk-toeplitz-hash.p4-error create mode 100644 testdata/p4_16_samples_outputs/pna-dpdk-toeplitz-hash.p4-stderr create mode 100644 testdata/p4_16_samples_outputs/pna-dpdk-toeplitz-hash.p4.bfrt.json create mode 100644 testdata/p4_16_samples_outputs/pna-dpdk-toeplitz-hash.p4.spec diff --git a/backends/dpdk/constants.h b/backends/dpdk/constants.h index 2c2b586d20d..220396dca60 100644 --- a/backends/dpdk/constants.h +++ b/backends/dpdk/constants.h @@ -45,7 +45,7 @@ const cstring tdiSchemaVersion = "0.1"; #define CRC3 3 #define CRC4 4 #define JHASH5 5 - +#define TOEPLITZ 6 // Initial values for group_id and member_id for action selector and action profile tables const unsigned initial_member_id = 0; const unsigned initial_group_id = 0xFFFFFFFF; diff --git a/backends/dpdk/dpdk.def b/backends/dpdk/dpdk.def index 80e7979eb78..cd1a16d6416 100644 --- a/backends/dpdk/dpdk.def +++ b/backends/dpdk/dpdk.def @@ -509,7 +509,15 @@ class DpdkChecksumClearStatement : DpdkAsmStatement, IDPDKNode { #nodbprint } +class DpdkHashDeclStatement: DpdkAsmStatement { + cstring hash; + std::ostream& toSpec(std::ostream& out) const override; +#nodbprint +} + + class DpdkGetHashStatement : DpdkAsmStatement, IDPDKNode { + cstring instr; cstring hash; Expression fields; Expression dst; diff --git a/backends/dpdk/dpdkArch.h b/backends/dpdk/dpdkArch.h index 836e040a947..fc00be092ca 100644 --- a/backends/dpdk/dpdkArch.h +++ b/backends/dpdk/dpdkArch.h @@ -679,6 +679,11 @@ class CollectExternDeclaration : public Inspector { ::error(ErrorType::ERR_EXPECTED, "%1%: expected size and optionally init_val as arguments", d); } + } else if (externTypeName == "Hash") { + if (d->arguments->size() != 1) { + ::error(ErrorType::ERR_EXPECTED, + "%1%: expected hash algorithm as the only argument", d); + } } else { // unsupported extern type return false; diff --git a/backends/dpdk/dpdkHelpers.cpp b/backends/dpdk/dpdkHelpers.cpp index 58931eceb3a..a30aa05117d 100644 --- a/backends/dpdk/dpdkHelpers.cpp +++ b/backends/dpdk/dpdkHelpers.cpp @@ -239,19 +239,24 @@ bool ConvertStatementToDpdk::preorder(const IR::AssignmentStatement *a) { auto di = e->object->to(); auto declArgs = di->arguments; if (declArgs->size() == 0) { - ::error(ErrorType::ERR_UNEXPECTED, "Expected atleast 1 argument for %1%", + ::error(ErrorType::ERR_UNEXPECTED, "Expected 1 argument for %1%", e->object->getName()); return false; } auto hash_alg = declArgs->at(0)->expression; - unsigned hashAlgValue = 0; + unsigned hashAlgValue = CRC1; + cstring hashInstr = "hash"; if (hash_alg->is()) hashAlgValue = hash_alg->to()->asUnsigned(); - cstring hashAlgName = ""; + cstring hashAlgName = "crc32"; if (hashAlgValue == JHASH0 || hashAlgValue == JHASH5) hashAlgName = "jhash"; else if (hashAlgValue >= CRC1 && hashAlgValue <= CRC4) hashAlgName = "crc32"; + else if (hashAlgValue == TOEPLITZ) { + hashAlgName = e->object->getName().name; + hashInstr = "rss"; + } IR::Vector components; IR::ListExpression *listExp = nullptr; @@ -287,7 +292,7 @@ bool ConvertStatementToDpdk::preorder(const IR::AssignmentStatement *a) { processHashParams(field, components); } listExp = new IR::ListExpression(components); - i = new IR::DpdkGetHashStatement(hashAlgName, listExp, left); + i = new IR::DpdkGetHashStatement(hashInstr, hashAlgName, listExp, left); } else if (e->expr->arguments->size() == 3) { auto maxValue = 0; auto base = (*e->expr->arguments)[0]; @@ -335,7 +340,7 @@ bool ConvertStatementToDpdk::preorder(const IR::AssignmentStatement *a) { } listExp = new IR::ListExpression(components); auto bs = base->expression->to(); - add_instr(new IR::DpdkGetHashStatement(hashAlgName, listExp, left)); + add_instr(new IR::DpdkGetHashStatement(hashInstr, hashAlgName, listExp, left)); add_instr(new IR::DpdkAndStatement(left, left, new IR::Constant(maxValue - 1))); i = new IR::DpdkAddStatement(left, left, bs); } @@ -706,6 +711,7 @@ bool ConvertStatementToDpdk::checkIfBelongToSameHdrMdStructure(const IR::Argumen sName = getHdrMdStrName(exp); } } + if (hdrStrName == "") hdrStrName = sName; else if (hdrStrName != sName) diff --git a/backends/dpdk/spec.cpp b/backends/dpdk/spec.cpp index 527c9bca3ea..c501301f7f6 100644 --- a/backends/dpdk/spec.cpp +++ b/backends/dpdk/spec.cpp @@ -35,7 +35,7 @@ std::ostream &IR::DpdkAsmProgram::toSpec(std::ostream &out) const { } for (auto s : externDeclarations) { add_comment(out, s->name.toString()); - s->toSpec(out) << std::endl; + s->toSpec(out); } for (auto a : actions) { add_comment(out, a->name.toString()); @@ -70,7 +70,23 @@ std::ostream &IR::DpdkDeclaration::toSpec(std::ostream &out) const { } std::ostream &IR::DpdkExternDeclaration::toSpec(std::ostream &out) const { - if (DPDK::toStr(getType()) == "Register") { + if (DPDK::toStr(getType()) == "Hash") { + auto args = arguments; + if (args->size() == 0) { + ::error(ErrorType::ERR_INVALID, + "Hash extern declaration %1% must contain hash algorithm \n", Name()); + } else { + auto hashAlg = args->at(0)->expression; + unsigned hashAlgValue = CRC1; + if (hashAlg->is()) + hashAlgValue = hashAlg->to()->asUnsigned(); + if (hashAlgValue == TOEPLITZ) { + auto hashDecl = new IR::DpdkHashDeclStatement(Name()); + hashDecl->toSpec(out) << std::endl; + } + } + + } else if (DPDK::toStr(getType()) == "Register") { auto args = arguments; if (args->size() == 0) { ::error(ErrorType::ERR_INVALID, @@ -552,8 +568,14 @@ std::ostream &IR::DpdkChecksumClearStatement::toSpec(std::ostream &out) const { return out; } +std::ostream &IR::DpdkHashDeclStatement::toSpec(std::ostream &out) const { + add_comment(out, hash); + out << "rss " << hash; + return out; +} + std::ostream &IR::DpdkGetHashStatement::toSpec(std::ostream &out) const { - out << "hash " << hash << " " << DPDK::toStr(dst) << " "; + out << instr << " " << hash << " " << DPDK::toStr(dst) << " "; if (auto l = fields->to()) { if (l->components.size() == 1) { out << " " << DPDK::toStr(l->components.at(0)); diff --git a/p4include/dpdk/pna.p4 b/p4include/dpdk/pna.p4 index 40119f9fe33..a8d399bf69d 100644 --- a/p4include/dpdk/pna.p4 +++ b/p4include/dpdk/pna.p4 @@ -271,6 +271,13 @@ match_kind { // BEGIN:Hash_algorithms enum PNA_HashAlgorithm_t { // TBD what this type's values will be for PNA + IDENTITY, + CRC32, + CRC32_CUSTOM, + CRC16, + CRC16_CUSTOM, + ONES_COMPLEMENT16, /// One's complement 16-bit sum used for IPv4 headers, + TOEPLITZ, TARGET_DEFAULT /// target implementation defined } // END:Hash_algorithms diff --git a/testdata/p4_16_dpdk_errors_outputs/pna-example-ipsec-err3.p4-error b/testdata/p4_16_dpdk_errors_outputs/pna-example-ipsec-err3.p4-error index 8022571555b..db64ae83898 100644 --- a/testdata/p4_16_dpdk_errors_outputs/pna-example-ipsec-err3.p4-error +++ b/testdata/p4_16_dpdk_errors_outputs/pna-example-ipsec-err3.p4-error @@ -2,11 +2,11 @@ pna-example-ipsec-err3.p4(144): [--Werror=type-error] error: ipsec.set_sa_index ipsec.set_sa_index, bit<8>>(sa_index); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ---- Actual error: -pna.p4(516): set_sa_index: 1 type parameters expected, but 2 type arguments supplied +pna.p4(523): set_sa_index: 1 type parameters expected, but 2 type arguments supplied void set_sa_index(in T sa_index); ^^^^^^^^^^^^ ---- Originating from: -pna.p4(516): Function type 'set_sa_index' does not match invocation type '' +pna.p4(523): Function type 'set_sa_index' does not match invocation type '' void set_sa_index(in T sa_index); ^^^^^^^^^^^^ pna-example-ipsec-err3.p4(144) diff --git a/testdata/p4_16_pna_errors_outputs/pna-dpdk-direct-counter-err-3.p4-error b/testdata/p4_16_pna_errors_outputs/pna-dpdk-direct-counter-err-3.p4-error index 04bc351553a..45f4b801882 100644 --- a/testdata/p4_16_pna_errors_outputs/pna-dpdk-direct-counter-err-3.p4-error +++ b/testdata/p4_16_pna_errors_outputs/pna-dpdk-direct-counter-err-3.p4-error @@ -1,3 +1,3 @@ -pna.p4(393): [--Werror=unexpected] error: count method of per_prefix_pkt_bytes_count extern can only be invoked from within action of ownertable +pna.p4(400): [--Werror=unexpected] error: count method of per_prefix_pkt_bytes_count extern can only be invoked from within action of ownertable void count(in bit<32> pkt_len); ^^^^^ diff --git a/testdata/p4_16_samples/pna-dpdk-toeplitz-hash-1.p4 b/testdata/p4_16_samples/pna-dpdk-toeplitz-hash-1.p4 new file mode 100644 index 00000000000..04020310fa7 --- /dev/null +++ b/testdata/p4_16_samples/pna-dpdk-toeplitz-hash-1.p4 @@ -0,0 +1,120 @@ +/* +Copyright 2023 Intel Corporation + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +#include +#include + + +typedef bit<48> EthernetAddress; + +header ethernet_t { + EthernetAddress dstAddr; + EthernetAddress srcAddr; + bit<16> etherType; +} + +header ipv4_t { + bit<4> version; + bit<4> ihl; + bit<8> diffserv; + bit<16> totalLen; + bit<16> identification; + bit<3> flags; + bit<13> fragOffset; + bit<8> ttl; + bit<8> protocol; + bit<16> hdrChecksum; + bit<32> srcAddr; + bit<32> dstAddr; +} + +struct main_metadata_t { + bit<32> port; + bit<32> hash; +} + +// User-defined struct containing all of those headers parsed in the +// main parser. +struct headers_t { + ethernet_t ethernet; + ipv4_t ipv4; +} + +control PreControlImpl( + in headers_t hdr, + inout main_metadata_t meta, + in pna_pre_input_metadata_t istd, + inout pna_pre_output_metadata_t ostd) +{ + apply { + } +} + +parser MainParserImpl( + packet_in pkt, + out headers_t hdr, + inout main_metadata_t main_meta, + in pna_main_parser_input_metadata_t istd) +{ + state start { + pkt.extract(hdr.ethernet); + transition select(hdr.ethernet.etherType) { + 0x0800: parse_ipv4; + default: accept; + } + } + state parse_ipv4 { + pkt.extract(hdr.ipv4); + transition accept; + } +} + +Hash>(PNA_HashAlgorithm_t.CRC32) rss0; + +control MainControlImpl( + inout headers_t hdr, // from main parser + inout main_metadata_t main_meta, // from main parser, to "next block" + in pna_main_input_metadata_t istd, + inout pna_main_output_metadata_t ostd) +{ + apply { + main_meta.hash = rss0.get_hash({hdr.ipv4.srcAddr, hdr.ipv4.dstAddr}); + main_meta.hash = main_meta.hash & 3; + main_meta.port = main_meta.hash; + } +} + +control MainDeparserImpl( + packet_out pkt, + in headers_t hdr, // from main control + in main_metadata_t user_meta, // from main control + in pna_main_output_metadata_t ostd) +{ + apply { + pkt.emit(hdr.ethernet); + pkt.emit(hdr.ipv4); + } +} + +PNA_NIC( + MainParserImpl(), + PreControlImpl(), + MainControlImpl(), + MainDeparserImpl() + // Hoping to make this optional parameter later, but not supported + // by p4c yet. + //, PreParserImpl() + ) main; diff --git a/testdata/p4_16_samples/pna-dpdk-toeplitz-hash.p4 b/testdata/p4_16_samples/pna-dpdk-toeplitz-hash.p4 new file mode 100644 index 00000000000..a0005af9398 --- /dev/null +++ b/testdata/p4_16_samples/pna-dpdk-toeplitz-hash.p4 @@ -0,0 +1,142 @@ +/* +Copyright 2023 Intel Corporation + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +#include +#include + + +typedef bit<48> EthernetAddress; + +header ethernet_t { + EthernetAddress dstAddr; + EthernetAddress srcAddr; + bit<16> etherType; +} + +header ipv4_t { + bit<4> version; + bit<4> ihl; + bit<8> diffserv; + bit<16> totalLen; + bit<16> identification; + bit<3> flags; + bit<13> fragOffset; + bit<8> ttl; + bit<8> protocol; + bit<16> hdrChecksum; + bit<32> srcAddr; + bit<32> dstAddr; +} + +struct empty_metadata_t { +} + + +////////////////////////////////////////////////////////////////////// +// Struct types for holding user-defined collections of headers and +// metadata in the P4 developer's program. +// +// Note: The names of these struct types are completely up to the P4 +// developer, as are their member fields, with the only restriction +// being that the structs intended to contain headers should only +// contain members whose types are header, header stack, or +// header_union. +////////////////////////////////////////////////////////////////////// + +struct main_metadata_t { + // empty for this skeleton + bit<16> data; +} + +// User-defined struct containing all of those headers parsed in the +// main parser. +struct headers_t { + ethernet_t ethernet; + ipv4_t ipv4; +} + +control PreControlImpl( + in headers_t hdr, + inout main_metadata_t meta, + in pna_pre_input_metadata_t istd, + inout pna_pre_output_metadata_t ostd) +{ + apply { + } +} + +parser MainParserImpl( + packet_in pkt, + out headers_t hdr, + inout main_metadata_t main_meta, + in pna_main_parser_input_metadata_t istd) +{ + state start { + pkt.extract(hdr.ethernet); + transition select(hdr.ethernet.etherType) { + 0x0800: parse_ipv4; + default: accept; + } + } + state parse_ipv4 { + pkt.extract(hdr.ipv4); + transition accept; + } +} + +control MainControlImpl( + inout headers_t hdr, // from main parser + inout main_metadata_t user_meta, // from main parser, to "next block" + in pna_main_input_metadata_t istd, + inout pna_main_output_metadata_t ostd) +{ + Hash>(PNA_HashAlgorithm_t.TOEPLITZ) h; + action a1() { + user_meta.data = h.get_hash(hdr.ethernet); + } + table tbl { + key = { + hdr.ethernet.srcAddr : exact; + } + actions = { NoAction; a1; } + } + + apply { + tbl.apply(); + } +} + +control MainDeparserImpl( + packet_out pkt, + in headers_t hdr, // from main control + in main_metadata_t user_meta, // from main control + in pna_main_output_metadata_t ostd) +{ + apply { + pkt.emit(hdr.ethernet); + pkt.emit(hdr.ipv4); + } +} + +PNA_NIC( + MainParserImpl(), + PreControlImpl(), + MainControlImpl(), + MainDeparserImpl() + // Hoping to make this optional parameter later, but not supported + // by p4c yet. + //, PreParserImpl() + ) main; diff --git a/testdata/p4_16_samples_outputs/pna-action-selector-1.p4.spec b/testdata/p4_16_samples_outputs/pna-action-selector-1.p4.spec index a3147881a0b..1748c833028 100644 --- a/testdata/p4_16_samples_outputs/pna-action-selector-1.p4.spec +++ b/testdata/p4_16_samples_outputs/pna-action-selector-1.p4.spec @@ -52,7 +52,6 @@ header ethernet instanceof ethernet_t header ipv4 instanceof ipv4_t regarray direction size 0x100 initval 0 - action a1 args instanceof a1_arg_t { mov h.ethernet.dstAddr t.param return diff --git a/testdata/p4_16_samples_outputs/pna-action-selector.p4.spec b/testdata/p4_16_samples_outputs/pna-action-selector.p4.spec index d647e762b12..689d6c1475c 100644 --- a/testdata/p4_16_samples_outputs/pna-action-selector.p4.spec +++ b/testdata/p4_16_samples_outputs/pna-action-selector.p4.spec @@ -48,7 +48,6 @@ header ethernet instanceof ethernet_t header ipv4 instanceof ipv4_t regarray direction size 0x100 initval 0 - action NoAction args none { return } diff --git a/testdata/p4_16_samples_outputs/pna-add-on-miss.p4.spec b/testdata/p4_16_samples_outputs/pna-add-on-miss.p4.spec index f8adec4f997..340c6b40aa9 100644 --- a/testdata/p4_16_samples_outputs/pna-add-on-miss.p4.spec +++ b/testdata/p4_16_samples_outputs/pna-add-on-miss.p4.spec @@ -41,7 +41,6 @@ header ethernet instanceof ethernet_t header ipv4 instanceof ipv4_t regarray direction size 0x100 initval 0 - action next_hop args instanceof next_hop_arg_t { mov m.pna_main_output_metadata_output_port t.vport return diff --git a/testdata/p4_16_samples_outputs/pna-add_on_miss_action_name.p4.spec b/testdata/p4_16_samples_outputs/pna-add_on_miss_action_name.p4.spec index b49f6d80d32..74bb463c221 100644 --- a/testdata/p4_16_samples_outputs/pna-add_on_miss_action_name.p4.spec +++ b/testdata/p4_16_samples_outputs/pna-add_on_miss_action_name.p4.spec @@ -39,7 +39,6 @@ header ethernet instanceof ethernet_t header ipv4 instanceof ipv4_t regarray direction size 0x100 initval 0 - action ct_next_hop_0 args instanceof ct_next_hop_0_arg_t { mov m.pna_main_output_metadata_output_port t.vport return diff --git a/testdata/p4_16_samples_outputs/pna-direction-main-parser-err.p4.spec b/testdata/p4_16_samples_outputs/pna-direction-main-parser-err.p4.spec index 64b40de5f33..bf0d916a71d 100644 --- a/testdata/p4_16_samples_outputs/pna-direction-main-parser-err.p4.spec +++ b/testdata/p4_16_samples_outputs/pna-direction-main-parser-err.p4.spec @@ -38,7 +38,6 @@ header ethernet instanceof ethernet_t header ipv4 instanceof ipv4_t regarray direction size 0x100 initval 0 - action next_hop_0 args instanceof next_hop_0_arg_t { mov m.pna_main_output_metadata_output_port t.vport return diff --git a/testdata/p4_16_samples_outputs/pna-direction.p4.spec b/testdata/p4_16_samples_outputs/pna-direction.p4.spec index 6f7a350226e..390337bc10c 100644 --- a/testdata/p4_16_samples_outputs/pna-direction.p4.spec +++ b/testdata/p4_16_samples_outputs/pna-direction.p4.spec @@ -36,7 +36,6 @@ header ethernet instanceof ethernet_t header ipv4 instanceof ipv4_t regarray direction size 0x100 initval 0 - action next_hop args instanceof next_hop_arg_t { mov m.pna_main_output_metadata_output_port t.vport return diff --git a/testdata/p4_16_samples_outputs/pna-dpdk-bvec_union.p4.spec b/testdata/p4_16_samples_outputs/pna-dpdk-bvec_union.p4.spec index 8af96d58af4..8a1c57cac09 100644 --- a/testdata/p4_16_samples_outputs/pna-dpdk-bvec_union.p4.spec +++ b/testdata/p4_16_samples_outputs/pna-dpdk-bvec_union.p4.spec @@ -30,7 +30,6 @@ struct Meta { metadata instanceof Meta regarray direction size 0x100 initval 0 - apply { rx m.pna_main_input_metadata_input_port extract h.h1 diff --git a/testdata/p4_16_samples_outputs/pna-dpdk-direct-counter-learner.p4.spec b/testdata/p4_16_samples_outputs/pna-dpdk-direct-counter-learner.p4.spec index 0853e009b50..a0df44d21c6 100644 --- a/testdata/p4_16_samples_outputs/pna-dpdk-direct-counter-learner.p4.spec +++ b/testdata/p4_16_samples_outputs/pna-dpdk-direct-counter-learner.p4.spec @@ -45,9 +45,7 @@ header ipv4 instanceof ipv4_t regarray per_prefix_pkt_bytes_count_0_packets size 0x40001 initval 0x0 regarray per_prefix_pkt_bytes_count_0_bytes size 0x40001 initval 0x0 - regarray direction size 0x100 initval 0 - action next_hop args instanceof next_hop_arg_t { mov m.pna_main_output_metadata_output_port t.vport return diff --git a/testdata/p4_16_samples_outputs/pna-dpdk-direct-counter.p4.spec b/testdata/p4_16_samples_outputs/pna-dpdk-direct-counter.p4.spec index 60753da6e5d..782b60fb210 100644 --- a/testdata/p4_16_samples_outputs/pna-dpdk-direct-counter.p4.spec +++ b/testdata/p4_16_samples_outputs/pna-dpdk-direct-counter.p4.spec @@ -33,15 +33,11 @@ header ethernet instanceof ethernet_t header ipv4 instanceof ipv4_t regarray per_prefix_bytes_count_0 size 0x401 initval 0x0 - regarray per_prefix_pkt_bytes_count_0_packets size 0x401 initval 0x0 regarray per_prefix_pkt_bytes_count_0_bytes size 0x401 initval 0x0 - regarray per_prefix_pkt_count_0 size 0x401 initval 0x0 - regarray direction size 0x100 initval 0 - action count_1 args none { jmpneq LABEL_END m.local_metadata_data 0x8 entryid m.table_entry_index diff --git a/testdata/p4_16_samples_outputs/pna-dpdk-direct-meter-learner.p4.spec b/testdata/p4_16_samples_outputs/pna-dpdk-direct-meter-learner.p4.spec index 5517faf819d..b53338ceae3 100644 --- a/testdata/p4_16_samples_outputs/pna-dpdk-direct-meter-learner.p4.spec +++ b/testdata/p4_16_samples_outputs/pna-dpdk-direct-meter-learner.p4.spec @@ -47,9 +47,7 @@ header ethernet instanceof ethernet_t header ipv4 instanceof ipv4_t metarray meter0_0 size 0x40001 - regarray direction size 0x100 initval 0 - action next_hop args instanceof next_hop_arg_t { mov m.pna_main_output_metadata_output_port t.vport return diff --git a/testdata/p4_16_samples_outputs/pna-dpdk-parser-state-err.p4.spec b/testdata/p4_16_samples_outputs/pna-dpdk-parser-state-err.p4.spec index 44ca5b0e9bf..937903e206b 100644 --- a/testdata/p4_16_samples_outputs/pna-dpdk-parser-state-err.p4.spec +++ b/testdata/p4_16_samples_outputs/pna-dpdk-parser-state-err.p4.spec @@ -70,7 +70,6 @@ header ipv4 instanceof ipv4_t header tcp instanceof tcp_t regarray direction size 0x100 initval 0 - action do_range_checks_1 args instanceof do_range_checks_1_arg_t { jmpgt LABEL_FALSE_2 t.min1 h.tcp.srcPort jmpgt LABEL_FALSE_2 h.tcp.srcPort t.max1 diff --git a/testdata/p4_16_samples_outputs/pna-dpdk-table-key-consolidation-learner-1.p4.spec b/testdata/p4_16_samples_outputs/pna-dpdk-table-key-consolidation-learner-1.p4.spec index 012da806b55..ec262280c17 100644 --- a/testdata/p4_16_samples_outputs/pna-dpdk-table-key-consolidation-learner-1.p4.spec +++ b/testdata/p4_16_samples_outputs/pna-dpdk-table-key-consolidation-learner-1.p4.spec @@ -43,7 +43,6 @@ header ethernet instanceof ethernet_t header ipv4 instanceof ipv4_t regarray direction size 0x100 initval 0 - action next_hop args instanceof next_hop_arg_t { mov m.pna_main_output_metadata_output_port t.vport return diff --git a/testdata/p4_16_samples_outputs/pna-dpdk-table-key-consolidation-learner-3.p4.spec b/testdata/p4_16_samples_outputs/pna-dpdk-table-key-consolidation-learner-3.p4.spec index 3d5173b3129..bd9ce788bc2 100644 --- a/testdata/p4_16_samples_outputs/pna-dpdk-table-key-consolidation-learner-3.p4.spec +++ b/testdata/p4_16_samples_outputs/pna-dpdk-table-key-consolidation-learner-3.p4.spec @@ -41,7 +41,6 @@ header ethernet instanceof ethernet_t header ipv4 instanceof ipv4_t regarray direction size 0x100 initval 0 - action next_hop args instanceof next_hop_arg_t { mov m.pna_main_output_metadata_output_port t.vport return diff --git a/testdata/p4_16_samples_outputs/pna-dpdk-table-key-consolidation-learner-4.p4.spec b/testdata/p4_16_samples_outputs/pna-dpdk-table-key-consolidation-learner-4.p4.spec index cb07e9661c3..a51de78a616 100644 --- a/testdata/p4_16_samples_outputs/pna-dpdk-table-key-consolidation-learner-4.p4.spec +++ b/testdata/p4_16_samples_outputs/pna-dpdk-table-key-consolidation-learner-4.p4.spec @@ -45,7 +45,6 @@ header ethernet instanceof ethernet_t header ipv4 instanceof ipv4_t regarray direction size 0x100 initval 0 - action next_hop args instanceof next_hop_arg_t { mov m.pna_main_output_metadata_output_port t.vport return diff --git a/testdata/p4_16_samples_outputs/pna-dpdk-table-key-consolidation-learner-5.p4.spec b/testdata/p4_16_samples_outputs/pna-dpdk-table-key-consolidation-learner-5.p4.spec index 42c25cce25b..bec16a60086 100644 --- a/testdata/p4_16_samples_outputs/pna-dpdk-table-key-consolidation-learner-5.p4.spec +++ b/testdata/p4_16_samples_outputs/pna-dpdk-table-key-consolidation-learner-5.p4.spec @@ -44,7 +44,6 @@ header ethernet instanceof ethernet_t header ipv4 instanceof ipv4_t regarray direction size 0x100 initval 0 - action next_hop args instanceof next_hop_arg_t { mov m.pna_main_output_metadata_output_port t.vport return diff --git a/testdata/p4_16_samples_outputs/pna-dpdk-table-key-consolidation-learner-6.p4.spec b/testdata/p4_16_samples_outputs/pna-dpdk-table-key-consolidation-learner-6.p4.spec index b4351774159..64ec89d0c13 100644 --- a/testdata/p4_16_samples_outputs/pna-dpdk-table-key-consolidation-learner-6.p4.spec +++ b/testdata/p4_16_samples_outputs/pna-dpdk-table-key-consolidation-learner-6.p4.spec @@ -44,7 +44,6 @@ header ethernet instanceof ethernet_t header ipv4 instanceof ipv4_t regarray direction size 0x100 initval 0 - action next_hop args instanceof next_hop_arg_t { mov m.pna_main_output_metadata_output_port t.vport return diff --git a/testdata/p4_16_samples_outputs/pna-dpdk-table-key-consolidation-learner-7.p4.spec b/testdata/p4_16_samples_outputs/pna-dpdk-table-key-consolidation-learner-7.p4.spec index a9a08f77c20..c2b04fcf7a8 100644 --- a/testdata/p4_16_samples_outputs/pna-dpdk-table-key-consolidation-learner-7.p4.spec +++ b/testdata/p4_16_samples_outputs/pna-dpdk-table-key-consolidation-learner-7.p4.spec @@ -46,7 +46,6 @@ header ethernet instanceof ethernet_t header ipv4 instanceof ipv4_t regarray direction size 0x100 initval 0 - action next_hop args instanceof next_hop_arg_t { mov m.pna_main_output_metadata_output_port t.vport return diff --git a/testdata/p4_16_samples_outputs/pna-dpdk-table-key-use-annon.p4.spec b/testdata/p4_16_samples_outputs/pna-dpdk-table-key-use-annon.p4.spec index 26aadd0ba0b..59f01987a7a 100644 --- a/testdata/p4_16_samples_outputs/pna-dpdk-table-key-use-annon.p4.spec +++ b/testdata/p4_16_samples_outputs/pna-dpdk-table-key-use-annon.p4.spec @@ -42,7 +42,6 @@ header ethernet instanceof ethernet_t header ipv4 instanceof ipv4_t regarray direction size 0x100 initval 0 - action next_hop args instanceof next_hop_arg_t { mov m.pna_main_output_metadata_output_port t.vport return diff --git a/testdata/p4_16_samples_outputs/pna-dpdk-toeplitz-hash-1-first.p4 b/testdata/p4_16_samples_outputs/pna-dpdk-toeplitz-hash-1-first.p4 new file mode 100644 index 00000000000..c404328fefe --- /dev/null +++ b/testdata/p4_16_samples_outputs/pna-dpdk-toeplitz-hash-1-first.p4 @@ -0,0 +1,71 @@ +#include +#include + +typedef bit<48> EthernetAddress; +header ethernet_t { + EthernetAddress dstAddr; + EthernetAddress srcAddr; + bit<16> etherType; +} + +header ipv4_t { + bit<4> version; + bit<4> ihl; + bit<8> diffserv; + bit<16> totalLen; + bit<16> identification; + bit<3> flags; + bit<13> fragOffset; + bit<8> ttl; + bit<8> protocol; + bit<16> hdrChecksum; + bit<32> srcAddr; + bit<32> dstAddr; +} + +struct main_metadata_t { + bit<32> port; + bit<32> hash; +} + +struct headers_t { + ethernet_t ethernet; + ipv4_t ipv4; +} + +control PreControlImpl(in headers_t hdr, inout main_metadata_t meta, in pna_pre_input_metadata_t istd, inout pna_pre_output_metadata_t ostd) { + apply { + } +} + +parser MainParserImpl(packet_in pkt, out headers_t hdr, inout main_metadata_t main_meta, in pna_main_parser_input_metadata_t istd) { + state start { + pkt.extract(hdr.ethernet); + transition select(hdr.ethernet.etherType) { + 16w0x800: parse_ipv4; + default: accept; + } + } + state parse_ipv4 { + pkt.extract(hdr.ipv4); + transition accept; + } +} + +Hash>(PNA_HashAlgorithm_t.CRC32) rss0; +control MainControlImpl(inout headers_t hdr, inout main_metadata_t main_meta, in pna_main_input_metadata_t istd, inout pna_main_output_metadata_t ostd) { + apply { + main_meta.hash = rss0.get_hash, bit<32>>>({ hdr.ipv4.srcAddr, hdr.ipv4.dstAddr }); + main_meta.hash = main_meta.hash & 32w3; + main_meta.port = main_meta.hash; + } +} + +control MainDeparserImpl(packet_out pkt, in headers_t hdr, in main_metadata_t user_meta, in pna_main_output_metadata_t ostd) { + apply { + pkt.emit(hdr.ethernet); + pkt.emit(hdr.ipv4); + } +} + +PNA_NIC(MainParserImpl(), PreControlImpl(), MainControlImpl(), MainDeparserImpl()) main; diff --git a/testdata/p4_16_samples_outputs/pna-dpdk-toeplitz-hash-1-frontend.p4 b/testdata/p4_16_samples_outputs/pna-dpdk-toeplitz-hash-1-frontend.p4 new file mode 100644 index 00000000000..c404328fefe --- /dev/null +++ b/testdata/p4_16_samples_outputs/pna-dpdk-toeplitz-hash-1-frontend.p4 @@ -0,0 +1,71 @@ +#include +#include + +typedef bit<48> EthernetAddress; +header ethernet_t { + EthernetAddress dstAddr; + EthernetAddress srcAddr; + bit<16> etherType; +} + +header ipv4_t { + bit<4> version; + bit<4> ihl; + bit<8> diffserv; + bit<16> totalLen; + bit<16> identification; + bit<3> flags; + bit<13> fragOffset; + bit<8> ttl; + bit<8> protocol; + bit<16> hdrChecksum; + bit<32> srcAddr; + bit<32> dstAddr; +} + +struct main_metadata_t { + bit<32> port; + bit<32> hash; +} + +struct headers_t { + ethernet_t ethernet; + ipv4_t ipv4; +} + +control PreControlImpl(in headers_t hdr, inout main_metadata_t meta, in pna_pre_input_metadata_t istd, inout pna_pre_output_metadata_t ostd) { + apply { + } +} + +parser MainParserImpl(packet_in pkt, out headers_t hdr, inout main_metadata_t main_meta, in pna_main_parser_input_metadata_t istd) { + state start { + pkt.extract(hdr.ethernet); + transition select(hdr.ethernet.etherType) { + 16w0x800: parse_ipv4; + default: accept; + } + } + state parse_ipv4 { + pkt.extract(hdr.ipv4); + transition accept; + } +} + +Hash>(PNA_HashAlgorithm_t.CRC32) rss0; +control MainControlImpl(inout headers_t hdr, inout main_metadata_t main_meta, in pna_main_input_metadata_t istd, inout pna_main_output_metadata_t ostd) { + apply { + main_meta.hash = rss0.get_hash, bit<32>>>({ hdr.ipv4.srcAddr, hdr.ipv4.dstAddr }); + main_meta.hash = main_meta.hash & 32w3; + main_meta.port = main_meta.hash; + } +} + +control MainDeparserImpl(packet_out pkt, in headers_t hdr, in main_metadata_t user_meta, in pna_main_output_metadata_t ostd) { + apply { + pkt.emit(hdr.ethernet); + pkt.emit(hdr.ipv4); + } +} + +PNA_NIC(MainParserImpl(), PreControlImpl(), MainControlImpl(), MainDeparserImpl()) main; diff --git a/testdata/p4_16_samples_outputs/pna-dpdk-toeplitz-hash-1-midend.p4 b/testdata/p4_16_samples_outputs/pna-dpdk-toeplitz-hash-1-midend.p4 new file mode 100644 index 00000000000..b0f70b210f7 --- /dev/null +++ b/testdata/p4_16_samples_outputs/pna-dpdk-toeplitz-hash-1-midend.p4 @@ -0,0 +1,93 @@ +#include +#include + +header ethernet_t { + bit<48> dstAddr; + bit<48> srcAddr; + bit<16> etherType; +} + +header ipv4_t { + bit<4> version; + bit<4> ihl; + bit<8> diffserv; + bit<16> totalLen; + bit<16> identification; + bit<3> flags; + bit<13> fragOffset; + bit<8> ttl; + bit<8> protocol; + bit<16> hdrChecksum; + bit<32> srcAddr; + bit<32> dstAddr; +} + +struct main_metadata_t { + bit<32> port; + bit<32> hash; +} + +struct headers_t { + ethernet_t ethernet; + ipv4_t ipv4; +} + +control PreControlImpl(in headers_t hdr, inout main_metadata_t meta, in pna_pre_input_metadata_t istd, inout pna_pre_output_metadata_t ostd) { + apply { + } +} + +parser MainParserImpl(packet_in pkt, out headers_t hdr, inout main_metadata_t main_meta, in pna_main_parser_input_metadata_t istd) { + state start { + pkt.extract(hdr.ethernet); + transition select(hdr.ethernet.etherType) { + 16w0x800: parse_ipv4; + default: accept; + } + } + state parse_ipv4 { + pkt.extract(hdr.ipv4); + transition accept; + } +} + +Hash>(PNA_HashAlgorithm_t.CRC32) rss0; +struct tuple_0 { + bit<32> f0; + bit<32> f1; +} + +control MainControlImpl(inout headers_t hdr, inout main_metadata_t main_meta, in pna_main_input_metadata_t istd, inout pna_main_output_metadata_t ostd) { + @hidden action pnadpdktoeplitzhash1l94() { + main_meta.hash = rss0.get_hash((tuple_0){f0 = hdr.ipv4.srcAddr,f1 = hdr.ipv4.dstAddr}); + main_meta.hash = main_meta.hash & 32w3; + main_meta.port = main_meta.hash; + } + @hidden table tbl_pnadpdktoeplitzhash1l94 { + actions = { + pnadpdktoeplitzhash1l94(); + } + const default_action = pnadpdktoeplitzhash1l94(); + } + apply { + tbl_pnadpdktoeplitzhash1l94.apply(); + } +} + +control MainDeparserImpl(packet_out pkt, in headers_t hdr, in main_metadata_t user_meta, in pna_main_output_metadata_t ostd) { + @hidden action pnadpdktoeplitzhash1l107() { + pkt.emit(hdr.ethernet); + pkt.emit(hdr.ipv4); + } + @hidden table tbl_pnadpdktoeplitzhash1l107 { + actions = { + pnadpdktoeplitzhash1l107(); + } + const default_action = pnadpdktoeplitzhash1l107(); + } + apply { + tbl_pnadpdktoeplitzhash1l107.apply(); + } +} + +PNA_NIC(MainParserImpl(), PreControlImpl(), MainControlImpl(), MainDeparserImpl()) main; diff --git a/testdata/p4_16_samples_outputs/pna-dpdk-toeplitz-hash-1.p4 b/testdata/p4_16_samples_outputs/pna-dpdk-toeplitz-hash-1.p4 new file mode 100644 index 00000000000..d849d281957 --- /dev/null +++ b/testdata/p4_16_samples_outputs/pna-dpdk-toeplitz-hash-1.p4 @@ -0,0 +1,71 @@ +#include +#include + +typedef bit<48> EthernetAddress; +header ethernet_t { + EthernetAddress dstAddr; + EthernetAddress srcAddr; + bit<16> etherType; +} + +header ipv4_t { + bit<4> version; + bit<4> ihl; + bit<8> diffserv; + bit<16> totalLen; + bit<16> identification; + bit<3> flags; + bit<13> fragOffset; + bit<8> ttl; + bit<8> protocol; + bit<16> hdrChecksum; + bit<32> srcAddr; + bit<32> dstAddr; +} + +struct main_metadata_t { + bit<32> port; + bit<32> hash; +} + +struct headers_t { + ethernet_t ethernet; + ipv4_t ipv4; +} + +control PreControlImpl(in headers_t hdr, inout main_metadata_t meta, in pna_pre_input_metadata_t istd, inout pna_pre_output_metadata_t ostd) { + apply { + } +} + +parser MainParserImpl(packet_in pkt, out headers_t hdr, inout main_metadata_t main_meta, in pna_main_parser_input_metadata_t istd) { + state start { + pkt.extract(hdr.ethernet); + transition select(hdr.ethernet.etherType) { + 0x800: parse_ipv4; + default: accept; + } + } + state parse_ipv4 { + pkt.extract(hdr.ipv4); + transition accept; + } +} + +Hash>(PNA_HashAlgorithm_t.CRC32) rss0; +control MainControlImpl(inout headers_t hdr, inout main_metadata_t main_meta, in pna_main_input_metadata_t istd, inout pna_main_output_metadata_t ostd) { + apply { + main_meta.hash = rss0.get_hash({ hdr.ipv4.srcAddr, hdr.ipv4.dstAddr }); + main_meta.hash = main_meta.hash & 3; + main_meta.port = main_meta.hash; + } +} + +control MainDeparserImpl(packet_out pkt, in headers_t hdr, in main_metadata_t user_meta, in pna_main_output_metadata_t ostd) { + apply { + pkt.emit(hdr.ethernet); + pkt.emit(hdr.ipv4); + } +} + +PNA_NIC(MainParserImpl(), PreControlImpl(), MainControlImpl(), MainDeparserImpl()) main; diff --git a/testdata/p4_16_samples_outputs/pna-dpdk-toeplitz-hash-1.p4-error b/testdata/p4_16_samples_outputs/pna-dpdk-toeplitz-hash-1.p4-error new file mode 100644 index 00000000000..e69de29bb2d diff --git a/testdata/p4_16_samples_outputs/pna-dpdk-toeplitz-hash-1.p4-stderr b/testdata/p4_16_samples_outputs/pna-dpdk-toeplitz-hash-1.p4-stderr new file mode 100644 index 00000000000..e69de29bb2d diff --git a/testdata/p4_16_samples_outputs/pna-dpdk-toeplitz-hash-1.p4.bfrt.json b/testdata/p4_16_samples_outputs/pna-dpdk-toeplitz-hash-1.p4.bfrt.json new file mode 100644 index 00000000000..b6d66a630db --- /dev/null +++ b/testdata/p4_16_samples_outputs/pna-dpdk-toeplitz-hash-1.p4.bfrt.json @@ -0,0 +1,5 @@ +{ + "schema_version" : "1.0.0", + "tables" : [], + "learn_filters" : [] +} \ No newline at end of file diff --git a/testdata/p4_16_samples_outputs/pna-dpdk-toeplitz-hash-1.p4.spec b/testdata/p4_16_samples_outputs/pna-dpdk-toeplitz-hash-1.p4.spec new file mode 100644 index 00000000000..4559be69c4f --- /dev/null +++ b/testdata/p4_16_samples_outputs/pna-dpdk-toeplitz-hash-1.p4.spec @@ -0,0 +1,51 @@ + +struct ethernet_t { + bit<48> dstAddr + bit<48> srcAddr + bit<16> etherType +} + +struct ipv4_t { + bit<8> version_ihl + bit<8> diffserv + bit<16> totalLen + bit<16> identification + bit<16> flags_fragOffset + bit<8> ttl + bit<8> protocol + bit<16> hdrChecksum + bit<32> srcAddr + bit<32> dstAddr +} + +struct main_metadata_t { + bit<32> pna_main_input_metadata_input_port + bit<32> local_metadata_port + bit<32> local_metadata_hash + bit<32> pna_main_output_metadata_output_port + bit<32> MainControlT_tmp + bit<32> MainControlT_tmp_0 +} +metadata instanceof main_metadata_t + +header ethernet instanceof ethernet_t +header ipv4 instanceof ipv4_t + +regarray direction size 0x100 initval 0 +apply { + rx m.pna_main_input_metadata_input_port + extract h.ethernet + jmpeq MAINPARSERIMPL_PARSE_IPV4 h.ethernet.etherType 0x800 + jmp MAINPARSERIMPL_ACCEPT + MAINPARSERIMPL_PARSE_IPV4 : extract h.ipv4 + MAINPARSERIMPL_ACCEPT : mov m.MainControlT_tmp h.ipv4.srcAddr + mov m.MainControlT_tmp_0 h.ipv4.dstAddr + hash crc32 m.local_metadata_hash m.MainControlT_tmp m.MainControlT_tmp_0 + and m.local_metadata_hash 0x3 + mov m.local_metadata_port m.local_metadata_hash + emit h.ethernet + emit h.ipv4 + tx m.pna_main_output_metadata_output_port +} + + diff --git a/testdata/p4_16_samples_outputs/pna-dpdk-toeplitz-hash-first.p4 b/testdata/p4_16_samples_outputs/pna-dpdk-toeplitz-hash-first.p4 new file mode 100644 index 00000000000..669850b42c3 --- /dev/null +++ b/testdata/p4_16_samples_outputs/pna-dpdk-toeplitz-hash-first.p4 @@ -0,0 +1,84 @@ +#include +#include + +typedef bit<48> EthernetAddress; +header ethernet_t { + EthernetAddress dstAddr; + EthernetAddress srcAddr; + bit<16> etherType; +} + +header ipv4_t { + bit<4> version; + bit<4> ihl; + bit<8> diffserv; + bit<16> totalLen; + bit<16> identification; + bit<3> flags; + bit<13> fragOffset; + bit<8> ttl; + bit<8> protocol; + bit<16> hdrChecksum; + bit<32> srcAddr; + bit<32> dstAddr; +} + +struct empty_metadata_t { +} + +struct main_metadata_t { + bit<16> data; +} + +struct headers_t { + ethernet_t ethernet; + ipv4_t ipv4; +} + +control PreControlImpl(in headers_t hdr, inout main_metadata_t meta, in pna_pre_input_metadata_t istd, inout pna_pre_output_metadata_t ostd) { + apply { + } +} + +parser MainParserImpl(packet_in pkt, out headers_t hdr, inout main_metadata_t main_meta, in pna_main_parser_input_metadata_t istd) { + state start { + pkt.extract(hdr.ethernet); + transition select(hdr.ethernet.etherType) { + 16w0x800: parse_ipv4; + default: accept; + } + } + state parse_ipv4 { + pkt.extract(hdr.ipv4); + transition accept; + } +} + +control MainControlImpl(inout headers_t hdr, inout main_metadata_t user_meta, in pna_main_input_metadata_t istd, inout pna_main_output_metadata_t ostd) { + Hash>(PNA_HashAlgorithm_t.TOEPLITZ) h; + action a1() { + user_meta.data = h.get_hash(hdr.ethernet); + } + table tbl { + key = { + hdr.ethernet.srcAddr: exact @name("hdr.ethernet.srcAddr"); + } + actions = { + NoAction(); + a1(); + } + default_action = NoAction(); + } + apply { + tbl.apply(); + } +} + +control MainDeparserImpl(packet_out pkt, in headers_t hdr, in main_metadata_t user_meta, in pna_main_output_metadata_t ostd) { + apply { + pkt.emit(hdr.ethernet); + pkt.emit(hdr.ipv4); + } +} + +PNA_NIC(MainParserImpl(), PreControlImpl(), MainControlImpl(), MainDeparserImpl()) main; diff --git a/testdata/p4_16_samples_outputs/pna-dpdk-toeplitz-hash-frontend.p4 b/testdata/p4_16_samples_outputs/pna-dpdk-toeplitz-hash-frontend.p4 new file mode 100644 index 00000000000..c11e9ee0645 --- /dev/null +++ b/testdata/p4_16_samples_outputs/pna-dpdk-toeplitz-hash-frontend.p4 @@ -0,0 +1,86 @@ +#include +#include + +typedef bit<48> EthernetAddress; +header ethernet_t { + EthernetAddress dstAddr; + EthernetAddress srcAddr; + bit<16> etherType; +} + +header ipv4_t { + bit<4> version; + bit<4> ihl; + bit<8> diffserv; + bit<16> totalLen; + bit<16> identification; + bit<3> flags; + bit<13> fragOffset; + bit<8> ttl; + bit<8> protocol; + bit<16> hdrChecksum; + bit<32> srcAddr; + bit<32> dstAddr; +} + +struct empty_metadata_t { +} + +struct main_metadata_t { + bit<16> data; +} + +struct headers_t { + ethernet_t ethernet; + ipv4_t ipv4; +} + +control PreControlImpl(in headers_t hdr, inout main_metadata_t meta, in pna_pre_input_metadata_t istd, inout pna_pre_output_metadata_t ostd) { + apply { + } +} + +parser MainParserImpl(packet_in pkt, out headers_t hdr, inout main_metadata_t main_meta, in pna_main_parser_input_metadata_t istd) { + state start { + pkt.extract(hdr.ethernet); + transition select(hdr.ethernet.etherType) { + 16w0x800: parse_ipv4; + default: accept; + } + } + state parse_ipv4 { + pkt.extract(hdr.ipv4); + transition accept; + } +} + +control MainControlImpl(inout headers_t hdr, inout main_metadata_t user_meta, in pna_main_input_metadata_t istd, inout pna_main_output_metadata_t ostd) { + @noWarn("unused") @name(".NoAction") action NoAction_1() { + } + @name("MainControlImpl.h") Hash>(PNA_HashAlgorithm_t.TOEPLITZ) h_0; + @name("MainControlImpl.a1") action a1() { + user_meta.data = h_0.get_hash(hdr.ethernet); + } + @name("MainControlImpl.tbl") table tbl_0 { + key = { + hdr.ethernet.srcAddr: exact @name("hdr.ethernet.srcAddr"); + } + actions = { + NoAction_1(); + a1(); + } + default_action = NoAction_1(); + } + apply { + tbl_0.apply(); + } +} + +control MainDeparserImpl(packet_out pkt, in headers_t hdr, in main_metadata_t user_meta, in pna_main_output_metadata_t ostd) { + apply { + pkt.emit(hdr.ethernet); + pkt.emit(hdr.ipv4); + } +} + +PNA_NIC(MainParserImpl(), PreControlImpl(), MainControlImpl(), MainDeparserImpl()) main; diff --git a/testdata/p4_16_samples_outputs/pna-dpdk-toeplitz-hash-midend.p4 b/testdata/p4_16_samples_outputs/pna-dpdk-toeplitz-hash-midend.p4 new file mode 100644 index 00000000000..74281ea6707 --- /dev/null +++ b/testdata/p4_16_samples_outputs/pna-dpdk-toeplitz-hash-midend.p4 @@ -0,0 +1,94 @@ +#include +#include + +header ethernet_t { + bit<48> dstAddr; + bit<48> srcAddr; + bit<16> etherType; +} + +header ipv4_t { + bit<4> version; + bit<4> ihl; + bit<8> diffserv; + bit<16> totalLen; + bit<16> identification; + bit<3> flags; + bit<13> fragOffset; + bit<8> ttl; + bit<8> protocol; + bit<16> hdrChecksum; + bit<32> srcAddr; + bit<32> dstAddr; +} + +struct empty_metadata_t { +} + +struct main_metadata_t { + bit<16> data; +} + +struct headers_t { + ethernet_t ethernet; + ipv4_t ipv4; +} + +control PreControlImpl(in headers_t hdr, inout main_metadata_t meta, in pna_pre_input_metadata_t istd, inout pna_pre_output_metadata_t ostd) { + apply { + } +} + +parser MainParserImpl(packet_in pkt, out headers_t hdr, inout main_metadata_t main_meta, in pna_main_parser_input_metadata_t istd) { + state start { + pkt.extract(hdr.ethernet); + transition select(hdr.ethernet.etherType) { + 16w0x800: parse_ipv4; + default: accept; + } + } + state parse_ipv4 { + pkt.extract(hdr.ipv4); + transition accept; + } +} + +control MainControlImpl(inout headers_t hdr, inout main_metadata_t user_meta, in pna_main_input_metadata_t istd, inout pna_main_output_metadata_t ostd) { + @noWarn("unused") @name(".NoAction") action NoAction_1() { + } + @name("MainControlImpl.h") Hash>(PNA_HashAlgorithm_t.TOEPLITZ) h_0; + @name("MainControlImpl.a1") action a1() { + user_meta.data = h_0.get_hash(hdr.ethernet); + } + @name("MainControlImpl.tbl") table tbl_0 { + key = { + hdr.ethernet.srcAddr: exact @name("hdr.ethernet.srcAddr"); + } + actions = { + NoAction_1(); + a1(); + } + default_action = NoAction_1(); + } + apply { + tbl_0.apply(); + } +} + +control MainDeparserImpl(packet_out pkt, in headers_t hdr, in main_metadata_t user_meta, in pna_main_output_metadata_t ostd) { + @hidden action pnadpdktoeplitzhash129() { + pkt.emit(hdr.ethernet); + pkt.emit(hdr.ipv4); + } + @hidden table tbl_pnadpdktoeplitzhash129 { + actions = { + pnadpdktoeplitzhash129(); + } + const default_action = pnadpdktoeplitzhash129(); + } + apply { + tbl_pnadpdktoeplitzhash129.apply(); + } +} + +PNA_NIC(MainParserImpl(), PreControlImpl(), MainControlImpl(), MainDeparserImpl()) main; diff --git a/testdata/p4_16_samples_outputs/pna-dpdk-toeplitz-hash.p4 b/testdata/p4_16_samples_outputs/pna-dpdk-toeplitz-hash.p4 new file mode 100644 index 00000000000..4e2bc878a41 --- /dev/null +++ b/testdata/p4_16_samples_outputs/pna-dpdk-toeplitz-hash.p4 @@ -0,0 +1,83 @@ +#include +#include + +typedef bit<48> EthernetAddress; +header ethernet_t { + EthernetAddress dstAddr; + EthernetAddress srcAddr; + bit<16> etherType; +} + +header ipv4_t { + bit<4> version; + bit<4> ihl; + bit<8> diffserv; + bit<16> totalLen; + bit<16> identification; + bit<3> flags; + bit<13> fragOffset; + bit<8> ttl; + bit<8> protocol; + bit<16> hdrChecksum; + bit<32> srcAddr; + bit<32> dstAddr; +} + +struct empty_metadata_t { +} + +struct main_metadata_t { + bit<16> data; +} + +struct headers_t { + ethernet_t ethernet; + ipv4_t ipv4; +} + +control PreControlImpl(in headers_t hdr, inout main_metadata_t meta, in pna_pre_input_metadata_t istd, inout pna_pre_output_metadata_t ostd) { + apply { + } +} + +parser MainParserImpl(packet_in pkt, out headers_t hdr, inout main_metadata_t main_meta, in pna_main_parser_input_metadata_t istd) { + state start { + pkt.extract(hdr.ethernet); + transition select(hdr.ethernet.etherType) { + 0x800: parse_ipv4; + default: accept; + } + } + state parse_ipv4 { + pkt.extract(hdr.ipv4); + transition accept; + } +} + +control MainControlImpl(inout headers_t hdr, inout main_metadata_t user_meta, in pna_main_input_metadata_t istd, inout pna_main_output_metadata_t ostd) { + Hash>(PNA_HashAlgorithm_t.TOEPLITZ) h; + action a1() { + user_meta.data = h.get_hash(hdr.ethernet); + } + table tbl { + key = { + hdr.ethernet.srcAddr: exact; + } + actions = { + NoAction; + a1; + } + } + apply { + tbl.apply(); + } +} + +control MainDeparserImpl(packet_out pkt, in headers_t hdr, in main_metadata_t user_meta, in pna_main_output_metadata_t ostd) { + apply { + pkt.emit(hdr.ethernet); + pkt.emit(hdr.ipv4); + } +} + +PNA_NIC(MainParserImpl(), PreControlImpl(), MainControlImpl(), MainDeparserImpl()) main; diff --git a/testdata/p4_16_samples_outputs/pna-dpdk-toeplitz-hash.p4-error b/testdata/p4_16_samples_outputs/pna-dpdk-toeplitz-hash.p4-error new file mode 100644 index 00000000000..e69de29bb2d diff --git a/testdata/p4_16_samples_outputs/pna-dpdk-toeplitz-hash.p4-stderr b/testdata/p4_16_samples_outputs/pna-dpdk-toeplitz-hash.p4-stderr new file mode 100644 index 00000000000..e69de29bb2d diff --git a/testdata/p4_16_samples_outputs/pna-dpdk-toeplitz-hash.p4.bfrt.json b/testdata/p4_16_samples_outputs/pna-dpdk-toeplitz-hash.p4.bfrt.json new file mode 100644 index 00000000000..76c8f8abac9 --- /dev/null +++ b/testdata/p4_16_samples_outputs/pna-dpdk-toeplitz-hash.p4.bfrt.json @@ -0,0 +1,48 @@ +{ + "schema_version" : "1.0.0", + "tables" : [ + { + "name" : "pipe.MainControlImpl.tbl", + "id" : 40555198, + "table_type" : "MatchAction_Direct", + "size" : 1024, + "annotations" : [], + "depends_on" : [], + "has_const_default_action" : false, + "key" : [ + { + "id" : 1, + "name" : "hdr.ethernet.srcAddr", + "repeated" : false, + "annotations" : [], + "mandatory" : false, + "match_type" : "Exact", + "type" : { + "type" : "bytes", + "width" : 48 + } + } + ], + "action_specs" : [ + { + "id" : 21257015, + "name" : "NoAction", + "action_scope" : "TableAndDefault", + "annotations" : [], + "data" : [] + }, + { + "id" : 21288828, + "name" : "MainControlImpl.a1", + "action_scope" : "TableAndDefault", + "annotations" : [], + "data" : [] + } + ], + "data" : [], + "supported_operations" : [], + "attributes" : ["EntryScope"] + } + ], + "learn_filters" : [] +} \ No newline at end of file diff --git a/testdata/p4_16_samples_outputs/pna-dpdk-toeplitz-hash.p4.spec b/testdata/p4_16_samples_outputs/pna-dpdk-toeplitz-hash.p4.spec new file mode 100644 index 00000000000..31dd3282bd7 --- /dev/null +++ b/testdata/p4_16_samples_outputs/pna-dpdk-toeplitz-hash.p4.spec @@ -0,0 +1,68 @@ + + +struct ethernet_t { + bit<48> dstAddr + bit<48> srcAddr + bit<16> etherType +} + +struct ipv4_t { + bit<8> version_ihl + bit<8> diffserv + bit<16> totalLen + bit<16> identification + bit<16> flags_fragOffset + bit<8> ttl + bit<8> protocol + bit<16> hdrChecksum + bit<32> srcAddr + bit<32> dstAddr +} + +struct main_metadata_t { + bit<32> pna_main_input_metadata_input_port + bit<16> local_metadata_data + bit<32> pna_main_output_metadata_output_port +} +metadata instanceof main_metadata_t + +header ethernet instanceof ethernet_t +header ipv4 instanceof ipv4_t + +rss h_0 +regarray direction size 0x100 initval 0 +action NoAction args none { + return +} + +action a1 args none { + rss h_0 m.local_metadata_data h.ethernet.dstAddr h.ethernet.etherType + return +} + +table tbl { + key { + h.ethernet.srcAddr exact + } + actions { + NoAction + a1 + } + default_action NoAction args none + size 0x10000 +} + + +apply { + rx m.pna_main_input_metadata_input_port + extract h.ethernet + jmpeq MAINPARSERIMPL_PARSE_IPV4 h.ethernet.etherType 0x800 + jmp MAINPARSERIMPL_ACCEPT + MAINPARSERIMPL_PARSE_IPV4 : extract h.ipv4 + MAINPARSERIMPL_ACCEPT : table tbl + emit h.ethernet + emit h.ipv4 + tx m.pna_main_output_metadata_output_port +} + + diff --git a/testdata/p4_16_samples_outputs/pna-dpdk-union-bmv2.p4.spec b/testdata/p4_16_samples_outputs/pna-dpdk-union-bmv2.p4.spec index 3ba490cc692..2c1d137ec2d 100644 --- a/testdata/p4_16_samples_outputs/pna-dpdk-union-bmv2.p4.spec +++ b/testdata/p4_16_samples_outputs/pna-dpdk-union-bmv2.p4.spec @@ -18,7 +18,6 @@ struct Meta { metadata instanceof Meta regarray direction size 0x100 initval 0 - apply { rx m.pna_main_input_metadata_input_port extract h.h1 diff --git a/testdata/p4_16_samples_outputs/pna-elim-hdr-copy-dpdk.p4.spec b/testdata/p4_16_samples_outputs/pna-elim-hdr-copy-dpdk.p4.spec index 5e8fd448358..5773fa5b560 100644 --- a/testdata/p4_16_samples_outputs/pna-elim-hdr-copy-dpdk.p4.spec +++ b/testdata/p4_16_samples_outputs/pna-elim-hdr-copy-dpdk.p4.spec @@ -35,7 +35,6 @@ header ipv4 instanceof ipv4_t header ethernet1 instanceof ethernet_t regarray direction size 0x100 initval 0 - action next_hop args instanceof next_hop_arg_t { jmpnv LABEL_FALSE_1 h.ethernet validate h.ethernet1 diff --git a/testdata/p4_16_samples_outputs/pna-example-SelectByDirection.p4.spec b/testdata/p4_16_samples_outputs/pna-example-SelectByDirection.p4.spec index 0c3b6df27c9..3354bfef448 100644 --- a/testdata/p4_16_samples_outputs/pna-example-SelectByDirection.p4.spec +++ b/testdata/p4_16_samples_outputs/pna-example-SelectByDirection.p4.spec @@ -34,7 +34,6 @@ header ethernet instanceof ethernet_t header ipv4 instanceof ipv4_t regarray direction size 0x100 initval 0 - action next_hop args instanceof next_hop_arg_t { mov m.pna_main_output_metadata_output_port t.vport return diff --git a/testdata/p4_16_samples_outputs/pna-example-SelectByDirection1.p4.spec b/testdata/p4_16_samples_outputs/pna-example-SelectByDirection1.p4.spec index cf134753e12..901bd142b72 100644 --- a/testdata/p4_16_samples_outputs/pna-example-SelectByDirection1.p4.spec +++ b/testdata/p4_16_samples_outputs/pna-example-SelectByDirection1.p4.spec @@ -34,7 +34,6 @@ header ethernet instanceof ethernet_t header ipv4 instanceof ipv4_t regarray direction size 0x100 initval 0 - action next_hop args instanceof next_hop_arg_t { mov m.pna_main_output_metadata_output_port t.vport return diff --git a/testdata/p4_16_samples_outputs/pna-example-SelectByDirection2.p4.spec b/testdata/p4_16_samples_outputs/pna-example-SelectByDirection2.p4.spec index 1a938cb649d..4be17f1b35d 100644 --- a/testdata/p4_16_samples_outputs/pna-example-SelectByDirection2.p4.spec +++ b/testdata/p4_16_samples_outputs/pna-example-SelectByDirection2.p4.spec @@ -35,7 +35,6 @@ header ethernet instanceof ethernet_t header ipv4 instanceof ipv4_t regarray direction size 0x100 initval 0 - action forward args instanceof forward_arg_t { mov m.local_metadata_meta t.addr return diff --git a/testdata/p4_16_samples_outputs/pna-example-bAnd-in-tableKey.p4.spec b/testdata/p4_16_samples_outputs/pna-example-bAnd-in-tableKey.p4.spec index f26c52f45fc..66217b835f4 100644 --- a/testdata/p4_16_samples_outputs/pna-example-bAnd-in-tableKey.p4.spec +++ b/testdata/p4_16_samples_outputs/pna-example-bAnd-in-tableKey.p4.spec @@ -33,7 +33,6 @@ header ethernet instanceof ethernet_t header ipv4 instanceof ipv4_t regarray direction size 0x100 initval 0 - action next_hop args instanceof next_hop_arg_t { mov m.pna_main_output_metadata_output_port t.vport return diff --git a/testdata/p4_16_samples_outputs/pna-example-dpdk-optional.p4.spec b/testdata/p4_16_samples_outputs/pna-example-dpdk-optional.p4.spec index e45458bb815..d1c8daf8ed0 100644 --- a/testdata/p4_16_samples_outputs/pna-example-dpdk-optional.p4.spec +++ b/testdata/p4_16_samples_outputs/pna-example-dpdk-optional.p4.spec @@ -32,7 +32,6 @@ header ethernet instanceof ethernet_t header ipv4 instanceof ipv4_t regarray direction size 0x100 initval 0 - action next_hop args instanceof next_hop_arg_t { mov m.pna_main_output_metadata_output_port t.vport return diff --git a/testdata/p4_16_samples_outputs/pna-example-dpdk-varbit-1.p4.spec b/testdata/p4_16_samples_outputs/pna-example-dpdk-varbit-1.p4.spec index e91d1c51130..e6c1151fb53 100644 --- a/testdata/p4_16_samples_outputs/pna-example-dpdk-varbit-1.p4.spec +++ b/testdata/p4_16_samples_outputs/pna-example-dpdk-varbit-1.p4.spec @@ -56,7 +56,6 @@ header MainParserT_parser_tmp instanceof option_t header MainParserT_parser_lookahead_0 instanceof lookahead_tmp_hdr regarray direction size 0x100 initval 0 - action NoAction args none { return } diff --git a/testdata/p4_16_samples_outputs/pna-example-dpdk-varbit.p4.spec b/testdata/p4_16_samples_outputs/pna-example-dpdk-varbit.p4.spec index ac23bfc10a8..378161f7e0c 100644 --- a/testdata/p4_16_samples_outputs/pna-example-dpdk-varbit.p4.spec +++ b/testdata/p4_16_samples_outputs/pna-example-dpdk-varbit.p4.spec @@ -58,7 +58,6 @@ header MainParserT_parser_tmp_hdr instanceof option_t header MainParserT_parser_lookahead_0 instanceof lookahead_tmp_hdr regarray direction size 0x100 initval 0 - action NoAction args none { return } diff --git a/testdata/p4_16_samples_outputs/pna-example-header-union.p4.spec b/testdata/p4_16_samples_outputs/pna-example-header-union.p4.spec index f1ba0c762c1..bf3c6225340 100644 --- a/testdata/p4_16_samples_outputs/pna-example-header-union.p4.spec +++ b/testdata/p4_16_samples_outputs/pna-example-header-union.p4.spec @@ -25,7 +25,6 @@ struct metadata { metadata instanceof metadata regarray direction size 0x100 initval 0 - action NoAction args none { return } diff --git a/testdata/p4_16_samples_outputs/pna-example-header-union1.p4.spec b/testdata/p4_16_samples_outputs/pna-example-header-union1.p4.spec index 2c7e1657ca7..76ace7fee55 100644 --- a/testdata/p4_16_samples_outputs/pna-example-header-union1.p4.spec +++ b/testdata/p4_16_samples_outputs/pna-example-header-union1.p4.spec @@ -29,7 +29,6 @@ struct metadata { metadata instanceof metadata regarray direction size 0x100 initval 0 - action NoAction args none { return } diff --git a/testdata/p4_16_samples_outputs/pna-example-ipsec.p4.spec b/testdata/p4_16_samples_outputs/pna-example-ipsec.p4.spec index a8650432bcb..73b171492a0 100644 --- a/testdata/p4_16_samples_outputs/pna-example-ipsec.p4.spec +++ b/testdata/p4_16_samples_outputs/pna-example-ipsec.p4.spec @@ -77,15 +77,10 @@ struct metadata_t { metadata instanceof metadata_t regarray ipsec_port_out_inbound size 0x1 initval 0 - regarray ipsec_port_out_outbound size 0x1 initval 0 - regarray ipsec_port_in_inbound size 0x1 initval 0 - regarray ipsec_port_in_outbound size 0x1 initval 0 - regarray direction size 0x100 initval 0 - action ipsec_enable args instanceof ipsec_enable_arg_t { validate h.ipsec_hdr mov h.ipsec_hdr.sa_id t.sa_index diff --git a/testdata/p4_16_samples_outputs/pna-example-mirror-packet-1.p4.spec b/testdata/p4_16_samples_outputs/pna-example-mirror-packet-1.p4.spec index f92f9891f1f..d5e258ff1db 100644 --- a/testdata/p4_16_samples_outputs/pna-example-mirror-packet-1.p4.spec +++ b/testdata/p4_16_samples_outputs/pna-example-mirror-packet-1.p4.spec @@ -40,7 +40,6 @@ struct main_metadata_t { metadata instanceof main_metadata_t regarray direction size 0x100 initval 0 - action NoAction args none { return } diff --git a/testdata/p4_16_samples_outputs/pna-example-mirror-packet.p4.spec b/testdata/p4_16_samples_outputs/pna-example-mirror-packet.p4.spec index ccf592e46b5..f216b5bf8e1 100644 --- a/testdata/p4_16_samples_outputs/pna-example-mirror-packet.p4.spec +++ b/testdata/p4_16_samples_outputs/pna-example-mirror-packet.p4.spec @@ -39,7 +39,6 @@ struct main_metadata_t { metadata instanceof main_metadata_t regarray direction size 0x100 initval 0 - action NoAction args none { return } diff --git a/testdata/p4_16_samples_outputs/pna-example-pass-1.p4.spec b/testdata/p4_16_samples_outputs/pna-example-pass-1.p4.spec index 6ea6274437d..c2e7552874b 100644 --- a/testdata/p4_16_samples_outputs/pna-example-pass-1.p4.spec +++ b/testdata/p4_16_samples_outputs/pna-example-pass-1.p4.spec @@ -37,7 +37,6 @@ header ipv4 instanceof ipv4_t header udp instanceof udp_t regarray direction size 0x100 initval 0 - apply { rx m.pna_main_input_metadata_input_port extract h.ethernet diff --git a/testdata/p4_16_samples_outputs/pna-example-pass-2.p4.spec b/testdata/p4_16_samples_outputs/pna-example-pass-2.p4.spec index cb7bd9cf9b0..2958c87e507 100644 --- a/testdata/p4_16_samples_outputs/pna-example-pass-2.p4.spec +++ b/testdata/p4_16_samples_outputs/pna-example-pass-2.p4.spec @@ -35,7 +35,6 @@ header ethernet instanceof ethernet_t header ipv4 instanceof ipv4_t regarray direction size 0x100 initval 0 - action next_hop args instanceof next_hop_arg_t { recircid m.pna_main_input_metadata_pass jmpneq LABEL_FALSE_1 m.pna_main_input_metadata_pass 0x0 diff --git a/testdata/p4_16_samples_outputs/pna-example-pass-3.p4.spec b/testdata/p4_16_samples_outputs/pna-example-pass-3.p4.spec index 452468e3ea4..cdbac78ca8e 100644 --- a/testdata/p4_16_samples_outputs/pna-example-pass-3.p4.spec +++ b/testdata/p4_16_samples_outputs/pna-example-pass-3.p4.spec @@ -39,7 +39,6 @@ header ipv4 instanceof ipv4_t header udp instanceof udp_t regarray direction size 0x100 initval 0 - apply { rx m.pna_main_input_metadata_input_port extract h.ethernet diff --git a/testdata/p4_16_samples_outputs/pna-example-pass-parser.p4.spec b/testdata/p4_16_samples_outputs/pna-example-pass-parser.p4.spec index b540eac4b61..5828e4958e3 100644 --- a/testdata/p4_16_samples_outputs/pna-example-pass-parser.p4.spec +++ b/testdata/p4_16_samples_outputs/pna-example-pass-parser.p4.spec @@ -42,7 +42,6 @@ header ipv4 instanceof ipv4_t header udp instanceof udp_t regarray direction size 0x100 initval 0 - apply { rx m.pna_main_input_metadata_input_port extract h.ethernet diff --git a/testdata/p4_16_samples_outputs/pna-example-pass.p4.spec b/testdata/p4_16_samples_outputs/pna-example-pass.p4.spec index 5fa853c7eed..d88afc0e370 100644 --- a/testdata/p4_16_samples_outputs/pna-example-pass.p4.spec +++ b/testdata/p4_16_samples_outputs/pna-example-pass.p4.spec @@ -37,7 +37,6 @@ header ipv4 instanceof ipv4_t header udp instanceof udp_t regarray direction size 0x100 initval 0 - apply { rx m.pna_main_input_metadata_input_port extract h.ethernet diff --git a/testdata/p4_16_samples_outputs/pna-example-recirculate.p4.spec b/testdata/p4_16_samples_outputs/pna-example-recirculate.p4.spec index 5a24e088cd3..679bb640da3 100644 --- a/testdata/p4_16_samples_outputs/pna-example-recirculate.p4.spec +++ b/testdata/p4_16_samples_outputs/pna-example-recirculate.p4.spec @@ -37,7 +37,6 @@ header ipv4 instanceof ipv4_t header udp instanceof udp_t regarray direction size 0x100 initval 0 - apply { rx m.pna_main_input_metadata_input_port extract h.ethernet diff --git a/testdata/p4_16_samples_outputs/pna-example-tcp-connection-tracking.p4.spec b/testdata/p4_16_samples_outputs/pna-example-tcp-connection-tracking.p4.spec index 6b163fa192f..4fae7ec7de5 100644 --- a/testdata/p4_16_samples_outputs/pna-example-tcp-connection-tracking.p4.spec +++ b/testdata/p4_16_samples_outputs/pna-example-tcp-connection-tracking.p4.spec @@ -55,7 +55,6 @@ header ipv4 instanceof ipv4_t header tcp instanceof tcp_t regarray direction size 0x100 initval 0 - action tcp_syn_packet args none { mov m.MainControlT_do_add_on_miss 1 mov m.MainControlT_update_aging_info 1 diff --git a/testdata/p4_16_samples_outputs/pna-example-template.p4.spec b/testdata/p4_16_samples_outputs/pna-example-template.p4.spec index 990eeab0eb2..cd4c58975c0 100644 --- a/testdata/p4_16_samples_outputs/pna-example-template.p4.spec +++ b/testdata/p4_16_samples_outputs/pna-example-template.p4.spec @@ -32,7 +32,6 @@ header ethernet instanceof ethernet_t header ipv4 instanceof ipv4_t regarray direction size 0x100 initval 0 - action next_hop args instanceof next_hop_arg_t { mov m.pna_main_output_metadata_output_port t.vport return diff --git a/testdata/p4_16_samples_outputs/pna-example-tunnel.p4.spec b/testdata/p4_16_samples_outputs/pna-example-tunnel.p4.spec index f554733e73f..964f5909cf8 100644 --- a/testdata/p4_16_samples_outputs/pna-example-tunnel.p4.spec +++ b/testdata/p4_16_samples_outputs/pna-example-tunnel.p4.spec @@ -49,7 +49,6 @@ struct local_metadata_t { metadata instanceof local_metadata_t regarray direction size 0x100 initval 0 - action NoAction args none { return } diff --git a/testdata/p4_16_samples_outputs/pna-example-varIndex-1.p4.spec b/testdata/p4_16_samples_outputs/pna-example-varIndex-1.p4.spec index 085fdff1db2..09d08550494 100644 --- a/testdata/p4_16_samples_outputs/pna-example-varIndex-1.p4.spec +++ b/testdata/p4_16_samples_outputs/pna-example-varIndex-1.p4.spec @@ -56,7 +56,6 @@ struct main_metadata_t { metadata instanceof main_metadata_t regarray direction size 0x100 initval 0 - action execute_1 args none { jmpneq LABEL_FALSE_2 m.local_metadata_depth 0x0 mov m.MainControlT_tmp_1 m.local_metadata_depth diff --git a/testdata/p4_16_samples_outputs/pna-example-varIndex-2.p4.spec b/testdata/p4_16_samples_outputs/pna-example-varIndex-2.p4.spec index 2eaaf064b11..749f33eb425 100644 --- a/testdata/p4_16_samples_outputs/pna-example-varIndex-2.p4.spec +++ b/testdata/p4_16_samples_outputs/pna-example-varIndex-2.p4.spec @@ -51,7 +51,6 @@ struct main_metadata_t { metadata instanceof main_metadata_t regarray direction size 0x100 initval 0 - action execute_1 args none { jmpneq LABEL_FALSE_1 m.local_metadata_depth 0x0 mov m.MainControlT_tmp_7 h.vlan_tag_0.pcp_cfi_vid diff --git a/testdata/p4_16_samples_outputs/pna-example-varIndex.p4.spec b/testdata/p4_16_samples_outputs/pna-example-varIndex.p4.spec index 5c4cc7bf1e0..58fc43312c6 100644 --- a/testdata/p4_16_samples_outputs/pna-example-varIndex.p4.spec +++ b/testdata/p4_16_samples_outputs/pna-example-varIndex.p4.spec @@ -62,7 +62,6 @@ struct main_metadata_t { metadata instanceof main_metadata_t regarray direction size 0x100 initval 0 - action execute_1 args none { mov m.MainControlT_tmp_1 m.local_metadata_depth add m.MainControlT_tmp_1 0x3 diff --git a/testdata/p4_16_samples_outputs/pna-extract-local-header.p4.spec b/testdata/p4_16_samples_outputs/pna-extract-local-header.p4.spec index 50d8ffdd6ec..5ed680164c7 100644 --- a/testdata/p4_16_samples_outputs/pna-extract-local-header.p4.spec +++ b/testdata/p4_16_samples_outputs/pna-extract-local-header.p4.spec @@ -16,7 +16,6 @@ header h2 instanceof my_header_t header MainParserT_parser_local_hdr instanceof my_header_t regarray direction size 0x100 initval 0 - apply { rx m.pna_main_input_metadata_input_port invalidate h.MainParserT_parser_local_hdr diff --git a/testdata/p4_16_samples_outputs/pna-issue3041.p4.spec b/testdata/p4_16_samples_outputs/pna-issue3041.p4.spec index 97e8144fb30..e1685e9e263 100644 --- a/testdata/p4_16_samples_outputs/pna-issue3041.p4.spec +++ b/testdata/p4_16_samples_outputs/pna-issue3041.p4.spec @@ -55,7 +55,6 @@ header ipv4_option_timestamp instanceof ipv4_option_timestamp_t header option instanceof option_t regarray direction size 0x100 initval 0 - action NoAction args none { return } diff --git a/testdata/p4_16_samples_outputs/pna-lookahead-structure-bit-field.p4.spec b/testdata/p4_16_samples_outputs/pna-lookahead-structure-bit-field.p4.spec index fee49fa0439..32bdf33ac77 100644 --- a/testdata/p4_16_samples_outputs/pna-lookahead-structure-bit-field.p4.spec +++ b/testdata/p4_16_samples_outputs/pna-lookahead-structure-bit-field.p4.spec @@ -26,7 +26,6 @@ header h2 instanceof header2_t header MainParserT_parser_lookahead_0 instanceof lookahead_tmp_hdr regarray direction size 0x100 initval 0 - apply { rx m.pna_main_input_metadata_input_port lookahead h.MainParserT_parser_lookahead_0 diff --git a/testdata/p4_16_samples_outputs/pna-lookahead-structure.p4.spec b/testdata/p4_16_samples_outputs/pna-lookahead-structure.p4.spec index 11e8d6e4e28..3306fda76a5 100644 --- a/testdata/p4_16_samples_outputs/pna-lookahead-structure.p4.spec +++ b/testdata/p4_16_samples_outputs/pna-lookahead-structure.p4.spec @@ -40,7 +40,6 @@ header MainParserT_parser_lookahead_0 instanceof lookahead_tmp_hdr header MainParserT_parser_lookahead_1 instanceof lookahead_tmp_hdr_0 regarray direction size 0x100 initval 0 - apply { rx m.pna_main_input_metadata_input_port lookahead h.MainParserT_parser_lookahead_1 diff --git a/testdata/p4_16_samples_outputs/pna-mux-dismantle.p4.spec b/testdata/p4_16_samples_outputs/pna-mux-dismantle.p4.spec index 7ba04dcd6cc..acb49a44094 100644 --- a/testdata/p4_16_samples_outputs/pna-mux-dismantle.p4.spec +++ b/testdata/p4_16_samples_outputs/pna-mux-dismantle.p4.spec @@ -70,7 +70,6 @@ header ipv4 instanceof ipv4_t header tcp instanceof tcp_t regarray direction size 0x100 initval 0 - action do_range_checks_1 args instanceof do_range_checks_1_arg_t { jmpgt LABEL_FALSE_1 t.min1 h.tcp.srcPort jmpgt LABEL_FALSE_1 h.tcp.srcPort t.max1 diff --git a/testdata/p4_16_samples_outputs/pna-subparser.p4.spec b/testdata/p4_16_samples_outputs/pna-subparser.p4.spec index 4b5d1448bde..d9155786296 100644 --- a/testdata/p4_16_samples_outputs/pna-subparser.p4.spec +++ b/testdata/p4_16_samples_outputs/pna-subparser.p4.spec @@ -28,7 +28,6 @@ header ethernet instanceof ethernet_t header ipv4 instanceof ipv4_t regarray direction size 0x100 initval 0 - apply { rx m.pna_main_input_metadata_input_port invalidate h.ethernet diff --git a/testdata/p4_16_samples_outputs/pna-too-big-label-name-dpdk.p4.spec b/testdata/p4_16_samples_outputs/pna-too-big-label-name-dpdk.p4.spec index 279e7597f6b..4cf2dfd90ad 100644 --- a/testdata/p4_16_samples_outputs/pna-too-big-label-name-dpdk.p4.spec +++ b/testdata/p4_16_samples_outputs/pna-too-big-label-name-dpdk.p4.spec @@ -35,7 +35,6 @@ header ipv4 instanceof ipv4_dddddddddddddddddddddddddddddddddddddddddd_t header ethernet1 instanceof ethernet_t regarray direction size 0x100 initval 0 - action next_hop args instanceof next_hop_arg_t { jmpnv LABEL_FALSE_1 h.ethernet validate h.ethernet1 diff --git a/testdata/p4_16_samples_outputs/psa-basic-counter-bmv2.p4.spec b/testdata/p4_16_samples_outputs/psa-basic-counter-bmv2.p4.spec index 1ae75c8f278..a9656e45e85 100644 --- a/testdata/p4_16_samples_outputs/psa-basic-counter-bmv2.p4.spec +++ b/testdata/p4_16_samples_outputs/psa-basic-counter-bmv2.p4.spec @@ -40,7 +40,6 @@ metadata instanceof metadata_t header ethernet instanceof ethernet_t regarray counter_0 size 0x400 initval 0x0 - action execute_1 args none { regadd counter_0 0x100 1 return diff --git a/testdata/p4_16_samples_outputs/psa-counter1.p4.spec b/testdata/p4_16_samples_outputs/psa-counter1.p4.spec index 44712ba9a7a..530342a5b92 100644 --- a/testdata/p4_16_samples_outputs/psa-counter1.p4.spec +++ b/testdata/p4_16_samples_outputs/psa-counter1.p4.spec @@ -36,7 +36,6 @@ metadata instanceof EMPTY header ethernet instanceof ethernet_t regarray counter_0 size 0x400 initval 0x0 - action NoAction args none { return } diff --git a/testdata/p4_16_samples_outputs/psa-counter2.p4.spec b/testdata/p4_16_samples_outputs/psa-counter2.p4.spec index 5632123204b..aca13c24be3 100644 --- a/testdata/p4_16_samples_outputs/psa-counter2.p4.spec +++ b/testdata/p4_16_samples_outputs/psa-counter2.p4.spec @@ -37,9 +37,7 @@ metadata instanceof EMPTY header ethernet instanceof ethernet_t regarray counter0_0 size 0x400 initval 0x0 - regarray counter1_0 size 0x400 initval 0x0 - action NoAction args none { return } diff --git a/testdata/p4_16_samples_outputs/psa-counter3.p4.spec b/testdata/p4_16_samples_outputs/psa-counter3.p4.spec index 6fafc512ee7..5d7d0c6bd78 100644 --- a/testdata/p4_16_samples_outputs/psa-counter3.p4.spec +++ b/testdata/p4_16_samples_outputs/psa-counter3.p4.spec @@ -37,9 +37,7 @@ metadata instanceof EMPTY header ethernet instanceof ethernet_t regarray counter0_0 size 0x400 initval 0x0 - regarray counter1_0 size 0x400 initval 0x0 - apply { rx m.psa_ingress_input_metadata_ingress_port mov m.psa_ingress_output_metadata_drop 0x1 diff --git a/testdata/p4_16_samples_outputs/psa-counter4.p4.spec b/testdata/p4_16_samples_outputs/psa-counter4.p4.spec index 14a3b60ddd0..5f77ee329e7 100644 --- a/testdata/p4_16_samples_outputs/psa-counter4.p4.spec +++ b/testdata/p4_16_samples_outputs/psa-counter4.p4.spec @@ -36,7 +36,6 @@ metadata instanceof EMPTY header ethernet instanceof ethernet_t regarray counter0_0 size 0x10001 initval 0x0 - action NoAction args none { return } diff --git a/testdata/p4_16_samples_outputs/psa-custom-type-counter-index.p4.spec b/testdata/p4_16_samples_outputs/psa-custom-type-counter-index.p4.spec index 44712ba9a7a..530342a5b92 100644 --- a/testdata/p4_16_samples_outputs/psa-custom-type-counter-index.p4.spec +++ b/testdata/p4_16_samples_outputs/psa-custom-type-counter-index.p4.spec @@ -36,7 +36,6 @@ metadata instanceof EMPTY header ethernet instanceof ethernet_t regarray counter_0 size 0x400 initval 0x0 - action NoAction args none { return } diff --git a/testdata/p4_16_samples_outputs/psa-end-of-ingress-test-bmv2.p4.spec b/testdata/p4_16_samples_outputs/psa-end-of-ingress-test-bmv2.p4.spec index e189f610d36..398086801db 100644 --- a/testdata/p4_16_samples_outputs/psa-end-of-ingress-test-bmv2.p4.spec +++ b/testdata/p4_16_samples_outputs/psa-end-of-ingress-test-bmv2.p4.spec @@ -57,7 +57,6 @@ header ethernet instanceof ethernet_t header output_data instanceof output_data_t regarray egress_pkt_seen_0 size 0x100 initval 0 - apply { rx m.psa_ingress_input_metadata_ingress_port mov m.psa_ingress_output_metadata_drop 0x1 diff --git a/testdata/p4_16_samples_outputs/psa-example-dpdk-byte-alignment_1.p4.spec b/testdata/p4_16_samples_outputs/psa-example-dpdk-byte-alignment_1.p4.spec index 12027068c71..bf114b1037d 100644 --- a/testdata/p4_16_samples_outputs/psa-example-dpdk-byte-alignment_1.p4.spec +++ b/testdata/p4_16_samples_outputs/psa-example-dpdk-byte-alignment_1.p4.spec @@ -86,15 +86,10 @@ header ipv4 instanceof ipv4_t regarray counter0_0_packets size 0x400 initval 0x0 regarray counter0_0_bytes size 0x400 initval 0x0 - regarray counter1_0 size 0x400 initval 0x0 - regarray counter2_0 size 0x400 initval 0x0 - regarray reg_0 size 0x400 initval 0 - metarray meter0_0 size 0x400 - action NoAction args none { return } diff --git a/testdata/p4_16_samples_outputs/psa-example-dpdk-byte-alignment_2.p4.spec b/testdata/p4_16_samples_outputs/psa-example-dpdk-byte-alignment_2.p4.spec index 28e4619079e..8d171cc9ea4 100644 --- a/testdata/p4_16_samples_outputs/psa-example-dpdk-byte-alignment_2.p4.spec +++ b/testdata/p4_16_samples_outputs/psa-example-dpdk-byte-alignment_2.p4.spec @@ -83,15 +83,10 @@ header ipv4 instanceof ipv4_t regarray counter0_0_packets size 0x400 initval 0x0 regarray counter0_0_bytes size 0x400 initval 0x0 - regarray counter1_0 size 0x400 initval 0x0 - regarray counter2_0 size 0x400 initval 0x0 - regarray reg_0 size 0x400 initval 0 - metarray meter0_0 size 0x400 - action NoAction args none { return } diff --git a/testdata/p4_16_samples_outputs/psa-example-dpdk-byte-alignment_3.p4.spec b/testdata/p4_16_samples_outputs/psa-example-dpdk-byte-alignment_3.p4.spec index da5aae2fb6e..bf602dec035 100644 --- a/testdata/p4_16_samples_outputs/psa-example-dpdk-byte-alignment_3.p4.spec +++ b/testdata/p4_16_samples_outputs/psa-example-dpdk-byte-alignment_3.p4.spec @@ -88,15 +88,10 @@ header ipv4 instanceof ipv4_t regarray counter0_0_packets size 0x400 initval 0x0 regarray counter0_0_bytes size 0x400 initval 0x0 - regarray counter1_0 size 0x400 initval 0x0 - regarray counter2_0 size 0x400 initval 0x0 - regarray reg_0 size 0x400 initval 0 - metarray meter0_0 size 0x400 - action NoAction args none { return } diff --git a/testdata/p4_16_samples_outputs/psa-example-dpdk-byte-alignment_5.p4.spec b/testdata/p4_16_samples_outputs/psa-example-dpdk-byte-alignment_5.p4.spec index c839e795e3d..7df58edd8a8 100644 --- a/testdata/p4_16_samples_outputs/psa-example-dpdk-byte-alignment_5.p4.spec +++ b/testdata/p4_16_samples_outputs/psa-example-dpdk-byte-alignment_5.p4.spec @@ -81,15 +81,10 @@ header ipv4 instanceof ipv4_t regarray counter0_0_packets size 0x400 initval 0x0 regarray counter0_0_bytes size 0x400 initval 0x0 - regarray counter1_0 size 0x400 initval 0x0 - regarray counter2_0 size 0x400 initval 0x0 - regarray reg_0 size 0x400 initval 0 - metarray meter0_0 size 0x400 - action NoAction args none { return } diff --git a/testdata/p4_16_samples_outputs/psa-example-dpdk-byte-alignment_6.p4.spec b/testdata/p4_16_samples_outputs/psa-example-dpdk-byte-alignment_6.p4.spec index c05d8420105..4559b05c5f2 100644 --- a/testdata/p4_16_samples_outputs/psa-example-dpdk-byte-alignment_6.p4.spec +++ b/testdata/p4_16_samples_outputs/psa-example-dpdk-byte-alignment_6.p4.spec @@ -89,15 +89,10 @@ header ipv4 instanceof ipv4_t regarray counter0_0_packets size 0x400 initval 0x0 regarray counter0_0_bytes size 0x400 initval 0x0 - regarray counter1_0 size 0x400 initval 0x0 - regarray counter2_0 size 0x400 initval 0x0 - regarray reg_0 size 0x400 initval 0 - metarray meter0_0 size 0x400 - action NoAction args none { return } diff --git a/testdata/p4_16_samples_outputs/psa-example-dpdk-byte-alignment_7.p4.spec b/testdata/p4_16_samples_outputs/psa-example-dpdk-byte-alignment_7.p4.spec index 2f924496a91..e94983e6d35 100644 --- a/testdata/p4_16_samples_outputs/psa-example-dpdk-byte-alignment_7.p4.spec +++ b/testdata/p4_16_samples_outputs/psa-example-dpdk-byte-alignment_7.p4.spec @@ -94,15 +94,10 @@ header ipv4 instanceof ipv4_t regarray counter0_0_packets size 0x400 initval 0x0 regarray counter0_0_bytes size 0x400 initval 0x0 - regarray counter1_0 size 0x400 initval 0x0 - regarray counter2_0 size 0x400 initval 0x0 - regarray reg_0 size 0x400 initval 0 - metarray meter0_0 size 0x400 - action NoAction args none { return } diff --git a/testdata/p4_16_samples_outputs/psa-example-dpdk-byte-alignment_8.p4.spec b/testdata/p4_16_samples_outputs/psa-example-dpdk-byte-alignment_8.p4.spec index 1a93e459d7b..5d15bc93649 100644 --- a/testdata/p4_16_samples_outputs/psa-example-dpdk-byte-alignment_8.p4.spec +++ b/testdata/p4_16_samples_outputs/psa-example-dpdk-byte-alignment_8.p4.spec @@ -91,15 +91,10 @@ header ipv4 instanceof ipv4_t regarray counter0_0_packets size 0x400 initval 0x0 regarray counter0_0_bytes size 0x400 initval 0x0 - regarray counter1_0 size 0x400 initval 0x0 - regarray counter2_0 size 0x400 initval 0x0 - regarray reg_0 size 0x400 initval 0 - metarray meter0_0 size 0x400 - action NoAction args none { return } diff --git a/testdata/p4_16_samples_outputs/psa-example-dpdk-byte-alignment_9.p4.spec b/testdata/p4_16_samples_outputs/psa-example-dpdk-byte-alignment_9.p4.spec index c9f022ecfe7..9f1670f27cc 100644 --- a/testdata/p4_16_samples_outputs/psa-example-dpdk-byte-alignment_9.p4.spec +++ b/testdata/p4_16_samples_outputs/psa-example-dpdk-byte-alignment_9.p4.spec @@ -86,15 +86,10 @@ header ipv4 instanceof ipv4_t regarray counter0_0_packets size 0x400 initval 0x0 regarray counter0_0_bytes size 0x400 initval 0x0 - regarray counter1_0 size 0x400 initval 0x0 - regarray counter2_0 size 0x400 initval 0x0 - regarray reg_0 size 0x400 initval 0 - metarray meter0_0 size 0x400 - action NoAction args none { return } diff --git a/testdata/p4_16_samples_outputs/psa-example-dpdk-counter.p4.spec b/testdata/p4_16_samples_outputs/psa-example-dpdk-counter.p4.spec index aaa004f6a82..d105aa00ad5 100644 --- a/testdata/p4_16_samples_outputs/psa-example-dpdk-counter.p4.spec +++ b/testdata/p4_16_samples_outputs/psa-example-dpdk-counter.p4.spec @@ -40,11 +40,8 @@ header ethernet instanceof ethernet_t regarray counter0_0_packets size 0x400 initval 0x0 regarray counter0_0_bytes size 0x400 initval 0x0 - regarray counter1_0 size 0x400 initval 0x0 - regarray counter2_0 size 0x400 initval 0x0 - apply { rx m.psa_ingress_input_metadata_ingress_port mov m.psa_ingress_output_metadata_drop 0x1 diff --git a/testdata/p4_16_samples_outputs/psa-example-dpdk-directmeter.p4.spec b/testdata/p4_16_samples_outputs/psa-example-dpdk-directmeter.p4.spec index 313936e3fce..0566c6ce895 100644 --- a/testdata/p4_16_samples_outputs/psa-example-dpdk-directmeter.p4.spec +++ b/testdata/p4_16_samples_outputs/psa-example-dpdk-directmeter.p4.spec @@ -41,7 +41,6 @@ struct metadata_t { metadata instanceof metadata_t metarray meter0_0 size 0x10001 - action NoAction args none { return } diff --git a/testdata/p4_16_samples_outputs/psa-example-dpdk-externs.p4.spec b/testdata/p4_16_samples_outputs/psa-example-dpdk-externs.p4.spec index 0fd44ce6cf3..7f7e5728423 100644 --- a/testdata/p4_16_samples_outputs/psa-example-dpdk-externs.p4.spec +++ b/testdata/p4_16_samples_outputs/psa-example-dpdk-externs.p4.spec @@ -64,15 +64,10 @@ header ipv4 instanceof ipv4_t regarray counter0_0_packets size 0x400 initval 0x0 regarray counter0_0_bytes size 0x400 initval 0x0 - regarray counter1_0 size 0x400 initval 0x0 - regarray counter2_0 size 0x400 initval 0x0 - regarray reg_0 size 0x400 initval 0 - metarray meter0_0 size 0x400 - action NoAction args none { return } diff --git a/testdata/p4_16_samples_outputs/psa-example-dpdk-meter.p4.spec b/testdata/p4_16_samples_outputs/psa-example-dpdk-meter.p4.spec index 6965d67f8cd..10160445853 100644 --- a/testdata/p4_16_samples_outputs/psa-example-dpdk-meter.p4.spec +++ b/testdata/p4_16_samples_outputs/psa-example-dpdk-meter.p4.spec @@ -57,7 +57,6 @@ header ethernet instanceof ethernet_t header ipv4 instanceof ipv4_t metarray meter0_0 size 0x400 - action NoAction args none { return } diff --git a/testdata/p4_16_samples_outputs/psa-example-dpdk-meter1.p4.spec b/testdata/p4_16_samples_outputs/psa-example-dpdk-meter1.p4.spec index 775c3ab06ae..972802d2db8 100644 --- a/testdata/p4_16_samples_outputs/psa-example-dpdk-meter1.p4.spec +++ b/testdata/p4_16_samples_outputs/psa-example-dpdk-meter1.p4.spec @@ -58,7 +58,6 @@ header ethernet instanceof ethernet_t header ipv4 instanceof ipv4_t metarray meter0_0 size 0x400 - action NoAction args none { return } diff --git a/testdata/p4_16_samples_outputs/psa-example-parser-checksum.p4.spec b/testdata/p4_16_samples_outputs/psa-example-parser-checksum.p4.spec index 1e39ce13d56..4fa955a46c0 100644 --- a/testdata/p4_16_samples_outputs/psa-example-parser-checksum.p4.spec +++ b/testdata/p4_16_samples_outputs/psa-example-parser-checksum.p4.spec @@ -121,7 +121,6 @@ header cksum_state instanceof cksum_state_t header dpdk_pseudo_header instanceof dpdk_pseudo_header_t regarray parser_error_counts_0 size 0x10001 initval 0x0 - action set_error_idx args instanceof set_error_idx_arg_t { entryid m.table_entry_index regadd parser_error_counts_0 m.table_entry_index 1 diff --git a/testdata/p4_16_samples_outputs/psa-example-register2-bmv2.p4.spec b/testdata/p4_16_samples_outputs/psa-example-register2-bmv2.p4.spec index 790c048f35a..860d0dec5ce 100644 --- a/testdata/p4_16_samples_outputs/psa-example-register2-bmv2.p4.spec +++ b/testdata/p4_16_samples_outputs/psa-example-register2-bmv2.p4.spec @@ -64,7 +64,6 @@ header ethernet instanceof ethernet_t header ipv4 instanceof ipv4_t regarray port_pkt_ip_bytes_in_0 size 0x200 initval 0 - apply { rx m.psa_ingress_input_metadata_ingress_port mov m.psa_ingress_output_metadata_drop 0x1 diff --git a/testdata/p4_16_samples_outputs/psa-meter4.p4.spec b/testdata/p4_16_samples_outputs/psa-meter4.p4.spec index 2e2b12f60be..7479fd2b0e5 100644 --- a/testdata/p4_16_samples_outputs/psa-meter4.p4.spec +++ b/testdata/p4_16_samples_outputs/psa-meter4.p4.spec @@ -36,7 +36,6 @@ metadata instanceof EMPTY header ethernet instanceof ethernet_t metarray meter0_0 size 0x10001 - action NoAction args none { return } diff --git a/testdata/p4_16_samples_outputs/psa-meter5.p4.spec b/testdata/p4_16_samples_outputs/psa-meter5.p4.spec index 2e2b12f60be..7479fd2b0e5 100644 --- a/testdata/p4_16_samples_outputs/psa-meter5.p4.spec +++ b/testdata/p4_16_samples_outputs/psa-meter5.p4.spec @@ -36,7 +36,6 @@ metadata instanceof EMPTY header ethernet instanceof ethernet_t metarray meter0_0 size 0x10001 - action NoAction args none { return } diff --git a/testdata/p4_16_samples_outputs/psa-register-complex-bmv2.p4.spec b/testdata/p4_16_samples_outputs/psa-register-complex-bmv2.p4.spec index 6672e3a31b3..5cf3b09471c 100644 --- a/testdata/p4_16_samples_outputs/psa-register-complex-bmv2.p4.spec +++ b/testdata/p4_16_samples_outputs/psa-register-complex-bmv2.p4.spec @@ -46,7 +46,6 @@ metadata instanceof metadata_t header ethernet instanceof ethernet_t regarray regfile_0 size 0x80 initval 0 - apply { rx m.psa_ingress_input_metadata_ingress_port mov m.psa_ingress_output_metadata_drop 0x1 diff --git a/testdata/p4_16_samples_outputs/psa-register-read-write-2-bmv2.p4.spec b/testdata/p4_16_samples_outputs/psa-register-read-write-2-bmv2.p4.spec index d61a3437bc1..2dd4aade1c1 100644 --- a/testdata/p4_16_samples_outputs/psa-register-read-write-2-bmv2.p4.spec +++ b/testdata/p4_16_samples_outputs/psa-register-read-write-2-bmv2.p4.spec @@ -68,7 +68,6 @@ struct metadata_t { metadata instanceof metadata_t regarray reg_0 size 0x6 initval 0 - apply { rx m.psa_ingress_input_metadata_ingress_port mov m.psa_ingress_output_metadata_drop 0x1 diff --git a/testdata/p4_16_samples_outputs/psa-register-read-write-bmv2.p4.spec b/testdata/p4_16_samples_outputs/psa-register-read-write-bmv2.p4.spec index 4f897134415..4fc53c08505 100644 --- a/testdata/p4_16_samples_outputs/psa-register-read-write-bmv2.p4.spec +++ b/testdata/p4_16_samples_outputs/psa-register-read-write-bmv2.p4.spec @@ -41,7 +41,6 @@ metadata instanceof metadata_t header ethernet instanceof ethernet_t regarray regfile_0 size 0x80 initval 0 - apply { rx m.psa_ingress_input_metadata_ingress_port mov m.psa_ingress_output_metadata_drop 0x1 diff --git a/testdata/p4_16_samples_outputs/psa-register1.p4.spec b/testdata/p4_16_samples_outputs/psa-register1.p4.spec index 4463e43d4ec..a6e20b2effb 100644 --- a/testdata/p4_16_samples_outputs/psa-register1.p4.spec +++ b/testdata/p4_16_samples_outputs/psa-register1.p4.spec @@ -40,7 +40,6 @@ metadata instanceof EMPTY header ethernet instanceof ethernet_t regarray reg_0 size 0x400 initval 0 - action NoAction args none { return } diff --git a/testdata/p4_16_samples_outputs/psa-register2.p4.spec b/testdata/p4_16_samples_outputs/psa-register2.p4.spec index 4392f17edd3..301217d3874 100644 --- a/testdata/p4_16_samples_outputs/psa-register2.p4.spec +++ b/testdata/p4_16_samples_outputs/psa-register2.p4.spec @@ -41,7 +41,6 @@ metadata instanceof user_meta_t header ethernet instanceof ethernet_t regarray reg_0 size 0x400 initval 0 - action NoAction args none { return } diff --git a/testdata/p4_16_samples_outputs/psa-register3.p4.spec b/testdata/p4_16_samples_outputs/psa-register3.p4.spec index 9b8da4cc2a0..c6d6e7b76e2 100644 --- a/testdata/p4_16_samples_outputs/psa-register3.p4.spec +++ b/testdata/p4_16_samples_outputs/psa-register3.p4.spec @@ -41,7 +41,6 @@ metadata instanceof user_meta_t header ethernet instanceof ethernet_t regarray reg_0 size 0x200 initval 0 - action NoAction args none { return }