根据这个答案,我创建了以下测试程序:
#include <iso646.h>
#include <immintrin.h>
#include <stdio.h>
#define SHIFT_LEFT( N ) \
\
inline __m256i shift_left_##N ( __m256i A ) { \
\
if ( N == 0 ) return A; \
else if ( N < 16 ) return _mm256_alignr_epi8 ( A, _mm256_permute2x128_si256 ( A, A, _MM_SHUFFLE ( 0, 0, 2, 0 ) ), ( uint8_t ) ( 16 - N ) ); \
else if ( N == 16 ) return _mm256_permute2x128_si256 ( A, A, _MM_SHUFFLE …
Run Code Online (Sandbox Code Playgroud)