/* { dg-do run } */ /* { dg-require-effective-target avx2 } */ /* { dg-options "-O2 -mavx2" } */ #include "ssse3-vals.h" #include "avx2-check.h" /* Routine to manually compute the results */ static void compute_pabs256 (int *i1, short *r) { short *b1 = (short *) i1; int i; for (i = 0; i < 16; i++) if (b1[i] < 0) r[i] = -b1[i]; else r[i] = b1[i]; } static void avx2_test (void) { int i; short ck[16]; int fail = 0; union256i_w s, d; for (i = 0; i < 256; ++i) { /* Using only first 2 bytes of int */ /* Recompute the results for 256-bits */ compute_pabs256 (&vals[i], ck); s.x = _mm256_loadu_si256 ((__m256i *) & vals[i]); /* Run the 256-bit tests */ d.x = _mm256_abs_epi16 (s.x); fail += check_union256i_w (d, ck); } if (fail != 0) abort (); }