[PATCH PR79347]Maintain profile counter information in vect_do_peeling

Pat Haugen pthaugen@linux.vnet.ibm.com
Tue Feb 14 21:41:00 GMT 2017


On 02/14/2017 07:57 AM, Jan Hubicka wrote:
> So it seems that the frequency of the loop itself is unrealistically scaled down.
> Before vetorizing the frequency is 8500 and predicted number of iterations is
> 6.6.  Now the loop is intereed via BB 8 with frequency 1148, so the loop, by
> exit probability exits with 15% probability and thus still has 6.6 iterations,
> but by BB frequencies its body executes fewer times than the preheader.
> 
> Now this is a fragile area vectirizing loop should scale number of iterations down
> 8 times. However guessed CFG profiles are always very "flat". Of course
> if loop iterated 6.6 times at the average vectorizing would not make any sense.
> Making guessed profiles less flat is unrealistic, because average loop iterates few times,
> but of course while vectorizing we make additional guess that the vectorizable loops
> matters and the guessed profile is probably unrealistic.

We have the same problem in the RTL loop unroller in that we'll scale the unrolled loop by the unroll factor (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68212#c3), which can result in a loop with lower frequency than surrounding code. Problem is compounded if we vectorize the loop and then unroll it. Whatever approach is decided for the case when we have guessed profile should be applied to both vectorizer and RTL loop unroller.

-Pat



More information about the Gcc-patches mailing list