P4C
The P4 Compiler
Loading...
Searching...
No Matches
top_level.h
1
17
18#ifndef BACKENDS_TOFINO_BF_ASM_TOP_LEVEL_H_
19#define BACKENDS_TOFINO_BF_ASM_TOP_LEVEL_H_
20
21#include "backends/tofino/bf-asm/json.h"
22#include "backends/tofino/bf-asm/target.h"
23
24template <class REGSET>
25class TopLevelRegs;
26
27class TopLevel {
28 protected:
29 TopLevel();
30
31 public:
32 static TopLevel *all;
33 virtual ~TopLevel();
34 virtual void output(json::map &) = 0;
35 static void output_all(json::map &ctxtJson) { all->output(ctxtJson); }
36 template <class T>
38#define SET_MAU_STAGE(TARGET) \
39 virtual void set_mau_stage(int, const char *, Target::TARGET::mau_regs *, bool) { \
40 BUG("register mismatch"); \
41 }
42 FOR_ALL_REGISTER_SETS(SET_MAU_STAGE)
43};
44
45template <class REGSET>
46class TopLevelRegs : public TopLevel, public REGSET::top_level_regs {
47 public:
48 TopLevelRegs();
49 ~TopLevelRegs();
50
51 void output(json::map &);
52 void set_mau_stage(int stage, const char *file, typename REGSET::mau_regs *regs,
53 bool egress_only);
54};
55
56template <class T>
58 return dynamic_cast<TopLevelRegs<typename T::register_type> *>(all);
59}
60
61#endif /* BACKENDS_TOFINO_BF_ASM_TOP_LEVEL_H_ */
static TopLevel * all
Definition top_level.h:32
Definition top_level.h:46
Definition backends/tofino/bf-asm/json.h:300