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