From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id A35033858D3C; Fri, 2 Jun 2023 10:39:06 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org A35033858D3C DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1685702346; bh=+oVE0sxs3p7BJ7W6IO2UkCbAg7LL+Y82QLd43mUQrIw=; h=From:To:Subject:Date:In-Reply-To:References:From; b=p/uJwcOZRLis5IyQ/fPthYQGyWObG74EXHZB9jgJHh8En8Pwq8pXi9G34Xp/Q4PKn QF9JaNbPVJry4KKtm4bUBPCIJ+DsQApXRJjS70lzFSn5ZoQ9WJnLDux6a2q0ml+xDk tu57jrKo7L+kC4cJk9t7Ob7pHv4z8hpGI2lxnwDU= From: "jakub at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug c/102989] Implement C2x's n2763 (_BitInt) Date: Fri, 02 Jun 2023 10:39:04 +0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: c X-Bugzilla-Version: 12.0 X-Bugzilla-Keywords: X-Bugzilla-Severity: enhancement X-Bugzilla-Who: jakub at gcc dot gnu.org X-Bugzilla-Status: NEW X-Bugzilla-Resolution: X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: attachments.isobsolete attachments.created Message-ID: In-Reply-To: References: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 List-Id: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D102989 Jakub Jelinek changed: What |Removed |Added ---------------------------------------------------------------------------- Attachment #55169|0 |1 is obsolete| | --- Comment #53 from Jakub Jelinek --- Created attachment 55240 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=3D55240&action=3Dedit gcc14-bitint-wip.patch Further updates. This introduces a new bitintlower (and bitintlower0) pass, categorizes _BitInt types into 4 categories (small, which are kept as is as they work o= ut of the box, middle, which have already more than one limb, but there exists DImode or TImode type which is supported and covers the precision, here lowering is done by casting to INTEGER_TYPE and back, large which is up to double that size (so it will be lowered to straight line code) and huge, which will use loops. The lowerin= g is so far implemented for the middle _BitInts. Added some runtime testsuite coverage for the small and middle _BitInts (so= on x86-64 up to 128 bits).=