LINUX.ORG.RU

Я глуп или компилятор?


0

0

Ну вот есть скажем такой код на С:

double d1 = 1;
double d2 = 3;
...
d1 *= d2;
d2 *= d1;

теперь компилируем его с g++ 4.3:
g++ -mfpmath=sse -msse -msse2 -msse3
получаем:
movsd -32(%rbp), %xmm0
mulsd -24(%rbp), %xmm0
movsd %xmm0, -32(%rbp)
movsd -24(%rbp), %xmm0
mulsd -32(%rbp), %xmm0
movsd %xmm0, -24(%rbp)
причем при оптимизации -O3 ничего не менятеся (ну сохранение обратно в ОЗУ исчезает). А как заставить генерировать SIMD с упаковкой данных? Ведь идея SSE2 в точ чтобы вместо предыдущего было например такое:
movhpd -32(%rbp), %xmm0
movlpd -24(%rbp), %xmm0
mulpd -32(%rbp), %xmm0
movhpd %xmm0, -24(%rbp)
movlpd %xmm0, -32(%rbp)
Заметьте на одно уможение меньше. Я глуп или компилятор про пакетные инструкции не в курсе?

anonymous

use intrinsic functions

anonymous
()

Ты глуп, ни один компилятор не делает такого, даже с интеловским рекомендуется использовать intrinsic'и.

anonymous
()
Ответ на: комментарий от anonymous

Я не автор письма, но все же. Подскажите где почитать что такое intrinsic и как с ним работать?

anonymous
()

>Я глуп или компилятор?

ты компилятор

creep3r
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.