Pen^2 Le 06/04/2009 à 09:21 est ce que __m64 est bien défini qq part ? pb d'include ? je dis ça parce qu'il me semble qu'integer est le type par défaut ?
et 0x8080808080808080L ?
J'ai essayé ceci:
unsigned long long m128 __attribute__((vector_size(16)));
m128 = (unsigned long long __attribute__((vector_size(16)))) {0x8080808080808080ULL, 0x8080808080808080ULL};
//char to uchar
even = _mm_add_pi8(even, m128);
Et j'obtiens comme erreur:
haar.h:66: error: cannot convert `long long unsigned int __vector__' to `int __vector__' for argument `2' to `int __vector__ _mm_add_pi8(int __vector__, int __vector__)'
Je commence à déprimer là.
Et avec :
__m64 m128;
m128 = (int __attribute__((vector_size(16)))) {0x8080808080808080ULL, 0x8080808080808080ULL};
Alors là cerise sur le gâteau :
haar.h:62: error: cannot convert `int __vector__' to `int __vector__' in assignment
C'est écrit en C donc c'est fait automatiquement.
Le problème est résolu il suffisait tout simplement d'écrire.
m01 = _mm_set_pi8(0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01);
Néanmoins, la compilation en mode debug avec gdb fait planter le programme. On dirait que GDB n'aime pas quand on utilise du MMX.