[PULL 00/44] Hexagon update

Taylor Simpson posted 44 patches 11 months, 3 weeks ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20230512214706.946068-1-tsimpson@quicinc.com
Maintainers: Laurent Vivier <laurent@vivier.eu>, Paolo Bonzini <pbonzini@redhat.com>, "Alex Bennée" <alex.bennee@linaro.org>, Thomas Huth <thuth@redhat.com>, Taylor Simpson <tsimpson@quicinc.com>, "Philippe Mathieu-Daudé" <philmd@linaro.org>, "Marc-André Lureau" <marcandre.lureau@redhat.com>, "Daniel P. Berrangé" <berrange@redhat.com>, Alessandro Di Federico <ale@rev.ng>, Anton Johansson <anjo@rev.ng>
There is a newer version of this series
MAINTAINERS                                        |   1 +
configure                                          |   2 +-
configs/targets/hexagon-linux-user.mak             |   1 +
meson.build                                        |   1 +
gdbstub/internals.h                                |   5 +
linux-user/hexagon/target_elf.h                    |  20 +-
target/hexagon/cpu.h                               |  17 +-
target/hexagon/gen_tcg.h                           | 138 +++++++-
target/hexagon/gen_tcg_hvx.h                       |  35 +++
target/hexagon/genptr.h                            |   6 +-
target/hexagon/helper.h                            |   6 +-
target/hexagon/idef-parser/parser-helpers.h        |   2 +-
target/hexagon/internal.h                          |   2 +
target/hexagon/macros.h                            |  57 ++--
target/hexagon/mmvec/macros.h                      |   9 +-
target/hexagon/op_helper.h                         |  16 +-
target/hexagon/translate.h                         |  52 ++-
target/hexagon/attribs_def.h.inc                   |  22 +-
gdbstub/gdbstub.c                                  |  37 ++-
gdbstub/softmmu.c                                  |  13 +-
gdbstub/user.c                                     |  24 +-
linux-user/hexagon/cpu_loop.c                      |   3 +
target/hexagon/arch.c                              |   3 +-
target/hexagon/cpu.c                               |  42 ++-
target/hexagon/decode.c                            |  30 +-
target/hexagon/gdbstub.c                           |  84 +++++
target/hexagon/genptr.c                            | 347 +++++++++++++++++----
target/hexagon/iclass.c                            |   6 +-
target/hexagon/idef-parser/parser-helpers.c        |  67 ++--
target/hexagon/op_helper.c                         | 154 ++++++---
target/hexagon/translate.c                         | 275 +++++++++++-----
tests/tcg/hexagon/fpstuff.c                        |  54 ++++
tests/tcg/hexagon/hvx_misc.c                       |  66 ++--
tests/tcg/hexagon/invalid-slots.c                  |  29 ++
tests/tcg/hexagon/misc.c                           |  47 +++
tests/tcg/hexagon/read_write_overlap.c             | 136 ++++++++
tests/tcg/hexagon/v68_hvx.c                        |  90 ++++++
tests/tcg/hexagon/v68_scalar.c                     | 186 +++++++++++
tests/tcg/hexagon/v69_hvx.c                        | 318 +++++++++++++++++++
tests/tcg/hexagon/v73_scalar.c                     |  96 ++++++
tests/tcg/hexagon/v6mpy_ref.c.inc                  | 161 ++++++++++
gdb-xml/hexagon-core.xml                           |  84 +++++
gdb-xml/hexagon-hvx.xml                            |  96 ++++++
target/hexagon/README                              |  14 +-
target/hexagon/gen_analyze_funcs.py                |  81 +++--
target/hexagon/gen_helper_funcs.py                 |  23 +-
target/hexagon/gen_helper_protos.py                |  12 +-
target/hexagon/gen_idef_parser_funcs.py            |  21 +-
target/hexagon/gen_tcg_funcs.py                    |  99 +++---
target/hexagon/hex_common.py                       |  19 +-
target/hexagon/idef-parser/idef-parser.lex         |  38 ++-
target/hexagon/idef-parser/idef-parser.y           |   6 +-
target/hexagon/imported/branch.idef                |   7 +-
target/hexagon/imported/encode_pp.def              |  21 +-
target/hexagon/imported/ldst.idef                  |  20 +-
target/hexagon/imported/mmvec/encode_ext.def       |  16 +-
target/hexagon/imported/mmvec/ext.idef             | 321 ++++++++++++++++++-
tests/guest-debug/run-test.py                      |  16 +-
tests/tcg/hexagon/Makefile.target                  |  21 ++
tests/tcg/multiarch/system/Makefile.softmmu-target |  16 +-
60 files changed, 3095 insertions(+), 496 deletions(-)
create mode 100644 tests/tcg/hexagon/invalid-slots.c
create mode 100644 tests/tcg/hexagon/read_write_overlap.c
create mode 100644 tests/tcg/hexagon/v68_hvx.c
create mode 100644 tests/tcg/hexagon/v68_scalar.c
create mode 100644 tests/tcg/hexagon/v69_hvx.c
create mode 100644 tests/tcg/hexagon/v73_scalar.c
create mode 100644 tests/tcg/hexagon/v6mpy_ref.c.inc
create mode 100644 gdb-xml/hexagon-core.xml
create mode 100644 gdb-xml/hexagon-hvx.xml
[PULL 00/44] Hexagon update
Posted by Taylor Simpson 11 months, 3 weeks ago
The following changes since commit 278238505d28d292927bff7683f39fb4fbca7fd1:

  Merge tag 'pull-tcg-20230511-2' of https://gitlab.com/rth7680/qemu into staging (2023-05-11 11:44:23 +0100)

