<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Fri, Oct 14, 2016 at 7:38 AM, Renato Golin <span dir="ltr"><<a href="mailto:renato.golin@linaro.org" target="_blank">renato.golin@linaro.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On 10 October 2016 at 22:16, Alina Sbirlea <<a href="mailto:alina.sbirlea@gmail.com">alina.sbirlea@gmail.com</a>> wrote:<br>
> IMO, it makes sense to have Halide generate this instead:<br>
> %114 = shufflevector <16 x i32> %112, <16 x i32> %113, <16 x i32> <i32 0,<br>
> i32 8, i32 16, i32 24, i32 1, i32 9, i32 17, i32 25, i32 2, i32 10, i32 18,<br>
> i32 26, i32 3, i32 11, i32 19, i32 27><br>
> store <16 x i32> %114, <16 x i32>* %sunkaddr262<br>
>  %115 = shufflevector <16 x i32> %112, <16 x i32> %113, <16 x i32> <i32 4,<br>
> i32 12, i32 20, i32 28, i32 5, i32 13, i32 21, i32 29, i32 6, i32 14, i32<br>
> 22, i32 30, i32 7, i32 15, i32 23, i32 31><br>
> store <16 x i32> %115, <16 x i32>* %scevgep241<br>
> With the changes from the patch, this translates to the code above, and it<br>
> is arch independent.<br>
<br>
</span>Right, this makes sense.<br>
<br>
This should generate 2 VST4/ST4, which together will be contiguous,<br>
but not individually.<br>
<span class=""><br>
<br>
> Yes, I did that with some of the codes generated by Halide, it's what led to<br>
> patch D23646 to extend the patterns. The new code being generated is the<br>
> "expected" one.<br>
<br>
</span>I have added some comments on the review, but I think overall, it<br>
makes sense and it's a much simpler patch than I was expecting to find<br>
working all the way to the end. :)<br></blockquote><div><br></div><div>Thanks a lot for looking at the patch, much appreciated! :)</div><div>Updated and followed up on it.</div><div><br></div><div>Alina</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<span class=""><br>
<br>
> Also, benchmarking some of their apps showed that llvm's pass (after the<br>
> patch) does the job as well as the custom code generation they were using<br>
> before. (Note, that Halide's code generation was written before the<br>
> interleaved access pass was added, so it made sense at the time.)<br>
<br>
</span>Nice!<br>
<br>
cheers,<br>
--renato<br>
</blockquote></div><br></div></div>