[ARM] Deprecate -mneon-for-64bits
diff mbox series

Message ID VI1PR0801MB2127326A2B9201D966B9BF8583A40@VI1PR0801MB2127.eurprd08.prod.outlook.com
State New
Headers show
Series
  • [ARM] Deprecate -mneon-for-64bits
Related show

Commit Message

Wilco Dijkstra Aug. 23, 2019, 12:21 p.m. UTC
Hi,

As Kyrill suggested in https://gcc.gnu.org/ml/gcc-patches/2019-08/msg01551.html
-mneon-for-64bits has no effect anymore so we should deprecate it in GCC10:

Deprecate -mneon-for-64bits since it no longer has any effect after
the DImode codegen improvements.

OK for commit?

ChangeLog:

2019-08-22  Wilco Dijkstra  <wdijkstr@arm.com>

	* gcc/config/arm/arm.opt (mneon-for-64bits): Deprecate.
	* gcc/config/arm/arm.h (TARGET_PREFER_NEON_64BITS): Remove.
	(prefer_neon_for_64bits): Remove.
	* gcc/config/arm/arm.c (prefer_neon_for_64bits): Remove.
	(tune_params): Remove PREF_NEON_64_FALSE uses.
	(arm_option_override): Remove prefer_neon selection code.
	(arm_print_tune_info): Remove prefer_neon_for_64bits.
	* gcc/config/arm/arm-protos.h (tune_params): Remove
	prefer_neon_for_64bits.
	(prefer_neon_for_64bits): Remove.

--

Comments

Kyrill Tkachov Aug. 23, 2019, 1:21 p.m. UTC | #1
Hi Wilco,

On 8/23/19 1:21 PM, Wilco Dijkstra wrote:
> Hi,
>
> As Kyrill suggested in 
> https://gcc.gnu.org/ml/gcc-patches/2019-08/msg01551.html
> -mneon-for-64bits has no effect anymore so we should deprecate it in 
> GCC10:
>
> Deprecate -mneon-for-64bits since it no longer has any effect after
> the DImode codegen improvements.
>
> OK for commit?
>
> ChangeLog:
>
> 2019-08-22  Wilco Dijkstra  <wdijkstr@arm.com>
>
> * gcc/config/arm/arm.opt (mneon-for-64bits): Deprecate.
> * gcc/config/arm/arm.h (TARGET_PREFER_NEON_64BITS): Remove.
> (prefer_neon_for_64bits): Remove.
> * gcc/config/arm/arm.c (prefer_neon_for_64bits): Remove.
> (tune_params): Remove PREF_NEON_64_FALSE uses.
> (arm_option_override): Remove prefer_neon selection code.
> (arm_print_tune_info): Remove prefer_neon_for_64bits.
> * gcc/config/arm/arm-protos.h (tune_params): Remove
> prefer_neon_for_64bits.
> (prefer_neon_for_64bits): Remove.
>
Please also adjust the documentation in doc/invoke.texi to say it's 
deprecated and has no effect.

