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