Ну вот есть скажем такой код на С:
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
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум помешательство на оптимизации (2013)
- Форум Флаги оптимизации gcc под AMD (2016)
- Форум глупо (2008)
- Форум компилятор (2010)
- Форум Компилятор (2007)
- Форум Компилятор (2004)
- Форум Глупые шедулеры или глупый пользователь? (2007)
- Форум глупый вопрос (2012)
- Форум Глупые запреты (2018)
- Форум Глупое охлаждение (2023)