_mm512_i32extgather_epi32
Classification
AVX-512, Load, CPUID Test: AVX512F
Header File
immintrin.h
Instruction
VPGATHERDD zmm, m512
Synopsis
 _mm512_i32extgather_epi32(__m512i vindex, void const * base_addr, _MM_UPCONV_EPI32_ENUM conv, int scale, int hint);
Description
Up-converts 16 memory locations starting at location "base_addr" at packed 32-bit integer indices stored in "vindex" scaled by "scale" using "conv" to 32-bit integer elements and stores them in "dst". AVX512 only supports _MM_UPCONV_EPI32_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_UPCONV_EPI32_NONE:   dst[i+31:i] := MEM[addr+31:addr]
	_MM_UPCONV_EPI32_UINT8:  dst[i+31:i] := ZeroExtend32(MEM[addr+7:addr])
	_MM_UPCONV_EPI32_SINT8:  dst[i+31:i] := SignExtend32(MEM[addr+7:addr])
	_MM_UPCONV_EPI32_UINT16: dst[i+31:i] := ZeroExtend32(MEM[addr+15:addr])
	_MM_UPCONV_EPI32_SINT16: dst[i+31:i] := SignExtend32(MEM[addr+15:addr])
	ESAC
ENDFOR
dst[MAX:512] := 0