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_pbroadcastw256(short * src,int seed)11init_pbroadcastw256 (short *src, int seed) 12 { 13 int i, sign = 1; 14 15 for (i = 0; i < 8; i++) 16 { 17 src[i] = (i + seed) * (i + seed) * sign; 18 sign = -sign; 19 } 20 } 21 22 static void calc_pbroadcastw256(short * src,short * dst)23calc_pbroadcastw256 (short *src, short *dst) 24 { 25 int i; 26 27 for (i = 0; i < 16; i++) 28 dst[i] = src[0]; 29 } 30 31 static void avx2_test(void)32avx2_test (void) 33 { 34 union128i_w src; 35 union256i_w dst; 36 short dst_ref[16]; 37 int i; 38 39 for (i = 0; i < NUM; i++) 40 { 41 init_pbroadcastw256 (src.a, i); 42 43 dst.x = _mm256_broadcastw_epi16 (src.x); 44 calc_pbroadcastw256 (src.a, dst_ref); 45 46 if (check_union256i_w (dst, dst_ref)) 47 abort (); 48 } 49 } 50