//===----------------------------------------------------------------------===// // // 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 // 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