<div dir="ltr">On 25 October 2013 11:06, Richard Sandiford <span dir="ltr"><<a href="mailto:rsandifo@linux.vnet.ibm.com" target="_blank">rsandifo@linux.vnet.ibm.com</a>></span> wrote:<br><div class="gmail_extra"><div class="gmail_quote">
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5"><span style="color:rgb(34,34,34)">I wanted the same thing for SystemZ, which doesn't have vectors,</span><br>
</div></div>
in order to improve the llvmpipe code.<br></blockquote><div><br></div><div>Hi Richard,</div><div><br></div><div>This is a nice patch. I was wondering how hard it'd be to do that, and it seems that you're catching lots of corner cases.</div>
<div><br></div><div>My interest is also due to converting odd vectors into scalars, but to convert them again to CPU vectors, say from OpenCL to NEON code.</div><div><br></div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
It would also need some TargetTransformInfo hooks to decide which<br>
vectors should be decomposed.<br></blockquote><div></div></div><br></div><div class="gmail_extra">If I got it right, this may not be necessary, or it may even be harmful. </div><div class="gmail_extra"><br></div><div class="gmail_extra">
Say you decide that <4 x i32> vectors should be left alone, so that your pass only scalarise the others. But when the vectorizer passes again (to try and use CPU vector instructions), it might not match the scalarised version with the vector, and you end up with data movement between scalar and vector pipelines, which normally slows down CPUs (at least in ARM's case). Also, problematic cases like <5 x i32> could be better split into 3+2 pairs, rather than 4+1.</div>
<div class="gmail_extra"><br></div><div class="gmail_extra">If you scalarise everything, than the vectorizers will have a better chance of spotting patterns and vectorising the whole lot, then based on target transform info.</div>
<div class="gmail_extra"><br></div><div class="gmail_extra">Is that what you had in mind?</div><div class="gmail_extra"><br></div><div class="gmail_extra">cheers,</div><div class="gmail_extra">--renato</div></div>