From 3ad39e9878310e5317ee73c9b353c1e2c1c5c4ee Mon Sep 17 00:00:00 2001 From: Richard Qin Date: Sat, 11 Jul 2026 22:48:30 +0800 Subject: lib: establish Zircon libc++ and KTL foundation --- .../libcxx/include/c++/v1/experimental/simd | 96 ++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 third_party/libcxx/include/c++/v1/experimental/simd (limited to 'third_party/libcxx/include/c++/v1/experimental/simd') diff --git a/third_party/libcxx/include/c++/v1/experimental/simd b/third_party/libcxx/include/c++/v1/experimental/simd new file mode 100644 index 0000000..2e1c781 --- /dev/null +++ b/third_party/libcxx/include/c++/v1/experimental/simd @@ -0,0 +1,96 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP_EXPERIMENTAL_SIMD +#define _LIBCPP_EXPERIMENTAL_SIMD + +/* + experimental/simd synopsis + +namespace std::experimental { +inline namespace parallelism_v2 { + namespace simd_abi { + using scalar = see below; + template using fixed_size = see below; + template inline constexpr int max_fixed_size = implementation-defined; + template using compatible = implementation-defined; + template using native = implementation-defined; + + template struct deduce { using type = see below; }; + template using deduce_t = + typename deduce::type; + } // namespace simd_abi + + // class template simd [simd.class] + template > class simd; + template using native_simd = simd>; + template using fixed_size_simd = simd>; + + // class template simd_mask [simd.mask.class] + template > class simd_mask; + template using native_simd_mask = simd_mask>; + template using fixed_size_simd_mask = simd_mask>; + + // memory alignment + struct element_aligned_tag {}; + struct vector_aligned_tag {}; + template struct overaligned_tag {}; + inline constexpr element_aligned_tag element_aligned{}; + inline constexpr vector_aligned_tag vector_aligned{}; + template inline constexpr overaligned_tag overaligned{}; + + // traits [simd.traits] + template struct is_abi_tag; + template inline constexpr bool is_abi_tag_v = is_abi_tag::value; + + template struct is_simd; + template inline constexpr bool is_simd_v = is_simd::value; + + template struct is_simd_mask; + template inline constexpr bool is_simd_mask_v = is_simd_mask::value; + + template struct is_simd_flag_type; + template inline constexpr bool is_simd_flag_type_v = is_simd_flag_type::value; + + template> struct simd_size; + template> + inline constexpr size_t simd_size_v = simd_size::value; + + template struct memory_alignment; + template + inline constexpr size_t memory_alignment_v = memory_alignment::value; + +} // namespace parallelism_v2 +} // namespace std::experimental + +*/ + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if __cplusplus < 201103L && defined(_LIBCPP_USE_FROZEN_CXX03_HEADERS) +# include <__cxx03/__config> +#else +# include <__config> +# include +# include +# include +# include +# include +# include +# include +# include + +# if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20 +# include +# endif +#endif // __cplusplus < 201103L && defined(_LIBCPP_USE_FROZEN_CXX03_HEADERS) + +#endif /* _LIBCPP_EXPERIMENTAL_SIMD */ -- cgit v1.2.3