SSE2 для двойных расчетов с GCC - PullRequest
3 голосов
/ 14 ноября 2011

Как я могу использовать SSE2 в GCC?Я хочу работать с двойными значениями.

Я ищу s.th.например: http://vrm -vrm.blogspot.com / 2009/10 / gcc-intrinsics.html только для двойных значений.

1 Ответ

4 голосов
/ 15 ноября 2011

Если вы хотите использовать insne SSE2 double, вы должны скомпилировать с gcc -mfpmath=sse -msse2.

Опция -msse2 сама по себе позволит вам использовать встроенные функции SSE2, -mfpmath=sse вызовет GCCдля создания insne SSE2 для всех операций FP.

Также обратите внимание, что векторизация включена на -O3.

Преимущества векторизованного insn SSE2-4 очевидны, процессоры Sandy Bridge могут выполнять дотри 256-битных операции за цикл (например, 4 двойных умножения, 4 двойных сложения и некоторое перемешивание сверху)

Однако руководство по оптимизации Intel рекомендует использовать SSE даже для скалярных операций, по причинам, включающим модель с единым регистроми более короткие задержки по сравнению с устаревшими x87 insns.

РЕДАКТИРОВАТЬ:

Забыл упомянуть, что для 32-битного кода вы также можете добавить -msseregparm, что будетзаставить аргументы FP и возвращаемые значения передаваться через регистры SSE.По умолчанию они передаются в памяти и в %st0 соответственно.Естественно, это меняет ABI, поэтому все взаимодействующие модули должны быть скомпилированы с этой опцией.

...