[PATCH][GCC-11] arm: Fix multilib mapping for CDE extensions [PR100856].

Kyrylo Tkachov Kyrylo.Tkachov@arm.com
Fri Jun 18 15:33:19 GMT 2021



> -----Original Message-----
> From: Srinath Parvathaneni <Srinath.Parvathaneni@arm.com>
> Sent: 18 June 2021 16:22
> To: gcc-patches@gcc.gnu.org
> Cc: Kyrylo Tkachov <Kyrylo.Tkachov@arm.com>; Richard Earnshaw
> <Richard.Earnshaw@arm.com>
> Subject: [PATCH][GCC-11] arm: Fix multilib mapping for CDE extensions
> [PR100856].
> 
> Hi,
> 
> This is a backport to gcc-11 and the patch applied cleanly on the branch.
> 
> On passing +cdecp[0-7] extension to the -march string in command line
> options,
> multilib linking is failing as mentioned in PR100856. This patch fixes this issue
> by
> generating a separate canonical string by removing compiler options which
> are not
> required for multilib linking from march string and assign the new string to
> mlibarch
> option. This mlibarch string is used for multilib comparison.
> 
> Ok for gcc-11 branch?

Ok.
Thanks,
Kyrill

> 
> Regards,
> Srinath.
> 
> gcc/ChangeLog:
> 
> 2021-06-10  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
> 
> 	PR target/100856
> 	* common/config/arm/arm-common.c (arm_canon_arch_option_1):
> New function
> 	derived from arm_canon_arch.
> 	(arm_canon_arch_option): Call it.
> 	(arm_canon_arch_multilib_option): New function.
> 	* config/arm/arm-cpus.in (IGNORE_FOR_MULTILIB): New fgroup.
> 	* config/arm/arm.h (arm_canon_arch_multilib_option): New
> prototype.
> 	(CANON_ARCH_MULTILIB_SPEC_FUNCTION): New macro.
> 	(MULTILIB_ARCH_CANONICAL_SPECS): New macro.
> 	(DRIVER_SELF_SPECS): Add MULTILIB_ARCH_CANONICAL_SPECS.
> 	* config/arm/arm.opt (mlibarch): New option.
> 	* config/arm/t-rmprofile (MULTILIB_MATCHES): For armv8*-m,
> replace use
> 	of march on RHS with mlibarch.
> 
> gcc/testsuite/ChangeLog:
> 
> 2021-06-10  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
> 
> 	PR target/100856
> 	* gcc.target/arm/acle/pr100856.c: New test.
> 	* gcc.target/arm/multilib.exp: Add tests for cde options.
> 
> (cherry picked from commit f58d03b5df25f9eab06b7eacea8da780fc2e0219)
> 
> 
> ###############     Attachment also inlined for ease of reply
> ###############
> 
> 
> diff --git a/gcc/common/config/arm/arm-common.c
> b/gcc/common/config/arm/arm-common.c
> index
> 9980af6885c3dfe68f61fa0f39b23022b4e59c19..481aa9e43d9c73e464e1e99
> 2ad7d94c30d2db001 100644
> --- a/gcc/common/config/arm/arm-common.c
> +++ b/gcc/common/config/arm/arm-common.c
> @@ -627,9 +627,15 @@ public:
>     The options array consists of couplets of information where the
>     first item in each couplet is the string describing which option
>     name was selected (arch, cpu, fpu) and the second is the value
> -   passed for that option.  */
> -const char *
> -arm_canon_arch_option (int argc, const char **argv)
> +   passed for that option.
> +
> +   arch_for_multilib is boolean variable taking value true or false.
> +   arch_for_multilib is false when the canonical representation is for -march
> +   option and it is true when canonical representation is for -mlibarch option.
> +   On passing arch_for_multilib true the canonical string generated will be
> +   without the compiler options which are not required for multilib linking.
> */
> +static const char *
> +arm_canon_arch_option_1 (int argc, const char **argv, bool
> arch_for_multilib)
>  {
>    const char *arch = NULL;
>    const char *cpu = NULL;
> @@ -694,8 +700,8 @@ arm_canon_arch_option (int argc, const char **argv)
>    /* First build up a bitmap describing the target architecture.  */
>    if (arch)
>      {
> -      selected_arch = arm_parse_arch_option_name (all_architectures,
> -						  "-march", arch);
> +      selected_arch = arm_parse_arch_option_name (all_architectures, "-
> march",
> +						  arch, !arch_for_multilib);
> 
>        if (selected_arch == NULL)
>  	return "";
> @@ -703,6 +709,15 @@ arm_canon_arch_option (int argc, const char
> **argv)
>        arm_initialize_isa (target_isa, selected_arch->common.isa_bits);
>        arm_parse_option_features (target_isa, &selected_arch->common,
>  				 strchr (arch, '+'));
> +      if (arch_for_multilib)
> +	{
> +	  const enum isa_feature removable_bits[] =
> {ISA_IGNORE_FOR_MULTILIB,
> +						     isa_nobit};
> +	  sbitmap isa_bits = sbitmap_alloc (isa_num_bits);
> +	  arm_initialize_isa (isa_bits, removable_bits);
> +	  bitmap_and_compl (target_isa, target_isa, isa_bits);
> +	}
> +
>        if (fpu && strcmp (fpu, "auto") != 0)
>  	{
>  	  /* We assume that architectures do not have any FPU bits
> @@ -719,7 +734,8 @@ arm_canon_arch_option (int argc, const char **argv)
>    else if (cpu)
>      {
>        const cpu_option *selected_cpu
> -	= arm_parse_cpu_option_name (all_cores, "-mcpu", cpu);
> +	= arm_parse_cpu_option_name (all_cores, "-mcpu", cpu,
> +				     !arch_for_multilib);
> 
>        if (selected_cpu == NULL)
>  	return "";
> @@ -1069,3 +1085,22 @@ arm_asm_auto_mfpu (int argc, const char
> **argv)
>  #define TARGET_EXCEPT_UNWIND_INFO  arm_except_unwind_info
> 
>  struct gcc_targetm_common targetm_common =
> TARGETM_COMMON_INITIALIZER;
> +
> +/* Returns a canonical representation of the -march option from the
> current
> +   -march string (if given) and other options on the command line that might
> +   affect the architecture.  */
> +const char *
> +arm_canon_arch_option (int argc, const char **argv)
> +{
> +  return arm_canon_arch_option_1 (argc, argv, false);
> +}
> +
> +/* Returns a canonical representation of the -mlibarch option from the
> current
> +   -march string (if given) and other options on the command line that might
> +   affect the architecture after removing the compiler extension options
> which
> +   are not required for multilib linking.  */
> +const char *
> +arm_canon_arch_multilib_option (int argc, const char **argv)
> +{
> +  return arm_canon_arch_option_1 (argc, argv, true);
> +}
> diff --git a/gcc/config/arm/arm-cpus.in b/gcc/config/arm/arm-cpus.in
> index
> 0becb4385b675d0e08ea08c97785cabfa8cf7026..ab4b6acf5ea47b1c788dea8
> f7878141f2a4018cc 100644
> --- a/gcc/config/arm/arm-cpus.in
> +++ b/gcc/config/arm/arm-cpus.in
> @@ -324,6 +324,8 @@ define implied vfp_base MVE MVE_FP ALL_FP
>  # need to ignore it for matching purposes.
>  define fgroup ALL_QUIRKS   quirk_no_volatile_ce quirk_armv6kz
> quirk_cm3_ldrd xscale quirk_no_asmcpu
> 
> +define fgroup IGNORE_FOR_MULTILIB cdecp0 cdecp1 cdecp2 cdecp3
> cdecp4 cdecp5 cdecp6 cdecp7
> +
>  # Architecture entries
>  # format:
>  # begin arch <name>
> diff --git a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h
> index
> c70af57b5f67915e69457f57f7e27e9845d0c82d..47c13a9e57f28d171d0e0f4
> b2208903d1f36fc89 100644
> --- a/gcc/config/arm/arm.h
> +++ b/gcc/config/arm/arm.h
> @@ -2448,10 +2448,14 @@ extern const char *host_detect_local_cpu (int
> argc, const char **argv);
>  #endif
> 
>  const char *arm_canon_arch_option (int argc, const char **argv);
> +const char *arm_canon_arch_multilib_option (int argc, const char **argv);
> 
>  #define CANON_ARCH_SPEC_FUNCTION		\
>    { "canon_arch", arm_canon_arch_option },
> 
> +#define CANON_ARCH_MULTILIB_SPEC_FUNCTION		\
> +  { "canon_arch_multilib", arm_canon_arch_multilib_option },
> +
>  const char *arm_be8_option (int argc, const char **argv);
>  #define BE8_SPEC_FUNCTION			\
>    { "be8_linkopt", arm_be8_option },
> @@ -2460,6 +2464,7 @@ const char *arm_be8_option (int argc, const char
> **argv);
>    MCPU_MTUNE_NATIVE_FUNCTIONS			\
>    ASM_CPU_SPEC_FUNCTIONS			\
>    CANON_ARCH_SPEC_FUNCTION			\
> +  CANON_ARCH_MULTILIB_SPEC_FUNCTION		\
>    TARGET_MODE_SPEC_FUNCTIONS			\
>    BE8_SPEC_FUNCTION
> 
> @@ -2480,12 +2485,22 @@ const char *arm_be8_option (int argc, const
> char **argv);
>    "                     %{mfloat-abi=*: abi %*}"	\
>    "                     %<march=*) "
> 
> +/* Generate a canonical string to represent the architecture selected
> ignoring
> +   the options not required for multilib linking.  */
> +#define MULTILIB_ARCH_CANONICAL_SPECS				\
> +  "-mlibarch=%:canon_arch_multilib(%{mcpu=*: cpu %*} "		\
> +  "				   %{march=*: arch %*} "	\
> +  "				   %{mfpu=*: fpu %*} "		\
> +  "				   %{mfloat-abi=*: abi %*}"	\
> +  "				   %<mlibarch=*) "
> +
>  /* Complete set of specs for the driver.  Commas separate the
>     individual rules so that any option suppression (%<opt...)is
>     completed before starting subsequent rules.  */
>  #define DRIVER_SELF_SPECS			\
>    MCPU_MTUNE_NATIVE_SPECS,			\
>    TARGET_MODE_SPECS,				\
> +  MULTILIB_ARCH_CANONICAL_SPECS,		\
>    ARCH_CANONICAL_SPECS
> 
>  #define TARGET_SUPPORTS_WIDE_INT 1
> diff --git a/gcc/config/arm/arm.opt b/gcc/config/arm/arm.opt
> index
> d332eb67a9efdfcdc9484485ae6293038b626efc..af478a946b2e9c2b51d0272
> df7b5fab5cbb971ef 100644
> --- a/gcc/config/arm/arm.opt
> +++ b/gcc/config/arm/arm.opt
> @@ -81,6 +81,12 @@ Specify the name of the target architecture.
>  EnumValue
>  Enum(arm_arch) String(native) Value(-1) DriverOnly
> 
> +; Set to the name of target architecture which is required for
> +; multilib linking.  This option is undocumented becuase it
> +; should not be used by the users.
> +mlibarch=
> +Target RejectNegative JoinedOrMissing NoDWARFRecord DriverOnly
> Undocumented
> +
>  marm
>  Target RejectNegative Negative(mthumb) InverseMask(THUMB)
>  Generate code in 32 bit ARM state.
> diff --git a/gcc/config/arm/t-rmprofile b/gcc/config/arm/t-rmprofile
> index
> 19591892f3caae87c7aa00ce2a7ecd0e072aedc5..3e75fcc9635a19f313aa6be
> f00fd99d7190bb2e9 100644
> --- a/gcc/config/arm/t-rmprofile
> +++ b/gcc/config/arm/t-rmprofile
> @@ -53,10 +53,15 @@ MULTILIB_REQUIRED	+= mthumb/march=armv8.1-
> m.main+mve/mfloat-abi=hard
>  # Arch Matches
>  MULTILIB_MATCHES	+= march?armv6s-m=march?armv6-m
> 
> +# For all MULITIB_MATCHES for v8-m and above add mlibarch? on the right
> hand side
> +# of = in the variant string instead of march?.  This is needed becuase all the
> +# MULITIB_MATCHES variant strings are compared with mlibarch option for
> multilib
> +# linking.
> +
>  # Map all v8-m.main+dsp FP variants down to the variant without DSP.
> -MULTILIB_MATCHES	+= march?armv8-m.main=march?armv8-m.main+dsp
> \
> +MULTILIB_MATCHES	+= march?armv8-m.main=mlibarch?armv8-
> m.main+dsp \
>  			   $(foreach FP, +fp +fp.dp, \
> -			     march?armv8-m.main$(FP)=march?armv8-
> m.main+dsp$(FP))
> +			     march?armv8-m.main$(FP)=mlibarch?armv8-
> m.main+dsp$(FP))
> 
>  # For single-precision only fpv5, use the base fp libraries
>  MULTILIB_MATCHES	+= march?armv7e-m+fp=march?armv7e-m+fpv5
> @@ -65,10 +70,9 @@ MULTILIB_MATCHES	+= march?armv7e-
> m+fp=march?armv7e-m+fpv5
>  MULTILIB_REUSE		+= $(foreach ARCH, armv6s-m armv7-m
> armv7e-m armv8-m\.base armv8-m\.main, \
>  			     mthumb/march.$(ARCH)/mfloat-
> abi.soft=mthumb/march.$(ARCH)/mfloat-abi.softfp)
> 
> -
>  # Map v8.1-M to v8-M.
> -MULTILIB_MATCHES	+= march?armv8-m.main=march?armv8.1-m.main
> -MULTILIB_MATCHES	+= march?armv8-m.main=march?armv8.1-
> m.main+dsp
> +MULTILIB_MATCHES	+= march?armv8-m.main=mlibarch?armv8.1-m.main
> +MULTILIB_MATCHES	+= march?armv8-m.main=mlibarch?armv8.1-
> m.main+dsp
>  MULTILIB_REUSE		+= mthumb/march.armv8-m\.main/mfloat-
> abi.soft=mthumb/march.armv8\.1-m\.main+mve/mfloat-abi.soft
>  MULTILIB_REUSE		+= mthumb/march.armv8-m\.main/mfloat-
> abi.soft=mthumb/march.armv8\.1-m\.main+mve/mfloat-abi.softfp
> 
> @@ -77,8 +81,15 @@ v8_1m_dp_variants = +fp.dp +dsp+fp.dp +fp.dp+mve
> +fp.dp+mve.fp
> 
>  # Map all v8.1-m.main FP sp variants down to v8-m.
>  MULTILIB_MATCHES += $(foreach FP, $(v8_1m_sp_variants), \
> -			     march?armv8-m.main+fp=march?armv8.1-
> m.main$(FP))
> +			     march?armv8-m.main+fp=mlibarch?armv8.1-
> m.main$(FP))
> 
>  # Map all v8.1-m.main FP dp variants down to v8-m.
>  MULTILIB_MATCHES += $(foreach FP, $(v8_1m_dp_variants), \
> -			     march?armv8-m.main+fp.dp=march?armv8.1-
> m.main$(FP))
> +			     march?armv8-m.main+fp.dp=mlibarch?armv8.1-
> m.main$(FP))
> +
> +# For all the MULTILIB_REQUIRED for v8-m and above, add
> MULTILIB_MATCHES which
> +# maps mlibarch with march for multilib linking.
> +MULTILIB_MATCHES	+= march?armv8-m.main=mlibarch?armv8-m.main
> +MULTILIB_MATCHES	+= march?armv8-m.main+fp=mlibarch?armv8-
> m.main+fp
> +MULTILIB_MATCHES	+= march?armv8-m.main+fp.dp=mlibarch?armv8-
> m.main+fp.dp
> +MULTILIB_MATCHES	+= march?armv8.1-m.main+mve=mlibarch?armv8.1-
> m.main+mve
> diff --git a/gcc/testsuite/gcc.target/arm/acle/pr100856.c
> b/gcc/testsuite/gcc.target/arm/acle/pr100856.c
> new file mode 100644
> index
> 0000000000000000000000000000000000000000..5bc030e2e46bf89dfe7f3b
> 9d0dab1e07947e8d5e
> --- /dev/null
> +++ b/gcc/testsuite/gcc.target/arm/acle/pr100856.c
> @@ -0,0 +1,10 @@
> +/* { dg-do run } */
> +/* { dg-require-effective-target arm_v8_1m_main_cde_mve_ok } */
> +/* { dg-add-options arm_v8_1m_main_cde_mve } */
> +
> +#include "arm_cde.h"
> +
> +int main()
> +{
> +  return 0;
> +}
> diff --git a/gcc/testsuite/gcc.target/arm/multilib.exp
> b/gcc/testsuite/gcc.target/arm/multilib.exp
> index
> 46f2d86de3c05c184b2ec12af53e2053ddc3b157..4b30025db8cbdcd37bbb3a
> 0be6c345b9d48818c4 100644
> --- a/gcc/testsuite/gcc.target/arm/multilib.exp
> +++ b/gcc/testsuite/gcc.target/arm/multilib.exp
> @@ -840,6 +840,119 @@ if {[multilib_config "rmprofile"] } {
>  	{-mcpu=cortex-m55+nomve+nofp -mfpu=auto -mfloat-abi=softfp}
> "thumb/v8-m.main/nofp"
>  	{-mcpu=cortex-m55+nodsp+nofp -mfpu=auto -mfloat-abi=soft}
> "thumb/v8-m.main/nofp"
>  	{-mcpu=cortex-m55+nodsp+nofp -mfpu=auto -mfloat-abi=softfp}
> "thumb/v8-m.main/nofp"
> +	{-march=armv8-m.main+cdecp0 -mfpu=auto -mfloat-abi=soft}
> "thumb/v8-m.main/nofp"
> +	{-march=armv8-m.main+fp+cdecp0 -mfpu=auto -mfloat-abi=soft}
> "thumb/v8-m.main/nofp"
> +	{-march=armv8-m.main+fp.dp+cdecp0 -mfpu=auto -mfloat-abi=soft}
> "thumb/v8-m.main/nofp"
> +	{-march=armv8-m.main+fp+dsp+cdecp0 -mfpu=auto -mfloat-
> abi=soft} "thumb/v8-m.main/nofp"
> +	{-march=armv8-m.main+fp.dp+dsp+cdecp0 -mfpu=auto -mfloat-
> abi=soft} "thumb/v8-m.main/nofp"
> +	{-march=armv8-m.main+cdecp0 -mfpu=vfpv3xd -mfloat-abi=soft}
> "thumb/v8-m.main/nofp"
> +	{-march=armv8-m.main+fp+cdecp0 -mfpu=vfpv3xd -mfloat-abi=soft}
> "thumb/v8-m.main/nofp"
> +	{-march=armv8-m.main+fp.dp+cdecp0 -mfpu=vfpv3xd -mfloat-
> abi=soft} "thumb/v8-m.main/nofp"
> +	{-march=armv8-m.main+fp+dsp+cdecp0 -mfpu=vfpv3xd -mfloat-
> abi=soft} "thumb/v8-m.main/nofp"
> +	{-march=armv8-m.main+fp.dp+dsp+cdecp0 -mfpu=vfpv3xd -mfloat-
> abi=soft} "thumb/v8-m.main/nofp"
> +	{-march=armv8-m.main+cdecp0 -mfpu=vfpv3xd-fp16 -mfloat-
> abi=soft} "thumb/v8-m.main/nofp"
> +	{-march=armv8-m.main+fp+cdecp0 -mfpu=vfpv3xd-fp16 -mfloat-
> abi=soft} "thumb/v8-m.main/nofp"
> +	{-march=armv8-m.main+fp.dp+cdecp0 -mfpu=vfpv3xd-fp16 -mfloat-
> abi=soft} "thumb/v8-m.main/nofp"
> +	{-march=armv8-m.main+fp+dsp+cdecp0 -mfpu=vfpv3xd-fp16 -
> mfloat-abi=soft} "thumb/v8-m.main/nofp"
> +	{-march=armv8-m.main+fp.dp+dsp+cdecp0 -mfpu=vfpv3xd-fp16 -
> mfloat-abi=soft} "thumb/v8-m.main/nofp"
> +	{-march=armv8-m.main+cdecp0 -mfpu=fpv4-sp-d16 -mfloat-abi=soft}
> "thumb/v8-m.main/nofp"
> +	{-march=armv8-m.main+fp+cdecp0 -mfpu=fpv4-sp-d16 -mfloat-
> abi=soft} "thumb/v8-m.main/nofp"
> +	{-march=armv8-m.main+fp.dp+cdecp0 -mfpu=fpv4-sp-d16 -mfloat-
> abi=soft} "thumb/v8-m.main/nofp"
> +	{-march=armv8-m.main+fp+dsp+cdecp0 -mfpu=fpv4-sp-d16 -mfloat-
> abi=soft} "thumb/v8-m.main/nofp"
> +	{-march=armv8-m.main+fp.dp+dsp+cdecp0 -mfpu=fpv4-sp-d16 -
> mfloat-abi=soft} "thumb/v8-m.main/nofp"
> +	{-march=armv8-m.main+cdecp0 -mfpu=fpv5-sp-d16 -mfloat-abi=soft}
> "thumb/v8-m.main/nofp"
> +	{-march=armv8-m.main+fp+cdecp0 -mfpu=fpv5-sp-d16 -mfloat-
> abi=soft} "thumb/v8-m.main/nofp"
> +	{-march=armv8-m.main+fp.dp+cdecp0 -mfpu=fpv5-sp-d16 -mfloat-
> abi=soft} "thumb/v8-m.main/nofp"
> +	{-march=armv8-m.main+fp+dsp+cdecp0 -mfpu=fpv5-sp-d16 -mfloat-
> abi=soft} "thumb/v8-m.main/nofp"
> +	{-march=armv8-m.main+fp.dp+dsp+cdecp0 -mfpu=fpv5-sp-d16 -
> mfloat-abi=soft} "thumb/v8-m.main/nofp"
> +	{-march=armv8-m.main+cdecp0 -mfpu=fpv5-d16 -mfloat-abi=soft}
> "thumb/v8-m.main/nofp"
> +	{-march=armv8-m.main+fp+cdecp0 -mfpu=fpv5-d16 -mfloat-
> abi=soft} "thumb/v8-m.main/nofp"
> +	{-march=armv8-m.main+fp.dp+cdecp0 -mfpu=fpv5-d16 -mfloat-
> abi=soft} "thumb/v8-m.main/nofp"
> +	{-march=armv8-m.main+fp+dsp+cdecp0 -mfpu=fpv5-d16 -mfloat-
> abi=soft} "thumb/v8-m.main/nofp"
> +	{-march=armv8-m.main+fp.dp+dsp+cdecp0 -mfpu=fpv5-d16 -mfloat-
> abi=soft} "thumb/v8-m.main/nofp"
> +	{-march=armv8-m.main+fp+cdecp0 -mfpu=auto -mfloat-abi=hard}
> "thumb/v8-m.main+fp/hard"
> +	{-march=armv8-m.main+fp.dp+cdecp0 -mfpu=auto -mfloat-abi=hard}
> "thumb/v8-m.main+dp/hard"
> +	{-march=armv8-m.main+fp+dsp+cdecp0 -mfpu=auto -mfloat-
> abi=hard} "thumb/v8-m.main+fp/hard"
> +	{-march=armv8-m.main+fp.dp+dsp+cdecp0 -mfpu=auto -mfloat-
> abi=hard} "thumb/v8-m.main+dp/hard"
> +	{-march=armv8-m.main+cdecp0 -mfpu=vfpv3xd -mfloat-abi=hard}
> "thumb/v8-m.main+fp/hard"
> +	{-march=armv8-m.main+fp+cdecp0 -mfpu=vfpv3xd -mfloat-abi=hard}
> "thumb/v8-m.main+fp/hard"
> +	{-march=armv8-m.main+fp.dp+cdecp0 -mfpu=vfpv3xd -mfloat-
> abi=hard} "thumb/v8-m.main+dp/hard"
> +	{-march=armv8-m.main+fp+dsp+cdecp0 -mfpu=vfpv3xd -mfloat-
> abi=hard} "thumb/v8-m.main+fp/hard"
> +	{-march=armv8-m.main+fp.dp+dsp+cdecp0 -mfpu=vfpv3xd -mfloat-
> abi=hard} "thumb/v8-m.main+dp/hard"
> +	{-march=armv8-m.main+cdecp0 -mfpu=vfpv3xd-fp16 -mfloat-
> abi=hard} "thumb/v8-m.main+fp/hard"
> +	{-march=armv8-m.main+fp+cdecp0 -mfpu=vfpv3xd-fp16 -mfloat-
> abi=hard} "thumb/v8-m.main+fp/hard"
> +	{-march=armv8-m.main+fp.dp+cdecp0 -mfpu=vfpv3xd-fp16 -mfloat-
> abi=hard} "thumb/v8-m.main+dp/hard"
> +	{-march=armv8-m.main+fp+dsp+cdecp0 -mfpu=vfpv3xd-fp16 -
> mfloat-abi=hard} "thumb/v8-m.main+fp/hard"
> +	{-march=armv8-m.main+fp.dp+dsp+cdecp0 -mfpu=vfpv3xd-fp16 -
> mfloat-abi=hard} "thumb/v8-m.main+dp/hard"
> +	{-march=armv8-m.main+cdecp0 -mfpu=fpv4-sp-d16 -mfloat-
> abi=hard} "thumb/v8-m.main+fp/hard"
> +	{-march=armv8-m.main+fp+cdecp0 -mfpu=fpv4-sp-d16 -mfloat-
> abi=hard} "thumb/v8-m.main+fp/hard"
> +	{-march=armv8-m.main+fp.dp+cdecp0 -mfpu=fpv4-sp-d16 -mfloat-
> abi=hard} "thumb/v8-m.main+dp/hard"
> +	{-march=armv8-m.main+fp+dsp+cdecp0 -mfpu=fpv4-sp-d16 -mfloat-
> abi=hard} "thumb/v8-m.main+fp/hard"
> +	{-march=armv8-m.main+fp.dp+dsp+cdecp0 -mfpu=fpv4-sp-d16 -
> mfloat-abi=hard} "thumb/v8-m.main+dp/hard"
> +	{-march=armv8-m.main+cdecp0 -mfpu=fpv5-sp-d16 -mfloat-
> abi=hard} "thumb/v8-m.main+fp/hard"
> +	{-march=armv8-m.main+fp+cdecp0 -mfpu=fpv5-sp-d16 -mfloat-
> abi=hard} "thumb/v8-m.main+fp/hard"
> +	{-march=armv8-m.main+fp.dp+cdecp0 -mfpu=fpv5-sp-d16 -mfloat-
> abi=hard} "thumb/v8-m.main+dp/hard"
> +	{-march=armv8-m.main+fp+dsp+cdecp0 -mfpu=fpv5-sp-d16 -mfloat-
> abi=hard} "thumb/v8-m.main+fp/hard"
> +	{-march=armv8-m.main+fp.dp+dsp+cdecp0 -mfpu=fpv5-sp-d16 -
> mfloat-abi=hard} "thumb/v8-m.main+dp/hard"
> +	{-march=armv8-m.main+cdecp0 -mfpu=fpv5-d16 -mfloat-abi=hard}
> "thumb/v8-m.main+dp/hard"
> +	{-march=armv8-m.main+fp+cdecp0 -mfpu=fpv5-d16 -mfloat-
> abi=hard} "thumb/v8-m.main+dp/hard"
> +	{-march=armv8-m.main+fp.dp+cdecp0 -mfpu=fpv5-d16 -mfloat-
> abi=hard} "thumb/v8-m.main+dp/hard"
> +	{-march=armv8-m.main+fp+dsp+cdecp0 -mfpu=fpv5-d16 -mfloat-
> abi=hard} "thumb/v8-m.main+dp/hard"
> +	{-march=armv8-m.main+fp.dp+dsp+cdecp0 -mfpu=fpv5-d16 -mfloat-
> abi=hard} "thumb/v8-m.main+dp/hard"
> +	{-march=armv8-m.main+cdecp0 -mfpu=auto -mfloat-abi=softfp}
> "thumb/v8-m.main/nofp"
> +	{-march=armv8-m.main+fp+cdecp0 -mfpu=auto -mfloat-abi=softfp}
> "thumb/v8-m.main+fp/softfp"
> +	{-march=armv8-m.main+fp.dp+cdecp0 -mfpu=auto -mfloat-
> abi=softfp} "thumb/v8-m.main+dp/softfp"
> +	{-march=armv8-m.main+fp+dsp+cdecp0 -mfpu=auto -mfloat-
> abi=softfp} "thumb/v8-m.main+fp/softfp"
> +	{-march=armv8-m.main+fp.dp+dsp+cdecp0 -mfpu=auto -mfloat-
> abi=softfp} "thumb/v8-m.main+dp/softfp"
> +	{-march=armv8-m.main+cdecp0 -mfpu=vfpv3xd -mfloat-abi=softfp}
> "thumb/v8-m.main+fp/softfp"
> +	{-march=armv8-m.main+fp+cdecp0 -mfpu=vfpv3xd -mfloat-
> abi=softfp} "thumb/v8-m.main+fp/softfp"
> +	{-march=armv8-m.main+fp.dp+cdecp0 -mfpu=vfpv3xd -mfloat-
> abi=softfp} "thumb/v8-m.main+dp/softfp"
> +	{-march=armv8-m.main+fp+dsp+cdecp0 -mfpu=vfpv3xd -mfloat-
> abi=softfp} "thumb/v8-m.main+fp/softfp"
> +	{-march=armv8-m.main+fp.dp+dsp+cdecp0 -mfpu=vfpv3xd -mfloat-
> abi=softfp} "thumb/v8-m.main+dp/softfp"
> +	{-march=armv8-m.main+cdecp0 -mfpu=vfpv3xd-fp16 -mfloat-
> abi=softfp} "thumb/v8-m.main+fp/softfp"
> +	{-march=armv8-m.main+fp+cdecp0 -mfpu=vfpv3xd-fp16 -mfloat-
> abi=softfp} "thumb/v8-m.main+fp/softfp"
> +	{-march=armv8-m.main+fp.dp+cdecp0 -mfpu=vfpv3xd-fp16 -mfloat-
> abi=softfp} "thumb/v8-m.main+dp/softfp"
> +	{-march=armv8-m.main+fp+dsp+cdecp0 -mfpu=vfpv3xd-fp16 -
> mfloat-abi=softfp} "thumb/v8-m.main+fp/softfp"
> +	{-march=armv8-m.main+fp.dp+dsp+cdecp0 -mfpu=vfpv3xd-fp16 -
> mfloat-abi=softfp} "thumb/v8-m.main+dp/softfp"
> +	{-march=armv8-m.main+cdecp0 -mfpu=fpv4-sp-d16 -mfloat-
> abi=softfp} "thumb/v8-m.main+fp/softfp"
> +	{-march=armv8-m.main+fp+cdecp0 -mfpu=fpv4-sp-d16 -mfloat-
> abi=softfp} "thumb/v8-m.main+fp/softfp"
> +	{-march=armv8-m.main+fp.dp+cdecp0 -mfpu=fpv4-sp-d16 -mfloat-
> abi=softfp} "thumb/v8-m.main+dp/softfp"
> +	{-march=armv8-m.main+fp+dsp+cdecp0 -mfpu=fpv4-sp-d16 -mfloat-
> abi=softfp} "thumb/v8-m.main+fp/softfp"
> +	{-march=armv8-m.main+fp.dp+dsp+cdecp0 -mfpu=fpv4-sp-d16 -
> mfloat-abi=softfp} "thumb/v8-m.main+dp/softfp"
> +	{-march=armv8-m.main+cdecp0 -mfpu=fpv5-sp-d16 -mfloat-
> abi=softfp} "thumb/v8-m.main+fp/softfp"
> +	{-march=armv8-m.main+fp+cdecp0 -mfpu=fpv5-sp-d16 -mfloat-
> abi=softfp} "thumb/v8-m.main+fp/softfp"
> +	{-march=armv8-m.main+fp.dp+cdecp0 -mfpu=fpv5-sp-d16 -mfloat-
> abi=softfp} "thumb/v8-m.main+dp/softfp"
> +	{-march=armv8-m.main+fp+dsp+cdecp0 -mfpu=fpv5-sp-d16 -mfloat-
> abi=softfp} "thumb/v8-m.main+fp/softfp"
> +	{-march=armv8-m.main+fp.dp+dsp+cdecp0 -mfpu=fpv5-sp-d16 -
> mfloat-abi=softfp} "thumb/v8-m.main+dp/softfp"
> +	{-march=armv8-m.main+cdecp0 -mfpu=fpv5-d16 -mfloat-abi=softfp}
> "thumb/v8-m.main+dp/softfp"
> +	{-march=armv8-m.main+fp+cdecp0 -mfpu=fpv5-d16 -mfloat-
> abi=softfp} "thumb/v8-m.main+dp/softfp"
> +	{-march=armv8-m.main+fp.dp+cdecp0 -mfpu=fpv5-d16 -mfloat-
> abi=softfp} "thumb/v8-m.main+dp/softfp"
> +	{-march=armv8-m.main+fp+dsp+cdecp0 -mfpu=fpv5-d16 -mfloat-
> abi=softfp} "thumb/v8-m.main+dp/softfp"
> +	{-march=armv8-m.main+fp.dp+dsp+cdecp0 -mfpu=fpv5-d16 -mfloat-
> abi=softfp} "thumb/v8-m.main+dp/softfp"
> +	{-march=armv8.1-m.main+cdecp0 -mfpu=auto -mfloat-abi=soft}
> "thumb/v8-m.main/nofp"
> +	{-march=armv8.1-m.main+dsp+cdecp0 -mfpu=auto -mfloat-abi=soft}
> "thumb/v8-m.main/nofp"
> +	{-march=armv8.1-m.main+dsp+fp+cdecp0 -mfpu=auto -mfloat-
> abi=soft} "thumb/v8-m.main/nofp"
> +	{-march=armv8.1-m.main+dsp+fp.dp+cdecp0 -mfpu=auto -mfloat-
> abi=soft} "thumb/v8-m.main/nofp"
> +	{-march=armv8.1-m.main+cdecp0 -mfpu=auto -mfloat-abi=softfp}
> "thumb/v8-m.main/nofp"
> +	{-march=armv8.1-m.main+dsp+cdecp0 -mfpu=auto -mfloat-
> abi=softfp} "thumb/v8-m.main/nofp"
> +	{-march=armv8.1-m.main+dsp+fp+cdecp0 -mfpu=auto -mfloat-
> abi=softfp} "thumb/v8-m.main+fp/softfp"
> +	{-march=armv8.1-m.main+dsp+fp.dp+cdecp0 -mfpu=auto -mfloat-
> abi=softfp} "thumb/v8-m.main+dp/softfp"
> +	{-march=armv8.1-m.main+dsp+fp+cdecp0 -mfpu=auto -mfloat-
> abi=hard} "thumb/v8-m.main+fp/hard"
> +	{-march=armv8.1-m.main+dsp+fp.dp+cdecp0 -mfpu=auto -mfloat-
> abi=hard} "thumb/v8-m.main+dp/hard"
> +	{-march=armv8.1-m.main+mve+cdecp0 -mfpu=auto -mfloat-abi=soft}
> "thumb/v8-m.main/nofp"
> +	{-march=armv8.1-m.main+mve.fp+cdecp0 -mfpu=auto -mfloat-
> abi=soft} "thumb/v8-m.main/nofp"
> +	{-march=armv8.1-m.main+mve+cdecp0 -mfpu=auto -mfloat-
> abi=softfp} "thumb/v8-m.main/nofp"
> +	{-march=armv8.1-m.main+mve.fp+cdecp0 -mfpu=auto -mfloat-
> abi=softfp} "thumb/v8-m.main+fp/softfp"
> +	{-march=armv8.1-m.main+mve+cdecp0 -mfpu=auto -mfloat-
> abi=hard} "thumb/v8.1-m.main+mve/hard"
> +	{-march=armv8.1-m.main+mve+fp+cdecp0 -mfpu=auto -mfloat-
> abi=hard} "thumb/v8-m.main+fp/hard"
> +	{-march=armv8.1-m.main+mve+fp+cdecp0 -mfpu=auto -mfloat-
> abi=softfp} "thumb/v8-m.main+fp/softfp"
> +	{-march=armv8.1-m.main+mve.fp+cdecp0 -mfpu=auto -mfloat-
> abi=hard} "thumb/v8-m.main+fp/hard"
> +	{-march=armv8.1-m.main+mve+fp.dp+cdecp0 -mfpu=auto -mfloat-
> abi=soft} "thumb/v8-m.main/nofp"
> +	{-march=armv8.1-m.main+mve.fp+fp.dp+cdecp0 -mfpu=auto -
> mfloat-abi=soft} "thumb/v8-m.main/nofp"
> +	{-march=armv8.1-m.main+mve+fp.dp+cdecp0 -mfpu=auto -mfloat-
> abi=softfp} "thumb/v8-m.main+dp/softfp"
> +	{-march=armv8.1-m.main+mve.fp+fp.dp+cdecp0 -mfpu=auto -
> mfloat-abi=softfp} "thumb/v8-m.main+dp/softfp"
> +	{-march=armv8.1-m.main+mve+fp.dp+cdecp0 -mfpu=auto -mfloat-
> abi=hard} "thumb/v8-m.main+dp/hard"
> +	{-march=armv8.1-m.main+mve.fp+fp.dp+cdecp0 -mfpu=auto -
> mfloat-abi=hard} "thumb/v8-m.main+dp/hard"
>      } {
>  	check_multi_dir $opts $dir
>      }



More information about the Gcc-patches mailing list