libstdc++: simd: map 64-bit long double to double on sse [PR124657]

When long double is as wide as double on x86 (-mlong-double-64), make
the __intrinsic_type a vector of double.


for  libstdc++-v3/ChangeLog

	PR libstdc++/124657
	* include/experimental/bits/simd.h (__intrinsic_type::type):
	Map long double to double.
This commit is contained in:
Alexandre Oliva
2026-04-28 22:31:27 -03:00
committed by Alexandre Oliva
parent eb829c6789
commit a575c51916

View File

@@ -2477,7 +2477,8 @@ template <typename _Tp, size_t _Bytes>
static constexpr size_t _S_VBytes = _Bytes <= 16 ? 16 : _Bytes <= 32 ? 32 : 64;
using type [[__gnu__::__vector_size__(_S_VBytes)]]
= conditional_t<is_integral_v<_Tp>, long long int, _Tp>;
= conditional_t<is_integral_v<_Tp>, long long int,
conditional_t<is_same_v<_Tp, long double>, double, _Tp> >;
};
#endif // _GLIBCXX_SIMD_HAVE_SSE