|
@ -153,6 +153,20 @@ typedef int64_t khronos_int64_t; |
|
|
typedef uint64_t khronos_uint64_t; |
|
|
typedef uint64_t khronos_uint64_t; |
|
|
#define KHRONOS_SUPPORT_INT64 1 |
|
|
#define KHRONOS_SUPPORT_INT64 1 |
|
|
#define KHRONOS_SUPPORT_FLOAT 1 |
|
|
#define KHRONOS_SUPPORT_FLOAT 1 |
|
|
|
|
|
/* |
|
|
|
|
|
* To support platform where unsigned long cannot be used interchangeably with |
|
|
|
|
|
* inptr_t (e.g. CHERI-extended ISAs), we can use the stdint.h intptr_t. |
|
|
|
|
|
* Ideally, we could just use (u)intptr_t everywhere, but this could result in |
|
|
|
|
|
* ABI breakage if khronos_uintptr_t is changed from unsigned long to |
|
|
|
|
|
* unsigned long long or similar (this results in different C++ name mangling). |
|
|
|
|
|
* To avoid changes for existing platforms, we restrict usage of intptr_t to |
|
|
|
|
|
* platforms where the size of a pointer is larger than the size of long. |
|
|
|
|
|
*/ |
|
|
|
|
|
#if defined(__SIZEOF_LONG__) && defined(__SIZEOF_POINTER__) |
|
|
|
|
|
#if __SIZEOF_POINTER__ > __SIZEOF_LONG__ |
|
|
|
|
|
#define KHRONOS_USE_INTPTR_T |
|
|
|
|
|
#endif |
|
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
#elif defined(__VMS ) || defined(__sgi) |
|
|
#elif defined(__VMS ) || defined(__sgi) |
|
|
|
|
|
|
|
@ -235,14 +249,21 @@ typedef unsigned short int khronos_uint16_t; |
|
|
* pointers are 64 bits, but 'long' is still 32 bits. Win64 appears |
|
|
* pointers are 64 bits, but 'long' is still 32 bits. Win64 appears |
|
|
* to be the only LLP64 architecture in current use. |
|
|
* to be the only LLP64 architecture in current use. |
|
|
*/ |
|
|
*/ |
|
|
#ifdef _WIN64 |
|
|
|
|
|
|
|
|
#ifdef KHRONOS_USE_INTPTR_T |
|
|
|
|
|
typedef intptr_t khronos_intptr_t; |
|
|
|
|
|
typedef uintptr_t khronos_uintptr_t; |
|
|
|
|
|
#elif defined(_WIN64) |
|
|
typedef signed long long int khronos_intptr_t; |
|
|
typedef signed long long int khronos_intptr_t; |
|
|
typedef unsigned long long int khronos_uintptr_t; |
|
|
typedef unsigned long long int khronos_uintptr_t; |
|
|
typedef signed long long int khronos_ssize_t; |
|
|
|
|
|
typedef unsigned long long int khronos_usize_t; |
|
|
|
|
|
#else |
|
|
#else |
|
|
typedef signed long int khronos_intptr_t; |
|
|
typedef signed long int khronos_intptr_t; |
|
|
typedef unsigned long int khronos_uintptr_t; |
|
|
typedef unsigned long int khronos_uintptr_t; |
|
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
|
|
#if defined(_WIN64) |
|
|
|
|
|
typedef signed long long int khronos_ssize_t; |
|
|
|
|
|
typedef unsigned long long int khronos_usize_t; |
|
|
|
|
|
#else |
|
|
typedef signed long int khronos_ssize_t; |
|
|
typedef signed long int khronos_ssize_t; |
|
|
typedef unsigned long int khronos_usize_t; |
|
|
typedef unsigned long int khronos_usize_t; |
|
|
#endif |
|
|
#endif |
|
|