/* PR target/86036 */ /* { dg-do run } */ /* { dg-options "-O -mavx512bw" } */ /* { dg-require-effective-target avx512bw } */ #define AVX512BW #include "avx512f-helper.h" typedef unsigned short V __attribute__ ((vector_size (64))); __attribute__((noipa)) V foo (V a) { return a >= 3; } __attribute__((noipa)) V bar (V a) { return a != 0; } __attribute__((noipa)) V baz (V a) { return a == 0; } void TEST (void) { V a = (V) { 3, 17, 2, 0, 9, 1, 2, 3, 0, 0, 0, 3, 3, 3, 3, 3, 9, 16387, 9, 3, 3, 0, 0, 3, 3, 3, 0, 0, 0, 0, 3, 3 }; V b = foo (a); V c = (V) { -1, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, -1, -1, -1, 0, 0, 0, 0, -1, -1 }; if (__builtin_memcmp (&b, &c, sizeof (b))) abort (); V d = bar (a); V e = (V) { -1, -1, -1, 0, -1, -1, -1, -1, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, -1, -1, -1, 0, 0, 0, 0, -1, -1 }; if (__builtin_memcmp (&d, &e, sizeof (d))) abort (); V f = baz (a); V g = ~e; if (__builtin_memcmp (&f, &g, sizeof (f))) abort (); }