qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: "Philippe Mathieu-Daudé" <philmd@linaro.org>
To: Taylor Simpson <ltaylorsimpson@gmail.com>, qemu-devel@nongnu.org
Cc: brian.cain@oss.qualcomm.com, quic_mathbern@quicinc.com,
	sidneym@quicinc.com, quic_mliebel@quicinc.com,
	richard.henderson@linaro.org, ale@rev.ng, anjo@rev.ng
Subject: Re: [PATCH] Hexagon (target/hexagon) Remove gen_tcg_func_table.py
Date: Wed, 16 Apr 2025 08:18:13 +0200	[thread overview]
Message-ID: <c7588131-2c4f-4a66-8107-cba4df904278@linaro.org> (raw)
In-Reply-To: <20250415235542.71703-1-ltaylorsimpson@gmail.com>

Hi Taylor,

On 16/4/25 01:55, Taylor Simpson wrote:
> This can easily be done in C with opcodes_def_generated.h.inc
> 
> Signed-off-by: Taylor Simpson <ltaylorsimpson@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

What about all these skipped tags? IIUC gen_opcodes_def.py doesn't skip
them. If it isn't necessary to skip, please mention it in the commit
description for clarity.

Regards,

Phil.

> -
> -            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',



  reply	other threads:[~2025-04-16  6:19 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-04-15 23:55 [PATCH] Hexagon (target/hexagon) Remove gen_tcg_func_table.py Taylor Simpson
2025-04-16  6:18 ` Philippe Mathieu-Daudé [this message]
2025-04-16 14:45   ` ltaylorsimpson
2025-04-16 14:58     ` ltaylorsimpson
2025-04-17  7:09       ` Philippe Mathieu-Daudé
2025-04-17 15:55     ` Brian Cain

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=c7588131-2c4f-4a66-8107-cba4df904278@linaro.org \
    --to=philmd@linaro.org \
    --cc=ale@rev.ng \
    --cc=anjo@rev.ng \
    --cc=brian.cain@oss.qualcomm.com \
    --cc=ltaylorsimpson@gmail.com \
    --cc=qemu-devel@nongnu.org \
    --cc=quic_mathbern@quicinc.com \
    --cc=quic_mliebel@quicinc.com \
    --cc=richard.henderson@linaro.org \
    --cc=sidneym@quicinc.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).