[PATCH 1/3] [testsuite, arm] target-supports.exp: Add arm_fp_dp_ok effective-target

Kyrylo Tkachov Kyrylo.Tkachov@arm.com
Tue Mar 24 14:34:43 GMT 2020


Hi Christophe,

> -----Original Message-----
> From: Gcc-patches <gcc-patches-bounces@gcc.gnu.org> On Behalf Of
> Christophe Lyon via Gcc-patches
> Sent: 24 March 2020 14:27
> To: gcc-patches@gcc.gnu.org
> Subject: [PATCH 1/3] [testsuite, arm] target-supports.exp: Add
> arm_fp_dp_ok effective-target
> 
> Some tests require double-precision support, but the existing arm_fp_ok
> effective-target only checks if hardware floating-point is available, not what
> level. So this patch adds a new arm_fp_dp_ok effective-target to check that
> double-precision is supported.

The series looks good to me, and I trust that you test a wide a matrix of configurations.
So ok for all three.
Thanks,
Kyrill

> 
> 2020-03-24  Christophe Lyon  <christophe.lyon@linaro.org>
> 
> 	gcc/
> 	* doc/sourcebuild.texi (ARM-specific attributes): Add
> 	arm_fp_dp_ok.
> 	(Features for dg-add-options): Add arm_fp_dp.
> 
> 	gcc/testsuite/
> 	* lib/target-supports.exp
> 	(check_effective_target_arm_fp_dp_ok_nocache): New.
> 	(check_effective_target_arm_fp_dp_ok): New.
> 	(add_options_for_arm_fp_dp): New.
> ---
>  gcc/doc/sourcebuild.texi              | 11 +++++++++
>  gcc/testsuite/lib/target-supports.exp | 44
> +++++++++++++++++++++++++++++++++++
>  2 files changed, 55 insertions(+)
> 
> diff --git a/gcc/doc/sourcebuild.texi b/gcc/doc/sourcebuild.texi index
> eef1432..91b46cc 100644
> --- a/gcc/doc/sourcebuild.texi
> +++ b/gcc/doc/sourcebuild.texi
> @@ -1733,6 +1733,12 @@ ARM target defines @code{__ARM_FP} using
> @code{-mfloat-abi=softfp} or  equivalent options.  Some multilibs may be
> incompatible with these  options.
> 
> +@item arm_fp_dp_ok
> +@anchor{arm_fp_dp_ok}
> +ARM target defines @code{__ARM_FP} with double-precision support using
> +@code{-mfloat-abi=softfp} or equivalent options.  Some multilibs may be
> +incompatible with these options.
> +
>  @item arm_hf_eabi
>  ARM target adheres to the VFP and Advanced SIMD Register Arguments
> variant of the ABI for the ARM Architecture (as selected with @@ -2504,6
> +2510,11 @@ are:
>  in certain modes; see the @ref{arm_fp_ok,,arm_fp_ok effective target
> keyword}.
> 
> +@item arm_fp_dp
> +@code{__ARM_FP} definition with double-precision support.  Only ARM
> +targets support this feature, and only then in certain modes; see the
> +@ref{arm_fp_dp_ok,,arm_fp_dp_ok effective target keyword}.
> +
>  @item arm_neon
>  NEON support.  Only ARM targets support this feature, and only then  in
> certain modes; see the @ref{arm_neon_ok,,arm_neon_ok effective target
> diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-
> supports.exp
> index 4413c26..332611c 100644
> --- a/gcc/testsuite/lib/target-supports.exp
> +++ b/gcc/testsuite/lib/target-supports.exp
> @@ -3679,6 +3679,50 @@ proc add_options_for_arm_fp { flags } {
>      return "$flags $et_arm_fp_flags"
>  }
> 
> +# Return 1 if this is an ARM target defining __ARM_FP with #
> +double-precision support. We may need -mfloat-abi=softfp or #
> +equivalent options.  Some multilibs may be incompatible with these #
> +options.  Also set et_arm_fp_dp_flags to the best options to add.
> +
> +proc check_effective_target_arm_fp_dp_ok_nocache { } {
> +    global et_arm_fp_dp_flags
> +    set et_arm_fp_dp_flags ""
> +    if { [check_effective_target_arm32] } {
> +	foreach flags {"" "-mfloat-abi=softfp" "-mfloat-abi=hard"} {
> +	    if { [check_no_compiler_messages_nocache arm_fp_dp_ok object {
> +		#ifndef __ARM_FP
> +		#error __ARM_FP not defined
> +		#endif
> +		#if ((__ARM_FP & 8) == 0)
> +		#error __ARM_FP indicates that double-precision is not
> supported
> +		#endif
> +	    } "$flags"] } {
> +		set et_arm_fp_dp_flags $flags
> +		return 1
> +	    }
> +	}
> +    }
> +
> +    return 0
> +}
> +
> +proc check_effective_target_arm_fp_dp_ok { } {
> +    return [check_cached_effective_target arm_fp_dp_ok \
> +		check_effective_target_arm_fp_dp_ok_nocache]
> +}
> +
> +# Add the options needed to define __ARM_FP with double-precision #
> +support.  We need either -mfloat-abi=softfp or -mfloat-abi=hard, but #
> +if one is already specified by the multilib, use it.
> +
> +proc add_options_for_arm_fp_dp { flags } {
> +    if { ! [check_effective_target_arm_fp_dp_ok] } {
> +	return "$flags"
> +    }
> +    global et_arm_fp_dp_flags
> +    return "$flags $et_arm_fp_dp_flags"
> +}
> +
>  # Return 1 if this is an ARM target that supports DSP multiply with  # current
> multilib flags.
> 
> --
> 2.7.4



More information about the Gcc-patches mailing list