<div dir="ltr"><div class="gmail_extra">First off, thanks for the *fantastic* testing and investigation. =]</div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Sep 9, 2014 at 3:01 PM, Quentin Colombet <span dir="ltr"><<a href="mailto:qcolombet@apple.com" target="_blank">qcolombet@apple.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word">Hi Chandler,<div><br></div><div>Here is a test case for the biggest offender (oourafft.c).</div><div>To reproduce:</div><div>llc <span style="font-family:Menlo;font-size:11px">-mcpu=core-avx-i </span><span style="font-family:Menlo;font-size:11px">-x86-experimental-vector-shuffle-lowering=true repro.ll</span></div><div>llc <span style="font-family:Menlo;font-size:11px">-mcpu=core-avx-i </span><span style="font-family:Menlo;font-size:11px">-x86-experimental-vector-shuffle-lowering=false repro.ll</span></div><div><span style="font-family:Menlo;font-size:11px"><br></span></div><div>The main problem is that we miss:</div><div><div style="margin:0px;font-size:11px;font-family:Menlo"><span style="white-space:pre-wrap">        </span>vmovsd<span style="white-space:pre-wrap">  </span>(%rdi,%rcx,8), %xmm2</div><div style="margin:0px;font-size:11px;font-family:Menlo"><span style="white-space:pre-wrap">       </span>vmovlhps<span style="white-space:pre-wrap">        </span>%xmm2, %xmm2, %xmm2 ## xmm2 = xmm2[0,0]</div></div><div>=></div><div><div style="margin:0px;font-size:11px;font-family:Menlo"><span style="white-space:pre-wrap"> </span>vmovddup<span style="white-space:pre-wrap">        </span>(%rdi,%rcx,8), %xmm2</div></div><div><br></div><div>I do not know how problematic is that (it seems we catch up on the performance with just the previous transformation),</div></div></blockquote><div><br></div><div>Actually, this is awesome, because this was also the main problem I saw. I already wrote the fix, and just need to fix up test case fixes and submit it. =]</div><div><br></div><div>I think blendps is the other big missing piece as mentioned.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><div> but we also miss:</div><div><div style="margin:0px;font-size:11px;font-family:Menlo"><span style="white-space:pre-wrap">        </span>vsubpd<span style="white-space:pre-wrap">  </span>%xmm1, %xmm0, %xmm2</div><div style="margin:0px;font-size:11px;font-family:Menlo"><span style="white-space:pre-wrap">        </span>vaddpd<span style="white-space:pre-wrap">  </span>%xmm1, %xmm0, %xmm0</div><div style="margin:0px;font-size:11px;font-family:Menlo"><span style="white-space:pre-wrap">        </span>vshufpd<span style="white-space:pre-wrap"> </span>$2, %xmm0, %xmm2, %xmm0 ## xmm0 = xmm2[0],xmm0[1]</div></div><div>=></div><div><div style="margin:0px;font-size:11px;font-family:Menlo"><span style="white-space:pre-wrap">       </span>vaddsubpd<span style="white-space:pre-wrap">       </span>%xmm1, %xmm0, %xmm0</div></div><div><br></div><div>I’ll look into the other regressions.</div></div></blockquote></div></div><div class="gmail_extra"><br></div><div class="gmail_extra">Maybe wait until i can land the duplicate move support and the blendps support? I'd rather see what the results are after that.</div><div class="gmail_extra"><br></div><div class="gmail_extra">There is also some AVX specific stuff that I've left FIXMEs fore that I could probably address to pull it up a bit.</div><div class="gmail_extra"><br></div><div class="gmail_extra">FWIW, I've got the main test-suite reproducing your results for x86, but I don't currently have a nice reproduction for SPEC, so digging into those would help somewhat more.</div></div>