Sono entrambi. Il compilatore/assemblatore deve essere in grado di emettere/gestire le istruzioni SSE2 e quindi la CPU deve supportarle. Se il tuo binario contiene istruzioni SSE2 senza condizioni e provi a eseguirlo su un Pentium II sei sfortunato.
Il modo migliore è controllare il manuale GCC. Ad esempio la mia manpage GCC fa riferimento all'opzione -msse2 che consente di abilitare esplicitamente le istruzioni SSE2 nei binari. Qualsiasi GCC o ICC relativamente recente dovrebbe supportarlo. Per quanto riguarda la tua CPU, controlla la riga delle bandiere in/proc/cpuinfo.
Sarebbe meglio, però, di avere controlli nel codice utilizzando CPUID, ecc, in modo che le sezioni SSE2 possono essere disabilitate nelle CPU che non supportano e il codice può ripiegare su un set di istruzioni più comune .
EDIT:
Si noti che il compilatore ha bisogno di essere un compilatore nativo in esecuzione su un sistema x86, o di un cross-compilatore per x86. Altrimenti non avrà le opzioni necessarie per compilare i binari per i processori x86, che include qualsiasi cosa con SSE2.
Nel tuo caso la CPU non supporta affatto x86. A seconda della distribuzione Linux, potrebbero esserci pacchetti con il livello di emulazione Intel IA32EL per x86-software-on-IA64, che potrebbe consentire l'esecuzione del software x86.
Pertanto sono disponibili le seguenti opzioni:
utilizzare un cross-compilatore che verrà eseguito su IA64 e produrre file binari per x86. Tuttavia, i toolchain cross-compiler non sono una cosa facile da configurare, perché è necessario molto più del semplice compilatore (binutils, librerie, ecc.).
Utilizzare Intel IA32EL per eseguire un compilatore x86 nativo. Non so come andresti sull'installazione di una toolchain nativa x86 e tutte le librerie che il tuo progetto ha bisogno nelle tue distribuzioni non la supportano direttamente. Forse un'installazione chroot completa di una distribuzione x86?
Poi, se si desidera verificare il vostro costruire su questo sistema si deve installare ia32el di Intel per Linux.
EDIT2:
Immagino che si potrebbe anche eseguire una distribuzione Linux x86 completo su un emulatore come Bochs o QEMU (senza virtualizzazione naturalmente). Sei sicuramente non andando ad essere abbagliato dalle velocità risultanti però.
Si sta utilizzando un GCC che si rivolge a IA64 per impostazione predefinita. Il set di istruzioni IA64 è radicalmente diverso da quello x86. Se vuoi compilare per x86 devi essenzialmente compilare a croce il tuo binario. – thkala
Hai anche un processore Itanium2, che non ha supporto nativo per il set di istruzioni x86. Anche se esegui la compilazione incrociata del tuo binario per x86, testarlo su questo sistema sarà difficile, se non impossibile. – thkala
Quale distribuzione Linux stai usando? – thkala