/* { dg-options "-O2 -ftree-vectorize -mvsx -fno-vect-cost-model" } */ /* { dg-require-effective-target powerpc_vsx } */ /* Test vectorizer can exploit vector conversion instructions to convert unsigned/signed long long to float. */ #include #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_slong_to_float (void) { size_t i; for (i = 0; i < SIZE; i++) sflt_array[i] = (float) slong_array[i]; } void convert_ulong_to_float (void) { size_t i; for (i = 0; i < SIZE; i++) uflt_array[i] = (float) ulong_array[i]; } /* { dg-final { scan-assembler {\mxvcvsxdsp\M} } } */ /* { dg-final { scan-assembler {\mxvcvuxdsp\M} } } */