_mm512_mask_round_ps
Classification
KNC, Convert, CPUID Test: KNCNI
Header File
immintrin.h
Instruction
VROUNDPS zmm {k}, m512, imm8
Synopsis
 _mm512_mask_round_ps(__m512 src, __mmask16 k, __m512 a, int rounding, _MM_EXP_ADJ_ENUM expadj);
Description
Round the packed single-precision (32-bit) floating-point elements in "a" to the nearest integer value using "expadj" and in the direction of "rounding", and store the results as packed single-precision floating-point elements 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