<div dir="ltr">Matt,<div class="gmail_extra"><div class="gmail_quote"><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><br>Could we handle this the same way the cttz intrinsic is handled and add an i1 parameter for the < -0.0 behavior of sqrt? The given reason for having this be undefined is to allow it to be used for a wider variety of architectures’ misbehaving sqrt instructions, but on R600 for example the R600 the sqrt instructions always do “the right thing”</div>
</div></blockquote><div> </div><div>Are you saying R600 sqrt can return NaN for negative number? If yes, I think both X86 and AArch64 can return NaN for sqrt with negative number.</div><div><br></div><div>I think llvm.sqrt is different from llvm.cttz. llvm.cttz needs a i1 argument, because some architectures don't have a real zero representation, while for sqrt I can see all architectures are having NaN returned for negative number, but the problem is -ffast-math semantic is to not having NaN involved in program.</div>
<div><br></div><div>I think I'm convinced that we should return undef for sqrt with negative number, to make static behavior in LLVM IR clearly highlighted.</div><div><br></div><div>Thanks,</div><div>-Jiangning</div><div>
<br></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"><span class="HOEnZb"><font color="#888888"><div></div><div><br></div><div>-Matt</div>
</font></span></div><br>_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
<br></blockquote></div><br></div></div>