//===- 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

#define ICEINSTARITHMETIC_TABLE                   \
  /* enum value, printable string, commutative */ \
  X(Add,         "add",            1)             \
  X(Fadd,        "fadd",           0)             \
  X(Sub,         "sub",            0)             \
  X(Fsub,        "fsub",           0)             \
  X(Mul,         "mul",            1)             \
  X(Fmul,        "fmul",           0)             \
  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, printable string */ \
  X(Eq,          "eq")               \
  X(Ne,          "ne")               \
  X(Ugt,         "ugt")              \
  X(Uge,         "uge")              \
  X(Ult,         "ult")              \
  X(Ule,         "ule")              \
  X(Sgt,         "sgt")              \
  X(Sge,         "sge")              \
  X(Slt,         "slt")              \
  X(Sle,         "sle")
//#define X(tag, str)

#endif // SUBZERO_SRC_ICEINST_DEF
