Intel® C++ Compiler 16.0 User and Reference Guide
Determines the absolute maximum of float32 vectors. Corresponding instruction is VGMAXABSPS. This intrinsic only applies to Intel® Many Integrated Core Architecture (Intel® MIC Architecture).
Without Mask extern _m512 __cdecl _mm512_gmaxabs_ps(_m512 v2, _m512 v3); extern _m512 __cdecl _mm512_maxabs_ps(_m512 v2, _m512 v3); |
With Mask extern _m512 __cdecl _mm512_mask_gmaxabs_ps(_m512 v1_old, __mmask16 k1, _m512 v2, _m512 v3); extern _m512 __cdecl _mm512_mask_maxabs_ps(_m512 v1_old, __mmask16 k1, _m512 v2, _m512 v3); |
v2 |
float32 vector to determine the absolute maximum values (first source operand) |
v3 |
float32 vector to determine the absolute maximum values (second source operand) |
v1_old |
Source vector that retains old values of the destination vector; the resulting vector gets corresponding elements from v1_old for zero mask bits |
k1 |
Writemask; only those elements of the source vectors with corresponding bit set to '1' in the k1 mask are computed and stored in the result; elements in the result vector corresponding to zero bit in k1 are copied from corresponding elements of vector v1_old |
Determines the maximum of the absolute values of float32 vector v2 and float32 vector v3.
The masked variant has one additional argument: k1. Only those elements in the source registers with the corresponding bit set in vector mask k1 are used for computing.
For the g variant:
FpMax() returns the larger of the two float32 arguments, following IEEE in general, and specifically following this from the DX10 spec:
dest = src0 >= src1 ? src0 : src1
The >= is used instead of >, so that if min(x,y) = x then max(x,y) = y.
NaN has special handling: If one source operand is NaN, then the other source operand is returned (choice made per-component). If both are NaN, then the quietized NaN from the first source (here v2) is returned. This conforms to new IEEE 754R rules.
For the non-g variant:
FpMax() returns the larger of the two float32 arguments by performing a SIMD compare of the packed single-precision floating-point values in the first source operand (v2) and the second source operand (v3).
If the values being compared are both 0.0s (of either sign), the value in the second operand (v3) is returned. If only one value is a NaN, the second operand (v3), either a NaN or a valid floating-point value, is written to the result.
Returns the result of the operation.