Что именно делает -march=native?

Gentoo Wiki сообщил мне следующее:

Предупреждение: GCC 4.2 и выше поддерживают -march=native. -march=native применяет дополнительные настройки помимо -march, характерные для вашего процессора. Если у вас нет особой причины не делать этого (например, кросс-компиляция distcc), вам, вероятно, следует использовать -march=native, а не что-либо из перечисленного ниже.

Что это за дополнительные настройки?


person György Andrasek    schedule 10.06.2010    source источник


Ответы (1)


Неважно.

$ cc -march=core2 -E -v - </dev/null 2>&1 | grep cc1
 /[...]/cc1 -E -quiet -v -iprefix /[...]/4.3.2/ - -march=core2

$ cc -march=native -E -v - </dev/null 2>&1 | grep cc1
 /[...]/cc1 -E -quiet -v -iprefix /[...]/4.3.2/ - -march=core2 -mcx16 -msahf --param l1-cache-size=32 --param l1-cache-line-size=64 -mtune=core2

Мне начинает очень нравиться этот вариант. -mcx16 и -msahf — это две дополнительные инструкции ЦП, которые теперь может использовать gcc, которых не было в более ранних версиях Core2.

person György Andrasek    schedule 10.06.2010
comment
На моем i7 он также добавляет -mpopcnt -msse4.2 --param l2-cache-size=8192, где POPCNT — довольно аккуратная инструкция процессора. - person Cubbi; 10.06.2010
comment
Странный. Вы отправляете сборочную машину вместе с программным обеспечением? - person Hans Passant; 10.06.2010
comment
@hans: лол, но ОП работает с Gentoo. Это означает, что никто не распространяет бинарные файлы, только код, который должен быть скомпилирован на машине, на которой он будет выполняться. - person deft_code; 10.06.2010