Message ID | 20240307032327.4799-10-ltaylorsimpson@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Clean up .new decode and scripts | expand |
On 7/3/24 04:23, Taylor Simpson wrote: > 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> > --- > target/hexagon/gen_analyze_funcs.py | 21 ++------------- > target/hexagon/gen_helper_funcs.py | 21 ++------------- > target/hexagon/gen_helper_protos.py | 21 ++------------- > target/hexagon/gen_idef_parser_funcs.py | 5 ++-- > target/hexagon/gen_op_attribs.py | 5 ++-- > target/hexagon/gen_opcodes_def.py | 4 +-- > target/hexagon/gen_printinsn.py | 5 ++-- > target/hexagon/gen_tcg_func_table.py | 5 ++-- > target/hexagon/gen_tcg_funcs.py | 21 ++------------- > target/hexagon/hex_common.py | 35 +++++++++++++++---------- > target/hexagon/meson.build | 31 +++++++++++----------- > 11 files changed, 54 insertions(+), 120 deletions(-) Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
> -----Original Message----- > From: Taylor Simpson <ltaylorsimpson@gmail.com> > Sent: Wednesday, March 6, 2024 9:23 PM > To: qemu-devel@nongnu.org > Cc: Brian Cain <bcain@quicinc.com>; Matheus Bernardino (QUIC) > <quic_mathbern@quicinc.com>; Sid Manning <sidneym@quicinc.com>; > Marco Liebel (QUIC) <quic_mliebel@quicinc.com>; > richard.henderson@linaro.org; philmd@linaro.org; ale@rev.ng; anjo@rev.ng; > ltaylorsimpson@gmail.com > Subject: [PATCH v2 9/9] Hexagon (target/hexagon) Remove > hex_common.read_attribs_file > > WARNING: This email originated from outside of Qualcomm. Please be wary > of any links or attachments, and do not enable macros. > > 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> > target/hexagon/gen_analyze_funcs.py | 21 ++------------- > target/hexagon/gen_helper_funcs.py | 21 ++------------- > target/hexagon/gen_helper_protos.py | 21 ++------------- > target/hexagon/gen_idef_parser_funcs.py | 5 ++-- > target/hexagon/gen_op_attribs.py | 5 ++-- > target/hexagon/gen_opcodes_def.py | 4 +-- > target/hexagon/gen_printinsn.py | 5 ++-- > target/hexagon/gen_tcg_func_table.py | 5 ++-- > target/hexagon/gen_tcg_funcs.py | 21 ++------------- > target/hexagon/hex_common.py | 35 +++++++++++++++---------- > target/hexagon/meson.build | 31 +++++++++++----------- > 11 files changed, 54 insertions(+), 120 deletions(-) > > diff --git a/target/hexagon/gen_analyze_funcs.py > b/target/hexagon/gen_analyze_funcs.py > index a9af666cef..b73b4e2349 100755 > --- a/target/hexagon/gen_analyze_funcs.py > +++ b/target/hexagon/gen_analyze_funcs.py > @@ -1,7 +1,7 @@ > #!/usr/bin/env python3 > > ## > -## Copyright(c) 2022-2023 Qualcomm Innovation Center, Inc. All Rights > Reserved. > +## Copyright(c) 2022-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 > @@ -67,24 +67,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() > > diff --git a/target/hexagon/gen_helper_funcs.py > b/target/hexagon/gen_helper_funcs.py > index 9cc3d69c49..e9685bff2f 100755 > --- a/target/hexagon/gen_helper_funcs.py > +++ b/target/hexagon/gen_helper_funcs.py > @@ -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() > > diff --git a/target/hexagon/gen_helper_protos.py > b/target/hexagon/gen_helper_protos.py > index c82b0f54e4..4cc72a1581 100755 > --- a/target/hexagon/gen_helper_protos.py > +++ b/target/hexagon/gen_helper_protos.py > @@ -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 > @@ -44,24 +44,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() > > diff --git a/target/hexagon/gen_idef_parser_funcs.py > b/target/hexagon/gen_idef_parser_funcs.py > index 550a48cb7b..eb494abba8 100644 > --- a/target/hexagon/gen_idef_parser_funcs.py > +++ b/target/hexagon/gen_idef_parser_funcs.py > @@ -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: > diff --git a/target/hexagon/gen_op_attribs.py > b/target/hexagon/gen_op_attribs.py > index 41074b8573..99448220da 100755 > --- a/target/hexagon/gen_op_attribs.py > +++ b/target/hexagon/gen_op_attribs.py > @@ -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(" > diff --git a/target/hexagon/gen_opcodes_def.py > b/target/hexagon/gen_opcodes_def.py > index cddd868fe3..536f0eb68a 100755 > --- a/target/hexagon/gen_opcodes_def.py > +++ b/target/hexagon/gen_opcodes_def.py > @@ -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") > > diff --git a/target/hexagon/gen_printinsn.py > b/target/hexagon/gen_printinsn.py > index e570bd7c6a..8bf4d0985c 100755 > --- a/target/hexagon/gen_printinsn.py > +++ b/target/hexagon/gen_printinsn.py > @@ -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 > diff --git a/target/hexagon/gen_tcg_func_table.py > b/target/hexagon/gen_tcg_func_table.py > index f998ef0992..978ac1819b 100755 > --- a/target/hexagon/gen_tcg_func_table.py > +++ b/target/hexagon/gen_tcg_func_table.py > @@ -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") > > diff --git a/target/hexagon/gen_tcg_funcs.py > b/target/hexagon/gen_tcg_funcs.py > index 3d8e3cb6a2..05aa0a7855 100755 > --- a/target/hexagon/gen_tcg_funcs.py > +++ b/target/hexagon/gen_tcg_funcs.py > @@ -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() > > diff --git a/target/hexagon/hex_common.py > b/target/hexagon/hex_common.py > index 4bacef223f..43ca78b489 100755 > --- a/target/hexagon/hex_common.py > +++ b/target/hexagon/hex_common.py > @@ -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 > @@ -257,19 +256,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(): > @@ -1143,3 +1129,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 > diff --git a/target/hexagon/meson.build b/target/hexagon/meson.build > index 988e7489ba..b0b253aa6b 100644 > --- a/target/hexagon/meson.build > +++ b/target/hexagon/meson.build > @@ -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) > -- > 2.34.1
diff --git a/target/hexagon/gen_analyze_funcs.py b/target/hexagon/gen_analyze_funcs.py index a9af666cef..b73b4e2349 100755 --- a/target/hexagon/gen_analyze_funcs.py +++ b/target/hexagon/gen_analyze_funcs.py @@ -1,7 +1,7 @@ #!/usr/bin/env python3 ## -## Copyright(c) 2022-2023 Qualcomm Innovation Center, Inc. All Rights Reserved. +## Copyright(c) 2022-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 @@ -67,24 +67,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() diff --git a/target/hexagon/gen_helper_funcs.py b/target/hexagon/gen_helper_funcs.py index 9cc3d69c49..e9685bff2f 100755 --- a/target/hexagon/gen_helper_funcs.py +++ b/target/hexagon/gen_helper_funcs.py @@ -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() diff --git a/target/hexagon/gen_helper_protos.py b/target/hexagon/gen_helper_protos.py index c82b0f54e4..4cc72a1581 100755 --- a/target/hexagon/gen_helper_protos.py +++ b/target/hexagon/gen_helper_protos.py @@ -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 @@ -44,24 +44,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() diff --git a/target/hexagon/gen_idef_parser_funcs.py b/target/hexagon/gen_idef_parser_funcs.py index 550a48cb7b..eb494abba8 100644 --- a/target/hexagon/gen_idef_parser_funcs.py +++ b/target/hexagon/gen_idef_parser_funcs.py @@ -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: diff --git a/target/hexagon/gen_op_attribs.py b/target/hexagon/gen_op_attribs.py index 41074b8573..99448220da 100755 --- a/target/hexagon/gen_op_attribs.py +++ b/target/hexagon/gen_op_attribs.py @@ -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(" diff --git a/target/hexagon/gen_opcodes_def.py b/target/hexagon/gen_opcodes_def.py index cddd868fe3..536f0eb68a 100755 --- a/target/hexagon/gen_opcodes_def.py +++ b/target/hexagon/gen_opcodes_def.py @@ -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") diff --git a/target/hexagon/gen_printinsn.py b/target/hexagon/gen_printinsn.py index e570bd7c6a..8bf4d0985c 100755 --- a/target/hexagon/gen_printinsn.py +++ b/target/hexagon/gen_printinsn.py @@ -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 diff --git a/target/hexagon/gen_tcg_func_table.py b/target/hexagon/gen_tcg_func_table.py index f998ef0992..978ac1819b 100755 --- a/target/hexagon/gen_tcg_func_table.py +++ b/target/hexagon/gen_tcg_func_table.py @@ -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") diff --git a/target/hexagon/gen_tcg_funcs.py b/target/hexagon/gen_tcg_funcs.py index 3d8e3cb6a2..05aa0a7855 100755 --- a/target/hexagon/gen_tcg_funcs.py +++ b/target/hexagon/gen_tcg_funcs.py @@ -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() diff --git a/target/hexagon/hex_common.py b/target/hexagon/hex_common.py index 4bacef223f..43ca78b489 100755 --- a/target/hexagon/hex_common.py +++ b/target/hexagon/hex_common.py @@ -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 @@ -257,19 +256,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(): @@ -1143,3 +1129,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 diff --git a/target/hexagon/meson.build b/target/hexagon/meson.build index 988e7489ba..b0b253aa6b 100644 --- a/target/hexagon/meson.build +++ b/target/hexagon/meson.build @@ -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)
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> --- target/hexagon/gen_analyze_funcs.py | 21 ++------------- target/hexagon/gen_helper_funcs.py | 21 ++------------- target/hexagon/gen_helper_protos.py | 21 ++------------- target/hexagon/gen_idef_parser_funcs.py | 5 ++-- target/hexagon/gen_op_attribs.py | 5 ++-- target/hexagon/gen_opcodes_def.py | 4 +-- target/hexagon/gen_printinsn.py | 5 ++-- target/hexagon/gen_tcg_func_table.py | 5 ++-- target/hexagon/gen_tcg_funcs.py | 21 ++------------- target/hexagon/hex_common.py | 35 +++++++++++++++---------- target/hexagon/meson.build | 31 +++++++++++----------- 11 files changed, 54 insertions(+), 120 deletions(-)