使用SIMD的非同质比较
Non-Homogenous Comparison using SIMD
是否可以使用SIMD指令(intrinsic)进行非同构(两种不相同的数据类型)比较,特别是在SSE2到SSE4中。X指令集?。即float和double?或者32位和64位整数?甚至是浮点数和整数等等?
你的意思是你有一个整数数组,你想把它和双精度数组中的值进行比较?不幸的是,您将不得不执行某种转换来实现这一点。有一组cvtXX2YY
指令是这样做的,它们应该在内在函数中可用。你只需要挑出一个做正确转换的,例如_mm_cvtpi32_ps——从这个例子中可以看到,你不能把四个整数转换成四个浮点数……一次两个。别问我为什么……
如果你在问"你能把一个整数和一个浮点数转换成另一个整数和浮点数吗?",那么不,那是不可用的。
相关文章:
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- 为什么比较运算符如此快速
- 我可以使用 g++ 进行三种比较 (<=>) 吗?
- 比较字符数组
- 将模板化的类型与C++中的某些类/类型进行比较
- C++自定义比较函数
- 如何比较自定义类的std::变体
- 在C++中,我如何接受不同于同一行的用户输入
- 如何重载"<"运算符以比较同一类的对象?
- 强制表达到同质
- 为同一类提供不同比较运算符的最佳策略是什么?
- RocksDB是存储同质对象的好选择吗
- 同一类下两个对象之间的比较
- 如何比较同一类的两个对象
- 在 if 语句中比较同一类的两个对象
- 比较同一类的两个对象
- 使用SIMD的非同质比较
- 抑制-同义比较警告
- 比较同一类的 2 个对象(覆盖 == 运算符)c++
- 如何将同质的fusion::向量转换为(std/boost)::数组