_mm512_mask_loadunpackhi_pd
Classification
KNC, Load, CPUID Test: KNCNI
Header File
immintrin.h
Instruction
VLOADUNPACKHPD zmm {k}, m512
Synopsis
 _mm512_mask_loadunpackhi_pd(__m512d src, __mmask8 k, void const* mt);
Description
Loads the high-64-byte-aligned portion of the quadword stream starting at element-aligned address mt-64 and expands them into packed double-precision (64-bit) floating-point values in "dst". The initial values of "dst" are copied from "src". Only those converted quadwords that occur at or after the first 64-byte-aligned address following (mt-64) are loaded. Elements in the resulting vector that do not map to those quadwords are taken from "src". Elements are loaded from memory according to element selector "k" (elements are skipped when the corresponding mask bit is not set).
Operation
dst[511:0] := src[511:0]
loadOffset := 0
foundNext64BytesBoundary := false
addr := mt-64
FOR j := 0 to 7
	IF k[j]
		IF foundNext64BytesBoundary == false
			IF (addr + (loadOffset + 1)*8) % 64 == 0
				foundNext64BytesBoundary := true
			FI
		ELSE
			i := j*64
			tmp := MEM[addr + loadOffset*8]
			dst[i+63:i] := tmp[i+63:i]
		FI
		loadOffset := loadOffset + 1
	FI
ENDFOR
dst[MAX:512] := 0