P4C
The P4 Compiler
Loading...
Searching...
No Matches
dpdkUtils.h
1/*
2 * Copyright 2022 Intel Corporation
3 * SPDX-FileCopyrightText: 2022 Intel Corporation
4 *
5 * SPDX-License-Identifier: Apache-2.0
6 */
7
8#ifndef BACKENDS_DPDK_DPDKUTILS_H_
9#define BACKENDS_DPDK_DPDKUTILS_H_
10
11#include "frontends/common/resolveReferences/resolveReferences.h"
12#include "ir/ir.h"
13
14namespace P4::DPDK {
15bool isSimpleExpression(const IR::Expression *e);
16bool isNonConstantSimpleExpression(const IR::Expression *e);
17bool isCommutativeBinaryOperation(const IR::Operation_Binary *bin);
18bool isStandardMetadata(cstring name);
19bool isMetadataStruct(const IR::Type_Struct *st);
20bool isMetadataField(const IR::Expression *e);
21bool isEightBitAligned(const IR::Expression *e);
22bool isDirection(const IR::Member *m);
23bool isHeadersStruct(const IR::Type_Struct *st);
24bool isLargeFieldOperand(const IR::Expression *e);
25bool isInsideHeader(const IR::Expression *e);
26bool isValidCall(const IR::MethodCallExpression *m);
27bool isValidMemberField(const IR::Member *mem);
28int getMetadataFieldWidth(int width);
29const IR::Type_Bits *getEightBitAlignedType(const IR::Type_Bits *tb);
30
32bool reservedNames(P4::ReferenceMap *refMap, const std::vector<cstring> &names, cstring &resName);
34IR::Declaration_Instance *createRegDeclarationInstance(cstring instanceName, int regSize,
35 int indexBitWidth, int initValBitwidth);
36} // namespace P4::DPDK
37#endif /* BACKENDS_DPDK_DPDKUTILS_H_ */
Definition dpdk/backend.cpp:26
IR::Declaration_Instance * createRegDeclarationInstance(cstring instanceName, int regSize, int indexBitWidth, int initValBitWidth)
Creates Register extern declaration for holding persistent information.
Definition dpdkUtils.cpp:116
int getMetadataFieldWidth(int width)
Definition dpdkUtils.cpp:147
bool reservedNames(P4::ReferenceMap *refMap, const std::vector< cstring > &names, cstring &resName)
Check for reserved names for DPDK target.
Definition dpdkUtils.cpp:133