This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: PATCH: PR target/53647: Set proper cache values when needed


On Wed, Jun 13, 2012 at 4:47 PM, H.J. Lu <hongjiu.lu@intel.com> wrote:

> 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?
>
> 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. ?*/

/* Set by -mtune, overridden by -Os.  */

> ?const struct processor_costs *ix86_cost = &pentium_cost;

We probably don't need to initialize these variables, but won't hurt.

> ?/* 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);
>

Just set these params directly from ix86_tune_costs. We know these are
the same, unless -Os clears them.

OK with these changes.

Thanks,
Uros.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]