]> sourceware.org Git - valgrind.git/commitdiff
s390: Fix VFLRX and WFLRX instructions
authorAndreas Arnez <arnez@linux.ibm.com>
Mon, 3 Jan 2022 17:15:05 +0000 (18:15 +0100)
committerAndreas Arnez <arnez@linux.ibm.com>
Tue, 8 Feb 2022 16:55:36 +0000 (17:55 +0100)
Due to a typo in s390_irgen_VFLR, the VFLR instruction behaves incorrectly
when its m3 field contains 4, meaning extended format.  In that case VFLR
is also written as VFLRX (or WFLRX) and supposed to round down from the
extended 128-bit format to the long 64-bit format.  However, the typo
checks for m3 == 2 instead, so the value of 4 is unhandled, causing
Valgrind to throw a specification exception.

This fixes the typo.

NEWS
VEX/priv/guest_s390_toIR.c

diff --git a/NEWS b/NEWS
index ff8af76566a7e0d32f19e60ed5f1f8d3faf45ded..718b8aef0aade57e138797a3a003dbfe57b54693 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -60,6 +60,7 @@ are not entered into bugzilla tend to get forgotten about or ignored.
 446281  Add a DRD suppression for fwrite
 446103  Memcheck: `--track-origins=yes` causes extreme slowdowns for large mmap/munmap
 446823  FreeBSD - missing syscalls when using libzm4
+447991  s390x: Valgrind indicates illegal instruction on wflrx
 447995  Valgrind segfault on power10 due to hwcap checking code
 449483  Powerpc: vcmpgtsq., vcmpgtuq,, vcmpequq. instructions not setting the
         condition code correctly.
index fffc563d469412b8783aa3fa79a9210c68788a60..3ef104fcd90a0b714e0f0fecab950fe260499fb6 100644 (file)
@@ -19008,7 +19008,7 @@ s390_irgen_VFLL(UChar v1, UChar v2, UChar m3, UChar m4, UChar m5)
 static const HChar *
 s390_irgen_VFLR(UChar v1, UChar v2, UChar m3, UChar m4, UChar m5)
 {
-   s390_insn_assert("vflr", m3 == 3 || (s390_host_has_vxe && m3 == 2));
+   s390_insn_assert("vflr", m3 == 3 || (s390_host_has_vxe && m3 == 4));
 
    if (m3 == 3)
       s390_vector_fp_convert(Iop_F64toF32, Ity_F64, Ity_F32, True,
This page took 0.055029 seconds and 5 git commands to generate.