1 /* Check that vector extraction works correctly. */ 2 3 /* { dg-do run } */ 4 /* { dg-options "-msse" { target { i?86-*-* x86_64-*-* } } } */ 5 /* { dg-require-effective-target sse_runtime { target { i?86-*-* x86_64-*-* } } } */ 6 /* { dg-options "-mabi=altivec" { target { powerpc-*-* powerpc64-*-* } } } */ 7 /* { dg-require-effective-target vmx_hw { target { powerpc-*-* powerpc64--*-* } } } */ 8 9 #define vector __attribute__((vector_size(16) )) 10 f0(vector int t)11int f0(vector int t) 12 { 13 return ((int*)&t)[0]; 14 } f1(vector int t)15int f1(vector int t) 16 { 17 return ((int*)&t)[1]; 18 } f2(vector int t)19int f2(vector int t) 20 { 21 return ((int*)&t)[2]; 22 } f3(vector int t)23int f3(vector int t) 24 { 25 return ((int*)&t)[3]; 26 } main(void)27int main(void) 28 { 29 vector int a = {0, 1, 2, 3}; 30 /* Make sure that we have the correct size for the vectors. */ 31 if (sizeof(int) != 4) 32 __builtin_exit (0); 33 if (f0(a) != 0) 34 __builtin_abort (); 35 if (f1(a) != 1) 36 __builtin_abort (); 37 if (f2(a) != 2) 38 __builtin_abort (); 39 if (f3(a) != 3) 40 __builtin_abort (); 41 return 0; 42 } 43