2016-12-21 Vladimir Makarov <vmakarov@redhat.com>
[official-gcc.git] / gcc / testsuite / gcc.target / i386 / pr70251.c
blob97078cd4795e3e9c66a43dd3ac644291c643f4ec
1 /* { dg-do run } */
2 /* { dg-options "-O3 -mavx512bw" } */
3 /* { dg-require-effective-target avx512bw } */
5 #define AVX512BW
6 #include "avx512f-helper.h"
8 unsigned long long int
9 hash(unsigned long long int seed, unsigned long long int v)
11 return seed ^ (v + 0x9e3779b9 + (seed<<6) + (seed>>2));
14 unsigned int a [100];
15 signed char b [100];
16 signed char c [100];
18 void
19 init ()
21 for (int i = 0; i < 100; ++i)
23 a [i] = 1000L;
24 b [i] = 10;
25 c [i] = 5;
29 void
30 foo ()
32 for (int i = 0; i < 100; ++i)
33 b [i] = (!b [i] ^ (a [i] >= b [i])) + c [i];
36 unsigned long long int
37 checksum ()
39 unsigned long long int seed = 0ULL;
40 for (int i = 0; i < 100; ++i)
41 seed = hash (seed, b[i]);
42 return seed;
45 void
46 TEST ()
48 init ();
49 foo ();
50 if (checksum () != 5785906989299578598ULL)
51 __builtin_abort ();