42 lines
1.0 KiB
C
42 lines
1.0 KiB
C
|
#include <altivec.h>
|
||
|
#include <stdio.h>
|
||
|
|
||
|
vector unsigned int
|
||
|
vector_fun (vector unsigned int a, vector unsigned int b)
|
||
|
{
|
||
|
vector unsigned int c;
|
||
|
a = ((vector unsigned int) vec_splat_u8(2));
|
||
|
b = ((vector unsigned int) vec_splat_u8(3));
|
||
|
|
||
|
c = vec_add (a, b);
|
||
|
return c;
|
||
|
}
|
||
|
|
||
|
int
|
||
|
main ()
|
||
|
{
|
||
|
vector unsigned int y;
|
||
|
vector unsigned int x;
|
||
|
vector unsigned int z;
|
||
|
int a;
|
||
|
|
||
|
/* This line may look unnecessary but we do need it, because we want to
|
||
|
have a line to do a next over (so that gdb refetches the registers)
|
||
|
and we don't want the code to change any vector registers.
|
||
|
The splat operations below modify the VRs,i
|
||
|
so we don't want to execute them yet. */
|
||
|
a = 9;
|
||
|
x = ((vector unsigned int) vec_splat_u8 (-2));
|
||
|
y = ((vector unsigned int) vec_splat_u8 (1));
|
||
|
|
||
|
z = vector_fun (x, y);
|
||
|
x = vec_sld (x,y,2);
|
||
|
|
||
|
x = vec_add (x, ((vector unsigned int){5,6,7,8}));
|
||
|
z = (vector unsigned int) vec_splat_u8 ( -2);
|
||
|
y = vec_add (x, z);
|
||
|
z = (vector unsigned int) vec_cmpeq (x,y);
|
||
|
|
||
|
return 0;
|
||
|
}
|