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
|
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 */
|
/* Runtime accessible info on each defined opcode */
|
||||||
|
|
||||||
<% assert(len(immediates) < 32); %>
|
<% 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 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 = {}
|
opcodes = {}
|
||||||
immediates = {}
|
immediates = {}
|
||||||
|
enums = {}
|
||||||
|
|
||||||
class Opcode(object):
|
class Opcode(object):
|
||||||
def __init__(self, name, dests, srcs, imms, is_float, can_eliminate, encoding_16, encoding_32):
|
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
|
immediates[name] = imm
|
||||||
return imm
|
return imm
|
||||||
|
|
||||||
|
def enum(name, value_dict):
|
||||||
|
enums[name] = value_dict
|
||||||
|
return immediate(name, "enum agx_" + name)
|
||||||
|
|
||||||
L = (1 << 15)
|
L = (1 << 15)
|
||||||
_ = None
|
_ = None
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue