| /* { dg-do run } */ |
| /* { dg-options "-O3 -mavx512bw" } */ |
| /* { dg-require-effective-target avx512bw } */ |
| |
| #define AVX512BW |
| #include "avx512f-helper.h" |
| |
| unsigned long long int |
| hash(unsigned long long int seed, unsigned long long int v) |
| { |
| return seed ^ (v + 0x9e3779b9 + (seed<<6) + (seed>>2)); |
| } |
| |
| unsigned int a [100]; |
| signed char b [100]; |
| signed char c [100]; |
| |
| void |
| init () |
| { |
| for (int i = 0; i < 100; ++i) |
| { |
| a [i] = 1000L; |
| b [i] = 10; |
| c [i] = 5; |
| } |
| } |
| |
| void |
| foo () |
| { |
| for (int i = 0; i < 100; ++i) |
| b [i] = (!b [i] ^ (a [i] >= b [i])) + c [i]; |
| } |
| |
| unsigned long long int |
| checksum () |
| { |
| unsigned long long int seed = 0ULL; |
| for (int i = 0; i < 100; ++i) |
| seed = hash (seed, b[i]); |
| return seed; |
| } |
| |
| void |
| TEST () |
| { |
| init (); |
| foo (); |
| if (checksum () != 5785906989299578598ULL) |
| __builtin_abort (); |
| } |