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>
* gimple-pretty-print.c: Various whitespace tweaks.
......
......@@ -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
@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
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.
......
......@@ -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",
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,
"max-cselib-memory-locations",
"The maximum memory locations recorded by cselib",
......
......@@ -1718,6 +1718,30 @@ vect_enhance_data_refs_alignment (loop_vec_info loop_vinfo)
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;
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