2013-06-20 8 views
0

J'essaie de porter du code qui s'exécutait sur windowsuse à opensuse 12.1. Mais j'ai un problème avec la compilation d'une section du code qui utilise l'instruction SSE. L'opensuse fonctionne sur un Intel Core i7 avec ces indicateurs: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 popcnt aes lahf_lm ida arat dts tpr_shadow vnmi flexpriority ept vpid.Je ne peux pas appeler _mm_dp_ps

La plupart des instructions SSE sont correctes, mais le compilateur ne semble pas savoir: _mm_dp_ps. Il se plaint également de __builtin_ia32_pshufd et _mm_cvtepu8_epi32.

Quelqu'un peut-il m'aider s'il vous plaît? Qu'est-ce que je rate?

+2

Avez-vous inclus les en-têtes appropriés? En outre, vous devrez peut-être spécifier un indicateur de compilation pour activer le support SSE4. –

Répondre

1

_mm_dp_ps et _mm_cvtepu8_epi32 sont tous les deux SSE4.1 - donc vous avez besoin:

#include <smmintrin.h> // SSE 4.1 intrinsics 

et vous devez également compiler avec:

$ gcc -msse4.1 ... 
+0

Paul, merci pour une réponse rapide. J'ai les drapeaux include et compile, mais le compilateur est toujours incapable de le trouver. – ABS

+0

Avez-vous d'autres avertissements ou erreurs avant les erreurs pour les intrinsèques? Par exemple. pour les fichiers #include manquants? –

+0

Il y a des avertissements, mais aucun dans la fonction qui appelle ces fonctions. – ABS