[PATCH 2/5] libstdc++: Use conservative default for simd::mask sanitization
Matthias Kretz
MatthiasKretz@gmx.net
Mon Mar 2 10:15:03 GMT 2026
This change is conceptual, since the actual masking is only applied
after constexpr-if branch on _S_is_partial.
Signed-off-by: Matthias Kretz <m.kretz@gsi.de>
libstdc++-v3/ChangeLog:
* include/bits/simd_mask.h (_M_concat_data): Default to sanitize
only when the mask is partial. Don't force (unused) sanitize on
the power-of-2 mask member.
---
libstdc++-v3/include/bits/simd_mask.h | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/libstdc++-v3/include/bits/simd_mask.h b/libstdc++-v3/include/
bits/simd_mask.h
index 1bf74e5ae599..41477cbc9b94 100644
--- a/libstdc++-v3/include/bits/simd_mask.h
+++ b/libstdc++-v3/include/bits/simd_mask.h
@@ -581,7 +581,7 @@ _S_recursive_bit_cast(const basic_mask<_UBytes, _UAbi>&
__x)
[[__gnu__::__always_inline__]]
constexpr auto
- _M_concat_data(bool __do_sanitize = true) const
+ _M_concat_data(bool __do_sanitize = _S_is_partial) const
{
if constexpr (_S_is_scalar)
return __vec_builtin_type<__integer_from<_Bytes>,
1>{__integer_from<_Bytes>(-_M_data)};
@@ -1501,18 +1501,18 @@ struct _Tmp
[[__gnu__::__always_inline__]]
constexpr auto
- _M_concat_data(bool __do_sanitize = true) const
+ _M_concat_data(bool __do_sanitize = _S_is_partial) const
{
if constexpr (_S_use_bitmask)
{
static_assert(_S_size <= numeric_limits<unsigned long
long>::digits,
"cannot concat more than 64 bits");
using _Up = _Bitmask<_S_size>;
- return _Up(_M_data0._M_concat_data(true) |
(_Up(_M_data1._M_concat_data(__do_sanitize)) << _N0));
+ return _Up(_M_data0._M_concat_data() |
(_Up(_M_data1._M_concat_data(__do_sanitize)) << _N0));
}
else
{
- auto __lo = _M_data0._M_concat_data(true);
+ auto __lo = _M_data0._M_concat_data();
auto __hi =
__vec_zero_pad_to<sizeof(__lo)>(_M_data1._M_concat_data(__do_sanitize));
return __vec_concat(__lo, __hi);
}
--
──────────────────────────────────────────────────────────────────────────
Dr. Matthias Kretz https://mattkretz.github.io
GSI Helmholtz Center for Heavy Ion Research https://gsi.de
std::simd
──────────────────────────────────────────────────────────────────────────
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: This is a digitally signed message part.
URL: <https://gcc.gnu.org/pipermail/libstdc++/attachments/20260302/6484a5b1/attachment.sig>
More information about the Libstdc++
mailing list