[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v2 00/10] target/hexagon: introduce idef-parser
From: |
Alessandro Di Federico |
Subject: |
[PATCH v2 00/10] target/hexagon: introduce idef-parser |
Date: |
Thu, 25 Feb 2021 16:18:46 +0100 |
From: Alessandro Di Federico <ale@rev.ng>
This patchset introduces the idef-parser for target/hexagon.
It's the second iteration of the patchset and includes fixes suggested
in the previous iteration.
`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.
* checkpatch.pl complains on a single macro which has a trailing
semi-colon, which is required.
Alessandro Di Federico (4):
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 (4):
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 +
target/hexagon/README | 5 +
target/hexagon/gen_idef_parser_funcs.py | 114 +
target/hexagon/gen_tcg_funcs.py | 28 +-
target/hexagon/genptr.c | 240 +-
target/hexagon/genptr.h | 26 +
target/hexagon/hex_common.py | 10 +
target/hexagon/idef-parser/README.rst | 447 ++++
target/hexagon/idef-parser/idef-parser.h | 245 +++
target/hexagon/idef-parser/idef-parser.lex | 647 ++++++
target/hexagon/idef-parser/idef-parser.y | 1250 +++++++++++
target/hexagon/idef-parser/macros.inc | 166 ++
target/hexagon/idef-parser/parser-helpers.c | 1925 +++++++++++++++++
target/hexagon/idef-parser/parser-helpers.h | 293 +++
target/hexagon/idef-parser/prepare | 33 +
target/hexagon/macros.h | 2 +-
target/hexagon/meson.build | 67 +-
target/hexagon/translate.c | 4 +-
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 | 2 +
.../dockerfiles/fedora-i386-cross.docker | 2 +
.../dockerfiles/fedora-win32-cross.docker | 2 +
.../dockerfiles/fedora-win64-cross.docker | 2 +
tests/docker/dockerfiles/fedora.docker | 2 +
tests/docker/dockerfiles/opensuse-leap.docker | 2 +
tests/docker/dockerfiles/ubuntu.docker | 2 +
tests/docker/dockerfiles/ubuntu1804.docker | 2 +
tests/docker/dockerfiles/ubuntu2004.docker | 4 +-
tests/tcg/hexagon/Makefile.target | 35 +-
tests/tcg/hexagon/crt.S | 28 +
tests/tcg/hexagon/first.S | 24 +-
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_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 +
66 files changed, 6568 insertions(+), 33 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 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_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.30.1
- [PATCH v2 00/10] target/hexagon: introduce idef-parser,
Alessandro Di Federico <=
- [PATCH v2 03/10] target/hexagon: make helper functions non-static, Alessandro Di Federico, 2021/02/25
- [PATCH v2 05/10] target/hexagon: expose next PC in DisasContext, Alessandro Di Federico, 2021/02/25
- [PATCH v2 01/10] target/hexagon: update MAINTAINERS for idef-parser, Alessandro Di Federico, 2021/02/25
- [PATCH v2 06/10] target/hexagon: prepare input for the idef-parser, Alessandro Di Federico, 2021/02/25
- [PATCH v2 02/10] target/hexagon: import README for idef-parser, Alessandro Di Federico, 2021/02/25