]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
testsuite: Fix sve/mask_struct_load_3_run.c [PR113965]
authorRichard Sandiford <richard.sandiford@arm.com>
Thu, 13 Mar 2025 15:13:00 +0000 (15:13 +0000)
committerRichard Sandiford <richard.sandiford@arm.com>
Thu, 13 Mar 2025 15:13:00 +0000 (15:13 +0000)
Among other things, this testcase tests an addition of the four
values (n*4+[0:3])*9//2 for each n in [0:99].  The addition is
done in multiple integer and floating-point types and the test
is compiled with -ffast-math.

One of the floating-point types is _Float16, and as Andrew says
in the PR, _Float16's limited precision means that the order of the
additions begins to matter for higher n.  Specifically, some orders
begin to give different results from others at n=38, and at many
higher n as well.

This patch uses 5/3 rather than 9/2.  I tested locally that
all addition orders give the same result over the test range.

gcc/testsuite/
PR testsuite/113965
* gcc.target/aarch64/sve/mask_struct_load_3_run.c: Use an
input range that is suitable for _Float16.

gcc/testsuite/gcc.target/aarch64/sve/mask_struct_load_3_run.c

index 8bc3b08fcf4ddbbdf15f0222214770dadd1337a1..c0a7416cfafc2f67f852b53687ed2af2f1dde532 100644 (file)
@@ -18,7 +18,7 @@
        asm volatile ("" ::: "memory");                 \
       }                                                        \
     for (int i = 0; i < N * 4; ++i)                    \
-      in[i] = i * 9 / 2;                               \
+      in[i] = i * 5 / 3;                               \
     NAME##_4 (out, in, mask, N);                       \
     for (int i = 0; i < N; ++i)                                \
       {                                                        \