Можно ли автоматически векторизовать операции над полем структуры, на который ссылается указатель? - PullRequest
1 голос
/ 01 мая 2010

Это мой код.

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 для ARM (iPhone). Можно ли это векторизовать?

PS: я пытаюсь какую-то оптимизацию. Любые рекомендации приветствуются.

Ответы [ 2 ]

1 голос
/ 01 мая 2010

Вероятно, нет, однако вы можете попробовать использовать ограничительный указатель, который уменьшит проблемы с наложением псевдонимов в компиляторе и потенциально создаст лучший код.

0 голосов
/ 01 мая 2010

Это зависит от того, как определяется вектор, но это может быть возможно. Если вы ищете автоматическую векторизацию, попробуйте ICC от Intel (если мы говорим о x86 здесь?), Которая в некоторых случаях работает довольно хорошо (намного лучше, чем gcc), хотя ее всегда можно улучшить с помощью явного Конечно же, векторизация вручную, поскольку программист знает о программе больше, чем компилятор может понять из исходного кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...