reference, declaration → definition definition → references, declarations, derived classes, virtual overrides reference to multiple definitions → definitions unreferenced
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
#include <isl/aff.h> #include <isl/map.h> #include "gpu_array_tile.h" struct gpu_array_tile *gpu_array_tile_free(struct gpu_array_tile *tile) { int j; if (!tile) return NULL; for (j = 0; j < tile->n; ++j) { isl_val_free(tile->bound[j].size); isl_val_free(tile->bound[j].stride); isl_aff_free(tile->bound[j].lb); isl_aff_free(tile->bound[j].shift); } free(tile->bound); isl_multi_aff_free(tile->tiling); free(tile); return NULL; } /* Create a gpu_array_tile for an array of dimension "n_index". */ struct gpu_array_tile *gpu_array_tile_create(isl_ctx *ctx, int n_index) { int i; struct gpu_array_tile *tile; tile = isl_calloc_type(ctx, struct gpu_array_tile); if (!tile) return NULL; tile->ctx = ctx; tile->bound = isl_alloc_array(ctx, struct gpu_array_bound, n_index); if (!tile->bound) return gpu_array_tile_free(tile); tile->n = n_index; for (i = 0; i < n_index; ++i) { tile->bound[i].size = NULL; tile->bound[i].lb = NULL; tile->bound[i].stride = NULL; tile->bound[i].shift = NULL; } return tile; } /* Compute the size of the tile specified by "tile" * in number of elements and return the result. */ __isl_give isl_val *gpu_array_tile_size(struct gpu_array_tile *tile) { int i; isl_val *size; if (!tile) return NULL; size = isl_val_one(tile->ctx); for (i = 0; i < tile->n; ++i) size = isl_val_mul(size, isl_val_copy(tile->bound[i].size)); return size; }