aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpaddusb-2.c
blob: 68ad4f03fe5bb34dbba647d0d23cf4f8dabb2486 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
/* { dg-do run } */
/* { dg-options "-mavx2 -O2" } */
/* { dg-require-effective-target avx2 } */

#include "avx2-check.h"

void static
avx2_test (void)
{
  union256i_b u, s1, s2;
  unsigned char e[32];
  unsigned i, tmp;

  s1.x = _mm256_set_epi8 (1, 2, 3, 4, 10, 20, 30, 90, 80, 40, 100, 15,
			  98, 25, 98, 7, 88, 44, 33, 22, 11, 98, 76,
			  200, 34, 78, 39, 6, 3, 4, 5, 119);

  s2.x = _mm256_set_epi8 (88, 44, 33, 220, 11, 98, 76, 100, 34, 78, 39,
			  6, 3, 4, 5, 219, 1, 2, 3, 4, 10, 20, 30, 90,
			  80, 40, 100, 15, 98, 25, 98, 7);

  u.x = _mm256_adds_epu8 (s1.x, s2.x);

  for (i = 0; i < 32; i++)
    {
      tmp = (unsigned char) s1.a[i] + (unsigned char) s2.a[i];

      if (tmp > 255)
	tmp = 255;

      e[i] = tmp;
    }

  if (check_union256i_b (u, e))
    abort ();
}