|
| CRCChecksumAlgorithm (const EBPFProgram *program, cstring name, int width) |
|
void | emitAddData (CodeBuilder *builder, const ArgumentsList &arguments) override |
|
void | emitClear (CodeBuilder *builder) override |
|
void | emitGet (CodeBuilder *builder) override |
|
void | emitGetInternalState (CodeBuilder *builder) override |
|
void | emitSetInternalState (CodeBuilder *builder, const IR::MethodCallExpression *expr) override |
|
void | emitSubtractData (CodeBuilder *builder, const ArgumentsList &arguments) override |
|
void | emitVariables (CodeBuilder *builder, const IR::Declaration_Instance *decl) override |
| decl might be a null pointer
|
|
unsigned | getOutputWidth () const override |
|
| EBPFHashAlgorithmPSA (const EBPFProgram *program, cstring name) |
|
virtual void | emitAddData (CodeBuilder *builder, int dataPos, const IR::MethodCallExpression *expr) |
|
virtual void | emitSubtractData (CodeBuilder *builder, int dataPos, const IR::MethodCallExpression *expr) |
|
void | setVisitor (Visitor *instance) |
|
| DECLARE_TYPEINFO (EBPFObject) |
|
template<typename T > |
T & | as () |
| Tries to convert the class to type T. A BUG occurs if the cast fails.
|
|
template<typename T > |
const T & | as () const |
| Tries to convert the class to type T. A BUG occurs if the cast fails.
|
|
template<typename T > |
T * | checkedTo () |
| Performs a checked cast. A BUG occurs if the cast fails.
|
|
template<typename T > |
const T * | checkedTo () const |
| Performs a checked cast. A BUG occurs if the cast fails.
|
|
template<typename T > |
bool | is () const noexcept |
|
virtual bool | isA (TypeId typeId) const noexcept=0 |
|
template<typename T > |
const T * | to () const noexcept |
| Same as to , but returns const pointer to T.
|
|
template<typename T > |
T * | to () noexcept |
|
virtual TypeId | typeId () const noexcept=0 |
|
void P4::EBPF::CRCChecksumAlgorithm::emitAddData |
( |
CodeBuilder * | builder, |
|
|
const ArgumentsList & | arguments ) |
|
overridevirtual |
This method generates a C code that is responsible for updating a CRC check value from a given data.
From following P4 code: Checksum<bit<32>>(PSA_HashAlgorithm_t.CRC32) checksum; checksum.update(parsed_hdr.crc.f1); There will be generated a C code: crc32_update(&c_0_reg, (u8 *) &(parsed_hdr->crc.f1), 5, 0xEDB88320); Where: c_0_reg - a checksum internal state (CRC register) parsed_hdr->field1 - a data on which CRC is calculated 5 - a field size in bytes 0xEDB88320 - a polynomial in a reflected bit order.
Implements P4::EBPF::EBPFHashAlgorithmPSA.