P4C
The P4 Compiler
Loading...
Searching...
No Matches
jbay/stateful.h
1
17
18#ifndef BACKENDS_TOFINO_BF_ASM_JBAY_STATEFUL_H_
19#define BACKENDS_TOFINO_BF_ASM_JBAY_STATEFUL_H_
20
21#include "backends/tofino/bf-asm/tables.h"
22#include "backends/tofino/bf-asm/target.h"
23
24// FIXME -- should be a namespace somwhere? Or in class StatefulTable
25/* for jbay counter mode, we may need both a push and a pop mode, as well as counter_function,
26 * so we pack them all into an int with some shifts and masks */
27enum {
28 PUSHPOP_BITS = 5,
29 PUSHPOP_MASK = 0xf,
30 PUSHPOP_ANY = 0x10,
31 PUSH_MASK = PUSHPOP_MASK,
32 PUSH_ANY = PUSHPOP_ANY,
33 POP_MASK = PUSHPOP_MASK << PUSHPOP_BITS,
34 POP_ANY = PUSHPOP_ANY << PUSHPOP_BITS,
35 PUSH_MISS = 1,
36 PUSH_HIT = 2,
37 PUSH_GATEWAY = 3,
38 PUSH_ALL = 4,
39 PUSH_GW_ENTRY = 5,
40 POP_MISS = PUSH_MISS << PUSHPOP_BITS,
41 POP_HIT = PUSH_HIT << PUSHPOP_BITS,
42 POP_GATEWAY = PUSH_GATEWAY << PUSHPOP_BITS,
43 POP_ALL = PUSH_ALL << PUSHPOP_BITS,
44 POP_GW_ENTRY = PUSH_GW_ENTRY << PUSHPOP_BITS,
45 FUNCTION_SHIFT = 2 * PUSHPOP_BITS,
46 FUNCTION_LOG = 1 << FUNCTION_SHIFT,
47 FUNCTION_FIFO = 2 << FUNCTION_SHIFT,
48 FUNCTION_STACK = 3 << FUNCTION_SHIFT,
49 FUNCTION_FAST_CLEAR = 4 << FUNCTION_SHIFT,
50 FUNCTION_MASK = 0xf << FUNCTION_SHIFT,
51};
52
53int parse_jbay_counter_mode(const value_t &v);
54template <>
55void StatefulTable::write_logging_regs(Target::JBay::mau_regs &regs);
56
57#endif /* BACKENDS_TOFINO_BF_ASM_JBAY_STATEFUL_H_ */
Definition asm-types.h:114