On 05/10/2026 23:07, Christophe Lyon wrote:
> Hi!
> 
> 
> On 10/4/26 19:14, Torbjörn Svensson via Sourceware Forge wrote:
>>
>> This is a summary of discussions relative to the merge request created by 
>> Torbjörn Svensson (azoff) <[email protected]> titled
>> arm: Set Cortex-M55 tuning for MVE FP tests
>> since its creation.
>>
>> Description: Changes since v1:
>> - Dropped the generic change in lib/target-supports.exp
>> - Added the change to the dg-options/dg-additional-options for the affected 
>> tests.
>>
>> -- 
>>
>> When running DejaGNU with thumb/arch=a/tune=b and a does not happen to be 
>> armv8.1-m.main+mve.fp, the effective target check will switch target to 
>> that. If that happens, the tune "b" will survive and impact what assembler 
>> that will be generated.
>> This change resets the tune to the default one for armv8.1-m.main+mve.fp.
>>
>> Tested on arm-none-eabi with both -mcpu and -mtune on 
>> r17-4804-gf7094fe5ff882f without any regressions.
>>
>> Ok for trunk, releases/gcc-16 and releases/gcc-15?
>>
>> -- 
>>
>> CC: Richard Earnshaw <[email protected]>
>> CC: Andre Simoes Dias Vieira <[email protected]>
>> CC: Christophe Lyon <[email protected]>
>>
>> The full and up to date discussion can be found at 
>> https://forge.sourceware.org/gcc/gcc/pulls/238
>>
>> The merge request has been closed without being merged directly on the forge 
>> repository.
>>
>> On 2026-10-04 07:03:32+00:00, Torbjörn Svensson (azoff) 
>> <[email protected]> requested that Christophe Lyon (clyon) 
>> <[email protected]> review the code:
>>
>>
>>
>>
>> On 2026-10-04 07:31:07+00:00, Richard Earnshaw (rearnsha) <[email protected]> 
>> commented on the code:
>>
>>
>>> +++ gcc/testsuite/lib/target-supports.exp
>>> @@ -7035,2 +7035,3 @@
>>>       # need to be added to the -march option.
>>> -    foreach flags {"" "-mfloat-abi=softfp -mfpu=auto -mcpu=unset 
>>> -march=armv8.1-m.main+mve.fp" "-mfloat-abi=hard -mfpu=auto -mcpu=unset 
>>> -march=armv8.1-m.main+mve.fp"} {
>>> +    foreach flags {
>>> +    ""
>> Why would this alternative not also override the tuning?  What if we have a 
>> CPU with the same architecture but different tuning costs?
>>
>> Which tests are affected by this issue?  Would it make sense to override the 
>> tuning there as needed?
>>> +++ gcc/testsuite/lib/target-supports.exp
>>> @@ -7035,2 +7035,3 @@
>>>       # need to be added to the -march option.
>>> -    foreach flags {"" "-mfloat-abi=softfp -mfpu=auto -mcpu=unset 
>>> -march=armv8.1-m.main+mve.fp" "-mfloat-abi=hard -mfpu=auto -mcpu=unset 
>>> -march=armv8.1-m.main+mve.fp"} {
>>> +    foreach flags {
>>> +    ""
>> The tests fixed are:
>> - FAIL: gcc.target/arm/mve/intrinsics/vcmpeqq_n_f16.c check-function-bodies 
>> foo2
>> - FAIL: gcc.target/arm/mve/intrinsics/vcmpeqq_n_f32.c check-function-bodies 
>> foo2
>> - FAIL: gcc.target/arm/mve/intrinsics/vcmpgeq_n_f16.c check-function-bodies 
>> foo2
>> - FAIL: gcc.target/arm/mve/intrinsics/vcmpgeq_n_f32.c check-function-bodies 
>> foo2
>> - FAIL: gcc.target/arm/mve/intrinsics/vcmpgtq_n_f16.c check-function-bodies 
>> foo2
>> - FAIL: gcc.target/arm/mve/intrinsics/vcmpgtq_n_f32.c check-function-bodies 
>> foo2
>> - FAIL: gcc.target/arm/mve/intrinsics/vcmpleq_n_f16.c check-function-bodies 
>> foo2
>> - FAIL: gcc.target/arm/mve/intrinsics/vcmpleq_n_f32.c check-function-bodies 
>> foo2
>> - FAIL: gcc.target/arm/mve/intrinsics/vcmpltq_n_f16.c check-function-bodies 
>> foo2
>> - FAIL: gcc.target/arm/mve/intrinsics/vcmpltq_n_f32.c check-function-bodies 
>> foo2
>> - FAIL: gcc.target/arm/mve/intrinsics/vcmpneq_n_f16.c check-function-bodies 
>> foo2
>> - FAIL: gcc.target/arm/mve/intrinsics/vcmpneq_n_f32.c check-function-bodies 
>> foo2
>> - FAIL: gcc.target/arm/mve/intrinsics/vdupq_n_f16.c check-function-bodies 
>> foo1
>> - FAIL: gcc.target/arm/mve/intrinsics/vdupq_n_f32.c check-function-bodies 
>> foo1
>>
>> All of these were failing with 
>> `thumb/arch=armv7ve+simd/tune=cortex-a7/float-abi=hard/fpu=auto` and 
>> `thumb/arch=armv7ve+nofp/tune=cortex-a7/float-abi=soft/fpu=auto`, while 
>> passing when replacing `-mtune` with `-mcpu`.
>>
>> The reason why I did not add the `-mtune=cortex-m55` for the empty string is 
>> that I thought it was only needed when switching target.
>> I can add it there too in case you think that is better (should have no 
>> impact regardless).
>>
>> Comparing -mtune with -mcpu for 
>> gcc.target/arm/mve/intrinsics/vcmpeqq_n_f16.c, I see the following 
>> difference in generated assembler:
>> ```
>> --- mcpu.s  2026-10-04 09:49:39.835214873 +0200
>> +++ mtune.s  2026-10-04 09:49:39.836214873 +0200
>> @@ -66,11 +66,23 @@
>>          @ args = 0, pretend = 0, frame = 0
>>          @ frame_needed = 0, uses_anonymous_args = 0
>>          @ link register save eliminated.
>> -       vmov    d6, r0, r1  @ v8hf
>> -       vmov    d7, r2, r3
>> -       movw    r3, #15462
>> -       vcmp.f16        eq, q3, r3
>> +       vmov    d4, r0, r1  @ v8hf
>> +       vmov    d5, r2, r3
>> +       vldr.64 d6, .L5
>> +       vldr.64 d7, .L5+8
>> +       vcmp.f16        eq, q2, q3
>>          vmrs    r0, p0  @ movhi
>>          uxth    r0, r0
>>          bx      lr
>> +.L6:
>> +       .align  3
>> +.L5:
>> +       .short  15462
>> +       .short  15462
>> +       .short  15462
>> +       .short  15462
>> +       .short  15462
>> +       .short  15462
>> +       .short  15462
>> +       .short  15462
>>          .size   foo2, .-foo2
>> ```
>>
> Sorry it's not clear to me which code is with -mtune and which one is with 
> -mcpu?
> 
> and do you mean -mtune=cortexx-a7 / -mcpu=cortex-a7?
> 
> Also I'm not sure I understand the fix ;-)
> IIUC without your patch the test fails because it's compiled with
> thumb/arch=armv7ve+simd/tune=cortex-a7/float-abi=hard/fpu=auto followed by 
> "-mfloat-abi=hard -mfpu=auto -mcpu=unset -march=armv8.1-m.main+mve.fp" from 
> arm_v8_1m_mve_fp_ok_nocache?
> 
> which gets simplified to
> -mthumb -march=armv8.1-m.main+mve.fp -mtune=cortex-a7
> -mfloat-abi=hard -mfpu=auto -mcpu=unset
> and -mcpu does not cancel the effect of -mtune?
> 

-mcpu=unset only unsets -mcpu options; -mtune is not touched, nor should it be.

R.

> Thanks,
> 
> Christophe
> 
>> If you have a suggestion how to fix the tests in a better way, I'd be happy 
>> to try it.
>>
>>
>> On 2026-10-04 11:52:44+00:00, Torbjörn Svensson (azoff) wrote:
>>
>> Updated the patch after live discussion with Richard E.
>>
>> On 2026-10-04 11:54:30+00:00, Richard Earnshaw (rearnsha) <[email protected]> 
>> approved the changes:
>> OK
>>
>>
>>
>> On 2026-10-04 17:13:16+00:00, Torbjörn Svensson (azoff) wrote:
>>
>> Pushed as r17-4873-g8a5c76ca173f25, r16-9734-ga239230fc45aa9 and 
>> r15-11613-gb56c7709b773a2.
> 

Reply via email to