This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
PATCH: PR target/53647: Set proper cache values when needed
- From: "H.J. Lu" <hongjiu dot lu at intel dot com>
- To: gcc-patches at gcc dot gnu dot org
- Cc: Uros Bizjak <ubizjak at gmail dot com>
- Date: Wed, 13 Jun 2012 07:47:29 -0700
- Subject: PATCH: PR target/53647: Set proper cache values when needed
- Reply-to: "H.J. Lu" <hjl dot tools at gmail dot com>
Hi,
On i386, ix86_size_cost will be used for -Os, which has zero for
simultaneous_prefetches, prefetch_block, l1_cache_size and l2_cache_size.
This patch adds ix86_tune_cost and uses it for simultaneous_prefetches,
prefetch_block, l1_cache_size and l2_cache_size if ones from ix86_cost
are zero. OK to install?
Thanks.
H.J.
---
2012-06-13 H.J. Lu <hongjiu.lu@intel.com>
PR target/53647
* config/i386/i386.c (ix86_tune_cost): New variable.
(ix86_option_override_internal): Set ix86_tune_cost. Use
ix86_tune_cost for simultaneous_prefetches, prefetch_block,
l1_cache_size and l2_cache_size if ones from ix86_cost are
zero.
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index 13755f4..2e64d55 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -1874,6 +1874,10 @@ struct processor_costs generic32_cost = {
1, /* cond_not_taken_branch_cost. */
};
+/* Set by -mtune. */
+const struct processor_costs *ix86_tune_cost = &pentium_cost;
+
+/* Set by -mtune or -Os. */
const struct processor_costs *ix86_cost = &pentium_cost;
/* Processor feature/optimization bitmasks. */
@@ -3546,6 +3550,7 @@ ix86_option_override_internal (bool main_args_p)
flag_pcc_struct_return = DEFAULT_PCC_STRUCT_RETURN;
}
+ ix86_tune_cost = processor_target_table[ix86_tune].cost;
if (optimize_size)
ix86_cost = &ix86_size_cost;
else
@@ -3794,16 +3799,27 @@ ix86_option_override_internal (bool main_args_p)
flag_schedule_insns_after_reload = flag_schedule_insns = 0;
maybe_set_param_value (PARAM_SIMULTANEOUS_PREFETCHES,
- ix86_cost->simultaneous_prefetches,
+ ix86_cost->simultaneous_prefetches
+ ? ix86_cost->simultaneous_prefetches
+ : ix86_tune_cost->simultaneous_prefetches,
global_options.x_param_values,
global_options_set.x_param_values);
- maybe_set_param_value (PARAM_L1_CACHE_LINE_SIZE, ix86_cost->prefetch_block,
+ maybe_set_param_value (PARAM_L1_CACHE_LINE_SIZE,
+ ix86_cost->prefetch_block
+ ? ix86_cost->prefetch_block
+ : ix86_tune_cost->prefetch_block,
global_options.x_param_values,
global_options_set.x_param_values);
- maybe_set_param_value (PARAM_L1_CACHE_SIZE, ix86_cost->l1_cache_size,
+ maybe_set_param_value (PARAM_L1_CACHE_SIZE,
+ ix86_cost->l1_cache_size
+ ? ix86_cost->l1_cache_size
+ : ix86_tune_cost->l1_cache_size,
global_options.x_param_values,
global_options_set.x_param_values);
- maybe_set_param_value (PARAM_L2_CACHE_SIZE, ix86_cost->l2_cache_size,
+ maybe_set_param_value (PARAM_L2_CACHE_SIZE,
+ ix86_cost->l2_cache_size
+ ? ix86_cost->l2_cache_size
+ : ix86_cost->l2_cache_size,
global_options.x_param_values,
global_options_set.x_param_values);