[Qemu-devel] [PULL SUBSYSTEM s390x 00/33] s390x/tcg: Final Vector Instruction Support

David Hildenbrand posted 33 patches 4 years, 10 months ago
Test FreeBSD passed
Test s390x passed
Test checkpatch passed
Test asan passed
Test docker-mingw@fedora passed
Test docker-clang@ubuntu passed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20190605203403.29461-1-david@redhat.com
Maintainers: Richard Henderson <rth@twiddle.net>, Laurent Vivier <laurent@vivier.eu>, David Hildenbrand <david@redhat.com>, Cornelia Huck <cohuck@redhat.com>, Riku Voipio <riku.voipio@iki.fi>, Christian Borntraeger <borntraeger@de.ibm.com>, Halil Pasic <pasic@linux.ibm.com>
There is a newer version of this series
hw/s390x/s390-virtio-ccw.c       |   2 +
include/elf.h                    |   1 +
linux-user/elfload.c             |  28 ++
linux-user/s390x/signal.c        |   4 +-
target/s390x/Makefile.objs       |   3 +-
target/s390x/arch_dump.c         |   8 +-
target/s390x/cpu.c               |   3 +
target/s390x/cpu.h               |   5 +-
target/s390x/cpu_models.c        |   4 +-
target/s390x/excp_helper.c       |  21 +-
target/s390x/fpu_helper.c        |   4 +-
target/s390x/gdbstub.c           |  16 +-
target/s390x/gen-features.c      |  10 +-
target/s390x/helper.c            |  10 +-
target/s390x/helper.h            |  84 +++++
target/s390x/insn-data.def       |  58 +++
target/s390x/internal.h          |   4 +
target/s390x/kvm.c               |  16 +-
target/s390x/machine.c           | 128 +++----
target/s390x/misc_helper.c       |  11 +-
target/s390x/tcg_s390x.h         |   2 +
target/s390x/translate.c         |   2 +-
target/s390x/translate_vx.inc.c  | 507 +++++++++++++++++++++++--
target/s390x/vec.h               |  40 ++
target/s390x/vec_fpu_helper.c    | 625 +++++++++++++++++++++++++++++++
target/s390x/vec_string_helper.c | 473 +++++++++++++++++++++++
26 files changed, 1930 insertions(+), 139 deletions(-)
create mode 100644 target/s390x/vec_fpu_helper.c
create mode 100644 target/s390x/vec_string_helper.c
[Qemu-devel] [PULL SUBSYSTEM s390x 00/33] s390x/tcg: Final Vector Instruction Support
Posted by David Hildenbrand 4 years, 10 months ago
This pull request is not for master.

Hi Cornelia,

The following changes since commit dd5382ad6deb5a07ec3c72b2c3cce36ce1307a57:

  vfio-ccw: support async command subregion (2019-06-05 07:55:18 +0200)

are available in the Git repository at:

  https://github.com/davidhildenbrand/qemu.git tags/s390x-tcg-2019-06-05

for you to fetch changes up to cebb5e9c211764f9b7d0ad205cc81632f2609667:

  linux-user: elf: ELF_HWCAP for s390x (2019-06-05 16:48:29 +0200)

----------------------------------------------------------------
Finalize implementation of the "Vector Facility" for s390x TCG. Add it
to the QEMU CPU model, so it is enabled as default.
Also:
- One fix (and one workaround) for the STFLE instruction
- Fix the alignment of vector registers (and change the data type)
- Properly generate ELF_HWCAP for s390x for linux-user
- Use a gvec helper for VECTOR SELECT

