Define PREFETCH_MOD_TO_UNROLL_FACTOR_RATIO heuristic.
2010-05-17 Changpeng Fang <changpeng.fang@amd.com> * tree-ssa-loop-prefetch.c (PREFETCH_MOD_TO_UNROLL_FACTOR_RATIO): New. (schedule_prefetches): Do not generate a prefetch if the unroll factor is far from what is required by the prefetch. From-SVN: r159514
This commit is contained in:
parent
339f49ec21
commit
8532678c05
|
@ -1,3 +1,9 @@
|
|||
2010-05-17 Changpeng Fang <changpeng.fang@amd.com>
|
||||
|
||||
* tree-ssa-loop-prefetch.c (PREFETCH_MOD_TO_UNROLL_FACTOR_RATIO): New.
|
||||
(schedule_prefetches): Do not generate a prefetch if the unroll factor
|
||||
is far from what is required by the prefetch.
|
||||
|
||||
2010-05-17 Jan Hubicka <jh@suse.cz>
|
||||
|
||||
* ipa-cp.c (ipcp_update_callgraph): Use ipa_is_param_used.
|
||||
|
|
|
@ -225,6 +225,17 @@ struct mem_ref_group
|
|||
|
||||
#define PREFETCH_ALL (~(unsigned HOST_WIDE_INT) 0)
|
||||
|
||||
/* Do not generate a prefetch if the unroll factor is significantly less
|
||||
than what is required by the prefetch. This is to avoid redundant
|
||||
prefetches. For example, if prefetch_mod is 16 and unroll_factor is
|
||||
1, this means prefetching requires unrolling the loop 16 times, but
|
||||
the loop is not going to be unrolled. In this case (ratio = 16),
|
||||
prefetching is not likely to be beneficial. */
|
||||
|
||||
#ifndef PREFETCH_MOD_TO_UNROLL_FACTOR_RATIO
|
||||
#define PREFETCH_MOD_TO_UNROLL_FACTOR_RATIO 8
|
||||
#endif
|
||||
|
||||
/* The memory reference. */
|
||||
|
||||
struct mem_ref
|
||||
|
@ -921,6 +932,12 @@ schedule_prefetches (struct mem_ref_group *groups, unsigned unroll_factor,
|
|||
if (!should_issue_prefetch_p (ref))
|
||||
continue;
|
||||
|
||||
/* The loop is far from being sufficiently unrolled for this
|
||||
prefetch. Do not generate prefetch to avoid many redudant
|
||||
prefetches. */
|
||||
if (ref->prefetch_mod / unroll_factor > PREFETCH_MOD_TO_UNROLL_FACTOR_RATIO)
|
||||
continue;
|
||||
|
||||
/* If we need to prefetch the reference each PREFETCH_MOD iterations,
|
||||
and we unroll the loop UNROLL_FACTOR times, we need to insert
|
||||
ceil (UNROLL_FACTOR / PREFETCH_MOD) instructions in each
|
||||
|
|
Loading…
Reference in New Issue