This can easily be done in C with opcodes_def_generated.h.inc Signed-off-by: Taylor Simpson <ltaylorsimp...@gmail.com> --- target/hexagon/genptr.c | 6 ++- target/hexagon/README | 1 - target/hexagon/gen_tcg_func_table.py | 66 ---------------------------- target/hexagon/meson.build | 10 ----- 4 files changed, 5 insertions(+), 78 deletions(-) delete mode 100755 target/hexagon/gen_tcg_func_table.py
diff --git a/target/hexagon/genptr.c b/target/hexagon/genptr.c index 2c5e15cfcf..330170ab44 100644 --- a/target/hexagon/genptr.c +++ b/target/hexagon/genptr.c @@ -1453,4 +1453,8 @@ void gen_add_sat_i64(DisasContext *ctx, TCGv_i64 ret, TCGv_i64 a, TCGv_i64 b) } #include "tcg_funcs_generated.c.inc" -#include "tcg_func_table_generated.c.inc" +const SemanticInsn opcode_genptr[XX_LAST_OPCODE] = { +#define OPCODE(X) [X] = generate_##X +#include "opcodes_def_generated.h.inc" +#undef OPCODE +}; diff --git a/target/hexagon/README b/target/hexagon/README index ca617e3364..5af298e3ed 100644 --- a/target/hexagon/README +++ b/target/hexagon/README @@ -47,7 +47,6 @@ header files in <BUILD_DIR>/target/hexagon gen_op_attribs.py -> op_attribs_generated.h.inc gen_helper_protos.py -> helper_protos_generated.h.inc gen_tcg_funcs.py -> tcg_funcs_generated.c.inc - gen_tcg_func_table.py -> tcg_func_table_generated.c.inc gen_helper_funcs.py -> helper_funcs_generated.c.inc gen_idef_parser_funcs.py -> idef_parser_input.h gen_analyze_funcs.py -> analyze_funcs_generated.c.inc diff --git a/target/hexagon/gen_tcg_func_table.py b/target/hexagon/gen_tcg_func_table.py deleted file mode 100755 index 299a39b1aa..0000000000 --- a/target/hexagon/gen_tcg_func_table.py +++ /dev/null @@ -1,66 +0,0 @@ -#!/usr/bin/env python3 - -## -## 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 -## the Free Software Foundation; either version 2 of the License, or -## (at your option) any later version. -## -## This program is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -## GNU General Public License for more details. -## -## You should have received a copy of the GNU General Public License -## along with this program; if not, see <http://www.gnu.org/licenses/>. -## - -import sys -import re -import string -import hex_common -import argparse - - -def main(): - parser = argparse.ArgumentParser( - "Emit opaque macro calls with instruction semantics" - ) - parser.add_argument("semantics", help="semantics file") - parser.add_argument("out", help="output file") - args = parser.parse_args() - hex_common.read_semantics_file(args.semantics) - hex_common.calculate_attribs() - tagregs = hex_common.get_tagregs() - tagimms = hex_common.get_tagimms() - - with open(args.out, "w") as f: - f.write("#ifndef HEXAGON_FUNC_TABLE_H\n") - f.write("#define HEXAGON_FUNC_TABLE_H\n\n") - - f.write("const SemanticInsn opcode_genptr[XX_LAST_OPCODE] = {\n") - for tag in hex_common.tags: - ## Skip the priv instructions - if "A_PRIV" in hex_common.attribdict[tag]: - continue - ## Skip the guest instructions - if "A_GUEST" in hex_common.attribdict[tag]: - continue - ## Skip the diag instructions - if tag == "Y6_diag": - continue - if tag == "Y6_diag0": - continue - if tag == "Y6_diag1": - continue - - f.write(f" [{tag}] = generate_{tag},\n") - f.write("};\n\n") - - f.write("#endif /* HEXAGON_FUNC_TABLE_H */\n") - - -if __name__ == "__main__": - main() diff --git a/target/hexagon/meson.build b/target/hexagon/meson.build index bb4ebaae81..b28aeddb85 100644 --- a/target/hexagon/meson.build +++ b/target/hexagon/meson.build @@ -41,20 +41,10 @@ hexagon_ss.add(semantics_generated) # # Step 2 # We use Python scripts to generate the following files -# tcg_func_table_generated.c.inc # printinsn_generated.h.inc # op_attribs_generated.h.inc # opcodes_def_generated.h.inc # -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], - command: [python, files('gen_tcg_func_table.py'), semantics_generated, '@OUTPUT@'], -) -hexagon_ss.add(tcg_func_table_generated) - printinsn_generated = custom_target( 'printinsn_generated.h.inc', output: 'printinsn_generated.h.inc', -- 2.43.0