使用SSE内部函数将布尔数组(8字节布尔)转换为int或char
Convert an array of bools (8 byte bools) to an int or a char by using SSE intrinsics
如何使用SSE内部函数将布尔数组(8字节布尔)转换为int
或char
?
假设我有这个数组:
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。
相关文章:
- 变量定义到C++布尔值转换
- fstream / ifstream / ofstream 对象如何转换为布尔值
- 将uintptr_t转换为布尔值会使 SSO 基准速度减慢数倍
- 将参数隐式强制转换为布尔
- 将uint64_t位掩码转换为 std::布尔数组
- 在目标 c++ 中将 CFTypeRef 转换为布尔值
- 无法将'Class::operator=='从"布尔"类型(类::)(类*)转换为"布尔"类型
- n-ary布尔语法从中缀到前缀的Boost::Spirit转换?
- isspace 函数的性能警告,从 int 转换为布尔值
- 将返回表达式隐式转换为布尔值
- 将结构转换为布尔值
- 整数在 C++ 中没有被类型转换为布尔值
- 为什么我的变体将 std::string 转换为布尔值
- 为什么使用 int 的转换,而不是布尔值
- lambda 转换为布尔值,而不是推导函数指针类型
- 从常量字符串到布尔值的隐式强制转换
- 带有布尔转换的变量的原始打印:意外行为
- JavaScript 和 C++ 布尔转换
- 三元运算符作为布尔转换
- 奇怪的布尔转换(?