blob: 19175f098567fcc097c0e7f311d33b58e086d994 [file] [log] [blame]
//===- 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
#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