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_psrldi256 (int *s1, int *r) 12{ 13 int i; 14 15 memset (r, 0, 32); 16 17 if (N < 64) 18 for (i = 0; i < 8; ++i) 19 r[i] = s1[i] >> N; 20} 21 22void static 23avx2_test (void) 24{ 25 union256i_d s1, res; 26 int res_ref[8]; 27 int i, j; 28 int fail = 0; 29 30 for (i = 0; i < 10; i++) 31 { 32 for (j = 0; j < 8; j++) 33 s1.a[j] = j * i; 34 35 res.x = _mm256_srli_epi32 (s1.x, N); 36 37 compute_psrldi256 (s1.a, res_ref); 38 39 fail += check_union256i_d (res, res_ref); 40 } 41 42 if (fail != 0) 43 abort (); 44} 45