This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include<stdio.h> | |
union vint{ | |
int __attribute__((vector_size(16))) v; | |
int b[4]; | |
}; | |
int main() | |
{ | |
int arr[]={1,2,3,4,5,6,7,8}; | |
int __attribute__((vector_size(16))) *a,*b; | |
union vint c; | |
a=arr; | |
b=arr+4; | |
c.v= *a + *b; | |
printf("%d %d %d %d\n",c.b[0],c.b[1],c.b[2],c.b[3] ); | |
printf("size=%d",sizeof(c)); | |
return 0; | |
} |
Burada dikkat edilmesi gereken, vector_size parantezindeki sayı, vektördeki değişlen sayısını değil, vektörün bayt cinsinden toplam büyüklüğünü verir. Bu yüzden kodun doğru çalışması, üzerinde çalıştığınız donanıma bağlı.