_mm512_mask_roundfxpnt_adjust_pd
Classification
KNC, Miscellaneous, CPUID Test: KNCNI
Header File
immintrin.h
Instruction
VRNDFXPNTPD zmm {k}, m512, imm8
Synopsis
 _mm512_mask_roundfxpnt_adjust_pd(__m512d src, __mmask8 k, __m512d a, int rounding, _MM_EXP_ADJ_ENUM expadj);
Description
Performs element-by-element rounding of packed double-precision (64-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 7
	i := j*64
	IF k[j]
		dst[i+63:i] := ROUND(a[i+63: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+63:i] := src[i+63:i]
	FI
ENDFOR
dst[MAX:512] := 0