mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-07 15:48:36 +02:00
etnaviv: isa: Generate c header containing enums
Signed-off-by: Christian Gmeiner <cgmeiner@igalia.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28183>
This commit is contained in:
parent
9cc8b12e8c
commit
a0635f8f52
2 changed files with 67 additions and 0 deletions
58
src/etnaviv/isa/enums.h.py
Normal file
58
src/etnaviv/isa/enums.h.py
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
#!/usr/bin/env python3
|
||||
#
|
||||
# Copyright © 2024 Igalia S.L.
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
template = """/*
|
||||
* Copyright © 2024 Igalia S.L.
|
||||
* SPDX-License-Identifier: MIT
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "util/macros.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
% for name, enum in enums.items():
|
||||
enum PACKED ${prefix}_${name} {
|
||||
% for k, v in enum.items():
|
||||
${k} = ${v},
|
||||
% endfor
|
||||
};
|
||||
|
||||
% endfor
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* extern C */
|
||||
#endif
|
||||
"""
|
||||
|
||||
import sys, os
|
||||
sys.path.append(os.path.dirname(os.path.abspath(__file__)) + "/../../compiler/isaspec")
|
||||
|
||||
from mako.template import Template
|
||||
from isa import ISA
|
||||
|
||||
def main():
|
||||
isa = ISA(sys.argv[1])
|
||||
prefix = 'isa'
|
||||
enums = {}
|
||||
|
||||
for name, enum in isa.enums.items():
|
||||
name = name.replace('#', '')
|
||||
e = {}
|
||||
|
||||
for k, v in enum.values.items():
|
||||
v = v.get_name().replace('.', '').replace('[', '').replace(']', '').upper()
|
||||
item = prefix.upper() + '_' + name.upper() + '_' + v
|
||||
e[item] = k
|
||||
|
||||
enums[name] = e
|
||||
|
||||
print(Template(template).render(prefix=prefix, enums=enums))
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
|
|
@ -47,6 +47,15 @@ idep_libetnaviv_decode = declare_dependency(
|
|||
sources : [etnaviv_isa],
|
||||
)
|
||||
|
||||
enums_h = custom_target(
|
||||
'enums.h',
|
||||
input: ['enums.h.py', 'etnaviv.xml'],
|
||||
output: 'enums.h',
|
||||
command: [prog_python, '@INPUT@'],
|
||||
capture: true,
|
||||
depend_files: isa_depend_files,
|
||||
)
|
||||
|
||||
disasm = executable(
|
||||
'etnaviv-disasm',
|
||||
['disasm.c'],
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue