[Qemu-devel] [PATCH v2 00/41] s390x/tcg: Vector Instruction Support Part 2

David Hildenbrand posted 41 patches 5 years ago
Test docker-mingw@fedora passed
Test docker-clang@ubuntu failed
Test checkpatch passed
Test asan passed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20190416185301.25344-1-david@redhat.com
Maintainers: David Hildenbrand <david@redhat.com>, Richard Henderson <rth@twiddle.net>, Cornelia Huck <cohuck@redhat.com>
There is a newer version of this series
target/s390x/Makefile.objs      |    2 +-
target/s390x/cc_helper.c        |   17 +
target/s390x/helper.c           |    1 +
target/s390x/helper.h           |   86 ++
target/s390x/insn-data.def      |  137 +++
target/s390x/internal.h         |    1 +
target/s390x/translate.c        |    2 +
target/s390x/translate_vx.inc.c | 1473 +++++++++++++++++++++++++++++++
target/s390x/vec_int_helper.c   |  716 +++++++++++++++
tcg/tcg-op-gvec.c               |  139 +++
tcg/tcg-op-gvec.h               |   24 +
11 files changed, 2597 insertions(+), 1 deletion(-)
create mode 100644 target/s390x/vec_int_helper.c
[Qemu-devel] [PATCH v2 00/41] s390x/tcg: Vector Instruction Support Part 2
Posted by David Hildenbrand 5 years ago
This is the second part of vector instruction support for s390x. It is
based on the series soon to land upstream:
    [PATCH 0/9] tcg: Add tcg_gen_extract2_{i32,i64}

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

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, it is now possible to build a complete
kernel using rpmbuild as quite some issues have been sorted out.

In this part, all Vector Integer Instructions introduced with the
"Vector Facility" are added. Some instructions part of the Vector Extension
Facilities are also added.

v1 -> v2:
- Many suggestions and fixes as outlined by Richard H.
-- Mostly avoid oom helpers for 128-bit add/sub variants
-- New vector helpers are not considered for now

David Hildenbrand (41):
  tcg: Implement tcg_gen_gvec_3i()
  s390x/tcg: Implement VECTOR ADD
  s390x/tcg: Implement VECTOR ADD COMPUTE CARRY
  s390x/tcg: Implement VECTOR ADD WITH CARRY
  s390x/tcg: Implement VECTOR ADD WITH CARRY COMPUTE CARRY
  s390x/tcg: Implement VECTOR AND (WITH COMPLEMENT)
  s390x/tcg: Implement VECTOR AVERAGE
  s390x/tcg: Implement VECTOR AVERAGE LOGICAL
  s390x/tcg: Implement VECTOR CHECKSUM
  s390x/tcg: Implement VECTOR ELEMENT COMPARE *
  s390x/tcg: Implement VECTOR COMPARE *
  s390x/tcg: Implement VECTOR COUNT LEADING ZEROS
  s390x/tcg: Implement VECTOR COUNT TRAILING ZEROS
  s390x/tcg: Implement VECTOR EXCLUSIVE OR
  s390x/tcg: Implement VECTOR GALOIS FIELD MULTIPLY SUM (AND ACCUMULATE)
  s390x/tcg: Implement VECTOR LOAD COMPLEMENT
  s390x/tcg: Implement VECTOR LOAD POSITIVE
  s390x/tcg: Implement VECTOR (MAXIMUM|MINIMUM) (LOGICAL)
  s390x/tcg: Implement VECTOR MULTIPLY AND ADD *
  s390x/tcg: Implement VECTOR MULTIPLY *
  s390x/tcg: Implement VECTOR NAND
  s390x/tcg: Implement VECTOR NOR
  s390x/tcg: Implement VECTOR NOT EXCLUSIVE OR
  s390x/tcg: Implement VECTOR OR
  s390x/tcg: Implement VECTOR OR WITH COMPLEMENT
  s390x/tcg: Implement VECTOR POPULATION COUNT
  s390x/tcg: Implement VECTOR ELEMENT ROTATE LEFT LOGICAL
  s390x/tcg: Implement VECTOR ELEMENT ROTATE AND INSERT UNDER MASK
  s390x/tcg: Implement VECTOR ELEMENT SHIFT
  s390x/tcg: Implement VECTOR SHIFT LEFT (BY BYTE)
  s390x/tcg: Implement VECTOR SHIFT LEFT DOUBLE BY BYTE
  s390x/tcg: Implement VECTOR SHIFT RIGHT ARITHMETIC
  s390x/tcg: Implement VECTOR SHIFT RIGHT LOGICAL *
  s390x/tcg: Implement VECTOR SUBTRACT
  s390x/tcg: Implement VECTOR SUBTRACT COMPUTE BORROW INDICATION
  s390x/tcg: Implement VECTOR SUBTRACT WITH BORROW INDICATION
  s390x/tcg: Implement VECTOR SUBTRACT WITH BORROW COMPUTE BORROW
    INDICATION
  s390x/tcg: Implement VECTOR SUM ACROSS DOUBLEWORD
  s390x/tcg: Implement VECTOR SUM ACROSS QUADWORD
  s390x/tcg: Implement VECTOR SUM ACROSS WORD
  s390x/tcg: Implement VECTOR TEST UNDER MASK

 target/s390x/Makefile.objs      |    2 +-
 target/s390x/cc_helper.c        |   17 +
 target/s390x/helper.c           |    1 +
 target/s390x/helper.h           |   86 ++
 target/s390x/insn-data.def      |  137 +++
 target/s390x/internal.h         |    1 +
 target/s390x/translate.c        |    2 +
 target/s390x/translate_vx.inc.c | 1473 +++++++++++++++++++++++++++++++
 target/s390x/vec_int_helper.c   |  716 +++++++++++++++
 tcg/tcg-op-gvec.c               |  139 +++
 tcg/tcg-op-gvec.h               |   24 +
 11 files changed, 2597 insertions(+), 1 deletion(-)
 create mode 100644 target/s390x/vec_int_helper.c

