_mm256_mmask_i32gather_epi32
Classification
AVX-512, Load, CPUID Test: AVX512F
Header File
immintrin.h
Instruction
VPGATHERDD ymm {k}, vm32y
Synopsis
 _mm256_mmask_i32gather_epi32(__m256i src, __mmask8 k, __m256i vindex, void const* base_addr, const int scale);
Description
Gather 32-bit integers from memory using 32-bit indices. 32-bit elements are loaded from addresses starting at "base_addr" and offset by each 32-bit element in "vindex" (each index is scaled by the factor in "scale"). Gathered elements are merged into "dst" using writemask "k" (elements are copied from "src" when the corresponding mask bit is not set). "scale" should be 1, 2, 4 or 8.
Operation
FOR j := 0 to 7
	i := j*32
	m := j*32
	IF k[j]
		addr := base_addr + SignExtend64(vindex[m+31:m]) * ZeroExtend64(scale) * 8
		dst[i+31:i] := MEM[addr+31:addr]
	ELSE
		dst[i+31:i] := src[i+31:i]
	FI
ENDFOR
dst[MAX:256] := 0