[libcxx-commits] [libcxx] 7dc5635 - [libc++][PSTL] Simplify pstl_config.h

Nikolas Klauser via libcxx-commits libcxx-commits at lists.llvm.org
Mon May 1 16:45:44 PDT 2023


Author: Nikolas Klauser
Date: 2023-05-01T16:45:37-07:00
New Revision: 7dc5635d71ea919c933a6dc7c204d7bcfb8711b8

URL: https://github.com/llvm/llvm-project/commit/7dc5635d71ea919c933a6dc7c204d7bcfb8711b8
DIFF: https://github.com/llvm/llvm-project/commit/7dc5635d71ea919c933a6dc7c204d7bcfb8711b8.diff

LOG: [libc++][PSTL] Simplify pstl_config.h

This is done by removing configurations we don't support.

Reviewed By: ldionne, #libc

Spies: libcxx-commits

Differential Revision: https://reviews.llvm.org/D149499

Added: 
    

Modified: 
    libcxx/include/__pstl/internal/pstl_config.h

Removed: 
    


################################################################################
diff  --git a/libcxx/include/__pstl/internal/pstl_config.h b/libcxx/include/__pstl/internal/pstl_config.h
index 93618639e749..48ef8a2fd77c 100644
--- a/libcxx/include/__pstl/internal/pstl_config.h
+++ b/libcxx/include/__pstl/internal/pstl_config.h
@@ -10,79 +10,31 @@
 #ifndef _PSTL_CONFIG_H
 #define _PSTL_CONFIG_H
 
+#include <__config>
+
 // TODO: Make this a proper configuration option
 #define _PSTL_PAR_BACKEND_SERIAL
 
-// The version is XYYZ, where X is major, YY is minor, and Z is patch (i.e. X.YY.Z)
-#define _PSTL_VERSION 16000
-#define _PSTL_VERSION_MAJOR (_PSTL_VERSION / 1000)
-#define _PSTL_VERSION_MINOR ((_PSTL_VERSION % 1000) / 10)
-#define _PSTL_VERSION_PATCH (_PSTL_VERSION % 10)
-
-#if !defined(_PSTL_PAR_BACKEND_SERIAL) && !defined(_PSTL_PAR_BACKEND_TBB) && !defined(_PSTL_PAR_BACKEND_OPENMP)
-#    error "A parallel backend must be specified"
-#endif
-
-// Check the user-defined macro for warnings
-#if defined(PSTL_USAGE_WARNINGS)
-#    define _PSTL_USAGE_WARNINGS
-#endif
-
-#if defined(_LIBCPP_VERSION)
-#    include <__assert>
-#    define _PSTL_ASSERT(pred) _LIBCPP_ASSERT(pred, "")
-#elif defined(__GLIBCXX__)
-#    define _PSTL_ASSERT(pred) __glibcxx_assert(pred)
-#else
-#    include <cassert>
-#    define _PSTL_ASSERT(pred) (assert((pred)))
-#endif
-
-// Portability "#pragma" definition
-#ifdef _MSC_VER
-#    define _PSTL_PRAGMA(x) __pragma(x)
-#else
-#    define _PSTL_PRAGMA(x) _Pragma(#    x)
-#endif
-
-#define _PSTL_STRING_AUX(x) #x
-#define _PSTL_STRING(x) _PSTL_STRING_AUX(x)
-#define _PSTL_STRING_CONCAT(x, y) x #y
+#include <__assert>
+#define _PSTL_ASSERT(pred) _LIBCPP_ASSERT(pred, "")
 
-// note that when ICC or Clang is in use, _PSTL_GCC_VERSION might not fully match
-// the actual GCC version on the system.
-#define _PSTL_GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
-
-#if defined(__clang__)
-// according to clang documentation, version can be vendor specific
-#    define _PSTL_CLANG_VERSION (__clang_major__ * 10000 + __clang_minor__ * 100 + __clang_patchlevel__)
-#endif
+#define _PSTL_PRAGMA(x) _Pragma(#    x)
 
 // Enable SIMD for compilers that support OpenMP 4.0
-#if (defined(_OPENMP) && _OPENMP >= 201307) || \
-    (defined(__INTEL_COMPILER) && __INTEL_COMPILER >= 1600) || \
-    (!defined(__INTEL_COMPILER) && _PSTL_GCC_VERSION >= 40900) || \
-    defined(__clang__)
+#if (defined(_OPENMP) && _OPENMP >= 201307)
 #    define _PSTL_PRAGMA_SIMD _PSTL_PRAGMA(omp simd)
 #    define _PSTL_PRAGMA_DECLARE_SIMD _PSTL_PRAGMA(omp declare simd)
 #    define _PSTL_PRAGMA_SIMD_REDUCTION(PRM) _PSTL_PRAGMA(omp simd reduction(PRM))
