All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v11 00/15] target/hexagon: introduce idef-parser
@ 2022-08-04 11:55 Anton Johansson via
  2022-08-04 11:55 ` [PATCH v11 01/15] target/hexagon: update MAINTAINERS for idef-parser Anton Johansson via
                   ` (14 more replies)
  0 siblings, 15 replies; 26+ messages in thread
From: Anton Johansson via @ 2022-08-04 11:55 UTC (permalink / raw)
  To: qemu-devel
  Cc: ale, anjo, babush, nizzo, tsimpson, bcain, mlambert,
	richard.henderson, alex.bennee

This patchset introduces the idef-parser for target/hexagon.

It's the eleventh 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 Pseudocode
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.

Main changes in v11:

* Patches 8, 9, and 10 adds our build-time dependencies flex, bison, and
  a native glib2 to the CI. These have not been reviewed.

* Patch 12 has been added. It introduces some state in CPUHexagonState,
  and DisasContext necessary for idef-parser to deal with :mem_noshuf
  packets with a store in slot 1 and a predicated load in slot 0.

* Patches 8 and 9 from v10 of the patchset have been dropped. These
  dealt with updating libvirt-ci and fixing renamed package templates,
  this is already taken care of in upstream.

A couple of notes:

* 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/bison. This is due to
  the debian-hexagon-cross container not being built by the CI.

  As such the debian-hexagon-cross container will have to be manually
  rebuilt before merging.

* checkpatch.pl complains about the _Generic macro OUT_IMPL in
  idef-parser/parser-helpers.h which we believe to be correctly
  formatted. The complaints concern the `:` in the type "labels" of the
  macro, and also the `default:` label.

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

Anton Johansson (5):
  target/hexagon: add flex/bison/glib2 to qemu.yml
  target/hexagon: regenerate docker/cirrus files
  target/hexagon: manually add flex/bison/glib2 to remaining containers
  target/hexagon: prepare frontend for parser
  target/hexagon: import parser for idef-parser

Niccolò Izzo (2):
  target/hexagon: introduce new helper functions
  target/hexagon: import additional tests

Paolo Montesel (4):
  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

 .gitlab-ci.d/cirrus/freebsd-12.vars           |    2 +-
 .gitlab-ci.d/cirrus/freebsd-13.vars           |    2 +-
 .gitlab-ci.d/cirrus/macos-11.vars             |    2 +-
 .gitlab-ci.d/windows.yml                      |    6 +-
 MAINTAINERS                                   |    9 +
 meson_options.txt                             |    3 +
 target/hexagon/README                         |    5 +
 target/hexagon/cpu.h                          |    8 +
 target/hexagon/gen_helper_funcs.py            |   17 +-
 target/hexagon/gen_helper_protos.py           |   17 +-
 target/hexagon/gen_idef_parser_funcs.py       |  128 +
 target/hexagon/gen_tcg_funcs.py               |   41 +-
 target/hexagon/genptr.c                       |  243 +-
 target/hexagon/genptr.h                       |   46 +
 target/hexagon/hex_common.py                  |   10 +
 target/hexagon/idef-parser/README.rst         |  722 +++++
 target/hexagon/idef-parser/idef-parser.h      |  254 ++
 target/hexagon/idef-parser/idef-parser.lex    |  471 ++++
 target/hexagon/idef-parser/idef-parser.y      |  964 +++++++
 target/hexagon/idef-parser/macros.inc         |  140 +
 target/hexagon/idef-parser/parser-helpers.c   | 2351 +++++++++++++++++
 target/hexagon/idef-parser/parser-helpers.h   |  372 +++
 target/hexagon/idef-parser/prepare            |   24 +
 target/hexagon/macros.h                       |   11 +-
 target/hexagon/meson.build                    |  158 +-
 target/hexagon/op_helper.c                    |   29 +-
 target/hexagon/op_helper.h                    |   37 +
 target/hexagon/translate.c                    |   25 +-
 target/hexagon/translate.h                    |    3 +
 tests/docker/dockerfiles/alpine.docker        |    2 +
 tests/docker/dockerfiles/centos8.docker       |    2 +
 tests/docker/dockerfiles/debian-amd64.docker  |    2 +
 .../dockerfiles/debian-arm64-cross.docker     |    3 +
 .../dockerfiles/debian-armel-cross.docker     |    3 +
 .../dockerfiles/debian-armhf-cross.docker     |    3 +
 .../dockerfiles/debian-mips64el-cross.docker  |    3 +
 .../dockerfiles/debian-mipsel-cross.docker    |    3 +
 .../dockerfiles/debian-ppc64el-cross.docker   |    3 +
 .../dockerfiles/debian-riscv64-cross.docker   |    3 +
 .../dockerfiles/debian-s390x-cross.docker     |    3 +
 .../dockerfiles/debian-tricore-cross.docker   |    1 +
 tests/docker/dockerfiles/debian10.docker      |    3 +
 .../dockerfiles/fedora-i386-cross.docker      |    2 +
 .../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/ubuntu2004.docker    |    2 +
 tests/lcitool/projects/qemu.yml               |    3 +
 tests/tcg/hexagon/Makefile.target             |   28 +-
 tests/tcg/hexagon/crt.S                       |   14 +
 tests/tcg/hexagon/test_abs.S                  |   17 +
 tests/tcg/hexagon/test_bitcnt.S               |   40 +
 tests/tcg/hexagon/test_bitsplit.S             |   22 +
 tests/tcg/hexagon/test_call.S                 |   64 +
 tests/tcg/hexagon/test_clobber.S              |   29 +
 tests/tcg/hexagon/test_cmp.S                  |   31 +
 tests/tcg/hexagon/test_dotnew.S               |   38 +
 tests/tcg/hexagon/test_ext.S                  |   13 +
 tests/tcg/hexagon/test_fibonacci.S            |   30 +
 tests/tcg/hexagon/test_hl.S                   |   16 +
 tests/tcg/hexagon/test_hwloops.S              |   19 +
 tests/tcg/hexagon/test_jmp.S                  |   22 +
 tests/tcg/hexagon/test_lsr.S                  |   36 +
 tests/tcg/hexagon/test_mpyi.S                 |   17 +
 tests/tcg/hexagon/test_packet.S               |   29 +
 tests/tcg/hexagon/test_reorder.S              |   33 +
 tests/tcg/hexagon/test_round.S                |   29 +
 tests/tcg/hexagon/test_vavgw.S                |   31 +
 tests/tcg/hexagon/test_vcmpb.S                |   30 +
 tests/tcg/hexagon/test_vcmpw.S                |   30 +
 tests/tcg/hexagon/test_vlsrw.S                |   20 +
 tests/tcg/hexagon/test_vmaxh.S                |   35 +
 tests/tcg/hexagon/test_vminh.S                |   35 +
 tests/tcg/hexagon/test_vpmpyh.S               |   28 +
 tests/tcg/hexagon/test_vspliceb.S             |   31 +
 76 files changed, 6825 insertions(+), 93 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_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_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_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.37.0


