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