mirror of
https://gitlab.com/qemu-project/qemu
synced 2024-11-05 20:35:44 +00:00
Hexagon (target/hexagon) Remove hex_common.read_attribs_file
The attribinfo data structure is not used Adjust the command-line arguments to the python scripts Add hex_common.read_common_files for TCG/helper generation scripts Signed-off-by: Taylor Simpson <ltaylorsimpson@gmail.com> Reviewed-by: Brian Cain <bcain@quicinc.com> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Message-Id: <20240307032327.4799-10-ltaylorsimpson@gmail.com> Signed-off-by: Brian Cain <bcain@quicinc.com>
This commit is contained in:
parent
582c59efae
commit
a469666149
11 changed files with 52 additions and 118 deletions
|
@ -78,24 +78,7 @@ def gen_analyze_func(f, tag, regs, imms):
|
|||
|
||||
|
||||
def main():
|
||||
hex_common.read_semantics_file(sys.argv[1])
|
||||
hex_common.read_attribs_file(sys.argv[2])
|
||||
hex_common.read_overrides_file(sys.argv[3])
|
||||
hex_common.read_overrides_file(sys.argv[4])
|
||||
## Whether or not idef-parser is enabled is
|
||||
## determined by the number of arguments to
|
||||
## this script:
|
||||
##
|
||||
## 5 args. -> not enabled,
|
||||
## 6 args. -> idef-parser enabled.
|
||||
##
|
||||
## The 6:th arg. then holds a list of the successfully
|
||||
## parsed instructions.
|
||||
is_idef_parser_enabled = len(sys.argv) > 6
|
||||
if is_idef_parser_enabled:
|
||||
hex_common.read_idef_parser_enabled_file(sys.argv[5])
|
||||
hex_common.calculate_attribs()
|
||||
hex_common.init_registers()
|
||||
hex_common.read_common_files()
|
||||
tagregs = hex_common.get_tagregs()
|
||||
tagimms = hex_common.get_tagimms()
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
##
|
||||
## Copyright(c) 2019-2023 Qualcomm Innovation Center, Inc. All Rights Reserved.
|
||||
## Copyright(c) 2019-2024 Qualcomm Innovation Center, Inc. All Rights Reserved.
|
||||
##
|
||||
## This program is free software; you can redistribute it and/or modify
|
||||
## it under the terms of the GNU General Public License as published by
|
||||
|
@ -102,24 +102,7 @@ def gen_helper_function(f, tag, tagregs, tagimms):
|
|||
|
||||
|
||||
def main():
|
||||
hex_common.read_semantics_file(sys.argv[1])
|
||||
hex_common.read_attribs_file(sys.argv[2])
|
||||
hex_common.read_overrides_file(sys.argv[3])
|
||||
hex_common.read_overrides_file(sys.argv[4])
|
||||
## Whether or not idef-parser is enabled is
|
||||
## determined by the number of arguments to
|
||||
## this script:
|
||||
##
|
||||
## 5 args. -> not enabled,
|
||||
## 6 args. -> idef-parser enabled.
|
||||
##
|
||||
## The 6:th arg. then holds a list of the successfully
|
||||
## parsed instructions.
|
||||
is_idef_parser_enabled = len(sys.argv) > 6
|
||||
if is_idef_parser_enabled:
|
||||
hex_common.read_idef_parser_enabled_file(sys.argv[5])
|
||||
hex_common.calculate_attribs()
|
||||
hex_common.init_registers()
|
||||
hex_common.read_common_files()
|
||||
tagregs = hex_common.get_tagregs()
|
||||
tagimms = hex_common.get_tagimms()
|
||||
|
||||
|
|
|
@ -52,24 +52,7 @@ def gen_helper_prototype(f, tag, tagregs, tagimms):
|
|||
|
||||
|
||||
def main():
|
||||
hex_common.read_semantics_file(sys.argv[1])
|
||||
hex_common.read_attribs_file(sys.argv[2])
|
||||
hex_common.read_overrides_file(sys.argv[3])
|
||||
hex_common.read_overrides_file(sys.argv[4])
|
||||
## Whether or not idef-parser is enabled is
|
||||
## determined by the number of arguments to
|
||||
## this script:
|
||||
##
|
||||
## 5 args. -> not enabled,
|
||||
## 6 args. -> idef-parser enabled.
|
||||
##
|
||||
## The 6:th arg. then holds a list of the successfully
|
||||
## parsed instructions.
|
||||
is_idef_parser_enabled = len(sys.argv) > 6
|
||||
if is_idef_parser_enabled:
|
||||
hex_common.read_idef_parser_enabled_file(sys.argv[5])
|
||||
hex_common.calculate_attribs()
|
||||
hex_common.init_registers()
|
||||
hex_common.read_common_files()
|
||||
tagregs = hex_common.get_tagregs()
|
||||
tagimms = hex_common.get_tagimms()
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
##
|
||||
## Copyright(c) 2019-2023 rev.ng Labs Srl. All Rights Reserved.
|
||||
## Copyright(c) 2019-2024 rev.ng Labs Srl. All Rights Reserved.
|
||||
##
|
||||
## This program is free software; you can redistribute it and/or modify
|
||||
## it under the terms of the GNU General Public License as published by
|
||||
|
@ -44,13 +44,12 @@
|
|||
##
|
||||
def main():
|
||||
hex_common.read_semantics_file(sys.argv[1])
|
||||
hex_common.read_attribs_file(sys.argv[2])
|
||||
hex_common.calculate_attribs()
|
||||
hex_common.init_registers()
|
||||
tagregs = hex_common.get_tagregs()
|
||||
tagimms = hex_common.get_tagimms()
|
||||
|
||||
with open(sys.argv[3], "w") as f:
|
||||
with open(sys.argv[-1], "w") as f:
|
||||
f.write('#include "macros.inc"\n\n')
|
||||
|
||||
for tag in hex_common.tags:
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
##
|
||||
## Copyright(c) 2019-2023 Qualcomm Innovation Center, Inc. All Rights Reserved.
|
||||
## Copyright(c) 2019-2024 Qualcomm Innovation Center, Inc. All Rights Reserved.
|
||||
##
|
||||
## This program is free software; you can redistribute it and/or modify
|
||||
## it under the terms of the GNU General Public License as published by
|
||||
|
@ -25,13 +25,12 @@
|
|||
|
||||
def main():
|
||||
hex_common.read_semantics_file(sys.argv[1])
|
||||
hex_common.read_attribs_file(sys.argv[2])
|
||||
hex_common.calculate_attribs()
|
||||
|
||||
##
|
||||
## Generate all the attributes associated with each instruction
|
||||
##
|
||||
with open(sys.argv[3], "w") as f:
|
||||
with open(sys.argv[-1], "w") as f:
|
||||
for tag in hex_common.tags:
|
||||
f.write(
|
||||
f"OP_ATTRIB({tag},ATTRIBS("
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
##
|
||||
## Copyright(c) 2019-2023 Qualcomm Innovation Center, Inc. All Rights Reserved.
|
||||
## Copyright(c) 2019-2024 Qualcomm Innovation Center, Inc. All Rights Reserved.
|
||||
##
|
||||
## This program is free software; you can redistribute it and/or modify
|
||||
## it under the terms of the GNU General Public License as published by
|
||||
|
@ -29,7 +29,7 @@ def main():
|
|||
##
|
||||
## Generate a list of all the opcodes
|
||||
##
|
||||
with open(sys.argv[3], "w") as f:
|
||||
with open(sys.argv[-1], "w") as f:
|
||||
for tag in hex_common.tags:
|
||||
f.write(f"OPCODE({tag}),\n")
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
##
|
||||
## Copyright(c) 2019-2023 Qualcomm Innovation Center, Inc. All Rights Reserved.
|
||||
## Copyright(c) 2019-2024 Qualcomm Innovation Center, Inc. All Rights Reserved.
|
||||
##
|
||||
## This program is free software; you can redistribute it and/or modify
|
||||
## it under the terms of the GNU General Public License as published by
|
||||
|
@ -97,11 +97,10 @@ def spacify(s):
|
|||
|
||||
def main():
|
||||
hex_common.read_semantics_file(sys.argv[1])
|
||||
hex_common.read_attribs_file(sys.argv[2])
|
||||
|
||||
immext_casere = re.compile(r"IMMEXT\(([A-Za-z])")
|
||||
|
||||
with open(sys.argv[3], "w") as f:
|
||||
with open(sys.argv[-1], "w") as f:
|
||||
for tag in hex_common.tags:
|
||||
if not hex_common.behdict[tag]:
|
||||
continue
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
##
|
||||
## Copyright(c) 2019-2023 Qualcomm Innovation Center, Inc. All Rights Reserved.
|
||||
## Copyright(c) 2019-2024 Qualcomm Innovation Center, Inc. All Rights Reserved.
|
||||
##
|
||||
## This program is free software; you can redistribute it and/or modify
|
||||
## it under the terms of the GNU General Public License as published by
|
||||
|
@ -25,12 +25,11 @@
|
|||
|
||||
def main():
|
||||
hex_common.read_semantics_file(sys.argv[1])
|
||||
hex_common.read_attribs_file(sys.argv[2])
|
||||
hex_common.calculate_attribs()
|
||||
tagregs = hex_common.get_tagregs()
|
||||
tagimms = hex_common.get_tagimms()
|
||||
|
||||
with open(sys.argv[3], "w") as f:
|
||||
with open(sys.argv[-1], "w") as f:
|
||||
f.write("#ifndef HEXAGON_FUNC_TABLE_H\n")
|
||||
f.write("#define HEXAGON_FUNC_TABLE_H\n\n")
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
##
|
||||
## Copyright(c) 2019-2023 Qualcomm Innovation Center, Inc. All Rights Reserved.
|
||||
## Copyright(c) 2019-2024 Qualcomm Innovation Center, Inc. All Rights Reserved.
|
||||
##
|
||||
## This program is free software; you can redistribute it and/or modify
|
||||
## it under the terms of the GNU General Public License as published by
|
||||
|
@ -108,24 +108,7 @@ def gen_def_tcg_func(f, tag, tagregs, tagimms):
|
|||
|
||||
|
||||
def main():
|
||||
hex_common.read_semantics_file(sys.argv[1])
|
||||
hex_common.read_attribs_file(sys.argv[2])
|
||||
hex_common.read_overrides_file(sys.argv[3])
|
||||
hex_common.read_overrides_file(sys.argv[4])
|
||||
hex_common.calculate_attribs()
|
||||
hex_common.init_registers()
|
||||
## Whether or not idef-parser is enabled is
|
||||
## determined by the number of arguments to
|
||||
## this script:
|
||||
##
|
||||
## 5 args. -> not enabled,
|
||||
## 6 args. -> idef-parser enabled.
|
||||
##
|
||||
## The 6:th arg. then holds a list of the successfully
|
||||
## parsed instructions.
|
||||
is_idef_parser_enabled = len(sys.argv) > 6
|
||||
if is_idef_parser_enabled:
|
||||
hex_common.read_idef_parser_enabled_file(sys.argv[5])
|
||||
is_idef_parser_enabled = hex_common.read_common_files()
|
||||
tagregs = hex_common.get_tagregs()
|
||||
tagimms = hex_common.get_tagimms()
|
||||
|
||||
|
|
|
@ -26,7 +26,6 @@
|
|||
semdict = {} # tag -> semantics
|
||||
attribdict = {} # tag -> attributes
|
||||
macros = {} # macro -> macro information...
|
||||
attribinfo = {} # Register information and misc
|
||||
registers = {} # register -> register functions
|
||||
new_registers = {}
|
||||
tags = [] # list of all tags
|
||||
|
@ -288,19 +287,6 @@ def read_semantics_file(name):
|
|||
eval_line = ""
|
||||
|
||||
|
||||
def read_attribs_file(name):
|
||||
attribre = re.compile(
|
||||
r"DEF_ATTRIB\(([A-Za-z0-9_]+), ([^,]*), "
|
||||
+ r'"([A-Za-z0-9_\.]*)", "([A-Za-z0-9_\.]*)"\)'
|
||||
)
|
||||
for line in open(name, "rt").readlines():
|
||||
if not attribre.match(line):
|
||||
continue
|
||||
(attrib_base, descr, rreg, wreg) = attribre.findall(line)[0]
|
||||
attrib_base = "A_" + attrib_base
|
||||
attribinfo[attrib_base] = {"rreg": rreg, "wreg": wreg, "descr": descr}
|
||||
|
||||
|
||||
def read_overrides_file(name):
|
||||
overridere = re.compile(r"#define fGEN_TCG_([A-Za-z0-9_]+)\(.*")
|
||||
for line in open(name, "rt").readlines():
|
||||
|
@ -1193,3 +1179,24 @@ def helper_args(tag, regs, imms):
|
|||
"uint32_t part1"
|
||||
))
|
||||
return args
|
||||
|
||||
|
||||
def read_common_files():
|
||||
read_semantics_file(sys.argv[1])
|
||||
read_overrides_file(sys.argv[2])
|
||||
read_overrides_file(sys.argv[3])
|
||||
## Whether or not idef-parser is enabled is
|
||||
## determined by the number of arguments to
|
||||
## this script:
|
||||
##
|
||||
## 4 args. -> not enabled,
|
||||
## 5 args. -> idef-parser enabled.
|
||||
##
|
||||
## The 5:th arg. then holds a list of the successfully
|
||||
## parsed instructions.
|
||||
is_idef_parser_enabled = len(sys.argv) > 5
|
||||
if is_idef_parser_enabled:
|
||||
read_idef_parser_enabled_file(sys.argv[4])
|
||||
calculate_attribs()
|
||||
init_registers()
|
||||
return is_idef_parser_enabled
|
||||
|
|
|
@ -18,7 +18,6 @@
|
|||
hexagon_ss = ss.source_set()
|
||||
|
||||
hex_common_py = 'hex_common.py'
|
||||
attribs_def = meson.current_source_dir() / 'attribs_def.h.inc'
|
||||
gen_tcg_h = meson.current_source_dir() / 'gen_tcg.h'
|
||||
gen_tcg_hvx_h = meson.current_source_dir() / 'gen_tcg_hvx.h'
|
||||
idef_parser_dir = meson.current_source_dir() / 'idef-parser'
|
||||
|
@ -51,8 +50,8 @@ tcg_func_table_generated = custom_target(
|
|||
'tcg_func_table_generated.c.inc',
|
||||
output: 'tcg_func_table_generated.c.inc',
|
||||
depends: [semantics_generated],
|
||||
depend_files: [hex_common_py, attribs_def],
|
||||
command: [python, files('gen_tcg_func_table.py'), semantics_generated, attribs_def, '@OUTPUT@'],
|
||||
depend_files: [hex_common_py],
|
||||
command: [python, files('gen_tcg_func_table.py'), semantics_generated, '@OUTPUT@'],
|
||||
)
|
||||
hexagon_ss.add(tcg_func_table_generated)
|
||||
|
||||
|
@ -60,8 +59,8 @@ printinsn_generated = custom_target(
|
|||
'printinsn_generated.h.inc',
|
||||
output: 'printinsn_generated.h.inc',
|
||||
depends: [semantics_generated],
|
||||
depend_files: [hex_common_py, attribs_def],
|
||||
command: [python, files('gen_printinsn.py'), semantics_generated, attribs_def, '@OUTPUT@'],
|
||||
depend_files: [hex_common_py],
|
||||
command: [python, files('gen_printinsn.py'), semantics_generated, '@OUTPUT@'],
|
||||
)
|
||||
hexagon_ss.add(printinsn_generated)
|
||||
|
||||
|
@ -69,8 +68,8 @@ op_attribs_generated = custom_target(
|
|||
'op_attribs_generated.h.inc',
|
||||
output: 'op_attribs_generated.h.inc',
|
||||
depends: [semantics_generated],
|
||||
depend_files: [hex_common_py, attribs_def],
|
||||
command: [python, files('gen_op_attribs.py'), semantics_generated, attribs_def, '@OUTPUT@'],
|
||||
depend_files: [hex_common_py],
|
||||
command: [python, files('gen_op_attribs.py'), semantics_generated, '@OUTPUT@'],
|
||||
)
|
||||
hexagon_ss.add(op_attribs_generated)
|
||||
|
||||
|
@ -78,8 +77,8 @@ opcodes_def_generated = custom_target(
|
|||
'opcodes_def_generated.h.inc',
|
||||
output: 'opcodes_def_generated.h.inc',
|
||||
depends: [semantics_generated],
|
||||
depend_files: [hex_common_py, attribs_def],
|
||||
command: [python, files('gen_opcodes_def.py'), semantics_generated, attribs_def, '@OUTPUT@'],
|
||||
depend_files: [hex_common_py],
|
||||
command: [python, files('gen_opcodes_def.py'), semantics_generated, '@OUTPUT@'],
|
||||
)
|
||||
hexagon_ss.add(opcodes_def_generated)
|
||||
|
||||
|
@ -278,7 +277,7 @@ if idef_parser_enabled and 'hexagon-linux-user' in target_dirs
|
|||
output: 'idef_parser_input.h.inc',
|
||||
depends: [semantics_generated],
|
||||
depend_files: [hex_common_py],
|
||||
command: [python, files('gen_idef_parser_funcs.py'), semantics_generated, attribs_def, '@OUTPUT@'],
|
||||
command: [python, files('gen_idef_parser_funcs.py'), semantics_generated, '@OUTPUT@'],
|
||||
)
|
||||
|
||||
preprocessed_idef_parser_input_generated = custom_target(
|
||||
|
@ -347,12 +346,12 @@ if idef_parser_enabled and 'hexagon-linux-user' in target_dirs
|
|||
# Setup input and dependencies for the next step, this depends on whether or
|
||||
# not idef-parser is enabled
|
||||
helper_dep = [semantics_generated, idef_generated_tcg_c, idef_generated_tcg]
|
||||
helper_in = [semantics_generated, attribs_def, gen_tcg_h, gen_tcg_hvx_h, idef_generated_list]
|
||||
helper_in = [semantics_generated, gen_tcg_h, gen_tcg_hvx_h, idef_generated_list]
|
||||
else
|
||||
# Setup input and dependencies for the next step, this depends on whether or
|
||||
# not idef-parser is enabled
|
||||
helper_dep = [semantics_generated]
|
||||
helper_in = [semantics_generated, attribs_def, gen_tcg_h, gen_tcg_hvx_h]
|
||||
helper_in = [semantics_generated, gen_tcg_h, gen_tcg_hvx_h]
|
||||
endif
|
||||
|
||||
#
|
||||
|
@ -366,7 +365,7 @@ helper_protos_generated = custom_target(
|
|||
'helper_protos_generated.h.inc',
|
||||
output: 'helper_protos_generated.h.inc',
|
||||
depends: helper_dep,
|
||||
depend_files: [hex_common_py, attribs_def, gen_tcg_h, gen_tcg_hvx_h],
|
||||
depend_files: [hex_common_py, gen_tcg_h, gen_tcg_hvx_h],
|
||||
command: [python, files('gen_helper_protos.py'), helper_in, '@OUTPUT@'],
|
||||
)
|
||||
hexagon_ss.add(helper_protos_generated)
|
||||
|
@ -375,7 +374,7 @@ helper_funcs_generated = custom_target(
|
|||
'helper_funcs_generated.c.inc',
|
||||
output: 'helper_funcs_generated.c.inc',
|
||||
depends: helper_dep,
|
||||
depend_files: [hex_common_py, attribs_def, gen_tcg_h, gen_tcg_hvx_h],
|
||||
depend_files: [hex_common_py, gen_tcg_h, gen_tcg_hvx_h],
|
||||
command: [python, files('gen_helper_funcs.py'), helper_in, '@OUTPUT@'],
|
||||
)
|
||||
hexagon_ss.add(helper_funcs_generated)
|
||||
|
@ -384,7 +383,7 @@ tcg_funcs_generated = custom_target(
|
|||
'tcg_funcs_generated.c.inc',
|
||||
output: 'tcg_funcs_generated.c.inc',
|
||||
depends: helper_dep,
|
||||
depend_files: [hex_common_py, attribs_def, gen_tcg_h, gen_tcg_hvx_h],
|
||||
depend_files: [hex_common_py, gen_tcg_h, gen_tcg_hvx_h],
|
||||
command: [python, files('gen_tcg_funcs.py'), helper_in, '@OUTPUT@'],
|
||||
)
|
||||
hexagon_ss.add(tcg_funcs_generated)
|
||||
|
@ -393,7 +392,7 @@ analyze_funcs_generated = custom_target(
|
|||
'analyze_funcs_generated.c.inc',
|
||||
output: 'analyze_funcs_generated.c.inc',
|
||||
depends: helper_dep,
|
||||
depend_files: [hex_common_py, attribs_def, gen_tcg_h, gen_tcg_hvx_h],
|
||||
depend_files: [hex_common_py, gen_tcg_h, gen_tcg_hvx_h],
|
||||
command: [python, files('gen_analyze_funcs.py'), helper_in, '@OUTPUT@'],
|
||||
)
|
||||
hexagon_ss.add(analyze_funcs_generated)
|
||||
|
|
Loading…
Reference in a new issue