diff options
Diffstat (limited to 'test/Preprocessor/predefined-arch-macros.c')
-rw-r--r-- | test/Preprocessor/predefined-arch-macros.c | 149 |
1 files changed, 122 insertions, 27 deletions
diff --git a/test/Preprocessor/predefined-arch-macros.c b/test/Preprocessor/predefined-arch-macros.c index 883cc4d19b29a..a0eb8cbcca9ad 100644 --- a/test/Preprocessor/predefined-arch-macros.c +++ b/test/Preprocessor/predefined-arch-macros.c @@ -525,7 +525,6 @@ // CHECK_CORE_AVX2_M32: #define __PCLMUL__ 1 // CHECK_CORE_AVX2_M32: #define __POPCNT__ 1 // CHECK_CORE_AVX2_M32: #define __RDRND__ 1 -// CHECK_CORE_AVX2_M32: #define __RTM__ 1 // CHECK_CORE_AVX2_M32: #define __SSE2__ 1 // CHECK_CORE_AVX2_M32: #define __SSE3__ 1 // CHECK_CORE_AVX2_M32: #define __SSE4_1__ 1 @@ -555,7 +554,6 @@ // CHECK_CORE_AVX2_M64: #define __PCLMUL__ 1 // CHECK_CORE_AVX2_M64: #define __POPCNT__ 1 // CHECK_CORE_AVX2_M64: #define __RDRND__ 1 -// CHECK_CORE_AVX2_M64: #define __RTM__ 1 // CHECK_CORE_AVX2_M64: #define __SSE2_MATH__ 1 // CHECK_CORE_AVX2_M64: #define __SSE2__ 1 // CHECK_CORE_AVX2_M64: #define __SSE3__ 1 @@ -591,7 +589,6 @@ // CHECK_BROADWELL_M32: #define __POPCNT__ 1 // CHECK_BROADWELL_M32: #define __RDRND__ 1 // CHECK_BROADWELL_M32: #define __RDSEED__ 1 -// CHECK_BROADWELL_M32: #define __RTM__ 1 // CHECK_BROADWELL_M32: #define __SSE2__ 1 // CHECK_BROADWELL_M32: #define __SSE3__ 1 // CHECK_BROADWELL_M32: #define __SSE4_1__ 1 @@ -623,7 +620,6 @@ // CHECK_BROADWELL_M64: #define __POPCNT__ 1 // CHECK_BROADWELL_M64: #define __RDRND__ 1 // CHECK_BROADWELL_M64: #define __RDSEED__ 1 -// CHECK_BROADWELL_M64: #define __RTM__ 1 // CHECK_BROADWELL_M64: #define __SSE2_MATH__ 1 // CHECK_BROADWELL_M64: #define __SSE2__ 1 // CHECK_BROADWELL_M64: #define __SSE3__ 1 @@ -651,15 +647,18 @@ // CHECK_SKL_M32: #define __AVX__ 1 // CHECK_SKL_M32: #define __BMI2__ 1 // CHECK_SKL_M32: #define __BMI__ 1 +// CHECK_SKL_M32: #define __CLFLUSHOPT__ 1 // CHECK_SKL_M32: #define __F16C__ 1 // CHECK_SKL_M32: #define __FMA__ 1 // CHECK_SKL_M32: #define __LZCNT__ 1 // CHECK_SKL_M32: #define __MMX__ 1 +// CHECK_SKL_M32: #define __MPX__ 1 // CHECK_SKL_M32: #define __PCLMUL__ 1 // CHECK_SKL_M32: #define __POPCNT__ 1 // CHECK_SKL_M32: #define __RDRND__ 1 // CHECK_SKL_M32: #define __RDSEED__ 1 // CHECK_SKL_M32: #define __RTM__ 1 +// CHECK_SKL_M32: #define __SGX__ 1 // CHECK_SKL_M32: #define __SSE2__ 1 // CHECK_SKL_M32: #define __SSE3__ 1 // CHECK_SKL_M32: #define __SSE4_1__ 1 @@ -681,15 +680,18 @@ // CHECK_SKL_M64: #define __AVX__ 1 // CHECK_SKL_M64: #define __BMI2__ 1 // CHECK_SKL_M64: #define __BMI__ 1 +// CHECK_SKL_M64: #define __CLFLUSHOPT__ 1 // CHECK_SKL_M64: #define __F16C__ 1 // CHECK_SKL_M64: #define __FMA__ 1 // CHECK_SKL_M64: #define __LZCNT__ 1 // CHECK_SKL_M64: #define __MMX__ 1 +// CHECK_SKL_M64: #define __MPX__ 1 // CHECK_SKL_M64: #define __PCLMUL__ 1 // CHECK_SKL_M64: #define __POPCNT__ 1 // CHECK_SKL_M64: #define __RDRND__ 1 // CHECK_SKL_M64: #define __RDSEED__ 1 // CHECK_SKL_M64: #define __RTM__ 1 +// CHECK_SKL_M64: #define __SGX__ 1 // CHECK_SKL_M64: #define __SSE2_MATH__ 1 // CHECK_SKL_M64: #define __SSE2__ 1 // CHECK_SKL_M64: #define __SSE3__ 1 @@ -725,6 +727,7 @@ // CHECK_KNL_M32: #define __MMX__ 1 // CHECK_KNL_M32: #define __PCLMUL__ 1 // CHECK_KNL_M32: #define __POPCNT__ 1 +// CHECK_KNL_M32: #define __PREFETCHWT1__ 1 // CHECK_KNL_M32: #define __RDRND__ 1 // CHECK_KNL_M32: #define __RTM__ 1 // CHECK_KNL_M32: #define __SSE2__ 1 @@ -760,6 +763,7 @@ // CHECK_KNL_M64: #define __MMX__ 1 // CHECK_KNL_M64: #define __PCLMUL__ 1 // CHECK_KNL_M64: #define __POPCNT__ 1 +// CHECK_KNL_M64: #define __PREFETCHWT1__ 1 // CHECK_KNL_M64: #define __RDRND__ 1 // CHECK_KNL_M64: #define __RTM__ 1 // CHECK_KNL_M64: #define __SSE2_MATH__ 1 @@ -793,14 +797,18 @@ // CHECK_SKX_M32: #define __AVX__ 1 // CHECK_SKX_M32: #define __BMI2__ 1 // CHECK_SKX_M32: #define __BMI__ 1 +// CHECK_SKX_M32: #define __CLFLUSHOPT__ 1 +// CHECK_SKX_M32: #define __CLWB__ 1 // CHECK_SKX_M32: #define __F16C__ 1 // CHECK_SKX_M32: #define __FMA__ 1 // CHECK_SKX_M32: #define __LZCNT__ 1 // CHECK_SKX_M32: #define __MMX__ 1 +// CHECK_SKX_M32: #define __MPX__ 1 // CHECK_SKX_M32: #define __PCLMUL__ 1 // CHECK_SKX_M32: #define __POPCNT__ 1 // CHECK_SKX_M32: #define __RDRND__ 1 // CHECK_SKX_M32: #define __RTM__ 1 +// CHECK_SKX_M32: #define __SGX__ 1 // CHECK_SKX_M32: #define __SSE2__ 1 // CHECK_SKX_M32: #define __SSE3__ 1 // CHECK_SKX_M32: #define __SSE4_1__ 1 @@ -831,14 +839,18 @@ // CHECK_SKX_M64: #define __AVX__ 1 // CHECK_SKX_M64: #define __BMI2__ 1 // CHECK_SKX_M64: #define __BMI__ 1 +// CHECK_SKX_M64: #define __CLFLUSHOPT__ 1 +// CHECK_SKX_M64: #define __CLWB__ 1 // CHECK_SKX_M64: #define __F16C__ 1 // CHECK_SKX_M64: #define __FMA__ 1 // CHECK_SKX_M64: #define __LZCNT__ 1 // CHECK_SKX_M64: #define __MMX__ 1 +// CHECK_SKX_M64: #define __MPX__ 1 // CHECK_SKX_M64: #define __PCLMUL__ 1 // CHECK_SKX_M64: #define __POPCNT__ 1 // CHECK_SKX_M64: #define __RDRND__ 1 // CHECK_SKX_M64: #define __RTM__ 1 +// CHECK_SKX_M64: #define __SGX__ 1 // CHECK_SKX_M64: #define __SSE2_MATH__ 1 // CHECK_SKX_M64: #define __SSE2__ 1 // CHECK_SKX_M64: #define __SSE3__ 1 @@ -874,14 +886,17 @@ // CHECK_CNL_M32: #define __AVX__ 1 // CHECK_CNL_M32: #define __BMI2__ 1 // CHECK_CNL_M32: #define __BMI__ 1 +// CHECK_CNL_M32: #define __CLFLUSHOPT__ 1 // CHECK_CNL_M32: #define __F16C__ 1 // CHECK_CNL_M32: #define __FMA__ 1 // CHECK_CNL_M32: #define __LZCNT__ 1 // CHECK_CNL_M32: #define __MMX__ 1 +// CHECK_CNL_M32: #define __MPX__ 1 // CHECK_CNL_M32: #define __PCLMUL__ 1 // CHECK_CNL_M32: #define __POPCNT__ 1 // CHECK_CNL_M32: #define __RDRND__ 1 // CHECK_CNL_M32: #define __RTM__ 1 +// CHECK_CNL_M32: #define __SGX__ 1 // CHECK_CNL_M32: #define __SHA__ 1 // CHECK_CNL_M32: #define __SSE2__ 1 // CHECK_CNL_M32: #define __SSE3__ 1 @@ -912,14 +927,17 @@ // CHECK_CNL_M64: #define __AVX__ 1 // CHECK_CNL_M64: #define __BMI2__ 1 // CHECK_CNL_M64: #define __BMI__ 1 +// CHECK_CNL_M64: #define __CLFLUSHOPT__ 1 // CHECK_CNL_M64: #define __F16C__ 1 // CHECK_CNL_M64: #define __FMA__ 1 // CHECK_CNL_M64: #define __LZCNT__ 1 // CHECK_CNL_M64: #define __MMX__ 1 +// CHECK_CNL_M64: #define __MPX__ 1 // CHECK_CNL_M64: #define __PCLMUL__ 1 // CHECK_CNL_M64: #define __POPCNT__ 1 // CHECK_CNL_M64: #define __RDRND__ 1 // CHECK_CNL_M64: #define __RTM__ 1 +// CHECK_CNL_M64: #define __SGX__ 1 // CHECK_CNL_M64: #define __SHA__ 1 // CHECK_CNL_M64: #define __SSE2__ 1 // CHECK_CNL_M64: #define __SSE3__ 1 @@ -1860,6 +1878,8 @@ // CHECK_ZNVER1_M32: #define __AVX__ 1 // CHECK_ZNVER1_M32: #define __BMI2__ 1 // CHECK_ZNVER1_M32: #define __BMI__ 1 +// CHECK_ZNVER1_M32: #define __CLFLUSHOPT__ 1 +// CHECK_ZNVER1_M32: #define __CLZERO__ 1 // CHECK_ZNVER1_M32: #define __F16C__ 1 // CHECK_ZNVER1_M32: #define __FMA__ 1 // CHECK_ZNVER1_M32: #define __FSGSBASE__ 1 @@ -1900,6 +1920,8 @@ // CHECK_ZNVER1_M64: #define __AVX__ 1 // CHECK_ZNVER1_M64: #define __BMI2__ 1 // CHECK_ZNVER1_M64: #define __BMI__ 1 +// CHECK_ZNVER1_M64: #define __CLFLUSHOPT__ 1 +// CHECK_ZNVER1_M64: #define __CLZERO__ 1 // CHECK_ZNVER1_M64: #define __F16C__ 1 // CHECK_ZNVER1_M64: #define __FMA__ 1 // CHECK_ZNVER1_M64: #define __FSGSBASE__ 1 @@ -1935,6 +1957,14 @@ // End X86/GCC/Linux tests ------------------ // Begin PPC/GCC/Linux tests ---------------- +// Check that VSX also turns on altivec. +// RUN: %clang -mvsx -E -dM %s -o - 2>&1 \ +// RUN: -target powerpc-unknown-linux \ +// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PPC_VSX_M32 +// +// CHECK_PPC_VSX_M32: #define __ALTIVEC__ 1 +// CHECK_PPC_VSX_M32: #define __VSX__ 1 +// // RUN: %clang -mvsx -E -dM %s -o - 2>&1 \ // RUN: -target powerpc64-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PPC_VSX_M64 @@ -1958,6 +1988,24 @@ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PPC_CRYPTO_M64 // // CHECK_PPC_CRYPTO_M64: #define __CRYPTO__ 1 + +// HTM is available on power8 or later which includes all of powerpc64le as an +// ABI choice. Test that, the cpus, and the option. +// RUN: %clang -mhtm -E -dM %s -o - 2>&1 \ +// RUN: -target powerpc64-unknown-linux \ +// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PPC_HTM +// RUN: %clang -E -dM %s -o - 2>&1 \ +// RUN: -target powerpc64le-unknown-linux \ +// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PPC_HTM +// RUN: %clang -mcpu=pwr8 -E -dM %s -o - 2>&1 \ +// RUN: -target powerpc64-unknown-linux \ +// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PPC_HTM +// RUN: %clang -mcpu=pwr9 -E -dM %s -o - 2>&1 \ +// RUN: -target powerpc64-unknown-linux \ +// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PPC_HTM +// +// CHECK_PPC_HTM: #define __HTM__ 1 + // // RUN: %clang -mcpu=ppc64 -E -dM %s -o - 2>&1 \ // RUN: -target powerpc64-unknown-unknown \ @@ -2035,35 +2083,76 @@ // Begin SystemZ/GCC/Linux tests ---------------- // +// RUN: %clang -march=arch8 -E -dM %s -o - 2>&1 \ +// RUN: -target s390x-unknown-linux \ +// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ARCH8 // RUN: %clang -march=z10 -E -dM %s -o - 2>&1 \ // RUN: -target s390x-unknown-linux \ -// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_Z10 -// -// CHECK_SYSTEMZ_Z10: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 -// CHECK_SYSTEMZ_Z10: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 -// CHECK_SYSTEMZ_Z10: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 -// CHECK_SYSTEMZ_Z10: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 -// CHECK_SYSTEMZ_Z10: #define __LONG_DOUBLE_128__ 1 -// CHECK_SYSTEMZ_Z10: #define __s390__ 1 -// CHECK_SYSTEMZ_Z10: #define __s390x__ 1 -// CHECK_SYSTEMZ_Z10: #define __zarch__ 1 +// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ARCH8 +// +// CHECK_SYSTEMZ_ARCH8: #define __ARCH__ 8 +// CHECK_SYSTEMZ_ARCH8: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 +// CHECK_SYSTEMZ_ARCH8: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 +// CHECK_SYSTEMZ_ARCH8: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 +// CHECK_SYSTEMZ_ARCH8: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 +// CHECK_SYSTEMZ_ARCH8: #define __LONG_DOUBLE_128__ 1 +// CHECK_SYSTEMZ_ARCH8: #define __s390__ 1 +// CHECK_SYSTEMZ_ARCH8: #define __s390x__ 1 +// CHECK_SYSTEMZ_ARCH8: #define __zarch__ 1 +// +// RUN: %clang -march=arch9 -E -dM %s -o - 2>&1 \ +// RUN: -target s390x-unknown-linux \ +// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ARCH9 +// RUN: %clang -march=z196 -E -dM %s -o - 2>&1 \ +// RUN: -target s390x-unknown-linux \ +// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ARCH9 +// +// CHECK_SYSTEMZ_ARCH9: #define __ARCH__ 9 +// CHECK_SYSTEMZ_ARCH9: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 +// CHECK_SYSTEMZ_ARCH9: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 +// CHECK_SYSTEMZ_ARCH9: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 +// CHECK_SYSTEMZ_ARCH9: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 +// CHECK_SYSTEMZ_ARCH9: #define __LONG_DOUBLE_128__ 1 +// CHECK_SYSTEMZ_ARCH9: #define __s390__ 1 +// CHECK_SYSTEMZ_ARCH9: #define __s390x__ 1 +// CHECK_SYSTEMZ_ARCH9: #define __zarch__ 1 // +// RUN: %clang -march=arch10 -E -dM %s -o - 2>&1 \ +// RUN: -target s390x-unknown-linux \ +// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ARCH10 // RUN: %clang -march=zEC12 -E -dM %s -o - 2>&1 \ // RUN: -target s390x-unknown-linux \ -// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ZEC12 -// RUN: %clang -march=arch10 -E -dM %s -o - 2>&1 \ +// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ARCH10 +// +// CHECK_SYSTEMZ_ARCH10: #define __ARCH__ 10 +// CHECK_SYSTEMZ_ARCH10: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 +// CHECK_SYSTEMZ_ARCH10: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 +// CHECK_SYSTEMZ_ARCH10: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 +// CHECK_SYSTEMZ_ARCH10: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 +// CHECK_SYSTEMZ_ARCH10: #define __HTM__ 1 +// CHECK_SYSTEMZ_ARCH10: #define __LONG_DOUBLE_128__ 1 +// CHECK_SYSTEMZ_ARCH10: #define __s390__ 1 +// CHECK_SYSTEMZ_ARCH10: #define __s390x__ 1 +// CHECK_SYSTEMZ_ARCH10: #define __zarch__ 1 +// +// RUN: %clang -march=arch11 -E -dM %s -o - 2>&1 \ +// RUN: -target s390x-unknown-linux \ +// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ARCH11 +// RUN: %clang -march=z13 -E -dM %s -o - 2>&1 \ // RUN: -target s390x-unknown-linux \ -// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ZEC12 -// -// CHECK_SYSTEMZ_ZEC12: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 -// CHECK_SYSTEMZ_ZEC12: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 -// CHECK_SYSTEMZ_ZEC12: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 -// CHECK_SYSTEMZ_ZEC12: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 -// CHECK_SYSTEMZ_ZEC12: #define __HTM__ 1 -// CHECK_SYSTEMZ_ZEC12: #define __LONG_DOUBLE_128__ 1 -// CHECK_SYSTEMZ_ZEC12: #define __s390__ 1 -// CHECK_SYSTEMZ_ZEC12: #define __s390x__ 1 -// CHECK_SYSTEMZ_ZEC12: #define __zarch__ 1 +// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ARCH11 +// +// CHECK_SYSTEMZ_ARCH11: #define __ARCH__ 11 +// CHECK_SYSTEMZ_ARCH11: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 +// CHECK_SYSTEMZ_ARCH11: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 +// CHECK_SYSTEMZ_ARCH11: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 +// CHECK_SYSTEMZ_ARCH11: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 +// CHECK_SYSTEMZ_ARCH11: #define __HTM__ 1 +// CHECK_SYSTEMZ_ARCH11: #define __LONG_DOUBLE_128__ 1 +// CHECK_SYSTEMZ_ARCH11: #define __VX__ 1 +// CHECK_SYSTEMZ_ARCH11: #define __s390__ 1 +// CHECK_SYSTEMZ_ARCH11: #define __s390x__ 1 +// CHECK_SYSTEMZ_ARCH11: #define __zarch__ 1 // // RUN: %clang -mhtm -E -dM %s -o - 2>&1 \ // RUN: -target s390x-unknown-linux \ @@ -2071,6 +2160,12 @@ // // CHECK_SYSTEMZ_HTM: #define __HTM__ 1 // +// RUN: %clang -mvx -E -dM %s -o - 2>&1 \ +// RUN: -target s390x-unknown-linux \ +// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_VX +// +// CHECK_SYSTEMZ_VX: #define __VX__ 1 +// // RUN: %clang -fzvector -E -dM %s -o - 2>&1 \ // RUN: -target s390x-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ZVECTOR |