• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright © 2024 Imagination Technologies Ltd.
2# SPDX-License-Identifier: MIT
3
4from mako.template import Template, exceptions
5from pco_ops import *
6
7template = """/*
8 * Copyright © 2024 Imagination Technologies Ltd.
9 *
10 * SPDX-License-Identifier: MIT
11 */
12
13#ifndef PCO_OPS_H
14#define PCO_OPS_H
15
16/**
17 * \\file pco_ops.h
18 *
19 * \\brief PCO op definitions and functions.
20 */
21
22#include "util/macros.h"
23
24#include <assert.h>
25#include <stdbool.h>
26#include <stdint.h>
27
28#define _PCO_OP_MAX_DESTS ${max([op.num_dests for op in ops.values()])}U
29#define _PCO_OP_MAX_SRCS ${max([op.num_srcs for op in ops.values()])}U
30#define _PCO_OP_MAX_MODS ${max([len(op.op_mods) for op in ops.values()])}U
31
32/** Ops. */
33#define _PCO_OP_COUNT ${len(ops) + 1}U
34enum pco_op {
35   PCO_OP_NONE,
36% for op in ops.values():
37   ${op.cname.upper()},
38% endfor
39};
40
41/** Op mods. */
42#define _PCO_OP_MOD_COUNT ${len(op_mods) + 1}U
43enum pco_op_mod {
44   PCO_OP_MOD_NONE,
45% for op_mod in op_mods.values():
46   ${op_mod.cname},
47% endfor
48};
49
50/** Ref mods. */
51#define _PCO_REF_MOD_COUNT ${len(ref_mods) + 1}U
52enum pco_ref_mod {
53   PCO_REF_MOD_NONE,
54% for ref_mod in ref_mods.values():
55   ${ref_mod.cname},
56% endfor
57};
58#endif /* PCO_OPS_H */"""
59
60def main():
61   try:
62      print(Template(template).render(ops=ops, op_mods=op_mods, ref_mods=ref_mods))
63   except:
64       raise Exception(exceptions.text_error_template().render())
65
66if __name__ == '__main__':
67   main()
68