_mm512_i64extgather_pslo
Classification
KNC, Load, CPUID Test: KNCNI
Header File
immintrin.h
Synopsis
 _mm512_i64extgather_pslo(__m512i vindex, void const * base_addr, _MM_UPCONV_PS_ENUM conv, int scale, int hint);
Description
Up-converts 8 memory locations starting at location "base_addr" at packed 64-bit integer indices stored in "vindex" scaled by "scale" using "conv" to single-precision (32-bit) floating-point elements and stores them in the lower half of "dst". "hint" indicates to the processor whether the load is non-temporal.
Operation
FOR j := 0 to 7
	i := j*32
	m := j*64
	addr := base_addr + vindex[m+63:m] * ZeroExtend64(scale) * 8
	
	CASE conv OF
	_MM_UPCONV_PS_NONE:    dst[i+31:i] := MEM[addr+31:addr]
	_MM_UPCONV_PS_FLOAT16: dst[i+31:i] := Convert_FP16_To_FP32(MEM[addr+15:addr])
	_MM_UPCONV_PS_UINT8:   dst[i+31:i] := Convert_UInt8_To_FP32(MEM[addr+7:addr])
	_MM_UPCONV_PS_SINT8:   dst[i+31:i] := Convert_Int8_To_FP32(MEM[addr+7:addr])
	_MM_UPCONV_PS_UINT16:  dst[i+31:i] := Convert_UInt16_To_FP32(MEM[addr+15:addr])
	_MM_UPCONV_PS_SINT16:  dst[i+31:i] := Convert_Int16_To_FP32(MEM[addr+15:addr])
	ESAC
ENDFOR
dst[MAX:256] := 0