#ifndef TEST_ARITH_DEF
#define TEST_ARITH_DEF

#define XSTR(s) STR(s)
#define STR(s) #s

#define UINTOP_TABLE \
  /* inst, operator, div */ \
  X(Add,   +,        0 )    \
  X(Sub,   -,        0 )    \
  X(Mul,   *,        0 )    \
  X(Udiv,  /,        1 )    \
  X(Urem,  %,        1 )    \
  X(Shl,   <<,       0)     \
  X(Lshr,  >>,       0)     \
  X(And,   &,        0 )    \
  X(Or,    |,        0 )    \
  X(Xor,   ^,        0 )    \
//#define X(inst, op, isdiv)

#define SINTOP_TABLE \
  /* inst, operator, div */ \
  X(Sdiv,  /,        1)     \
  X(Srem,  %,        1)     \
  X(Ashr,  >>,       0)     \
//#define X(inst, op, isdiv)

#define COMMA ,
#define FPOP_TABLE \
  /* inst, infix_op, func */ \
  X(Fadd,  +,              ) \
  X(Fsub,  -,              ) \
  X(Fmul,  *,              ) \
  X(Fdiv,  /,              ) \
  X(Frem,  COMMA,    myFrem) \
//#define X(inst, op, func)

// Note: The above definition of COMMA, plus the "func" argument to
// the X macro, are because C++ does not allow the % operator on
// floating-point primitive types.  To work around this, the expansion
// is "func(a infix_op b)", which becomes "myFrem(a , b)" for the Frem
// instruction and "(a + b)" for the Fadd instruction.  The two
// versions of myFrem() are defined in a separate bitcode file.

#define INT_VALUE_ARRAY                           \
{ 0x0,        0x1,        0x7ffffffe, 0x7fffffff, \
  0x80000000, 0x80000001, 0xfffffffe, 0xffffffff, \
  0x7e,       0x7f,       0x80,       0x81,       \
  0xfe,       0xff,       0x100,      0x101,      \
  0x7ffe,     0x7fff,     0x8000,     0x8001,     \
  0xfffe,     0xffff,     0x10000,    0x10001 }

#define FP_VALUE_ARRAY(NegInf, PosInf, NegNan, NaN)                 \
{ 0,                    1,                    0x7e,                 \
  0x7f,                 0x80,                 0x81,                 \
  0xfe,                 0xff,                 0x7ffe,               \
  0x7fff,               0x8000,               0x8001,               \
  0xfffe,               0xffff,               0x7ffffffe,           \
  0x7fffffff,           0x80000000,           0x80000001,           \
  0xfffffffe,           0xffffffff,           0x100000000ll,        \
  0x100000001ll,        0x7ffffffffffffffell, 0x7fffffffffffffffll, \
  0x8000000000000000ll, 0x8000000000000001ll, 0xfffffffffffffffell, \
  0xffffffffffffffffll, NegInf,               PosInf,               \
  Nan,                  NegNan,               -0.0,                 \
  FLT_MIN,              FLT_MAX,              DBL_MIN,              \
  DBL_MAX }

#endif // TEST_ARITH_DEF
