aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSameera Deshpande <sameera.deshpande@arm.com>2012-07-20 22:37:33 +0530
committerGreta Yorsh <gretay@gcc.gnu.org>2012-07-20 18:07:33 +0100
commitab3dfff71d064f29aee8216dddcc8b463554df8b (patch)
tree4cc344054f0d152250223615c1d1e3d49763254c
parent3ebc22c1e408911d3feef73ba8b5a1e2ba489fbb (diff)
downloadgcc-ab3dfff71d064f29aee8216dddcc8b463554df8b.zip
gcc-ab3dfff71d064f29aee8216dddcc8b463554df8b.tar.gz
gcc-ab3dfff71d064f29aee8216dddcc8b463554df8b.tar.bz2
arm-protos.h (tune_params): Add prefer_ldrd_strd.
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
-rw-r--r--gcc/ChangeLog10
-rw-r--r--gcc/config/arm/arm-protos.h2
-rw-r--r--gcc/config/arm/arm.c30
3 files changed, 32 insertions, 10 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 79a9ec7..ca05268 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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.
diff --git a/gcc/config/arm/arm-protos.h b/gcc/config/arm/arm-protos.h
index eb77b72..c590ef4 100644
--- a/gcc/config/arm/arm-protos.h
+++ b/gcc/config/arm/arm-protos.h
@@ -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;
diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
index ff46dd9..d463caf 100644
--- a/gcc/config/arm/arm.c
+++ b/gcc/config/arm/arm.c
@@ -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. */
};