/* { dg-require-effective-target powerpc_vsx_ok } */
/* { dg-options "-O2 -ftree-vectorize -mvsx -fno-vect-cost-model" } */

/* Test vectorizer can exploit vector conversion instructions to convert
   float to unsigned/signed long long.  */

#include <stddef.h>

#define SIZE 32
#define ALIGN 16

float sflt_array[SIZE] __attribute__ ((__aligned__ (ALIGN)));
float uflt_array[SIZE] __attribute__ ((__aligned__ (ALIGN)));

unsigned long long ulong_array[SIZE] __attribute__ ((__aligned__ (ALIGN)));
signed long long slong_array[SIZE] __attribute__ ((__aligned__ (ALIGN)));

void
convert_float_to_slong (void)
{
  size_t i;

  for (i = 0; i < SIZE; i++)
    slong_array[i] = (signed long long) sflt_array[i];
}

void
convert_float_to_ulong (void)
{
  size_t i;

  for (i = 0; i < SIZE; i++)
    ulong_array[i] = (unsigned long long) uflt_array[i];
}

/* { dg-final { scan-assembler {\mxvcvspsxds\M} } } */
/* { dg-final { scan-assembler {\mxvcvspuxds\M} } } */
