@@ -16420,7 +16420,7 @@ versions of the intrinsics respect the exception behavior.
16420
16420
- qNaN, invalid exception
16421
16421
16422
16422
* - ``+0.0 vs -0.0``
16423
- - either one
16423
+ - +0.0(max)/-0.0(min)
16424
16424
- +0.0(max)/-0.0(min)
16425
16425
- +0.0(max)/-0.0(min)
16426
16426
@@ -16464,8 +16464,14 @@ type.
16464
16464
16465
16465
Semantics:
16466
16466
""""""""""
16467
- Follows the IEEE754 2008 semantics for minNum.
16468
- This also matches the current (C23) behavior of libm's fmin.
16467
+ Follows the IEEE754 2008 semantics for minNum with +0.0>-0.0.
16468
+ This is more strict than current (C23) behavior of libm's fmin.
16469
+ Some applications like Clang, can call '``llvm.minnum.*``' with '``nsz``' attribute
16470
+ to archive the same behaivor of libm's fmin.
16471
+
16472
+ For some architecturs, such as ARMv8, LoongArch, MIPSr6, PowerPC/VSX, they have the
16473
+ strict same instructions; thus it is quite simple for these architectures.
16474
+ For other architectures, the custom or expand methods may provide '``nsz``' flavor.
16469
16475
16470
16476
Historically, libc returns NUM for NUM vs (sNaN or qNaN), and may return
16471
16477
sNaN for qNaN vs sNaN. Withe recent libc versions, libc follows IEEE754-2008:
@@ -16511,12 +16517,14 @@ type.
16511
16517
16512
16518
Semantics:
16513
16519
""""""""""
16514
- Follows the IEEE754 2008 semantics for maxNum.
16515
- This also matches the current (C23) behavior of libm's fmax.
16520
+ Follows the IEEE754 2008 semantics for maxNum with +0.0>-0.0.
16521
+ This is more strict than current (C23) behavior of libm's fmax.
16522
+ Some applications like Clang, can call '``llvm.maxnum.*``' with '``nsz``' attribute
16523
+ to archive the same behaivor of libm's fmax.
16516
16524
16517
- Historically, libc returns NUM for NUM vs (sNaN or qNaN), and may return
16518
- sNaN for qNaN vs sNaN. Withe recent libc versions, libc follows IEEE754-2008:
16519
- NUM vs sNaN -> qNaN; NUM vs qNaN -> NUM; qNaN vs sNaN -> qNaN; sNaN vs sNaN -> qNaN .
16525
+ For some architecturs, such as ARMv8, LoongArch, MIPSr6, PowerPC/VSX, they have the
16526
+ strict same instructions; thus it is quite simple for these architectures.
16527
+ For other architectures, the custom or expand methods may provide '``nsz``' flavor .
16520
16528
16521
16529
If either operand is a NaN, returns the other non-NaN operand. Returns
16522
16530
NaN only if both operands are NaN or either operand is sNaN.
0 commit comments