[PULL 1/9] Hexagon (target/hexagon) Remove gen_tcg_func_table.py

Brian Cain posted 9 patches 10 hours ago
Maintainers: Brian Cain <brian.cain@oss.qualcomm.com>, Alessandro Di Federico <ale@rev.ng>, Anton Johansson <anjo@rev.ng>
[PULL 1/9] Hexagon (target/hexagon) Remove gen_tcg_func_table.py
Posted by Brian Cain 10 hours ago
From: Taylor Simpson <ltaylorsimpson@gmail.com>

This can easily be done in C with opcodes_def_generated.h.inc

Note that gen_tcg_func_table.py has some logic to skip instructions.
However, there aren't any instructions currently in the code that would
be skipped by this logic.  So, it is safe to base the table on the
complete opcodes table.

Signed-off-by: Taylor Simpson <ltaylorsimpson@gmail.com>
Reviewed-by: Brian Cain <brian.cain@oss.qualcomm.com>
Tested-by: Brian Cain <brian.cain@oss.qualcomm.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Brian Cain <brian.cain@oss.qualcomm.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 cecaece4ae..445de8db60 100644
--- a/target/hexagon/genptr.c
+++ b/target/hexagon/genptr.c
@@ -1454,4 +1454,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 d26787a9b9..d169cf71b2 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.34.1