Написание части кода на C так, что компилятор использует инструкцию SSE4.1 для генерации кода сборки - PullRequest
3 голосов
/ 01 сентября 2011

Я хочу написать некоторый C-код, чтобы gcc, используя флаг -msse4.1, мог оптимизировать его. В основном я хочу проверить, использует ли компилятор инструкции SSE4.1. Существует много инструкций SSE4.1 (http://en.wikipedia.org/wiki/SSE4#New_instructions), но я не могу написать фрагмент кода C, который использует любую из этих инструкций в сгенерированном коде сборки.

Заранее спасибо.

Ответы [ 2 ]

5 голосов
/ 02 сентября 2011

Из того, что я видел, компиляторы редко генерируют инструкции SSE4.1. Я видел несколько случаев, когда он будет использовать инструкции вставки / извлечения для упаковки данных.

Но по большей части, если вы хотите использовать инструкции SSE4.1, вам нужно делать их явно, используя встроенные функции:

http://software.intel.com/sites/products/documentation/studio/composer/en-us/2011/compiler_c/intref_cls/common/intref_bk_sse41.htm

3 голосов
/ 01 сентября 2011

Я сомневаюсь, что GCC легко выпустит инструкции SSE4.1.Но вы могли бы взглянуть на Компилятор программ Intel SPMD :

В модели SPMD программист пишет программу, которая в основном выглядит как обычная последовательная программа, хотя ее выполнениеНа самом деле модель заключается в том, что несколько экземпляров программы выполняются параллельно на оборудовании.(См. Более подробный пример, иллюстрирующий эту концепцию.) Ispc компилирует язык программирования SPMD на основе C для работы на SIMD-модулях ЦП;он часто обеспечивает 3-кратное и более ускорение на процессорах с модулями SSE шириной 4, без каких-либо трудностей при написании встроенного кода.

...