qemu-s390x
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [qemu-s390x] [PATCH v3 00/32] s390x/tcg: Vector Instruction Support


From: Cornelia Huck
Subject: Re: [qemu-s390x] [PATCH v3 00/32] s390x/tcg: Vector Instruction Support Part 1
Date: Thu, 7 Mar 2019 17:35:34 +0100

On Thu,  7 Mar 2019 13:15:07 +0100
David Hildenbrand <address@hidden> wrote:

> This is the first part of vector instruction support for s390x. Parts
> will be sent and reviewed piece by piece.
> 
> Part 1: Vector Support Instructions
> Part 2: Vector Integer Instructions
> Part 3: Vector String Instructions
> Part 4: Vector Floating-Point Instructions
> 
> The current state can be found at (kept updated):
>     https://github.com/davidhildenbrand/qemu/tree/vx
> It is based on
>     https://github.com/cohuck/qemu/tree/s390-next
> 
> With the current state I can boot Linux kernel + user space compiled with
> SIMD support. This allows to boot distributions compiled exclusively for
> z13, requiring SIMD support. Also, I have a growing set of tests for
> kvm-unit-tests and tests/tcg which I cross-test on a real s390x system.
> 
> In this part, the basic infrastructure and all Vector Support Instructions
> introduced with the "Vector Facility" are added. The Vector Extension
> Facilities are not considered for now.
> 
> We make use of the existing gvec expansion + ool (out-of-line) support.
> This will be heavily used especially for part 2 (Integer Instructions)
> where we can actually reuse quite some existing gvec expansions.
> 
> v2 -> v3:
> - "s390x/tcg: Utilities for vector instruction helpers"
> -- inline helpers in header file
> - "s390x/tcg: Implement VECTOR LOAD MULTIPLE"
> -- optimize loading of last element
> - "s390x/tcg: Implement VECTOR PACK *"
> -- make the static funtion arrays const
> - "s390x/tcg: Implement VECTOR REPLICATE"
> -- use "tcg_gen_gvec_dup_mem"
> - "s390x/tcg: Provide probe_write helper"
> -- Add check for CONFIG_USER_ONLY
> -- Optimize calculation of length
> - Added r-b's
> 
> v1 -> v2:
> - Basically address all wonderful review comments from Richard (too many
>   to name them all)
> - Probe write access to get rid of FIXMEs
> - Heavily rework "s390x/tcg: Implement VECTOR PACK *"
> -- Process cc and !cc separately.
> -- Helper for VPK
> - Don't use a temporary vector register (for now)
> - Drop load_vec_element() and store_vec_element()
> - Use ES_* instead of MO_*, will come in handy when we use ES_128 later
> - .... many many other minor things
> 
> David Hildenbrand (32):
>   s390x/tcg: Define vector instruction formats
>   s390x/tcg: Check vector register instructions at central point
>   s390x/tcg: Utilities for vector instruction helpers
>   s390x/tcg: Implement VECTOR GATHER ELEMENT
>   s390x/tcg: Implement VECTOR GENERATE BYTE MASK
>   s390x/tcg: Implement VECTOR GENERATE MASK
>   s390x/tcg: Implement VECTOR LOAD
>   s390x/tcg: Implement VECTOR LOAD AND REPLICATE
>   s390x/tcg: Implement VECTOR LOAD ELEMENT
>   s390x/tcg: Implement VECTOR LOAD ELEMENT IMMEDIATE
>   s390x/tcg: Implement VECTOR LOAD GR FROM VR ELEMENT
>   s390x/tcg: Implement VECTOR LOAD LOGICAL ELEMENT AND ZERO
>   s390x/tcg: Implement VECTOR LOAD MULTIPLE
>   s390x/tcg: Implement VECTOR LOAD TO BLOCK BOUNDARY
>   s390x/tcg: Implement VECTOR LOAD VR ELEMENT FROM GR
>   s390x/tcg: Implement VECTOR LOAD VR FROM GRS DISJOINT
>   s390x/tcg: Implement VECTOR LOAD WITH LENGTH
>   s390x/tcg: Implement VECTOR MERGE (HIGH|LOW)
>   s390x/tcg: Implement VECTOR PACK *
>   s390x/tcg: Implement VECTOR PERMUTE
>   s390x/tcg: Implement VECTOR PERMUTE DOUBLEWORD IMMEDIATE
>   s390x/tcg: Implement VECTOR REPLICATE
>   s390x/tcg: Implement VECTOR REPLICATE IMMEDIATE
>   s390x/tcg: Implement VECTOR SCATTER ELEMENT
>   s390x/tcg: Implement VECTOR SELECT
>   s390x/tcg: Implement VECTOR SIGN EXTEND TO DOUBLEWORD
>   s390x/tcg: Provide probe_write_access helper
>   s390x/tcg: Implement VECTOR STORE
>   s390x/tcg: Implement VECTOR STORE ELEMENT
>   s390x/tcg: Implement VECTOR STORE MULTIPLE
>   s390x/tcg: Implement VECTOR STORE WITH LENGTH
>   s390x/tcg: Implement VECTOR UNPACK *
> 
>  target/s390x/Makefile.objs      |   1 +
>  target/s390x/cpu.h              |   7 +
>  target/s390x/helper.h           |  21 +
>  target/s390x/insn-data.def      |  82 +++
>  target/s390x/insn-format.def    |  25 +
>  target/s390x/internal.h         |   2 +
>  target/s390x/mem_helper.c       |  25 +
>  target/s390x/translate.c        |  61 ++-
>  target/s390x/translate_vx.inc.c | 935 ++++++++++++++++++++++++++++++++
>  target/s390x/vec.h              | 101 ++++
>  target/s390x/vec_helper.c       | 193 +++++++
>  11 files changed, 1452 insertions(+), 1 deletion(-)
>  create mode 100644 target/s390x/translate_vx.inc.c
>  create mode 100644 target/s390x/vec.h
>  create mode 100644 target/s390x/vec_helper.c
> 

Thanks, applied.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]