are available in the Git repository at:

  https://github.com/quic/qemu tags/pull-hex-20230512-1

for you to fetch changes up to a1c042e1cc4c1da209f7c3e04aec5e622c7bcdc0:

  Hexagon (linux-user/hexagon): handle breakpoints (2023-05-12 14:43:14 -0700)

----------------------------------------------------------------
This PR can be broken down into the following parts
- Add support for new architecture versions v68/v69/v71/v73
- Short-circuit writes to temporaries when packet semantics permit this
- Move bookkeeping items from CPUHexagonState to DisasContext
- Correct '-cpu help' output and handling of unknown Hexagon versions
- Enable LLDB debugging
- Miscellaneous fixes and improvements

----------------------------------------------------------------
Brian Cain (1):
      Hexagon (gdbstub): fix p3:0 read and write via stub

Marco Liebel (1):
      Remove test_vshuff from hvx_misc tests

Matheus Tavares Bernardino (9):
      Hexagon (target/hexagon/*.py): raise exception on reg parsing error
      Hexagon: list available CPUs with `-cpu help`
      Hexagon: append eflags to unknown cpu model string
      Hexagon (iclass): update J4_hintjumpr slot constraints
      Hexagon (decode): look for pkts with multiple insns at the same slot
      gdbstub: only send stop-reply packets when allowed to
      gdbstub: add test for untimely stop-reply packets
      Hexagon: add core gdbstub xml data for LLDB
      Hexagon (linux-user/hexagon): handle breakpoints

Paolo Bonzini (1):
      target/hexagon: fix = vs. == mishap

Taylor Simpson (32):
      Hexagon (target/hexagon) Add support for v68/v69/v71/v73
      Hexagon (target/hexagon) Add v68 scalar instructions
      Hexagon (tests/tcg/hexagon) Add v68 scalar tests
      Hexagon (target/hexagon) Add v68 HVX instructions
      Hexagon (tests/tcg/hexagon) Add v68 HVX tests
      Hexagon (target/hexagon) Add v69 HVX instructions
      Hexagon (tests/tcg/hexagon) Add v69 HVX tests
      Hexagon (target/hexagon) Add v73 scalar instructions
      Hexagon (tests/tcg/hexagon) Add v73 scalar tests
      meson.build Add CONFIG_HEXAGON_IDEF_PARSER
      Hexagon (target/hexagon) Add DisasContext arg to gen_log_reg_write
      Hexagon (target/hexagon) Add overrides for loop setup instructions
      Hexagon (target/hexagon) Add overrides for allocframe/deallocframe
      Hexagon (target/hexagon) Add overrides for clr[tf]new
      Hexagon (target/hexagon) Remove log_reg_write from op_helper.[ch]
      Hexagon (target/hexagon) Eliminate uses of log_pred_write function
      Hexagon (target/hexagon) Clean up pred_written usage
      Hexagon (target/hexagon) Don't overlap dest writes with source reads
      Hexagon (target/hexagon) Mark registers as read during packet analysis
      Hexagon (target/hexagon) Short-circuit packet register writes
      Hexagon (target/hexagon) Short-circuit packet predicate writes
      Hexagon (target/hexagon) Short-circuit packet HVX writes
      Hexagon (target/hexagon) Short-circuit more HVX single instruction packets
      Hexagon (target/hexagon) Add overrides for disabled idef-parser insns
      Hexagon (target/hexagon) Make special new_value for USR
      Hexagon (target/hexagon) Move new_value to DisasContext
      Hexagon (target/hexagon) Move new_pred_value to DisasContext
      Hexagon (target/hexagon) Move pred_written to DisasContext
      Hexagon (target/hexagon) Move pkt_has_store_s1 to DisasContext
      Hexagon (target/hexagon) Move items to DisasContext
      Hexagon (target/hexagon) Additional instructions handled by idef-parser
      Hexagon (gdbstub): add HVX support

 MAINTAINERS                                        |   1 +
 configure                                          |   2 +-
 configs/targets/hexagon-linux-user.mak             |   1 +
 meson.build                                        |   1 +
 gdbstub/internals.h                                |   5 +
 linux-user/hexagon/target_elf.h                    |  20 +-
 target/hexagon/cpu.h                               |  17 +-
 target/hexagon/gen_tcg.h                           | 138 +++++++-
 target/hexagon/gen_tcg_hvx.h                       |  35 +++
 target/hexagon/genptr.h                            |   6 +-
 target/hexagon/helper.h                            |   6 +-
 target/hexagon/idef-parser/parser-helpers.h        |   2 +-
 target/hexagon/internal.h                          |   2 +
 target/hexagon/macros.h                            |  57 ++--
 target/hexagon/mmvec/macros.h                      |   9 +-
 target/hexagon/op_helper.h                         |  16 +-
 target/hexagon/translate.h                         |  52 ++-
 target/hexagon/attribs_def.h.inc                   |  22 +-
 gdbstub/gdbstub.c                                  |  37 ++-
 gdbstub/softmmu.c                                  |  13 +-
 gdbstub/user.c                                     |  24 +-
 linux-user/hexagon/cpu_loop.c                      |   3 +
 target/hexagon/arch.c                              |   3 +-
 target/hexagon/cpu.c                               |  42 ++-
 target/hexagon/decode.c                            |  30 +-
 target/hexagon/gdbstub.c                           |  84 +++++
 target/hexagon/genptr.c                            | 347 +++++++++++++++++----
 target/hexagon/iclass.c                            |   6 +-
 target/hexagon/idef-parser/parser-helpers.c        |  67 ++--
 target/hexagon/op_helper.c                         | 154 ++++++---
 target/hexagon/translate.c                         | 275 +++++++++++-----
 tests/tcg/hexagon/fpstuff.c                        |  54 ++++
 tests/tcg/hexagon/hvx_misc.c                       |  66 ++--
 tests/tcg/hexagon/invalid-slots.c                  |  29 ++
 tests/tcg/hexagon/misc.c                           |  47 +++
 tests/tcg/hexagon/read_write_overlap.c             | 136 ++++++++
 tests/tcg/hexagon/v68_hvx.c                        |  90 ++++++
 tests/tcg/hexagon/v68_scalar.c                     | 186 +++++++++++
 tests/tcg/hexagon/v69_hvx.c                        | 318 +++++++++++++++++++
 tests/tcg/hexagon/v73_scalar.c                     |  96 ++++++
 tests/tcg/hexagon/v6mpy_ref.c.inc                  | 161 ++++++++++
 gdb-xml/hexagon-core.xml                           |  84 +++++
 gdb-xml/hexagon-hvx.xml                            |  96 ++++++
 target/hexagon/README                              |  14 +-
 target/hexagon/gen_analyze_funcs.py                |  81 +++--
 target/hexagon/gen_helper_funcs.py                 |  23 +-
 target/hexagon/gen_helper_protos.py                |  12 +-
 target/hexagon/gen_idef_parser_funcs.py            |  21 +-
 target/hexagon/gen_tcg_funcs.py                    |  99 +++---
 target/hexagon/hex_common.py                       |  19 +-
 target/hexagon/idef-parser/idef-parser.lex         |  38 ++-
 target/hexagon/idef-parser/idef-parser.y           |   6 +-
 target/hexagon/imported/branch.idef                |   7 +-
 target/hexagon/imported/encode_pp.def              |  21 +-
 target/hexagon/imported/ldst.idef                  |  20 +-
 target/hexagon/imported/mmvec/encode_ext.def       |  16 +-
 target/hexagon/imported/mmvec/ext.idef             | 321 ++++++++++++++++++-
 tests/guest-debug/run-test.py                      |  16 +-
 tests/tcg/hexagon/Makefile.target                  |  21 ++
 tests/tcg/multiarch/system/Makefile.softmmu-target |  16 +-
 60 files changed, 3095 insertions(+), 496 deletions(-)
 create mode 100644 tests/tcg/hexagon/invalid-slots.c
 create mode 100644 tests/tcg/hexagon/read_write_overlap.c
 create mode 100644 tests/tcg/hexagon/v68_hvx.c
 create mode 100644 tests/tcg/hexagon/v68_scalar.c
 create mode 100644 tests/tcg/hexagon/v69_hvx.c
 create mode 100644 tests/tcg/hexagon/v73_scalar.c
 create mode 100644 tests/tcg/hexagon/v6mpy_ref.c.inc
 create mode 100644 gdb-xml/hexagon-core.xml
 create mode 100644 gdb-xml/hexagon-hvx.xml
Re: [PULL 00/44] Hexagon update
Posted by Richard Henderson 11 months, 3 weeks ago
On 5/12/23 22:46, Taylor Simpson wrote:
> The following changes since commit 278238505d28d292927bff7683f39fb4fbca7fd1:
> 
>    Merge tag 'pull-tcg-20230511-2' ofhttps://gitlab.com/rth7680/qemu  into staging (2023-05-11 11:44:23 +0100)
> 
> are available in the Git repository at:
> 
>    https://github.com/quic/qemu  tags/pull-hex-20230512-1
> 
> for you to fetch changes up to a1c042e1cc4c1da209f7c3e04aec5e622c7bcdc0:
> 
>    Hexagon (linux-user/hexagon): handle breakpoints (2023-05-12 14:43:14 -0700)
> 
> ----------------------------------------------------------------
> This PR can be broken down into the following parts
> - Add support for new architecture versions v68/v69/v71/v73
> - Short-circuit writes to temporaries when packet semantics permit this
> - Move bookkeeping items from CPUHexagonState to DisasContext
> - Correct '-cpu help' output and handling of unknown Hexagon versions
> - Enable LLDB debugging
> - Miscellaneous fixes and improvements

Please always test 32-bit host.  You have a CI failure:

https://gitlab.com/qemu-project/qemu/-/jobs/4279656830#L873

/builds/qemu-project/qemu/target/hexagon/idef-parser/idef-parser.lex: In function 'yylex':
/builds/qemu-project/qemu/target/hexagon/idef-parser/idef-parser.lex:435:38: error: format 
'%lx' expects argument of type 'long unsigned int', but argument 2 has type 'int64_t' {aka 
'long long int'} [-Werror=format=]
   435 |                               printf("value = 0x%lx\n", value);
       |                                      ^~~~~~~~~~~~~~~~~  ~~~~~
       |                                                         |
       |                                                         int64_t {aka long long int}



r~
Re: [PULL 00/44] Hexagon update
Posted by Anton Johansson via 11 months, 3 weeks ago
On 5/13/23 12:22, Richard Henderson wrote:
> On 5/12/23 22:46, Taylor Simpson wrote:
>> The following changes since commit 
>> 278238505d28d292927bff7683f39fb4fbca7fd1:
>>
>>    Merge tag 'pull-tcg-20230511-2' ofhttps://gitlab.com/rth7680/qemu  
>> into staging (2023-05-11 11:44:23 +0100)
>>
>> are available in the Git repository at:
>>
>>    https://github.com/quic/qemu  tags/pull-hex-20230512-1
>>
>> for you to fetch changes up to a1c042e1cc4c1da209f7c3e04aec5e622c7bcdc0:
>>
>>    Hexagon (linux-user/hexagon): handle breakpoints (2023-05-12 
>> 14:43:14 -0700)
>>
>> ----------------------------------------------------------------
>> This PR can be broken down into the following parts
>> - Add support for new architecture versions v68/v69/v71/v73
>> - Short-circuit writes to temporaries when packet semantics permit this
>> - Move bookkeeping items from CPUHexagonState to DisasContext
>> - Correct '-cpu help' output and handling of unknown Hexagon versions
>> - Enable LLDB debugging
>> - Miscellaneous fixes and improvements
>
> Please always test 32-bit host.  You have a CI failure:
>
> https://gitlab.com/qemu-project/qemu/-/jobs/4279656830#L873
>
> /builds/qemu-project/qemu/target/hexagon/idef-parser/idef-parser.lex: 
> In function 'yylex':
> /builds/qemu-project/qemu/target/hexagon/idef-parser/idef-parser.lex:435:38: 
> error: format '%lx' expects argument of type 'long unsigned int', but 
> argument 2 has type 'int64_t' {aka 'long long int'} [-Werror=format=]
>   435 |                               printf("value = 0x%lx\n", value);
>       |                                      ^~~~~~~~~~~~~~~~~ ~~~~~
>       |                                                         |
>       | int64_t {aka long long int}
>
>
>
> r~
>
Agh, right! Let's just remove this printf, we're not printing anything 
on failing to
lex hex values, so why do it for decimal values.

-- 
Anton Johansson,
rev.ng Labs Srl.