gcc - ¿Cuál es la diferencia entre las opciones de cflgs y sse de-msse,-msse2,-mssse3,-msse4 rtc..? y como determinar?
g++ gnu (1)
Para las opciones de GCC CFLAGS
: -msse
, -msse2
, -mssse3
, -msse4
, -msse4.1
, -msse4.2
. ¿Son exclusivos en su uso o pueden usarse juntos?
Mi entendimiento es que la elección de la configuración depende de si el arco de destino, en el que se ejecutará el programa, lo admita o no, ¿es esto correcto?
Si es así, ¿cómo podría saber qué soporte soporta mi arco objetivo? En Linux, cat / proc / cpuinfo, pero ¿qué pasa si mac o Windows?
¡Gracias!
El conmutador -m
se puede usar en paralelo, además, algunos de ellos están implícitos en la arquitectura u otros interruptores. Por ejemplo, si -msse -msse2
código para x86_64, -msse -msse2
siempre está habilitado.
Para el código destinado a ejecutarse en su sistema, debe elegir -march=native
, que seleccionará lo que está disponible en su procesador. Por ejemplo, si tiene un Sandy Bridge, esto habilitará -msse -msse2 -msse3 -mssse3 -msse4 -msse4.1 -msse4.2 -mavx
.
Si desea especificar en detalle qué conjunto de instrucciones usar, solo debe usar lo que está disponible, no siempre el "último". El "más reciente" es actualmente -mavx2
, que no recomiendo: el primer procesador que lo admitirá estará disponible en 2013.