----------------------------------------------------------------
David Hildenbrand (32):
  s390x/tcg: Implement VECTOR FIND ANY ELEMENT EQUAL
  s390x/tcg: Implement VECTOR FIND ELEMENT EQUAL
  s390x/tcg: Implement VECTOR FIND ELEMENT NOT EQUAL
  s390x/tcg: Implement VECTOR ISOLATE STRING
  s390x/tcg: Implement VECTOR STRING RANGE COMPARE
  s390x: Align vector registers to 16 bytes
  s390x: Use uint64_t for vector registers
  s390x/tcg: Fix max_byte detection for stfle
  s390x/tcg: Store only the necessary amount of doublewords for STFLE
  s390x/tcg: Introduce tcg_s390_vector_exception()
  s390x/tcg: Export float_comp_to_cc() and float(32|64|128)_dcmask()
  s390x/tcg: Implement VECTOR FP ADD
  s390x/tcg: Implement VECTOR FP COMPARE (AND SIGNAL) SCALAR
  s390x/tcg: Implement VECTOR FP COMPARE (EQUAL|HIGH|HIGH OR EQUAL)
  s390x/tcg: Implement VECTOR FP CONVERT FROM FIXED 64-BIT
  s390x/tcg: Implement VECTOR FP CONVERT FROM LOGICAL 64-BIT
  s390x/tcg: Implement VECTOR FP CONVERT TO FIXED 64-BIT
  s390x/tcg: Implement VECTOR FP CONVERT TO LOGICAL 64-BIT
  s390x/tcg: Implement VECTOR FP DIVIDE
  s390x/tcg: Implement VECTOR LOAD FP INTEGER
  s390x/tcg: Implement VECTOR LOAD LENGTHENED
  s390x/tcg: Implement VECTOR LOAD ROUNDED
  s390x/tcg: Implement VECTOR FP MULTIPLY
  s390x/tcg: Implement VECTOR FP MULTIPLY AND (ADD|SUBTRACT)
  s390x/tcg: Implement VECTOR FP PERFORM SIGN OPERATION
  s390x/tcg: Implement VECTOR FP SQUARE ROOT
  s390x/tcg: Implement VECTOR FP SUBTRACT
  s390x/tcg: Implement VECTOR FP TEST DATA CLASS IMMEDIATE
  s390x/tcg: Allow linux-user to use vector instructions
  s390x/tcg: We support the Vector Facility
  s390x: Bump the "qemu" CPU model up to a stripped-down z13
  linux-user: elf: ELF_HWCAP for s390x

Richard Henderson (1):
  s390x/tcg: Use tcg_gen_gvec_bitsel for VECTOR SELECT

 hw/s390x/s390-virtio-ccw.c       |   2 +
 include/elf.h                    |   1 +
 linux-user/elfload.c             |  28 ++
 linux-user/s390x/signal.c        |   4 +-
 target/s390x/Makefile.objs       |   3 +-
 target/s390x/arch_dump.c         |   8 +-
 target/s390x/cpu.c               |   3 +
 target/s390x/cpu.h               |   5 +-
 target/s390x/cpu_models.c        |   4 +-
 target/s390x/excp_helper.c       |  21 +-
 target/s390x/fpu_helper.c        |   4 +-
 target/s390x/gdbstub.c           |  16 +-
 target/s390x/gen-features.c      |  10 +-
 target/s390x/helper.c            |  10 +-
 target/s390x/helper.h            |  84 +++++
 target/s390x/insn-data.def       |  58 +++
 target/s390x/internal.h          |   4 +
 target/s390x/kvm.c               |  16 +-
 target/s390x/machine.c           | 128 +++----
 target/s390x/misc_helper.c       |  11 +-
 target/s390x/tcg_s390x.h         |   2 +
 target/s390x/translate.c         |   2 +-
 target/s390x/translate_vx.inc.c  | 507 +++++++++++++++++++++++--
 target/s390x/vec.h               |  40 ++
 target/s390x/vec_fpu_helper.c    | 625 +++++++++++++++++++++++++++++++
 target/s390x/vec_string_helper.c | 473 +++++++++++++++++++++++
 26 files changed, 1930 insertions(+), 139 deletions(-)
 create mode 100644 target/s390x/vec_fpu_helper.c
 create mode 100644 target/s390x/vec_string_helper.c

-- 
2.21.0


Re: [Qemu-devel] [PULL SUBSYSTEM s390x 00/33] s390x/tcg: Final Vector Instruction Support
Posted by Cornelia Huck 4 years, 10 months ago
On Wed,  5 Jun 2019 22:33:30 +0200
David Hildenbrand <david@redhat.com> wrote:

> This pull request is not for master.
> 
> Hi Cornelia,
> 
> The following changes since commit dd5382ad6deb5a07ec3c72b2c3cce36ce1307a57:
> 
>   vfio-ccw: support async command subregion (2019-06-05 07:55:18 +0200)
> 
> are available in the Git repository at:
> 
>   https://github.com/davidhildenbrand/qemu.git tags/s390x-tcg-2019-06-05
> 
> for you to fetch changes up to cebb5e9c211764f9b7d0ad205cc81632f2609667:
> 
>   linux-user: elf: ELF_HWCAP for s390x (2019-06-05 16:48:29 +0200)
> 
> ----------------------------------------------------------------
> Finalize implementation of the "Vector Facility" for s390x TCG. Add it
> to the QEMU CPU model, so it is enabled as default.
> Also:
> - One fix (and one workaround) for the STFLE instruction
> - Fix the alignment of vector registers (and change the data type)
> - Properly generate ELF_HWCAP for s390x for linux-user
> - Use a gvec helper for VECTOR SELECT
> 
> ----------------------------------------------------------------
> David Hildenbrand (32):
>   s390x/tcg: Implement VECTOR FIND ANY ELEMENT EQUAL
>   s390x/tcg: Implement VECTOR FIND ELEMENT EQUAL
>   s390x/tcg: Implement VECTOR FIND ELEMENT NOT EQUAL
>   s390x/tcg: Implement VECTOR ISOLATE STRING
>   s390x/tcg: Implement VECTOR STRING RANGE COMPARE
>   s390x: Align vector registers to 16 bytes
>   s390x: Use uint64_t for vector registers
>   s390x/tcg: Fix max_byte detection for stfle
>   s390x/tcg: Store only the necessary amount of doublewords for STFLE
>   s390x/tcg: Introduce tcg_s390_vector_exception()
>   s390x/tcg: Export float_comp_to_cc() and float(32|64|128)_dcmask()
>   s390x/tcg: Implement VECTOR FP ADD
>   s390x/tcg: Implement VECTOR FP COMPARE (AND SIGNAL) SCALAR
>   s390x/tcg: Implement VECTOR FP COMPARE (EQUAL|HIGH|HIGH OR EQUAL)
>   s390x/tcg: Implement VECTOR FP CONVERT FROM FIXED 64-BIT
>   s390x/tcg: Implement VECTOR FP CONVERT FROM LOGICAL 64-BIT
>   s390x/tcg: Implement VECTOR FP CONVERT TO FIXED 64-BIT
>   s390x/tcg: Implement VECTOR FP CONVERT TO LOGICAL 64-BIT
>   s390x/tcg: Implement VECTOR FP DIVIDE
>   s390x/tcg: Implement VECTOR LOAD FP INTEGER
>   s390x/tcg: Implement VECTOR LOAD LENGTHENED
>   s390x/tcg: Implement VECTOR LOAD ROUNDED
>   s390x/tcg: Implement VECTOR FP MULTIPLY
>   s390x/tcg: Implement VECTOR FP MULTIPLY AND (ADD|SUBTRACT)
>   s390x/tcg: Implement VECTOR FP PERFORM SIGN OPERATION
>   s390x/tcg: Implement VECTOR FP SQUARE ROOT
>   s390x/tcg: Implement VECTOR FP SUBTRACT
>   s390x/tcg: Implement VECTOR FP TEST DATA CLASS IMMEDIATE
>   s390x/tcg: Allow linux-user to use vector instructions
>   s390x/tcg: We support the Vector Facility
>   s390x: Bump the "qemu" CPU model up to a stripped-down z13
>   linux-user: elf: ELF_HWCAP for s390x
> 
> Richard Henderson (1):
>   s390x/tcg: Use tcg_gen_gvec_bitsel for VECTOR SELECT
> 
>  hw/s390x/s390-virtio-ccw.c       |   2 +
>  include/elf.h                    |   1 +
>  linux-user/elfload.c             |  28 ++
>  linux-user/s390x/signal.c        |   4 +-
>  target/s390x/Makefile.objs       |   3 +-
>  target/s390x/arch_dump.c         |   8 +-
>  target/s390x/cpu.c               |   3 +
>  target/s390x/cpu.h               |   5 +-
>  target/s390x/cpu_models.c        |   4 +-
>  target/s390x/excp_helper.c       |  21 +-
>  target/s390x/fpu_helper.c        |   4 +-
>  target/s390x/gdbstub.c           |  16 +-
>  target/s390x/gen-features.c      |  10 +-
>  target/s390x/helper.c            |  10 +-
>  target/s390x/helper.h            |  84 +++++
>  target/s390x/insn-data.def       |  58 +++
>  target/s390x/internal.h          |   4 +
>  target/s390x/kvm.c               |  16 +-
>  target/s390x/machine.c           | 128 +++----
>  target/s390x/misc_helper.c       |  11 +-
>  target/s390x/tcg_s390x.h         |   2 +
>  target/s390x/translate.c         |   2 +-
>  target/s390x/translate_vx.inc.c  | 507 +++++++++++++++++++++++--
>  target/s390x/vec.h               |  40 ++
>  target/s390x/vec_fpu_helper.c    | 625 +++++++++++++++++++++++++++++++
>  target/s390x/vec_string_helper.c | 473 +++++++++++++++++++++++
>  26 files changed, 1930 insertions(+), 139 deletions(-)
>  create mode 100644 target/s390x/vec_fpu_helper.c
>  create mode 100644 target/s390x/vec_string_helper.c
> 

Thanks, pulled.