<div dir="ltr">Looks good.<br></div><div class="gmail_extra"><br><br><div class="gmail_quote">On 9 February 2013 19:02, Arnold Schwaighofer <span dir="ltr"><<a href="mailto:aschwaighofer@apple.com" target="_blank">aschwaighofer@apple.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Lower reverse shuffles to a vrev64 and a vext instruction instead of the default<br>
legalization of storing and loading to the stack. This is important because we<br>
generate reverse shuffles in the loop vectorizer when we reverse store to an<br>
array.<br>
<br>
  uint8_t Arr[N];<br>
  for (i = 0; i < N; ++i)<br>
    Arr[N - i - 1] = …<br>
<br>
For v8i16 we now generate something like:<br>
<br>
  vrev64.16       q9, q9<br>
  vext.16 q9, q9, q9, #4<br>
<br>
instead of:<br>
<br>
  orr r1, r0, #14<br>
  vst1.16 {d16[0]}, [r1, :16]<br>
  orr r1, r0, #12<br>
  vst1.16 {d16[1]}, [r1, :16]<br>
  orr r1, r0, #10<br>
  vst1.16 {d16[2]}, [r1, :16]<br>
  orr r1, r0, #8<br>
  vst1.16 {d16[3]}, [r1, :16]<br>
  orr r1, r0, #6<br>
  vst1.16 {d17[0]}, [r1, :16]<br>
  orr r1, r0, #4<br>
  vst1.16 {d17[1]}, [r1, :16]<br>
  orr r1, r0, #2<br>
  vst1.16 {d17[2]}, [r1, :16]<br>
  vst1.16 {d17[3]}, [r0, :16]<br>
  vld1.64 {d16, d17}, [r0, :128]<br>
<br>
<br>
For v16i8 we now generate something like:<br>
<br>
  vrev64.8        q8, q8<br>
  vext.8  q8, q8, q8, #8<br>
<br>
<br><br>
<br>
<br></blockquote></div><br></div>