[clang] [clang][docs] Revise documentation for `__builtin_reduce_(max|min)`. (PR #114637)

via cfe-commits cfe-commits at lists.llvm.org
Tue Nov 5 16:48:09 PST 2024


================
@@ -745,12 +745,12 @@ Let ``VT`` be a vector type and ``ET`` the element type of ``VT``.
 ======================================= ====================================================================== ==================================
          Name                            Operation                                                              Supported element types
 ======================================= ====================================================================== ==================================
- ET __builtin_reduce_max(VT a)           return x or y, whichever is larger; If exactly one argument is         integer and floating point types
-                                         a NaN, return the other argument. If both arguments are NaNs,
-                                         fmax() return a NaN.
- ET __builtin_reduce_min(VT a)           return x or y, whichever is smaller; If exactly one argument           integer and floating point types
-                                         is a NaN, return the other argument. If both arguments are
-                                         NaNs, fmax() return a NaN.
+ ET __builtin_reduce_max(VT a)           return the largest element of the vector. If the element type is       integer and floating point types
+                                         floating point, this function has the same comparison semantics as 
+                                         ``__builtin_reduce_maximum``.
+ ET __builtin_reduce_min(VT a)           return the smallest element of the vector. If the element type is      integer and floating point types
+                                         floating point, this function has the same comparison semantics as 
----------------
c8ef wrote:

> The ‘llvm.vector.reduce.fmax.*’ intrinsics do a floating-point MAX reduction of a vector, returning the result as a scalar. The return type matches the element-type of the vector input.

> This instruction has the **same comparison semantics** as the ‘llvm.maxnum.*’ intrinsic. That is, the result will always be a number unless all elements of the vector are NaN. For a vector with maximum element magnitude 0.0 and containing both +0.0 and -0.0 elements, the sign of the result is unspecified.

https://github.com/llvm/llvm-project/pull/114637


More information about the cfe-commits mailing list