_mm512_i64extgather_epi32lo
Classification
KNC, Load, CPUID Test: KNCNI
Header File
Synopsis
_mm512_i64extgather_epi32lo(__m512i vindex, void const* base_addr, _MM_UPCONV_EPI32_ENUM conv, int scale, int hint);
Description
Up-converts 8 single-precision (32-bit) memory locations starting at location "base_addr" at packed 64-bit integer indices stored in "vindex" scaled by "scale" using "conv" to 32-bit integer elements and stores them in "dst". "hint" indicates to the processor whether the data 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_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:256] := 0