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 init_pbroadcastq128(long long int * src,int seed)11init_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 calc_pbroadcastq128(long long int * src,long long int * dst)23calc_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 avx2_test(void)32avx2_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 } 49