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


Reply via email to