/* Generated by ./xlat/gen.sh from ./xlat/futexwakeops.in; do not edit. */

#include "gcc_compat.h"
#include "static_assert.h"

#if defined(FUTEX_OP_SET) || (defined(HAVE_DECL_FUTEX_OP_SET) && HAVE_DECL_FUTEX_OP_SET)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((FUTEX_OP_SET) == (0), "FUTEX_OP_SET != 0");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define FUTEX_OP_SET 0
#endif
#if defined(FUTEX_OP_ADD) || (defined(HAVE_DECL_FUTEX_OP_ADD) && HAVE_DECL_FUTEX_OP_ADD)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((FUTEX_OP_ADD) == (1), "FUTEX_OP_ADD != 1");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define FUTEX_OP_ADD 1
#endif
#if defined(FUTEX_OP_OR) || (defined(HAVE_DECL_FUTEX_OP_OR) && HAVE_DECL_FUTEX_OP_OR)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((FUTEX_OP_OR) == (2), "FUTEX_OP_OR != 2");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define FUTEX_OP_OR 2
#endif
#if defined(FUTEX_OP_ANDN) || (defined(HAVE_DECL_FUTEX_OP_ANDN) && HAVE_DECL_FUTEX_OP_ANDN)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((FUTEX_OP_ANDN) == (3), "FUTEX_OP_ANDN != 3");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define FUTEX_OP_ANDN 3
#endif
#if defined(FUTEX_OP_XOR) || (defined(HAVE_DECL_FUTEX_OP_XOR) && HAVE_DECL_FUTEX_OP_XOR)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((FUTEX_OP_XOR) == (4), "FUTEX_OP_XOR != 4");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define FUTEX_OP_XOR 4
#endif

#ifndef XLAT_MACROS_ONLY

# ifdef IN_MPERS

#  error static const struct xlat futexwakeops in mpers mode

# else

static
const struct xlat futexwakeops[] = {
 XLAT(FUTEX_OP_SET),
 XLAT(FUTEX_OP_ADD),
 XLAT(FUTEX_OP_OR),
 XLAT(FUTEX_OP_ANDN),
 XLAT(FUTEX_OP_XOR),
 XLAT_END
};

# endif /* !IN_MPERS */

#endif /* !XLAT_MACROS_ONLY */
