_mm512_mask_cvtfxpnt_round_adjustepu32_ps
Classification
KNC, Convert, CPUID Test: KNCNI
Header File
Instruction
VCVTFXPNTUDQ2PS zmm {k}, zmm, imm8
Synopsis
_mm512_mask_cvtfxpnt_round_adjustepu32_ps(__m512 src, __mmask16 k, __m512i v2, int rounding, _MM_EXP_ADJ_ENUM expadj);
Description
Performs element-by-element conversion of packed 32-bit unsigned integer elements in "v2" to packed single-precision (32-bit) floating-point elements and performing an optional exponent adjust using "expadj", storing the 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] := Int32ToFloat32(v2[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