[{"id":3673408,"web_url":"http://patchwork.ozlabs.org/comment/3673408/","msgid":"<CAH6eHdSjxY9R1ipoFi=5FS-8jH=sv=SJjdn3zv3Zjkicz5HN-g@mail.gmail.com>","list_archive_url":null,"date":"2026-04-04T09:02:57","subject":"Re: [PATCH] libstdc++: Guard use of float16_t and bfloat16_t","submitter":{"id":4329,"url":"http://patchwork.ozlabs.org/api/people/4329/","name":"Jonathan Wakely","email":"jwakely.gcc@gmail.com"},"content":"OK, thanks\n\n(You'll need to add the PR number to the first line to get past the hooks)\n\nOn Sat, 4 Apr 2026, 09:35 Matthias Kretz, <MatthiasKretz@gmx.net> wrote:\n\n> The rest of this test is still relevant, thus only the (b)float16_t\n> tests are made optional rather than skipping the whole test via\n> dg-effective-target.\n>\n> libstdc++-v3/ChangeLog:\n>\n>         PR libstdc++/124722\n>         * testsuite/std/simd/traits_impl.cc: Add __STDCPP_FLOAT16_T__\n>           and __STDCPP_BFLOAT16_T__ guards.\n>\n> Signed-off-by: Matthias Kretz <m.kretz@gsi.de>\n> ---\n>  libstdc++-v3/testsuite/std/simd/traits_impl.cc | 16 +++++++++++++++-\n>  1 file changed, 15 insertions(+), 1 deletion(-)\n>\n> diff --git a/libstdc++-v3/testsuite/std/simd/traits_impl.cc b/libstdc++-v3/\n> testsuite/std/simd/traits_impl.cc\n> index a264bd5f140..06bf6d5be25 100644\n> --- a/libstdc++-v3/testsuite/std/simd/traits_impl.cc\n> +++ b/libstdc++-v3/testsuite/std/simd/traits_impl.cc\n> @@ -9,7 +9,9 @@\n>\n>  namespace simd = std::simd;\n>\n> +#ifdef __STDCPP_FLOAT16_T__\n>  using std::float16_t;\n> +#endif\n>  using std::float32_t;\n>  using std::float64_t;\n>\n> @@ -17,7 +19,11 @@ namespace simd\n>\n>  void test()\n>  {\n> -  template for (auto t : {float(), double(), float16_t(), float32_t(),\n> float64_t()})\n> +  template for (auto t : {float(), double(),\n> +#ifdef __STDCPP_FLOAT16_T__\n> +                         float16_t(),\n> +#endif\n> +                         float32_t(), float64_t()})\n>      {\n>        using T = decltype(t);\n>        static_assert(__vectorizable<T>);\n> @@ -25,7 +31,9 @@ namespace simd\n>\n>    static_assert(!__vectorizable<const float>);\n>    static_assert(!__vectorizable<float&>);\n> +#ifdef __STDCPP_BFLOAT16_T__\n>    static_assert(!__vectorizable<std::bfloat16_t>);\n> +#endif\n>\n>    template for (constexpr int N : {1, 2, 4, 8})\n>      {\n> @@ -82,8 +90,10 @@ namespace simd\n>    static_assert( __value_preserving_convertible_to<float, double>);\n>    static_assert(!__value_preserving_convertible_to<double, float>);\n>\n> +#ifdef __STDCPP_FLOAT16_T__\n>    static_assert(__explicitly_convertible_to<float, float16_t>);\n>    static_assert(__explicitly_convertible_to<long, float16_t>);\n> +#endif\n>\n>    static_assert(__constexpr_wrapper_like<std::constant_wrapper<2>>);\n>    static_assert(__constexpr_wrapper_like<std::integral_constant<int, 1>>);\n> @@ -95,7 +105,9 @@ namespace simd\n>    static_assert(!__broadcast_constructible<const int, float>);\n>\n>    static_assert(__broadcast_constructible<decltype(std::cw<2>), float>);\n> +#ifdef __STDCPP_FLOAT16_T__\n>    static_assert(__broadcast_constructible<decltype(std::cw<0.f>),\n> std::float16_t>);\n> +#endif\n>\n>\n>    static_assert(__higher_rank_than<long, int>);\n> @@ -112,7 +124,9 @@ namespace simd\n>    static_assert(__higher_rank_than<unsigned long, int>);\n>    static_assert(__higher_rank_than<unsigned long long, long>);\n>\n> +#ifdef __STDCPP_FLOAT16_T__\n>    static_assert(__higher_rank_than<float, float16_t>);\n> +#endif\n>    static_assert(__higher_rank_than<float32_t, float>);\n>    static_assert(__higher_rank_than<double, float32_t>);\n>    static_assert(__higher_rank_than<double, float>);\n> --\n> ──────────────────────────────────────────────────────────────────────────\n>  Dr. Matthias Kretz                           https://mattkretz.github.io\n>  GSI Helmholtz Center for Heavy Ion Research               https://gsi.de\n>  std::simd\n> ──────────────────────────────────────────────────────────────────────────\n>\n>\n>\n>\n>","headers":{"Return-Path":"<gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org>","X-Original-To":["incoming@patchwork.ozlabs.org","gcc-patches@gcc.gnu.org"],"Delivered-To":["patchwork-incoming@legolas.ozlabs.org","gcc-patches@gcc.gnu.org"],"Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256\n header.s=20251104 header.b=LklPHWUk;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org\n (client-ip=2620:52:6:3111::32; helo=vm01.sourceware.org;\n envelope-from=gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org;\n receiver=patchwork.ozlabs.org)","sourceware.org;\n\tdkim=pass (2048-bit key,\n unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256\n header.s=20251104 header.b=LklPHWUk","sourceware.org;\n dmarc=pass (p=none dis=none) header.from=gmail.com","sourceware.org; spf=pass smtp.mailfrom=gmail.com","server2.sourceware.org;\n arc=pass smtp.remote-ip=209.85.167.50"],"Received":["from vm01.sourceware.org (vm01.sourceware.org\n [IPv6:2620:52:6:3111::32])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fnqQs00z4z1yCs\n\tfor <incoming@patchwork.ozlabs.org>; Sat, 04 Apr 2026 20:04:19 +1100 (AEDT)","from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id 81E644BA2E1B\n\tfor <incoming@patchwork.ozlabs.org>; Sat,  4 Apr 2026 09:04:17 +0000 (GMT)","from mail-lf1-f50.google.com (mail-lf1-f50.google.com\n [209.85.167.50])\n by sourceware.org (Postfix) with ESMTPS id 5370A4BA2E1B\n for <gcc-patches@gcc.gnu.org>; Sat,  4 Apr 2026 09:03:10 +0000 (GMT)","by mail-lf1-f50.google.com with SMTP id\n 2adb3069b0e04-5a2b5ea59a1so3011336e87.1\n for <gcc-patches@gcc.gnu.org>; Sat, 04 Apr 2026 02:03:10 -0700 (PDT)"],"DKIM-Filter":["OpenDKIM Filter v2.11.0 sourceware.org 81E644BA2E1B","OpenDKIM Filter v2.11.0 sourceware.org 5370A4BA2E1B"],"DMARC-Filter":"OpenDMARC Filter v1.4.2 sourceware.org 5370A4BA2E1B","ARC-Filter":"OpenARC Filter v1.0.0 sourceware.org 5370A4BA2E1B","ARC-Seal":["i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1775293390; cv=pass;\n b=WIY++gPsu/MZT/nH+4HjPgiXaPJ9u6kzd1BDMRjKT/BIeoZ63Cl/EqgupNvmlYnumVosgIJutfphIbYJ38lnbRrfBbpqXEd33Xx1I1AAEcnpZS9/IufV/hp6zCvANcEK7BOfE6J3NG7dLIJPyWqOoJb98uDpIM6IoqFSJVGc34o=","i=1; a=rsa-sha256; t=1775293389; cv=none;\n d=google.com; s=arc-20240605;\n b=CaTi5GxDcBll90ovpV+bPHEtnUQ0JxSV2SWZx5BK6SUUpJgD+nsrZu1vGD0FHw0bxu\n rPiAE3aV23lOUohTQkW3IPcDo1zAvyuq0A01UhFEjzwOlJ8Br94v3p5witaTdidRL8EV\n kD9eTUCTY4AnkhGDIC0iaOLnmvSxRbrxXVGTV0jy85Qv5pjw3G+wayNfadt244iKXXdv\n 6+LjWLpNy7miUzDLFu7w961dD6azVPZmcnxQ52pEsHrGIPc49ubvg76XjlM9RCK/TiZu\n Xrk7t9SpQDmLly2+1Cvp2zWczrdusq0zvyoLR/b0qHY9YHLQfqLXocffBFGf0c7mlI73\n tLxA=="],"ARC-Message-Signature":["i=2; a=rsa-sha256; d=sourceware.org; s=key;\n t=1775293390; c=relaxed/simple;\n bh=3WTq/ToEbdL9EuKeVvs+vhOFT5svaWT6RrvJ9Z4LJAI=;\n h=DKIM-Signature:MIME-Version:From:Date:Message-ID:Subject:To;\n b=gCFKawLTaabUIh7B+qpm+xPMlev0e969eiR/KeTQ89L6Rhe6HxEXqJT70pDxHW2Rv2cZTqEpjxh+Zt1PaYlIiiU6a4+kndDxZ2+Rgff4DuDTHqjnHuobq17PmqnO6dfUJQLJPCI5Df8QtcDxWeiw7Lk/0Z1YWjtjPDW43+l7cZI=","i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com;\n s=arc-20240605;\n h=cc:to:subject:message-id:date:from:in-reply-to:references\n :mime-version:dkim-signature;\n bh=MmuTAlIIB3XzXOT9sgjktL063GHwu6K9cH4MVH03isA=;\n fh=fKRVFuIaMQg4B7nue2IDX+jEN1T1OxDANBTc3bF0KEc=;\n b=NunD5QevIittgFs5o9effreHwC5T1ehXWt8m/MHSGuLD+cl5o8MZhT//S83J6RA1xc\n tLDKJOm+X7UWD3cBcdnecBtLk/4squfM5tUU/0f0RDAQLIrRkQXPy34NGs5qKksFG0t8\n p4J6F4/MeOo6+2SRQPryvlw8dMwFp/vlxt7PUl3xq4ce8k7Z3OQsesFYxOtykUgUuOV+\n Zw5OSiNo/G7nwyzDo2ijcwjI08/O8aUxioasdXPef/PqXr5bUVfzbWEvSQ2HHJOg9ZiB\n nNZd1/FeBf7FMhKOP2k/09jKmshTWL8LyWut4CXXg8ba7YcKv7uVDdF6KDHkycRb6HTm\n RaVQ==; darn=gcc.gnu.org"],"ARC-Authentication-Results":["i=2; server2.sourceware.org","i=1; mx.google.com; arc=none"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=gmail.com; s=20251104; t=1775293389; x=1775898189; darn=gcc.gnu.org;\n h=cc:to:subject:message-id:date:from:in-reply-to:references\n :mime-version:from:to:cc:subject:date:message-id:reply-to;\n bh=MmuTAlIIB3XzXOT9sgjktL063GHwu6K9cH4MVH03isA=;\n b=LklPHWUkxaEtYi8W4BMbbm2PjRnJ/C516e+V6wAuIcj4BFzrp5ga9o0JYvTE/wkezO\n RZ+XYjZTD7OcYI2eJd93GCpwO/+diBEUJowmvUVKnujYRns5g2gafX8ORcapLVgRvmLw\n 0b9Er+8X/pY7EhiGnVzJm5f1POF9BlM7eDP8llhlF9xC8BEYmMxQpt4zZtY5aiNmOg04\n XWynpEY8YS0v8G3XUBRc+4KnTBbSGD7VMrz9XU6lrozyrlmTfbik7R5JkhcBdK46Jh0s\n Y5ehX9w/y8Eb6VGRDBAx/sujRvDHslUTZz8CfN6o6/AtMDAqrmzL1GLNI/AY4qT2Wk7V\n KS/Q==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1775293389; x=1775898189;\n h=cc:to:subject:message-id:date:from:in-reply-to:references\n :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date\n :message-id:reply-to;\n bh=MmuTAlIIB3XzXOT9sgjktL063GHwu6K9cH4MVH03isA=;\n b=jqBcrfXv00uHF0AK2i/2rV6cgSx9bPL48YFUtobGPn/6u4NyFsCy8w8Ahkk50x0lVd\n 1zLZjeALavDMNNoEaoZbPG3mBI5n7b1T2j/tvUnXz07h6MBtbc838GKWmbhDW+SgNaMn\n boxxta73tFKaDuXtK71ZikFgGqIOocNLa+0rzNzfX1XKNVfiBwDNnX9CQOJXNzs5uWRB\n LREsNP1aLquaq13xjO8jey9Zk5etJAKei228GA6WFIyauehAsVJsnx21uMSJT/sRXJKe\n It1XdviT43HImmDjKb78gB93Nja10NKlS4SS0NFO/eolaRc+A8xsBORs4Tf/R+OhQ3Pl\n bDfA==","X-Forwarded-Encrypted":"i=1;\n AJvYcCVvdiimCoHfzj9nA2z4OMVFSFaFKL/00RfsQvLJga/1iOtfihiZiNN2ptD4YYQcvCiH0FYMBjJAss8Yog==@gcc.gnu.org","X-Gm-Message-State":"AOJu0Yyf3wsR2mWjBj8cJeBMAEySU37Qb547EkqsXwLvky8meVnwmaqx\n mlJ1U+9e5QJqXzO0oxXirxkLRYrhIpNWOVsyb76AUYiqtZO4uPNPB4kcoJvmEOWpe6fCbr9p7zf\n qE0g3K4kM5VGm7qabMaCa713VjauYKNU=","X-Gm-Gg":"AeBDies+M1zcg9vONNo3JrS8ooHdPwy+kLlFvbMVv17WcpfTFEHdyWhwK1f6yosfgQI\n JvOe9+zIsi5WKBzeOqiCY2EiaoeOWKcFvk+BcLiB0j4h5sLisTsELtALhY1pkiTSWxtY1cAnzmZ\n MXvzvuyc/MtHpjczUlXv93+XdLNTrjEh08gLBpxzekPDvkMmzU+b+iMK3zuZpo+4yYQMYIgL/f3\n 5LNTAfptfMJWgJJZlRFSZO+3Usb95RPwTnI3GEdM7ScsFkMFaElT5WuiIK5WUzUk9zCgO/voYWO\n rl9QOeEcwn5Bw+mRfCp3GzcSnAV7HteOaV8yCoO2j2GrAGJkU1LsZG2g+bJ3TnV67LD9ZMYgKKS\n 7qIl/wJo7gTYIu6tPBNszw3UkFd0=","X-Received":"by 2002:a05:6512:224a:b0:5a2:c914:8aff with SMTP id\n 2adb3069b0e04-5a337556dd5mr2268852e87.3.1775293388528; Sat, 04 Apr 2026\n 02:03:08 -0700 (PDT)","MIME-Version":"1.0","References":"<6327994.e9J7NaK4W3@vir-laptop>","In-Reply-To":"<6327994.e9J7NaK4W3@vir-laptop>","From":"Jonathan Wakely <jwakely.gcc@gmail.com>","Date":"Sat, 4 Apr 2026 10:02:57 +0100","X-Gm-Features":"AQROBzAPZkg80fhFIlK1XT9v2-S0bc6tYD6gALI0XRDPuJaXOl-7s3n-8EIsREA","Message-ID":"\n <CAH6eHdSjxY9R1ipoFi=5FS-8jH=sv=SJjdn3zv3Zjkicz5HN-g@mail.gmail.com>","Subject":"Re: [PATCH] libstdc++: Guard use of float16_t and bfloat16_t","To":"Matthias Kretz <MatthiasKretz@gmx.net>","Cc":"\"libstdc++\" <libstdc++@gcc.gnu.org>, gcc-patches <gcc-patches@gcc.gnu.org>","Content-Type":"multipart/alternative; boundary=\"000000000000cb9f3b064e9eb3c9\"","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>,\n <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>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=subscribe>","Errors-To":"gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org"}}]