C++ SSE2代码优化

C++ SSE2代码优化,c++,sse,simd,intrinsics,sse2,C++,Sse,Simd,Intrinsics,Sse2,我正在使用SSE2内部函数来优化我的应用程序的瓶颈,并有以下问题: ddata = _mm_xor_si128(_mm_xor_si128( _mm_sll_epi32(xdata, 0x7u), _mm_srl_epi32(tdata, 0x19u)), xdata); 微软C++编译器,因为类型 > My88II/COD>和未签名INT/COD>(传递到 为什么会这样?我应该如何将任意的无符号int值传递给\u mm\u sll\u epi32 \u m128i是: typede

我正在使用SSE2内部函数来优化我的应用程序的瓶颈,并有以下问题:

ddata = _mm_xor_si128(_mm_xor_si128(
    _mm_sll_epi32(xdata, 0x7u), _mm_srl_epi32(tdata, 0x19u)), xdata);
<>微软C++编译器,因为类型<代码> > My88II/COD>和未签名INT/COD>(传递到<代码> 为什么会这样?我应该如何将任意的
无符号int
值传递给
\u mm\u sll\u epi32


\u 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;
应该是:

ddata = _mm_xor_si128(_mm_xor_si128(
    _mm_slli_epi32(xdata, 0x7), _mm_srli_epi32(tdata, 0x19)), xdata);
注意“立即”的
i
。如果没有这一点,shift intrinsic需要一个向量作为第二个参数。

您可以使用(注意i)和类似的方法。它采用整数参数,而不是
\uuum128i