On 20/03/2025 16:15, Christophe Lyon wrote:
> Many tests became unsupported on aarch64 when -mcpu=unset was added to
> arm_v8_2a_fp16_neon_ok and arm_v8_2a_bf16_neon_ok effective targets,
> because this flag is only supported on arm.
>
> Since these effective targets are used on arm and aarch64, the patch
> adds -mcpu=unset on arm only, and restores "" on aarch64.
>
> This re-enables bf16 tests on aarch64, and I noticed
> #PASS: 6838 -> 8290
> #UNSUPPORTED: 1491 -> 1030 in gcc.target/aarch64/advsimd-intrinsics
>
> gcc/testsuite/
> * lib/target-supports.exp
> (check_effective_target_arm_v8_2a_fp16_neon_ok_nocache): Use
> -mcpu=unset on arm only.
> (check_effective_target_arm_v8_2a_bf16_neon_ok_nocache): Likewise.
OK.
R.
> ---
> gcc/testsuite/lib/target-supports.exp | 15 +++++++++++----
> 1 file changed, 11 insertions(+), 4 deletions(-)
>
> diff --git a/gcc/testsuite/lib/target-supports.exp
> b/gcc/testsuite/lib/target-supports.exp
> index 09b16a14024..c2df22d2255 100644
> --- a/gcc/testsuite/lib/target-supports.exp
> +++ b/gcc/testsuite/lib/target-supports.exp
> @@ -6660,11 +6660,16 @@ proc check_effective_target_arm_v8_2a_fp16_scalar_ok
> { } {
> proc check_effective_target_arm_v8_2a_fp16_neon_ok_nocache { } {
> global et_arm_v8_2a_fp16_neon_flags
> set et_arm_v8_2a_fp16_neon_flags ""
> + set cpu_unset ""
>
> if { ![istarget arm*-*-*] && ![istarget aarch64*-*-*] } {
> return 0;
> }
>
> + if { [istarget arm*-*-*] } {
> + set cpu_unset "-mcpu=unset"
> + }
> +
> # Iterate through sets of options to find the compiler flags that
> # need to be added to the -march option.
> foreach flags {"" "-mfpu=neon-fp-armv8" "-mfloat-abi=softfp" \
> @@ -6674,8 +6679,8 @@ proc
> check_effective_target_arm_v8_2a_fp16_neon_ok_nocache { } {
> #if !defined (__ARM_FEATURE_FP16_VECTOR_ARITHMETIC)
> #error "__ARM_FEATURE_FP16_VECTOR_ARITHMETIC not defined"
> #endif
> - } "$flags -mcpu=unset -march=armv8.2-a+fp16"] } {
> - set et_arm_v8_2a_fp16_neon_flags "$flags -mcpu=unset
> -march=armv8.2-a+fp16"
> + } "$flags $cpu_unset -march=armv8.2-a+fp16"] } {
> + set et_arm_v8_2a_fp16_neon_flags "$flags $cpu_unset
> -march=armv8.2-a+fp16"
> return 1
> }
> }
> @@ -6871,6 +6876,7 @@ proc add_options_for_arm_fp16fml_neon { flags } {
> proc check_effective_target_arm_v8_2a_bf16_neon_ok_nocache { } {
> global et_arm_v8_2a_bf16_neon_flags
> set et_arm_v8_2a_bf16_neon_flags ""
> + set cpu_unset ""
> set fpu_auto ""
>
> if { ![istarget arm*-*-*] && ![istarget aarch64*-*-*] } {
> @@ -6878,6 +6884,7 @@ proc
> check_effective_target_arm_v8_2a_bf16_neon_ok_nocache { } {
> }
>
> if { [istarget arm*-*-*] } {
> + set cpu_unset "-mcpu=unset"
> set fpu_auto "-mfpu=auto"
> }
>
> @@ -6889,8 +6896,8 @@ proc
> check_effective_target_arm_v8_2a_bf16_neon_ok_nocache { } {
> #if !defined (__ARM_FEATURE_BF16_VECTOR_ARITHMETIC)
> #error "__ARM_FEATURE_BF16_VECTOR_ARITHMETIC not defined"
> #endif
> - } "$flags -mcpu=unset -march=armv8.2-a+bf16"] } {
> - set et_arm_v8_2a_bf16_neon_flags "$flags -mcpu=unset
> -march=armv8.2-a+bf16"
> + } "$flags $cpu_unset -march=armv8.2-a+bf16"] } {
> + set et_arm_v8_2a_bf16_neon_flags "$flags $cpu_unset
> -march=armv8.2-a+bf16"
> return 1
> }
> }