gcc g++ gnu sse compiler-flags

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.