这是我的代码。
struct Vector
{
float x, y, z, w;
};
typedef struct Vector Vector;
inline void inv(Vector* target)
{
(*target).x = -(*target).x;
(*target).y = -(*target).y;
(*target).z = -(*target).z;
(*target).w = -(*target).w;
}
我正在使用GCC for ARM(iPhone)。这可以被矢量化吗?
PS:我正在尝试某种优化。欢迎任何建议。答案 0 :(得分:1)
可能没有,但你可以尝试使用一个限制指针,这将减少编译器中的别名问题,并可能产生更好的代码。
答案 1 :(得分:0)
这取决于如何定义Vector,但它可能是可能的。如果你正在寻找自动矢量化,那么试试英特尔的ICC(假设我们在这里谈论的是x86?),这在某些情况下表现相当不错(比gcc好得多),尽管它总是可以通过显式改进当然,手工矢量化,因为程序员比编译器所知道的更多关于程序的知识,而不仅仅是来自源代码。