@@ -16464,21 +16464,13 @@ type.
16464
16464
16465
16465
Semantics:
16466
16466
""""""""""
16467
+ Follows the IEEE754 2008 semantics for minNum, except for handling of
16468
+ +0.0 vs -0.0. This matches the behavior of libm's fmin.
16467
16469
16468
- Follows the IEEE-754 semantics for minNum, except for handling of
16469
- signaling NaNs. This match's the behavior of libm's fmin.
16470
-
16471
- If either operand is a NaN, returns the other non-NaN operand. Returns
16472
- NaN only if both operands are NaN. If the operands compare equal,
16473
- returns either one of the operands. For example, this means that
16474
- fmin(+0.0, -0.0) returns either operand.
16475
-
16476
- Unlike the IEEE-754 2008 behavior, this does not distinguish between
16477
- signaling and quiet NaN inputs. If a target's implementation follows
16478
- the standard and returns a quiet NaN if either input is a signaling
16479
- NaN, the intrinsic lowering is responsible for quieting the inputs to
16480
- correctly return the non-NaN input (e.g. by using the equivalent of
16481
- ``llvm.canonicalize``).
16470
+ If either operand is a qNaN, returns the other non-NaN operand. Returns
16471
+ NaN only if both operands are NaN or either operand is sNaN.
16472
+ If the operands compare equal, returns either one of the operands.
16473
+ For example, this means that fmin(+0.0, -0.0) returns either operand.
16482
16474
16483
16475
.. _i_maxnum:
16484
16476
@@ -16515,20 +16507,13 @@ type.
16515
16507
16516
16508
Semantics:
16517
16509
""""""""""
16518
- Follows the IEEE-754 semantics for maxNum except for the handling of
16519
- signaling NaNs . This matches the behavior of libm's fmax.
16510
+ Follows the IEEE754 2008 semantics for maxNum, except for handling of
16511
+ +0.0 vs -0.0 . This matches the behavior of libm's fmax.
16520
16512
16521
16513
If either operand is a NaN, returns the other non-NaN operand. Returns
16522
- NaN only if both operands are NaN. If the operands compare equal,
16523
- returns either one of the operands. For example, this means that
16524
- fmax(+0.0, -0.0) returns either -0.0 or 0.0.
16525
-
16526
- Unlike the IEEE-754 2008 behavior, this does not distinguish between
16527
- signaling and quiet NaN inputs. If a target's implementation follows
16528
- the standard and returns a quiet NaN if either input is a signaling
16529
- NaN, the intrinsic lowering is responsible for quieting the inputs to
16530
- correctly return the non-NaN input (e.g. by using the equivalent of
16531
- ``llvm.canonicalize``).
16514
+ NaN only if both operands are NaN or either operand is sNaN.
16515
+ If the operands compare equal, returns either one of the operands.
16516
+ For example, this means that fmin(+0.0, -0.0) returns either operand.
16532
16517
16533
16518
.. _i_minimum:
16534
16519
@@ -19407,12 +19392,12 @@ The '``llvm.vector.reduce.fmax.*``' intrinsics do a floating-point
19407
19392
matches the element-type of the vector input.
19408
19393
19409
19394
This instruction has the same comparison semantics as the '``llvm.maxnum.*``'
19410
- intrinsic. That is, the result will always be a number unless all elements of
19411
- the vector are NaN. For a vector with maximum element magnitude 0.0 and
19412
- containing both +0.0 and -0.0 elements, the sign of the result is unspecified.
19395
+ intrinsic. If the intrinsic call has the ``nnan`` fast-math flag, then the
19396
+ operation can assume that NaNs are not present in the input vector.
19413
19397
19414
- If the intrinsic call has the ``nnan`` fast-math flag, then the operation can
19415
- assume that NaNs are not present in the input vector.
19398
+ It is deprecated, since the different order of inputs may produce different
19399
+ outputs, and it is hard to optimize with Vector or SIMD extensions.
19400
+ Use '``llvm.vector.reduce.fmaximum``' or '``llvm.vector.reduce.fmaximumnum``' instead.
19416
19401
19417
19402
Arguments:
19418
19403
""""""""""
@@ -19440,12 +19425,12 @@ The '``llvm.vector.reduce.fmin.*``' intrinsics do a floating-point
19440
19425
matches the element-type of the vector input.
19441
19426
19442
19427
This instruction has the same comparison semantics as the '``llvm.minnum.*``'
19443
- intrinsic. That is, the result will always be a number unless all elements of
19444
- the vector are NaN. For a vector with minimum element magnitude 0.0 and
19445
- containing both +0.0 and -0.0 elements, the sign of the result is unspecified.
19428
+ intrinsic. If the intrinsic call has the ``nnan`` fast-math flag, then the
19429
+ operation can assume that NaNs are not present in the input vector.
19446
19430
19447
- If the intrinsic call has the ``nnan`` fast-math flag, then the operation can
19448
- assume that NaNs are not present in the input vector.
19431
+ It is deprecated, since the different order of inputs may produce different
19432
+ outputs, and it is hard to optimize with Vector or SIMD extensions.
19433
+ Use '``llvm.vector.reduce.fminimum``' or '``llvm.vector.reduce.fminimumnum``' instead.
19449
19434
19450
19435
Arguments:
19451
19436
""""""""""
@@ -22994,13 +22979,14 @@ result type. If only ``nnan`` is set then the neutral value is ``-Infinity``.
22994
22979
22995
22980
This instruction has the same comparison semantics as the
22996
22981
:ref:`llvm.vector.reduce.fmax <int_vector_reduce_fmax>` intrinsic (and thus the
22997
- '``llvm.maxnum.*``' intrinsic). That is, the result will always be a number
22998
- unless all elements of the vector and the starting value are ``NaN``. For a
22999
- vector with maximum element magnitude ``0.0`` and containing both ``+0.0`` and
23000
- ``-0.0`` elements, the sign of the result is unspecified.
22982
+ '``llvm.maxnum.*``' intrinsic).
23001
22983
23002
22984
To ignore the start value, the neutral value can be used.
23003
22985
22986
+ It is deprecated, since the different order of inputs may produce different
22987
+ outputs, and it is hard to optimize with Vector or SIMD extensions.
22988
+ Use '``llvm.vp.vector.reduce.fmaximum``' or '``llvm.vp.vector.reduce.fmaximumnum``' instead.
22989
+
23004
22990
Examples:
23005
22991
"""""""""
23006
22992
@@ -23064,13 +23050,14 @@ result type. If only ``nnan`` is set then the neutral value is ``+Infinity``.
23064
23050
23065
23051
This instruction has the same comparison semantics as the
23066
23052
:ref:`llvm.vector.reduce.fmin <int_vector_reduce_fmin>` intrinsic (and thus the
23067
- '``llvm.minnum.*``' intrinsic). That is, the result will always be a number
23068
- unless all elements of the vector and the starting value are ``NaN``. For a
23069
- vector with maximum element magnitude ``0.0`` and containing both ``+0.0`` and
23070
- ``-0.0`` elements, the sign of the result is unspecified.
23053
+ '``llvm.minnum.*``' intrinsic).
23071
23054
23072
23055
To ignore the start value, the neutral value can be used.
23073
23056
23057
+ It is deprecated, since the different order of inputs may produce different
23058
+ outputs, and it is hard to optimize with Vector or SIMD extensions.
23059
+ Use '``llvm.vp.vector.reduce.fminimum``' or '``llvm.vp.vector.reduce.fminimumnum``' instead.
23060
+
23074
23061
Examples:
23075
23062
"""""""""
23076
23063
0 commit comments