http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59967

--- Comment #3 from Christoph Breitkopf <chbreitkopf at gmail dot com> ---
It's this conditional in the inner loop. The expression becomes constant only
if both loops are unrolled (i and j are the loop counters):

   if (1<<j & i)
    ck0[j] += s;

This condition is probably not perfectly predictable even by modern branch
predictors, so I assume this is the main reason for the regression.

Chris

Reply via email to