| Message ID | 6327994.e9J7NaK4W3@vir-laptop |
|---|---|
| State | New |
| Headers |
Return-Path: <gcc-patches-bounces~patchwork=sourceware.org@gcc.gnu.org> X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from vm01.sourceware.org (localhost [127.0.0.1]) by sourceware.org (Postfix) with ESMTP id 277394BA9008 for <patchwork@sourceware.org>; Sat, 4 Apr 2026 08:36:19 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 277394BA9008 Authentication-Results: sourceware.org; dkim=pass (2048-bit key, secure) header.d=gmx.net header.i=matthiaskretz@gmx.net header.a=rsa-sha256 header.s=s31663417 header.b=BgQ8I1Ck X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mout.gmx.net (mout.gmx.net [212.227.15.15]) by sourceware.org (Postfix) with ESMTPS id A2A2D4BA23C3; Sat, 4 Apr 2026 08:35:34 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org A2A2D4BA23C3 Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=gmx.net Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmx.net ARC-Filter: OpenARC Filter v1.0.0 sourceware.org A2A2D4BA23C3 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=212.227.15.15 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1775291735; cv=none; b=fdvVowEEhziUEyfSAGvHWbgUVa1rrcCfxsG9eOs1XQR3QOfmwlWkYqIAZHBHK4R7B8nwg7doGpcMFnHwW8ULPP0hogKHDLi02JW8PRF73kpNIDI7YJ/UMbR8v7FtsflTWZ6CgZD4esO3JtJjXS3w06hMwhsn5nhfd+9Qu1cQ0Vk= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1775291735; c=relaxed/simple; bh=BF9Zd27ntYX0xS9ELBoCFDqAE14qWN+lcJMKa1o85sw=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=Kkj6njznhB1fMLoPomfWyF4YsEf+7I+IrxIrga4mnvAID4vn5xgAxsOqL4rPmRKVWXqSSPukbZCqKZKrV71h66OehBZr/S+WpJv1hUp9STIYD/ZJecCH9tPP2BpHgt1G+SpMypTjN7mDQXO9l7QchM9gf4Nk0oge2ney8BCLA8s= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org A2A2D4BA23C3 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.net; s=s31663417; t=1775291733; x=1775896533; i=matthiaskretz@gmx.net; bh=001NJfw6/bdkyyEnauH/MCAvV9OdZnhTWCzvaYtJMs8=; h=X-UI-Sender-Class:From:To:Subject:Date:Message-ID:MIME-Version: Content-Transfer-Encoding:Content-Type:cc: content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=BgQ8I1CkLvGtrOo4AFSAsKrCCZrFcLXo40k/l7bwMAlAftABp42fP4ZDO7160qLG HIkbCKJTRGE4kJAuAPoX0bAa+7M/sju6gZLGXO2FPV/ufp3zoUoW1F4ADBlbg0yEB +Vk1DGiiBDNPI8Ln8IY5dBustRWjAyiSLLbFvmbShImZM5aXrQPaaZZ0+pc50lTlZ 6xj+bsOuYaq5GXewx9m+9wGCNVUzhJH4bSQpteqJbh4e0ZC4mOB5L+dqEVo6vdzSk tQPYPw8kYmvmocIbho22rDVnqPxpYWOzwFbevXQEINvH2FYLI15W1L8l4h4fOOmUU bEu6cxmm2H1PTKCzwg== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from client.hidden.invalid by mail.gmx.net (mrgmx004 [212.227.17.190]) with ESMTPSA (Nemesis) id 1M42jK-1w8wTd0bcu-003AK9; Sat, 04 Apr 2026 10:35:33 +0200 From: Matthias Kretz <MatthiasKretz@gmx.net> To: libstdc++@gcc.gnu.org, gcc-patches@gcc.gnu.org Subject: [PATCH] libstdc++: Guard use of float16_t and bfloat16_t Date: Sat, 04 Apr 2026 10:31:13 +0200 Message-ID: <6327994.e9J7NaK4W3@vir-laptop> Organization: GSI Helmholtz Center for Heavy Ion Research MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Authentication-Results: mail.kretzfamily.de; auth=pass smtp.auth=mkretz@kretzfamily.de smtp.mailfrom=MatthiasKretz@gmx.net X-Provags-ID: V03:K1:YNvWP9TG01luAu1dxcPnDRcwUgHjx4s8T1gnxuYHdt6XXfBYQR6 bG+iyAhqYlHMNfK32e4Mk4/Las5B+rkSjQvbf2NvFgODTIPYP8/CTVBuPMmWuK+8LoIrO7h Gj63LiSVk7lzt/vi5796/lxW/XTvpeatb2KPg4ZJdCGGbmw/VsFUuExbbvd1eFn06wPZqI6 uhJ32THnuxyan8Eotk38g== UI-OutboundReport: notjunk:1;M01:P0:9OAWuR+PHaE=;B2blrwizdHdWURSjMOiOd+oQI2m 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 MchRLj8w80RqWCigxJjnaYb0WkSoi08XQ== X-Spam-Status: No, score=-7.9 required=5.0 tests=BAYES_00, BODY_8BITS, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H4, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list <gcc-patches.gcc.gnu.org> List-Unsubscribe: <https://gcc.gnu.org/mailman/options/gcc-patches>, <mailto:gcc-patches-request@gcc.gnu.org?subject=unsubscribe> List-Archive: <https://gcc.gnu.org/pipermail/gcc-patches/> List-Post: <mailto:gcc-patches@gcc.gnu.org> List-Help: <mailto:gcc-patches-request@gcc.gnu.org?subject=help> List-Subscribe: <https://gcc.gnu.org/mailman/listinfo/gcc-patches>, <mailto:gcc-patches-request@gcc.gnu.org?subject=subscribe> Errors-To: gcc-patches-bounces~patchwork=sourceware.org@gcc.gnu.org |
| Series |
libstdc++: Guard use of float16_t and bfloat16_t
|
|
Checks
| Context | Check | Description |
|---|---|---|
| linaro-tcwg-bot/tcwg_gcc_build--master-arm | fail | Patch failed to apply |
| linaro-tcwg-bot/tcwg_gcc_build--master-aarch64 | fail | Patch failed to apply |
Commit Message
Matthias Kretz
April 4, 2026, 8:31 a.m. UTC
The rest of this test is still relevant, thus only the (b)float16_t
tests are made optional rather than skipping the whole test via
dg-effective-target.
libstdc++-v3/ChangeLog:
PR libstdc++/124722
* testsuite/std/simd/traits_impl.cc: Add __STDCPP_FLOAT16_T__
and __STDCPP_BFLOAT16_T__ guards.
Signed-off-by: Matthias Kretz <m.kretz@gsi.de>
---
libstdc++-v3/testsuite/std/simd/traits_impl.cc | 16 +++++++++++++++-
1 file changed, 15 insertions(+), 1 deletion(-)
static_assert(__vectorizable<T>);
@@ -25,7 +31,9 @@ namespace simd
static_assert(!__vectorizable<const float>);
static_assert(!__vectorizable<float&>);
+#ifdef __STDCPP_BFLOAT16_T__
static_assert(!__vectorizable<std::bfloat16_t>);
+#endif
template for (constexpr int N : {1, 2, 4, 8})
{
@@ -82,8 +90,10 @@ namespace simd
static_assert( __value_preserving_convertible_to<float, double>);
static_assert(!__value_preserving_convertible_to<double, float>);
+#ifdef __STDCPP_FLOAT16_T__
static_assert(__explicitly_convertible_to<float, float16_t>);
static_assert(__explicitly_convertible_to<long, float16_t>);
+#endif
static_assert(__constexpr_wrapper_like<std::constant_wrapper<2>>);
static_assert(__constexpr_wrapper_like<std::integral_constant<int, 1>>);
@@ -95,7 +105,9 @@ namespace simd
static_assert(!__broadcast_constructible<const int, float>);
static_assert(__broadcast_constructible<decltype(std::cw<2>), float>);
+#ifdef __STDCPP_FLOAT16_T__
static_assert(__broadcast_constructible<decltype(std::cw<0.f>),
std::float16_t>);
+#endif
static_assert(__higher_rank_than<long, int>);
@@ -112,7 +124,9 @@ namespace simd
static_assert(__higher_rank_than<unsigned long, int>);
static_assert(__higher_rank_than<unsigned long long, long>);
+#ifdef __STDCPP_FLOAT16_T__
static_assert(__higher_rank_than<float, float16_t>);
+#endif
static_assert(__higher_rank_than<float32_t, float>);
static_assert(__higher_rank_than<double, float32_t>);
static_assert(__higher_rank_than<double, float>);
Comments
OK, thanks (You'll need to add the PR number to the first line to get past the hooks) On Sat, 4 Apr 2026, 09:35 Matthias Kretz, <MatthiasKretz@gmx.net> wrote: > The rest of this test is still relevant, thus only the (b)float16_t > tests are made optional rather than skipping the whole test via > dg-effective-target. > > libstdc++-v3/ChangeLog: > > PR libstdc++/124722 > * testsuite/std/simd/traits_impl.cc: Add __STDCPP_FLOAT16_T__ > and __STDCPP_BFLOAT16_T__ guards. > > Signed-off-by: Matthias Kretz <m.kretz@gsi.de> > --- > libstdc++-v3/testsuite/std/simd/traits_impl.cc | 16 +++++++++++++++- > 1 file changed, 15 insertions(+), 1 deletion(-) > > diff --git a/libstdc++-v3/testsuite/std/simd/traits_impl.cc b/libstdc++-v3/ > testsuite/std/simd/traits_impl.cc > index a264bd5f140..06bf6d5be25 100644 > --- a/libstdc++-v3/testsuite/std/simd/traits_impl.cc > +++ b/libstdc++-v3/testsuite/std/simd/traits_impl.cc > @@ -9,7 +9,9 @@ > > namespace simd = std::simd; > > +#ifdef __STDCPP_FLOAT16_T__ > using std::float16_t; > +#endif > using std::float32_t; > using std::float64_t; > > @@ -17,7 +19,11 @@ namespace simd > > void test() > { > - template for (auto t : {float(), double(), float16_t(), float32_t(), > float64_t()}) > + template for (auto t : {float(), double(), > +#ifdef __STDCPP_FLOAT16_T__ > + float16_t(), > +#endif > + float32_t(), float64_t()}) > { > using T = decltype(t); > static_assert(__vectorizable<T>); > @@ -25,7 +31,9 @@ namespace simd > > static_assert(!__vectorizable<const float>); > static_assert(!__vectorizable<float&>); > +#ifdef __STDCPP_BFLOAT16_T__ > static_assert(!__vectorizable<std::bfloat16_t>); > +#endif > > template for (constexpr int N : {1, 2, 4, 8}) > { > @@ -82,8 +90,10 @@ namespace simd > static_assert( __value_preserving_convertible_to<float, double>); > static_assert(!__value_preserving_convertible_to<double, float>); > > +#ifdef __STDCPP_FLOAT16_T__ > static_assert(__explicitly_convertible_to<float, float16_t>); > static_assert(__explicitly_convertible_to<long, float16_t>); > +#endif > > static_assert(__constexpr_wrapper_like<std::constant_wrapper<2>>); > static_assert(__constexpr_wrapper_like<std::integral_constant<int, 1>>); > @@ -95,7 +105,9 @@ namespace simd > static_assert(!__broadcast_constructible<const int, float>); > > static_assert(__broadcast_constructible<decltype(std::cw<2>), float>); > +#ifdef __STDCPP_FLOAT16_T__ > static_assert(__broadcast_constructible<decltype(std::cw<0.f>), > std::float16_t>); > +#endif > > > static_assert(__higher_rank_than<long, int>); > @@ -112,7 +124,9 @@ namespace simd > static_assert(__higher_rank_than<unsigned long, int>); > static_assert(__higher_rank_than<unsigned long long, long>); > > +#ifdef __STDCPP_FLOAT16_T__ > static_assert(__higher_rank_than<float, float16_t>); > +#endif > static_assert(__higher_rank_than<float32_t, float>); > static_assert(__higher_rank_than<double, float32_t>); > static_assert(__higher_rank_than<double, float>); > -- > ────────────────────────────────────────────────────────────────────────── > Dr. Matthias Kretz https://mattkretz.github.io > GSI Helmholtz Center for Heavy Ion Research https://gsi.de > std::simd > ────────────────────────────────────────────────────────────────────────── > > > > >
diff --git a/libstdc++-v3/testsuite/std/simd/traits_impl.cc b/libstdc++-v3/ testsuite/std/simd/traits_impl.cc index a264bd5f140..06bf6d5be25 100644 --- a/libstdc++-v3/testsuite/std/simd/traits_impl.cc +++ b/libstdc++-v3/testsuite/std/simd/traits_impl.cc @@ -9,7 +9,9 @@ namespace simd = std::simd; +#ifdef __STDCPP_FLOAT16_T__ using std::float16_t; +#endif using std::float32_t; using std::float64_t; @@ -17,7 +19,11 @@ namespace simd void test() { - template for (auto t : {float(), double(), float16_t(), float32_t(), float64_t()}) + template for (auto t : {float(), double(), +#ifdef __STDCPP_FLOAT16_T__ + float16_t(), +#endif + float32_t(), float64_t()}) { using T = decltype(t);