From patchwork Fri Mar 10 15:43:30 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jakub Jelinek X-Patchwork-Id: 67439 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:5915:0:0:0:0:0 with SMTP id v21csp943994wrd; Fri, 10 Mar 2023 07:44:32 -0800 (PST) X-Google-Smtp-Source: AK7set94cp1YxZEsONvFIrMlwqULj2C8MnXzrTgdohmHp7tkH0pqgn/FwIcD2PWAm9reOiD4z0rV X-Received: by 2002:a17:906:b51:b0:8d7:6699:3ba9 with SMTP id v17-20020a1709060b5100b008d766993ba9mr24459450ejg.29.1678463071963; Fri, 10 Mar 2023 07:44:31 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1678463071; cv=none; d=google.com; s=arc-20160816; b=gfGAM83Chv/RTySdQ7gcQZ6Hy52cTjzLJ8NJ1QCkzYkoftJMEsGOZguJFYVl/+pVAI qS3ClZhNbCkVDFrvkuegwHP3EwMSOldt05LcGzQLzRFS7vhV3U5sWD/YYjdujuI538hT LXB9EzSicy5f9+4F/XIwCbVZLtNo9G4xPaaaWgxUaubVv9WtzW0qP5AndoqzJZggQqzi 1mlI3YVsC89PRlEZwpmud+BeID/n2MwbTL+AE8ZRAggcAk1SD828fqYKmcy1i84fS0K7 qK6eGT3V5T69PG1JRl7Pw3HkR0m8a/77s4HbjxqDs3irgB/Na/PsYr0EyiYFxXzVtv7U l+HA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:reply-to:from:list-subscribe:list-help:list-post :list-archive:list-unsubscribe:list-id:precedence :content-disposition:mime-version:message-id:subject:cc:to:date :dmarc-filter:delivered-to:dkim-signature:dkim-filter; bh=ufkVeptaFz/NQSxitOBE1KOumMPLLN5H0YYGDoedMtg=; b=BGdp+339C0Z+x1HyivHMYmoRSM9LDnpzXE2ly+LZQvCeD683AMoGfoBY+QEnyhVUgd xtGvIsxSBha6NrpQ/4W7gjJVKKPU5h2qXYlV3EfqOt43cwa2Otuk1yuDFol0thuiSeoK 4O6CJl6Q3GkkcFypOp38H47knKSQSX3X9Bh7VpwiCppeWytksowjTZ0Ztcj8k+owbiOG cbAmnXkV2NHkPMEULsNZowjhckVd3a7jEvxmngX1W+GDMBQ/C0T4EpEzSfAbj7w84dNv KXyPfjhs4hDpvYEEh2wNss0Fdw4XTpr8KBLc98ob/CmZH7fAX6b8YWyhHE1yqs0v4kw2 BOhw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b=Gz7CuzpB; spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gnu.org Received: from sourceware.org (server2.sourceware.org. [2620:52:3:1:0:246e:9693:128c]) by mx.google.com with ESMTPS id l19-20020a1709065a9300b008b17f6b8c98si13062ejq.994.2023.03.10.07.44.31 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Mar 2023 07:44:31 -0800 (PST) Received-SPF: pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) client-ip=2620:52:3:1:0:246e:9693:128c; Authentication-Results: mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b=Gz7CuzpB; spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gnu.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id BEE68385842B for ; Fri, 10 Mar 2023 15:44:28 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org BEE68385842B DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1678463068; bh=ufkVeptaFz/NQSxitOBE1KOumMPLLN5H0YYGDoedMtg=; h=Date:To:Cc:Subject:List-Id:List-Unsubscribe:List-Archive: List-Post:List-Help:List-Subscribe:From:Reply-To:From; b=Gz7CuzpBRs5IPNHdxhTmDgA26l501RK69YAh3WZ3p0zK/l40SUy4JQXa9FbvAzLrA 1ld+UxLbKwkN9RrJRhRStbrrkV3wuOkH3Y/ZxRFr9maIzDmyJighaKoh4jA3aXdNc3 RAWEvE+cdmMvuCEdn9mfz3h1GJQlSIVEyqoMJRTw= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by sourceware.org (Postfix) with ESMTPS id DF3F13858D32 for ; Fri, 10 Mar 2023 15:43:36 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org DF3F13858D32 Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-292-lMx9u5p2MpK1B2zmymH1NA-1; Fri, 10 Mar 2023 10:43:34 -0500 X-MC-Unique: lMx9u5p2MpK1B2zmymH1NA-1 Received: from smtp.corp.redhat.com (int-mx10.intmail.prod.int.rdu2.redhat.com [10.11.54.10]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 12530101B429; Fri, 10 Mar 2023 15:43:34 +0000 (UTC) Received: from tucnak.zalov.cz (unknown [10.39.192.16]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 8C16E492C3E; Fri, 10 Mar 2023 15:43:33 +0000 (UTC) Received: from tucnak.zalov.cz (localhost [127.0.0.1]) by tucnak.zalov.cz (8.17.1/8.17.1) with ESMTPS id 32AFhUm4895257 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Fri, 10 Mar 2023 16:43:31 +0100 Received: (from jakub@localhost) by tucnak.zalov.cz (8.17.1/8.17.1/Submit) id 32AFhUlV895256; Fri, 10 Mar 2023 16:43:30 +0100 Date: Fri, 10 Mar 2023 16:43:30 +0100 To: Jason Merrill , richard.sandiford@arm.com Cc: gcc-patches@gcc.gnu.org Subject: [PATCH] c++ testsuite: Add test for PR107703 Message-ID: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.1 on 10.11.54.10 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Disposition: inline X-Spam-Status: No, score=-3.1 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, KAM_NUMSUBJECT, KAM_SHORT, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_NONE, TXREP autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Jakub Jelinek via Gcc-patches From: Jakub Jelinek Reply-To: Jakub Jelinek Errors-To: gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org Sender: "Gcc-patches" X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1759996094432192954?= X-GMAIL-MSGID: =?utf-8?q?1759996094432192954?= Hi! This is on top of the https://gcc.gnu.org/pipermail/gcc-patches/2022-November/606398.html and https://gcc.gnu.org/pipermail/gcc-patches/2023-March/613724.html patches (to be precise, the latter isn't essential for it), I've realized that for the PR107703 bugfix in the first patch I haven't added some test coverage that the extended floating vs. integral or vice versa conversions work correctly. This new testcase adds such checks. And when writing it I've found that in ext-floating.h header in the testsuite I forgot back in November to remove #undef __STDCPP_BFLOAT16_T__ which was left there because the bfloat16 support wasn't in yet. The new testcase (and all older ext-floating*.C tests too) passes on vanilla trunk without the ext-floating.h change (x86_64-linux -m32/-m64) and with the PR107703 fix also with the ext-floating.h change. Ok for trunk? 2023-03-10 Jakub Jelinek PR target/107703 * g++.dg/cpp23/ext-floating.h (__STDCPP_BFLOAT16_T__): Don't undefine it. (std::bfloat16_t): Use decltype (0.0bf16) like libstdc++, rather than __bf16. * g++.dg/cpp23/ext-floating14.C: New test. Jakub --- gcc/testsuite/g++.dg/cpp23/ext-floating.h.jj 2022-09-27 08:03:27.118982749 +0200 +++ gcc/testsuite/g++.dg/cpp23/ext-floating.h 2023-03-10 15:04:01.647824767 +0100 @@ -14,9 +14,8 @@ namespace std #ifdef __STDCPP_FLOAT128_T__ using float128_t = _Float128; #endif - #undef __STDCPP_BFLOAT16_T__ #ifdef __STDCPP_BFLOAT16_T__ - using bfloat16_t = __bf16; // ??? + using bfloat16_t = decltype (0.0bf16); #endif template struct integral_constant { static constexpr T value = v; --- gcc/testsuite/g++.dg/cpp23/ext-floating14.C.jj 2023-03-10 14:12:17.658925358 +0100 +++ gcc/testsuite/g++.dg/cpp23/ext-floating14.C 2023-03-10 15:32:26.912057825 +0100 @@ -0,0 +1,585 @@ +// P1467R9 - Extended floating-point types and standard names. +// PR target/107703 +// { dg-do run { target c++23 } } +// { dg-options "-fexcess-precision=standard" } + +#include "ext-floating.h" + +#ifdef __SIZEOF_INT128__ +#define INT128_MAX ((signed __int128) ((~(unsigned __int128) 0) >> 1)) +#endif + +template +[[gnu::noipa]] T cvt (F f) +{ + return T (F (f)); +} + +int +main () +{ + // __FLT32_MAX_EXP__ is 128, so make sure all unsigned long long and unsigned __int128 + // values fit into it. __FLT16_MAX__ is 65504.0f16, so we need to be + // careful for that. +#if __SIZEOF_LONG_LONG__ * __CHAR_BIT__ <= 128 +#if !defined(__SIZEOF_INT128__) || __SIZEOF_INT128__ * __CHAR_BIT__ == 128 +#ifdef __STDCPP_FLOAT16_T__ + if (cvt (42) != (std::float16_t) 42 + || cvt (-42) != (std::float16_t) -42 +#if __SCHAR_MAX__ < 65504 + || cvt (__SCHAR_MAX__) != (std::float16_t) __SCHAR_MAX__ + || cvt (-__SCHAR_MAX__ - 1) != (std::float16_t) (-__SCHAR_MAX__ - 1) +#endif + ) + __builtin_abort (); + if (cvt (42) != (std::float16_t) 42 +#if __SCHAR_MAX__ * 2 + 1 < 65504 + || cvt ((unsigned char) ~0) != (std::float16_t) ((unsigned char) ~0) +#endif + ) + __builtin_abort (); + if (cvt (42) != (std::float16_t) 42 + || cvt (-42) != (std::float16_t) -42 +#if __SHRT_MAX__ < 65504 + || cvt (__SHRT_MAX__) != (std::float16_t) __SHRT_MAX__ + || cvt (-__SHRT_MAX__ - 1) != (std::float16_t) (-__SHRT_MAX__ - 1) +#else + || cvt (65504) != (std::float16_t) 65504 + || cvt (-65504) != (std::float16_t) -65504 +#endif + ) + __builtin_abort (); + if (cvt (42) != (std::float16_t) 42 + || cvt (65504U) != (std::float16_t) 65504U) + __builtin_abort (); + if (cvt (42) != (std::float16_t) 42 + || cvt (-42) != (std::float16_t) -42 +#if __INT_MAX__ < 65504 + || cvt (__INT_MAX__) != (std::float16_t) __INT_MAX__ + || cvt (-__INT_MAX__ - 1) != (std::float16_t) (-__INT_MAX__ - 1) +#else + || cvt (65504) != (std::float16_t) 65504 + || cvt (-65504) != (std::float16_t) -65504 +#endif + ) + __builtin_abort (); + if (cvt (42) != (std::float16_t) 42U + || cvt (65504U) != (std::float16_t) 65504U) + __builtin_abort (); + if (cvt (42L) != (std::float16_t) 42L + || cvt (-42L) != (std::float16_t) -42L + || cvt (65504L) != (std::float16_t) 65504L + || cvt (-65504L) != (std::float16_t) -65504L) + __builtin_abort (); + if (cvt (42UL) != (std::float16_t) 42UL + || cvt (65504UL) != (std::float16_t) 65504UL) + __builtin_abort (); + if (cvt (42LL) != (std::float16_t) 42LL + || cvt (-42LL) != (std::float16_t) -42LL + || cvt (65504LL) != (std::float16_t) 65504LL + || cvt (-65504LL) != (std::float16_t) -65504LL) + __builtin_abort (); + if (cvt (42ULL) != (std::float16_t) 42ULL + || cvt (65504ULL) != (std::float16_t) 65504ULL) + __builtin_abort (); +#ifdef __SIZEOF_INT128__ + if (cvt (42LL) != (std::float16_t) (signed __int128) 42LL + || cvt (-42LL) != (std::float16_t) (signed __int128) -42LL + || cvt (65504LL) != (std::float16_t) (signed __int128) 65504LL + || cvt (-65504LL) != (std::float16_t) (signed __int128) -65504LL) + __builtin_abort (); + if (cvt (42ULL) != (std::float16_t) (unsigned __int128) 42ULL + || cvt (65504ULL) != (std::float16_t) (unsigned __int128) 65504ULL) + __builtin_abort (); +#endif +#endif +#ifdef __STDCPP_BFLOAT16_T__ + if (cvt (42) != (std::bfloat16_t) 42 + || cvt (-42) != (std::bfloat16_t) -42 + || cvt (__SCHAR_MAX__) != (std::bfloat16_t) __SCHAR_MAX__ + || cvt (-__SCHAR_MAX__ - 1) != (std::bfloat16_t) (-__SCHAR_MAX__ - 1)) + __builtin_abort (); + if (cvt (42) != (std::bfloat16_t) 42 + || cvt ((unsigned char) ~0) != (std::bfloat16_t) ((unsigned char) ~0)) + __builtin_abort (); + if (cvt (42) != (std::bfloat16_t) 42 + || cvt (-42) != (std::bfloat16_t) -42 + || cvt (__SHRT_MAX__) != (std::bfloat16_t) __SHRT_MAX__ + || cvt (-__SHRT_MAX__ - 1) != (std::bfloat16_t) (-__SHRT_MAX__ - 1)) + __builtin_abort (); + if (cvt (42) != (std::bfloat16_t) 42 + || cvt ((unsigned short) ~0) != (std::bfloat16_t) ((unsigned short) ~0)) + __builtin_abort (); + if (cvt (42) != (std::bfloat16_t) 42 + || cvt (-42) != (std::bfloat16_t) -42 + || cvt (__INT_MAX__) != (std::bfloat16_t) __INT_MAX__ + || cvt (-__INT_MAX__ - 1) != (std::bfloat16_t) (-__INT_MAX__ - 1)) + __builtin_abort (); + if (cvt (42) != (std::bfloat16_t) 42U + || cvt (~0U) != (std::bfloat16_t) ~0U) + __builtin_abort (); + if (cvt (42L) != (std::bfloat16_t) 42L + || cvt (-42L) != (std::bfloat16_t) -42L + || cvt (__LONG_MAX__) != (std::bfloat16_t) __LONG_MAX__ + || cvt (-__LONG_MAX__ - 1) != (std::bfloat16_t) (-__LONG_MAX__ - 1)) + __builtin_abort (); + if (cvt (42UL) != (std::bfloat16_t) 42UL + || cvt (~0UL) != (std::bfloat16_t) ~0UL) + __builtin_abort (); + if (cvt (42LL) != (std::bfloat16_t) 42LL + || cvt (-42LL) != (std::bfloat16_t) -42LL + || cvt (__LONG_LONG_MAX__) != (std::bfloat16_t) __LONG_LONG_MAX__ + || cvt (-__LONG_LONG_MAX__ - 1) != (std::bfloat16_t) (-__LONG_LONG_MAX__ - 1)) + __builtin_abort (); + if (cvt (42ULL) != (std::bfloat16_t) 42ULL + || cvt (~0ULL) != (std::bfloat16_t) ~0ULL) + __builtin_abort (); +#ifdef __SIZEOF_INT128__ + if (cvt (42LL) != (std::bfloat16_t) (signed __int128) 42LL + || cvt (-42LL) != (std::bfloat16_t) (signed __int128) -42LL + || cvt (INT128_MAX) != (std::bfloat16_t) INT128_MAX + || cvt (-INT128_MAX - 1) != (std::bfloat16_t) (-INT128_MAX - 1)) + __builtin_abort (); + if (cvt (42ULL) != (std::bfloat16_t) (unsigned __int128) 42ULL + || cvt (~(unsigned __int128) 0) != (std::bfloat16_t) (~(unsigned __int128) 0)) + __builtin_abort (); +#endif +#endif +#ifdef __STDCPP_FLOAT32_T__ + if (cvt (42) != (std::float32_t) 42 + || cvt (-42) != (std::float32_t) -42 + || cvt (__SCHAR_MAX__) != (std::float32_t) __SCHAR_MAX__ + || cvt (-__SCHAR_MAX__ - 1) != (std::float32_t) (-__SCHAR_MAX__ - 1)) + __builtin_abort (); + if (cvt (42) != (std::float32_t) 42 + || cvt ((unsigned char) ~0) != (std::float32_t) ((unsigned char) ~0)) + __builtin_abort (); + if (cvt (42) != (std::float32_t) 42 + || cvt (-42) != (std::float32_t) -42 + || cvt (__SHRT_MAX__) != (std::float32_t) __SHRT_MAX__ + || cvt (-__SHRT_MAX__ - 1) != (std::float32_t) (-__SHRT_MAX__ - 1)) + __builtin_abort (); + if (cvt (42) != (std::float32_t) 42 + || cvt ((unsigned short) ~0) != (std::float32_t) ((unsigned short) ~0)) + __builtin_abort (); + if (cvt (42) != (std::float32_t) 42 + || cvt (-42) != (std::float32_t) -42 + || cvt (__INT_MAX__) != (std::float32_t) __INT_MAX__ + || cvt (-__INT_MAX__ - 1) != (std::float32_t) (-__INT_MAX__ - 1)) + __builtin_abort (); + if (cvt (42) != (std::float32_t) 42U + || cvt (~0U) != (std::float32_t) ~0U) + __builtin_abort (); + if (cvt (42L) != (std::float32_t) 42L + || cvt (-42L) != (std::float32_t) -42L + || cvt (__LONG_MAX__) != (std::float32_t) __LONG_MAX__ + || cvt (-__LONG_MAX__ - 1) != (std::float32_t) (-__LONG_MAX__ - 1)) + __builtin_abort (); + if (cvt (42UL) != (std::float32_t) 42UL + || cvt (~0UL) != (std::float32_t) ~0UL) + __builtin_abort (); + if (cvt (42LL) != (std::float32_t) 42LL + || cvt (-42LL) != (std::float32_t) -42LL + || cvt (__LONG_LONG_MAX__) != (std::float32_t) __LONG_LONG_MAX__ + || cvt (-__LONG_LONG_MAX__ - 1) != (std::float32_t) (-__LONG_LONG_MAX__ - 1)) + __builtin_abort (); + if (cvt (42ULL) != (std::float32_t) 42ULL + || cvt (~0ULL) != (std::float32_t) ~0ULL) + __builtin_abort (); +#ifdef __SIZEOF_INT128__ + if (cvt (42LL) != (std::float32_t) (signed __int128) 42LL + || cvt (-42LL) != (std::float32_t) (signed __int128) -42LL + || cvt (INT128_MAX) != (std::float32_t) INT128_MAX + || cvt (-INT128_MAX - 1) != (std::float32_t) (-INT128_MAX - 1)) + __builtin_abort (); + if (cvt (42ULL) != (std::float32_t) (unsigned __int128) 42ULL + || cvt (~(unsigned __int128) 0) != (std::float32_t) (~(unsigned __int128) 0)) + __builtin_abort (); +#endif +#endif +#ifdef __STDCPP_FLOAT64_T__ + if (cvt (42) != (std::float64_t) 42 + || cvt (-42) != (std::float64_t) -42 + || cvt (__SCHAR_MAX__) != (std::float64_t) __SCHAR_MAX__ + || cvt (-__SCHAR_MAX__ - 1) != (std::float64_t) (-__SCHAR_MAX__ - 1)) + __builtin_abort (); + if (cvt (42) != (std::float64_t) 42 + || cvt ((unsigned char) ~0) != (std::float64_t) ((unsigned char) ~0)) + __builtin_abort (); + if (cvt (42) != (std::float64_t) 42 + || cvt (-42) != (std::float64_t) -42 + || cvt (__SHRT_MAX__) != (std::float64_t) __SHRT_MAX__ + || cvt (-__SHRT_MAX__ - 1) != (std::float64_t) (-__SHRT_MAX__ - 1)) + __builtin_abort (); + if (cvt (42) != (std::float64_t) 42 + || cvt ((unsigned short) ~0) != (std::float64_t) ((unsigned short) ~0)) + __builtin_abort (); + if (cvt (42) != (std::float64_t) 42 + || cvt (-42) != (std::float64_t) -42 + || cvt (__INT_MAX__) != (std::float64_t) __INT_MAX__ + || cvt (-__INT_MAX__ - 1) != (std::float64_t) (-__INT_MAX__ - 1)) + __builtin_abort (); + if (cvt (42) != (std::float64_t) 42U + || cvt (~0U) != (std::float64_t) ~0U) + __builtin_abort (); + if (cvt (42L) != (std::float64_t) 42L + || cvt (-42L) != (std::float64_t) -42L + || cvt (__LONG_MAX__) != (std::float64_t) __LONG_MAX__ + || cvt (-__LONG_MAX__ - 1) != (std::float64_t) (-__LONG_MAX__ - 1)) + __builtin_abort (); + if (cvt (42UL) != (std::float64_t) 42UL + || cvt (~0UL) != (std::float64_t) ~0UL) + __builtin_abort (); + if (cvt (42LL) != (std::float64_t) 42LL + || cvt (-42LL) != (std::float64_t) -42LL + || cvt (__LONG_LONG_MAX__) != (std::float64_t) __LONG_LONG_MAX__ + || cvt (-__LONG_LONG_MAX__ - 1) != (std::float64_t) (-__LONG_LONG_MAX__ - 1)) + __builtin_abort (); + if (cvt (42ULL) != (std::float64_t) 42ULL + || cvt (~0ULL) != (std::float64_t) ~0ULL) + __builtin_abort (); +#ifdef __SIZEOF_INT128__ + if (cvt (42LL) != (std::float64_t) (signed __int128) 42LL + || cvt (-42LL) != (std::float64_t) (signed __int128) -42LL + || cvt (INT128_MAX) != (std::float64_t) INT128_MAX + || cvt (-INT128_MAX - 1) != (std::float64_t) (-INT128_MAX - 1)) + __builtin_abort (); + if (cvt (42ULL) != (std::float64_t) (unsigned __int128) 42ULL + || cvt (~(unsigned __int128) 0) != (std::float64_t) (~(unsigned __int128) 0)) + __builtin_abort (); +#endif +#endif +#ifdef __STDCPP_FLOAT128_T__ + if (cvt (42) != (std::float128_t) 42 + || cvt (-42) != (std::float128_t) -42 + || cvt (__SCHAR_MAX__) != (std::float128_t) __SCHAR_MAX__ + || cvt (-__SCHAR_MAX__ - 1) != (std::float128_t) (-__SCHAR_MAX__ - 1)) + __builtin_abort (); + if (cvt (42) != (std::float128_t) 42 + || cvt ((unsigned char) ~0) != (std::float128_t) ((unsigned char) ~0)) + __builtin_abort (); + if (cvt (42) != (std::float128_t) 42 + || cvt (-42) != (std::float128_t) -42 + || cvt (__SHRT_MAX__) != (std::float128_t) __SHRT_MAX__ + || cvt (-__SHRT_MAX__ - 1) != (std::float128_t) (-__SHRT_MAX__ - 1)) + __builtin_abort (); + if (cvt (42) != (std::float128_t) 42 + || cvt ((unsigned short) ~0) != (std::float128_t) ((unsigned short) ~0)) + __builtin_abort (); + if (cvt (42) != (std::float128_t) 42 + || cvt (-42) != (std::float128_t) -42 + || cvt (__INT_MAX__) != (std::float128_t) __INT_MAX__ + || cvt (-__INT_MAX__ - 1) != (std::float128_t) (-__INT_MAX__ - 1)) + __builtin_abort (); + if (cvt (42) != (std::float128_t) 42U + || cvt (~0U) != (std::float128_t) ~0U) + __builtin_abort (); + if (cvt (42L) != (std::float128_t) 42L + || cvt (-42L) != (std::float128_t) -42L + || cvt (__LONG_MAX__) != (std::float128_t) __LONG_MAX__ + || cvt (-__LONG_MAX__ - 1) != (std::float128_t) (-__LONG_MAX__ - 1)) + __builtin_abort (); + if (cvt (42UL) != (std::float128_t) 42UL + || cvt (~0UL) != (std::float128_t) ~0UL) + __builtin_abort (); + if (cvt (42LL) != (std::float128_t) 42LL + || cvt (-42LL) != (std::float128_t) -42LL + || cvt (__LONG_LONG_MAX__) != (std::float128_t) __LONG_LONG_MAX__ + || cvt (-__LONG_LONG_MAX__ - 1) != (std::float128_t) (-__LONG_LONG_MAX__ - 1)) + __builtin_abort (); + if (cvt (42ULL) != (std::float128_t) 42ULL + || cvt (~0ULL) != (std::float128_t) ~0ULL) + __builtin_abort (); +#ifdef __SIZEOF_INT128__ + if (cvt (42LL) != (std::float128_t) (signed __int128) 42LL + || cvt (-42LL) != (std::float128_t) (signed __int128) -42LL + || cvt (INT128_MAX) != (std::float128_t) INT128_MAX + || cvt (-INT128_MAX - 1) != (std::float128_t) (-INT128_MAX - 1)) + __builtin_abort (); + if (cvt (42ULL) != (std::float128_t) (unsigned __int128) 42ULL + || cvt (~(unsigned __int128) 0) != (std::float128_t) (~(unsigned __int128) 0)) + __builtin_abort (); +#endif +#endif + +#ifdef __STDCPP_FLOAT16_T__ + if (cvt (42.0f16) != (signed char) (std::float16_t) 42.0f16 + || cvt (-42.0f16) != (signed char) (std::float16_t) -42.0f16 +#if __SCHAR_MAX__ < 65504 + || cvt ((signed char) 1 << (__CHAR_BIT__ * sizeof (signed char) - 2)) != (signed char) (std::float16_t) ((signed char) 1 << (__CHAR_BIT__ * sizeof (signed char) - 2)) + || cvt (-((signed char) 1 << (__CHAR_BIT__ * sizeof (signed char) - 2))) != (signed char) (std::float16_t) (-((signed char) 1 << (__CHAR_BIT__ * sizeof (signed char) - 2))) +#endif + ) + __builtin_abort (); + if (cvt (42.0f16) != (unsigned char) (std::float16_t) 42.0f16 +#if __SCHAR_MAX__ * 2 + 1 < 65504 + || cvt ((unsigned char) 1 << (__CHAR_BIT__ * sizeof (unsigned char) - 1)) != (unsigned char) (std::float16_t) ((unsigned char) 1 << (__CHAR_BIT__ * sizeof (unsigned char) - 1)) +#endif + ) + __builtin_abort (); + if (cvt (42.0f16) != (signed short) (std::float16_t) 42.0f16 + || cvt (-42.0f16) != (signed short) (std::float16_t) -42.0f16 +#if __SHRT_MAX__ < 65504 + || cvt ((signed short) 1 << (__CHAR_BIT__ * sizeof (signed short) - 2)) != (signed short) (std::float16_t) ((signed short) 1 << (__CHAR_BIT__ * sizeof (signed short) - 2)) + || cvt (-((signed short) 1 << (__CHAR_BIT__ * sizeof (signed short) - 2))) != (signed short) (std::float16_t) (-((signed short) 1 << (__CHAR_BIT__ * sizeof (signed short) - 2))) +#else + || cvt (65504.0f16) != (signed short) (std::float16_t) 65504.0f16 + || cvt (-65504.0f16) != (signed short) (std::float16_t) -65504.0f16 +#endif + ) + __builtin_abort (); + if (cvt (42.0f16) != (unsigned short) (std::float16_t) 42.0f16 + || cvt (65504.0f16) != (unsigned short) (std::float16_t) 65504.0f16) + __builtin_abort (); + if (cvt (42.0f16) != (signed int) (std::float16_t) 42.0f16 + || cvt (-42.0f16) != (signed int) (std::float16_t) -42.0f16 +#if __INT_MAX__ < 65504 + || cvt ((signed int) 1 << (__CHAR_BIT__ * sizeof (signed int) - 2)) != (signed int) (std::float16_t) ((signed int) 1 << (__CHAR_BIT__ * sizeof (signed int) - 2)) + || cvt (-((signed int) 1 << (__CHAR_BIT__ * sizeof (signed int) - 2))) != (signed int) (std::float16_t) (-((signed int) 1 << (__CHAR_BIT__ * sizeof (signed int) - 2))) +#else + || cvt (65504.0f16) != (signed int) (std::float16_t) 65504.0f16 + || cvt (-65504.0f16) != (signed int) (std::float16_t) -65504.0f16 +#endif + ) + __builtin_abort (); + if (cvt (42.0f16) != (unsigned int) (std::float16_t) 42.0f16 + || cvt (65504.0f16) != (unsigned int) (std::float16_t) 65504.0f16) + __builtin_abort (); + if (cvt (42.0f16) != (signed long int) (std::float16_t) 42.0f16 + || cvt (-42.0f16) != (signed long int) (std::float16_t) -42.0f16 + || cvt (65504.0f16) != (signed long int) (std::float16_t) 65504.0f16 + || cvt (-65504.0f16) != (signed long int) (std::float16_t) -65504.0f16) + __builtin_abort (); + if (cvt (42.0f16) != (unsigned long int) (std::float16_t) 42.0f16 + || cvt (65504.0f16) != (unsigned long int) (std::float16_t) 65504.0f16) + __builtin_abort (); + if (cvt (42.0f16) != (signed long long int) (std::float16_t) 42.0f16 + || cvt (-42.0f16) != (signed long long int) (std::float16_t) -42.0f16 + || cvt (65504.0f16) != (signed long long int) (std::float16_t) 65504.0f16 + || cvt (-65504.0f16) != (signed long long int) (std::float16_t) -65504.0f16) + __builtin_abort (); + if (cvt (42.0f16) != (unsigned long long int) (std::float16_t) 42.0f16 + || cvt (65504.0f16) != (unsigned long long int) (std::float16_t) 65504.0f16) + __builtin_abort (); +#ifdef __SIZEOF_INT128__ + if (cvt (42.0f16) != (signed __int128) (std::float16_t) 42.0f16 + || cvt (-42.0f16) != (signed __int128) (std::float16_t) -42.0f16 + || cvt (65504.0f16) != (signed __int128) (std::float16_t) 65504.0f16 + || cvt (-65504.0f16) != (signed __int128) (std::float16_t) -65504.0f16) + __builtin_abort (); + if (cvt (42.0f16) != (unsigned __int128) (std::float16_t) 42.0f16 + || cvt (65504.0f16) != (unsigned __int128) (std::float16_t) 65504.0f16) + __builtin_abort (); +#endif +#endif +#ifdef __STDCPP_BFLOAT16_T__ + if (cvt (42.0bf16) != (signed char) (std::bfloat16_t) 42.0bf16 + || cvt (-42.0bf16) != (signed char) (std::bfloat16_t) -42.0bf16 + || cvt ((signed char) 1 << (__CHAR_BIT__ * sizeof (signed char) - 2)) != (signed char) (std::bfloat16_t) ((signed char) 1 << (__CHAR_BIT__ * sizeof (signed char) - 2)) + || cvt (-((signed char) 1 << (__CHAR_BIT__ * sizeof (signed char) - 2))) != (signed char) (std::bfloat16_t) (-((signed char) 1 << (__CHAR_BIT__ * sizeof (signed char) - 2)))) + __builtin_abort (); + if (cvt (42.0bf16) != (unsigned char) (std::bfloat16_t) 42.0bf16 + || cvt ((unsigned char) 1 << (__CHAR_BIT__ * sizeof (unsigned char) - 1)) != (unsigned char) (std::bfloat16_t) ((unsigned char) 1 << (__CHAR_BIT__ * sizeof (unsigned char) - 1))) + __builtin_abort (); + if (cvt (42.0bf16) != (signed short) (std::bfloat16_t) 42.0bf16 + || cvt (-42.0bf16) != (signed short) (std::bfloat16_t) -42.0bf16 + || cvt ((signed short) 1 << (__CHAR_BIT__ * sizeof (signed short) - 2)) != (signed short) (std::bfloat16_t) ((signed short) 1 << (__CHAR_BIT__ * sizeof (signed short) - 2)) + || cvt (-((signed short) 1 << (__CHAR_BIT__ * sizeof (signed short) - 2))) != (signed short) (std::bfloat16_t) (-((signed short) 1 << (__CHAR_BIT__ * sizeof (signed short) - 2)))) + __builtin_abort (); + if (cvt (42.0bf16) != (unsigned short) (std::bfloat16_t) 42.0bf16 + || cvt ((unsigned short) 1 << (__CHAR_BIT__ * sizeof (unsigned short) - 1)) != (unsigned short) (std::bfloat16_t) ((unsigned short) 1 << (__CHAR_BIT__ * sizeof (unsigned short) - 1))) + __builtin_abort (); + if (cvt (42.0bf16) != (signed int) (std::bfloat16_t) 42.0bf16 + || cvt (-42.0bf16) != (signed int) (std::bfloat16_t) -42.0bf16 + || cvt ((signed int) 1 << (__CHAR_BIT__ * sizeof (signed int) - 2)) != (signed int) (std::bfloat16_t) ((signed int) 1 << (__CHAR_BIT__ * sizeof (signed int) - 2)) + || cvt (-((signed int) 1 << (__CHAR_BIT__ * sizeof (signed int) - 2))) != (signed int) (std::bfloat16_t) (-((signed int) 1 << (__CHAR_BIT__ * sizeof (signed int) - 2)))) + __builtin_abort (); + if (cvt (42.0bf16) != (unsigned int) (std::bfloat16_t) 42.0bf16 + || cvt ((unsigned int) 1 << (__CHAR_BIT__ * sizeof (unsigned int) - 1)) != (unsigned int) (std::bfloat16_t) ((unsigned int) 1 << (__CHAR_BIT__ * sizeof (unsigned int) - 1))) + __builtin_abort (); + if (cvt (42.0bf16) != (signed long int) (std::bfloat16_t) 42.0bf16 + || cvt (-42.0bf16) != (signed long int) (std::bfloat16_t) -42.0bf16 + || cvt ((signed long int) 1 << (__CHAR_BIT__ * sizeof (signed long int) - 2)) != (signed long int) (std::bfloat16_t) ((signed long int) 1 << (__CHAR_BIT__ * sizeof (signed long int) - 2)) + || cvt (-((signed long int) 1 << (__CHAR_BIT__ * sizeof (signed long int) - 2))) != (signed long int) (std::bfloat16_t) (-((signed long int) 1 << (__CHAR_BIT__ * sizeof (signed long int) - 2)))) + __builtin_abort (); + if (cvt (42.0bf16) != (unsigned long int) (std::bfloat16_t) 42.0bf16 + || cvt ((unsigned long int) 1 << (__CHAR_BIT__ * sizeof (unsigned long int) - 1)) != (unsigned long int) (std::bfloat16_t) ((unsigned long int) 1 << (__CHAR_BIT__ * sizeof (unsigned long int) - 1))) + __builtin_abort (); + if (cvt (42.0bf16) != (signed long long int) (std::bfloat16_t) 42.0bf16 + || cvt (-42.0bf16) != (signed long long int) (std::bfloat16_t) -42.0bf16 + || cvt ((signed long long int) 1 << (__CHAR_BIT__ * sizeof (signed long long int) - 2)) != (signed long long int) (std::bfloat16_t) ((signed long long int) 1 << (__CHAR_BIT__ * sizeof (signed long long int) - 2)) + || cvt (-((signed long long int) 1 << (__CHAR_BIT__ * sizeof (signed long long int) - 2))) != (signed long long int) (std::bfloat16_t) (-((signed long long int) 1 << (__CHAR_BIT__ * sizeof (signed long long int) - 2)))) + __builtin_abort (); + if (cvt (42.0bf16) != (unsigned long long int) (std::bfloat16_t) 42.0bf16 + || cvt ((unsigned long long int) 1 << (__CHAR_BIT__ * sizeof (unsigned long long int) - 1)) != (unsigned long long int) (std::bfloat16_t) ((unsigned long long int) 1 << (__CHAR_BIT__ * sizeof (unsigned long long int) - 1))) + __builtin_abort (); +#ifdef __SIZEOF_INT128__ + if (cvt (42.0bf16) != (signed __int128) (std::bfloat16_t) 42.0bf16 + || cvt (-42.0bf16) != (signed __int128) (std::bfloat16_t) -42.0bf16 + || cvt ((signed __int128) 1 << (__CHAR_BIT__ * sizeof (signed __int128) - 2)) != (signed __int128) (std::bfloat16_t) ((signed __int128) 1 << (__CHAR_BIT__ * sizeof (signed __int128) - 2)) + || cvt (-((signed __int128) 1 << (__CHAR_BIT__ * sizeof (signed __int128) - 2))) != (signed __int128) (std::bfloat16_t) (-((signed __int128) 1 << (__CHAR_BIT__ * sizeof (signed __int128) - 2)))) + __builtin_abort (); + if (cvt (42.0bf16) != (unsigned __int128) (std::bfloat16_t) 42.0bf16 + || cvt ((unsigned __int128) 1 << (__CHAR_BIT__ * sizeof (unsigned __int128) - 1)) != (unsigned __int128) (std::bfloat16_t) ((unsigned __int128) 1 << (__CHAR_BIT__ * sizeof (unsigned __int128) - 1))) + __builtin_abort (); +#endif +#endif +#ifdef __STDCPP_FLOAT32_T__ + if (cvt (42.0f32) != (signed char) (std::float32_t) 42.0f32 + || cvt (-42.0f32) != (signed char) (std::float32_t) -42.0f32 + || cvt ((signed char) 1 << (__CHAR_BIT__ * sizeof (signed char) - 2)) != (signed char) (std::float32_t) ((signed char) 1 << (__CHAR_BIT__ * sizeof (signed char) - 2)) + || cvt (-((signed char) 1 << (__CHAR_BIT__ * sizeof (signed char) - 2))) != (signed char) (std::float32_t) (-((signed char) 1 << (__CHAR_BIT__ * sizeof (signed char) - 2)))) + __builtin_abort (); + if (cvt (42.0f32) != (unsigned char) (std::float32_t) 42.0f32 + || cvt ((unsigned char) 1 << (__CHAR_BIT__ * sizeof (unsigned char) - 1)) != (unsigned char) (std::float32_t) ((unsigned char) 1 << (__CHAR_BIT__ * sizeof (unsigned char) - 1))) + __builtin_abort (); + if (cvt (42.0f32) != (signed short) (std::float32_t) 42.0f32 + || cvt (-42.0f32) != (signed short) (std::float32_t) -42.0f32 + || cvt ((signed short) 1 << (__CHAR_BIT__ * sizeof (signed short) - 2)) != (signed short) (std::float32_t) ((signed short) 1 << (__CHAR_BIT__ * sizeof (signed short) - 2)) + || cvt (-((signed short) 1 << (__CHAR_BIT__ * sizeof (signed short) - 2))) != (signed short) (std::float32_t) (-((signed short) 1 << (__CHAR_BIT__ * sizeof (signed short) - 2)))) + __builtin_abort (); + if (cvt (42.0f32) != (unsigned short) (std::float32_t) 42.0f32 + || cvt ((unsigned short) 1 << (__CHAR_BIT__ * sizeof (unsigned short) - 1)) != (unsigned short) (std::float32_t) ((unsigned short) 1 << (__CHAR_BIT__ * sizeof (unsigned short) - 1))) + __builtin_abort (); + if (cvt (42.0f32) != (signed int) (std::float32_t) 42.0f32 + || cvt (-42.0f32) != (signed int) (std::float32_t) -42.0f32 + || cvt ((signed int) 1 << (__CHAR_BIT__ * sizeof (signed int) - 2)) != (signed int) (std::float32_t) ((signed int) 1 << (__CHAR_BIT__ * sizeof (signed int) - 2)) + || cvt (-((signed int) 1 << (__CHAR_BIT__ * sizeof (signed int) - 2))) != (signed int) (std::float32_t) (-((signed int) 1 << (__CHAR_BIT__ * sizeof (signed int) - 2)))) + __builtin_abort (); + if (cvt (42.0f32) != (unsigned int) (std::float32_t) 42.0f32 + || cvt ((unsigned int) 1 << (__CHAR_BIT__ * sizeof (unsigned int) - 1)) != (unsigned int) (std::float32_t) ((unsigned int) 1 << (__CHAR_BIT__ * sizeof (unsigned int) - 1))) + __builtin_abort (); + if (cvt (42.0f32) != (signed long int) (std::float32_t) 42.0f32 + || cvt (-42.0f32) != (signed long int) (std::float32_t) -42.0f32 + || cvt ((signed long int) 1 << (__CHAR_BIT__ * sizeof (signed long int) - 2)) != (signed long int) (std::float32_t) ((signed long int) 1 << (__CHAR_BIT__ * sizeof (signed long int) - 2)) + || cvt (-((signed long int) 1 << (__CHAR_BIT__ * sizeof (signed long int) - 2))) != (signed long int) (std::float32_t) (-((signed long int) 1 << (__CHAR_BIT__ * sizeof (signed long int) - 2)))) + __builtin_abort (); + if (cvt (42.0f32) != (unsigned long int) (std::float32_t) 42.0f32 + || cvt ((unsigned long int) 1 << (__CHAR_BIT__ * sizeof (unsigned long int) - 1)) != (unsigned long int) (std::float32_t) ((unsigned long int) 1 << (__CHAR_BIT__ * sizeof (unsigned long int) - 1))) + __builtin_abort (); + if (cvt (42.0f32) != (signed long long int) (std::float32_t) 42.0f32 + || cvt (-42.0f32) != (signed long long int) (std::float32_t) -42.0f32 + || cvt ((signed long long int) 1 << (__CHAR_BIT__ * sizeof (signed long long int) - 2)) != (signed long long int) (std::float32_t) ((signed long long int) 1 << (__CHAR_BIT__ * sizeof (signed long long int) - 2)) + || cvt (-((signed long long int) 1 << (__CHAR_BIT__ * sizeof (signed long long int) - 2))) != (signed long long int) (std::float32_t) (-((signed long long int) 1 << (__CHAR_BIT__ * sizeof (signed long long int) - 2)))) + __builtin_abort (); + if (cvt (42.0f32) != (unsigned long long int) (std::float32_t) 42.0f32 + || cvt ((unsigned long long int) 1 << (__CHAR_BIT__ * sizeof (unsigned long long int) - 1)) != (unsigned long long int) (std::float32_t) ((unsigned long long int) 1 << (__CHAR_BIT__ * sizeof (unsigned long long int) - 1))) + __builtin_abort (); +#ifdef __SIZEOF_INT128__ + if (cvt (42.0f32) != (signed __int128) (std::float32_t) 42.0f32 + || cvt (-42.0f32) != (signed __int128) (std::float32_t) -42.0f32 + || cvt ((signed __int128) 1 << (__CHAR_BIT__ * sizeof (signed __int128) - 2)) != (signed __int128) (std::float32_t) ((signed __int128) 1 << (__CHAR_BIT__ * sizeof (signed __int128) - 2)) + || cvt (-((signed __int128) 1 << (__CHAR_BIT__ * sizeof (signed __int128) - 2))) != (signed __int128) (std::float32_t) (-((signed __int128) 1 << (__CHAR_BIT__ * sizeof (signed __int128) - 2)))) + __builtin_abort (); + if (cvt (42.0f32) != (unsigned __int128) (std::float32_t) 42.0f32 + || cvt ((unsigned __int128) 1 << (__CHAR_BIT__ * sizeof (unsigned __int128) - 1)) != (unsigned __int128) (std::float32_t) ((unsigned __int128) 1 << (__CHAR_BIT__ * sizeof (unsigned __int128) - 1))) + __builtin_abort (); +#endif +#endif +#ifdef __STDCPP_FLOAT64_T__ + if (cvt (42.0f64) != (signed char) (std::float64_t) 42.0f64 + || cvt (-42.0f64) != (signed char) (std::float64_t) -42.0f64 + || cvt ((signed char) 1 << (__CHAR_BIT__ * sizeof (signed char) - 2)) != (signed char) (std::float64_t) ((signed char) 1 << (__CHAR_BIT__ * sizeof (signed char) - 2)) + || cvt (-((signed char) 1 << (__CHAR_BIT__ * sizeof (signed char) - 2))) != (signed char) (std::float64_t) (-((signed char) 1 << (__CHAR_BIT__ * sizeof (signed char) - 2)))) + __builtin_abort (); + if (cvt (42.0f64) != (unsigned char) (std::float64_t) 42.0f64 + || cvt ((unsigned char) 1 << (__CHAR_BIT__ * sizeof (unsigned char) - 1)) != (unsigned char) (std::float64_t) ((unsigned char) 1 << (__CHAR_BIT__ * sizeof (unsigned char) - 1))) + __builtin_abort (); + if (cvt (42.0f64) != (signed short) (std::float64_t) 42.0f64 + || cvt (-42.0f64) != (signed short) (std::float64_t) -42.0f64 + || cvt ((signed short) 1 << (__CHAR_BIT__ * sizeof (signed short) - 2)) != (signed short) (std::float64_t) ((signed short) 1 << (__CHAR_BIT__ * sizeof (signed short) - 2)) + || cvt (-((signed short) 1 << (__CHAR_BIT__ * sizeof (signed short) - 2))) != (signed short) (std::float64_t) (-((signed short) 1 << (__CHAR_BIT__ * sizeof (signed short) - 2)))) + __builtin_abort (); + if (cvt (42.0f64) != (unsigned short) (std::float64_t) 42.0f64 + || cvt ((unsigned short) 1 << (__CHAR_BIT__ * sizeof (unsigned short) - 1)) != (unsigned short) (std::float64_t) ((unsigned short) 1 << (__CHAR_BIT__ * sizeof (unsigned short) - 1))) + __builtin_abort (); + if (cvt (42.0f64) != (signed int) (std::float64_t) 42.0f64 + || cvt (-42.0f64) != (signed int) (std::float64_t) -42.0f64 + || cvt ((signed int) 1 << (__CHAR_BIT__ * sizeof (signed int) - 2)) != (signed int) (std::float64_t) ((signed int) 1 << (__CHAR_BIT__ * sizeof (signed int) - 2)) + || cvt (-((signed int) 1 << (__CHAR_BIT__ * sizeof (signed int) - 2))) != (signed int) (std::float64_t) (-((signed int) 1 << (__CHAR_BIT__ * sizeof (signed int) - 2)))) + __builtin_abort (); + if (cvt (42.0f64) != (unsigned int) (std::float64_t) 42.0f64 + || cvt ((unsigned int) 1 << (__CHAR_BIT__ * sizeof (unsigned int) - 1)) != (unsigned int) (std::float64_t) ((unsigned int) 1 << (__CHAR_BIT__ * sizeof (unsigned int) - 1))) + __builtin_abort (); + if (cvt (42.0f64) != (signed long int) (std::float64_t) 42.0f64 + || cvt (-42.0f64) != (signed long int) (std::float64_t) -42.0f64 + || cvt ((signed long int) 1 << (__CHAR_BIT__ * sizeof (signed long int) - 2)) != (signed long int) (std::float64_t) ((signed long int) 1 << (__CHAR_BIT__ * sizeof (signed long int) - 2)) + || cvt (-((signed long int) 1 << (__CHAR_BIT__ * sizeof (signed long int) - 2))) != (signed long int) (std::float64_t) (-((signed long int) 1 << (__CHAR_BIT__ * sizeof (signed long int) - 2)))) + __builtin_abort (); + if (cvt (42.0f64) != (unsigned long int) (std::float64_t) 42.0f64 + || cvt ((unsigned long int) 1 << (__CHAR_BIT__ * sizeof (unsigned long int) - 1)) != (unsigned long int) (std::float64_t) ((unsigned long int) 1 << (__CHAR_BIT__ * sizeof (unsigned long int) - 1))) + __builtin_abort (); + if (cvt (42.0f64) != (signed long long int) (std::float64_t) 42.0f64 + || cvt (-42.0f64) != (signed long long int) (std::float64_t) -42.0f64 + || cvt ((signed long long int) 1 << (__CHAR_BIT__ * sizeof (signed long long int) - 2)) != (signed long long int) (std::float64_t) ((signed long long int) 1 << (__CHAR_BIT__ * sizeof (signed long long int) - 2)) + || cvt (-((signed long long int) 1 << (__CHAR_BIT__ * sizeof (signed long long int) - 2))) != (signed long long int) (std::float64_t) (-((signed long long int) 1 << (__CHAR_BIT__ * sizeof (signed long long int) - 2)))) + __builtin_abort (); + if (cvt (42.0f64) != (unsigned long long int) (std::float64_t) 42.0f64 + || cvt ((unsigned long long int) 1 << (__CHAR_BIT__ * sizeof (unsigned long long int) - 1)) != (unsigned long long int) (std::float64_t) ((unsigned long long int) 1 << (__CHAR_BIT__ * sizeof (unsigned long long int) - 1))) + __builtin_abort (); +#ifdef __SIZEOF_INT128__ + if (cvt (42.0f64) != (signed __int128) (std::float64_t) 42.0f64 + || cvt (-42.0f64) != (signed __int128) (std::float64_t) -42.0f64 + || cvt ((signed __int128) 1 << (__CHAR_BIT__ * sizeof (signed __int128) - 2)) != (signed __int128) (std::float64_t) ((signed __int128) 1 << (__CHAR_BIT__ * sizeof (signed __int128) - 2)) + || cvt (-((signed __int128) 1 << (__CHAR_BIT__ * sizeof (signed __int128) - 2))) != (signed __int128) (std::float64_t) (-((signed __int128) 1 << (__CHAR_BIT__ * sizeof (signed __int128) - 2)))) + __builtin_abort (); + if (cvt (42.0f64) != (unsigned __int128) (std::float64_t) 42.0f64 + || cvt ((unsigned __int128) 1 << (__CHAR_BIT__ * sizeof (unsigned __int128) - 1)) != (unsigned __int128) (std::float64_t) ((unsigned __int128) 1 << (__CHAR_BIT__ * sizeof (unsigned __int128) - 1))) + __builtin_abort (); +#endif +#endif +#ifdef __STDCPP_FLOAT128_T__ + if (cvt (42.0f128) != (signed char) (std::float128_t) 42.0f128 + || cvt (-42.0f128) != (signed char) (std::float128_t) -42.0f128 + || cvt ((signed char) 1 << (__CHAR_BIT__ * sizeof (signed char) - 2)) != (signed char) (std::float128_t) ((signed char) 1 << (__CHAR_BIT__ * sizeof (signed char) - 2)) + || cvt (-((signed char) 1 << (__CHAR_BIT__ * sizeof (signed char) - 2))) != (signed char) (std::float128_t) (-((signed char) 1 << (__CHAR_BIT__ * sizeof (signed char) - 2)))) + __builtin_abort (); + if (cvt (42.0f128) != (unsigned char) (std::float128_t) 42.0f128 + || cvt ((unsigned char) 1 << (__CHAR_BIT__ * sizeof (unsigned char) - 1)) != (unsigned char) (std::float128_t) ((unsigned char) 1 << (__CHAR_BIT__ * sizeof (unsigned char) - 1))) + __builtin_abort (); + if (cvt (42.0f128) != (signed short) (std::float128_t) 42.0f128 + || cvt (-42.0f128) != (signed short) (std::float128_t) -42.0f128 + || cvt ((signed short) 1 << (__CHAR_BIT__ * sizeof (signed short) - 2)) != (signed short) (std::float128_t) ((signed short) 1 << (__CHAR_BIT__ * sizeof (signed short) - 2)) + || cvt (-((signed short) 1 << (__CHAR_BIT__ * sizeof (signed short) - 2))) != (signed short) (std::float128_t) (-((signed short) 1 << (__CHAR_BIT__ * sizeof (signed short) - 2)))) + __builtin_abort (); + if (cvt (42.0f128) != (unsigned short) (std::float128_t) 42.0f128 + || cvt ((unsigned short) 1 << (__CHAR_BIT__ * sizeof (unsigned short) - 1)) != (unsigned short) (std::float128_t) ((unsigned short) 1 << (__CHAR_BIT__ * sizeof (unsigned short) - 1))) + __builtin_abort (); + if (cvt (42.0f128) != (signed int) (std::float128_t) 42.0f128 + || cvt (-42.0f128) != (signed int) (std::float128_t) -42.0f128 + || cvt ((signed int) 1 << (__CHAR_BIT__ * sizeof (signed int) - 2)) != (signed int) (std::float128_t) ((signed int) 1 << (__CHAR_BIT__ * sizeof (signed int) - 2)) + || cvt (-((signed int) 1 << (__CHAR_BIT__ * sizeof (signed int) - 2))) != (signed int) (std::float128_t) (-((signed int) 1 << (__CHAR_BIT__ * sizeof (signed int) - 2)))) + __builtin_abort (); + if (cvt (42.0f128) != (unsigned int) (std::float128_t) 42.0f128 + || cvt ((unsigned int) 1 << (__CHAR_BIT__ * sizeof (unsigned int) - 1)) != (unsigned int) (std::float128_t) ((unsigned int) 1 << (__CHAR_BIT__ * sizeof (unsigned int) - 1))) + __builtin_abort (); + if (cvt (42.0f128) != (signed long int) (std::float128_t) 42.0f128 + || cvt (-42.0f128) != (signed long int) (std::float128_t) -42.0f128 + || cvt ((signed long int) 1 << (__CHAR_BIT__ * sizeof (signed long int) - 2)) != (signed long int) (std::float128_t) ((signed long int) 1 << (__CHAR_BIT__ * sizeof (signed long int) - 2)) + || cvt (-((signed long int) 1 << (__CHAR_BIT__ * sizeof (signed long int) - 2))) != (signed long int) (std::float128_t) (-((signed long int) 1 << (__CHAR_BIT__ * sizeof (signed long int) - 2)))) + __builtin_abort (); + if (cvt (42.0f128) != (unsigned long int) (std::float128_t) 42.0f128 + || cvt ((unsigned long int) 1 << (__CHAR_BIT__ * sizeof (unsigned long int) - 1)) != (unsigned long int) (std::float128_t) ((unsigned long int) 1 << (__CHAR_BIT__ * sizeof (unsigned long int) - 1))) + __builtin_abort (); + if (cvt (42.0f128) != (signed long long int) (std::float128_t) 42.0f128 + || cvt (-42.0f128) != (signed long long int) (std::float128_t) -42.0f128 + || cvt ((signed long long int) 1 << (__CHAR_BIT__ * sizeof (signed long long int) - 2)) != (signed long long int) (std::float128_t) ((signed long long int) 1 << (__CHAR_BIT__ * sizeof (signed long long int) - 2)) + || cvt (-((signed long long int) 1 << (__CHAR_BIT__ * sizeof (signed long long int) - 2))) != (signed long long int) (std::float128_t) (-((signed long long int) 1 << (__CHAR_BIT__ * sizeof (signed long long int) - 2)))) + __builtin_abort (); + if (cvt (42.0f128) != (unsigned long long int) (std::float128_t) 42.0f128 + || cvt ((unsigned long long int) 1 << (__CHAR_BIT__ * sizeof (unsigned long long int) - 1)) != (unsigned long long int) (std::float128_t) ((unsigned long long int) 1 << (__CHAR_BIT__ * sizeof (unsigned long long int) - 1))) + __builtin_abort (); +#ifdef __SIZEOF_INT128__ + if (cvt (42.0f128) != (signed __int128) (std::float128_t) 42.0f128 + || cvt (-42.0f128) != (signed __int128) (std::float128_t) -42.0f128 + || cvt ((signed __int128) 1 << (__CHAR_BIT__ * sizeof (signed __int128) - 2)) != (signed __int128) (std::float128_t) ((signed __int128) 1 << (__CHAR_BIT__ * sizeof (signed __int128) - 2)) + || cvt (-((signed __int128) 1 << (__CHAR_BIT__ * sizeof (signed __int128) - 2))) != (signed __int128) (std::float128_t) (-((signed __int128) 1 << (__CHAR_BIT__ * sizeof (signed __int128) - 2)))) + __builtin_abort (); + if (cvt (42.0f128) != (unsigned __int128) (std::float128_t) 42.0f128 + || cvt ((unsigned __int128) 1 << (__CHAR_BIT__ * sizeof (unsigned __int128) - 1)) != (unsigned __int128) (std::float128_t) ((unsigned __int128) 1 << (__CHAR_BIT__ * sizeof (unsigned __int128) - 1))) + __builtin_abort (); +#endif +#endif +#endif +#endif +}