可以在指针引用的struct字段上自动向量化操作吗?

时间:2010-05-01 06:28:00

标签: gcc reference

这是我的代码。

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:我正在尝试某种优化。欢迎任何建议。

2 个答案:

答案 0 :(得分:1)

可能没有,但你可以尝试使用一个限制指针,这将减少编译器中的别名问题,并可能产生更好的代码。

答案 1 :(得分:0)

这取决于如何定义Vector,但它可能是可能的。如果你正在寻找自动矢量化,那么试试英特尔的ICC(假设我们在这里谈论的是x86?),这在某些情况下表现相当不错(比gcc好得多),尽管它总是可以通过显式改进当然,手工矢量化,因为程序员比编译器所知道的更多关于程序的知识,而不仅仅是来自源代码。