_mm512_mask_roundfxpnt_adjust_ps
Classification
KNC, Miscellaneous, CPUID Test: KNCNI
Header File
immintrin.h
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