_mm512_i32extscatter_ps
Classification
KNC, Store, CPUID Test: KNCNI
Header File
immintrin.h
Instruction
VSCATTERDPS m512, zmm
Synopsis
 _mm512_i32extscatter_ps(void * base_addr, __m512i vindex, __m512 a, _MM_DOWNCONV_PS_ENUM conv, int scale, int hint);
Description
Down-converts 16 packed single-precision (32-bit) floating-point elements in "a" and stores them in memory locations starting at location "base_addr" at packed 32-bit integer indices stored in "vindex" scaled by "scale" using "conv". AVX512 only supports _MM_DOWNCONV_PS_NONE.
Operation
FOR j := 0 to 15
	i := j*32
	m := j*32
	addr := base_addr + SignExtend64(vindex[m+31:m]) * ZeroExtend64(scale) * 8
	
	CASE conv OF
	_MM_DOWNCONV_PS_NONE:    MEM[addr+31:addr] := a[i+31:i]
	_MM_DOWNCONV_PS_FLOAT16: MEM[addr+15:addr] := Convert_FP32_To_FP16(a[i+31:i])
	_MM_DOWNCONV_PS_UINT8:   MEM[addr+ 7:addr] := Convert_FP32_To_UInt8(a[i+31:i])
	_MM_DOWNCONV_PS_SINT8:   MEM[addr+ 7:addr] := Convert_FP32_To_Int8(a[i+31:i])
	_MM_DOWNCONV_PS_UINT16:  MEM[addr+15:addr] := Convert_FP32_To_UInt16(a[i+31:i])
	_MM_DOWNCONV_PS_SINT16:  MEM[addr+15:addr] := Convert_FP32_To_Int16(a[i+31:i])
	ESAC
ENDFOR