<html><head><meta http-equiv="Content-Type" content="text/html charset=windows-1252"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><br><div><div>On 23 Sep 2014, at 12:28, Chandler Carruth <<a href="mailto:chandlerc@google.com">chandlerc@google.com</a>> wrote:</div><br><blockquote type="cite"><div dir="ltr"><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; position: static; z-index: auto;">I've found another regression - byte shifts on pre-ssse3 targets are failing to make use of the vpslldq/vpsrldq instructions - I've attached some basic test cases.<br>
<br>
Could vpslldq/vpsrldq be used on ssse3+ targets for the cases where zeros are being shifted in? It avoids the need for a zero register (although they aren't as good for memory folding).</blockquote></div><br>I'm curious, how important is this? This lowering has always seemed deeply magical and unlikely to be necessary in practice. palignr at least allows blending.</div></div>
</blockquote></div><br><div>Hi,</div><div><br></div><div>The general pre-ssse3 byte shift is very useful for the cases where we can’t guarantee anything other than the cpu being x86_64 (or SSE2 only) - without palignr the code can be pretty nasty if the shift is not a multiple of 4.</div><div><br></div><div>I agree that the implicit byte shift with zero vector is much more of an edge case - we do have situations where its been useful to help avoid the need for a zero register but that is it. At the moment we’ve gone back to using the _mm_slli_si128 intrinsic which still wraps to _builtin_ia32_pslldqi128 - but have had some success in replacing this with a __builtin_shufflevector call prior to testing with the new lowering.</div><div><br></div><div>If you don’t want to spend time on this, I’d be happy to create a candidate patch for review? I’ve been unclear if you were taking patches for your shuffle work prior to it becoming the default.</div><div><br></div><div>Cheers, SimonP.</div></body></html>