agx: Generate enums from Python

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11199>
This commit is contained in:
Alyssa Rosenzweig 2021-06-05 14:47:39 -04:00 committed by Marge Bot
parent 223476aff3
commit cc8fec8b74
2 changed files with 16 additions and 2 deletions

View File

@ -36,6 +36,14 @@ enum agx_opcode {
AGX_NUM_OPCODES
};
% for name in enums:
enum agx_${name} {
% for k in enums[name]:
AGX_${name.upper()}_${enums[name][k].replace('.', '_').upper()} = ${k},
% endfor
};
% endfor
/* Runtime accessible info on each defined opcode */
<% assert(len(immediates) < 32); %>
@ -69,6 +77,7 @@ extern const struct agx_opcode_info agx_opcodes_info[AGX_NUM_OPCODES];
"""
from mako.template import Template
from agx_opcodes import opcodes, immediates
from agx_opcodes import opcodes, immediates, enums
print(Template(template).render(opcodes=opcodes, immediates=immediates))
print(Template(template).render(opcodes=opcodes, immediates=immediates,
enums=enums))

View File

@ -23,6 +23,7 @@ SOFTWARE.
opcodes = {}
immediates = {}
enums = {}
class Opcode(object):
def __init__(self, name, dests, srcs, imms, is_float, can_eliminate, encoding_16, encoding_32):
@ -67,6 +68,10 @@ def immediate(name, ctype = "uint32_t"):
immediates[name] = imm
return imm
def enum(name, value_dict):
enums[name] = value_dict
return immediate(name, "enum agx_" + name)
L = (1 << 15)
_ = None