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