================
@@ -17636,12 +17605,16 @@ one operand is NaN (including sNaN) and another 
operand is a number,
 return the number.  Otherwise returns the lesser of the two
 arguments. -0.0 is considered to be less than +0.0 for this intrinsic.
 
+If the ``nsz`` flag is specified, ``llvm.minimumnum`` with one +0.0 and one
+-0.0 operand may non-deterministically return either operand. Contrary to 
normal
+``nsz`` semantics, if both operands have the same sign, the result must also
+have the same sign.
----------------
jcranmer-intel wrote:

I'm not entirely certain it's contrary to our actual normal `nsz` semantics (at 
least as far as we intend them to be, not as far as it's currently described in 
the document). The intent is that `nsz` isn't going to materialize a -0.0 out 
of absolutely nowhere, but it would take a deep dive of all of the transforms 
we want to enable with `nsz` to understand what the precise conditions are.

I think it's worth calling out the expectations of `nsz` here in any case, as 
we want `nsz` on the min/max algorithms to specifically indicate "we don't care 
about the ordering of -0.0 vis-a-vis +0.0" and we want frontends to be able to 
rely on that behavior, so I'm not going to object to the wording.

https://github.com/llvm/llvm-project/pull/172012
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to