//===- subzero/src/IceInst.def - X-macros for ICE instructions  -*- C++ -*-===//
//
//                        The Subzero Code Generator
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
//
// This file defines properties of ICE instructions in the form of x-macros.
//
//===----------------------------------------------------------------------===//

#ifndef SUBZERO_SRC_ICEINST_DEF
#define SUBZERO_SRC_ICEINST_DEF

// Floating point addition and multiplication are commutative.
// 1) non-special values and infinities are required to commute.
// 2) signed zeroes are handled by:
//    From IEEE standard 754-2008:
//      When the sum of two operands with opposite signs (or the difference of
//      two operands with like signs) is exactly zero, the sign of that sum
//      (or difference) shall be +0 in all rounding-direction attributes
//      except roundTowardNegative; under that attribute, the sign of an exact
//      zero sum (or difference) shall be −0.
// 3) NaNs are handled by:
//    http://grouper.ieee.org/groups/1788/email/msg03558.html
//      clause of 754 at work is 6.2.3 NaN propagation:
//      "If two or more inputs are NaN, then the payload of the resulting NaN
//      should be identical to the payload of one of the input NaNs if
//      representable in the destination format. This standard does not
//      specify which of the input NaNs will provide the payload."

#define ICEINSTARITHMETIC_TABLE                                                \
  /* enum value, printable string, commutative */                              \
  X(Add,         "add",            1)                                          \
  X(Fadd,        "fadd",           1)                                          \
  X(Sub,         "sub",            0)                                          \
  X(Fsub,        "fsub",           0)                                          \
  X(Mul,         "mul",            1)                                          \
  X(Fmul,        "fmul",           1)                                          \
  X(Udiv,        "udiv",           0)                                          \
  X(Sdiv,        "sdiv",           0)                                          \
  X(Fdiv,        "fdiv",           0)                                          \
  X(Urem,        "urem",           0)                                          \
  X(Srem,        "srem",           0)                                          \
  X(Frem,        "frem",           0)                                          \
  X(Shl,         "shl",            0)                                          \
  X(Lshr,        "lshr",           0)                                          \
  X(Ashr,        "ashr",           0)                                          \
  X(And,         "and",            1)                                          \
  X(Or,          "or",             1)                                          \
  X(Xor,         "xor",            1)
//#define X(tag, str, commutative)

#define ICEINSTCAST_TABLE                                                      \
  /* enum value, printable string */                                           \
  X(Trunc,       "trunc")                                                      \
  X(Zext,        "zext")                                                       \
  X(Sext,        "sext")                                                       \
  X(Fptrunc,     "fptrunc")                                                    \
  X(Fpext,       "fpext")                                                      \
  X(Fptoui,      "fptoui")                                                     \
  X(Fptosi,      "fptosi")                                                     \
  X(Uitofp,      "uitofp")                                                     \
  X(Sitofp,      "sitofp")                                                     \
  X(Bitcast,     "bitcast")
//#define X(tag, str)

#define ICEINSTFCMP_TABLE                                                      \
  /* enum value, printable string */                                           \
  X(False,       "false")                                                      \
  X(Oeq,         "oeq")                                                        \
  X(Ogt,         "ogt")                                                        \
  X(Oge,         "oge")                                                        \
  X(Olt,         "olt")                                                        \
  X(Ole,         "ole")                                                        \
  X(One,         "one")                                                        \
  X(Ord,         "ord")                                                        \
  X(Ueq,         "ueq")                                                        \
  X(Ugt,         "ugt")                                                        \
  X(Uge,         "uge")                                                        \
  X(Ult,         "ult")                                                        \
  X(Ule,         "ule")                                                        \
  X(Une,         "une")                                                        \
  X(Uno,         "uno")                                                        \
  X(True,        "true")
//#define X(tag, str)

#define ICEINSTICMP_TABLE                                                      \
  /* enum value, reverse, printable string */                                  \
  X(Eq,          Eq,      "eq")                                                \
  X(Ne,          Ne,      "ne")                                                \
  X(Ugt,         Ult,     "ugt")                                               \
  X(Uge,         Ule,     "uge")                                               \
  X(Ult,         Ugt,     "ult")                                               \
  X(Ule,         Uge,     "ule")                                               \
  X(Sgt,         Slt,     "sgt")                                               \
  X(Sge,         Sle,     "sge")                                               \
  X(Slt,         Sgt,     "slt")                                               \
  X(Sle,         Sge,     "sle")
//#define X(tag, reverse, str)

#endif // SUBZERO_SRC_ICEINST_DEF
