/* { dg-do compile { target { powerpc*-*-* } } } */
/* { dg-skip-if "" { powerpc*-*-darwin* } } */
/* { dg-require-effective-target powerpc_p8vector_ok } */
/* { dg-options "-mdejagnu-cpu=power8 -O2 -fno-math-errno" } */

float abs_sf (float *p)
{
  float f = *p;
  __asm__ ("# reg %x0" : "+v" (f));
  return __builtin_fabsf (f);
}

float nabs_sf (float *p)
{
  float f = *p;
  __asm__ ("# reg %x0" : "+v" (f));
  return - __builtin_fabsf (f);
}

float neg_sf (float *p)
{
  float f = *p;
  __asm__ ("# reg %x0" : "+v" (f));
  return - f;
}

float add_sf (float *p, float *q)
{
  float f1 = *p;
  float f2 = *q;
  __asm__ ("# reg %x0, %x1" : "+v" (f1), "+v" (f2));
  return f1 + f2;
}

float sub_sf (float *p, float *q)
{
  float f1 = *p;
  float f2 = *q;
  __asm__ ("# reg %x0, %x1" : "+v" (f1), "+v" (f2));
  return f1 - f2;
}

float mul_sf (float *p, float *q)
{
  float f1 = *p;
  float f2 = *q;
  __asm__ ("# reg %x0, %x1" : "+v" (f1), "+v" (f2));
  return f1 * f2;
}

float div_sf (float *p, float *q)
{
  float f1 = *p;
  float f2 = *q;
  __asm__ ("# reg %x0, %x1" : "+v" (f1), "+v" (f2));
  return f1 / f2;
}

float sqrt_sf (float *p)
{
  float f = *p;
  __asm__ ("# reg %x0" : "+v" (f));
  return __builtin_sqrtf (f);
}


double abs_df (double *p)
{
  double d = *p;
  __asm__ ("# reg %x0" : "+v" (d));
  return __builtin_fabs (d);
}

double nabs_df (double *p)
{
  double d = *p;
  __asm__ ("# reg %x0" : "+v" (d));
  return - __builtin_fabs (d);
}

double neg_df (double *p)
{
  double d = *p;
  __asm__ ("# reg %x0" : "+v" (d));
  return - d;
}

double add_df (double *p, double *q)
{
  double d1 = *p;
  double d2 = *q;
  __asm__ ("# reg %x0, %x1" : "+v" (d1), "+v" (d2));
  return d1 + d2;
}

double sub_df (double *p, double *q)
{
  double d1 = *p;
  double d2 = *q;
  __asm__ ("# reg %x0, %x1" : "+v" (d1), "+v" (d2));
  return d1 - d2;
}

double mul_df (double *p, double *q)
{
  double d1 = *p;
  double d2 = *q;
  __asm__ ("# reg %x0, %x1" : "+v" (d1), "+v" (d2));
  return d1 * d2;
}

double div_df (double *p, double *q)
{
  double d1 = *p;
  double d2 = *q;
  __asm__ ("# reg %x0, %x1" : "+v" (d1), "+v" (d2));
  return d1 / d2;
}

double sqrt_df (float *p)
{
  double d = *p;
  __asm__ ("# reg %x0" : "+v" (d));
  return __builtin_sqrt (d);
}

/* { dg-final { scan-assembler "xsabsdp"  } } */
/* { dg-final { scan-assembler "xsadddp"  } } */
/* { dg-final { scan-assembler "xsaddsp"  } } */
/* { dg-final { scan-assembler "xsdivdp"  } } */
/* { dg-final { scan-assembler "xsdivsp"  } } */
/* { dg-final { scan-assembler "xsmuldp"  } } */
/* { dg-final { scan-assembler "xsmulsp"  } } */
/* { dg-final { scan-assembler "xsnabsdp" } } */
/* { dg-final { scan-assembler "xsnegdp"  } } */
/* { dg-final { scan-assembler "xssqrtdp" } } */
/* { dg-final { scan-assembler "xssqrtsp" } } */
/* { dg-final { scan-assembler "xssubdp"  } } */
/* { dg-final { scan-assembler "xssubsp"  } } */
