(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
powerpc/
conv-vectorize-1.c
       1  /* { dg-require-effective-target powerpc_vsx_ok } */
       2  /* { dg-options "-O2 -ftree-vectorize -mvsx -fno-vect-cost-model" } */
       3  
       4  /* Test vectorizer can exploit vector conversion instructions to convert
       5     unsigned/signed long long to float.  */
       6  
       7  #include <stddef.h>
       8  
       9  #define SIZE 32
      10  #define ALIGN 16
      11  
      12  float sflt_array[SIZE] __attribute__ ((__aligned__ (ALIGN)));
      13  float uflt_array[SIZE] __attribute__ ((__aligned__ (ALIGN)));
      14  
      15  unsigned long long ulong_array[SIZE] __attribute__ ((__aligned__ (ALIGN)));
      16  signed long long slong_array[SIZE] __attribute__ ((__aligned__ (ALIGN)));
      17  
      18  void
      19  convert_slong_to_float (void)
      20  {
      21    size_t i;
      22  
      23    for (i = 0; i < SIZE; i++)
      24      sflt_array[i] = (float) slong_array[i];
      25  }
      26  
      27  void
      28  convert_ulong_to_float (void)
      29  {
      30    size_t i;
      31  
      32    for (i = 0; i < SIZE; i++)
      33      uflt_array[i] = (float) ulong_array[i];
      34  }
      35  
      36  /* { dg-final { scan-assembler {\mxvcvsxdsp\M} } } */
      37  /* { dg-final { scan-assembler {\mxvcvuxdsp\M} } } */