SSE 将 unsigned char 加载为 short
SSE load unsigned char to short
有没有更好的方法使用 SSE 将 unsigned char
数组加载到 short
?喜欢
unsigned char foo1[16];
__m128i foo2 = _mm_loadu_si128((__m128i*)foo1);
我希望 foo2
以 short int
数据类型存储元素。
不是很清楚你想要什么。
但是如果您希望 SSE 寄存器的每个输入字节都有一个短值,那么您可能需要这个(未经测试):
__declspec( align( 16 ) ) unsigned char foo1[ 16 ];
// Fill your array with data
const __m128i src = _mm_load_si128( ( __m128i* )foo1 );
const __m128i zero = _mm_setzero_si128();
const __m128i lower = _mm_unpacklo_epi8( src, zero ); // First 8 short values
const __m128i higher = _mm_unpackhi_epi8( src, zero ); // Last 8 short values
有没有更好的方法使用 SSE 将 unsigned char
数组加载到 short
?喜欢
unsigned char foo1[16];
__m128i foo2 = _mm_loadu_si128((__m128i*)foo1);
我希望 foo2
以 short int
数据类型存储元素。
不是很清楚你想要什么。
但是如果您希望 SSE 寄存器的每个输入字节都有一个短值,那么您可能需要这个(未经测试):
__declspec( align( 16 ) ) unsigned char foo1[ 16 ];
// Fill your array with data
const __m128i src = _mm_load_si128( ( __m128i* )foo1 );
const __m128i zero = _mm_setzero_si128();
const __m128i lower = _mm_unpacklo_epi8( src, zero ); // First 8 short values
const __m128i higher = _mm_unpackhi_epi8( src, zero ); // Last 8 short values