/* { dg-do compile { target lp64 } } */
/* { dg-require-effective-target powerpc_p9vector_ok } */
/* { dg-options "-mdejagnu-cpu=power9 -O2" } */

/* Note that for unsigned cases, the differences from those ones in
   p9-fpcvt-2.c is that they will be converted to int implicitly first
   and then to floating point.  */

double sc_df (signed char    *p, double df) { return *p + df; }
double uc_df (unsigned char  *p, double df) { return *p + df; }
double ss_df (signed short   *p, double df) { return *p + df; }
double us_df (unsigned short *p, double df) { return *p + df; }

float sc_sf (signed char    *p, float sf) { return *p + sf; }
float uc_sf (unsigned char  *p, float sf) { return *p + sf; }
float ss_sf (signed short   *p, float sf) { return *p + sf; }
float us_sf (unsigned short *p, float sf) { return *p + sf; }

/* { dg-final { scan-assembler     {\mlxsibzx\M}  } } */
/* { dg-final { scan-assembler     {\mlxsihzx\M}  } } */
/* { dg-final { scan-assembler     {\mvextsb2d\M} } } */
/* { dg-final { scan-assembler     {\mvextsh2d\M} } } */
/* { dg-final { scan-assembler-not {\mm[tf]vsr}   } } */
