1/* { dg-do run } */ 2/* { dg-require-effective-target avx2 } */ 3/* { dg-options "-O2 -mavx2" } */ 4 5#include "ssse3-vals.h" 6#include "avx2-check.h" 7 8/* Routine to manually compute the results */ 9static void 10compute_pabs256 (int *i1, char *r) 11{ 12 char *b1 = (char *) i1; 13 int i; 14 15 for (i = 0; i < 32; i++) 16 if (b1[i] < 0) 17 r[i] = -b1[i]; 18 else 19 r[i] = b1[i]; 20} 21 22static void 23avx2_test (void) 24{ 25 int i; 26 char ck[32]; 27 int fail = 0; 28 29 union256i_b s, d; 30 31 for (i = 0; i < 256; ++i) 32 { 33 /* Recompute the results for 256-bits */ 34 compute_pabs256 (&vals[i], ck); 35 36 s.x = _mm256_loadu_si256 ((__m256i *) & vals[i]); 37 38 /* Run the 256-bit tests */ 39 d.x = _mm256_abs_epi8 (s.x); 40 41 fail += check_union256i_b (d, ck); 42 } 43 44 if (fail != 0) 45 abort (); 46} 47