]> git.ipfire.org Git - thirdparty/valgrind.git/commit
s390: Fix VFMA, VFMS, VFNMA, and VFNMS for 128-bit FP
authorAndreas Arnez <arnez@linux.ibm.com>
Wed, 30 Nov 2022 18:15:53 +0000 (19:15 +0100)
committerAndreas Arnez <arnez@linux.ibm.com>
Wed, 11 Jan 2023 15:44:38 +0000 (16:44 +0100)
commite05f55c77c4a330283778cfea042b6b18312e23d
tree1e6d331d32adf0f81eba72872f4a998bce16478e
parent6da4025b59253312a24eb2650190a4fcd8f2e634
s390: Fix VFMA, VFMS, VFNMA, and VFNMS for 128-bit FP

When trying to execute any of the vector float multiply-and-add family
instructions, Valgrind panics with the message "Iex_Qop with F128 data".

So far all F128 operations were implemented with instructions that operate
on FP register pairs.  However, such instructions don't exist for
Iop_MAddF128 and Iop_MSubF128, so they must be implemented with vector
instructions instead.  This was missed when emitting them in
"guest_s390_toIR.c".

Add the missing support.  This also involves adding a few new features to
host_s390_defs:

* a new vector operation S390_VEC_INIT_FROM_FPRS

* the capability to move the left half of a VR to an FPR

* S390_VEC_FLOAT_MADD/_MSUB for 128-bit sizes
VEX/priv/host_s390_defs.c
VEX/priv/host_s390_defs.h
VEX/priv/host_s390_isel.c