<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Tue, Nov 26, 2013 at 1:26 AM, Chandler Carruth <span dir="ltr"><<a href="mailto:chandlerc@google.com" target="_blank">chandlerc@google.com</a>></span> wrote:<br>
<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"><div dir="ltr"><div class="gmail_extra"><div><div class="h5">
<br><div class="gmail_quote">On Mon, Nov 25, 2013 at 10:22 PM, Sean Silva <span dir="ltr"><<a href="mailto:silvas@purdue.edu" target="_blank">silvas@purdue.edu</a>></span> wrote:<br>
<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"><div>On Mon, Nov 25, 2013 at 4:48 PM, Jim Grosbach <span dir="ltr"><<a href="mailto:grosbach@apple.com" target="_blank">grosbach@apple.com</a>></span> wrote:<br>


<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"><div style="word-wrap:break-word"><br><div><div>A few select examples I’m seeing are: 256.bzip2 improves by 7%. 401.bzip2 improves by 4.5%. 300.twolf improves by 3%. 186.crafty improves by 4%. The details vary, but this is true for both Ivy Bridge and Haswell in particular.</div>


<div><br></div></div></div></blockquote><div><br></div></div><div>Hmm... on second thought, do these programs use lots of i16's? Agner reports that on Ivy Bridge and Haswell there is no partial register access cost for the i8 low subregs. He doesn't seem to mention anything about 16-bit, so I assume that the partial register stall is still there for the i16 subregs??? I don't have an Ivy Bridge or Haswell to test on unfortunately :(</div>

</blockquote></div><br></div></div>The primary performance problem Jim and I both looked at here were with i8 operands.</div></div></blockquote><div><br></div><div>Strange. Do you have an example?</div><div> </div><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">
<div dir="ltr"><div class="gmail_extra"><br></div><div class="gmail_extra">However, regardless of partial register stalls, the existence of false dependencies seems just as problematic...</div></div></blockquote><div><br>
</div><div>I don't think we even emit code that tries to independently use subregs, so I'm not seeing where a subreg false dependency would arise. Using the subregs in a way that would result in a false dependency (e.g. `mov ah, [rdx]; add al, [rdi]; mov [rsi], ax`) seems like a thoroughly out-of-date practice. Maybe if we are in a loop with a bazillion i8 live variables such that the "high" i8 subregs are needed to avoid spilling, but that doesn't seem likely to happen in practice.</div>
<div><br></div><div>-- Sean Silva </div></div><br></div></div>