<div dir="ltr">On 7 November 2013 17:18, Frank Winter <span dir="ltr"><<a href="mailto:fwinter@jlab.org" target="_blank">fwinter@jlab.org</a>></span> wrote:<br><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
LV: We don't allow storing to uniform addresses<br></blockquote><div></div></div><br></div><div class="gmail_extra">This is triggering because it didn't recognize as a reduction variable during the canVectorizeInstrs() but did recognize that sum[q] is loop invariant in canVectorizeMemory().</div>
<div class="gmail_extra"><br></div><div class="gmail_extra">I'm guessing the nested loop was unrolled because of the low trip-count, and removed, so it ended up as:</div><div class="gmail_extra"><br></div><div class="gmail_extra">
<div class="gmail_extra">float foo( int start , int end , float * A  )</div><div class="gmail_extra">{</div><div class="gmail_extra">  float sum[4] = {0.,0.,0.,0.};</div><div class="gmail_extra">  for (int i = start ; i < end ; ++i ) {</div>
<div class="gmail_extra">    sum[0] += A[i*4+0];<br></div><div class="gmail_extra">    sum[1] += A[i*4+1];<br></div><div class="gmail_extra">    sum[2] += A[i*4+2];<br></div><div class="gmail_extra">    sum[3] += A[i*4+3];<br>
</div><div class="gmail_extra">  }</div><div class="gmail_extra">  return sum[0]+sum[1]+sum[2]+sum[3];</div><div class="gmail_extra">}</div><div><br></div><div>but, for some reason, sum[q] wasn't recognized as a reduction variable, maybe because it was an array of reduction variables?</div>
<div><br></div><div>Having the IR would certainly help...</div><div><br></div><div>cheers,</div><div>--renato</div></div></div>