imprimer un __m128i variable

Je suis en train d'apprendre à coder à l'aide de intrinsèques et ci-dessous est un code qui n'est plus

compiler used: icc

#include<stdio.h>
#include<emmintrin.h>
int main()
{
        __m128i a = _mm_set_epi32(1,2,3,4);
        __m128i b = _mm_set_epi32(1,2,3,4);
        __m128i c;
        c = _mm_add_epi32(a,b);
        printf("%d\n",c[2]);
        return 0;
}

J'obtiens l'erreur ci-dessous:

test.c(9): error: expression must have pointer-to-object type
        printf("%d\n",c[2]);

Comment puis-je imprimer les valeurs de la variable c qui est de type __m128i

Notez également que __m128i n'a aucune info sur le type qui est stockée. Il pourrait être de 8 bits entiers, 16 bits entiers, 32-bit, etc... Certains compilateurs soutenir le .m128i_i32 terrain extensions. Mais ce n'est certainement pas la norme et non pas dans GCC.
lié au titre: comment faire pour imprimer __uint128_t nombre à l'aide de gcc?
Notez que certains compilateurs ont intégré dans les printf de soutien pour SIMD types, par exemple d'Apple versions de gcc, clang, etc, tout le soutien %vld pour l'impression d'un __m128i 4 x 32 bits entiers.
Je suis en utilisant le compilateur intel
Est il possible de le faire masqués de plus. Dire que j'aimerais stocker uniquement l'autre des éléments (c[0],c[2])?

OriginalL'auteur arunmoezhi | 2012-11-06