1*b725ae77Skettenis #include <spe.h>
2*b725ae77Skettenis #include <stdio.h>
3*b725ae77Skettenis 
4*b725ae77Skettenis #define vector __attribute__((vector_size(8)))
5*b725ae77Skettenis 
6*b725ae77Skettenis 
7*b725ae77Skettenis vector int
vector_fun(vector int a,vector int b)8*b725ae77Skettenis vector_fun (vector int a, vector int b)
9*b725ae77Skettenis {
10*b725ae77Skettenis   vector int c;
11*b725ae77Skettenis   a = (vector int) __ev_create_s32 (2, 2);
12*b725ae77Skettenis   b = (vector int) __ev_create_s32 (3, 3);
13*b725ae77Skettenis 
14*b725ae77Skettenis   c = __ev_and (a, b);
15*b725ae77Skettenis   return c;
16*b725ae77Skettenis }
17*b725ae77Skettenis 
18*b725ae77Skettenis int
main()19*b725ae77Skettenis main ()
20*b725ae77Skettenis {
21*b725ae77Skettenis   vector int y;
22*b725ae77Skettenis   vector int x;
23*b725ae77Skettenis   vector int z;
24*b725ae77Skettenis   int a;
25*b725ae77Skettenis 
26*b725ae77Skettenis   /* This line may look unnecessary but we do need it, because we want to
27*b725ae77Skettenis      have a line to do a next over (so that gdb refetches the registers)
28*b725ae77Skettenis      and we don't want the code to change any vector registers.
29*b725ae77Skettenis      The splat operations below modify the VRs,
30*b725ae77Skettenis      so we don't want to execute them yet.  */
31*b725ae77Skettenis   a = 9;
32*b725ae77Skettenis   x = (vector int) __ev_create_s32 (-2, -2);
33*b725ae77Skettenis   y = (vector int) __ev_create_s32 (1, 1);
34*b725ae77Skettenis 
35*b725ae77Skettenis   z = vector_fun (x, y);
36*b725ae77Skettenis 
37*b725ae77Skettenis   return 0;
38*b725ae77Skettenis }
39