Ok for trunk.
> Can you push it into upstream PSTL? Yes. Thanks, Tom. Jakub Jelinek writes: > Hi! > > Now that GCC supports inclusive/exclusive scans (like ICC 19.0 so far in > simd constructs only), we can enable it in PSTL as well. > > Bootstrapped/regtested on x86_64-linux and i686-linux, additionally tested > with > #include <execution> > #include <numeric> > > auto > foo (std::vector<int> &ca, std::vector<int> &co) > { > return std::inclusive_scan(std::execution::unseq, ca.begin(), ca.end(), > co.begin()); > } > > auto > bar (std::vector<int> &ca, std::vector<int> &co) > { > return std::exclusive_scan(std::execution::unseq, ca.begin(), ca.end(), > co.begin(), 0); > } > and verifying with -O2 -fopenmp-simd it is vectorized. Ok for trunk? > Can you push it into upstream PSTL? > > 2019-06-21 Jakub Jelinek <ja...@redhat.com> > > * include/pstl/pstl_config.h (_PSTL_PRAGMA_SIMD_SCAN, > _PSTL_PRAGMA_SIMD_INCLUSIVE_SCAN, _PSTL_PRAGMA_SIMD_EXCLUSIVE_SCAN): > Define to OpenMP 5.0 pragmas even for GCC 10.0+. > (_PSTL_UDS_PRESENT): Define to 1 for GCC 10.0+. > > --- libstdc++-v3/include/pstl/pstl_config.h.jj 2019-06-10 > 18:18:01.551191212 +0200 > +++ libstdc++-v3/include/pstl/pstl_config.h 2019-06-20 17:03:31.466367344 > +0200 > @@ -70,7 +70,7 @@ > # define _PSTL_PRAGMA_FORCEINLINE > #endif > > -#if (__INTEL_COMPILER >= 1900) > +#if (__INTEL_COMPILER >= 1900) || (_PSTL_GCC_VERSION >= 100000) > # 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)) > @@ -100,7 +100,11 @@ > # define _PSTL_UDR_PRESENT 0 > #endif > > -#define _PSTL_UDS_PRESENT (__INTEL_COMPILER >= 1900 && > __INTEL_COMPILER_BUILD_DATE >= 20180626) > +#if ((__INTEL_COMPILER >= 1900 && __INTEL_COMPILER_BUILD_DATE >= 20180626) > || _PSTL_GCC_VERSION >= 100000) > +# define _PSTL_UDS_PRESENT 1 > +#else > +# define _PSTL_UDS_PRESENT 0 > +#endif > > #if _PSTL_EARLYEXIT_PRESENT > # define _PSTL_PRAGMA_SIMD_EARLYEXIT _PSTL_PRAGMA(omp simd early_exit) > > Jakub