| //===----------------------------------------------------------------------===// |
| // |
| // The LLVM Compiler Infrastructure |
| // |
| // This file is dual licensed under the MIT and the University of Illinois Open |
| // Source Licenses. See LICENSE.txt for details. |
| // |
| //===----------------------------------------------------------------------===// |
| |
| |
| #ifndef DV_UTIL_H_INCLUDED |
| #define DV_UTIL_H_INCLUDED |
| |
| #include <stdint.h> |
| |
| // Dope vector declarations |
| #define ArrDescMaxArrayRank 31 |
| |
| // Dope vector flags |
| #define ArrDescFlagsDefined 1 |
| #define ArrDescFlagsNodealloc 2 |
| #define ArrDescFlagsContiguous 4 |
| |
| typedef int64_t dv_size; |
| |
| typedef struct DimDesc { |
| dv_size Extent; // Number of elements in this dimension |
| dv_size Mult; // Multiplier for this dimension. |
| // The number of bytes between successive |
| // elements in this dimension. |
| dv_size LowerBound; // LowerBound of this dimension |
| } DimDesc ; |
| |
| typedef struct ArrDesc { |
| dv_size Base; // Base address |
| dv_size Len; // Length of data type, used only for |
| // character strings. |
| dv_size Offset; |
| dv_size Flags; // Flags |
| dv_size Rank; // Rank of pointer |
| dv_size Reserved; // reserved for openmp requests |
| DimDesc Dim[ArrDescMaxArrayRank]; |
| } ArrDesc ; |
| |
| typedef ArrDesc* pArrDesc; |
| |
| bool __dv_is_contiguous(const ArrDesc *dvp); |
| |
| bool __dv_is_allocated(const ArrDesc *dvp); |
| |
| uint64_t __dv_data_length(const ArrDesc *dvp); |
| |
| uint64_t __dv_data_length(const ArrDesc *dvp, int64_t nelems); |
| |
| CeanReadRanges * init_read_ranges_dv(const ArrDesc *dvp); |
| |
| #if OFFLOAD_DEBUG > 0 |
| void __dv_desc_dump(const char *name, const ArrDesc *dvp); |
| #else // OFFLOAD_DEBUG |
| #define __dv_desc_dump(name, dvp) |
| #endif // OFFLOAD_DEBUG |
| |
| #endif // DV_UTIL_H_INCLUDED |