我试图弄清楚如何为_mm_cmpistrm SSE4.2 内在函数设置“模式”标志。我有一个常规的 C 字符串 (char*),我正在使用 _mm_lddqu_si128 将其加载到 __m128i 类型中。我打算将无符号字节与常规字符串比较一起使用:
_SIDD_UBYTE_OPS | _SIDD_CMP_EQUAL_EACH
但我对为单元设置什么与位掩码感到困惑。以下是 GCC 4.3.2 中 smmintrin.h 的宏:
/* These macros specify the output selection in _mm_cmpXstrm (). */
#define _SIDD_BIT_MASK 0x00
#define _SIDD_UNIT_MASK 0x40
我想我理解位掩码是什么:如果该位置的字符在两个字符串之间不同,我将在位 0..15 中得到 1。但是单位掩码有什么作用?