Commit 7ec70105 by Julian Brown Committed by Julian Brown

arm-cores.def (arm1156t2-s, [...]): Use v6t2 tuning.

	gcc/
	* arm-cores.def (arm1156t2-s, arm1156t2f-s): Use v6t2 tuning.
	(cortex-a5, cortex-a8, cortex-a15, cortex-r4, cortex-r4f, cortex-m4)
	(cortex-m3, cortex-m1, cortex-m0): Use cortex tuning.
	* config/arm/arm-protos.h (tune_params): Add prefer_constant_pool
	field.
	* config/arm/arm.c (arm_slowmul_tune, arm_fastmul_tune)
	(arm_xscale_tune, arm_9e_tune, arm_cortex_a9_tune)
	(arm_fa726te_tune): Add prefer_constant_pool setting.
	(arm_v6t2_tune, arm_cortex_tune): New.
	* config/arm/arm.h (TARGET_USE_MOVT): Make dependent on
	prefer_constant_pool setting.

From-SVN: r174577
parent bf79cedb
2011-06-02 Julian Brown <julian@codesourcery.com>
* arm-cores.def (arm1156t2-s, arm1156t2f-s): Use v6t2 tuning.
(cortex-a5, cortex-a8, cortex-a15, cortex-r4, cortex-r4f, cortex-m4)
(cortex-m3, cortex-m1, cortex-m0): Use cortex tuning.
* config/arm/arm-protos.h (tune_params): Add prefer_constant_pool
field.
* config/arm/arm.c (arm_slowmul_tune, arm_fastmul_tune)
(arm_xscale_tune, arm_9e_tune, arm_cortex_a9_tune)
(arm_fa726te_tune): Add prefer_constant_pool setting.
(arm_v6t2_tune, arm_cortex_tune): New.
* config/arm/arm.h (TARGET_USE_MOVT): Make dependent on
prefer_constant_pool setting.
2011-06-02 Uros Bizjak <ubizjak@gmail.com> 2011-06-02 Uros Bizjak <ubizjak@gmail.com>
* config/i386/i386.c (standard_sse_constant_p) <case 1>: * config/i386/i386.c (standard_sse_constant_p) <case 1>:
......
...@@ -122,16 +122,16 @@ ARM_CORE("arm1176jz-s", arm1176jzs, 6ZK, FL_LDSCHED, 9e) ...@@ -122,16 +122,16 @@ ARM_CORE("arm1176jz-s", arm1176jzs, 6ZK, FL_LDSCHED, 9e)
ARM_CORE("arm1176jzf-s", arm1176jzfs, 6ZK, FL_LDSCHED | FL_VFPV2, 9e) ARM_CORE("arm1176jzf-s", arm1176jzfs, 6ZK, FL_LDSCHED | FL_VFPV2, 9e)
ARM_CORE("mpcorenovfp", mpcorenovfp, 6K, FL_LDSCHED, 9e) ARM_CORE("mpcorenovfp", mpcorenovfp, 6K, FL_LDSCHED, 9e)
ARM_CORE("mpcore", mpcore, 6K, FL_LDSCHED | FL_VFPV2, 9e) ARM_CORE("mpcore", mpcore, 6K, FL_LDSCHED | FL_VFPV2, 9e)
ARM_CORE("arm1156t2-s", arm1156t2s, 6T2, FL_LDSCHED, 9e) ARM_CORE("arm1156t2-s", arm1156t2s, 6T2, FL_LDSCHED, v6t2)
ARM_CORE("arm1156t2f-s", arm1156t2fs, 6T2, FL_LDSCHED | FL_VFPV2, 9e) ARM_CORE("arm1156t2f-s", arm1156t2fs, 6T2, FL_LDSCHED | FL_VFPV2, v6t2)
ARM_CORE("cortex-a5", cortexa5, 7A, FL_LDSCHED, 9e) ARM_CORE("cortex-a5", cortexa5, 7A, FL_LDSCHED, cortex)
ARM_CORE("cortex-a8", cortexa8, 7A, FL_LDSCHED, 9e) ARM_CORE("cortex-a8", cortexa8, 7A, FL_LDSCHED, cortex)
ARM_CORE("cortex-a9", cortexa9, 7A, FL_LDSCHED, cortex_a9) ARM_CORE("cortex-a9", cortexa9, 7A, FL_LDSCHED, cortex_a9)
ARM_CORE("cortex-a15", cortexa15, 7A, FL_LDSCHED | FL_THUMB_DIV | FL_ARM_DIV, 9e) ARM_CORE("cortex-a15", cortexa15, 7A, FL_LDSCHED | FL_THUMB_DIV | FL_ARM_DIV, cortex)
ARM_CORE("cortex-r4", cortexr4, 7R, FL_LDSCHED, 9e) ARM_CORE("cortex-r4", cortexr4, 7R, FL_LDSCHED, cortex)
ARM_CORE("cortex-r4f", cortexr4f, 7R, FL_LDSCHED, 9e) ARM_CORE("cortex-r4f", cortexr4f, 7R, FL_LDSCHED, cortex)
ARM_CORE("cortex-r5", cortexr5, 7R, FL_LDSCHED | FL_ARM_DIV, 9e) ARM_CORE("cortex-r5", cortexr5, 7R, FL_LDSCHED | FL_ARM_DIV, cortex)
ARM_CORE("cortex-m4", cortexm4, 7EM, FL_LDSCHED, 9e) ARM_CORE("cortex-m4", cortexm4, 7EM, FL_LDSCHED, cortex)
ARM_CORE("cortex-m3", cortexm3, 7M, FL_LDSCHED, 9e) ARM_CORE("cortex-m3", cortexm3, 7M, FL_LDSCHED, cortex)
ARM_CORE("cortex-m1", cortexm1, 6M, FL_LDSCHED, 9e) ARM_CORE("cortex-m1", cortexm1, 6M, FL_LDSCHED, cortex)
ARM_CORE("cortex-m0", cortexm0, 6M, FL_LDSCHED, 9e) ARM_CORE("cortex-m0", cortexm0, 6M, FL_LDSCHED, cortex)
...@@ -224,6 +224,7 @@ struct tune_params ...@@ -224,6 +224,7 @@ struct tune_params
int num_prefetch_slots; int num_prefetch_slots;
int l1_cache_size; int l1_cache_size;
int l1_cache_line_size; int l1_cache_line_size;
bool prefer_constant_pool;
}; };
extern const struct tune_params *current_tune; extern const struct tune_params *current_tune;
......
...@@ -856,48 +856,73 @@ const struct tune_params arm_slowmul_tune = ...@@ -856,48 +856,73 @@ const struct tune_params arm_slowmul_tune =
{ {
arm_slowmul_rtx_costs, arm_slowmul_rtx_costs,
NULL, NULL,
3, 3, /* Constant limit. */
ARM_PREFETCH_NOT_BENEFICIAL ARM_PREFETCH_NOT_BENEFICIAL,
true /* Prefer constant pool. */
}; };
const struct tune_params arm_fastmul_tune = const struct tune_params arm_fastmul_tune =
{ {
arm_fastmul_rtx_costs, arm_fastmul_rtx_costs,
NULL, NULL,
1, 1, /* Constant limit. */
ARM_PREFETCH_NOT_BENEFICIAL ARM_PREFETCH_NOT_BENEFICIAL,
true /* Prefer constant pool. */
}; };
const struct tune_params arm_xscale_tune = const struct tune_params arm_xscale_tune =
{ {
arm_xscale_rtx_costs, arm_xscale_rtx_costs,
xscale_sched_adjust_cost, xscale_sched_adjust_cost,
2, 2, /* Constant limit. */
ARM_PREFETCH_NOT_BENEFICIAL ARM_PREFETCH_NOT_BENEFICIAL,
true /* Prefer constant pool. */
}; };
const struct tune_params arm_9e_tune = const struct tune_params arm_9e_tune =
{ {
arm_9e_rtx_costs, arm_9e_rtx_costs,
NULL, NULL,
1, 1, /* Constant limit. */
ARM_PREFETCH_NOT_BENEFICIAL ARM_PREFETCH_NOT_BENEFICIAL,
true /* Prefer constant pool. */
};
const struct tune_params arm_v6t2_tune =
{
arm_9e_rtx_costs,
NULL,
1, /* Constant limit. */
ARM_PREFETCH_NOT_BENEFICIAL,
false /* Prefer constant pool. */
};
/* Generic Cortex tuning. Use more specific tunings if appropriate. */
const struct tune_params arm_cortex_tune =
{
arm_9e_rtx_costs,
NULL,
1, /* Constant limit. */
ARM_PREFETCH_NOT_BENEFICIAL,
false /* Prefer constant pool. */
}; };
const struct tune_params arm_cortex_a9_tune = const struct tune_params arm_cortex_a9_tune =
{ {
arm_9e_rtx_costs, arm_9e_rtx_costs,
cortex_a9_sched_adjust_cost, cortex_a9_sched_adjust_cost,
1, 1, /* Constant limit. */
ARM_PREFETCH_BENEFICIAL(4,32,32) ARM_PREFETCH_BENEFICIAL(4,32,32),
false /* Prefer constant pool. */
}; };
const struct tune_params arm_fa726te_tune = const struct tune_params arm_fa726te_tune =
{ {
arm_9e_rtx_costs, arm_9e_rtx_costs,
fa726te_sched_adjust_cost, fa726te_sched_adjust_cost,
1, 1, /* Constant limit. */
ARM_PREFETCH_NOT_BENEFICIAL ARM_PREFETCH_NOT_BENEFICIAL,
true /* Prefer constant pool. */
}; };
......
...@@ -271,7 +271,8 @@ extern void (*arm_lang_output_object_attributes_hook)(void); ...@@ -271,7 +271,8 @@ extern void (*arm_lang_output_object_attributes_hook)(void);
(TARGET_32BIT && arm_arch6 && (arm_arch_notm || arm_arch7em)) (TARGET_32BIT && arm_arch6 && (arm_arch_notm || arm_arch7em))
/* Should MOVW/MOVT be used in preference to a constant pool. */ /* Should MOVW/MOVT be used in preference to a constant pool. */
#define TARGET_USE_MOVT (arm_arch_thumb2 && !optimize_size) #define TARGET_USE_MOVT \
(arm_arch_thumb2 && !optimize_size && !current_tune->prefer_constant_pool)
/* We could use unified syntax for arm mode, but for now we just use it /* We could use unified syntax for arm mode, but for now we just use it
for Thumb-2. */ for Thumb-2. */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment