diff mbox series

[v2,9/9] Hexagon (target/hexagon) Remove hex_common.read_attribs_file

Message ID 20240307032327.4799-10-ltaylorsimpson@gmail.com (mailing list archive)
State New, archived
Headers show
Series Clean up .new decode and scripts | expand

Commit Message

Taylor Simpson March 7, 2024, 3:23 a.m. UTC
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(-)

Comments

Philippe Mathieu-Daudé March 7, 2024, 10:09 a.m. UTC | #1
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>
Brian Cain March 29, 2024, 1:03 a.m. UTC | #2
> -----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 mbox series

Patch

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)