Commit 4f17aa0b by Xinliang David Li Committed by Xinliang David Li

Implement --param=vect-max-peeling-for-alignment=..

From-SVN: r202875
parent 114f3eb9
2013-09-24 Xinliang David Li <davidxl@google.com>
* tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
Check max peel iterations parameter.
* param.def: New parameter.
* doc/invoke.texi: Document New parameter.
2013-09-24 Christophe Lyon <christophe.lyon@linaro.org> 2013-09-24 Christophe Lyon <christophe.lyon@linaro.org>
* gimple-pretty-print.c: Various whitespace tweaks. * gimple-pretty-print.c: Various whitespace tweaks.
......
...@@ -9451,6 +9451,10 @@ The maximum number of run-time checks that can be performed when ...@@ -9451,6 +9451,10 @@ The maximum number of run-time checks that can be performed when
doing loop versioning for alias in the vectorizer. See option doing loop versioning for alias in the vectorizer. See option
@option{-ftree-vect-loop-version} for more information. @option{-ftree-vect-loop-version} for more information.
@item vect-max-peeling-for-alignment
The maximum number of loop peels to enhance access alignment
for vectorizer. Value -1 means 'no limit'.
@item max-iterations-to-track @item max-iterations-to-track
The maximum number of iterations of a loop the brute-force algorithm The maximum number of iterations of a loop the brute-force algorithm
for analysis of the number of iterations of the loop tries to evaluate. for analysis of the number of iterations of the loop tries to evaluate.
......
...@@ -544,6 +544,11 @@ DEFPARAM(PARAM_VECT_MAX_VERSION_FOR_ALIAS_CHECKS, ...@@ -544,6 +544,11 @@ DEFPARAM(PARAM_VECT_MAX_VERSION_FOR_ALIAS_CHECKS,
"Bound on number of runtime checks inserted by the vectorizer's loop versioning for alias check", "Bound on number of runtime checks inserted by the vectorizer's loop versioning for alias check",
10, 0, 0) 10, 0, 0)
DEFPARAM(PARAM_VECT_MAX_PEELING_FOR_ALIGNMENT,
"vect-max-peeling-for-alignment",
"Max number of loop peels to enhancement alignment of data references in a loop",
-1, -1, 64)
DEFPARAM(PARAM_MAX_CSELIB_MEMORY_LOCATIONS, DEFPARAM(PARAM_MAX_CSELIB_MEMORY_LOCATIONS,
"max-cselib-memory-locations", "max-cselib-memory-locations",
"The maximum memory locations recorded by cselib", "The maximum memory locations recorded by cselib",
......
...@@ -1718,6 +1718,30 @@ vect_enhance_data_refs_alignment (loop_vec_info loop_vinfo) ...@@ -1718,6 +1718,30 @@ vect_enhance_data_refs_alignment (loop_vec_info loop_vinfo)
if (do_peeling) if (do_peeling)
{ {
unsigned max_allowed_peel
= PARAM_VALUE (PARAM_VECT_MAX_PEELING_FOR_ALIGNMENT);
if (max_allowed_peel != (unsigned)-1)
{
unsigned max_peel = npeel;
if (max_peel == 0)
{
gimple dr_stmt = DR_STMT (dr0);
stmt_vec_info vinfo = vinfo_for_stmt (dr_stmt);
tree vtype = STMT_VINFO_VECTYPE (vinfo);
max_peel = TYPE_VECTOR_SUBPARTS (vtype) - 1;
}
if (max_peel > max_allowed_peel)
{
do_peeling = false;
if (dump_enabled_p ())
dump_printf_loc (MSG_NOTE, vect_location,
"Disable peeling, max peels reached: %d\n", max_peel);
}
}
}
if (do_peeling)
{
stmt_info_for_cost *si; stmt_info_for_cost *si;
void *data = LOOP_VINFO_TARGET_COST_DATA (loop_vinfo); void *data = LOOP_VINFO_TARGET_COST_DATA (loop_vinfo);
......
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