(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
i386/
pr106010-4b.c
       1  /* { dg-do run } */
       2  /* { dg-options "-O2 -mavx -ftree-vectorize -fvect-cost-model=unlimited -mprefer-vector-width=256" } */
       3  /* { dg-require-effective-target avx } */
       4  
       5  #include "avx-check.h"
       6  #include <string.h>
       7  #include "pr106010-4a.c"
       8  
       9  void
      10  avx_test (void)
      11  {
      12    _Complex double* pd_src = (_Complex double*) malloc (32);
      13    _Complex double* pd_dst = (_Complex double*) malloc (32);
      14    _Complex float* ps_src = (_Complex float*) malloc (32);
      15    _Complex float* ps_dst = (_Complex float*) malloc (32);
      16    _Complex long long* epi64_src = (_Complex long long*) malloc (32);
      17    _Complex long long* epi64_dst = (_Complex long long*) malloc (32);
      18    _Complex int* epi32_src = (_Complex int*) malloc (32);
      19    _Complex int* epi32_dst = (_Complex int*) malloc (32);
      20    _Complex short* epi16_src = (_Complex short*) malloc (32);
      21    _Complex short* epi16_dst = (_Complex short*) malloc (32);
      22    _Complex char* epi8_src = (_Complex char*) malloc (32);
      23    _Complex char* epi8_dst = (_Complex char*) malloc (32);
      24    char* p = (char* ) malloc (32);
      25  
      26    __builtin_memset (pd_dst, 0, 32);
      27    __builtin_memset (ps_dst, 0, 32);
      28    __builtin_memset (epi64_dst, 0, 32);
      29    __builtin_memset (epi32_dst, 0, 32);
      30    __builtin_memset (epi16_dst, 0, 32);
      31    __builtin_memset (epi8_dst, 0, 32);
      32  
      33    for (int i = 0; i != 32; i++)
      34      p[i] = i;
      35    __builtin_memcpy (pd_src, p, 32);
      36    __builtin_memcpy (ps_src, p, 32);
      37    __builtin_memcpy (epi64_src, p, 32);
      38    __builtin_memcpy (epi32_src, p, 32);
      39    __builtin_memcpy (epi16_src, p, 32);
      40    __builtin_memcpy (epi8_src, p, 32);
      41  
      42    foo_pd (pd_dst, pd_src[0], pd_src[1]);
      43    foo_ps (ps_dst, ps_src[0], ps_src[1], ps_src[2], ps_src[3]);
      44    foo_epi64 (epi64_dst, epi64_src[0], epi64_src[1]);
      45    foo_epi32 (epi32_dst, epi32_src[0], epi32_src[1], epi32_src[2], epi32_src[3]);
      46    foo_epi16 (epi16_dst, epi16_src[0], epi16_src[1], epi16_src[2], epi16_src[3],
      47  	     epi16_src[4], epi16_src[5], epi16_src[6], epi16_src[7]);
      48    foo_epi8 (epi8_dst, epi8_src[0], epi8_src[1], epi8_src[2], epi8_src[3],
      49  	    epi8_src[4], epi8_src[5], epi8_src[6], epi8_src[7],
      50  	    epi8_src[8], epi8_src[9], epi8_src[10], epi8_src[11],
      51  	    epi8_src[12], epi8_src[13], epi8_src[14], epi8_src[15]);
      52  
      53    if (__builtin_memcmp (pd_dst, pd_src, 32) != 0)
      54      __builtin_abort ();
      55    if (__builtin_memcmp (ps_dst, ps_src, 32) != 0)
      56      __builtin_abort ();
      57    if (__builtin_memcmp (epi64_dst, epi64_src, 32) != 0)
      58      __builtin_abort ();
      59    if (__builtin_memcmp (epi32_dst, epi32_src, 32) != 0)
      60      __builtin_abort ();
      61    if (__builtin_memcmp (epi16_dst, epi16_src, 32) != 0)
      62      __builtin_abort ();
      63    if (__builtin_memcmp (epi8_dst, epi8_src, 32) != 0)
      64      __builtin_abort ();
      65  
      66    return;
      67  }