_mm512_extpackstorehi_pd
Classification
KNC, Store, CPUID Test: KNCNI
Header File
immintrin.h
Instruction
VPACKSTOREHPD m512, zmm
Synopsis
 _mm512_extpackstorehi_pd(void * mt, __m512d v1, _MM_DOWNCONV_PD_ENUM conv, int hint);
Description
Down-converts and stores packed double-precision (64-bit) floating-point elements of "v1" into a quadword stream according to "conv" at a logically mapped starting address (mt-64), storing the high-64-byte elements of that stream (those elemetns of the stream that map at or after the first 64-byte-aligned address following (m5-64)). "hint" indicates to the processor whether the data is non-temporal.
Operation
DEFINE DOWNCONVERT(element, convertTo) {
	CASE convertTo OF
	_MM_UPCONV_PD_NONE:
		RETURN element[63:0]
	ESAC
}
DEFINE DOWNCONVERTSIZE(convertTo) {
	CASE convertTo OF
	_MM_UPCONV_PD_NONE:
		RETURN 8
	ESAC
}
storeOffset := 0
foundNext64BytesBoundary := false
downSize := DOWNCONVERTSIZE(conv)
addr := mt-64
FOR j := 0 to 7
	IF foundNext64BytesBoundary == false
		IF ((addr + (storeOffset + 1)*downSize) % 64) == 0
			foundNext64BytesBoundary := true
		FI
	ELSE
		i := j*64
		tmp := DOWNCONVERT(v1[i+63:i], conv)
		storeAddr := addr + storeOffset * downSize
		CASE downSize OF
		8: MEM[storeAddr] := tmp[63:0]
		ESAC
	FI
	storeOffset := storeOffset + 1
ENDFOR
dst[MAX:512] := 0