On 2024-11-04 14:37, Richard Earnshaw (lists) wrote:
On 04/11/2024 12:28, Torbjorn SVENSSON wrote:


On 2024-11-04 12:44, Richard Earnshaw (lists) wrote:
On 01/11/2024 19:18, Torbjorn SVENSSON wrote:


On 2024-11-01 19:40, Richard Earnshaw (lists) wrote:
On 24/10/2024 09:50, Torbjörn SVENSSON wrote:
Ok for trunk and releases/gcc-14?

--

As these tests are set to execute and require neon hardware to do so,
add the missing dg-require-effective-target arm_neon_hw.

gcc/testsuite/ChangeLog:

      * gcc.target/arm/memset-inline-4.c: Use effective-target
      arm_neon_hw.
      * gcc.target/arm/memset-inline-5.c: Likewise.
      * gcc.target/arm/memset-inline-6.c: Likewise.

Signed-off-by: Torbjörn SVENSSON <torbjorn.svens...@foss.st.com>

These tests combine both a scan-assembler and a run.  Unconditionally requiring 
neon hardware before running the test means we lose the scan-assembler when the 
hardware is not available.  But I think you can write

/* { dg-do run { arm_neon_hw } } */

instead and now the framework will only try to run the test if hardware is 
available, but will fall back to a compile test otherwise.

Would you mind testing that out, please?

Using

/* { dg-do run { target arm_neon_hw } } */

works, but I'm not entirely sure sure what the difference is.
With both solutions (dg-run and dg-require-effective-target), Cortex-A7 tests 
with -mfloat-abi=soft marks the tests as unsupported. All other targets that I 
test is unchanged.

I suppose that the reason why there is no difference between the two suggested 
solutions is that the tests are skipped if arm_tune_string_ops_prefer_neon is 
not true (the line above my addition in the patch).

Let me know if you prefer the dg-require-effective-target or your solution. If 
we go for your solution, should I send a v2 with it?

Kind regards,
Torbjörn


Yeah, this is going to be a bit more invasive than I anticipated.  But I do 
think we can make this test more widely applicable.  It's going to require a 
few steps though.

1:  I think we need to fix 
target-supports.exp(check_effective_target_arm_neon_ok_noncache) to add 
-mcpu=unset whenever there's a -march flag in a variant.
2:  We need to change the test to not use the skip-if, but to require an 
effective target of arm_neon (hence the need for the above)
3:  We need to add a -mtune option as well to ensure that the test does use 
neon instructions for memcpy operations: adding -mtune=cortex-a7 via 
additional-options should achieve that.

With those changes the compile tests should kick in whenever we can 
successfully override the default options with something appropriate and the 
execution tests should kick in whenever we have neon hardware (the test is not 
about whether the performance it great, just whether or not it works).

Can we do this as a 2 parted process?
With the first part, I would like to avoid running it in configuration where 
it's known to fail and this part should ideally be retrofired to gcc14.

I'd prefer not to do that as it creates a user-visible change in a dot release 
of the compiler.

For the 2nd part, I agree with the steps above, but that will only be 
applicable for gcc15, unless you also want to backport the 
-mcpu=unset/-march=unset feature to gcc14 too.

Can we do the first part in this patch and then come back to part 2 afterwards?

I'd be happy for completely separate patches to go in on gcc-14 and on trunk - 
feel free to apply your original patch to the gcc-14 branch while we work on a 
full fix for gcc-15.

Original patch pushed as r14.2.0-357-g66a3827379e.
I'll rework the patch according to your requests for gcc15 and will include it in my upcoming patchset for -march/mcpu=unset.

Kind regards,
Torbjörn

Reply via email to