-#elif !defined(_MSC_VER) //#pragma simd
-#    define _PSTL_PRAGMA_SIMD _PSTL_PRAGMA(simd)
-#    define _PSTL_PRAGMA_DECLARE_SIMD
-#    define _PSTL_PRAGMA_SIMD_REDUCTION(PRM) _PSTL_PRAGMA(simd reduction(PRM))
 #else //no simd
 #    define _PSTL_PRAGMA_SIMD
 #    define _PSTL_PRAGMA_DECLARE_SIMD
 #    define _PSTL_PRAGMA_SIMD_REDUCTION(PRM)
 #endif //Enable SIMD
 
-#if defined(__INTEL_COMPILER)
-#    define _PSTL_PRAGMA_FORCEINLINE _PSTL_PRAGMA(forceinline)
-#else
-#    define _PSTL_PRAGMA_FORCEINLINE
-#endif
+#define _PSTL_PRAGMA_FORCEINLINE
 
-#if defined(__INTEL_COMPILER) && __INTEL_COMPILER >= 1900
+// TODO: find out when to enable these annotations
+#if 0
 #    define _PSTL_PRAGMA_SIMD_SCAN(PRM) _PSTL_PRAGMA(omp simd reduction(inscan, PRM))
 #    define _PSTL_PRAGMA_SIMD_INCLUSIVE_SCAN(PRM) _PSTL_PRAGMA(omp scan inclusive(PRM))
 #    define _PSTL_PRAGMA_SIMD_EXCLUSIVE_SCAN(PRM) _PSTL_PRAGMA(omp scan exclusive(PRM))
@@ -92,57 +44,18 @@
 #    define _PSTL_PRAGMA_SIMD_EXCLUSIVE_SCAN(PRM)
 #endif
 
-// Should be defined to 1 for environments with a vendor implementation of C++17 execution policies
-#define _PSTL_CPP17_EXECUTION_POLICIES_PRESENT (_MSC_VER >= 1912 && _MSVC_LANG >= 201703L) ||                          \
-    (_GLIBCXX_RELEASE >= 9 && __GLIBCXX__ >= 20190503 && __cplusplus >= 201703L)
-
-#if (defined(_MSC_VER) && _MSC_VER >= 1900) || \
-    __cplusplus >= 201300L || \
-    __cpp_lib_robust_nonmodifying_seq_ops == 201304
-#   define _PSTL_CPP14_2RANGE_MISMATCH_EQUAL_PRESENT
-#endif
-#if (defined(_MSC_VER) && _MSC_VER >= 1900) || \
-    __cplusplus >= 201402L || \
-    __cpp_lib_make_reverse_iterator == 201402
-#   define _PSTL_CPP14_MAKE_REVERSE_ITERATOR_PRESENT
-#endif
-#if (defined(_MSC_VER) && _MSC_VER >= 1900) || __cplusplus >= 201402L
-#   define _PSTL_CPP14_INTEGER_SEQUENCE_PRESENT
-#endif
-#if (defined(__INTEL_COMPILER) && __INTEL_COMPILER >= 1700) || \
-    (defined(_MSC_FULL_VER) && _MSC_FULL_VER >= 190023918) || \
-    __cplusplus >= 201402L
-#   define _PSTL_CPP14_VARIABLE_TEMPLATES_PRESENT
-#endif
-
-#if defined(__INTEL_COMPILER) && __INTEL_COMPILER >= 1800
-#   define _PSTL_EARLYEXIT_PRESENT
-#   define _PSTL_MONOTONIC_PRESENT
-#endif
+#define _PSTL_CPP14_2RANGE_MISMATCH_EQUAL_PRESENT
+#define _PSTL_CPP14_MAKE_REVERSE_ITERATOR_PRESENT
+#define _PSTL_CPP14_INTEGER_SEQUENCE_PRESENT
+#define _PSTL_CPP14_VARIABLE_TEMPLATES_PRESENT
 
-#if (defined(__INTEL_COMPILER) && __INTEL_COMPILER >= 1900) || \
-    (!defined(__INTEL_COMPILER) && _PSTL_GCC_VERSION >= 40900) || \
-    (defined(_OPENMP) && _OPENMP >= 201307)
+#if defined(_OPENMP) && _OPENMP >= 201307
 #    define _PSTL_UDR_PRESENT
 #endif
 
