_mm512_mask_alignr_epi8
Classification
AVX-512, Miscellaneous, CPUID Test: AVX512BW
Header File
immintrin.h
Instruction
VPALIGNR zmm {k}, zmm, zmm, imm8
Synopsis
 _mm512_mask_alignr_epi8(__m512i src, __mmask64 k, __m512i a, __m512i b, const int imm8);
Description
Concatenate pairs of 16-byte blocks in "a" and "b" into a 32-byte temporary result, shift the result right by "imm8" bytes, and store the low 16 bytes in "dst" using writemask "k" (elements are copied from "src" when the corresponding mask bit is not set).
Operation
FOR j := 0 to 3
	i := j*128
	tmp[255:0] := ((a[i+127:i] << 128)[255:0] OR b[i+127:i]) >> (imm8*8)
	tmp_dst[i+127:i] := tmp[127:0]
ENDFOR
FOR j := 0 to 63
	i := j*8
	IF k[j]
		dst[i+7:i] := tmp_dst[i+7:i]
	ELSE
		dst[i+7:i] := src[i+7:i]
	FI
ENDFOR
dst[MAX:512] := 0