54 #include <sys/types.h>
106 int hasPendingMoveTo;
107 int hasPendingMoveFrom;
109 unsigned int cntrlKernelCount;
138 #define hit_tileNewTypeInternal(baseType) \
139 typedef struct HitTile_##baseType { \
143 int card[HIT_MAXDIMS]; \
145 int origAcumCard[HIT_MAXDIMS+1]; \
146 int qstride[HIT_MAXDIMS]; \
148 baseType *dataVertices; \
150 baseType *memPtrVertices; \
151 struct HitTile_##baseType *ref; \
159 int hasPendingMoveTo; \
160 int hasPendingMoveFrom; \
161 int isCntrlBlocked; \
162 unsigned int cntrlKernelCount; \
164 struct HitTile *ancestor; \
165 struct HitTile *unpadded; \
166 int childBegin[HIT_MAXDIMS]; \
167 int childSize[HIT_MAXDIMS]; \
168 } HitTile_##baseType, *HitPTile_##baseType
171 hit_tileNewTypeInternal(
HitTile);
177 #define HIT_MS_NULL 0
178 #define HIT_MS_NOMEM 1
179 #define HIT_MS_OWNER 2
180 #define HIT_MS_NOT_OWNER 3
186 #define HIT_NONHIERARCHICAL 0
189 #define HIT_MULTILEVEL_UNDEFINED_SIZES { 1, 1, 1, 1 }
190 #define HIT_MULTILEVEL_UNDEFINED_BEGINS { 0, 0, 0, 0 }
195 #define HIT_FILE_BINARY 0
197 #define HIT_FILE_TEXT 1
200 #define HIT_FILE_READ 0
201 #define HIT_FILE_WRITE 1
204 #define HIT_FILE_UNKNOWN -1
207 #define HIT_UPDATE_FROM 0
208 #define HIT_UPDATE_TO 1
212 #define HIT_OUTOFBOUNDS_CHECK 0
214 #define HIT_NO_OUTOFBOUNDS_CHECK 1
224 #define HIT_TILE_NULL_STATIC { 0, 0, HIT_SHAPE_NULL_STATIC, { 0,0,0,0 }, 0, { 0,0,0,0,0 }, { 0,0,0,0 }, NULL, NULL, NULL, NULL, NULL, HIT_MS_NULL, NULL, NULL, 0, 0, 0, NULL, 0, 0, 0, 0, HIT_NONHIERARCHICAL, NULL, NULL, HIT_MULTILEVEL_UNDEFINED_BEGINS, HIT_MULTILEVEL_UNDEFINED_SIZES }
238 #define hit_tileClass(tile) ((tile).type)
267 void hit_tileFillInternal(
void * var,
void * value,
const char *name,
const char *file,
int numLine);
268 void hit_tileCloneInternal(
void *newVar,
const void *oldVar,
const char *name,
const char *file,
int numLine);
272 int hit_tileFileInternal(
void * varP,
const int fileFormat,
const int fileMode,
const int tileMode,
const int type,
const int formatSize1,
const int formatSize2,
const char *fileName,
const char *debugVarName,
const char *debugCodeFile,
int debugCodeNumLine);
310 #define hit_tileSelectOut(select1,select2) { if (!select1) select2; }
323 #define hit_tileGet(var,ndims,...) hit_tileElemAt(var,ndims,__VA_ARGS__)
332 #define hit_tileSet(var,ndims,val,...) hit_tileElemAt(var,ndims,__VA_ARGS__) = (val)
342 #define hit_tileGetArrayCoords(var,ndims,...) hit_tileElemAtArrayCoords(var,ndims,__VA_ARGS__)
351 #define hit_tileSetArrayCoords(var,ndims,val,...) hit_tileElemAtArrayCoords(var,ndims,__VA_ARGS__) = (val)
362 #define hit_tileGetNoStride(var,ndims,...) hit_tileElemAtNoStride(var,ndims,__VA_ARGS__)
371 #define hit_tileSetNoStride(var,ndims,val,...) hit_tileElemAtNoStride(var,ndims,__VA_ARGS__) = (val)
377 #define hit_tileElemAt1(var, pos) ((var).data[(pos)*(var).qstride[0]])
379 #define hit_tileElemAt2(var, pos1, pos2) ((var).data[(pos1)*(var).qstride[0]*(var).origAcumCard[1]+(pos2)*(var).qstride[1]])
381 #define hit_tileElemAt3(var, pos1, pos2, pos3) ((var).data[(pos1)*(var).qstride[0]*(var).origAcumCard[1]+(pos2)*(var).qstride[1]*(var).origAcumCard[2]+(pos3)*(var).qstride[2]])
383 #define hit_tileElemAt4(var, pos1, pos2, pos3, pos4) ((var).data[(pos1)*(var).qstride[0]*(var).origAcumCard[1]+(pos2)*(var).qstride[1]*(var).origAcumCard[2]+(pos3)*(var).qstride[2]*(var).origAcumCard[3]+(pos4)*(var).qstride[3]])
386 #define hit_tileElemAtArrayCoords1(var, pos) ((var).data[ hit_tileArray2Tile(var,0,pos) ])
388 #define hit_tileElemAtArrayCoords2(var, pos1, pos2) ((var).data[ hit_tileArray2Tile((var),0,(pos1))*(var).origAcumCard[1] + hit_tileArray2Tile((var), 1, (pos2))])
390 #define hit_tileElemAtArrayCoords3(var, pos1, pos2, pos3) ((var).data[ hit_tileArray2Tile((var),0,(pos1))*(var).origAcumCard[1] + hit_tileArray2Tile((var), 1, (pos2))*(var).origAcumCard[2] + hit_tileArray2Tile((var), 2, (pos3))])
392 #define hit_tileElemAtArrayCoords4(var, pos1, pos2, pos3, pos4) ((var).data[ hit_tileArray2Tile((var),0,(pos1))*(var).origAcumCard[1] + hit_tileArray2Tile((var), 1, (pos2))*(var).origAcumCard[2] + hit_tileArray2Tile((var), 2, (pos3))*(var).origAcumCard[3] + hit_tileArray2Tile((var), 3, (pos3))])
395 #define hit_tileElemAtNoStride1(var, pos) ((var).data[pos])
397 #define hit_tileElemAtNoStride2(var, pos1, pos2) ((var).data[(pos1)*(var).origAcumCard[1]+(pos2)])
399 #define hit_tileElemAtNoStride3(var, pos1, pos2, pos3) ((var).data[(pos1)*(var).origAcumCard[1]+(pos2)*(var).origAcumCard[2]+(pos3)])
401 #define hit_tileElemAtNoStride4(var, pos1, pos2, pos3, pos4) ((var).data[(pos1)*(var).origAcumCard[1]+(pos2)*(var).origAcumCard[2]+(pos3)*(var).origAcumCard[3]+(pos4)])
405 #define hit_tileHasArrayCoords1(var, pos) \
406 ( pos>=hit_tileDimBegin(var,0) && (pos<=hit_tileDimEnd(var,0)) && \
407 ((pos-hit_tileDimBegin(var,0))%hit_tileDimStride(var,0) == 0) )
409 #define hit_tileHasArrayCoords2(var, pos0, pos1) \
410 ( pos0>=hit_tileDimBegin(var,0) && (pos0<=hit_tileDimEnd(var,0)) && \
411 pos1>=hit_tileDimBegin(var,1) && (pos1<=hit_tileDimEnd(var,1)) && \
412 ((pos0-hit_tileDimBegin(var,0))%hit_tileDimStride(var,0) == 0) && \
413 ((pos1-hit_tileDimBegin(var,1))%hit_tileDimStride(var,1) == 0) )
415 #define hit_tileHasArrayCoords3(var, pos0, pos1, pos2) \
416 ( pos0>=hit_tileDimBegin(var,0) && (pos0<=hit_tileDimEnd(var,0)) && \
417 pos1>=hit_tileDimBegin(var,1) && (pos1<=hit_tileDimEnd(var,1)) && \
418 pos2>=hit_tileDimBegin(var,2) && (pos2<=hit_tileDimEnd(var,2)) && \
419 ((pos0-hit_tileDimBegin(var,0))%hit_tileDimStride(var,0) == 0) && \
420 ((pos1-hit_tileDimBegin(var,1))%hit_tileDimStride(var,1) == 0) && \
421 ((pos2-hit_tileDimBegin(var,2))%hit_tileDimStride(var,2) == 0) )
423 #define hit_tileHasArrayCoords4(var, pos0, pos1, pos2, pos3) \
424 ( pos0>=hit_tileDimBegin(var,0) && (pos0<=hit_tileDimEnd(var,0)) && \
425 pos1>=hit_tileDimBegin(var,1) && (pos1<=hit_tileDimEnd(var,1)) && \
426 pos2>=hit_tileDimBegin(var,2) && (pos2<=hit_tileDimEnd(var,2)) && \
427 pos3>=hit_tileDimBegin(var,3) && (pos3<=hit_tileDimEnd(var,3)) && \
428 ((pos0-hit_tileDimBegin(var,0))%hit_tileDimStride(var,0) == 0) && \
429 ((pos1-hit_tileDimBegin(var,1))%hit_tileDimStride(var,1) == 0) && \
430 ((pos2-hit_tileDimBegin(var,2))%hit_tileDimStride(var,2) == 0) && \
431 ((pos3-hit_tileDimBegin(var,3))%hit_tileDimStride(var,3) == 0) )
HitPTile HIT_TILE_NULL_POINTER
int hit_tileFileInternal(void *varP, const int fileFormat, const int fileMode, const int tileMode, const int type, const int formatSize1, const int formatSize2, const char *fileName, const char *debugVarName, const char *debugCodeFile, int debugCodeLine)
void hit_tileSingleInternal(void *tileP, void *varP, size_t size)
void hit_tileDomainShapeInternal(void *newVarP, size_t baseExtent, int hierDepth, HitShape shape)
int hit_tileCheckBoundaryArrayCoords(const void *tileP, HitShape sh)
void hit_tileFillInternal(void *varP, void *value, const char *name, const char *file, int numLine)
void hit_tileDomainInternal(void *newVarP, size_t baseExtent, int hierDepth, int numDims,...)
int hit_tileSelectInternal(void *newVarP, const void *oldVarP, HitShape sh, int out)
void hit_tileCloneInternal(void *newVarP, const void *oldVarP, const char *name, const char *file, int numLine)
int hit_tileCheckBoundaryTileCoords(const void *tileP, HitShape sh)
void hit_tileUpdateFromToAncestorInternal(void *sh, int fromTo, const char *name, const char *file, int numLine)
void hit_tileAllocInternal(void *newVarP, const char *name, const char *file, int numLine)
int hit_tileSelectArrayCoordsInternal(void *newVarP, const void *oldVarP, HitShape sh, int out)
void hit_tileFreeRecInternal(void *varP)