1/* { dg-do run } */ 2/* { dg-require-effective-target avx2 } */ 3/* { dg-options "-O3 -mavx2" } */ 4 5#include <string.h> 6#include "avx2-check.h" 7 8#define N 0x5 9 10static void 11compute_psllwi256 (short *s1, short *r) 12{ 13 int i; 14 15 memset (r, 0, 32); 16 17 if (N < 16) 18 for (i = 0; i < 16; ++i) 19 r[i] = s1[i] << N; 20} 21 22 23void static 24avx2_test (void) 25{ 26 union256i_w s1, res; 27 short res_ref[16]; 28 int i, j; 29 int fail = 0; 30 31 for (i = 0; i < 10; i++) 32 { 33 for (j = 0; j < 16; j++) 34 s1.a[j] = j * i; 35 36 res.x = _mm256_slli_epi16 (s1.x, N); 37 38 compute_psllwi256 (s1.a, res_ref); 39 40 fail += check_union256i_w (res, res_ref); 41 } 42 43 if (fail != 0) 44 abort (); 45} 46