Поддержка AMD xop check
У меня следующая проблема:
У меня есть несколько тестов, связанных с проверкой xop с использованием некоторых Bulldozer (xop)
инструкции.
И я должен запускать эти тесты только на Bulldozer
процессоры.
Как я могу проверить, что мой процессор поддерживает xop
инструкция во время компиляции?
Язык: C
, Os: Linux
;
3 ответа
Вы можете написать программу, которая проверяет CPUID и использовать вывод этой программы при компиляции:gcc $(cpuid_test) my_prog.c
где cpuid_test возвращает '-march=bdver1'
или же -DXOP_SUPPORT=1
Вы не можете тестировать во время компиляции, но вы можете скомпилировать для AMD Bulldozer, используя:
$ gcc -march = bdver1 -mtune = bdver1...
Смотрите: http://gcc.gnu.org/gcc-4.6/changes.html
Если ваша сборочная машина является вашей целевой машиной, посмотрите на /proc/cpuinfo
,
Если источник скомпилирован с -march=bdver1
(который включает поддержку XOP среди прочего), макрос препроцессора __XOP__
будет определено до 1.
Вы можете проверить во время компиляции для XOP с
#ifdef __XOP__
...XOP code path here...
#else
...non XOP code here...
#endif