-#if defined(__INTEL_COMPILER) && __INTEL_COMPILER >= 1900 && __INTEL_COMPILER_BUILD_DATE >= 20180626
-#   define _PSTL_UDS_PRESENT
-#endif
-
-#if defined(_PSTL_EARLYEXIT_PRESENT)
-#    define _PSTL_PRAGMA_SIMD_EARLYEXIT _PSTL_PRAGMA(omp simd early_exit)
-#else
-#    define _PSTL_PRAGMA_SIMD_EARLYEXIT
-#endif
-
-#if defined(_PSTL_MONOTONIC_PRESENT)
-#    define _PSTL_PRAGMA_SIMD_ORDERED_MONOTONIC(PRM) _PSTL_PRAGMA(omp ordered simd monotonic(PRM))
-#    define _PSTL_PRAGMA_SIMD_ORDERED_MONOTONIC_2ARGS(PRM1, PRM2) _PSTL_PRAGMA(omp ordered simd monotonic(PRM1, PRM2))
-#else
-#    define _PSTL_PRAGMA_SIMD_ORDERED_MONOTONIC(PRM)
-#    define _PSTL_PRAGMA_SIMD_ORDERED_MONOTONIC_2ARGS(PRM1, PRM2)
-#endif
+#define _PSTL_PRAGMA_SIMD_EARLYEXIT
+#define _PSTL_PRAGMA_SIMD_ORDERED_MONOTONIC(PRM)
+#define _PSTL_PRAGMA_SIMD_ORDERED_MONOTONIC_2ARGS(PRM1, PRM2)
 
 // Declaration of reduction functor, where
 // NAME - the name of the functor
@@ -154,43 +67,9 @@
 #define _PSTL_PRAGMA_DECLARE_REDUCTION(NAME, OP)                                                                       \
     _PSTL_PRAGMA(omp declare reduction(NAME:OP : omp_out(omp_in)) initializer(omp_priv = omp_orig))
 
-#if defined(__INTEL_COMPILER) && __INTEL_COMPILER >= 1600
-#    define _PSTL_PRAGMA_VECTOR_UNALIGNED _PSTL_PRAGMA(vector unaligned)
-#else
-#    define _PSTL_PRAGMA_VECTOR_UNALIGNED
-#endif
-
-// Check the user-defined macro to use non-temporal stores
-#if defined(PSTL_USE_NONTEMPORAL_STORES) && (__INTEL_COMPILER >= 1600)
-#    define _PSTL_USE_NONTEMPORAL_STORES_IF_ALLOWED _PSTL_PRAGMA(vector nontemporal)
-#else
-#    define _PSTL_USE_NONTEMPORAL_STORES_IF_ALLOWED
-#endif
-
-#if defined(_MSC_VER) || defined(__INTEL_COMPILER) // the preprocessors don't type a message location
-#    define _PSTL_PRAGMA_LOCATION __FILE__ ":" _PSTL_STRING(__LINE__) ": [Parallel STL message]: "
-#else
-#    define _PSTL_PRAGMA_LOCATION " [Parallel STL message]: "
-#endif
-
-#define _PSTL_PRAGMA_MESSAGE_IMPL(x) _PSTL_PRAGMA(message(_PSTL_STRING_CONCAT(_PSTL_PRAGMA_LOCATION, x)))
-
-#if defined(_PSTL_USAGE_WARNINGS)
-#    define _PSTL_PRAGMA_MESSAGE(x) _PSTL_PRAGMA_MESSAGE_IMPL(x)
-#    define _PSTL_PRAGMA_MESSAGE_POLICIES(x) _PSTL_PRAGMA_MESSAGE_IMPL(x)
-#else
-#    define _PSTL_PRAGMA_MESSAGE(x)
-#    define _PSTL_PRAGMA_MESSAGE_POLICIES(x)
-#endif
-
-// broken macros
-#if (defined(__GLIBCXX__) && __GLIBCXX__ < 20150716) || \
-    (defined(_MSC_VER) && _MSC_VER < 1800)
-#   define _PSTL_CPP11_STD_ROTATE_BROKEN
-#endif
-
-#if defined(__INTEL_COMPILER) && __INTEL_COMPILER == 1800
-#   define _PSTL_ICC_18_OMP_SIMD_BROKEN
-#endif
+#define _PSTL_PRAGMA_VECTOR_UNALIGNED
+#define _PSTL_USE_NONTEMPORAL_STORES_IF_ALLOWED
+#define _PSTL_PRAGMA_MESSAGE(x)
+#define _PSTL_PRAGMA_MESSAGE_POLICIES(x)
 
 #endif /* _PSTL_CONFIG_H */


        


More information about the libcxx-commits mailing list