[llvm-dev] [FPEnv] FNEG instruction

James Y Knight via llvm-dev llvm-dev at lists.llvm.org
Thu Aug 30 06:28:02 PDT 2018


On Thu, Aug 30, 2018, 8:03 AM Cameron McInally via llvm-dev <
llvm-dev at lists.llvm.org> wrote:

> On Wed, Aug 29, 2018 at 3:13 PM, Cameron McInally <
> cameron.mcinally at nyu.edu> wrote:
>
>> On Wed, Aug 29, 2018 at 1:51 PM, Stephen Canon <scanon at apple.com> wrote:
>>
>>> On Aug 29, 2018, at 1:22 PM, Cameron McInally via llvm-dev <
>>> llvm-dev at lists.llvm.org> wrote:
>>>
>>>
>>> FSUB(-0.0,  NaN) = NaN
>>> FSUB(-0.0, -NaN) = NaN
>>>
>>>
>>> Some specific architecture may define this, or APFloat might, but IEEE
>>> 754 does not interpret the sign of NaN except in four operations (copy,
>>> abs, negate, copysign), so it doesn’t say anything about these.
>>>
>>
>> Good point. I suppose one could argue that the behavior is undefined.
>>
>
> Apologies, I was wrong about this one. Just tested the FSUB hardware
> instruction on all the targets I care about and they all respect the sign
> on NaNs. I'm not sure how this got into my head...
>

No, you weren't wrong.

The sign of the NaN result is only defined, per the standard, for those 4
operations, no others. Certain hardware or certain ISAs may make more
guarantees, of course.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20180830/4f14d8f4/attachment.html>


More information about the llvm-dev mailing list