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

#ifdef IN_MPERS

# error static const struct xlat bpf_op_alu in mpers mode

#else

static
const struct xlat bpf_op_alu[] = {
#if defined(BPF_ADD) || (defined(HAVE_DECL_BPF_ADD) && HAVE_DECL_BPF_ADD)
  XLAT(BPF_ADD),
#endif
#if defined(BPF_SUB) || (defined(HAVE_DECL_BPF_SUB) && HAVE_DECL_BPF_SUB)
  XLAT(BPF_SUB),
#endif
#if defined(BPF_MUL) || (defined(HAVE_DECL_BPF_MUL) && HAVE_DECL_BPF_MUL)
  XLAT(BPF_MUL),
#endif
#if defined(BPF_DIV) || (defined(HAVE_DECL_BPF_DIV) && HAVE_DECL_BPF_DIV)
  XLAT(BPF_DIV),
#endif
#if defined(BPF_OR) || (defined(HAVE_DECL_BPF_OR) && HAVE_DECL_BPF_OR)
  XLAT(BPF_OR),
#endif
#if defined(BPF_AND) || (defined(HAVE_DECL_BPF_AND) && HAVE_DECL_BPF_AND)
  XLAT(BPF_AND),
#endif
#if defined(BPF_LSH) || (defined(HAVE_DECL_BPF_LSH) && HAVE_DECL_BPF_LSH)
  XLAT(BPF_LSH),
#endif
#if defined(BPF_RSH) || (defined(HAVE_DECL_BPF_RSH) && HAVE_DECL_BPF_RSH)
  XLAT(BPF_RSH),
#endif
#if defined(BPF_NEG) || (defined(HAVE_DECL_BPF_NEG) && HAVE_DECL_BPF_NEG)
  XLAT(BPF_NEG),
#endif
#if defined(BPF_MOD) || (defined(HAVE_DECL_BPF_MOD) && HAVE_DECL_BPF_MOD)
  XLAT(BPF_MOD),
#endif
#if defined(BPF_XOR) || (defined(HAVE_DECL_BPF_XOR) && HAVE_DECL_BPF_XOR)
  XLAT(BPF_XOR),
#endif
#if defined(BPF_MOV) || (defined(HAVE_DECL_BPF_MOV) && HAVE_DECL_BPF_MOV)
  XLAT(BPF_MOV),
#endif
#if defined(BPF_ARSH) || (defined(HAVE_DECL_BPF_ARSH) && HAVE_DECL_BPF_ARSH)
  XLAT(BPF_ARSH),
#endif
 XLAT_END
};

#endif /* !IN_MPERS */
