From: Alessandro Di Federico via <qemu-devel@nongnu.org>
To: qemu-devel@nongnu.org
Cc: tsimpson@quicinc.com, bcain@quicinc.com, babush@rev.ng,
nizzo@rev.ng, philmd@redhat.com, richard.henderson@linaro.org,
Alessandro Di Federico <ale@rev.ng>
Subject: [PATCH v4 00/12] target/hexagon: introduce idef-parser
Date: Thu, 15 Apr 2021 18:34:43 +0200 [thread overview]
Message-ID: <20210415163455.3839169-1-ale.qemu@rev.ng> (raw)
From: Alessandro Di Federico <ale@rev.ng>
This patchset introduces the idef-parser for target/hexagon.
It's the fourth iteration of the patchset and includes fixes suggested
in previous iterations.
`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.
The `clang-user` build fails too, but seems to be due reasons not
concerning this patchset.
* Unlike the last iteration of this patchset, we no longer use local
temps, which were detrimental for performance. Now, in order to
handle side effects in ternary operators, the parser keeps track of
nested ternary operators and their conditions. We then exploit that
information to turn the side effect itself into a `movcond`. This is
done by emitting a series of `and` instructions on the nested
ternary operator conditions.
Alessandro Di Federico (5):
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
Niccolò Izzo (2):
target/hexagon: introduce new helper functions
target/hexagon: import additional tests
Paolo Montesel (5):
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
MAINTAINERS | 8 +
include/tcg/tcg-cond.h | 101 +
include/tcg/tcg.h | 70 +-
target/hexagon/README | 5 +
target/hexagon/gen_idef_parser_funcs.py | 114 +
target/hexagon/gen_tcg_funcs.py | 28 +-
target/hexagon/genptr.c | 201 +-
target/hexagon/genptr.h | 28 +
target/hexagon/hex_common.py | 10 +
target/hexagon/idef-parser/README.rst | 447 ++++
target/hexagon/idef-parser/idef-parser.h | 254 ++
target/hexagon/idef-parser/idef-parser.lex | 611 +++++
target/hexagon/idef-parser/idef-parser.y | 947 +++++++
target/hexagon/idef-parser/macros.inc | 150 ++
target/hexagon/idef-parser/parser-helpers.c | 2374 +++++++++++++++++
target/hexagon/idef-parser/parser-helpers.h | 347 +++
target/hexagon/idef-parser/prepare | 24 +
target/hexagon/macros.h | 11 +-
target/hexagon/meson.build | 67 +-
target/hexagon/translate.c | 3 +-
target/hexagon/translate.h | 1 +
tests/docker/dockerfiles/alpine.docker | 2 +
tests/docker/dockerfiles/centos7.docker | 2 +
tests/docker/dockerfiles/centos8.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 +
68 files changed, 6849 insertions(+), 89 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
next reply other threads:[~2021-04-15 16:54 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-04-15 16:34 Alessandro Di Federico via [this message]
2021-04-15 16:34 ` [PATCH v4 01/12] tcg: expose TCGCond manipulation routines Alessandro Di Federico via
2021-04-18 20:57 ` Richard Henderson
2021-04-15 16:34 ` [PATCH v4 02/12] target/hexagon: update MAINTAINERS for idef-parser Alessandro Di Federico via
2021-04-18 20:58 ` Richard Henderson
2021-04-15 16:34 ` [PATCH v4 03/12] target/hexagon: import README " Alessandro Di Federico via
2021-04-15 16:34 ` [PATCH v4 04/12] target/hexagon: make slot number an unsigned Alessandro Di Federico via
2021-04-18 21:10 ` Richard Henderson
2021-04-15 16:34 ` [PATCH v4 05/12] target/hexagon: make helper functions non-static Alessandro Di Federico via
2021-04-18 21:11 ` Richard Henderson
2021-04-15 16:34 ` [PATCH v4 06/12] target/hexagon: introduce new helper functions Alessandro Di Federico via
2021-04-18 21:31 ` Richard Henderson
2021-04-19 15:00 ` Taylor Simpson
2021-04-20 6:39 ` Alessandro Di Federico via
2021-04-15 16:34 ` [PATCH v4 07/12] target/hexagon: expose next PC in DisasContext Alessandro Di Federico via
2021-04-18 21:34 ` Richard Henderson
2021-04-15 16:34 ` [PATCH v4 08/12] target/hexagon: prepare input for the idef-parser Alessandro Di Federico via
2021-04-18 21:43 ` Richard Henderson
2021-04-15 16:34 ` [PATCH v4 09/12] target/hexagon: import lexer for idef-parser Alessandro Di Federico via
2021-04-27 2:01 ` Taylor Simpson
2021-04-28 10:25 ` Paolo Montesel
2021-04-28 15:55 ` Taylor Simpson
2021-04-29 10:53 ` Paolo Montesel
2021-04-15 16:34 ` [PATCH v4 10/12] target/hexagon: import parser " Alessandro Di Federico via
2021-04-15 16:34 ` [PATCH v4 11/12] target/hexagon: call idef-parser functions Alessandro Di Federico via
2021-04-29 15:59 ` Taylor Simpson
2021-04-15 16:34 ` [PATCH v4 12/12] target/hexagon: import additional tests Alessandro Di Federico via
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=20210415163455.3839169-1-ale.qemu@rev.ng \
--to=qemu-devel@nongnu.org \
--cc=ale.qemu@rev.ng \
--cc=ale@rev.ng \
--cc=babush@rev.ng \
--cc=bcain@quicinc.com \
--cc=nizzo@rev.ng \
--cc=philmd@redhat.com \
--cc=richard.henderson@linaro.org \
--cc=tsimpson@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).