[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v4 00/26] s390x/tcg: Implement Vector enhancements facility and s
From: |
David Hildenbrand |
Subject: |
[PATCH v4 00/26] s390x/tcg: Implement Vector enhancements facility and switch to z14 |
Date: |
Tue, 8 Jun 2021 11:23:11 +0200 |
@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(-)
--
2.31.1
- [PATCH v4 00/26] s390x/tcg: Implement Vector enhancements facility and switch to z14,
David Hildenbrand <=
- [PATCH v4 01/26] s390x/tcg: Fix FP CONVERT TO (LOGICAL) FIXED NaN handling, David Hildenbrand, 2021/06/08
- [PATCH v4 03/26] s390x/tcg: Simplify vop64_3() handling, David Hildenbrand, 2021/06/08
- [PATCH v4 02/26] s390x/tcg: Fix instruction name for VECTOR FP LOAD (LENGTHENED|ROUNDED), David Hildenbrand, 2021/06/08
- [PATCH v4 05/26] s390x/tcg: Simplify vfc64() handling, David Hildenbrand, 2021/06/08
- [PATCH v4 04/26] s390x/tcg: Simplify vop64_2() handling, David Hildenbrand, 2021/06/08
- [PATCH v4 06/26] s390x/tcg: Simplify vftci64() handling, David Hildenbrand, 2021/06/08
- [PATCH v4 07/26] s390x/tcg: Simplify vfma64() handling, David Hildenbrand, 2021/06/08
- [PATCH v4 08/26] s390x/tcg: Simplify vfll32() handling, David Hildenbrand, 2021/06/08
- [PATCH v4 09/26] s390x/tcg: Simplify vflr64() handling, David Hildenbrand, 2021/06/08
- [PATCH v4 11/26] s390x/tcg: Implement VECTOR BIT PERMUTE, David Hildenbrand, 2021/06/08