//===- subzero/src/IceTypes.h - Primitive 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 declares a few properties of the primitive types allowed
// in Subzero.  Every Subzero source file is expected to include
// IceTypes.h.
//
//===----------------------------------------------------------------------===//

#ifndef SUBZERO_SRC_ICETYPES_H
#define SUBZERO_SRC_ICETYPES_H

#include "IceTypes.def"

namespace Ice {

enum Type {
#define X(tag, size, align, elts, elty, str) tag,
  ICETYPE_TABLE
#undef X
      IceType_NUM
};

enum TargetArch {
  Target_X8632,
  Target_X8664,
  Target_ARM32,
  Target_ARM64
};

enum OptLevel {
  Opt_m1,
  Opt_0,
  Opt_1,
  Opt_2
};

size_t typeWidthInBytes(Type Ty);
size_t typeAlignInBytes(Type Ty);
size_t typeNumElements(Type Ty);
Type typeElementType(Type Ty);

inline bool isVectorType(Type Ty) { return typeNumElements(Ty) > 1; }

template <> Ostream &operator<<(class Ostream &Str, const Type &Ty);

} // end of namespace Ice

#endif // SUBZERO_SRC_ICETYPES_H
