Lines Matching refs:simd
158 class simd; variable
924 __data(const simd<_Tp, _Ap>& __x);
928 __data(simd<_Tp, _Ap>& __x);
2980 struct rebind_simd<_Tp, simd<_Up, _Abi>,
2982 { using type = simd<_Tp, simd_abi::deduce_t<_Tp, simd_size_v<_Up, _Abi>, _Abi>>; };
2997 struct resize_simd<_Np, simd<_Tp, _Abi>, void_t<simd_abi::deduce_t<_Tp, _Np, _Abi>>>
2998 { using type = simd<_Tp, simd_abi::deduce_t<_Tp, _Np, _Abi>>; };
3018 class simd;
3021 struct is_simd<simd<_Tp, _Abi>> : public true_type {};
3024 using native_simd = simd<_Tp, simd_abi::native<_Tp>>;
3027 using fixed_size_simd = simd<_Tp, simd_abi::fixed_size<_Np>>;
3030 using __deduced_simd = simd<_Tp, simd_abi::deduce_t<_Tp, _Np>>;
3055 : __static_simd_cast_return_type<simd<_Tp, _A0>, _Up, _Ap> {};
3070 { using type = simd<_Tp, _Ap>; };
3100 simd<_Tp, _Ap>, fixed_size_simd<_Tp, simd_size_v<_Up, _Ap>>>;
3107 static_simd_cast(const simd<_Up, _Ap>& __x)
3109 if constexpr (is_same<_R, simd<_Up, _Ap>>::value)
3134 simd_bit_cast(const simd<_Up, _Abi>& __x)
3138 using _From = simd<_Up, _Abi>;
3188 simd_cast(const simd<_ValuePreserving<_Up, _To>, _Ap>& __x)
3233 resizing_simd_cast(const simd<_Up, _Ap>& __x)
3288 to_fixed_size(const simd<_Tp, _Ap>& __x)
3325 _GLIBCXX_SIMD_INTRINSIC enable_if_t<(_Np == simd<_Tp>::size()), simd<_Tp>>
3326 to_compatible(const simd<_Tp, simd_abi::fixed_size<_Np>>& __x)
3328 alignas(memory_alignment_v<simd<_Tp>>) _Tp __mem[_Np];
3625 where_expression<simd_mask<_Tp, _Ap>, simd<_Tp, _Ap>>
3626 where(const typename simd<_Tp, _Ap>::mask_type& __k, simd<_Tp, _Ap>& __value)
3631 const_where_expression<simd_mask<_Tp, _Ap>, simd<_Tp, _Ap>>
3632 where(const typename simd<_Tp, _Ap>::mask_type& __k, const simd<_Tp, _Ap>& __value)
3659 where(bool __k, simd<_Tp, _Ap>& __value) = delete;
3663 where(bool __k, const simd<_Tp, _Ap>& __value) = delete;
3751 reduce(const simd<_Tp, _Abi>& __v, _BinaryOperation __binary_op = _BinaryOperation())
3795 hmin(const simd<_Tp, _Abi>& __v) noexcept
3800 hmax(const simd<_Tp, _Abi>& __v) noexcept
3847 _GLIBCXX_SIMD_INTRINSIC _GLIBCXX_SIMD_CONSTEXPR simd<_Tp, _Ap>
3848 min(const simd<_Tp, _Ap>& __a, const simd<_Tp, _Ap>& __b)
3852 _GLIBCXX_SIMD_INTRINSIC _GLIBCXX_SIMD_CONSTEXPR simd<_Tp, _Ap>
3853 max(const simd<_Tp, _Ap>& __a, const simd<_Tp, _Ap>& __b)
3858 pair<simd<_Tp, _Ap>, simd<_Tp, _Ap>>
3859 minmax(const simd<_Tp, _Ap>& __a, const simd<_Tp, _Ap>& __b)
3863 return {simd<_Tp, _Ap>(__private_init, pair_of_members.first),
3864 simd<_Tp, _Ap>(__private_init, pair_of_members.second)};
3868 _GLIBCXX_SIMD_INTRINSIC _GLIBCXX_SIMD_CONSTEXPR simd<_Tp, _Ap>
3869 clamp(const simd<_Tp, _Ap>& __v, const simd<_Tp, _Ap>& __lo, const simd<_Tp, _Ap>& __hi)
3880 typename = enable_if_t<((_Sizes + ...) == simd<_Tp, _Ap>::size())>>
3881 inline tuple<simd<_Tp, simd_abi::deduce_t<_Tp, _Sizes>>...>
3882 split(const simd<_Tp, _Ap>&);
4008 split(const simd<typename _V::value_type, _Ap>& __x)
4113 tuple<simd<_Tp, simd_abi::deduce_t<_Tp, _Sizes>>...>
4114 split(const simd<_Tp, _Ap>& __x)
4201 constexpr size_t __base_align = alignof(simd<_Tp, _Ap>);
4227 __subscript_in_pack(const simd<_Tp, _Ap>& __x, const simd<_Tp, _As>&... __xs)
4239 __store_pack_of_simd(char* __mem, const simd<_Tp, _A0>& __x0, const simd<_Tp, _As>&... __xs)
4251 simd<_Tp, simd_abi::deduce_t<_Tp, (simd_size_v<_Tp, _As> + ...)>>
4252 concat(const simd<_Tp, _As>&... __xs)
4258 return simd<_Tp,
4275 concat(const array<simd<_Tp, _Abi>, _Np>& __x)
4589 friend class simd<_Tp, _Abi>; // to construct masks on return
4600 using simd_type = simd<_Tp, _Abi>;
4855 typename _Rp = simd<common_type_t<_U1, _U2>, _Abi>,
5230 class simd : public _SimdIntOperators<
5231 simd<_Tp, _Abi>, _Tp, _Abi,
5245 friend _SimdIntOperators<simd, _Tp, _Abi, true>;
5255 _GLIBCXX_SIMD_CONSTEXPR simd() = default;
5256 _GLIBCXX_SIMD_CONSTEXPR simd(const simd&) = default;
5257 _GLIBCXX_SIMD_CONSTEXPR simd(simd&&) noexcept = default;
5258 _GLIBCXX_SIMD_CONSTEXPR simd& operator=(const simd&) = default;
5259 _GLIBCXX_SIMD_CONSTEXPR simd& operator=(simd&&) noexcept = default;
5265 simd(_ValuePreservingOrInt<_Up, value_type>&& __x)
5274 simd(const simd<_Up, simd_abi::fixed_size<size()>>& __x,
5281 : simd{static_cast<array<_Up, size()>>(__x).data(), vector_aligned} {}
5286 typename = decltype(static_simd_cast<simd>(
5287 declval<const simd<_Up, _A2>&>()))>
5289 simd(const simd<_Up, _A2>& __x)
5290 : simd(static_simd_cast<simd>(__x)) {}
5296 simd(_Fp&& __gen, _ValuePreservingOrInt<decltype(declval<_Fp>()(
5304 simd(const _Up* __mem, _IsSimdFlagType<_Flags>)
5306 _Impl::_S_load(_Flags::template _S_apply<simd>(__mem), _S_type_tag))
5315 _Impl::_S_load(_Flags::template _S_apply<simd>(__mem), _S_type_tag));
5323 _Impl::_S_store(_M_data, _Flags::template _S_apply<simd>(__mem),
5345 _GLIBCXX_SIMD_ALWAYS_INLINE _GLIBCXX_SIMD_CONSTEXPR simd&
5352 _GLIBCXX_SIMD_ALWAYS_INLINE _GLIBCXX_SIMD_CONSTEXPR simd
5355 simd __r = *this;
5360 _GLIBCXX_SIMD_ALWAYS_INLINE _GLIBCXX_SIMD_CONSTEXPR simd&
5367 _GLIBCXX_SIMD_ALWAYS_INLINE _GLIBCXX_SIMD_CONSTEXPR simd
5370 simd __r = *this;
5380 _GLIBCXX_SIMD_ALWAYS_INLINE _GLIBCXX_SIMD_CONSTEXPR simd
5384 _GLIBCXX_SIMD_ALWAYS_INLINE _GLIBCXX_SIMD_CONSTEXPR simd
5390 simd(_CastType __init) : _M_data(__init) {}
5393 _GLIBCXX_SIMD_ALWAYS_INLINE _GLIBCXX_SIMD_CONSTEXPR friend simd&
5394 operator+=(simd& __lhs, const simd& __x)
5397 _GLIBCXX_SIMD_ALWAYS_INLINE _GLIBCXX_SIMD_CONSTEXPR friend simd&
5398 operator-=(simd& __lhs, const simd& __x)
5401 _GLIBCXX_SIMD_ALWAYS_INLINE _GLIBCXX_SIMD_CONSTEXPR friend simd&
5402 operator*=(simd& __lhs, const simd& __x)
5405 _GLIBCXX_SIMD_ALWAYS_INLINE _GLIBCXX_SIMD_CONSTEXPR friend simd&
5406 operator/=(simd& __lhs, const simd& __x)
5410 _GLIBCXX_SIMD_ALWAYS_INLINE _GLIBCXX_SIMD_CONSTEXPR friend simd
5411 operator+(const simd& __x, const simd& __y)
5414 _GLIBCXX_SIMD_ALWAYS_INLINE _GLIBCXX_SIMD_CONSTEXPR friend simd
5415 operator-(const simd& __x, const simd& __y)
5418 _GLIBCXX_SIMD_ALWAYS_INLINE _GLIBCXX_SIMD_CONSTEXPR friend simd
5419 operator*(const simd& __x, const simd& __y)
5422 _GLIBCXX_SIMD_ALWAYS_INLINE _GLIBCXX_SIMD_CONSTEXPR friend simd
5423 operator/(const simd& __x, const simd& __y)
5428 operator==(const simd& __x, const simd& __y)
5429 { return simd::_S_make_mask(_Impl::_S_equal_to(__x._M_data, __y._M_data)); }
5432 operator!=(const simd& __x, const simd& __y)
5434 return simd::_S_make_mask(
5439 operator<(const simd& __x, const simd& __y)
5440 { return simd::_S_make_mask(_Impl::_S_less(__x._M_data, __y._M_data)); }
5443 operator<=(const simd& __x, const simd& __y)
5445 return simd::_S_make_mask(_Impl::_S_less_equal(__x._M_data, __y._M_data));
5449 operator>(const simd& __x, const simd& __y)
5450 { return simd::_S_make_mask(_Impl::_S_less(__y._M_data, __x._M_data)); }
5453 operator>=(const simd& __x, const simd& __y)
5455 return simd::_S_make_mask(_Impl::_S_less_equal(__y._M_data, __x._M_data));
5460 _GLIBCXX_SIMD_ALWAYS_INLINE _GLIBCXX_SIMD_CONSTEXPR friend simd
5461 operator?:(const mask_type& __k, const simd& __where_true,
5462 const simd& __where_false)
5474 simd(_PrivateInit, const _MemberType& __init)
5479 simd(_BitsetInit, bitset<size()> __init) : _M_data()
5496 friend const auto& __data<value_type, abi_type>(const simd&);
5497 friend auto& __data<value_type, abi_type>(simd&);
5506 __data(const simd<_Tp, _Ap>& __x)
5511 __data(simd<_Tp, _Ap>& __x)
5517 _GLIBCXX_SIMD_INTRINSIC _GLIBCXX_SIMD_CONSTEXPR simd<_Tp, _Ap>
5518 operator^(const simd<_Tp, _Ap>& __a, const simd<_Tp, _Ap>& __b)
5522 _GLIBCXX_SIMD_INTRINSIC _GLIBCXX_SIMD_CONSTEXPR simd<_Tp, _Ap>
5523 operator|(const simd<_Tp, _Ap>& __a, const simd<_Tp, _Ap>& __b)
5527 _GLIBCXX_SIMD_INTRINSIC _GLIBCXX_SIMD_CONSTEXPR simd<_Tp, _Ap>
5528 operator&(const simd<_Tp, _Ap>& __a, const simd<_Tp, _Ap>& __b)
5533 enable_if_t<is_floating_point_v<_Tp>, simd<_Tp, _Ap>>
5534 operator~(const simd<_Tp, _Ap>& __a)