mbox series

[v5,00/11] s390x/tcg: Implement Vector-Enhancements Facility 2

Message ID 20220323135722.1623-1-dmiller423@gmail.com (mailing list archive)
Headers show
Series s390x/tcg: Implement Vector-Enhancements Facility 2 | expand

Message

David Miller March 23, 2022, 1:57 p.m. UTC
Implement Vector-Enhancements Facility 2 for s390x

resolves: https://gitlab.com/qemu-project/qemu/-/issues/738

implements:
    VECTOR LOAD ELEMENTS REVERSED               (VLER)
    VECTOR LOAD BYTE REVERSED ELEMENTS          (VLBR)
    VECTOR LOAD BYTE REVERSED ELEMENT           (VLEBRH, VLEBRF, VLEBRG)
    VECTOR LOAD BYTE REVERSED ELEMENT AND ZERO  (VLLEBRZ)
    VECTOR LOAD BYTE REVERSED ELEMENT AND REPLICATE (VLBRREP)
    VECTOR STORE ELEMENTS REVERSED              (VSTER)
    VECTOR STORE BYTE REVERSED ELEMENTS         (VSTBR)
    VECTOR STORE BYTE REVERSED ELEMENTS         (VSTEBRH, VSTEBRF, VSTEBRG)
    VECTOR SHIFT LEFT DOUBLE BY BIT             (VSLD)
    VECTOR SHIFT RIGHT DOUBLE BY BIT            (VSRD)
    VECTOR STRING SEARCH                        (VSTRS)

    modifies:
    VECTOR FP CONVERT FROM FIXED                (VCFPS)
    VECTOR FP CONVERT FROM LOGICAL              (VCFPL)
    VECTOR FP CONVERT TO FIXED                  (VCSFP)
    VECTOR FP CONVERT TO LOGICAL                (VCLFP)
    VECTOR SHIFT LEFT                           (VSL)
    VECTOR SHIFT RIGHT ARITHMETIC               (VSRA)
    VECTOR SHIFT RIGHT LOGICAL                  (VSRL)


David Miller (9):
  tcg: Implement tcg_gen_{h,w}swap_{i32,i64}
  target/s390x: vxeh2: vector convert short/32b
  target/s390x: vxeh2: vector string search
  target/s390x: vxeh2: Update for changes to vector shifts
  target/s390x: vxeh2: vector shift double by bit
  target/s390x: vxeh2: vector {load, store} elements reversed
  target/s390x: vxeh2: vector {load, store} byte reversed elements
  target/s390x: vxeh2: vector {load, store} byte reversed element
  target/s390x: add S390_FEAT_VECTOR_ENH2 to qemu CPU model
  tests/tcg/s390x: Tests for Vector Enhancements Facility 2
  target/s390x: Fix writeback to v1 in helper_vstl

Richard Henderson (2):
  tcg: Implement tcg_gen_{h,w}swap_{i32,i64}
  target/s390x: Fix writeback to v1 in helper_vstl

 include/tcg/tcg-op.h                 |   6 +
 target/s390x/gen-features.c          |   2 +
 target/s390x/helper.h                |  13 +
 target/s390x/tcg/insn-data.def       |  40 ++-
 target/s390x/tcg/translate.c         |   3 +-
 target/s390x/tcg/translate_vx.c.inc  | 461 ++++++++++++++++++++++++---
 target/s390x/tcg/vec_fpu_helper.c    |  31 ++
 target/s390x/tcg/vec_helper.c        |   2 -
 target/s390x/tcg/vec_int_helper.c    |  55 ++++
 target/s390x/tcg/vec_string_helper.c |  99 ++++++
 tcg/tcg-op.c                         |  30 ++
 tests/tcg/s390x/Makefile.target      |   8 +
 tests/tcg/s390x/vx.h                 |  19 ++
 tests/tcg/s390x/vxeh2_vcvt.c         |  88 +++++
 tests/tcg/s390x/vxeh2_vlstr.c        | 139 ++++++++
 tests/tcg/s390x/vxeh2_vs.c           |  93 ++++++
 16 files changed, 1034 insertions(+), 55 deletions(-)
 create mode 100644 tests/tcg/s390x/vx.h
 create mode 100644 tests/tcg/s390x/vxeh2_vcvt.c
 create mode 100644 tests/tcg/s390x/vxeh2_vlstr.c
 create mode 100644 tests/tcg/s390x/vxeh2_vs.c

Comments

