+2023-05-23 Matthias Kretz <m.kretz@gsi.de>
+
+ Backported from master:
+ 2023-05-23 Matthias Kretz <m.kretz@gsi.de>
+
+ PR libstdc++/109261
+ * include/experimental/bits/simd.h (_SimdWrapper::_M_set):
+ Avoid vector builtin subscripting in constant expressions.
+ (resizing_simd_cast): Avoid memcpy if constant_evaluated.
+ (const_where_expression, where_expression, where)
+ (__extract_part, simd_mask, _SimdIntOperators, simd): Add either
+ _GLIBCXX_SIMD_CONSTEXPR (on public APIs), or constexpr (on
+ internal APIs).
+ * include/experimental/bits/simd_builtin.h (__vector_permute)
+ (__vector_shuffle, __extract_part, _GnuTraits::_SimdCastType1)
+ (_GnuTraits::_SimdCastType2, _SimdImplBuiltin)
+ (_MaskImplBuiltin::_S_store): Add constexpr.
+ (_CommonImplBuiltin::_S_store_bool_array)
+ (_SimdImplBuiltin::_S_load, _SimdImplBuiltin::_S_store)
+ (_SimdImplBuiltin::_S_reduce, _MaskImplBuiltin::_S_load): Add
+ constant_evaluated case.
+ * include/experimental/bits/simd_fixed_size.h
+ (_S_masked_load): Reword comment.
+ (__tuple_element_meta, __make_meta, _SimdTuple::_M_apply_r)
+ (_SimdTuple::_M_subscript_read, _SimdTuple::_M_subscript_write)
+ (__make_simd_tuple, __optimize_simd_tuple, __extract_part)
+ (__autocvt_to_simd, _Fixed::__traits::_SimdBase)
+ (_Fixed::__traits::_SimdCastType, _SimdImplFixedSize): Add
+ constexpr.
+ (_SimdTuple::operator[], _M_set): Add constexpr and add
+ constant_evaluated case.
+ (_MaskImplFixedSize::_S_load): Add constant_evaluated case.
+ * include/experimental/bits/simd_scalar.h: Add constexpr.
+ * include/experimental/bits/simd_x86.h (_CommonImplX86): Add
+ constexpr and add constant_evaluated case.
+ (_SimdImplX86::_S_equal_to, _S_not_equal_to, _S_less)
+ (_S_less_equal): Value-initialize to satisfy constexpr
+ evaluation.
+ (_MaskImplX86::_S_load): Add constant_evaluated case.
+ (_MaskImplX86::_S_store): Add constexpr and constant_evaluated
+ case. Value-initialize local variables.
+ (_MaskImplX86::_S_logical_and, _S_logical_or, _S_bit_not)
+ (_S_bit_and, _S_bit_or, _S_bit_xor): Add constant_evaluated
+ case.
+ * testsuite/experimental/simd/pr109261_constexpr_simd.cc: New
+ test.
+
+2023-05-23 Matthias Kretz <m.kretz@gsi.de>
+
+ Backported from master:
+ 2023-05-22 Matthias Kretz <m.kretz@gsi.de>
+
+ * include/experimental/bits/simd_builtin.h (_S_fpclassify): Move
+ __infn into #ifdef'ed block.
+ * testsuite/experimental/simd/tests/fpclassify.cc: Declare
+ constants only when used.
+ * testsuite/experimental/simd/tests/frexp.cc: Likewise.
+ * testsuite/experimental/simd/tests/logarithm.cc: Likewise.
+ * testsuite/experimental/simd/tests/trunc_ceil_floor.cc:
+ Likewise.
+ * testsuite/experimental/simd/tests/ldexp_scalbn_scalbln_modf.cc:
+ Move totest and expect1 into #ifdef'ed block.
+
+2023-05-23 Matthias Kretz <m.kretz@gsi.de>
+
+ Backported from master:
+ 2023-03-28 Matthias Kretz <m.kretz@gsi.de>
+
+ * include/experimental/bits/simd.h (is_simd_flag_type): New.
+ (_IsSimdFlagType): New.
+ (copy_from, copy_to, load ctors): Constrain _Flags using
+ _IsSimdFlagType.
+
+2023-05-23 Matthias Kretz <m.kretz@gsi.de>
+
+ Backported from master:
+ 2023-03-28 Matthias Kretz <m.kretz@gsi.de>
+
+ * include/experimental/bits/simd_x86.h (_SimdImplX86): Use
+ _Base::_S_divides if the optimized _S_divides function is hidden
+ via the preprocessor.
+
+2023-05-23 Matthias Kretz <m.kretz@gsi.de>
+
+ Backported from master:
+ 2023-03-21 Matthias Kretz <m.kretz@gsi.de>
+
+ * include/experimental/bits/simd_detail.h: Don't declare the
+ simd API as constexpr with Clang.
+ * include/experimental/bits/simd_x86.h (__movm): New.
+ (_S_blend_avx512): Resolve FIXME. Implement blend using __movm
+ and ?:.
+ (_SimdImplX86::_S_masked_unary): Clang does not implement the
+ same builtins. Implement the function using __movm, ?:, and -
+ operators on vector_size types instead.
+
+2023-05-23 Matthias Kretz <m.kretz@gsi.de>
+
+ Backported from master:
+ 2023-02-24 Matthias Kretz <m.kretz@gsi.de>
+
+ * include/experimental/bits/simd.h: Line breaks and indenting
+ fixed to follow the libstdc++ standard.
+ * include/experimental/bits/simd_builtin.h: Likewise.
+ * include/experimental/bits/simd_fixed_size.h: Likewise.
+ * include/experimental/bits/simd_neon.h: Likewise.
+ * include/experimental/bits/simd_ppc.h: Likewise.
+ * include/experimental/bits/simd_scalar.h: Likewise.
+ * include/experimental/bits/simd_x86.h: Likewise.
+
+2023-05-23 Matthias Kretz <m.kretz@gsi.de>
+
+ Backported from master:
+ 2023-02-24 Matthias Kretz <m.kretz@gsi.de>
+
+ PR libstdc++/108030
+ * include/experimental/bits/simd_fixed_size.h
+ (_SimdImplFixedSize::_S_broadcast): Replace inline with
+ _GLIBCXX_SIMD_INTRINSIC.
+ (_SimdImplFixedSize::_S_generate): Likewise.
+ (_SimdImplFixedSize::_S_load): Likewise.
+ (_SimdImplFixedSize::_S_masked_load): Likewise.
+ (_SimdImplFixedSize::_S_store): Likewise.
+ (_SimdImplFixedSize::_S_masked_store): Likewise.
+ (_SimdImplFixedSize::_S_min): Likewise.
+ (_SimdImplFixedSize::_S_max): Likewise.
+ (_SimdImplFixedSize::_S_complement): Likewise.
+ (_SimdImplFixedSize::_S_unary_minus): Likewise.
+ (_SimdImplFixedSize::_S_plus): Likewise.
+ (_SimdImplFixedSize::_S_minus): Likewise.
+ (_SimdImplFixedSize::_S_multiplies): Likewise.
+ (_SimdImplFixedSize::_S_divides): Likewise.
+ (_SimdImplFixedSize::_S_modulus): Likewise.
+ (_SimdImplFixedSize::_S_bit_and): Likewise.
+ (_SimdImplFixedSize::_S_bit_or): Likewise.
+ (_SimdImplFixedSize::_S_bit_xor): Likewise.
+ (_SimdImplFixedSize::_S_bit_shift_left): Likewise.
+ (_SimdImplFixedSize::_S_bit_shift_right): Likewise.
+ (_SimdImplFixedSize::_S_remquo): Add inline keyword (to be
+ explicit about not always-inline, yet).
+ (_SimdImplFixedSize::_S_isinf): Likewise.
+ (_SimdImplFixedSize::_S_isfinite): Likewise.
+ (_SimdImplFixedSize::_S_isnan): Likewise.
+ (_SimdImplFixedSize::_S_isnormal): Likewise.
+ (_SimdImplFixedSize::_S_signbit): Likewise.
+
+2023-05-23 Matthias Kretz <m.kretz@gsi.de>
+
+ Backported from master:
+ 2023-02-24 Matthias Kretz <m.kretz@gsi.de>
+
+ PR libstdc++/108856
+ * include/experimental/bits/simd_builtin.h
+ (_SimdImplBuiltin::_S_masked_unary): More efficient
+ implementation of masked inc-/decrement for integers and floats
+ without AVX2.
+ * include/experimental/bits/simd_x86.h
+ (_SimdImplX86::_S_masked_unary): New. Use AVX512 masked subtract
+ builtins for masked inc-/decrement.
+
+2023-05-23 Matthias Kretz <m.kretz@gsi.de>
+
+ Backported from master:
+ 2023-02-23 Matthias Kretz <m.kretz@gsi.de>
+
+ * testsuite/experimental/simd/tests/reductions.cc: Introduce
+ max_distance as the type-dependent max error.
+
+2023-05-23 Matthias Kretz <m.kretz@gsi.de>
+
+ Backported from master:
+ 2023-02-23 Matthias Kretz <m.kretz@gsi.de>
+
+ PR libstdc++/108030
+ * include/experimental/bits/simd_detail.h
+ (_GLIBCXX_SIMD_ALWAYS_INLINE_LAMBDA): Define as empty for
+ __clang__.
+
+2023-05-23 Matthias Kretz <m.kretz@gsi.de>
+
+ Backported from master:
+ 2023-02-16 Matthias Kretz <m.kretz@gsi.de>
+
+ PR libstdc++/108030
+ * include/experimental/bits/simd_detail.h: Define
+ _GLIBCXX_SIMD_ALWAYS_INLINE_LAMBDA.
+ * include/experimental/bits/simd.h: Annotate lambdas with
+ _GLIBCXX_SIMD_ALWAYS_INLINE_LAMBDA.
+ * include/experimental/bits/simd_builtin.h: Ditto.
+ * include/experimental/bits/simd_converter.h: Ditto.
+ * include/experimental/bits/simd_fixed_size.h: Ditto.
+ * include/experimental/bits/simd_math.h: Ditto.
+ * include/experimental/bits/simd_neon.h: Ditto.
+ * include/experimental/bits/simd_x86.h: Ditto.
+
2023-05-16 Jonathan Wakely <jwakely@redhat.com>
Backported from master: