(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
i386/
avx2-vpbroadcastq256-2.c
       1  /* { dg-do run } */
       2  /* { dg-options "-mavx2 -O2" } */
       3  /* { dg-require-effective-target avx2 } */
       4  
       5  #include "avx2-check.h"
       6  #include <string.h>
       7  
       8  #define NUM 10
       9  
      10  static void
      11  init_pbroadcastq256 (long long int *src, int seed)
      12  {
      13    int i, sign = 1;
      14  
      15    for (i = 0; i < 2; i++)
      16      {
      17        src[i] = (i + seed) * (i + seed) * sign;
      18        sign = -sign;
      19      }
      20  }
      21  
      22  static void
      23  calc_pbroadcastq256 (long long int *src, long long int *dst)
      24  {
      25    int i;
      26  
      27    for (i = 0; i < 4; i++)
      28      dst[i] = src[0];
      29  }
      30  
      31  static void
      32  avx2_test (void)
      33  {
      34    union128i_q src;
      35    union256i_q dst;
      36    long long int dst_ref[4];
      37    int i;
      38  
      39    for (i = 0; i < NUM; i++)
      40      {
      41        init_pbroadcastq256 (src.a, i);
      42  
      43        dst.x = _mm256_broadcastq_epi64 (src.x);
      44        calc_pbroadcastq256 (src.a, dst_ref);
      45  
      46        if (check_union256i_q (dst, dst_ref))
      47  	abort ();
      48      }
      49  }