[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v5 00/14] target/hexagon: introduce idef-parser
From: |
Alessandro Di Federico |
Subject: |
[PATCH v5 00/14] target/hexagon: introduce idef-parser |
Date: |
Sat, 19 Jun 2021 11:36:59 +0200 |
From: Alessandro Di Federico <ale@rev.ng>
This patchset introduces the idef-parser for target/hexagon.
It's the fifth iteration of the patchset and includes fixes suggested in
previous iterations.
This patchset also drops some macro overrides that are no longer
necessary, since the instructions they were handling are now implemented
in `idef-parser`.
`idef-parser` is a build-time tool built using flex and bison. Its aim
is to generate a large part of the tiny code generator frontend for
Hexagon. The prototype of idef-parser has been presented at KVM Forum
2019 ("QEMU-Hexagon: Automatic Translation of the ISA Manual Pseudcode
to Tiny Code Instructions"):
https://www.youtube.com/watch?v=3EpnTYBOXCI
`target/hexagon/idef-parser/README.rst` provides an overview of the
parser and its inner working.
A couple of notes:
* `idef-parser` also supports certain things that are not used in the
most recently submitted version of the "Hexagon patch
series". However, they will be needed and stripping them out of the
parser is quite a bit of work.
* The build on the CI fails for the cross-i386-* jobs. This seems to be
due to the fact that, despite we specified glib as a native
dependency, meson still chooses the i386 bit version of the library,
as opposed to the x86-64.
Help on this matter is appreciated.
We also introduced a commit to make sure containers produced by the
developer Docker registry (as opposed to the official one) is
used. Otherwise, the changes we made to the containers would not
take effect.
Building debian-hexagon-cross still fails since it's not built by
the CI by default.
Alessandro Di Federico (6):
tcg: expose TCGCond manipulation routines
target/hexagon: update MAINTAINERS for idef-parser
target/hexagon: import README for idef-parser
target/hexagon: prepare input for the idef-parser
target/hexagon: call idef-parser functions
gitlab-ci: do not use qemu-project Docker registry
Niccolò Izzo (2):
target/hexagon: introduce new helper functions
target/hexagon: import additional tests
Paolo Montesel (6):
target/hexagon: make slot number an unsigned
target/hexagon: make helper functions non-static
target/hexagon: expose next PC in DisasContext
target/hexagon: import lexer for idef-parser
target/hexagon: import parser for idef-parser
target/hexagon: remove unused macros and functions
.gitlab-ci.d/container-cross.yml | 2 +-
.gitlab-ci.d/container-template.yml | 4 +-
MAINTAINERS | 8 +
include/tcg/tcg-cond.h | 101 +
include/tcg/tcg.h | 70 +-
target/hexagon/README | 5 +
target/hexagon/gen_helper_funcs.py | 5 +-
target/hexagon/gen_helper_protos.py | 5 +-
target/hexagon/gen_idef_parser_funcs.py | 114 +
target/hexagon/gen_tcg.h | 528 ----
target/hexagon/gen_tcg_funcs.py | 28 +-
target/hexagon/genptr.c | 250 +-
target/hexagon/genptr.h | 29 +
target/hexagon/hex_common.py | 10 +
target/hexagon/idef-parser/README.rst | 447 +++
target/hexagon/idef-parser/idef-parser.h | 262 ++
target/hexagon/idef-parser/idef-parser.lex | 597 ++++
target/hexagon/idef-parser/idef-parser.y | 961 +++++++
target/hexagon/idef-parser/macros.inc | 153 ++
target/hexagon/idef-parser/parser-helpers.c | 2396 +++++++++++++++++
target/hexagon/idef-parser/parser-helpers.h | 347 +++
target/hexagon/idef-parser/prepare | 24 +
target/hexagon/macros.h | 209 +-
target/hexagon/meson.build | 113 +-
target/hexagon/op_helper.c | 119 -
target/hexagon/translate.c | 3 +-
target/hexagon/translate.h | 1 +
tests/docker/dockerfiles/alpine.docker | 2 +
tests/docker/dockerfiles/centos8.docker | 2 +
tests/docker/dockerfiles/debian-amd64.docker | 2 +
tests/docker/dockerfiles/debian10.docker | 3 +
.../dockerfiles/fedora-i386-cross.docker | 3 +
.../dockerfiles/fedora-win32-cross.docker | 3 +
.../dockerfiles/fedora-win64-cross.docker | 3 +
tests/docker/dockerfiles/fedora.docker | 2 +
tests/docker/dockerfiles/opensuse-leap.docker | 2 +
tests/docker/dockerfiles/ubuntu.docker | 3 +
tests/docker/dockerfiles/ubuntu1804.docker | 3 +
tests/docker/dockerfiles/ubuntu2004.docker | 5 +-
tests/tcg/hexagon/Makefile.target | 36 +-
tests/tcg/hexagon/crt.S | 28 +
tests/tcg/hexagon/test_abs.S | 20 +
tests/tcg/hexagon/test_add.S | 20 +
tests/tcg/hexagon/test_andp.S | 23 +
tests/tcg/hexagon/test_bitcnt.S | 42 +
tests/tcg/hexagon/test_bitsplit.S | 25 +
tests/tcg/hexagon/test_call.S | 63 +
tests/tcg/hexagon/test_clobber.S | 35 +
tests/tcg/hexagon/test_cmp.S | 34 +
tests/tcg/hexagon/test_cmpy.S | 31 +
tests/tcg/hexagon/test_djump.S | 24 +
tests/tcg/hexagon/test_dotnew.S | 39 +
tests/tcg/hexagon/test_dstore.S | 29 +
tests/tcg/hexagon/test_ext.S | 18 +
tests/tcg/hexagon/test_fibonacci.S | 33 +
tests/tcg/hexagon/test_hello.S | 21 +
tests/tcg/hexagon/test_hl.S | 19 +
tests/tcg/hexagon/test_hwloops.S | 25 +
tests/tcg/hexagon/test_jmp.S | 25 +
tests/tcg/hexagon/test_lsr.S | 39 +
tests/tcg/hexagon/test_mpyi.S | 20 +
tests/tcg/hexagon/test_overflow.S | 63 +
tests/tcg/hexagon/test_packet.S | 26 +
tests/tcg/hexagon/test_reorder.S | 31 +
tests/tcg/hexagon/test_round.S | 31 +
tests/tcg/hexagon/test_vavgw.S | 33 +
tests/tcg/hexagon/test_vcmpb.S | 32 +
tests/tcg/hexagon/test_vcmpw.S | 29 +
tests/tcg/hexagon/test_vcmpy.S | 50 +
tests/tcg/hexagon/test_vlsrw.S | 23 +
tests/tcg/hexagon/test_vmaxh.S | 37 +
tests/tcg/hexagon/test_vminh.S | 37 +
tests/tcg/hexagon/test_vpmpyh.S | 30 +
tests/tcg/hexagon/test_vspliceb.S | 33 +
74 files changed, 6875 insertions(+), 1053 deletions(-)
create mode 100644 include/tcg/tcg-cond.h
create mode 100644 target/hexagon/gen_idef_parser_funcs.py
create mode 100644 target/hexagon/idef-parser/README.rst
create mode 100644 target/hexagon/idef-parser/idef-parser.h
create mode 100644 target/hexagon/idef-parser/idef-parser.lex
create mode 100644 target/hexagon/idef-parser/idef-parser.y
create mode 100644 target/hexagon/idef-parser/macros.inc
create mode 100644 target/hexagon/idef-parser/parser-helpers.c
create mode 100644 target/hexagon/idef-parser/parser-helpers.h
create mode 100755 target/hexagon/idef-parser/prepare
create mode 100644 tests/tcg/hexagon/crt.S
create mode 100644 tests/tcg/hexagon/test_abs.S
create mode 100644 tests/tcg/hexagon/test_add.S
create mode 100644 tests/tcg/hexagon/test_andp.S
create mode 100644 tests/tcg/hexagon/test_bitcnt.S
create mode 100644 tests/tcg/hexagon/test_bitsplit.S
create mode 100644 tests/tcg/hexagon/test_call.S
create mode 100644 tests/tcg/hexagon/test_clobber.S
create mode 100644 tests/tcg/hexagon/test_cmp.S
create mode 100644 tests/tcg/hexagon/test_cmpy.S
create mode 100644 tests/tcg/hexagon/test_djump.S
create mode 100644 tests/tcg/hexagon/test_dotnew.S
create mode 100644 tests/tcg/hexagon/test_dstore.S
create mode 100644 tests/tcg/hexagon/test_ext.S
create mode 100644 tests/tcg/hexagon/test_fibonacci.S
create mode 100644 tests/tcg/hexagon/test_hello.S
create mode 100644 tests/tcg/hexagon/test_hl.S
create mode 100644 tests/tcg/hexagon/test_hwloops.S
create mode 100644 tests/tcg/hexagon/test_jmp.S
create mode 100644 tests/tcg/hexagon/test_lsr.S
create mode 100644 tests/tcg/hexagon/test_mpyi.S
create mode 100644 tests/tcg/hexagon/test_overflow.S
create mode 100644 tests/tcg/hexagon/test_packet.S
create mode 100644 tests/tcg/hexagon/test_reorder.S
create mode 100644 tests/tcg/hexagon/test_round.S
create mode 100644 tests/tcg/hexagon/test_vavgw.S
create mode 100644 tests/tcg/hexagon/test_vcmpb.S
create mode 100644 tests/tcg/hexagon/test_vcmpw.S
create mode 100644 tests/tcg/hexagon/test_vcmpy.S
create mode 100644 tests/tcg/hexagon/test_vlsrw.S
create mode 100644 tests/tcg/hexagon/test_vmaxh.S
create mode 100644 tests/tcg/hexagon/test_vminh.S
create mode 100644 tests/tcg/hexagon/test_vpmpyh.S
create mode 100644 tests/tcg/hexagon/test_vspliceb.S
--
2.31.1
- [PATCH v5 00/14] target/hexagon: introduce idef-parser,
Alessandro Di Federico <=
- [PATCH v5 01/14] tcg: expose TCGCond manipulation routines, Alessandro Di Federico, 2021/06/19
- [PATCH v5 05/14] target/hexagon: make helper functions non-static, Alessandro Di Federico, 2021/06/19
- [PATCH v5 04/14] target/hexagon: make slot number an unsigned, Alessandro Di Federico, 2021/06/19
- [PATCH v5 06/14] target/hexagon: introduce new helper functions, Alessandro Di Federico, 2021/06/19
- [PATCH v5 02/14] target/hexagon: update MAINTAINERS for idef-parser, Alessandro Di Federico, 2021/06/19