//===- subzero/src/IceTypes.def - X-macros for ICE types --------*- 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 primitive types in the form of
// x-macros.
//
//===----------------------------------------------------------------------===//

#ifndef SUBZERO_SRC_ICETYPES_DEF
#define SUBZERO_SRC_ICETYPES_DEF

// Attributes of each target architecture.
// NOTE on is_elf64 -- At some point NaCl would like to use ELF32 for all
// ILP32 sandboxes, but for now the 64-bit architectures use ELF64:
// https://code.google.com/p/nativeclient/issues/detail?id=349
// TODO: Whoever adds AArch64 will need to set ABI e_flags.
#define TARGETARCH_TABLE                                                 \
  /* enum value, printable string, is_elf64,   e_machine, e_flags */     \
  X(Target_X8632, "x86-32", false, EM_386,     0)                        \
  X(Target_X8664, "x86-64", true,  EM_X86_64,  0)                        \
  X(Target_ARM32, "arm32",  false, EM_ARM,     EF_ARM_EABI_VER5)         \
  X(Target_ARM64, "arm64",  true,  EM_AARCH64, 0)                        \
  X(Target_MIPS32,"mips32", false, EM_MIPS,    0)                        \
  //#define X(tag, str, is_elf64, e_machine, e_flags)

#define ICETYPE_TABLE                                                    \
  /* enum value,  size, align, # elts, element type, printable string */ \
  /*   (size and alignment in bytes) */                                  \
  X(IceType_void,   0,  0,     1,      IceType_void, "void")             \
  X(IceType_i1,     1,  1,     1,      IceType_i1,   "i1")               \
  X(IceType_i8,     1,  1,     1,      IceType_i8,   "i8")               \
  X(IceType_i16,    2,  1,     1,      IceType_i16,  "i16")              \
  X(IceType_i32,    4,  1,     1,      IceType_i32,  "i32")              \
  X(IceType_i64,    8,  1,     1,      IceType_i64,  "i64")              \
  X(IceType_f32,    4,  4,     1,      IceType_f32,  "float")            \
  X(IceType_f64,    8,  8,     1,      IceType_f64,  "double")           \
  X(IceType_v4i1,  16,  1,     4,      IceType_i1,   "<4 x i1>")         \
  X(IceType_v8i1,  16,  1,     8,      IceType_i1,   "<8 x i1>")         \
  X(IceType_v16i1, 16,  1,    16,      IceType_i1,   "<16 x i1>")        \
  X(IceType_v16i8, 16,  1,    16,      IceType_i8,   "<16 x i8>")        \
  X(IceType_v8i16, 16,  2,     8,      IceType_i16,  "<8 x i16>")        \
  X(IceType_v4i32, 16,  4,     4,      IceType_i32,  "<4 x i32>")        \
  X(IceType_v4f32, 16,  4,     4,      IceType_f32,  "<4 x float>")      \
//#define X(tag, size, align, elts, elty, str)

// Dictionary:
//   V - Is vector type.
//   I - Is integer value (scalar or vector).
//   F - Is floating point value (scalar or vector).
//   IA - Is integer arithmetic type
//   LS - true if load/store allowed on type.
//   CR - Result type of compare instruction for argument type
//        (IceType_void if disallowed)
#define ICETYPE_PROPS_TABLE                                              \
  /* Enum Value    V  I  F IA  LS CR */                                  \
  X(IceType_void,  0, 0, 0, 0, 0, IceType_void)                          \
  X(IceType_i1,    0, 1, 0, 0, 0, IceType_i1)                            \
  X(IceType_i8,    0, 1, 0, 1, 1, IceType_i1)                            \
  X(IceType_i16,   0, 1, 0, 1, 1, IceType_i1)                            \
  X(IceType_i32,   0, 1, 0, 1, 1, IceType_i1)                            \
  X(IceType_i64,   0, 1, 0, 1, 1, IceType_i1)                            \
  X(IceType_f32,   0, 0, 1, 0, 1, IceType_i1)                            \
  X(IceType_f64,   0, 0, 1, 0, 1, IceType_i1)                            \
  X(IceType_v4i1,  1, 1, 0, 0, 0, IceType_v4i1)                          \
  X(IceType_v8i1,  1, 1, 0, 0, 0, IceType_v8i1)                          \
  X(IceType_v16i1, 1, 1, 0, 0, 0, IceType_v16i1)                         \
  X(IceType_v16i8, 1, 1, 0, 1, 1, IceType_v16i1)                         \
  X(IceType_v8i16, 1, 1, 0, 1, 1, IceType_v8i1)                          \
  X(IceType_v4i32, 1, 1, 0, 1, 1, IceType_v4i1)                          \
  X(IceType_v4f32, 1, 0, 1, 0, 1, IceType_v4i1)                          \
//#define X(tag, IsVec, IsInt, IsFloat, IsIntArith, IsLoadStore, CompareResult)

#endif // SUBZERO_SRC_ICETYPES_DEF
