【发布时间】:2011-12-21 04:48:57
【问题描述】:
我正在使用 SSE2 内在函数来优化我的应用程序的瓶颈并且有以下问题:
ddata = _mm_xor_si128(_mm_xor_si128(
_mm_sll_epi32(xdata, 0x7u), _mm_srl_epi32(tdata, 0x19u)), xdata);
在 Microsoft C++ 编译器上,这不会编译,因为类型 __m128i 和 unsigned int(传递给 _mm_sll_epi32 指令)不可互换。
为什么会这样?我应该如何将任意的unsigned int 值传递给_mm_sll_epi32?
_m128i 是:
typedef union __declspec(intrin_type) _CRT_ALIGN(16) __m128i {
__int8 m128i_i8[16];
__int16 m128i_i16[8];
__int32 m128i_i32[4];
__int64 m128i_i64[2];
unsigned __int8 m128i_u8[16];
unsigned __int16 m128i_u16[8];
unsigned __int32 m128i_u32[4];
unsigned __int64 m128i_u64[2];
} __m128i;
【问题讨论】:
标签: c++ sse simd intrinsics sse2