On Tue, Jun 08 2021, David Hildenbrand <david@redhat.com> wrote:
> @Conny, I think this should be good to go.
>
>
> This series adds support for the "Vector enhancements facility" and bumps
> the qemu CPU model to a stripped-down z14.
>
> I tested most vector FP instructions by generating random instructions
> and vectors, comparing the result with results on actual hardware. I did
> not test instructions/instruction variants with (partial) undeterministic
> behavior and exception handling.
>
> Linux' also seems to boot/work fine with it. Howeever, while testing this
> series I noticed that Linux checks for the wrong facility bit - see [1].
> I tested by temporarily faking availability of the "wrong" facility bit.
>
> [1] https://lkml.kernel.org/r/20210503121244.25232-1-david@redhat.com
>
> v3 -> v4:
> - "s390x/tcg: Implement VECTOR FP (MAXIMUM|MINIMUM)"
> -- Move "const bool ..." into respective blocks
> - "linux-user: elf: s390x: Prepare for Vector enhancements facility"
> -- Add all currently defined Linux HWCAP.
>
> v2 -> v3:
> - "s390x/tcg: Fix FP CONVERT TO (LOGICAL) FIXED NaN handling"
> -- Keep proper signal handling in the VECTOR variants
> - "s390x/tcg: Simplify vop64_2() handling"
> -- uint64_t se -> bool se
> - "s390x/tcg: Implement VECTOR FP (MAXIMUM|MINIMUM)"
> -- Drop special cases when both values are infinity
> -- Simplify cases when both values are zero
> -- Simplify dcmask handling
> -- uint64_t se -> bool se
> - "linux-user: elf: Prepare for Vector enhancements facility"
> -- Added to properly indicate the new elf capability
>
> v1 -> v2:
> - Too much changed to spell it out explicitly. Mostly addressed feedback
> from Richard, a couple of bugfixes found while testing, and some
> simplifications/cleanups.
> - Rebased on top of Richard's softfloat rework
>
> Cc: qemu-s390x@nongnu.org
> Cc: Cornelia Huck <cohuck@redhat.com>
> Cc: Halil Pasic <pasic@linux.ibm.com>
> Cc: Christian Borntraeger <borntraeger@de.ibm.com>
> Cc: Thomas Huth <thuth@redhat.com>
> Cc: Richard Henderson <richard.henderson@linaro.org>
> Cc: Laurent Vivier <laurent@vivier.eu>
>
>
> David Hildenbrand (26):
> s390x/tcg: Fix FP CONVERT TO (LOGICAL) FIXED NaN handling
> s390x/tcg: Fix instruction name for VECTOR FP LOAD
> (LENGTHENED|ROUNDED)
> s390x/tcg: Simplify vop64_3() handling
> s390x/tcg: Simplify vop64_2() handling
> s390x/tcg: Simplify vfc64() handling
> s390x/tcg: Simplify vftci64() handling
> s390x/tcg: Simplify vfma64() handling
> s390x/tcg: Simplify vfll32() handling
> s390x/tcg: Simplify vflr64() handling
> s390x/tcg: Simplify wfc64() handling
> s390x/tcg: Implement VECTOR BIT PERMUTE
> s390x/tcg: Implement VECTOR MULTIPLY SUM LOGICAL
> s390x/tcg: Implement 32/128 bit for VECTOR FP
> (ADD|DIVIDE|MULTIPLY|SUBTRACT)
> s390x/tcg: Implement 32/128 bit for VECTOR (LOAD FP INTEGER|FP SQUARE
> ROOT)
> s390x/tcg: Implement 32/128 bit for VECTOR FP COMPARE *
> s390x/tcg: Implement 32/128 bit for VECTOR FP COMPARE (AND SIGNAL)
> SCALAR
> s390x/tcg: Implement 64 bit for VECTOR FP LOAD LENGTHENED
> s390x/tcg: Implement 128 bit for VECTOR FP LOAD ROUNDED
> s390x/tcg: Implement 32/128 bit for VECTOR FP PERFORM SIGN OPERATION
> s390x/tcg: Implement 32/128 bit for VECTOR FP TEST DATA CLASS
> IMMEDIATE
> s390x/tcg: Implement 32/128 bit for VECTOR FP MULTIPLY AND
> (ADD|SUBTRACT)
> s390x/tcg: Implement VECTOR FP NEGATIVE MULTIPLY AND (ADD|SUBTRACT)
> s390x/tcg: Implement VECTOR FP (MAXIMUM|MINIMUM)
> linux-user: elf: s390x: Prepare for Vector enhancements facility
> s390x/tcg: We support Vector enhancements facility
> s390x/cpumodel: Bump up QEMU model to a stripped-down IBM z14 GA2
>
> hw/s390x/s390-virtio-ccw.c | 3 +
> include/elf.h | 7 +
> linux-user/elfload.c | 1 +
> target/s390x/cpu_models.c | 4 +-
> target/s390x/fpu_helper.c | 41 +-
> target/s390x/gen-features.c | 14 +-
> target/s390x/helper.h | 70 +-
> target/s390x/insn-data.def | 16 +-
> target/s390x/internal.h | 9 +
> target/s390x/translate_vx.c.inc | 633 ++++++++++++++----
> target/s390x/vec_fpu_helper.c | 1079 ++++++++++++++++++++++---------
> target/s390x/vec_helper.c | 22 +
> 12 files changed, 1428 insertions(+), 471 deletions(-)
Thanks, applied.