使用SSE内部函数将布尔数组(8字节布尔)转换为int或char

Convert an array of bools (8 byte bools) to an int or a char by using SSE intrinsics

本文关键字:布尔 转换 int char 字节 内部函数 SSE 数组 使用      更新时间:2023-10-16

如何使用SSE内部函数将布尔数组(8字节布尔)转换为intchar

假设我有这个数组:

bool array[8] = {1,1,0,0,1,0,0,0};

并且我想要将其转换为具有比特CCD_ 3的字符。

哈罗德在这里建议我用下面的命令来做,但它不能正确工作:

__m128i values = _mm_loadl_epi64((__m128i*)array);
int result = _mm_movemask_epi8(_mm_slli_epi32(values, 7));

这段代码似乎是正确的,19确实是正确的输出。请记住,生成的结果中的最低有效位将是数组中的第一个bool,而不是最后一个。如果颠倒数组中布尔值的顺序,结果将是200。