00001 #ifndef MOC_DATATYPE_H_ 00002 #define MOC_DATATYPE_H_ 00003 00004 #include <stdint.h> 00005 00006 00007 /** 00008 * \addtogroup p2p_datatype 00009 * 00010 * Datatypes supported by MOC. 00011 * 00012 * There are the normal datatypes defined by C (char, short, int, ...) and special 00013 * vector-datatypes used by the Cell Broadband Engine. For more information see 00014 * "C/C++ Language Extensions for Cell Broadband Engine Architecture - Version 2.5" 00015 * chapter 1.1. 00016 **/ 00017 //@{ 00018 /** 00019 * @name PPU & SPU 00020 **/ 00021 //@{ 00022 00023 /** 00024 * Typedef defining MOC_Datatype. 00025 * 00026 * One byte is used to encode the Data-Type. The first four msb hold the 00027 * size in byte / 2 ( if ((datatype & 0xF0)>>4) == 0 then size = 1 else 00028 * size = ((datatype & 0xF0)>>4)*2 ) and the four lsb hold an id. The 00029 * combination of id and size is used to uniquely identify 00030 * a datatype (or rather a group of datatypes belonging together). 00031 **/ 00032 typedef uint8_t MOC_Datatype; 00033 00034 /** 00035 * MOC_Byte is a special datatype. It can match any datatype. 00036 * It has a size of 1 byte. 00037 **/ 00038 #define MOC_BYTE ((MOC_Datatype)0+0) 00039 00040 /** 00041 * C-Datatype char. 00042 * It has a size of 1 byte. 00043 **/ 00044 #define MOC_CHAR ((MOC_Datatype)0+1) 00045 00046 /** 00047 * C-Datatype unsigned char. 00048 * It has a size of 1 byte. 00049 **/ 00050 #define MOC_UNSIGNED_CHAR ((MOC_Datatype)0+2) 00051 00052 /** 00053 * C-Datatype short. 00054 * It has a size of 2 byte. 00055 **/ 00056 #define MOC_SHORT ((MOC_Datatype)16+0) 00057 00058 /** 00059 * C-Datatype unsigned short. 00060 * It has a size of 2 byte. 00061 **/ 00062 #define MOC_UNSIGNED_SHORT ((MOC_Datatype)16+1) 00063 00064 /** 00065 * C-Datatype int. 00066 * It has a size of 4 byte. 00067 **/ 00068 #define MOC_INT ((MOC_Datatype)32+0) 00069 00070 /** 00071 * C-Datatype unsigned int. 00072 * It has a size of 4 byte. 00073 **/ 00074 #define MOC_UNSIGNED ((MOC_Datatype)32+1) 00075 00076 /** 00077 * C-Datatype long long. 00078 * It has a size of 8 byte. 00079 **/ 00080 #define MOC_LONG_LONG ((MOC_Datatype)64+0) 00081 00082 /** 00083 * C-Datatype unsigned long long. 00084 * It has a size of 8 byte. 00085 **/ 00086 #define MOC_UNSIGNED_LONG_LONG ((MOC_Datatype)64+1) 00087 00088 /** 00089 * C-Datatype float. 00090 * It has a size of 4 byte. 00091 **/ 00092 #define MOC_FLOAT ((MOC_Datatype)32+2) 00093 00094 /** 00095 * C-Datatype double. 00096 * It has a size of 8 byte. 00097 **/ 00098 #define MOC_DOUBLE ((MOC_Datatype)64+5) 00099 00100 00101 /** 00102 * Cell-specific Datatype vector unsigned char (vec_uchar16). 00103 * It has a size of 16 byte. 00104 **/ 00105 #define MOC_VEC_UCHAR16 ((MOC_Datatype)128+0) 00106 00107 /** 00108 * Cell-specific Datatype vector unsigned short (vec_ushort8). 00109 * It has a size of 16 byte. 00110 **/ 00111 #define MOC_VEC_USHORT8 ((MOC_Datatype)128+1) 00112 00113 /** 00114 * Cell-specific Datatype vector unsigned int (vec_uint4). 00115 * It has a size of 16 byte. 00116 **/ 00117 #define MOC_VEC_UINT4 ((MOC_Datatype)128+2) 00118 00119 /** 00120 * Cell-specific Datatype vector signed char (vec_char16). 00121 * It has a size of 16 byte. 00122 **/ 00123 #define MOC_VEC_CHAR16 ((MOC_Datatype)128+4) 00124 00125 /** 00126 * Cell-specific Datatype vector signed short (vec_short8). 00127 * It has a size of 16 byte. 00128 **/ 00129 #define MOC_VEC_SHORT8 ((MOC_Datatype)128+3) 00130 00131 /** 00132 * Cell-specific Datatype vector signed int (vec_int4). 00133 * It has a size of 16 byte. 00134 **/ 00135 #define MOC_VEC_INT4 ((MOC_Datatype)128+5) 00136 00137 00138 /** 00139 * Cell-specific Datatype vector float (vec_float4). 00140 * It has a size of 16 byte. 00141 **/ 00142 #define MOC_VEC_FLOAT4 ((MOC_Datatype)128+6) 00143 00144 00145 00146 00147 //@} 00148 //@} 00149 #endif /*MOC_DATATYPE_H_*/
1.5.6