-- 
2.20.1


Re: [Qemu-devel] [PATCH v2 00/41] s390x/tcg: Vector Instruction Support Part 2
Posted by Cornelia Huck 5 years ago
On Tue, 16 Apr 2019 20:52:20 +0200
David Hildenbrand <david@redhat.com> wrote:

> This is the second part of vector instruction support for s390x. It is
> based on the series soon to land upstream:
>     [PATCH 0/9] tcg: Add tcg_gen_extract2_{i32,i64}
> 
> 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
> 
> 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, it is now possible to build a complete
> kernel using rpmbuild as quite some issues have been sorted out.
> 
> In this part, all Vector Integer Instructions introduced with the
> "Vector Facility" are added. Some instructions part of the Vector Extension
> Facilities are also added.
> 
> v1 -> v2:
> - Many suggestions and fixes as outlined by Richard H.
> -- Mostly avoid oom helpers for 128-bit add/sub variants
> -- New vector helpers are not considered for now

FWIW, I'd prefer a pull request for that over picking 41 patches :)
(I'm unlikely to be able to provide more insightful review anyway ;)

Re: [Qemu-devel] [PATCH v2 00/41] s390x/tcg: Vector Instruction Support Part 2
Posted by David Hildenbrand 5 years ago
On 17.04.19 09:54, Cornelia Huck wrote:
> On Tue, 16 Apr 2019 20:52:20 +0200
> David Hildenbrand <david@redhat.com> wrote:
> 
>> This is the second part of vector instruction support for s390x. It is
>> based on the series soon to land upstream:
>>     [PATCH 0/9] tcg: Add tcg_gen_extract2_{i32,i64}
>>
>> 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
>>
>> 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, it is now possible to build a complete
>> kernel using rpmbuild as quite some issues have been sorted out.
>>
>> In this part, all Vector Integer Instructions introduced with the
>> "Vector Facility" are added. Some instructions part of the Vector Extension
>> Facilities are also added.
>>
>> v1 -> v2:
>> - Many suggestions and fixes as outlined by Richard H.
>> -- Mostly avoid oom helpers for 128-bit add/sub variants
>> -- New vector helpers are not considered for now
> 
> FWIW, I'd prefer a pull request for that over picking 41 patches :)
> (I'm unlikely to be able to provide more insightful review anyway ;)

Will do once the required patches are upstream and you rebased your
branch. Thanks!

-- 

Thanks,

David / dhildenb