【发布时间】:2016-10-26 16:09:09
【问题描述】:
我想使用内在函数比较两个浮点变量。如果比较是真的,做点别的做点什么。我想将此作为正常的 if..else 条件。有什么方法可以使用内在函数吗?
//normal code
vector<float> v1, v2;
for(int i = 0; i < v1.size(); ++i)
if(v1[i]<v2[i])
{
//do something
}
else
{
//do something
)
如何使用 SSE2 或 AVX 做到这一点?
【问题讨论】:
-
将取决于您使用的内在函数。典型的方法是生成一个掩码,然后使用该掩码来确定两种可能的场景使用哪个值。
-
你为什么要使用内在函数?为什么您期望编译器不会使用内置的比较运算符生成最佳代码?你试过了吗?
-
发布一些实际代码肯定会有所帮助...
-
如果您告诉我们您的目标架构是什么,也会有所帮助。我假设 x86,因为你已经标记了这个 [visual-c++],但是 x86 系列支持很多不同的指令集。您的目标是 32 位还是 64 位处理器?您是否必须将自己限制在 x87 FPU 上,还是可以使用 SSE? SSE2 甚至更新的指令集呢?
-
我正在使用 win32 控制台应用程序。我可以使用 SSE2 和更新到 AVX 的指令。
标签: c++ visual-c++ compiler-optimization intrinsics