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

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

#if defined(PR_FP_MODE_FR) || (defined(HAVE_DECL_PR_FP_MODE_FR) && HAVE_DECL_PR_FP_MODE_FR)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((PR_FP_MODE_FR) == ((1 << 0)), "PR_FP_MODE_FR != (1 << 0)");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define PR_FP_MODE_FR (1 << 0)
#endif
#if defined(PR_FP_MODE_FRE) || (defined(HAVE_DECL_PR_FP_MODE_FRE) && HAVE_DECL_PR_FP_MODE_FRE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((PR_FP_MODE_FRE) == ((1 << 1)), "PR_FP_MODE_FRE != (1 << 1)");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define PR_FP_MODE_FRE (1 << 1)
#endif

#ifndef XLAT_MACROS_ONLY

# ifdef IN_MPERS

#  error static const struct xlat pr_fp_mode in mpers mode

# else

static
const struct xlat pr_fp_mode[] = {
 XLAT(PR_FP_MODE_FR),
 XLAT(PR_FP_MODE_FRE),
 XLAT_END
};

# endif /* !IN_MPERS */

#endif /* !XLAT_MACROS_ONLY */
