_mm256_permute2x128_si256
Classification
AVX_ALL, Swizzle, CPUID Test: AVX2
Header File
immintrin.h
Instruction
VPERM2I128 ymm, ymm, ymm, imm8
Synopsis
 _mm256_permute2x128_si256(__m256i a, __m256i b, const int imm8);
Description
Shuffle 128-bits (composed of integer data) selected by "imm8" from "a" and "b", and store the results in "dst".
Operation
DEFINE SELECT4(src1, src2, control) {
	CASE(control[1:0]) OF
	0:	tmp[127:0] := src1[127:0]
	1:	tmp[127:0] := src1[255:128]
	2:	tmp[127:0] := src2[127:0]
	3:	tmp[127:0] := src2[255:128]
	ESAC
	IF control[3]
		tmp[127:0] := 0
	FI
	RETURN tmp[127:0]
}
dst[127:0] := SELECT4(a[255:0], b[255:0], imm8[3:0])
dst[255:128] := SELECT4(a[255:0], b[255:0], imm8[7:4])
dst[MAX:256] := 0