1 1.1 mrg // Components for element-wise operations on data-parallel objects -*- C++ -*- 2 1.1 mrg 3 1.1 mrg // Copyright (C) 2020-2022 Free Software Foundation, Inc. 4 1.1 mrg // 5 1.1 mrg // This file is part of the GNU ISO C++ Library. This library is free 6 1.1 mrg // software; you can redistribute it and/or modify it under the 7 1.1 mrg // terms of the GNU General Public License as published by the 8 1.1 mrg // Free Software Foundation; either version 3, or (at your option) 9 1.1 mrg // any later version. 10 1.1 mrg 11 1.1 mrg // This library is distributed in the hope that it will be useful, 12 1.1 mrg // but WITHOUT ANY WARRANTY; without even the implied warranty of 13 1.1 mrg // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 1.1 mrg // GNU General Public License for more details. 15 1.1 mrg 16 1.1 mrg // Under Section 7 of GPL version 3, you are granted additional 17 1.1 mrg // permissions described in the GCC Runtime Library Exception, version 18 1.1 mrg // 3.1, as published by the Free Software Foundation. 19 1.1 mrg 20 1.1 mrg // You should have received a copy of the GNU General Public License and 21 1.1 mrg // a copy of the GCC Runtime Library Exception along with this program; 22 1.1 mrg // see the files COPYING3 and COPYING.RUNTIME respectively. If not, see 23 1.1 mrg // <http://www.gnu.org/licenses/>. 24 1.1 mrg 25 1.1 mrg /** @file experimental/simd 26 1.1 mrg * This is a TS C++ Library header. 27 1.1 mrg */ 28 1.1 mrg 29 1.1 mrg // 30 1.1 mrg // N4773 9 data-parallel types library 31 1.1 mrg // 32 1.1 mrg 33 1.1 mrg #ifndef _GLIBCXX_EXPERIMENTAL_SIMD 34 1.1 mrg #define _GLIBCXX_EXPERIMENTAL_SIMD 35 1.1 mrg 36 1.1 mrg #if __cplusplus >= 201703L 37 1.1 mrg 38 1.1 mrg /** @defgroup par-ts Parallelism TS 39 1.1 mrg * @ingroup experimental 40 1.1 mrg * 41 1.1 mrg * Components defined by the _C++ Extensions for Parallelism_ 42 1.1 mrg * Technical Specification. 43 1.1 mrg * 44 1.1 mrg * - ISO/IEC TS 19570:2015 C++ Extensions for Parallelism 45 1.1 mrg * - ISO/IEC TS 19570:2018 C++ Extensions for Parallelism, Version 2 46 1.1 mrg */ 47 1.1 mrg 48 1.1 mrg /** @defgroup ts_simd Data parallel extensions 49 1.1 mrg * @ingroup par-ts 50 1.1 mrg * 51 1.1 mrg * Data-parallel types library. 52 1.1 mrg * @since C++17 53 1.1 mrg */ 54 1.1 mrg /// @ingroup ts_simd 55 1.1 mrg #define __cpp_lib_experimental_parallel_simd 201803 56 1.1 mrg 57 1.1 mrg #pragma GCC diagnostic push 58 1.1 mrg // Many [[gnu::vector_size(N)]] types might lead to a -Wpsabi warning which is 59 1.1 mrg // irrelevant as those functions never appear on ABI borders 60 1.1 mrg #ifndef __clang__ 61 1.1 mrg #pragma GCC diagnostic ignored "-Wpsabi" 62 1.1 mrg #endif 63 1.1 mrg 64 1.1 mrg // If __OPTIMIZE__ is not defined some intrinsics are defined as macros, making 65 1.1 mrg // use of C casts internally. This requires us to disable the warning as it 66 1.1 mrg // would otherwise yield many false positives. 67 1.1 mrg #ifndef __OPTIMIZE__ 68 1.1 mrg #pragma GCC diagnostic ignored "-Wold-style-cast" 69 1.1 mrg #endif 70 1.1 mrg 71 1.1 mrg #include "bits/simd_detail.h" 72 1.1 mrg #include "bits/simd.h" 73 1.1 mrg #include "bits/simd_fixed_size.h" 74 1.1 mrg #include "bits/simd_scalar.h" 75 1.1 mrg #include "bits/simd_builtin.h" 76 1.1 mrg #include "bits/simd_converter.h" 77 1.1 mrg #if _GLIBCXX_SIMD_X86INTRIN 78 1.1 mrg #include "bits/simd_x86.h" 79 1.1 mrg #elif _GLIBCXX_SIMD_HAVE_NEON 80 1.1 mrg #include "bits/simd_neon.h" 81 1.1 mrg #elif __ALTIVEC__ 82 1.1 mrg #include "bits/simd_ppc.h" 83 1.1 mrg #endif 84 1.1 mrg #include "bits/simd_math.h" 85 1.1 mrg 86 1.1 mrg #pragma GCC diagnostic pop 87 1.1 mrg 88 1.1 mrg #endif // C++17 89 1.1 mrg #endif // _GLIBCXX_EXPERIMENTAL_SIMD 90 1.1 mrg // vim: ft=cpp 91