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.
---
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
}
}
--
2.34.1