8#ifndef BACKENDS_EBPF_EBPFPARSER_H_
9#define BACKENDS_EBPF_EBPFPARSER_H_
11#include "ebpfObject.h"
12#include "ebpfProgram.h"
14#include "frontends/p4/methodInstance.h"
26 const IR::Type *selectType;
31 virtual void compileExtractField(
const IR::Expression *expr,
const IR::StructField *field,
32 unsigned hdrOffsetBits,
EBPFType *type);
33 virtual void compileExtract(
const IR::Expression *destination);
34 virtual void compileLookahead(
const IR::Expression *destination);
36 void compileVerify(
const IR::MethodCallExpression *expression);
46 bool preorder(
const IR::ParserState *state)
override;
47 bool preorder(
const IR::SelectCase *selectCase)
override;
48 bool preorder(
const IR::SelectExpression *expression)
override;
49 bool preorder(
const IR::Member *expression)
override;
50 bool preorder(
const IR::MethodCallExpression *expression)
override;
51 bool preorder(
const IR::MethodCallStatement *stat)
override {
52 visit(stat->methodCall);
53 builder->endOfStatement(
true);
56 bool preorder(
const IR::BaseAssignmentStatement *stat)
override {
return notSupported(stat); }
57 bool preorder(
const IR::AssignmentStatement *stat)
override;
62 const IR::ParserState *state;
65 EBPFParserState(
const IR::ParserState *state,
EBPFParser *parser)
66 : state(state), parser(parser) {}
76 const IR::ParserBlock *parserBlock;
77 std::vector<EBPFParserState *> states;
78 const IR::Parameter *packet;
79 const IR::Parameter *headers;
80 const IR::Parameter *user_metadata;
85 std::map<cstring, EBPFValueSet *> valueSets;
87 explicit EBPFParser(
const EBPFProgram *program,
const IR::ParserBlock *block,
89 virtual void emitDeclaration(
CodeBuilder *builder,
const IR::Declaration *decl);
94 virtual void emitValueSetInstances(
CodeBuilder *builder);
Definition ebpf/codeGen.h:24
CodeGenInspector(P4::ReferenceMap *refMap, P4::TypeMap *typeMap)
precedence of current IR::Operation
Definition ebpf/codeGen.h:48
Base class for EBPF objects.
Definition ebpfObject.h:22
Definition ebpfParser.h:72
Definition ebpfParser.h:60
Definition ebpfProgram.h:30
Base class for EBPF types.
Definition ebpfType.h:20
Definition ebpfTable.h:162
Definition ebpfParser.h:22
cstring selectValue
Stores the result of evaluating the select argument.
Definition ebpfParser.h:25
Definition methodInstance.h:185
Definition methodInstance.h:159
Definition coreLibrary.h:94
Class used to encode maps from paths to declarations.
Definition referenceMap.h:58
Definition codeGen.cpp:14
TODO: this is not really specific to BMV2, it should reside somewhere else.
Definition applyOptionsPragmas.cpp:13