#ifndef MOC_DATATYPE_H_ #define MOC_DATATYPE_H_ #include /** * \addtogroup p2p_datatype * * Datatypes supported by MOC. * * There are the normal datatypes defined by C (char, short, int, ...) and special * vector-datatypes used by the Cell Broadband Engine. For more information see * "C/C++ Language Extensions for Cell Broadband Engine Architecture - Version 2.5" * chapter 1.1. **/ //@{ /** * @name PPU & SPU **/ //@{ /** * Typedef defining MOC_Datatype. * * One byte is used to encode the Data-Type. The first four msb hold the * size in byte / 2 ( if ((datatype & 0xF0)>>4) == 0 then size = 1 else * size = ((datatype & 0xF0)>>4)*2 ) and the four lsb hold an id. The * combination of id and size is used to uniquely identify * a datatype (or rather a group of datatypes belonging together). **/ typedef uint8_t MOC_Datatype; /** * MOC_Byte is a special datatype. It can match any datatype. * It has a size of 1 byte. **/ #define MOC_BYTE ((MOC_Datatype)0+0) /** * C-Datatype char. * It has a size of 1 byte. **/ #define MOC_CHAR ((MOC_Datatype)0+1) /** * C-Datatype unsigned char. * It has a size of 1 byte. **/ #define MOC_UNSIGNED_CHAR ((MOC_Datatype)0+2) /** * C-Datatype short. * It has a size of 2 byte. **/ #define MOC_SHORT ((MOC_Datatype)16+0) /** * C-Datatype unsigned short. * It has a size of 2 byte. **/ #define MOC_UNSIGNED_SHORT ((MOC_Datatype)16+1) /** * C-Datatype int. * It has a size of 4 byte. **/ #define MOC_INT ((MOC_Datatype)32+0) /** * C-Datatype unsigned int. * It has a size of 4 byte. **/ #define MOC_UNSIGNED ((MOC_Datatype)32+1) /** * C-Datatype long long. * It has a size of 8 byte. **/ #define MOC_LONG_LONG ((MOC_Datatype)64+0) /** * C-Datatype unsigned long long. * It has a size of 8 byte. **/ #define MOC_UNSIGNED_LONG_LONG ((MOC_Datatype)64+1) /** * C-Datatype float. * It has a size of 4 byte. **/ #define MOC_FLOAT ((MOC_Datatype)32+2) /** * C-Datatype double. * It has a size of 8 byte. **/ #define MOC_DOUBLE ((MOC_Datatype)64+5) /** * Cell-specific Datatype vector unsigned char (vec_uchar16). * It has a size of 16 byte. **/ #define MOC_VEC_UCHAR16 ((MOC_Datatype)128+0) /** * Cell-specific Datatype vector unsigned short (vec_ushort8). * It has a size of 16 byte. **/ #define MOC_VEC_USHORT8 ((MOC_Datatype)128+1) /** * Cell-specific Datatype vector unsigned int (vec_uint4). * It has a size of 16 byte. **/ #define MOC_VEC_UINT4 ((MOC_Datatype)128+2) /** * Cell-specific Datatype vector signed char (vec_char16). * It has a size of 16 byte. **/ #define MOC_VEC_CHAR16 ((MOC_Datatype)128+4) /** * Cell-specific Datatype vector signed short (vec_short8). * It has a size of 16 byte. **/ #define MOC_VEC_SHORT8 ((MOC_Datatype)128+3) /** * Cell-specific Datatype vector signed int (vec_int4). * It has a size of 16 byte. **/ #define MOC_VEC_INT4 ((MOC_Datatype)128+5) /** * Cell-specific Datatype vector float (vec_float4). * It has a size of 16 byte. **/ #define MOC_VEC_FLOAT4 ((MOC_Datatype)128+6) //@} //@} #endif /*MOC_DATATYPE_H_*/