Christian Borntraeger April 25, 2022, 7:43 a.m. UTC | #1
Am 23.03.22 um 14:57 schrieb David Miller:
> Implement Vector-Enhancements Facility 2 for s390x
> 
> resolves: https://gitlab.com/qemu-project/qemu/-/issues/738
> 
> implements:
>      VECTOR LOAD ELEMENTS REVERSED               (VLER)
>      VECTOR LOAD BYTE REVERSED ELEMENTS          (VLBR)
>      VECTOR LOAD BYTE REVERSED ELEMENT           (VLEBRH, VLEBRF, VLEBRG)
>      VECTOR LOAD BYTE REVERSED ELEMENT AND ZERO  (VLLEBRZ)
>      VECTOR LOAD BYTE REVERSED ELEMENT AND REPLICATE (VLBRREP)
>      VECTOR STORE ELEMENTS REVERSED              (VSTER)
>      VECTOR STORE BYTE REVERSED ELEMENTS         (VSTBR)
>      VECTOR STORE BYTE REVERSED ELEMENTS         (VSTEBRH, VSTEBRF, VSTEBRG)
>      VECTOR SHIFT LEFT DOUBLE BY BIT             (VSLD)
>      VECTOR SHIFT RIGHT DOUBLE BY BIT            (VSRD)
>      VECTOR STRING SEARCH                        (VSTRS)
> 
>      modifies:
>      VECTOR FP CONVERT FROM FIXED                (VCFPS)
>      VECTOR FP CONVERT FROM LOGICAL              (VCFPL)
>      VECTOR FP CONVERT TO FIXED                  (VCSFP)
>      VECTOR FP CONVERT TO LOGICAL                (VCLFP)
>      VECTOR SHIFT LEFT                           (VSL)
>      VECTOR SHIFT RIGHT ARITHMETIC               (VSRA)
>      VECTOR SHIFT RIGHT LOGICAL                  (VSRL)
> 
> 
> David Miller (9):
>    tcg: Implement tcg_gen_{h,w}swap_{i32,i64}
>    target/s390x: vxeh2: vector convert short/32b
>    target/s390x: vxeh2: vector string search
>    target/s390x: vxeh2: Update for changes to vector shifts
>    target/s390x: vxeh2: vector shift double by bit
>    target/s390x: vxeh2: vector {load, store} elements reversed
>    target/s390x: vxeh2: vector {load, store} byte reversed elements
>    target/s390x: vxeh2: vector {load, store} byte reversed element
>    target/s390x: add S390_FEAT_VECTOR_ENH2 to qemu CPU model
>    tests/tcg/s390x: Tests for Vector Enhancements Facility 2
>    target/s390x: Fix writeback to v1 in helper_vstl
> 
> Richard Henderson (2):
>    tcg: Implement tcg_gen_{h,w}swap_{i32,i64}
>    target/s390x: Fix writeback to v1 in helper_vstl


I guess we can now re-do this series against 7.1-devel (qemu/master) which does
have the machine compat changes. Apart from that this should be ready now?
David Hildenbrand April 25, 2022, 7:51 a.m. UTC | #2
On 25.04.22 09:43, Christian Borntraeger wrote:
> Am 23.03.22 um 14:57 schrieb David Miller:
>> Implement Vector-Enhancements Facility 2 for s390x
>>
>> resolves: https://gitlab.com/qemu-project/qemu/-/issues/738
>>
>> implements:
>>      VECTOR LOAD ELEMENTS REVERSED               (VLER)
>>      VECTOR LOAD BYTE REVERSED ELEMENTS          (VLBR)
>>      VECTOR LOAD BYTE REVERSED ELEMENT           (VLEBRH, VLEBRF, VLEBRG)
>>      VECTOR LOAD BYTE REVERSED ELEMENT AND ZERO  (VLLEBRZ)
>>      VECTOR LOAD BYTE REVERSED ELEMENT AND REPLICATE (VLBRREP)
>>      VECTOR STORE ELEMENTS REVERSED              (VSTER)
>>      VECTOR STORE BYTE REVERSED ELEMENTS         (VSTBR)
>>      VECTOR STORE BYTE REVERSED ELEMENTS         (VSTEBRH, VSTEBRF, VSTEBRG)
>>      VECTOR SHIFT LEFT DOUBLE BY BIT             (VSLD)
>>      VECTOR SHIFT RIGHT DOUBLE BY BIT            (VSRD)
>>      VECTOR STRING SEARCH                        (VSTRS)
>>
>>      modifies:
>>      VECTOR FP CONVERT FROM FIXED                (VCFPS)
>>      VECTOR FP CONVERT FROM LOGICAL              (VCFPL)
>>      VECTOR FP CONVERT TO FIXED                  (VCSFP)
>>      VECTOR FP CONVERT TO LOGICAL                (VCLFP)
>>      VECTOR SHIFT LEFT                           (VSL)
>>      VECTOR SHIFT RIGHT ARITHMETIC               (VSRA)
>>      VECTOR SHIFT RIGHT LOGICAL                  (VSRL)
>>
>>
>> David Miller (9):
>>    tcg: Implement tcg_gen_{h,w}swap_{i32,i64}
>>    target/s390x: vxeh2: vector convert short/32b
>>    target/s390x: vxeh2: vector string search
>>    target/s390x: vxeh2: Update for changes to vector shifts
>>    target/s390x: vxeh2: vector shift double by bit
>>    target/s390x: vxeh2: vector {load, store} elements reversed
>>    target/s390x: vxeh2: vector {load, store} byte reversed elements
>>    target/s390x: vxeh2: vector {load, store} byte reversed element
>>    target/s390x: add S390_FEAT_VECTOR_ENH2 to qemu CPU model
>>    tests/tcg/s390x: Tests for Vector Enhancements Facility 2
>>    target/s390x: Fix writeback to v1 in helper_vstl
>>
>> Richard Henderson (2):
>>    tcg: Implement tcg_gen_{h,w}swap_{i32,i64}
>>    target/s390x: Fix writeback to v1 in helper_vstl
> 
> 
> I guess we can now re-do this series against 7.1-devel (qemu/master) which does
> have the machine compat changes. Apart from that this should be ready now?
> 

