1f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines/* include/llvm/Support/DataTypes.h. Generated from DataTypes.h.in by configure. */ 2f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines/*===-- include/Support/DataTypes.h - Define fixed size types -----*- C -*-===*\ 3e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao|* *| 4e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao|* The LLVM Compiler Infrastructure *| 5e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao|* *| 6e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao|* This file is distributed under the University of Illinois Open Source *| 7e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao|* License. See LICENSE.TXT for details. *| 8e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao|* *| 9e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao|*===----------------------------------------------------------------------===*| 10e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao|* *| 11e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao|* This file contains definitions to figure out the size of _HOST_ data types.*| 12e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao|* This file is important because different host OS's define different macros,*| 13e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao|* which makes portability tough. This file exports the following *| 14e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao|* definitions: *| 15e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao|* *| 16e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao|* [u]int(32|64)_t : typedefs for signed and unsigned 32/64 bit system types*| 17e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao|* [U]INT(8|16|32|64)_(MIN|MAX) : Constants for the min and max values. *| 18e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao|* *| 19f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines|* No library is required when using these functions. *| 20e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao|* *| 21e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao|*===----------------------------------------------------------------------===*/ 22e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao 23e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao/* Please leave this file C-compatible. */ 24e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao 25f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines/* Please keep this file in sync with DataTypes.h.cmake */ 26f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines 27e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao#ifndef SUPPORT_DATATYPES_H 28e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao#define SUPPORT_DATATYPES_H 29e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao 30e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao#define HAVE_SYS_TYPES_H 1 31e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao#define HAVE_INTTYPES_H 1 32e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao#define HAVE_STDINT_H 1 33e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao#define HAVE_UINT64_T 1 34e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao/* #undef HAVE_U_INT64_T */ 35e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao 36e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao#ifdef __cplusplus 37e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao#include <cmath> 38e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao#else 39e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao#include <math.h> 40e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao#endif 41e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao 42f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines#ifndef _MSC_VER 43f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines 44e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao/* Note that this header's correct operation depends on __STDC_LIMIT_MACROS 45e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao being defined. We would define it here, but in order to prevent Bad Things 46e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao happening when system headers or C++ STL headers include stdint.h before we 47e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao define it here, we define it on the g++ command line (in Makefile.rules). */ 48e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao#if !defined(__STDC_LIMIT_MACROS) 49f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines# error "Must #define __STDC_LIMIT_MACROS before #including Support/DataTypes.h" 50e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao#endif 51e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao 52e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao#if !defined(__STDC_CONSTANT_MACROS) 53e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao# error "Must #define __STDC_CONSTANT_MACROS before " \ 54f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines "#including Support/DataTypes.h" 55e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao#endif 56e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao 57e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao/* Note that <inttypes.h> includes <stdint.h>, if this is a C99 system. */ 58e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao#ifdef HAVE_SYS_TYPES_H 59e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao#include <sys/types.h> 60e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao#endif 61e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao 62e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao#ifdef HAVE_INTTYPES_H 63e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao#include <inttypes.h> 64e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao#endif 65e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao 66e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao#ifdef HAVE_STDINT_H 67e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao#include <stdint.h> 68e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao#endif 69e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao 70e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao#ifdef _AIX 71f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines#include "llvm/Support/AIXDataTypesFix.h" 72e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao#endif 73e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao 74e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao/* Handle incorrect definition of uint64_t as u_int64_t */ 75e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao#ifndef HAVE_UINT64_T 76e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao#ifdef HAVE_U_INT64_T 77e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liaotypedef u_int64_t uint64_t; 78e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao#else 79e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao# error "Don't have a definition for uint64_t on this platform" 80e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao#endif 81e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao#endif 82e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao 83e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao#ifdef _OpenBSD_ 84e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao#define INT8_MAX 127 85e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao#define INT8_MIN -128 86e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao#define UINT8_MAX 255 87e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao#define INT16_MAX 32767 88e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao#define INT16_MIN -32768 89e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao#define UINT16_MAX 65535 90e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao#define INT32_MAX 2147483647 91e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao#define INT32_MIN -2147483648 92e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao#define UINT32_MAX 4294967295U 93e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao#endif 94e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao 95f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines#else /* _MSC_VER */ 96f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines/* Visual C++ doesn't provide standard integer headers, but it does provide 97f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines built-in data types. */ 98f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines#include <stdlib.h> 99f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines#include <stddef.h> 100f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines#include <sys/types.h> 101f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines#ifdef __cplusplus 102f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines#include <cmath> 103f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines#else 104f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines#include <math.h> 105f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines#endif 106f2a027ee44593147a4aee5566a13f682a1964773Stephen Hinestypedef __int64 int64_t; 107f2a027ee44593147a4aee5566a13f682a1964773Stephen Hinestypedef unsigned __int64 uint64_t; 108f2a027ee44593147a4aee5566a13f682a1964773Stephen Hinestypedef signed int int32_t; 109f2a027ee44593147a4aee5566a13f682a1964773Stephen Hinestypedef unsigned int uint32_t; 110f2a027ee44593147a4aee5566a13f682a1964773Stephen Hinestypedef short int16_t; 111f2a027ee44593147a4aee5566a13f682a1964773Stephen Hinestypedef unsigned short uint16_t; 112f2a027ee44593147a4aee5566a13f682a1964773Stephen Hinestypedef signed char int8_t; 113f2a027ee44593147a4aee5566a13f682a1964773Stephen Hinestypedef unsigned char uint8_t; 114f2a027ee44593147a4aee5566a13f682a1964773Stephen Hinestypedef signed int ssize_t; 115f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines#ifndef INT8_MAX 116f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines# define INT8_MAX 127 117f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines#endif 118f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines#ifndef INT8_MIN 119f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines# define INT8_MIN -128 120f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines#endif 121f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines#ifndef UINT8_MAX 122f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines# define UINT8_MAX 255 123f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines#endif 124f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines#ifndef INT16_MAX 125f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines# define INT16_MAX 32767 126f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines#endif 127f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines#ifndef INT16_MIN 128f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines# define INT16_MIN -32768 129f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines#endif 130f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines#ifndef UINT16_MAX 131f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines# define UINT16_MAX 65535 132f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines#endif 133f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines#ifndef INT32_MAX 134f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines# define INT32_MAX 2147483647 135f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines#endif 136f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines#ifndef INT32_MIN 137f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines/* MSC treats -2147483648 as -(2147483648U). */ 138f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines# define INT32_MIN (-INT32_MAX - 1) 139f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines#endif 140f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines#ifndef UINT32_MAX 141f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines# define UINT32_MAX 4294967295U 142f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines#endif 143f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines/* Certain compatibility updates to VC++ introduce the `cstdint' 144f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines * header, which defines the INT*_C macros. On default installs they 145f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines * are absent. */ 146f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines#ifndef INT8_C 147f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines# define INT8_C(C) C##i8 148f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines#endif 149f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines#ifndef UINT8_C 150f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines# define UINT8_C(C) C##ui8 151f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines#endif 152f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines#ifndef INT16_C 153f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines# define INT16_C(C) C##i16 154f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines#endif 155f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines#ifndef UINT16_C 156f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines# define UINT16_C(C) C##ui16 157f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines#endif 158f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines#ifndef INT32_C 159f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines# define INT32_C(C) C##i32 160f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines#endif 161f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines#ifndef UINT32_C 162f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines# define UINT32_C(C) C##ui32 163f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines#endif 164f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines#ifndef INT64_C 165f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines# define INT64_C(C) C##i64 166f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines#endif 167f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines#ifndef UINT64_C 168f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines# define UINT64_C(C) C##ui64 169f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines#endif 170f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines 171f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines#ifndef PRId64 172f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines# define PRId64 "I64d" 173f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines#endif 174f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines#ifndef PRIi64 175f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines# define PRIi64 "I64i" 176f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines#endif 177f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines#ifndef PRIo64 178f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines# define PRIo64 "I64o" 179f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines#endif 180f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines#ifndef PRIu64 181f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines# define PRIu64 "I64u" 182f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines#endif 183f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines#ifndef PRIx64 184f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines# define PRIx64 "I64x" 185f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines#endif 186f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines#ifndef PRIX64 187f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines# define PRIX64 "I64X" 188f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines#endif 189f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines 190f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines#endif /* _MSC_VER */ 191f2a027ee44593147a4aee5566a13f682a1964773Stephen Hines 192e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao/* Set defaults for constants which we cannot find. */ 193e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao#if !defined(INT64_MAX) 194e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao# define INT64_MAX 9223372036854775807LL 195e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao#endif 196e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao#if !defined(INT64_MIN) 197e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao# define INT64_MIN ((-INT64_MAX)-1) 198e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao#endif 199e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao#if !defined(UINT64_MAX) 200e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao# define UINT64_MAX 0xffffffffffffffffULL 201e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao#endif 202e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao 203e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao#if __GNUC__ > 3 204e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao#define END_WITH_NULL __attribute__((sentinel)) 205e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao#else 206e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao#define END_WITH_NULL 207e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao#endif 208e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao 209e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao#ifndef HUGE_VALF 210e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao#define HUGE_VALF (float)HUGE_VAL 211e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao#endif 212e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao 213e4454320b3cfffe926a487c33fbeb454366de2f8Shih-wei Liao#endif /* SUPPORT_DATATYPES_H */ 214