[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v7 00/13] target/hexagon: introduce idef-parser
From: |
Anton Johansson |
Subject: |
[PATCH v7 00/13] target/hexagon: introduce idef-parser |
Date: |
Fri, 17 Dec 2021 10:01:16 +0100 |
This patchset introduces the idef-parser for target/hexagon.
It's the seventh 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:
* Other than minor changes, tweaks, and cleanup, this patchset includes
one change to the type system of idef-parser. Variables in the parser
are no longer automatically typed, but we instead rely on declartions
found inside `fHIDE(int var;)` macros in the input code.
* These commits build successfully on the CI (including using clang),
with one notable exception. Presently, the `build-user-hexagon` job
fails due to not being able to find `flex`. We believe this to be
caused by `debian-hexagon-cross` not being built by the CI.
Last patch, 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.
However, as Daniel pointed out, our solution is a hack.
Since this is a problem only for developers when introducing new
dependencies for the containers, we might consider not merging the
last patch at all. But it's required in order to get some success in
testing on the CI it required.
Help on these matters is appreciated.
Alessandro Di Federico (5):
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
Anton Johansson (1):
target/hexagon: import parser for idef-parser
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 flex/bison to docker files
target/hexagon: import lexer for idef-parser
.gitlab-ci.d/container-cross.yml | 2 +-
.gitlab-ci.d/container-template.yml | 4 +-
.gitlab-ci.d/windows.yml | 2 +
MAINTAINERS | 11 +-
meson_options.txt | 3 +
target/hexagon/README | 5 +
target/hexagon/gen_helper_funcs.py | 16 +-
target/hexagon/gen_helper_protos.py | 16 +-
target/hexagon/gen_idef_parser_funcs.py | 123 +
target/hexagon/gen_tcg_funcs.py | 39 +-
target/hexagon/genptr.c | 229 +-
target/hexagon/genptr.h | 44 +
target/hexagon/helper.h | 2 +
target/hexagon/hex_common.py | 10 +
target/hexagon/idef-parser/README.rst | 722 +++++
target/hexagon/idef-parser/idef-parser.h | 259 ++
target/hexagon/idef-parser/idef-parser.lex | 571 ++++
target/hexagon/idef-parser/idef-parser.y | 1064 +++++++
target/hexagon/idef-parser/macros.inc | 140 +
target/hexagon/idef-parser/parser-helpers.c | 2548 +++++++++++++++++
target/hexagon/idef-parser/parser-helpers.h | 379 +++
target/hexagon/idef-parser/prepare | 24 +
target/hexagon/macros.h | 11 +-
target/hexagon/meson.build | 137 +-
target/hexagon/op_helper.c | 39 +-
target/hexagon/op_helper.h | 37 +
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/debian-native.docker | 3 +
.../dockerfiles/debian-riscv64-cross.docker | 3 +
.../dockerfiles/debian-tricore-cross.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 | 2 +
tests/docker/dockerfiles/ubuntu2004.docker | 2 +
tests/tcg/hexagon/Makefile.target | 30 +-
tests/tcg/hexagon/crt.S | 26 +
tests/tcg/hexagon/test_abs.S | 20 +
tests/tcg/hexagon/test_bitcnt.S | 42 +
tests/tcg/hexagon/test_bitsplit.S | 25 +
tests/tcg/hexagon/test_call.S | 60 +
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_dotnew.S | 36 +
tests/tcg/hexagon/test_ext.S | 16 +
tests/tcg/hexagon/test_fibonacci.S | 33 +
tests/tcg/hexagon/test_hl.S | 19 +
tests/tcg/hexagon/test_hwloops.S | 22 +
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 | 29 +
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 +
73 files changed, 7353 insertions(+), 91 deletions(-)
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 target/hexagon/op_helper.h
create mode 100644 tests/tcg/hexagon/crt.S
create mode 100644 tests/tcg/hexagon/test_abs.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_dotnew.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_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.33.1
- [PATCH v7 00/13] target/hexagon: introduce idef-parser,
Anton Johansson <=
- [PATCH v7 02/13] target/hexagon: import README for idef-parser, Anton Johansson, 2021/12/17
- [PATCH v7 08/13] target/hexagon: import flex/bison to docker files, Anton Johansson, 2021/12/17
- [PATCH v7 09/13] target/hexagon: import lexer for idef-parser, Anton Johansson, 2021/12/17
- [PATCH v7 04/13] target/hexagon: make helper functions non-static, Anton Johansson, 2021/12/17
- [PATCH v7 03/13] target/hexagon: make slot number an unsigned, Anton Johansson, 2021/12/17
- [PATCH v7 11/13] target/hexagon: call idef-parser functions, Anton Johansson, 2021/12/17