arm-protos.h (tune_params): Add prefer_ldrd_strd.
authorSameera Deshpande <sameera.deshpande@arm.com>
Fri, 20 Jul 2012 17:07:33 +0000 (22:37 +0530)
committerGreta Yorsh <gretay@gcc.gnu.org>
Fri, 20 Jul 2012 17:07:33 +0000 (18:07 +0100)
gcc/

2012-07-20  Sameera Deshpande  <sameera.deshpande@arm.com>
            Greta Yorsh  <Greta.Yorsh@arm.com>

        * config/arm/arm-protos.h (tune_params): Add prefer_ldrd_strd.
        * config/arm/arm.c (arm_slowmul_tune): Initialize it.
        (arm_fastmul_tune, arm_strongarm_tune): Likewise.
        (arm_xscale_tune, arm_9e_tune, arm_v6t2_tune): Likewise.
        (arm_cortex_tune, arm_cortex_a5_tune, arm_cortex_a9_tune): Likewise.
        (arm_fa726te_tune): Likewise.

Co-Authored-By: Greta Yorsh <greta.yorsh@arm.com>
From-SVN: r189722

gcc/ChangeLog
gcc/config/arm/arm-protos.h
gcc/config/arm/arm.c

index 79a9ec77d3d4ea4ccc903f835f3bbbe6c7f66576..ca0526819d7c0dc827be223c244dd9f297571678 100644 (file)
@@ -1,3 +1,13 @@
+2012-07-20  Sameera Deshpande  <sameera.deshpande@arm.com>
+            Greta Yorsh  <Greta.Yorsh@arm.com>
+
+        * config/arm/arm-protos.h (tune_params): Add prefer_ldrd_strd.
+        * config/arm/arm.c (arm_slowmul_tune): Initialize it.
+        (arm_fastmul_tune, arm_strongarm_tune): Likewise.
+        (arm_xscale_tune, arm_9e_tune, arm_v6t2_tune): Likewise.
+        (arm_cortex_tune, arm_cortex_a5_tune, arm_cortex_a9_tune): Likewise.
+        (arm_fa726te_tune): Likewise.
+
 2012-07-20  Richard Guenther  <rguenther@suse.de>
 
        * tree-dfa.c (collect_dfa_stats): Simplify.
index eb77b72325d06696b00e6a55a29830fa2fe7d2ae..c590ef420eb21074ffcc525ec07f2482fedf41d6 100644 (file)
@@ -238,6 +238,8 @@ struct tune_params
   int l1_cache_line_size;
   bool prefer_constant_pool;
   int (*branch_cost) (bool, bool);
+  /* Prefer STRD/LDRD instructions over PUSH/POP/LDM/STM.  */
+  bool prefer_ldrd_strd;
 };
 
 extern const struct tune_params *current_tune;
index ff46dd9544a0e2f4d816747dc4ff9fcdf52affed..d463caf5cbc562046e8a0465fccd515f0bc0dfc9 100644 (file)
@@ -875,7 +875,8 @@ const struct tune_params arm_slowmul_tune =
   5,                                           /* Max cond insns.  */
   ARM_PREFETCH_NOT_BENEFICIAL,
   true,                                                /* Prefer constant pool.  */
-  arm_default_branch_cost
+  arm_default_branch_cost,
+  false                                         /* Prefer LDRD/STRD.  */
 };
 
 const struct tune_params arm_fastmul_tune =
@@ -886,7 +887,8 @@ const struct tune_params arm_fastmul_tune =
   5,                                           /* Max cond insns.  */
   ARM_PREFETCH_NOT_BENEFICIAL,
   true,                                                /* Prefer constant pool.  */
-  arm_default_branch_cost
+  arm_default_branch_cost,
+  false                                         /* Prefer LDRD/STRD.  */
 };
 
 /* StrongARM has early execution of branches, so a sequence that is worth
@@ -900,7 +902,8 @@ const struct tune_params arm_strongarm_tune =
   3,                                           /* Max cond insns.  */
   ARM_PREFETCH_NOT_BENEFICIAL,
   true,                                                /* Prefer constant pool.  */
-  arm_default_branch_cost
+  arm_default_branch_cost,
+  false                                         /* Prefer LDRD/STRD.  */
 };
 
 const struct tune_params arm_xscale_tune =
@@ -911,7 +914,8 @@ const struct tune_params arm_xscale_tune =
   3,                                           /* Max cond insns.  */
   ARM_PREFETCH_NOT_BENEFICIAL,
   true,                                                /* Prefer constant pool.  */
-  arm_default_branch_cost
+  arm_default_branch_cost,
+  false                                         /* Prefer LDRD/STRD.  */
 };
 
 const struct tune_params arm_9e_tune =
@@ -922,7 +926,8 @@ const struct tune_params arm_9e_tune =
   5,                                           /* Max cond insns.  */
   ARM_PREFETCH_NOT_BENEFICIAL,
   true,                                                /* Prefer constant pool.  */
-  arm_default_branch_cost
+  arm_default_branch_cost,
+  false                                         /* Prefer LDRD/STRD.  */
 };
 
 const struct tune_params arm_v6t2_tune =
@@ -933,7 +938,8 @@ const struct tune_params arm_v6t2_tune =
   5,                                           /* Max cond insns.  */
   ARM_PREFETCH_NOT_BENEFICIAL,
   false,                                       /* Prefer constant pool.  */
-  arm_default_branch_cost
+  arm_default_branch_cost,
+  false                                         /* Prefer LDRD/STRD.  */
 };
 
 /* Generic Cortex tuning.  Use more specific tunings if appropriate.  */
@@ -945,7 +951,8 @@ const struct tune_params arm_cortex_tune =
   5,                                           /* Max cond insns.  */
   ARM_PREFETCH_NOT_BENEFICIAL,
   false,                                       /* Prefer constant pool.  */
-  arm_default_branch_cost
+  arm_default_branch_cost,
+  false                                         /* Prefer LDRD/STRD.  */
 };
 
 /* Branches can be dual-issued on Cortex-A5, so conditional execution is
@@ -959,7 +966,8 @@ const struct tune_params arm_cortex_a5_tune =
   1,                                           /* Max cond insns.  */
   ARM_PREFETCH_NOT_BENEFICIAL,
   false,                                       /* Prefer constant pool.  */
-  arm_cortex_a5_branch_cost
+  arm_cortex_a5_branch_cost,
+  false                                         /* Prefer LDRD/STRD.  */
 };
 
 const struct tune_params arm_cortex_a9_tune =
@@ -970,7 +978,8 @@ const struct tune_params arm_cortex_a9_tune =
   5,                                           /* Max cond insns.  */
   ARM_PREFETCH_BENEFICIAL(4,32,32),
   false,                                       /* Prefer constant pool.  */
-  arm_default_branch_cost
+  arm_default_branch_cost,
+  false                                         /* Prefer LDRD/STRD.  */
 };
 
 const struct tune_params arm_fa726te_tune =
@@ -981,7 +990,8 @@ const struct tune_params arm_fa726te_tune =
   5,                                           /* Max cond insns.  */
   ARM_PREFETCH_NOT_BENEFICIAL,
   true,                                                /* Prefer constant pool.  */
-  arm_default_branch_cost
+  arm_default_branch_cost,
+  false                                         /* Prefer LDRD/STRD.  */
 };