Невозможно использовать SSSE3 на включенном процессоре - PullRequest
6 голосов
/ 24 августа 2011

У меня есть процессор Xeon W3550, который должен поддерживать набор инструкций SSE4.2, но когда я пытаюсь использовать что-либо после SSE2 в моей программе на c, я получаю ошибку компилятора, например,

#error "SSE4.2 instruction set not enabled"

Когда я использую

$cat /procs/cpuinfo

, он обнаруживает все соответствующие наборы инструкций sse, но

$cpuid

обнаруживает только SSE и SSE2.

Моя операционная система - Ubuntu 11.04 с ядром 2.6..38-11-generic.

Есть идеи, как это исправить?Спасибо.

РЕДАКТИРОВАТЬ: обновление на основе комментария Steve-o ниже.Заголовочные файлы <* mmintrin.h> выполняют проверку версии sse, с которой они связаны, используя директиву препроцессора #ifndef, например,

#ifndef __SSSE3__ 
#error "SSSE3 instruction set not enabled".

Так что я думаю, что вопрос в том, почему это возвращается ложнонесмотря на то, что процессор включен SSSE3.

1 Ответ

11 голосов
/ 24 августа 2011

Вы пробовали строить с -msse4.2?

  • Поддержка встроенных функций SSE4.2 и генерация кода доступно через -msse4.2.
  • Поддержка SSE4.1 и SSE4.2 может быть включена с помощью -msse4.

http://gcc.gnu.org/gcc-4.3/changes.html

...