Yes, I think so. I can respin with the proper compat changes if requested.
Thomas Huth April 25, 2022, 9:06 a.m. UTC | #3
On 25/04/2022 09.51, David Hildenbrand wrote:
> On 25.04.22 09:43, Christian Borntraeger wrote:
>> Am 23.03.22 um 14:57 schrieb David Miller:
>>> Implement Vector-Enhancements Facility 2 for s390x
>>>
>>> resolves: https://gitlab.com/qemu-project/qemu/-/issues/738
>>>
>>> implements:
>>>       VECTOR LOAD ELEMENTS REVERSED               (VLER)
>>>       VECTOR LOAD BYTE REVERSED ELEMENTS          (VLBR)
>>>       VECTOR LOAD BYTE REVERSED ELEMENT           (VLEBRH, VLEBRF, VLEBRG)
>>>       VECTOR LOAD BYTE REVERSED ELEMENT AND ZERO  (VLLEBRZ)
>>>       VECTOR LOAD BYTE REVERSED ELEMENT AND REPLICATE (VLBRREP)
>>>       VECTOR STORE ELEMENTS REVERSED              (VSTER)
>>>       VECTOR STORE BYTE REVERSED ELEMENTS         (VSTBR)
>>>       VECTOR STORE BYTE REVERSED ELEMENTS         (VSTEBRH, VSTEBRF, VSTEBRG)
>>>       VECTOR SHIFT LEFT DOUBLE BY BIT             (VSLD)
>>>       VECTOR SHIFT RIGHT DOUBLE BY BIT            (VSRD)
>>>       VECTOR STRING SEARCH                        (VSTRS)
>>>
>>>       modifies:
>>>       VECTOR FP CONVERT FROM FIXED                (VCFPS)
>>>       VECTOR FP CONVERT FROM LOGICAL              (VCFPL)
>>>       VECTOR FP CONVERT TO FIXED                  (VCSFP)
>>>       VECTOR FP CONVERT TO LOGICAL                (VCLFP)
>>>       VECTOR SHIFT LEFT                           (VSL)
>>>       VECTOR SHIFT RIGHT ARITHMETIC               (VSRA)
>>>       VECTOR SHIFT RIGHT LOGICAL                  (VSRL)
>>>
>>>
>>> David Miller (9):
>>>     tcg: Implement tcg_gen_{h,w}swap_{i32,i64}
>>>     target/s390x: vxeh2: vector convert short/32b
>>>     target/s390x: vxeh2: vector string search
>>>     target/s390x: vxeh2: Update for changes to vector shifts
>>>     target/s390x: vxeh2: vector shift double by bit
>>>     target/s390x: vxeh2: vector {load, store} elements reversed
>>>     target/s390x: vxeh2: vector {load, store} byte reversed elements
>>>     target/s390x: vxeh2: vector {load, store} byte reversed element
>>>     target/s390x: add S390_FEAT_VECTOR_ENH2 to qemu CPU model
>>>     tests/tcg/s390x: Tests for Vector Enhancements Facility 2
>>>     target/s390x: Fix writeback to v1 in helper_vstl
>>>
>>> Richard Henderson (2):
>>>     tcg: Implement tcg_gen_{h,w}swap_{i32,i64}
>>>     target/s390x: Fix writeback to v1 in helper_vstl
>>
>>
>> I guess we can now re-do this series against 7.1-devel (qemu/master) which does
>> have the machine compat changes. Apart from that this should be ready now?
>>
> 
> Yes, I think so. I can respin with the proper compat changes if requested.

