Ответ 1
Коммутатор -m
может использоваться параллельно, кроме того, некоторые из них подразумеваются архитектурой или другими коммутаторами. Например, если вы создаете код для x86_64, -msse -msse2
всегда включен.
Для кода, предназначенного для запуска в вашей системе, вы должны выбрать -march=native
, который будет выбирать то, что доступно на вашем процессоре. Например, если у вас есть Sandy Bridge, это позволит -msse -msse2 -msse3 -mssse3 -msse4 -msse4.1 -msse4.2 -mavx
.
Если вы хотите подробно указать, какая инструкция должна использоваться, вы должны использовать только то, что доступно, а не всегда "последнее". "Последний" в настоящее время -mavx2
, который я не рекомендую: первый процессор, который будет его поддерживать, будет доступен в 2013 году.