^ permalink raw reply	[flat|nested] 26+ messages in thread

end of thread, other threads:[~2022-09-27 19:22 UTC | newest]

Thread overview: 26+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-08-04 11:55 [PATCH v11 00/15] target/hexagon: introduce idef-parser Anton Johansson via
2022-08-04 11:55 ` [PATCH v11 01/15] target/hexagon: update MAINTAINERS for idef-parser Anton Johansson via
2022-08-04 11:55 ` [PATCH v11 02/15] target/hexagon: import README " Anton Johansson via
2022-08-04 11:55 ` [PATCH v11 03/15] target/hexagon: make slot number an unsigned Anton Johansson via
2022-09-24 12:10   ` Philippe Mathieu-Daudé via
2022-09-27 18:01     ` Anton Johansson via
2022-08-04 11:55 ` [PATCH v11 04/15] target/hexagon: make helper functions non-static Anton Johansson via
2022-09-24 12:11   ` Philippe Mathieu-Daudé via
2022-08-04 11:55 ` [PATCH v11 05/15] target/hexagon: introduce new helper functions Anton Johansson via
2022-09-24 12:14   ` Philippe Mathieu-Daudé via
2022-08-04 11:55 ` [PATCH v11 06/15] target/hexagon: expose next PC in DisasContext Anton Johansson via
2022-09-24 12:22   ` Philippe Mathieu-Daudé via
2022-09-27 18:04     ` Anton Johansson via
2022-08-04 11:55 ` [PATCH v11 07/15] target/hexagon: prepare input for the idef-parser Anton Johansson via
2022-08-04 11:55 ` [PATCH v11 08/15] target/hexagon: add flex/bison/glib2 to qemu.yml Anton Johansson via
2022-09-23 13:39   ` Alex Bennée
2022-08-04 11:55 ` [PATCH v11 09/15] target/hexagon: regenerate docker/cirrus files Anton Johansson via
2022-08-04 11:55 ` [PATCH v11 10/15] target/hexagon: manually add flex/bison/glib2 to remaining containers Anton Johansson via
2022-09-23 13:42   ` Alex Bennée
2022-09-23 14:59     ` Anton Johansson via
2022-08-04 11:55 ` [PATCH v11 11/15] target/hexagon: import lexer for idef-parser Anton Johansson via
2022-08-04 11:55 ` [PATCH v11 12/15] target/hexagon: prepare frontend for parser Anton Johansson via
2022-08-08 20:30   ` Taylor Simpson
2022-08-04 11:55 ` [PATCH v11 13/15] target/hexagon: import parser for idef-parser Anton Johansson via
2022-08-04 11:55 ` [PATCH v11 14/15] target/hexagon: call idef-parser functions Anton Johansson via
2022-08-04 11:55 ` [PATCH v11 15/15] target/hexagon: import additional tests Anton Johansson via

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.