Ambos. El compilador/ensamblador debe ser capaz de emitir/manejar instrucciones SSE2, y luego la CPU necesita darles soporte. Si su binario tiene instrucciones SSE2 sin condiciones adjuntas e intenta ejecutarlo en un Pentium II, no tiene suerte.
La mejor manera es consultar el manual de GCC. Por ejemplo, mi página de manual de GCC se refiere a la opción -msse2 que le permitirá habilitar explícitamente las instrucciones de SSE2 en los binarios. Cualquier GCC o ICC relativamente reciente debería ser compatible. En cuanto a su CPU, verifique la línea de banderas en/proc/cpuinfo.
Lo mejor sería, sin embargo, hacerse análisis en el código utilizando cpuid etc, para que las secciones SSE2 se puede desactivar en las CPU que no lo soportan y su código puede volver a caer en un conjunto de instrucciones más comunes .
EDIT:
Tenga en cuenta que el compilador tiene que ser un compilador nativo que se ejecuta en un sistema x86, o un compilador cruzado para x86. De lo contrario, no tendrá las opciones necesarias para compilar binarios para procesadores x86, que incluye cualquier cosa con SSE2.
En su caso, la CPU no es compatible con x86 en absoluto. Dependiendo de su distribución de Linux, puede haber paquetes con la capa de emulación Intel IA32EL para x86-software-on-IA64, que puede permitirle ejecutar software x86.
por lo tanto tiene las siguientes opciones:
utilizar un compilador cruzado que se ejecutará en IA64 y producir binarios para x86. Las cadenas de herramientas de compilación cruzada no son fáciles de configurar, porque se necesita mucho más que solo el compilador (binutils, bibliotecas, etc.).
Utilice Intel IA32EL para ejecutar un compilador x86 nativo. No sé cómo haría para instalar una cadena de herramientas x86 nativa y todas las bibliotecas que su proyecto necesita en sus distribuciones no son compatibles directamente. ¿Quizás una instalación chroot'd completa de una distribución x86?
Entonces, si quieres poner a prueba tu configuración en este sistema que tiene instalar ia32el de Intel para Linux.
Edit2:
supongo que también podría funcionar con una distribución de Linux x86 completo en un emulador como Bochs o QEMU (sin virtualización, por supuesto). Definitivamente usted no va a quedar deslumbrado por las velocidades resultantes.
Está utilizando un GCC que se dirige a IA64 por defecto. El conjunto de instrucciones IA64 es radicalmente diferente al de x86. Si desea compilar para x86, debe esencialmente compilar de forma cruzada su binario. – thkala
También tiene un procesador Itanium2, que no tiene soporte nativo para el conjunto de instrucciones x86. Incluso si haces una compilación cruzada de tu binario para x86, probarlo en este sistema será difícil, si no imposible. – thkala
¿Qué distribución de Linux está usando por cierto? – thkala