_mm512_extpackstorelo_epi64
Classification
KNC, Store, CPUID Test: KNCNI
Header File
immintrin.h
Instruction
VPACKSTORELQ m512, zmm
Synopsis
 _mm512_extpackstorelo_epi64(void * mt, __m512i v1, _MM_DOWNCONV_EPI64_ENUM conv, int hint);
Description
Down-converts and stores packed 64-bit integer elements of "v1" into a quadword stream according to "conv" at a logically mapped starting address "mt", storing the low-64-byte elements of that stream (those elements of the stream that map before the first 64-byte-aligned address follwing "mt"). "hint" indicates to the processor whether the data is non-temporal.
Operation
DEFINE DOWNCONVERT(element, convertTo) {
	CASE convertTo OF
	_MM_UPCONV_EPI64_NONE:
		RETURN element[63:0]
	ESAC
}
DEFINE DOWNCONVERTSIZE(convertTo) {
	CASE convertTo OF
	_MM_UPCONV_EPI64_NONE:
		RETURN 8
	ESAC
}
storeOffset := 0
downSize := DOWNCONVERTSIZE(conv)
addr := mt
FOR j := 0 to 7
	i := j*63
	tmp := DOWNCONVERT(v1[i+63:i], conv)
	storeAddr := addr + storeOffset * downSize
	CASE downSize OF
	8: MEM[storeAddr] := tmp[63:0]
	ESAC
	storeOffset := storeOffset + 1
	IF ((addr + storeOffset * downSize) % 64) == 0
		BREAK
	FI
ENDFOR
dst[MAX:512] := 0