Bonjour,
Je manipule des vecteurs 16 bits avec les intrinsics SSE et GCC, tout fonctionne bien.
Il y a cependant une manipulation que je n'arrive pas à concrétiser : ces vecteurs 16 bits sont destinés à être affichés à l'écran en tant qu'image. Il me faut donc les convertir en vecteurs 8 bits après désaturation (je désature bien mais mon type de sortie __m128i contient toujours des integers 16 bits).
Quelqu'un connaîtrait-il la bonne méthode, tout en restant dans les registres SSE ? (pour l'instant, je fais une conversion avec une boucle accélérée openmp).
Merci
Bon, il semble que sse3 me permet
__m128i _mm_shuffle_epi8 ( __m128i a, __m128i b)
me reste plus qu'à trouver le bon masque ou la macro qui va bien.
# Une union ?
Posté par khivapia . Évalué à 2.
[^] # Re: Une union ?
Posté par tmp . Évalué à 1. Dernière modification le 22 novembre 2014 à 19:41.
Ca n'est pas tout à fait mon cas :
je me retrouve avec 2 registres __m128i contenant
et
qui doivent devenir
mais merci pour l'idée
# une solution
Posté par tmp . Évalué à 2. Dernière modification le 22 novembre 2014 à 20:09.
Bien, je pense pouvoir faire affaire avec :
[^] # Re: une solution
Posté par tmp . Évalué à 2.
et pour les plus assidus l'implémentation
[^] # Re: une solution
Posté par serge_sans_paille (site web personnel) . Évalué à 2.
Je suis curieux : vu la granularité de la boucle, OpenMP te donne des gains ?
[^] # Re: une solution
Posté par tmp . Évalué à 2.
Non, j'ai d'ailleurs supprimé la parallélisation.
[^] # Re: une solution
Posté par benoar . Évalué à 2.
Qu'est-ce que c'est moche par rapport aux intrinsics Altivec. À chaque fois que je lis du code SSE, je regrette la desparition des PPC…
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.