Bug 463463 - none/tests/amd64/fma fails when executed under valgrind on a x86-64-v3 system
Summary: none/tests/amd64/fma fails when executed under valgrind on a x86-64-v3 system
Status: RESOLVED FIXED
Alias: None
Product: valgrind
Classification: Developer tools
Component: general (show other bugs)
Version: 3.20.0
Platform: Other Linux
: NOR normal
Target Milestone: ---
Assignee: Julian Seward
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2022-12-25 18:55 UTC by Alexander Kanavin
Modified: 2024-04-13 13:06 UTC (History)
3 users (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Alexander Kanavin 2022-12-25 18:55:28 UTC
Yocto project is transitioning x86_64 builds to build for x86-64-v3 (e.g. enabling AVX, AVX2, BMI1, BMI2, F16C, FMA, LZCNT, MOVBE, XSAVE), and one of the regressions is in none/tests/amd64/fma:

none/tests/amd64/fma.stdout.diff
************
--- fma.stdout.exp	2018-03-09 12:34:56.000000000 +0000
+++ fma.stdout.out	2022-12-25 14:55:01.182000000 +0000
@@ -1 +1,42 @@
-Testing successful
+Failure 1 32 0x1p+0 0x1.fffffffffffffp-1
+Failure 2 32 -0x1p+0 0x1.fffffffffffffp-1
+Failure 1 35 0x1.fffffffffefffp+1011 0x1.fffffffffffffp+1011
+Failure 2 35 -0x1.fffffffffefffp+1011 0x1.fffffffffffffp+1011
+Failure 1 48 0x1.7ffffe00008p-983 0x1.7ffffe00007ffp-983
+Failure 2 48 -0x1.7ffffe00008p-983 0x1.7ffffe00007ffp-983
+Failure 3 32 0x1p+0 0x1.fffffffffffffp-1
+Failure 4 32 -0x1p+0 0x1.fffffffffffffp-1
+Failure 3 35 0x1.fffffffffefffp+1011 0x1.fffffffffffffp+1011
+Failure 4 35 -0x1.fffffffffefffp+1011 0x1.fffffffffffffp+1011
+Failure 3 48 0x1.7ffffe00008p-983 0x1.7ffffe00007ffp-983
+Failure 4 48 -0x1.7ffffe00008p-983 0x1.7ffffe00007ffp-983
+Failure 5 32 0x1p+0 0x1.fffffffffffffp-1 0x1.0989687bc9da4p-53 0x1.0989687bc9da4p-53
+Failure 6 32 -0x1p+0 0x1.fffffffffffffp-1 -0x1.0989687bc9da4p-53 0x1.0989687bc9da4p-53
+Failure 5 34 0x1.0989687bc9da4p-176 0x1.0989687bc9da4p-176 0x1.fffffffffefffp+1011 0x1.fffffffffffffp+1011
+Failure 6 34 -0x1.0989687bc9da4p-176 0x1.0989687bc9da4p-176 -0x1.fffffffffefffp+1011 0x1.fffffffffffffp+1011
+Failure 5 48 0x1.7ffffe00008p-983 0x1.7ffffe00007ffp-983 0x0p+0 0x0p+0
+Failure 6 48 -0x1.7ffffe00008p-983 0x1.7ffffe00007ffp-983 -0x0p+0 0x0p+0
+Failure 7 32 0x1p+0 0x1.fffffffffffffp-1 0x1.0989687bc9da4p-53 0x1.0989687bc9da4p-53
+Failure 8 32 -0x1p+0 0x1.fffffffffffffp-1 -0x1.0989687bc9da4p-53 0x1.0989687bc9da4p-53
+Failure 7 34 0x1.0989687bc9da4p-176 0x1.0989687bc9da4p-176 0x1.fffffffffefffp+1011 0x1.fffffffffffffp+1011
+Failure 8 34 -0x1.0989687bc9da4p-176 0x1.0989687bc9da4p-176 -0x1.fffffffffefffp+1011 0x1.fffffffffffffp+1011
+Failure 7 48 0x1.7ffffe00008p-983 0x1.7ffffe00007ffp-983 0x0p+0 0x0p+0
+Failure 8 48 -0x1.7ffffe00008p-983 0x1.7ffffe00007ffp-983 -0x0p+0 0x0p+0
+Failure 9 32 0x1p+0 0x1.fffffffffffffp-1 0x1.0989687bc9da4p-53 0x1.0989687bc9da4p-53
+Failure 9 34 0x1.0989687bc9da4p-176 0x1.0989687bc9da4p-176 0x1.fffffffffefffp+1011 0x1.fffffffffffffp+1011
+Failure 9 48 0x1.7ffffe00008p-983 0x1.7ffffe00007ffp-983 0x0p+0 0x0p+0
+Failure 10 32 0x1p+0 0x1.fffffffffffffp-1 0x1.0989687bc9da4p-53 0x1.0989687bc9da4p-53
+Failure 10 34 0x1.0989687bc9da4p-176 0x1.0989687bc9da4p-176 0x1.fffffffffefffp+1011 0x1.fffffffffffffp+1011
+Failure 10 48 0x1.7ffffe00008p-983 0x1.7ffffe00007ffp-983 0x0p+0 0x0p+0
+Failure 11 32 0x1p+0 0x1.fffffffffffffp-1 0x1.0989687bc9da4p-53 0x1.0989687bc9da4p-53 0x1.0989687bc9da4p-176 0x1.0989687bc9da4p-176 0x1.fffffffffefffp+1011 0x1.fffffffffffffp+1011
+Failure 12 32 -0x1p+0 0x1.fffffffffffffp-1 -0x1.0989687bc9da4p-53 0x1.0989687bc9da4p-53 -0x1.0989687bc9da4p-176 0x1.0989687bc9da4p-176 -0x1.fffffffffefffp+1011 0x1.fffffffffffffp+1011
+Failure 11 48 0x1.7ffffe00008p-983 0x1.7ffffe00007ffp-983 0x0p+0 0x0p+0 0x0p+0 0x0p+0 0x0p+0 0x0p+0
+Failure 12 48 -0x1.7ffffe00008p-983 0x1.7ffffe00007ffp-983 -0x0p+0 0x0p+0 -0x0p+0 0x0p+0 -0x0p+0 0x0p+0
+Failure 13 32 0x1p+0 0x1.fffffffffffffp-1 0x1.0989687bc9da4p-53 0x1.0989687bc9da4p-53 0x1.0989687bc9da4p-176 0x1.0989687bc9da4p-176 0x1.fffffffffefffp+1011 0x1.fffffffffffffp+1011
+Failure 14 32 -0x1p+0 0x1.fffffffffffffp-1 -0x1.0989687bc9da4p-53 0x1.0989687bc9da4p-53 -0x1.0989687bc9da4p-176 0x1.0989687bc9da4p-176 -0x1.fffffffffefffp+1011 0x1.fffffffffffffp+1011
+Failure 13 48 0x1.7ffffe00008p-983 0x1.7ffffe00007ffp-983 0x0p+0 0x0p+0 0x0p+0 0x0p+0 0x0p+0 0x0p+0
+Failure 14 48 -0x1.7ffffe00008p-983 0x1.7ffffe00007ffp-983 -0x0p+0 0x0p+0 -0x0p+0 0x0p+0 -0x0p+0 0x0p+0
+Failure 15 32 0x1p+0 0x1.fffffffffffffp-1 0x1.0989687bc9da4p-53 0x1.0989687bc9da4p-53 0x1.0989687bc9da4p-176 0x1.0989687bc9da4p-176 0x1.fffffffffefffp+1011 0x1.fffffffffffffp+1011
+Failure 15 48 0x1.7ffffe00008p-983 0x1.7ffffe00007ffp-983 0x0p+0 0x0p+0 0x0p+0 0x0p+0 0x0p+0 0x0p+0
+Failure 16 32 0x1p+0 0x1.fffffffffffffp-1 0x1.0989687bc9da4p-53 0x1.0989687bc9da4p-53 0x1.0989687bc9da4p-176 0x1.0989687bc9da4p-176 0x1.fffffffffefffp+1011 0x1.fffffffffffffp+1011
+Failure 16 48 0x1.7ffffe00008p-983 0x1.7ffffe00007ffp-983 0x0p+0 0x0p+0 0x0p+0 0x0p+0 0x0p+0 0x0p+0


Note that this happens only when executing fma test under valgrind, when run standalone, it succeeds:
root@qemux86-64:/usr/lib/valgrind/ptest/none/tests/amd64# ./fma
Testing successful

The more detailed information about the x86-64 feature levels is here:
https://www.phoronix.com/news/GCC-11-x86-64-Feature-Levels
Comment 1 Mark Wielaard 2024-04-12 14:12:17 UTC
I am also seeing this. It seems to depend on glibc being compiled with -march=x86-64-v3. If only the fma testcase is compiled with gcc -march=x86-64-v3 but the rest of the system is not, then the testcase does pass under valgrind.
Comment 2 Mark Wielaard 2024-04-12 14:39:53 UTC
These seem rounding issues, fixed by https://bugs.kde.org/show_bug.cgi?id=481127
Comment 3 Mark Wielaard 2024-04-13 13:06:38 UTC
commit a5693c1203c3a26443af13182a8082c2e9152f6c
Author: Mark Wielaard <mark@klomp.org>
Date:   Sat Apr 13 14:33:19 2024 +0200

    amd64: Implement VFMADD213 for Iop_MAddF32 and Iop_MAddF64
    
    Speed up F32 and F64 FMA on amd64. Add priv/host_amd64_maddf.c
    implementing h_amd64_calc_MAddF32_fma4 and h_amd64_calc_MAddF64_fma4
    to be used instead of the generic variants h_generic_calc_MAddF32
    and h_generic_calc_MAddF64 when host has VEX_HWCAPS_AMD64_FMA4.
    Add fma3 and fma4 detection m_machine.c (machine_get_hwcaps).
    
    This patch also fixes the memcheck/tests/vcpu_fnfns and
    none/tests/amd64/fma testcases when run on a x86-64-v3 system.
    
    Patch contributed by Grazvydas Ignotas <notasas@gmail.com> and
    Bruno Lathuilière <bruno.lathuiliere@edf.fr>
    
    https://bugs.kde.org/show_bug.cgi?id=481127
    https://bugs.kde.org/show_bug.cgi?id=463463
    https://bugs.kde.org/show_bug.cgi?id=463458