> --
>
> diff --git a/gcc/config/arm/arm-protos.h b/gcc/config/arm/arm-protos.h
> index 
> bf2bf1c3b050365449b422976d7c0b39245f1490..8386d89fc0b955e85692f87fedd8710010ad2a35 
> 100644
> --- a/gcc/config/arm/arm-protos.h
> +++ b/gcc/config/arm/arm-protos.h
> @@ -327,7 +327,6 @@ struct tune_params
>    /* Prefer 32-bit encoding instead of flag-setting 16-bit encoding.  */
>    enum {DISPARAGE_FLAGS_NEITHER, DISPARAGE_FLAGS_PARTIAL, 
> DISPARAGE_FLAGS_ALL}
>      disparage_flag_setting_t16_encodings: 2;
> -  enum {PREF_NEON_64_FALSE, PREF_NEON_64_TRUE} prefer_neon_for_64bits: 1;
>    /* Prefer to inline string operations like memset by using Neon.  */
>    enum {PREF_NEON_STRINGOPS_FALSE, PREF_NEON_STRINGOPS_TRUE}
>      string_ops_prefer_neon: 1;
> @@ -472,10 +471,6 @@ extern int arm_arch_thumb_hwdiv;
>  /* Nonzero if chip disallows volatile memory access in IT block.  */
>  extern int arm_arch_no_volatile_ce;
>
> -/* Nonzero if we should use Neon to handle 64-bits operations rather
> -   than core registers.  */
> -extern int prefer_neon_for_64bits;
> -
>  /* Structure defining the current overall architectural target and 
> tuning.  */
>  struct arm_build_target
>  {
> diff --git a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h
> index 
> 50cb2c92e2c89562407fb89008b69f35b2a61fbe..8d023389eec469ad9c8a4e88edebdad5f3c23769 
> 100644
> --- a/gcc/config/arm/arm.h
> +++ b/gcc/config/arm/arm.h
> @@ -313,9 +313,6 @@ emission of floating point pcs attributes.  */
>  /* Nonzero if disallow volatile memory access in IT block.  */
>  #define TARGET_NO_VOLATILE_CE(arm_arch_no_volatile_ce)
>
> -/* Should NEON be used for 64-bits bitops.  */
> -#define TARGET_PREFER_NEON_64BITS (prefer_neon_for_64bits)
> -
>  /* Should constant I be slplit for OP.  */
>  #define DONT_EARLY_SPLIT_CONSTANT(i, op) \
>  ((optimize >= 2) \
> @@ -509,10 +506,6 @@ extern int arm_arch_thumb_hwdiv;
>  /* Nonzero if chip disallows volatile memory access in IT block.  */
>  extern int arm_arch_no_volatile_ce;
>
> -/* Nonzero if we should use Neon to handle 64-bits operations rather
> -   than core registers.  */
> -extern int prefer_neon_for_64bits;
> -
>  /* Nonzero if we shouldn't use literal pools.  */
>  #ifndef USED_FOR_TARGET
>  extern bool arm_disable_literal_pool;
> diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
> index 
> 38ac16ad1def91ca78ccfa98fd1679b2b5114851..5ea3409c8fa632b1a9959181de27f1dfa286a4d8 
> 100644
> --- a/gcc/config/arm/arm.c
> +++ b/gcc/config/arm/arm.c
> @@ -950,10 +950,6 @@ int arm_arch_thumb_hwdiv;
>  /* Nonzero if chip disallows volatile memory access in IT block.  */
>  int arm_arch_no_volatile_ce;
>
> -/* Nonzero if we should use Neon to handle 64-bits operations rather
> -   than core registers.  */
> -int prefer_neon_for_64bits = 0;
> -
>  /* Nonzero if we shouldn't use literal pools.  */
>  bool arm_disable_literal_pool = false;
>
> @@ -1811,7 +1807,6 @@ const struct tune_params arm_slowmul_tune =
>    tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,/* Thumb. */
>    tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,/* ARM. */
>    tune_params::DISPARAGE_FLAGS_NEITHER,
> -  tune_params::PREF_NEON_64_FALSE,
>    tune_params::PREF_NEON_STRINGOPS_FALSE,
>    tune_params::FUSE_NOTHING,
>    tune_params::SCHED_AUTOPREF_OFF
> @@ -1834,7 +1829,6 @@ const struct tune_params arm_fastmul_tune =
>    tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,/* Thumb. */
>    tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,/* ARM. */
>    tune_params::DISPARAGE_FLAGS_NEITHER,
> -  tune_params::PREF_NEON_64_FALSE,
>    tune_params::PREF_NEON_STRINGOPS_FALSE,
>    tune_params::FUSE_NOTHING,
>    tune_params::SCHED_AUTOPREF_OFF
> @@ -1860,7 +1854,6 @@ const struct tune_params arm_strongarm_tune =
>    tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,/* Thumb. */
>    tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,/* ARM. */
>    tune_params::DISPARAGE_FLAGS_NEITHER,
> -  tune_params::PREF_NEON_64_FALSE,
>    tune_params::PREF_NEON_STRINGOPS_FALSE,
>    tune_params::FUSE_NOTHING,
>    tune_params::SCHED_AUTOPREF_OFF
> @@ -1883,7 +1876,6 @@ const struct tune_params arm_xscale_tune =
>    tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,/* Thumb. */
>    tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,/* ARM. */
>    tune_params::DISPARAGE_FLAGS_NEITHER,
> -  tune_params::PREF_NEON_64_FALSE,
>    tune_params::PREF_NEON_STRINGOPS_FALSE,
>    tune_params::FUSE_NOTHING,
>    tune_params::SCHED_AUTOPREF_OFF
> @@ -1906,7 +1898,6 @@ const struct tune_params arm_9e_tune =
>    tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,/* Thumb. */
>    tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,/* ARM. */
>    tune_params::DISPARAGE_FLAGS_NEITHER,
> -  tune_params::PREF_NEON_64_FALSE,
>    tune_params::PREF_NEON_STRINGOPS_FALSE,
>    tune_params::FUSE_NOTHING,
>    tune_params::SCHED_AUTOPREF_OFF
> @@ -1929,7 +1920,6 @@ const struct tune_params arm_marvell_pj4_tune =
>    tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,/* Thumb. */
>    tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,/* ARM. */
>    tune_params::DISPARAGE_FLAGS_NEITHER,
> -  tune_params::PREF_NEON_64_FALSE,
>    tune_params::PREF_NEON_STRINGOPS_FALSE,
>    tune_params::FUSE_NOTHING,
>    tune_params::SCHED_AUTOPREF_OFF
> @@ -1952,7 +1942,6 @@ const struct tune_params arm_v6t2_tune =
>    tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,/* Thumb. */
>    tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,/* ARM. */
>    tune_params::DISPARAGE_FLAGS_NEITHER,
> -  tune_params::PREF_NEON_64_FALSE,
>    tune_params::PREF_NEON_STRINGOPS_FALSE,
>    tune_params::FUSE_NOTHING,
>    tune_params::SCHED_AUTOPREF_OFF
> @@ -1977,7 +1966,6 @@ const struct tune_params arm_cortex_tune =
>    tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,/* Thumb. */
>    tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,/* ARM. */
>    tune_params::DISPARAGE_FLAGS_NEITHER,
> -  tune_params::PREF_NEON_64_FALSE,
>    tune_params::PREF_NEON_STRINGOPS_FALSE,
>    tune_params::FUSE_NOTHING,
>    tune_params::SCHED_AUTOPREF_OFF
> @@ -2000,7 +1988,6 @@ const struct tune_params arm_cortex_a8_tune =
>    tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,/* Thumb. */
>    tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,/* ARM. */
>    tune_params::DISPARAGE_FLAGS_NEITHER,
> -  tune_params::PREF_NEON_64_FALSE,
>    tune_params::PREF_NEON_STRINGOPS_TRUE,
>    tune_params::FUSE_NOTHING,
>    tune_params::SCHED_AUTOPREF_OFF
> @@ -2023,7 +2010,6 @@ const struct tune_params arm_cortex_a7_tune =
>    tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,/* Thumb. */
>    tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,/* ARM. */
>    tune_params::DISPARAGE_FLAGS_NEITHER,
> -  tune_params::PREF_NEON_64_FALSE,
>    tune_params::PREF_NEON_STRINGOPS_TRUE,
>    tune_params::FUSE_NOTHING,
>    tune_params::SCHED_AUTOPREF_OFF
> @@ -2046,7 +2032,6 @@ const struct tune_params arm_cortex_a15_tune =
>    tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,/* Thumb. */
>    tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,/* ARM. */
>    tune_params::DISPARAGE_FLAGS_ALL,
> -  tune_params::PREF_NEON_64_FALSE,
>    tune_params::PREF_NEON_STRINGOPS_TRUE,
>    tune_params::FUSE_NOTHING,
>    tune_params::SCHED_AUTOPREF_FULL
> @@ -2069,7 +2054,6 @@ const struct tune_params arm_cortex_a35_tune =
>    tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,/* Thumb. */
>    tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,/* ARM. */
>    tune_params::DISPARAGE_FLAGS_NEITHER,
> -  tune_params::PREF_NEON_64_FALSE,
>    tune_params::PREF_NEON_STRINGOPS_TRUE,
>    FUSE_OPS (tune_params::FUSE_MOVW_MOVT),
>    tune_params::SCHED_AUTOPREF_OFF
> @@ -2092,7 +2076,6 @@ const struct tune_params arm_cortex_a53_tune =
>    tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,/* Thumb. */
>    tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,/* ARM. */
>    tune_params::DISPARAGE_FLAGS_NEITHER,
> -  tune_params::PREF_NEON_64_FALSE,
>    tune_params::PREF_NEON_STRINGOPS_TRUE,
>    FUSE_OPS (tune_params::FUSE_MOVW_MOVT | tune_params::FUSE_AES_AESMC),
>    tune_params::SCHED_AUTOPREF_OFF
> @@ -2115,7 +2098,6 @@ const struct tune_params arm_cortex_a57_tune =
>    tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,/* Thumb. */
>    tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,/* ARM. */
>    tune_params::DISPARAGE_FLAGS_ALL,
> -  tune_params::PREF_NEON_64_FALSE,
>    tune_params::PREF_NEON_STRINGOPS_TRUE,
>    FUSE_OPS (tune_params::FUSE_MOVW_MOVT | tune_params::FUSE_AES_AESMC),
>    tune_params::SCHED_AUTOPREF_FULL
> @@ -2138,7 +2120,6 @@ const struct tune_params arm_exynosm1_tune =
>    tune_params::LOG_OP_NON_SHORT_CIRCUIT_FALSE,/* Thumb.  */
>    tune_params::LOG_OP_NON_SHORT_CIRCUIT_FALSE,/* ARM. */
>    tune_params::DISPARAGE_FLAGS_ALL,
> -  tune_params::PREF_NEON_64_FALSE,
>    tune_params::PREF_NEON_STRINGOPS_TRUE,
>    tune_params::FUSE_NOTHING,
>    tune_params::SCHED_AUTOPREF_OFF
> @@ -2161,7 +2142,6 @@ const struct tune_params arm_xgene1_tune =
>    tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,/* Thumb. */
>    tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,/* ARM. */
>    tune_params::DISPARAGE_FLAGS_ALL,
> -  tune_params::PREF_NEON_64_FALSE,
>    tune_params::PREF_NEON_STRINGOPS_FALSE,
>    tune_params::FUSE_NOTHING,
>    tune_params::SCHED_AUTOPREF_OFF
> @@ -2184,7 +2164,6 @@ const struct tune_params arm_cortex_a5_tune =
>    tune_params::LOG_OP_NON_SHORT_CIRCUIT_FALSE,/* Thumb.  */
>    tune_params::LOG_OP_NON_SHORT_CIRCUIT_FALSE,/* ARM. */
>    tune_params::DISPARAGE_FLAGS_NEITHER,
> -  tune_params::PREF_NEON_64_FALSE,
>    tune_params::PREF_NEON_STRINGOPS_TRUE,
>    tune_params::FUSE_NOTHING,
>    tune_params::SCHED_AUTOPREF_OFF
> @@ -2207,7 +2186,6 @@ const struct tune_params arm_cortex_a9_tune =
>    tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,/* Thumb. */
>    tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,/* ARM. */
>    tune_params::DISPARAGE_FLAGS_NEITHER,
> -  tune_params::PREF_NEON_64_FALSE,
>    tune_params::PREF_NEON_STRINGOPS_FALSE,
>    tune_params::FUSE_NOTHING,
>    tune_params::SCHED_AUTOPREF_OFF
> @@ -2230,7 +2208,6 @@ const struct tune_params arm_cortex_a12_tune =
>    tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,/* Thumb. */
>    tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,/* ARM. */
>    tune_params::DISPARAGE_FLAGS_ALL,
> -  tune_params::PREF_NEON_64_FALSE,
>    tune_params::PREF_NEON_STRINGOPS_TRUE,
>    FUSE_OPS (tune_params::FUSE_MOVW_MOVT),
>    tune_params::SCHED_AUTOPREF_OFF
> @@ -2253,7 +2230,6 @@ const struct tune_params arm_cortex_a73_tune =
>    tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,/* Thumb. */
>    tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,/* ARM. */
>    tune_params::DISPARAGE_FLAGS_ALL,
> -  tune_params::PREF_NEON_64_FALSE,
>    tune_params::PREF_NEON_STRINGOPS_TRUE,
>    FUSE_OPS (tune_params::FUSE_AES_AESMC | tune_params::FUSE_MOVW_MOVT),
>    tune_params::SCHED_AUTOPREF_FULL
> @@ -2283,7 +2259,6 @@ const struct tune_params arm_v7m_tune =
>    tune_params::LOG_OP_NON_SHORT_CIRCUIT_FALSE,/* Thumb.  */
>    tune_params::LOG_OP_NON_SHORT_CIRCUIT_FALSE,/* ARM. */
>    tune_params::DISPARAGE_FLAGS_NEITHER,
> -  tune_params::PREF_NEON_64_FALSE,
>    tune_params::PREF_NEON_STRINGOPS_FALSE,
>    tune_params::FUSE_NOTHING,
>    tune_params::SCHED_AUTOPREF_OFF
> @@ -2308,7 +2283,6 @@ const struct tune_params arm_cortex_m7_tune =
>    tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,/* Thumb. */
>    tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,/* ARM. */
>    tune_params::DISPARAGE_FLAGS_NEITHER,
> -  tune_params::PREF_NEON_64_FALSE,
>    tune_params::PREF_NEON_STRINGOPS_FALSE,
>    tune_params::FUSE_NOTHING,
>    tune_params::SCHED_AUTOPREF_OFF
> @@ -2334,7 +2308,6 @@ const struct tune_params arm_v6m_tune =
>    tune_params::LOG_OP_NON_SHORT_CIRCUIT_FALSE,/* Thumb.  */
>    tune_params::LOG_OP_NON_SHORT_CIRCUIT_FALSE,/* ARM. */
>    tune_params::DISPARAGE_FLAGS_NEITHER,
> -  tune_params::PREF_NEON_64_FALSE,
>    tune_params::PREF_NEON_STRINGOPS_FALSE,
>    tune_params::FUSE_NOTHING,
>    tune_params::SCHED_AUTOPREF_OFF
> @@ -2357,7 +2330,6 @@ const struct tune_params arm_fa726te_tune =
>    tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,/* Thumb. */
>    tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,/* ARM. */
>    tune_params::DISPARAGE_FLAGS_NEITHER,
> -  tune_params::PREF_NEON_64_FALSE,
>    tune_params::PREF_NEON_STRINGOPS_FALSE,
>    tune_params::FUSE_NOTHING,
>    tune_params::SCHED_AUTOPREF_OFF
> @@ -3571,12 +3543,6 @@ arm_option_override (void)
>     global_options.x_param_values,
>     global_options_set.x_param_values);
>
> -  /* Use Neon to perform 64-bits operations rather than core
> -     registers.  */
> -  prefer_neon_for_64bits = current_tune->prefer_neon_for_64bits;
> -  if (use_neon_for_64bits == 1)
> -     prefer_neon_for_64bits = true;
> -
>    /* Look through ready list and all of queue for instructions
>       relevant for L2 auto-prefetcher.  */
>    int param_sched_autopref_queue_depth;
> @@ -26524,9 +26490,6 @@ arm_print_tune_info (void)
>         (int) current_tune->logical_op_non_short_circuit_thumb,
>         (int) current_tune->logical_op_non_short_circuit_arm);
>    asm_fprintf (asm_out_file, "\t\t" ASM_COMMENT_START
> -       "prefer_neon_for_64bits:\t%d\n",
> -       (int) current_tune->prefer_neon_for_64bits);
> -  asm_fprintf (asm_out_file, "\t\t" ASM_COMMENT_START
>         "disparage_flag_setting_t16_encodings:\t%d\n",
>         (int) current_tune->disparage_flag_setting_t16_encodings);
>    asm_fprintf (asm_out_file, "\t\t" ASM_COMMENT_START
> diff --git a/gcc/config/arm/arm.opt b/gcc/config/arm/arm.opt
> index 
> 9067d491b9c5fd9e1552a912e57d127b7770b858..1dc901499adbc276a26dd0e7f936913f489a148c 
> 100644
> --- a/gcc/config/arm/arm.opt
> +++ b/gcc/config/arm/arm.opt
> @@ -277,7 +277,7 @@ Enable unaligned word and halfword accesses to 
> packed data.
>
>  mneon-for-64bits
>  Target Report RejectNegative Var(use_neon_for_64bits) Init(0)
> -Use Neon to perform 64-bits operations rather than core registers.
> +(Deprecated)

I think we need to use the "Deprecated" specifier here and remove the 
use_neon_for_64bits var.

Have a look in common.opt for options marked deprecated

Thanks,

Kyrill

>
>  mslow-flash-data
>  Target Report Var(target_slow_flash_data) Init(0)
>
Wilco Dijkstra Aug. 23, 2019, 2:22 p.m. UTC | #2
Hi Kyrill,

> Please also adjust the documentation in doc/invoke.texi to say it's 
> deprecated and has no effect.
 
Sure, updated docs and also use Deprecated feature in arm.opts:

--- a/gcc/config/arm/arm.opt
+++ b/gcc/config/arm/arm.opt
@@ -276,8 +276,8 @@ Target Report Var(unaligned_access) Init(2) Save
 Enable unaligned word and halfword accesses to packed data.
 
 mneon-for-64bits
-Target Report RejectNegative Var(use_neon_for_64bits) Init(0)
-Use Neon to perform 64-bits operations rather than core registers.
+Target Deprecated
+This option is deprecated and has no effect.
 
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -17996,9 +17996,7 @@ defined.
 
 @item -mneon-for-64bits
 @opindex mneon-for-64bits
-Enables using Neon to handle scalar 64-bits operations. This is
-disabled by default since the cost of moving data from core registers
-to Neon is high.
+This option is deprecated and has no effect.
 
 @item -mslow-flash-data
 @opindex mslow-flash-data


Updated patch:

Deprecate -mneon-for-64bits since it no longer has any effect after
the DImode codegen improvements.

OK for commit?

ChangeLog:

2019-08-23  Wilco Dijkstra  <wdijkstr@arm.com>

	* gcc/doc/invoke.texi (mneon-for-64bits): Deprecate option.
	* gcc/config/arm/arm.opt (mneon-for-64bits): Deprecate option.
	* gcc/config/arm/arm.h (TARGET_PREFER_NEON_64BITS): Remove.
	(prefer_neon_for_64bits): Remove.
	* gcc/config/arm/arm.c (prefer_neon_for_64bits): Remove.
	(tune_params): Remove PREF_NEON_64_FALSE uses.
	(arm_option_override): Remove prefer_neon selection code.
	(arm_print_tune_info): Remove prefer_neon_for_64bits.
	* gcc/config/arm/arm-protos.h (tune_params): Remove
	prefer_neon_for_64bits.
	(prefer_neon_for_64bits): Remove.

---
diff --git a/gcc/config/arm/arm-protos.h b/gcc/config/arm/arm-protos.h
index bf2bf1c3b050365449b422976d7c0b39245f1490..8386d89fc0b955e85692f87fedd8710010ad2a35 100644
--- a/gcc/config/arm/arm-protos.h
+++ b/gcc/config/arm/arm-protos.h
@@ -327,7 +327,6 @@ struct tune_params
   /* Prefer 32-bit encoding instead of flag-setting 16-bit encoding.  */
   enum {DISPARAGE_FLAGS_NEITHER, DISPARAGE_FLAGS_PARTIAL, DISPARAGE_FLAGS_ALL}
     disparage_flag_setting_t16_encodings: 2;
-  enum {PREF_NEON_64_FALSE, PREF_NEON_64_TRUE} prefer_neon_for_64bits: 1;
   /* Prefer to inline string operations like memset by using Neon.  */
   enum {PREF_NEON_STRINGOPS_FALSE, PREF_NEON_STRINGOPS_TRUE}
     string_ops_prefer_neon: 1;
@@ -472,10 +471,6 @@ extern int arm_arch_thumb_hwdiv;
 /* Nonzero if chip disallows volatile memory access in IT block.  */
 extern int arm_arch_no_volatile_ce;
 
-/* Nonzero if we should use Neon to handle 64-bits operations rather
-   than core registers.  */
-extern int prefer_neon_for_64bits;
-
 /* Structure defining the current overall architectural target and tuning.  */
 struct arm_build_target
 {
diff --git a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h
index 50cb2c92e2c89562407fb89008b69f35b2a61fbe..8d023389eec469ad9c8a4e88edebdad5f3c23769 100644
--- a/gcc/config/arm/arm.h
+++ b/gcc/config/arm/arm.h
@@ -313,9 +313,6 @@ emission of floating point pcs attributes.  */
 /* Nonzero if disallow volatile memory access in IT block.  */
 #define TARGET_NO_VOLATILE_CE		(arm_arch_no_volatile_ce)
 
-/* Should NEON be used for 64-bits bitops.  */
-#define TARGET_PREFER_NEON_64BITS (prefer_neon_for_64bits)
-
 /* Should constant I be slplit for OP.  */
 #define DONT_EARLY_SPLIT_CONSTANT(i, op) \
 				((optimize >= 2) \
@@ -509,10 +506,6 @@ extern int arm_arch_thumb_hwdiv;
 /* Nonzero if chip disallows volatile memory access in IT block.  */
 extern int arm_arch_no_volatile_ce;
 
-/* Nonzero if we should use Neon to handle 64-bits operations rather
-   than core registers.  */
-extern int prefer_neon_for_64bits;
-
 /* Nonzero if we shouldn't use literal pools.  */
 #ifndef USED_FOR_TARGET
 extern bool arm_disable_literal_pool;
diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
index 38ac16ad1def91ca78ccfa98fd1679b2b5114851..5ea3409c8fa632b1a9959181de27f1dfa286a4d8 100644
--- a/gcc/config/arm/arm.c
+++ b/gcc/config/arm/arm.c
@@ -950,10 +950,6 @@ int arm_arch_thumb_hwdiv;
 /* Nonzero if chip disallows volatile memory access in IT block.  */
 int arm_arch_no_volatile_ce;
 
-/* Nonzero if we should use Neon to handle 64-bits operations rather
-   than core registers.  */
-int prefer_neon_for_64bits = 0;
-
 /* Nonzero if we shouldn't use literal pools.  */
 bool arm_disable_literal_pool = false;
 
@@ -1811,7 +1807,6 @@ const struct tune_params arm_slowmul_tune =
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* Thumb.  */
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* ARM.  */
   tune_params::DISPARAGE_FLAGS_NEITHER,
-  tune_params::PREF_NEON_64_FALSE,
   tune_params::PREF_NEON_STRINGOPS_FALSE,
   tune_params::FUSE_NOTHING,
   tune_params::SCHED_AUTOPREF_OFF
@@ -1834,7 +1829,6 @@ const struct tune_params arm_fastmul_tune =
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* Thumb.  */
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* ARM.  */
   tune_params::DISPARAGE_FLAGS_NEITHER,
-  tune_params::PREF_NEON_64_FALSE,
   tune_params::PREF_NEON_STRINGOPS_FALSE,
   tune_params::FUSE_NOTHING,
   tune_params::SCHED_AUTOPREF_OFF
@@ -1860,7 +1854,6 @@ const struct tune_params arm_strongarm_tune =
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* Thumb.  */
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* ARM.  */
   tune_params::DISPARAGE_FLAGS_NEITHER,
-  tune_params::PREF_NEON_64_FALSE,
   tune_params::PREF_NEON_STRINGOPS_FALSE,
   tune_params::FUSE_NOTHING,
   tune_params::SCHED_AUTOPREF_OFF
@@ -1883,7 +1876,6 @@ const struct tune_params arm_xscale_tune =
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* Thumb.  */
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* ARM.  */
   tune_params::DISPARAGE_FLAGS_NEITHER,
-  tune_params::PREF_NEON_64_FALSE,
   tune_params::PREF_NEON_STRINGOPS_FALSE,
   tune_params::FUSE_NOTHING,
   tune_params::SCHED_AUTOPREF_OFF
@@ -1906,7 +1898,6 @@ const struct tune_params arm_9e_tune =
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* Thumb.  */
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* ARM.  */
   tune_params::DISPARAGE_FLAGS_NEITHER,
-  tune_params::PREF_NEON_64_FALSE,
   tune_params::PREF_NEON_STRINGOPS_FALSE,
   tune_params::FUSE_NOTHING,
   tune_params::SCHED_AUTOPREF_OFF
@@ -1929,7 +1920,6 @@ const struct tune_params arm_marvell_pj4_tune =
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* Thumb.  */
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* ARM.  */
   tune_params::DISPARAGE_FLAGS_NEITHER,
-  tune_params::PREF_NEON_64_FALSE,
   tune_params::PREF_NEON_STRINGOPS_FALSE,
   tune_params::FUSE_NOTHING,
   tune_params::SCHED_AUTOPREF_OFF
@@ -1952,7 +1942,6 @@ const struct tune_params arm_v6t2_tune =
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* Thumb.  */
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* ARM.  */
   tune_params::DISPARAGE_FLAGS_NEITHER,
-  tune_params::PREF_NEON_64_FALSE,
   tune_params::PREF_NEON_STRINGOPS_FALSE,
   tune_params::FUSE_NOTHING,
   tune_params::SCHED_AUTOPREF_OFF
@@ -1977,7 +1966,6 @@ const struct tune_params arm_cortex_tune =
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* Thumb.  */
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* ARM.  */
   tune_params::DISPARAGE_FLAGS_NEITHER,
-  tune_params::PREF_NEON_64_FALSE,
   tune_params::PREF_NEON_STRINGOPS_FALSE,
   tune_params::FUSE_NOTHING,
   tune_params::SCHED_AUTOPREF_OFF
@@ -2000,7 +1988,6 @@ const struct tune_params arm_cortex_a8_tune =
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* Thumb.  */
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* ARM.  */
   tune_params::DISPARAGE_FLAGS_NEITHER,
-  tune_params::PREF_NEON_64_FALSE,
   tune_params::PREF_NEON_STRINGOPS_TRUE,
   tune_params::FUSE_NOTHING,
   tune_params::SCHED_AUTOPREF_OFF
@@ -2023,7 +2010,6 @@ const struct tune_params arm_cortex_a7_tune =
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* Thumb.  */
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* ARM.  */
   tune_params::DISPARAGE_FLAGS_NEITHER,
-  tune_params::PREF_NEON_64_FALSE,
   tune_params::PREF_NEON_STRINGOPS_TRUE,
   tune_params::FUSE_NOTHING,
   tune_params::SCHED_AUTOPREF_OFF
@@ -2046,7 +2032,6 @@ const struct tune_params arm_cortex_a15_tune =
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* Thumb.  */
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* ARM.  */
   tune_params::DISPARAGE_FLAGS_ALL,
-  tune_params::PREF_NEON_64_FALSE,
   tune_params::PREF_NEON_STRINGOPS_TRUE,
   tune_params::FUSE_NOTHING,
   tune_params::SCHED_AUTOPREF_FULL
@@ -2069,7 +2054,6 @@ const struct tune_params arm_cortex_a35_tune =
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* Thumb.  */
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* ARM.  */
   tune_params::DISPARAGE_FLAGS_NEITHER,
-  tune_params::PREF_NEON_64_FALSE,
   tune_params::PREF_NEON_STRINGOPS_TRUE,
   FUSE_OPS (tune_params::FUSE_MOVW_MOVT),
   tune_params::SCHED_AUTOPREF_OFF
@@ -2092,7 +2076,6 @@ const struct tune_params arm_cortex_a53_tune =
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* Thumb.  */
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* ARM.  */
   tune_params::DISPARAGE_FLAGS_NEITHER,
-  tune_params::PREF_NEON_64_FALSE,
   tune_params::PREF_NEON_STRINGOPS_TRUE,
   FUSE_OPS (tune_params::FUSE_MOVW_MOVT | tune_params::FUSE_AES_AESMC),
   tune_params::SCHED_AUTOPREF_OFF
@@ -2115,7 +2098,6 @@ const struct tune_params arm_cortex_a57_tune =
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* Thumb.  */
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* ARM.  */
   tune_params::DISPARAGE_FLAGS_ALL,
-  tune_params::PREF_NEON_64_FALSE,
   tune_params::PREF_NEON_STRINGOPS_TRUE,
   FUSE_OPS (tune_params::FUSE_MOVW_MOVT | tune_params::FUSE_AES_AESMC),
   tune_params::SCHED_AUTOPREF_FULL
@@ -2138,7 +2120,6 @@ const struct tune_params arm_exynosm1_tune =
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_FALSE,	/* Thumb.  */
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_FALSE,	/* ARM.  */
   tune_params::DISPARAGE_FLAGS_ALL,
-  tune_params::PREF_NEON_64_FALSE,
   tune_params::PREF_NEON_STRINGOPS_TRUE,
   tune_params::FUSE_NOTHING,
   tune_params::SCHED_AUTOPREF_OFF
@@ -2161,7 +2142,6 @@ const struct tune_params arm_xgene1_tune =
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* Thumb.  */
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* ARM.  */
   tune_params::DISPARAGE_FLAGS_ALL,
-  tune_params::PREF_NEON_64_FALSE,
   tune_params::PREF_NEON_STRINGOPS_FALSE,
   tune_params::FUSE_NOTHING,
   tune_params::SCHED_AUTOPREF_OFF
@@ -2184,7 +2164,6 @@ const struct tune_params arm_cortex_a5_tune =
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_FALSE,		/* Thumb.  */
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_FALSE,		/* ARM.  */
   tune_params::DISPARAGE_FLAGS_NEITHER,
-  tune_params::PREF_NEON_64_FALSE,
   tune_params::PREF_NEON_STRINGOPS_TRUE,
   tune_params::FUSE_NOTHING,
   tune_params::SCHED_AUTOPREF_OFF
@@ -2207,7 +2186,6 @@ const struct tune_params arm_cortex_a9_tune =
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* Thumb.  */
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* ARM.  */
   tune_params::DISPARAGE_FLAGS_NEITHER,
-  tune_params::PREF_NEON_64_FALSE,
   tune_params::PREF_NEON_STRINGOPS_FALSE,
   tune_params::FUSE_NOTHING,
   tune_params::SCHED_AUTOPREF_OFF
@@ -2230,7 +2208,6 @@ const struct tune_params arm_cortex_a12_tune =
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* Thumb.  */
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* ARM.  */
   tune_params::DISPARAGE_FLAGS_ALL,
-  tune_params::PREF_NEON_64_FALSE,
   tune_params::PREF_NEON_STRINGOPS_TRUE,
   FUSE_OPS (tune_params::FUSE_MOVW_MOVT),
   tune_params::SCHED_AUTOPREF_OFF
@@ -2253,7 +2230,6 @@ const struct tune_params arm_cortex_a73_tune =
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* Thumb.  */
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* ARM.  */
   tune_params::DISPARAGE_FLAGS_ALL,
-  tune_params::PREF_NEON_64_FALSE,
   tune_params::PREF_NEON_STRINGOPS_TRUE,
   FUSE_OPS (tune_params::FUSE_AES_AESMC | tune_params::FUSE_MOVW_MOVT),
   tune_params::SCHED_AUTOPREF_FULL
@@ -2283,7 +2259,6 @@ const struct tune_params arm_v7m_tune =
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_FALSE,		/* Thumb.  */
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_FALSE,		/* ARM.  */
   tune_params::DISPARAGE_FLAGS_NEITHER,
-  tune_params::PREF_NEON_64_FALSE,
   tune_params::PREF_NEON_STRINGOPS_FALSE,
   tune_params::FUSE_NOTHING,
   tune_params::SCHED_AUTOPREF_OFF
@@ -2308,7 +2283,6 @@ const struct tune_params arm_cortex_m7_tune =
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* Thumb.  */
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* ARM.  */
   tune_params::DISPARAGE_FLAGS_NEITHER,
-  tune_params::PREF_NEON_64_FALSE,
   tune_params::PREF_NEON_STRINGOPS_FALSE,
   tune_params::FUSE_NOTHING,
   tune_params::SCHED_AUTOPREF_OFF
@@ -2334,7 +2308,6 @@ const struct tune_params arm_v6m_tune =
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_FALSE,		/* Thumb.  */
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_FALSE,		/* ARM.  */
   tune_params::DISPARAGE_FLAGS_NEITHER,
-  tune_params::PREF_NEON_64_FALSE,
   tune_params::PREF_NEON_STRINGOPS_FALSE,
   tune_params::FUSE_NOTHING,
   tune_params::SCHED_AUTOPREF_OFF
@@ -2357,7 +2330,6 @@ const struct tune_params arm_fa726te_tune =
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* Thumb.  */
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* ARM.  */
   tune_params::DISPARAGE_FLAGS_NEITHER,
-  tune_params::PREF_NEON_64_FALSE,
   tune_params::PREF_NEON_STRINGOPS_FALSE,
   tune_params::FUSE_NOTHING,
   tune_params::SCHED_AUTOPREF_OFF
@@ -3571,12 +3543,6 @@ arm_option_override (void)
 			   global_options.x_param_values,
 			   global_options_set.x_param_values);
 
-  /* Use Neon to perform 64-bits operations rather than core
-     registers.  */
-  prefer_neon_for_64bits = current_tune->prefer_neon_for_64bits;
-  if (use_neon_for_64bits == 1)
-     prefer_neon_for_64bits = true;
-
   /* Look through ready list and all of queue for instructions
      relevant for L2 auto-prefetcher.  */
   int param_sched_autopref_queue_depth;
@@ -26524,9 +26490,6 @@ arm_print_tune_info (void)
 	       (int) current_tune->logical_op_non_short_circuit_thumb,
 	       (int) current_tune->logical_op_non_short_circuit_arm);
   asm_fprintf (asm_out_file, "\t\t" ASM_COMMENT_START
-	       "prefer_neon_for_64bits:\t%d\n",
-	       (int) current_tune->prefer_neon_for_64bits);
-  asm_fprintf (asm_out_file, "\t\t" ASM_COMMENT_START
 	       "disparage_flag_setting_t16_encodings:\t%d\n",
 	       (int) current_tune->disparage_flag_setting_t16_encodings);
   asm_fprintf (asm_out_file, "\t\t" ASM_COMMENT_START
diff --git a/gcc/config/arm/arm.opt b/gcc/config/arm/arm.opt
index 9067d491b9c5fd9e1552a912e57d127b7770b858..5ecc5e5c91c521309925d4c14f04644e37f472e6 100644
--- a/gcc/config/arm/arm.opt
+++ b/gcc/config/arm/arm.opt
@@ -276,8 +276,8 @@ Target Report Var(unaligned_access) Init(2) Save
 Enable unaligned word and halfword accesses to packed data.
 
 mneon-for-64bits
-Target Report RejectNegative Var(use_neon_for_64bits) Init(0)
-Use Neon to perform 64-bits operations rather than core registers.
+Target Deprecated
+This option is deprecated and has no effect.
 
 mslow-flash-data
 Target Report Var(target_slow_flash_data) Init(0)
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index 096340cfb6667a3f90ecba93ab975d2b0ef87ad3..669baf06f768fbfee1dc824d687e134f71d3ffca 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -17996,9 +17996,7 @@ defined.
 
 @item -mneon-for-64bits
 @opindex mneon-for-64bits
-Enables using Neon to handle scalar 64-bits operations. This is
-disabled by default since the cost of moving data from core registers
-to Neon is high.
+This option is deprecated and has no effect.
 
 @item -mslow-flash-data
 @opindex mslow-flash-data
Kyrill Tkachov Aug. 23, 2019, 2:29 p.m. UTC | #3
On 8/23/19 3:22 PM, Wilco Dijkstra wrote:
> Hi Kyrill,
>
>> Please also adjust the documentation in doc/invoke.texi to say it's
>> deprecated and has no effect.
>   
> Sure, updated docs and also use Deprecated feature in arm.opts:
>
> --- a/gcc/config/arm/arm.opt
> +++ b/gcc/config/arm/arm.opt
> @@ -276,8 +276,8 @@ Target Report Var(unaligned_access) Init(2) Save
>   Enable unaligned word and halfword accesses to packed data.
>   
>   mneon-for-64bits
> -Target Report RejectNegative Var(use_neon_for_64bits) Init(0)
> -Use Neon to perform 64-bits operations rather than core registers.
> +Target Deprecated
> +This option is deprecated and has no effect.
>   
> --- a/gcc/doc/invoke.texi
> +++ b/gcc/doc/invoke.texi
> @@ -17996,9 +17996,7 @@ defined.
>   
>   @item -mneon-for-64bits
>   @opindex mneon-for-64bits
> -Enables using Neon to handle scalar 64-bits operations. This is
> -disabled by default since the cost of moving data from core registers
> -to Neon is high.
> +This option is deprecated and has no effect.
>   
>   @item -mslow-flash-data
>   @opindex mslow-flash-data
>
>
> Updated patch:
>
> Deprecate -mneon-for-64bits since it no longer has any effect after
> the DImode codegen improvements.
>
> OK for commit?
>
> ChangeLog:
>
> 2019-08-23  Wilco Dijkstra  <wdijkstr@arm.com>
>
> 	* gcc/doc/invoke.texi (mneon-for-64bits): Deprecate option.
> 	* gcc/config/arm/arm.opt (mneon-for-64bits): Deprecate option.
> 	* gcc/config/arm/arm.h (TARGET_PREFER_NEON_64BITS): Remove.
> 	(prefer_neon_for_64bits): Remove.
> 	* gcc/config/arm/arm.c (prefer_neon_for_64bits): Remove.
> 	(tune_params): Remove PREF_NEON_64_FALSE uses.
> 	(arm_option_override): Remove prefer_neon selection code.
> 	(arm_print_tune_info): Remove prefer_neon_for_64bits.
> 	* gcc/config/arm/arm-protos.h (tune_params): Remove
> 	prefer_neon_for_64bits.
> 	(prefer_neon_for_64bits): Remove.

Ok.

Thanks,

Kyrill



>
> ---
> diff --git a/gcc/config/arm/arm-protos.h b/gcc/config/arm/arm-protos.h
> index bf2bf1c3b050365449b422976d7c0b39245f1490..8386d89fc0b955e85692f87fedd8710010ad2a35 100644
> --- a/gcc/config/arm/arm-protos.h
> +++ b/gcc/config/arm/arm-protos.h
> @@ -327,7 +327,6 @@ struct tune_params
>     /* Prefer 32-bit encoding instead of flag-setting 16-bit encoding.  */
>     enum {DISPARAGE_FLAGS_NEITHER, DISPARAGE_FLAGS_PARTIAL, DISPARAGE_FLAGS_ALL}
>       disparage_flag_setting_t16_encodings: 2;
> -  enum {PREF_NEON_64_FALSE, PREF_NEON_64_TRUE} prefer_neon_for_64bits: 1;
>     /* Prefer to inline string operations like memset by using Neon.  */
>     enum {PREF_NEON_STRINGOPS_FALSE, PREF_NEON_STRINGOPS_TRUE}
>       string_ops_prefer_neon: 1;
> @@ -472,10 +471,6 @@ extern int arm_arch_thumb_hwdiv;
>   /* Nonzero if chip disallows volatile memory access in IT block.  */
>   extern int arm_arch_no_volatile_ce;
>   
> -/* Nonzero if we should use Neon to handle 64-bits operations rather
> -   than core registers.  */
> -extern int prefer_neon_for_64bits;
> -
>   /* Structure defining the current overall architectural target and tuning.  */
>   struct arm_build_target
>   {
> diff --git a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h
> index 50cb2c92e2c89562407fb89008b69f35b2a61fbe..8d023389eec469ad9c8a4e88edebdad5f3c23769 100644
> --- a/gcc/config/arm/arm.h
> +++ b/gcc/config/arm/arm.h
> @@ -313,9 +313,6 @@ emission of floating point pcs attributes.  */
>   /* Nonzero if disallow volatile memory access in IT block.  */
>   #define TARGET_NO_VOLATILE_CE		(arm_arch_no_volatile_ce)
>   
> -/* Should NEON be used for 64-bits bitops.  */
> -#define TARGET_PREFER_NEON_64BITS (prefer_neon_for_64bits)
> -
>   /* Should constant I be slplit for OP.  */
>   #define DONT_EARLY_SPLIT_CONSTANT(i, op) \
>   				((optimize >= 2) \
> @@ -509,10 +506,6 @@ extern int arm_arch_thumb_hwdiv;
>   /* Nonzero if chip disallows volatile memory access in IT block.  */
>   extern int arm_arch_no_volatile_ce;
>   
> -/* Nonzero if we should use Neon to handle 64-bits operations rather
> -   than core registers.  */
> -extern int prefer_neon_for_64bits;
> -
>   /* Nonzero if we shouldn't use literal pools.  */
>   #ifndef USED_FOR_TARGET
>   extern bool arm_disable_literal_pool;
> diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
> index 38ac16ad1def91ca78ccfa98fd1679b2b5114851..5ea3409c8fa632b1a9959181de27f1dfa286a4d8 100644
> --- a/gcc/config/arm/arm.c
> +++ b/gcc/config/arm/arm.c
> @@ -950,10 +950,6 @@ int arm_arch_thumb_hwdiv;
>   /* Nonzero if chip disallows volatile memory access in IT block.  */
>   int arm_arch_no_volatile_ce;
>   
> -/* Nonzero if we should use Neon to handle 64-bits operations rather
> -   than core registers.  */
> -int prefer_neon_for_64bits = 0;
> -
>   /* Nonzero if we shouldn't use literal pools.  */
>   bool arm_disable_literal_pool = false;
>   
> @@ -1811,7 +1807,6 @@ const struct tune_params arm_slowmul_tune =
>     tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* Thumb.  */
>     tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* ARM.  */
>     tune_params::DISPARAGE_FLAGS_NEITHER,
> -  tune_params::PREF_NEON_64_FALSE,
>     tune_params::PREF_NEON_STRINGOPS_FALSE,
>     tune_params::FUSE_NOTHING,
>     tune_params::SCHED_AUTOPREF_OFF
> @@ -1834,7 +1829,6 @@ const struct tune_params arm_fastmul_tune =
>     tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* Thumb.  */
>     tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* ARM.  */
>     tune_params::DISPARAGE_FLAGS_NEITHER,
> -  tune_params::PREF_NEON_64_FALSE,
>     tune_params::PREF_NEON_STRINGOPS_FALSE,
>     tune_params::FUSE_NOTHING,
>     tune_params::SCHED_AUTOPREF_OFF
> @@ -1860,7 +1854,6 @@ const struct tune_params arm_strongarm_tune =
>     tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* Thumb.  */
>     tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* ARM.  */
>     tune_params::DISPARAGE_FLAGS_NEITHER,
> -  tune_params::PREF_NEON_64_FALSE,
>     tune_params::PREF_NEON_STRINGOPS_FALSE,
>     tune_params::FUSE_NOTHING,
>     tune_params::SCHED_AUTOPREF_OFF
> @@ -1883,7 +1876,6 @@ const struct tune_params arm_xscale_tune =
>     tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* Thumb.  */
>     tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* ARM.  */
>     tune_params::DISPARAGE_FLAGS_NEITHER,
> -  tune_params::PREF_NEON_64_FALSE,
>     tune_params::PREF_NEON_STRINGOPS_FALSE,
>     tune_params::FUSE_NOTHING,
>     tune_params::SCHED_AUTOPREF_OFF
> @@ -1906,7 +1898,6 @@ const struct tune_params arm_9e_tune =
>     tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* Thumb.  */
>     tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* ARM.  */
>     tune_params::DISPARAGE_FLAGS_NEITHER,
> -  tune_params::PREF_NEON_64_FALSE,
>     tune_params::PREF_NEON_STRINGOPS_FALSE,
>     tune_params::FUSE_NOTHING,
>     tune_params::SCHED_AUTOPREF_OFF
> @@ -1929,7 +1920,6 @@ const struct tune_params arm_marvell_pj4_tune =
>     tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* Thumb.  */
>     tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* ARM.  */
>     tune_params::DISPARAGE_FLAGS_NEITHER,
> -  tune_params::PREF_NEON_64_FALSE,
>     tune_params::PREF_NEON_STRINGOPS_FALSE,
>     tune_params::FUSE_NOTHING,
>     tune_params::SCHED_AUTOPREF_OFF
> @@ -1952,7 +1942,6 @@ const struct tune_params arm_v6t2_tune =
>     tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* Thumb.  */
>     tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* ARM.  */
>     tune_params::DISPARAGE_FLAGS_NEITHER,
> -  tune_params::PREF_NEON_64_FALSE,
>     tune_params::PREF_NEON_STRINGOPS_FALSE,
>     tune_params::FUSE_NOTHING,
>     tune_params::SCHED_AUTOPREF_OFF
> @@ -1977,7 +1966,6 @@ const struct tune_params arm_cortex_tune =
>     tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* Thumb.  */
>     tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* ARM.  */
>     tune_params::DISPARAGE_FLAGS_NEITHER,
> -  tune_params::PREF_NEON_64_FALSE,
>     tune_params::PREF_NEON_STRINGOPS_FALSE,
>     tune_params::FUSE_NOTHING,
>     tune_params::SCHED_AUTOPREF_OFF
> @@ -2000,7 +1988,6 @@ const struct tune_params arm_cortex_a8_tune =
>     tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* Thumb.  */
>     tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* ARM.  */
>     tune_params::DISPARAGE_FLAGS_NEITHER,
> -  tune_params::PREF_NEON_64_FALSE,
>     tune_params::PREF_NEON_STRINGOPS_TRUE,
>     tune_params::FUSE_NOTHING,
>     tune_params::SCHED_AUTOPREF_OFF
> @@ -2023,7 +2010,6 @@ const struct tune_params arm_cortex_a7_tune =
>     tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* Thumb.  */
>     tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* ARM.  */
>     tune_params::DISPARAGE_FLAGS_NEITHER,
> -  tune_params::PREF_NEON_64_FALSE,
>     tune_params::PREF_NEON_STRINGOPS_TRUE,
>     tune_params::FUSE_NOTHING,
>     tune_params::SCHED_AUTOPREF_OFF
> @@ -2046,7 +2032,6 @@ const struct tune_params arm_cortex_a15_tune =
>     tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* Thumb.  */
>     tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* ARM.  */
>     tune_params::DISPARAGE_FLAGS_ALL,
> -  tune_params::PREF_NEON_64_FALSE,
>     tune_params::PREF_NEON_STRINGOPS_TRUE,
>     tune_params::FUSE_NOTHING,
>     tune_params::SCHED_AUTOPREF_FULL
> @@ -2069,7 +2054,6 @@ const struct tune_params arm_cortex_a35_tune =
>     tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* Thumb.  */
>     tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* ARM.  */
>     tune_params::DISPARAGE_FLAGS_NEITHER,
> -  tune_params::PREF_NEON_64_FALSE,
>     tune_params::PREF_NEON_STRINGOPS_TRUE,
>     FUSE_OPS (tune_params::FUSE_MOVW_MOVT),
>     tune_params::SCHED_AUTOPREF_OFF
> @@ -2092,7 +2076,6 @@ const struct tune_params arm_cortex_a53_tune =
>     tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* Thumb.  */
>     tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* ARM.  */
>     tune_params::DISPARAGE_FLAGS_NEITHER,
> -  tune_params::PREF_NEON_64_FALSE,
>     tune_params::PREF_NEON_STRINGOPS_TRUE,
>     FUSE_OPS (tune_params::FUSE_MOVW_MOVT | tune_params::FUSE_AES_AESMC),
>     tune_params::SCHED_AUTOPREF_OFF
> @@ -2115,7 +2098,6 @@ const struct tune_params arm_cortex_a57_tune =
>     tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* Thumb.  */
>     tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* ARM.  */
>     tune_params::DISPARAGE_FLAGS_ALL,
> -  tune_params::PREF_NEON_64_FALSE,
>     tune_params::PREF_NEON_STRINGOPS_TRUE,
>     FUSE_OPS (tune_params::FUSE_MOVW_MOVT | tune_params::FUSE_AES_AESMC),
>     tune_params::SCHED_AUTOPREF_FULL
> @@ -2138,7 +2120,6 @@ const struct tune_params arm_exynosm1_tune =
>     tune_params::LOG_OP_NON_SHORT_CIRCUIT_FALSE,	/* Thumb.  */
>     tune_params::LOG_OP_NON_SHORT_CIRCUIT_FALSE,	/* ARM.  */
>     tune_params::DISPARAGE_FLAGS_ALL,
> -  tune_params::PREF_NEON_64_FALSE,
>     tune_params::PREF_NEON_STRINGOPS_TRUE,
>     tune_params::FUSE_NOTHING,
>     tune_params::SCHED_AUTOPREF_OFF
> @@ -2161,7 +2142,6 @@ const struct tune_params arm_xgene1_tune =
>     tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* Thumb.  */
>     tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* ARM.  */
>     tune_params::DISPARAGE_FLAGS_ALL,
> -  tune_params::PREF_NEON_64_FALSE,
>     tune_params::PREF_NEON_STRINGOPS_FALSE,
>     tune_params::FUSE_NOTHING,
>     tune_params::SCHED_AUTOPREF_OFF
> @@ -2184,7 +2164,6 @@ const struct tune_params arm_cortex_a5_tune =
>     tune_params::LOG_OP_NON_SHORT_CIRCUIT_FALSE,		/* Thumb.  */
>     tune_params::LOG_OP_NON_SHORT_CIRCUIT_FALSE,		/* ARM.  */
>     tune_params::DISPARAGE_FLAGS_NEITHER,
> -  tune_params::PREF_NEON_64_FALSE,
>     tune_params::PREF_NEON_STRINGOPS_TRUE,
>     tune_params::FUSE_NOTHING,
>     tune_params::SCHED_AUTOPREF_OFF
> @@ -2207,7 +2186,6 @@ const struct tune_params arm_cortex_a9_tune =
>     tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* Thumb.  */
>     tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* ARM.  */
>     tune_params::DISPARAGE_FLAGS_NEITHER,
> -  tune_params::PREF_NEON_64_FALSE,
>     tune_params::PREF_NEON_STRINGOPS_FALSE,
>     tune_params::FUSE_NOTHING,
>     tune_params::SCHED_AUTOPREF_OFF
> @@ -2230,7 +2208,6 @@ const struct tune_params arm_cortex_a12_tune =
>     tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* Thumb.  */
>     tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* ARM.  */
>     tune_params::DISPARAGE_FLAGS_ALL,
> -  tune_params::PREF_NEON_64_FALSE,
>     tune_params::PREF_NEON_STRINGOPS_TRUE,
>     FUSE_OPS (tune_params::FUSE_MOVW_MOVT),
>     tune_params::SCHED_AUTOPREF_OFF
> @@ -2253,7 +2230,6 @@ const struct tune_params arm_cortex_a73_tune =
>     tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* Thumb.  */
>     tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* ARM.  */
>     tune_params::DISPARAGE_FLAGS_ALL,
> -  tune_params::PREF_NEON_64_FALSE,
>     tune_params::PREF_NEON_STRINGOPS_TRUE,
>     FUSE_OPS (tune_params::FUSE_AES_AESMC | tune_params::FUSE_MOVW_MOVT),
>     tune_params::SCHED_AUTOPREF_FULL
> @@ -2283,7 +2259,6 @@ const struct tune_params arm_v7m_tune =
>     tune_params::LOG_OP_NON_SHORT_CIRCUIT_FALSE,		/* Thumb.  */
>     tune_params::LOG_OP_NON_SHORT_CIRCUIT_FALSE,		/* ARM.  */
>     tune_params::DISPARAGE_FLAGS_NEITHER,
> -  tune_params::PREF_NEON_64_FALSE,
>     tune_params::PREF_NEON_STRINGOPS_FALSE,
>     tune_params::FUSE_NOTHING,
>     tune_params::SCHED_AUTOPREF_OFF
> @@ -2308,7 +2283,6 @@ const struct tune_params arm_cortex_m7_tune =
>     tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* Thumb.  */
>     tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* ARM.  */
>     tune_params::DISPARAGE_FLAGS_NEITHER,
> -  tune_params::PREF_NEON_64_FALSE,
>     tune_params::PREF_NEON_STRINGOPS_FALSE,
>     tune_params::FUSE_NOTHING,
>     tune_params::SCHED_AUTOPREF_OFF
> @@ -2334,7 +2308,6 @@ const struct tune_params arm_v6m_tune =
>     tune_params::LOG_OP_NON_SHORT_CIRCUIT_FALSE,		/* Thumb.  */
>     tune_params::LOG_OP_NON_SHORT_CIRCUIT_FALSE,		/* ARM.  */
>     tune_params::DISPARAGE_FLAGS_NEITHER,
> -  tune_params::PREF_NEON_64_FALSE,
>     tune_params::PREF_NEON_STRINGOPS_FALSE,
>     tune_params::FUSE_NOTHING,
>     tune_params::SCHED_AUTOPREF_OFF
> @@ -2357,7 +2330,6 @@ const struct tune_params arm_fa726te_tune =
>     tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* Thumb.  */
>     tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* ARM.  */
>     tune_params::DISPARAGE_FLAGS_NEITHER,
> -  tune_params::PREF_NEON_64_FALSE,
>     tune_params::PREF_NEON_STRINGOPS_FALSE,
>     tune_params::FUSE_NOTHING,
>     tune_params::SCHED_AUTOPREF_OFF
> @@ -3571,12 +3543,6 @@ arm_option_override (void)
>   			   global_options.x_param_values,
>   			   global_options_set.x_param_values);
>   
> -  /* Use Neon to perform 64-bits operations rather than core
> -     registers.  */
> -  prefer_neon_for_64bits = current_tune->prefer_neon_for_64bits;
> -  if (use_neon_for_64bits == 1)
> -     prefer_neon_for_64bits = true;
> -
>     /* Look through ready list and all of queue for instructions
>        relevant for L2 auto-prefetcher.  */
>     int param_sched_autopref_queue_depth;
> @@ -26524,9 +26490,6 @@ arm_print_tune_info (void)
>   	       (int) current_tune->logical_op_non_short_circuit_thumb,
>   	       (int) current_tune->logical_op_non_short_circuit_arm);
>     asm_fprintf (asm_out_file, "\t\t" ASM_COMMENT_START
> -	       "prefer_neon_for_64bits:\t%d\n",
> -	       (int) current_tune->prefer_neon_for_64bits);
> -  asm_fprintf (asm_out_file, "\t\t" ASM_COMMENT_START
>   	       "disparage_flag_setting_t16_encodings:\t%d\n",
>   	       (int) current_tune->disparage_flag_setting_t16_encodings);
>     asm_fprintf (asm_out_file, "\t\t" ASM_COMMENT_START
> diff --git a/gcc/config/arm/arm.opt b/gcc/config/arm/arm.opt
> index 9067d491b9c5fd9e1552a912e57d127b7770b858..5ecc5e5c91c521309925d4c14f04644e37f472e6 100644
> --- a/gcc/config/arm/arm.opt
> +++ b/gcc/config/arm/arm.opt
> @@ -276,8 +276,8 @@ Target Report Var(unaligned_access) Init(2) Save
>   Enable unaligned word and halfword accesses to packed data.
>   
>   mneon-for-64bits
> -Target Report RejectNegative Var(use_neon_for_64bits) Init(0)
> -Use Neon to perform 64-bits operations rather than core registers.
> +Target Deprecated
> +This option is deprecated and has no effect.
>   
>   mslow-flash-data
>   Target Report Var(target_slow_flash_data) Init(0)
> diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
> index 096340cfb6667a3f90ecba93ab975d2b0ef87ad3..669baf06f768fbfee1dc824d687e134f71d3ffca 100644
> --- a/gcc/doc/invoke.texi
> +++ b/gcc/doc/invoke.texi
> @@ -17996,9 +17996,7 @@ defined.
>   
>   @item -mneon-for-64bits
>   @opindex mneon-for-64bits
> -Enables using Neon to handle scalar 64-bits operations. This is
> -disabled by default since the cost of moving data from core registers
> -to Neon is high.
> +This option is deprecated and has no effect.
>   
>   @item -mslow-flash-data
>   @opindex mslow-flash-data

Patch
diff mbox series

diff --git a/gcc/config/arm/arm-protos.h b/gcc/config/arm/arm-protos.h
index bf2bf1c3b050365449b422976d7c0b39245f1490..8386d89fc0b955e85692f87fedd8710010ad2a35 100644
--- a/gcc/config/arm/arm-protos.h
+++ b/gcc/config/arm/arm-protos.h
@@ -327,7 +327,6 @@  struct tune_params
   /* Prefer 32-bit encoding instead of flag-setting 16-bit encoding.  */
   enum {DISPARAGE_FLAGS_NEITHER, DISPARAGE_FLAGS_PARTIAL, DISPARAGE_FLAGS_ALL}
     disparage_flag_setting_t16_encodings: 2;
-  enum {PREF_NEON_64_FALSE, PREF_NEON_64_TRUE} prefer_neon_for_64bits: 1;
   /* Prefer to inline string operations like memset by using Neon.  */
   enum {PREF_NEON_STRINGOPS_FALSE, PREF_NEON_STRINGOPS_TRUE}
     string_ops_prefer_neon: 1;
@@ -472,10 +471,6 @@  extern int arm_arch_thumb_hwdiv;
 /* Nonzero if chip disallows volatile memory access in IT block.  */
 extern int arm_arch_no_volatile_ce;
 
-/* Nonzero if we should use Neon to handle 64-bits operations rather
-   than core registers.  */
-extern int prefer_neon_for_64bits;
-
 /* Structure defining the current overall architectural target and tuning.  */
 struct arm_build_target
 {
diff --git a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h
index 50cb2c92e2c89562407fb89008b69f35b2a61fbe..8d023389eec469ad9c8a4e88edebdad5f3c23769 100644
--- a/gcc/config/arm/arm.h
+++ b/gcc/config/arm/arm.h
@@ -313,9 +313,6 @@  emission of floating point pcs attributes.  */
 /* Nonzero if disallow volatile memory access in IT block.  */
 #define TARGET_NO_VOLATILE_CE		(arm_arch_no_volatile_ce)
 
-/* Should NEON be used for 64-bits bitops.  */
-#define TARGET_PREFER_NEON_64BITS (prefer_neon_for_64bits)
-
 /* Should constant I be slplit for OP.  */
 #define DONT_EARLY_SPLIT_CONSTANT(i, op) \
 				((optimize >= 2) \
@@ -509,10 +506,6 @@  extern int arm_arch_thumb_hwdiv;
 /* Nonzero if chip disallows volatile memory access in IT block.  */
 extern int arm_arch_no_volatile_ce;
 
-/* Nonzero if we should use Neon to handle 64-bits operations rather
-   than core registers.  */
-extern int prefer_neon_for_64bits;
-
 /* Nonzero if we shouldn't use literal pools.  */
 #ifndef USED_FOR_TARGET
 extern bool arm_disable_literal_pool;
diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
index 38ac16ad1def91ca78ccfa98fd1679b2b5114851..5ea3409c8fa632b1a9959181de27f1dfa286a4d8 100644
--- a/gcc/config/arm/arm.c
+++ b/gcc/config/arm/arm.c
@@ -950,10 +950,6 @@  int arm_arch_thumb_hwdiv;
 /* Nonzero if chip disallows volatile memory access in IT block.  */
 int arm_arch_no_volatile_ce;
 
-/* Nonzero if we should use Neon to handle 64-bits operations rather
-   than core registers.  */
-int prefer_neon_for_64bits = 0;
-
 /* Nonzero if we shouldn't use literal pools.  */
 bool arm_disable_literal_pool = false;
 
@@ -1811,7 +1807,6 @@  const struct tune_params arm_slowmul_tune =
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* Thumb.  */
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* ARM.  */
   tune_params::DISPARAGE_FLAGS_NEITHER,
-  tune_params::PREF_NEON_64_FALSE,
   tune_params::PREF_NEON_STRINGOPS_FALSE,
   tune_params::FUSE_NOTHING,
   tune_params::SCHED_AUTOPREF_OFF
@@ -1834,7 +1829,6 @@  const struct tune_params arm_fastmul_tune =
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* Thumb.  */
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* ARM.  */
   tune_params::DISPARAGE_FLAGS_NEITHER,
-  tune_params::PREF_NEON_64_FALSE,
   tune_params::PREF_NEON_STRINGOPS_FALSE,
   tune_params::FUSE_NOTHING,
   tune_params::SCHED_AUTOPREF_OFF
@@ -1860,7 +1854,6 @@  const struct tune_params arm_strongarm_tune =
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* Thumb.  */
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* ARM.  */
   tune_params::DISPARAGE_FLAGS_NEITHER,
-  tune_params::PREF_NEON_64_FALSE,
   tune_params::PREF_NEON_STRINGOPS_FALSE,
   tune_params::FUSE_NOTHING,
   tune_params::SCHED_AUTOPREF_OFF
@@ -1883,7 +1876,6 @@  const struct tune_params arm_xscale_tune =
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* Thumb.  */
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* ARM.  */
   tune_params::DISPARAGE_FLAGS_NEITHER,
-  tune_params::PREF_NEON_64_FALSE,
   tune_params::PREF_NEON_STRINGOPS_FALSE,
   tune_params::FUSE_NOTHING,
   tune_params::SCHED_AUTOPREF_OFF
@@ -1906,7 +1898,6 @@  const struct tune_params arm_9e_tune =
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* Thumb.  */
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* ARM.  */
   tune_params::DISPARAGE_FLAGS_NEITHER,
-  tune_params::PREF_NEON_64_FALSE,
   tune_params::PREF_NEON_STRINGOPS_FALSE,
   tune_params::FUSE_NOTHING,
   tune_params::SCHED_AUTOPREF_OFF
@@ -1929,7 +1920,6 @@  const struct tune_params arm_marvell_pj4_tune =
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* Thumb.  */
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* ARM.  */
   tune_params::DISPARAGE_FLAGS_NEITHER,
-  tune_params::PREF_NEON_64_FALSE,
   tune_params::PREF_NEON_STRINGOPS_FALSE,
   tune_params::FUSE_NOTHING,
   tune_params::SCHED_AUTOPREF_OFF
@@ -1952,7 +1942,6 @@  const struct tune_params arm_v6t2_tune =
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* Thumb.  */
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* ARM.  */
   tune_params::DISPARAGE_FLAGS_NEITHER,
-  tune_params::PREF_NEON_64_FALSE,
   tune_params::PREF_NEON_STRINGOPS_FALSE,
   tune_params::FUSE_NOTHING,
   tune_params::SCHED_AUTOPREF_OFF
@@ -1977,7 +1966,6 @@  const struct tune_params arm_cortex_tune =
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* Thumb.  */
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* ARM.  */
   tune_params::DISPARAGE_FLAGS_NEITHER,
-  tune_params::PREF_NEON_64_FALSE,
   tune_params::PREF_NEON_STRINGOPS_FALSE,
   tune_params::FUSE_NOTHING,
   tune_params::SCHED_AUTOPREF_OFF
@@ -2000,7 +1988,6 @@  const struct tune_params arm_cortex_a8_tune =
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* Thumb.  */
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* ARM.  */
   tune_params::DISPARAGE_FLAGS_NEITHER,
-  tune_params::PREF_NEON_64_FALSE,
   tune_params::PREF_NEON_STRINGOPS_TRUE,
   tune_params::FUSE_NOTHING,
   tune_params::SCHED_AUTOPREF_OFF
@@ -2023,7 +2010,6 @@  const struct tune_params arm_cortex_a7_tune =
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* Thumb.  */
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* ARM.  */
   tune_params::DISPARAGE_FLAGS_NEITHER,
-  tune_params::PREF_NEON_64_FALSE,
   tune_params::PREF_NEON_STRINGOPS_TRUE,
   tune_params::FUSE_NOTHING,
   tune_params::SCHED_AUTOPREF_OFF
@@ -2046,7 +2032,6 @@  const struct tune_params arm_cortex_a15_tune =
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* Thumb.  */
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* ARM.  */
   tune_params::DISPARAGE_FLAGS_ALL,
-  tune_params::PREF_NEON_64_FALSE,
   tune_params::PREF_NEON_STRINGOPS_TRUE,
   tune_params::FUSE_NOTHING,
   tune_params::SCHED_AUTOPREF_FULL
@@ -2069,7 +2054,6 @@  const struct tune_params arm_cortex_a35_tune =
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* Thumb.  */
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* ARM.  */
   tune_params::DISPARAGE_FLAGS_NEITHER,
-  tune_params::PREF_NEON_64_FALSE,
   tune_params::PREF_NEON_STRINGOPS_TRUE,
   FUSE_OPS (tune_params::FUSE_MOVW_MOVT),
   tune_params::SCHED_AUTOPREF_OFF
@@ -2092,7 +2076,6 @@  const struct tune_params arm_cortex_a53_tune =
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* Thumb.  */
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* ARM.  */
   tune_params::DISPARAGE_FLAGS_NEITHER,
-  tune_params::PREF_NEON_64_FALSE,
   tune_params::PREF_NEON_STRINGOPS_TRUE,
   FUSE_OPS (tune_params::FUSE_MOVW_MOVT | tune_params::FUSE_AES_AESMC),
   tune_params::SCHED_AUTOPREF_OFF
@@ -2115,7 +2098,6 @@  const struct tune_params arm_cortex_a57_tune =
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* Thumb.  */
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* ARM.  */
   tune_params::DISPARAGE_FLAGS_ALL,
-  tune_params::PREF_NEON_64_FALSE,
   tune_params::PREF_NEON_STRINGOPS_TRUE,
   FUSE_OPS (tune_params::FUSE_MOVW_MOVT | tune_params::FUSE_AES_AESMC),
   tune_params::SCHED_AUTOPREF_FULL
@@ -2138,7 +2120,6 @@  const struct tune_params arm_exynosm1_tune =
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_FALSE,	/* Thumb.  */
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_FALSE,	/* ARM.  */
   tune_params::DISPARAGE_FLAGS_ALL,
-  tune_params::PREF_NEON_64_FALSE,
   tune_params::PREF_NEON_STRINGOPS_TRUE,
   tune_params::FUSE_NOTHING,
   tune_params::SCHED_AUTOPREF_OFF
@@ -2161,7 +2142,6 @@  const struct tune_params arm_xgene1_tune =
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* Thumb.  */
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* ARM.  */
   tune_params::DISPARAGE_FLAGS_ALL,
-  tune_params::PREF_NEON_64_FALSE,
   tune_params::PREF_NEON_STRINGOPS_FALSE,
   tune_params::FUSE_NOTHING,
   tune_params::SCHED_AUTOPREF_OFF
@@ -2184,7 +2164,6 @@  const struct tune_params arm_cortex_a5_tune =
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_FALSE,		/* Thumb.  */
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_FALSE,		/* ARM.  */
   tune_params::DISPARAGE_FLAGS_NEITHER,
-  tune_params::PREF_NEON_64_FALSE,
   tune_params::PREF_NEON_STRINGOPS_TRUE,
   tune_params::FUSE_NOTHING,
   tune_params::SCHED_AUTOPREF_OFF
@@ -2207,7 +2186,6 @@  const struct tune_params arm_cortex_a9_tune =
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* Thumb.  */
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* ARM.  */
   tune_params::DISPARAGE_FLAGS_NEITHER,
-  tune_params::PREF_NEON_64_FALSE,
   tune_params::PREF_NEON_STRINGOPS_FALSE,
   tune_params::FUSE_NOTHING,
   tune_params::SCHED_AUTOPREF_OFF
@@ -2230,7 +2208,6 @@  const struct tune_params arm_cortex_a12_tune =
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* Thumb.  */
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* ARM.  */
   tune_params::DISPARAGE_FLAGS_ALL,
-  tune_params::PREF_NEON_64_FALSE,
   tune_params::PREF_NEON_STRINGOPS_TRUE,
   FUSE_OPS (tune_params::FUSE_MOVW_MOVT),
   tune_params::SCHED_AUTOPREF_OFF
@@ -2253,7 +2230,6 @@  const struct tune_params arm_cortex_a73_tune =
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* Thumb.  */
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* ARM.  */
   tune_params::DISPARAGE_FLAGS_ALL,
-  tune_params::PREF_NEON_64_FALSE,
   tune_params::PREF_NEON_STRINGOPS_TRUE,
   FUSE_OPS (tune_params::FUSE_AES_AESMC | tune_params::FUSE_MOVW_MOVT),
   tune_params::SCHED_AUTOPREF_FULL
@@ -2283,7 +2259,6 @@  const struct tune_params arm_v7m_tune =
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_FALSE,		/* Thumb.  */
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_FALSE,		/* ARM.  */
   tune_params::DISPARAGE_FLAGS_NEITHER,
-  tune_params::PREF_NEON_64_FALSE,
   tune_params::PREF_NEON_STRINGOPS_FALSE,
   tune_params::FUSE_NOTHING,
   tune_params::SCHED_AUTOPREF_OFF
@@ -2308,7 +2283,6 @@  const struct tune_params arm_cortex_m7_tune =
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* Thumb.  */
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* ARM.  */
   tune_params::DISPARAGE_FLAGS_NEITHER,
-  tune_params::PREF_NEON_64_FALSE,
   tune_params::PREF_NEON_STRINGOPS_FALSE,
   tune_params::FUSE_NOTHING,
   tune_params::SCHED_AUTOPREF_OFF
@@ -2334,7 +2308,6 @@  const struct tune_params arm_v6m_tune =
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_FALSE,		/* Thumb.  */
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_FALSE,		/* ARM.  */
   tune_params::DISPARAGE_FLAGS_NEITHER,
-  tune_params::PREF_NEON_64_FALSE,
   tune_params::PREF_NEON_STRINGOPS_FALSE,
   tune_params::FUSE_NOTHING,
   tune_params::SCHED_AUTOPREF_OFF
@@ -2357,7 +2330,6 @@  const struct tune_params arm_fa726te_tune =
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* Thumb.  */
   tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* ARM.  */
   tune_params::DISPARAGE_FLAGS_NEITHER,
-  tune_params::PREF_NEON_64_FALSE,
   tune_params::PREF_NEON_STRINGOPS_FALSE,
   tune_params::FUSE_NOTHING,
   tune_params::SCHED_AUTOPREF_OFF
@@ -3571,12 +3543,6 @@  arm_option_override (void)
 			   global_options.x_param_values,
 			   global_options_set.x_param_values);
 
-  /* Use Neon to perform 64-bits operations rather than core
-     registers.  */
-  prefer_neon_for_64bits = current_tune->prefer_neon_for_64bits;
-  if (use_neon_for_64bits == 1)
-     prefer_neon_for_64bits = true;
-
   /* Look through ready list and all of queue for instructions
      relevant for L2 auto-prefetcher.  */
   int param_sched_autopref_queue_depth;
@@ -26524,9 +26490,6 @@  arm_print_tune_info (void)
 	       (int) current_tune->logical_op_non_short_circuit_thumb,
 	       (int) current_tune->logical_op_non_short_circuit_arm);
   asm_fprintf (asm_out_file, "\t\t" ASM_COMMENT_START
-	       "prefer_neon_for_64bits:\t%d\n",
-	       (int) current_tune->prefer_neon_for_64bits);
-  asm_fprintf (asm_out_file, "\t\t" ASM_COMMENT_START
 	       "disparage_flag_setting_t16_encodings:\t%d\n",
 	       (int) current_tune->disparage_flag_setting_t16_encodings);
   asm_fprintf (asm_out_file, "\t\t" ASM_COMMENT_START
diff --git a/gcc/config/arm/arm.opt b/gcc/config/arm/arm.opt
index 9067d491b9c5fd9e1552a912e57d127b7770b858..1dc901499adbc276a26dd0e7f936913f489a148c 100644
--- a/gcc/config/arm/arm.opt
+++ b/gcc/config/arm/arm.opt
@@ -277,7 +277,7 @@  Enable unaligned word and halfword accesses to packed data.
 
 mneon-for-64bits
 Target Report RejectNegative Var(use_neon_for_64bits) Init(0)
-Use Neon to perform 64-bits operations rather than core registers.
+(Deprecated)
 
 mslow-flash-data
 Target Report Var(target_slow_flash_data) Init(0)