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_pbroadcastq128 (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_pbroadcastq128 (long long int *src, long long int *dst)
      24  {
      25    int i;
      26  
      27    for (i = 0; i < 2; i++)
      28      dst[i] = src[0];
      29  }
      30  
      31  static void
      32  avx2_test (void)
      33  {
      34    union128i_q src, dst;
      35    long long int dst_ref[2];
      36    int i;
      37  
      38    for (i = 0; i < NUM; i++)
      39      {
      40        init_pbroadcastq128 (src.a, i);
      41  
      42        dst.x = _mm_broadcastq_epi64 (src.x);
      43        calc_pbroadcastq128 (src.a, dst_ref);
      44  
      45        if (check_union128i_q (dst, dst_ref))
      46  	abort ();
      47      }
      48  }