#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;
}