FWIW, I played with the series a little bit, and did not spot any obvious 
problems anymore, so feel free to add:

Tested-by: Thomas Huth <thuth@redhat.com>

If you send a v6 with the compat stuff fixed, I can queue it for my next 
s390x pull request.

  Thomas
David Miller April 28, 2022, 12:26 a.m. UTC | #4
I'm playing catch up a bit here,  as I was out sick for a few days.
It would be very much appreciated if you could do so,  as I'm not
familiar with what is required.

Thanks
- David Miller

On Mon, Apr 25, 2022 at 3:51 AM David Hildenbrand <david@redhat.com> wrote:
>
> On 25.04.22 09:43, Christian Borntraeger wrote:
> > Am 23.03.22 um 14:57 schrieb David Miller:
> >> Implement Vector-Enhancements Facility 2 for s390x
> >>
> >> resolves: https://gitlab.com/qemu-project/qemu/-/issues/738
> >>
> >> implements:
> >>      VECTOR LOAD ELEMENTS REVERSED               (VLER)
> >>      VECTOR LOAD BYTE REVERSED ELEMENTS          (VLBR)
> >>      VECTOR LOAD BYTE REVERSED ELEMENT           (VLEBRH, VLEBRF, VLEBRG)
> >>      VECTOR LOAD BYTE REVERSED ELEMENT AND ZERO  (VLLEBRZ)
> >>      VECTOR LOAD BYTE REVERSED ELEMENT AND REPLICATE (VLBRREP)
> >>      VECTOR STORE ELEMENTS REVERSED              (VSTER)
> >>      VECTOR STORE BYTE REVERSED ELEMENTS         (VSTBR)
> >>      VECTOR STORE BYTE REVERSED ELEMENTS         (VSTEBRH, VSTEBRF, VSTEBRG)
> >>      VECTOR SHIFT LEFT DOUBLE BY BIT             (VSLD)
> >>      VECTOR SHIFT RIGHT DOUBLE BY BIT            (VSRD)
> >>      VECTOR STRING SEARCH                        (VSTRS)
> >>
> >>      modifies:
> >>      VECTOR FP CONVERT FROM FIXED                (VCFPS)
> >>      VECTOR FP CONVERT FROM LOGICAL              (VCFPL)
> >>      VECTOR FP CONVERT TO FIXED                  (VCSFP)
> >>      VECTOR FP CONVERT TO LOGICAL                (VCLFP)
> >>      VECTOR SHIFT LEFT                           (VSL)
> >>      VECTOR SHIFT RIGHT ARITHMETIC               (VSRA)
> >>      VECTOR SHIFT RIGHT LOGICAL                  (VSRL)
> >>
> >>
> >> David Miller (9):
> >>    tcg: Implement tcg_gen_{h,w}swap_{i32,i64}
> >>    target/s390x: vxeh2: vector convert short/32b
> >>    target/s390x: vxeh2: vector string search
> >>    target/s390x: vxeh2: Update for changes to vector shifts
> >>    target/s390x: vxeh2: vector shift double by bit
> >>    target/s390x: vxeh2: vector {load, store} elements reversed
> >>    target/s390x: vxeh2: vector {load, store} byte reversed elements
> >>    target/s390x: vxeh2: vector {load, store} byte reversed element
> >>    target/s390x: add S390_FEAT_VECTOR_ENH2 to qemu CPU model
> >>    tests/tcg/s390x: Tests for Vector Enhancements Facility 2
> >>    target/s390x: Fix writeback to v1 in helper_vstl
> >>
> >> Richard Henderson (2):
> >>    tcg: Implement tcg_gen_{h,w}swap_{i32,i64}
> >>    target/s390x: Fix writeback to v1 in helper_vstl
> >
> >
> > I guess we can now re-do this series against 7.1-devel (qemu/master) which does
> > have the machine compat changes. Apart from that this should be ready now?
> >
>
> Yes, I think so. I can respin with the proper compat changes if requested.
>
> --
> Thanks,
>
> David / dhildenb
>