1 // This test verifies that the correct macros are predefined. 2 // 3 // RUN: %clang_cc1 %s -E -dM -triple i686-pc-win32 -fms-compatibility \ 4 // RUN: -o - | FileCheck -match-full-lines %s --check-prefix=CHECK-MS-STDINT 5 // CHECK-MS-STDINT:#define __INT16_MAX__ 32767 6 // CHECK-MS-STDINT:#define __INT32_MAX__ 2147483647 7 // CHECK-MS-STDINT:#define __INT64_MAX__ 9223372036854775807LL 8 // CHECK-MS-STDINT:#define __INT8_MAX__ 127 9 // CHECK-MS-STDINT:#define __INTPTR_MAX__ 2147483647 10 // CHECK-MS-STDINT:#define __INT_FAST16_MAX__ 32767 11 // CHECK-MS-STDINT:#define __INT_FAST16_TYPE__ short 12 // CHECK-MS-STDINT:#define __INT_FAST32_MAX__ 2147483647 13 // CHECK-MS-STDINT:#define __INT_FAST32_TYPE__ int 14 // CHECK-MS-STDINT:#define __INT_FAST64_MAX__ 9223372036854775807LL 15 // CHECK-MS-STDINT:#define __INT_FAST64_TYPE__ long long int 16 // CHECK-MS-STDINT:#define __INT_FAST8_MAX__ 127 17 // CHECK-MS-STDINT:#define __INT_FAST8_TYPE__ signed char 18 // CHECK-MS-STDINT:#define __INT_LEAST16_MAX__ 32767 19 // CHECK-MS-STDINT:#define __INT_LEAST16_TYPE__ short 20 // CHECK-MS-STDINT:#define __INT_LEAST32_MAX__ 2147483647 21 // CHECK-MS-STDINT:#define __INT_LEAST32_TYPE__ int 22 // CHECK-MS-STDINT:#define __INT_LEAST64_MAX__ 9223372036854775807LL 23 // CHECK-MS-STDINT:#define __INT_LEAST64_TYPE__ long long int 24 // CHECK-MS-STDINT:#define __INT_LEAST8_MAX__ 127 25 // CHECK-MS-STDINT:#define __INT_LEAST8_TYPE__ signed char 26 // CHECK-MS-STDINT-NOT:#define __UINT16_C_SUFFIX__ U 27 // CHECK-MS-STDINT:#define __UINT16_MAX__ 65535 28 // CHECK-MS-STDINT:#define __UINT16_TYPE__ unsigned short 29 // CHECK-MS-STDINT:#define __UINT32_C_SUFFIX__ U 30 // CHECK-MS-STDINT:#define __UINT32_MAX__ 4294967295U 31 // CHECK-MS-STDINT:#define __UINT32_TYPE__ unsigned int 32 // CHECK-MS-STDINT:#define __UINT64_C_SUFFIX__ ULL 33 // CHECK-MS-STDINT:#define __UINT64_MAX__ 18446744073709551615ULL 34 // CHECK-MS-STDINT:#define __UINT64_TYPE__ long long unsigned int 35 // CHECK-MS-STDINT-NOT:#define __UINT8_C_SUFFIX__ U 36 // CHECK-MS-STDINT:#define __UINT8_MAX__ 255 37 // CHECK-MS-STDINT:#define __UINT8_TYPE__ unsigned char 38 // CHECK-MS-STDINT:#define __UINTMAX_MAX__ 18446744073709551615ULL 39 // CHECK-MS-STDINT:#define __UINTPTR_MAX__ 4294967295U 40 // CHECK-MS-STDINT:#define __UINTPTR_TYPE__ unsigned int 41 // CHECK-MS-STDINT:#define __UINTPTR_WIDTH__ 32 42 // CHECK-MS-STDINT:#define __UINT_FAST16_MAX__ 65535 43 // CHECK-MS-STDINT:#define __UINT_FAST16_TYPE__ unsigned short 44 // CHECK-MS-STDINT:#define __UINT_FAST32_MAX__ 4294967295U 45 // CHECK-MS-STDINT:#define __UINT_FAST32_TYPE__ unsigned int 46 // CHECK-MS-STDINT:#define __UINT_FAST64_MAX__ 18446744073709551615ULL 47 // CHECK-MS-STDINT:#define __UINT_FAST64_TYPE__ long long unsigned int 48 // CHECK-MS-STDINT:#define __UINT_FAST8_MAX__ 255 49 // CHECK-MS-STDINT:#define __UINT_FAST8_TYPE__ unsigned char 50 // CHECK-MS-STDINT:#define __UINT_LEAST16_MAX__ 65535 51 // CHECK-MS-STDINT:#define __UINT_LEAST16_TYPE__ unsigned short 52 // CHECK-MS-STDINT:#define __UINT_LEAST32_MAX__ 4294967295U 53 // CHECK-MS-STDINT:#define __UINT_LEAST32_TYPE__ unsigned int 54 // CHECK-MS-STDINT:#define __UINT_LEAST64_MAX__ 18446744073709551615ULL 55 // CHECK-MS-STDINT:#define __UINT_LEAST64_TYPE__ long long unsigned int 56 // CHECK-MS-STDINT:#define __UINT_LEAST8_MAX__ 255 57 // CHECK-MS-STDINT:#define __UINT_LEAST8_TYPE__ unsigned char 58 // 59 // RUN: %clang_cc1 %s -E -dM -ffast-math -o - \ 60 // RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-FAST-MATH 61 // CHECK-FAST-MATH: #define __FAST_MATH__ 1 62 // CHECK-FAST-MATH: #define __FINITE_MATH_ONLY__ 1 63 // 64 // RUN: %clang_cc1 %s -E -dM -ffinite-math-only -o - \ 65 // RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-FINITE-MATH-ONLY 66 // CHECK-FINITE-MATH-ONLY: #define __FINITE_MATH_ONLY__ 1 67 // 68 // RUN: %clang %s -E -dM -fno-finite-math-only -o - \ 69 // RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-NO-FINITE-MATH-ONLY 70 // CHECK-NO-FINITE-MATH-ONLY: #define __FINITE_MATH_ONLY__ 0 71 // 72 // RUN: %clang_cc1 %s -E -dM -o - \ 73 // RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-FINITE-MATH-FLAG-UNDEFINED 74 // CHECK-FINITE-MATH-FLAG-UNDEFINED: #define __FINITE_MATH_ONLY__ 0 75 // 76 // RUN: %clang_cc1 %s -E -dM -o - -triple i686 -target-cpu i386 \ 77 // RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-SYNC_CAS_I386 78 // CHECK-SYNC_CAS_I386-NOT: __GCC_HAVE_SYNC_COMPARE_AND_SWAP 79 // 80 // RUN: %clang_cc1 %s -E -dM -o - -triple i686 -target-cpu i486 \ 81 // RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-SYNC_CAS_I486 82 // CHECK-SYNC_CAS_I486: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 83 // CHECK-SYNC_CAS_I486: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 84 // CHECK-SYNC_CAS_I486: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 85 // CHECK-SYNC_CAS_I486-NOT: __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 86 // 87 // RUN: %clang_cc1 %s -E -dM -o - -triple i686 -target-cpu i586 \ 88 // RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-SYNC_CAS_I586 89 // CHECK-SYNC_CAS_I586: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 90 // CHECK-SYNC_CAS_I586: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 91 // CHECK-SYNC_CAS_I586: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 92 // CHECK-SYNC_CAS_I586: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 93 // 94 // RUN: %clang_cc1 %s -E -dM -o - -triple armv6 -target-cpu arm1136j-s \ 95 // RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-SYNC_CAS_ARM 96 // CHECK-SYNC_CAS_ARM: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 97 // CHECK-SYNC_CAS_ARM: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 98 // CHECK-SYNC_CAS_ARM: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 99 // CHECK-SYNC_CAS_ARM: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 100 // 101 // RUN: %clang_cc1 %s -E -dM -o - -triple armv7 -target-cpu cortex-a8 \ 102 // RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-SYNC_CAS_ARMv7 103 // CHECK-SYNC_CAS_ARMv7: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 104 // CHECK-SYNC_CAS_ARMv7: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 105 // CHECK-SYNC_CAS_ARMv7: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 106 // CHECK-SYNC_CAS_ARMv7: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 107 // 108 // RUN: %clang_cc1 %s -E -dM -o - -triple armv6 -target-cpu cortex-m0 \ 109 // RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-SYNC_CAS_ARMv6 110 // CHECK-SYNC_CAS_ARMv6-NOT: __GCC_HAVE_SYNC_COMPARE_AND_SWAP 111 // 112 // RUN: %clang_cc1 %s -E -dM -o - -triple mips -target-cpu mips2 \ 113 // RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-SYNC_CAS_MIPS \ 114 // RUN: --check-prefix=CHECK-SYNC_CAS_MIPS32 115 // RUN: %clang_cc1 %s -E -dM -o - -triple mips64 -target-cpu mips3 \ 116 // RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-SYNC_CAS_MIPS \ 117 // RUN: --check-prefix=CHECK-SYNC_CAS_MIPS64 118 // CHECK-SYNC_CAS_MIPS: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 119 // CHECK-SYNC_CAS_MIPS: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 120 // CHECK-SYNC_CAS_MIPS: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 121 // CHECK-SYNC_CAS_MIPS32-NOT: __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 122 // CHECK-SYNC_CAS_MIPS64: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 123 124 // RUN: %clang_cc1 %s -E -dM -o - -x cl \ 125 // RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-CL10 126 // RUN: %clang_cc1 %s -E -dM -o - -x cl -cl-std=CL1.0 \ 127 // RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-CL10 128 // RUN: %clang_cc1 %s -E -dM -o - -x cl -cl-std=CL1.1 \ 129 // RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-CL11 130 // RUN: %clang_cc1 %s -E -dM -o - -x cl -cl-std=CL1.2 \ 131 // RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-CL12 132 // RUN: %clang_cc1 %s -E -dM -o - -x cl -cl-std=CL2.0 \ 133 // RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-CL20 134 // RUN: %clang_cc1 %s -E -dM -o - -x cl -cl-std=CL3.0 \ 135 // RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-CL30 136 // RUN: %clang_cc1 %s -E -dM -o - -x cl -cl-fast-relaxed-math \ 137 // RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-FRM 138 // RUN: %clang_cc1 %s -E -dM -o - -x cl -cl-std=clc++ \ 139 // RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-CLCPP10 140 // CHECK-CL10: #define CL_VERSION_1_0 100 141 // CHECK-CL10: #define CL_VERSION_1_1 110 142 // CHECK-CL10: #define CL_VERSION_1_2 120 143 // CHECK-CL10: #define CL_VERSION_2_0 200 144 // CHECK-CL10: #define CL_VERSION_3_0 300 145 // CHECK-CL10: #define __OPENCL_C_VERSION__ 100 146 // CHECK-CL10-NOT: #define __FAST_RELAXED_MATH__ 1 147 // CHECK-CL11: #define CL_VERSION_1_0 100 148 // CHECK-CL11: #define CL_VERSION_1_1 110 149 // CHECK-CL11: #define CL_VERSION_1_2 120 150 // CHECK-CL11: #define CL_VERSION_2_0 200 151 // CHECK-CL11: #define CL_VERSION_3_0 300 152 // CHECK-CL11: #define __OPENCL_C_VERSION__ 110 153 // CHECK-CL11-NOT: #define __FAST_RELAXED_MATH__ 1 154 // CHECK-CL12: #define CL_VERSION_1_0 100 155 // CHECK-CL12: #define CL_VERSION_1_1 110 156 // CHECK-CL12: #define CL_VERSION_1_2 120 157 // CHECK-CL12: #define CL_VERSION_2_0 200 158 // CHECK-CL12: #define CL_VERSION_3_0 300 159 // CHECK-CL12: #define __OPENCL_C_VERSION__ 120 160 // CHECK-CL12-NOT: #define __FAST_RELAXED_MATH__ 1 161 // CHECK-CL20: #define CL_VERSION_1_0 100 162 // CHECK-CL20: #define CL_VERSION_1_1 110 163 // CHECK-CL20: #define CL_VERSION_1_2 120 164 // CHECK-CL20: #define CL_VERSION_2_0 200 165 // CHECK-CL20: #define CL_VERSION_3_0 300 166 // CHECK-CL20: #define __OPENCL_C_VERSION__ 200 167 // CHECK-CL20-NOT: #define __FAST_RELAXED_MATH__ 1 168 // CHECK-CL30: #define CL_VERSION_1_0 100 169 // CHECK-CL30: #define CL_VERSION_1_1 110 170 // CHECK-CL30: #define CL_VERSION_1_2 120 171 // CHECK-CL30: #define CL_VERSION_2_0 200 172 // CHECK-CL30: #define CL_VERSION_3_0 300 173 // CHECK-CL30: #define __OPENCL_C_VERSION__ 300 174 // CHECK-CL30-NOT: #define __FAST_RELAXED_MATH__ 1 175 // CHECK-FRM: #define __FAST_RELAXED_MATH__ 1 176 // CHECK-CLCPP10: #define __CL_CPP_VERSION_1_0__ 100 177 // CHECK-CLCPP10: #define __OPENCL_CPP_VERSION__ 100 178 // CHECK-CLCPP10-NOT: #define __FAST_RELAXED_MATH__ 1 179 // CHECK-CLCPP10-NOT: #define __ENDIAN_LITTLE__ 1 180 181 // RUN: %clang_cc1 %s -E -dM -o - -x cl \ 182 // RUN: | FileCheck %s --check-prefix=MSCOPE 183 // MSCOPE:#define __OPENCL_MEMORY_SCOPE_ALL_SVM_DEVICES 3 184 // MSCOPE:#define __OPENCL_MEMORY_SCOPE_DEVICE 2 185 // MSCOPE:#define __OPENCL_MEMORY_SCOPE_SUB_GROUP 4 186 // MSCOPE:#define __OPENCL_MEMORY_SCOPE_WORK_GROUP 1 187 // MSCOPE:#define __OPENCL_MEMORY_SCOPE_WORK_ITEM 0 188 189 // RUN: %clang_cc1 %s -E -dM -o - -x cl -triple spir-unknown-unknown \ 190 // RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-SPIR 191 // CHECK-SPIR-DAG: #define __IMAGE_SUPPORT__ 1 192 // CHECK-SPIR-DAG: #define __SPIR__ 1 193 // CHECK-SPIR-DAG: #define __SPIR32__ 1 194 // CHECK-SPIR-NOT: #define __SPIR64__ 1 195 196 // RUN: %clang_cc1 %s -E -dM -o - -x cl -triple spir64-unknown-unknown \ 197 // RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-SPIR64 198 // CHECK-SPIR64-DAG: #define __IMAGE_SUPPORT__ 1 199 // CHECK-SPIR64-DAG: #define __SPIR__ 1 200 // CHECK-SPIR64-DAG: #define __SPIR64__ 1 201 // CHECK-SPIR64-NOT: #define __SPIR32__ 1 202 203 // RUN: %clang_cc1 %s -E -dM -o - -x hip -triple amdgcn-amd-amdhsa \ 204 // RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-HIP 205 // CHECK-HIP-NOT: #define __CUDA_ARCH__ 206 // CHECK-HIP: #define __HIPCC__ 1 207 // CHECK-HIP-NOT: #define __HIP_DEVICE_COMPILE__ 1 208 // CHECK-HIP: #define __HIP__ 1 209 210 // RUN: %clang_cc1 %s -E -dM -o - -x hip -triple amdgcn-amd-amdhsa \ 211 // RUN: -fcuda-is-device \ 212 // RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-HIP-DEV 213 // CHECK-HIP-DEV-NOT: #define __CUDA_ARCH__ 214 // CHECK-HIP-DEV: #define __HIPCC__ 1 215 // CHECK-HIP-DEV: #define __HIP_DEVICE_COMPILE__ 1 216 // CHECK-HIP-DEV: #define __HIP__ 1 217