C: Utilisation insortingnsèque d’Intel x86 de _mm_log2_ps () -> erreur: type incompatible ‘int’

J’essaie d’appliquer le log2 sur une variable __m128. Comme ça:

#include  int main (void) { __m128 two_v = {2.0, 2.0, 2.0, 2.0}; __m128 log2_v = _mm_log2_ps(two_v); // log_2 := log(2) return 0; } 

Essayer de comstackr cela retourne cette erreur:

 error: initializing '__m128' with an expression of incompatible type 'int' __m128 log2_v = _mm_log2_ps(two_v); // log_2 := log(2) ^ ~~~~~~~~~~~~~~~~~~ 

Comment puis-je le réparer?

Les imminsortingn.h que vous examinez et imminsortingn.h utilisés pour la compilation sont différents. Vous recherchez probablement un en-tête spécifique à Intel (par exemple, /opt/intel/include/imminsortingn.h), tandis que votre compilateur utilise le paramètre par défaut imminsortingn.h

Comme il a été correctement dit, extern __m128 _mm_log2_ps(__m128 v1) est une routine SVML . La première solution que je vois est donc d’utiliser Intel Comstackr . Pour le développement non commercial, c’est gratuit pour Linux.

Bien que vous puissiez spécifier le chemin d’inclusion de votre fichier personnalisé imminsortingn.h comme premier argument lors de la compilation avec un compilateur différent, je pense que vous obtiendrez trop d’erreurs, simplement parce que cet en-tête est spécifique à Intel.