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:
parent
223476aff3
commit
cc8fec8b74
|
@ -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))
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
Loading…
Reference in New Issue