<div dir="ltr"><div>LGTM</div><div><br></div><div>-  // will sign extend fine.</div><div>+  // will sign extend fine.s</div><div><br></div><div>typo?</div><div><br></div><div><br></div></div><div class="gmail_extra"><br><br>
<div class="gmail_quote">On Tue, May 27, 2014 at 10:31 AM, suyog sarda <span dir="ltr"><<a href="mailto:sardask01@gmail.com" target="_blank">sardask01@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote"><div class="">On Tue, May 27, 2014 at 7:29 PM, Rafael Espíndola <span dir="ltr"><<a href="mailto:rafael.espindola@gmail.com" target="_blank">rafael.espindola@gmail.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Sorry for the delay, I was stuck in the GlobalAlias patches.<br>
<br>
Please be sure to address Jingyue Wu comment too.<br>
<br></blockquote></div><div><br><div>Oops !! Got the point. Thanks Jingyue Wu for pointing out. Now i am doing this by <br>((~RHSKnownZero).countpopulation == 1) which combines ( RHSKnownOne.countpopulation == 1 && RHSKnownZero.countpopulation == BitWidth-1 ). This will ensure that only one bit is 1 and all other bits are 0.<br>

</div><div>Also added a test case related to this e.g (x & ~4) + (x | 2) -> this we are not sure if overflow doesn't occur<br></div>as we are not sure of other bits in (x | 2) -> so 'add' will not convert to 'add nsw'.  <br>

 </div><div class=""><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
+    APInt LHSKnownZero(BitWidth, 0, 1);</blockquote><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
Since the value is 0, there is no difference in passing isSigned=true.<br>
If you think that is better to be explicit, please write it as<br>
<br>
APInt LHSKnownZero(BitWidth, 0, /*isSigned*/ true);<br></blockquote><div><br></div></div><div>Made this change.<br></div><div class=""><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">


<br>
+    // TODO: Handle for Vectors.<br>
<br>
The comment is more for the entire function, no just this particular<br>
case. Please move it to the top.<br>
<div><br></div></blockquote><div><br></div></div><div>Done !<br></div><div class=""><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div>


+  if (RHSKnownOne.countPopulation() == 1)<br>
<br>
</div>Jingyue Wu comment....<br></blockquote><div><br></div></div><div>Implemented.<br> <br></div><div class=""><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">

<br>
Please don't duplicate the code to handle the symmetry. You can<br>
probably use a small static helper function and write<br>
<br>
if (helper(LHSKnowZero, LHSKnowOne, RHSKnownZero, RHSKnownOne))<br>
  return true;<br>
<br>
if (helper(RHSKnownZero, RHSKnownOne, LHSKnowZero, LHSKnowOne))<br>
  return true;<br>
<div><br></div></blockquote><div><br></div></div><div>Added a static helper function to do this.<br></div><div class=""><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">

<div>
+      int LHSZeroPosition = BitWidth - LHSKnownZero.countLeadingZeros() - 1;<br>
<br>
</div>Please add a FIXME about this missing the case where LHS has a zero<br>
before the 1 in the RHS, but also has one after.<br>
<br></blockquote><div><br></div></div><div>Added this FIXME.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
Cheers,<br>
Rafael<br>
</blockquote></div><br></div><div class="gmail_extra">Thanks a lot Rafael, Jingyue Wu for helping out in this implementation. Attaching updated patch.<br></div><div class="gmail_extra">Please see if this looks good.  </div>
<div class="">
<div class="gmail_extra"><br>-- <br>With regards,<br>Suyog Sarda<br>
</div></div></div>
</blockquote></div><br></div>