On Sun, Aug 2, 2015 at 4:13 PM, Ajit Kumar Agarwal <ajit.kumar.agar...@xilinx.com> wrote: > All: > > The definition of the following macro that determine the statement cost that > adds to vectorization cost. > > #define TARGET_VECTORIZE_ADD_STMT_COST. > > In the implementation of the above macro the following is done for many > vectorization supported architectures like i386, ARM. > > if (where == vect_body && stmt_info && stmt_in_inner_loop_p (stmt_info)) > count *= 50; /* FIXME. */ > > I have the following questions. > > 1. Why the multiplication factor of 50 is choosen?
It's a wild guess. See tree-vect-loop.c:vect_get_single_scalar_iteration_cost. > 2. The comment mentions that the inner loop relative to the loop being > vectorized is added more weight. If more weight is added to > the inner loop for the loop being vectorized, the chances of vectorizing the > inner loop decreases. Why the inner loop cost is increased > with relative to the loop being vectorized? In fact adding more weight to the inner loop increases the chance of vectorizing it (if vectorizing the inner loop is profitable). Both scalar and vector cost get biased by a factor of 50 (we assume 50 iterations of the inner loop for one iteration of the outer loop), so a non-profitable vectorization in the outer loop can be offsetted by profitable inner loop vectorization. Yes, '50' can be improved if we actually know the iteration count of the inner loop or if we have profile-feedback. Richard. > Thanks & Regards > Ajit