_mm512_mask_roundfxpnt_adjust_ps
Classification
KNC, Miscellaneous, CPUID Test: KNCNI
Header File
Instruction
VRNDFXPNTPS zmm {k}, m512, imm8
Synopsis
_mm512_mask_roundfxpnt_adjust_ps(__m512 src, __mmask16 k, __m512 a, int rounding, _MM_EXP_ADJ_ENUM expadj);
Description
Performs element-by-element rounding of packed single-precision (32-bit) floating-point elements in "a" using "expadj" and in the direction of "rounding" and stores results in "dst" using writemask "k" (elements are copied from "src" when the corresponding mask bit is not set).
[round_note]
Operation
FOR j := 0 to 15
i := j*32
IF k[j]
dst[i+31:i] := ROUND(a[i+31:i])
CASE expadj OF
_MM_EXPADJ_NONE: dst[i+31:i] := dst[i+31:i] * (2 << 0)
_MM_EXPADJ_4: dst[i+31:i] := dst[i+31:i] * (2 << 4)
_MM_EXPADJ_5: dst[i+31:i] := dst[i+31:i] * (2 << 5)
_MM_EXPADJ_8: dst[i+31:i] := dst[i+31:i] * (2 << 8)
_MM_EXPADJ_16: dst[i+31:i] := dst[i+31:i] * (2 << 16)
_MM_EXPADJ_24: dst[i+31:i] := dst[i+31:i] * (2 << 24)
_MM_EXPADJ_31: dst[i+31:i] := dst[i+31:i] * (2 << 31)
_MM_EXPADJ_32: dst[i+31:i] := dst[i+31:i] * (2 << 32)
ESAC
ELSE
dst[i+31:i] := src[i+31:i]
FI
ENDFOR
dst[MAX:512] := 0