From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from server.nextmovesoftware.com (server.nextmovesoftware.com [162.254.253.69]) by sourceware.org (Postfix) with ESMTPS id 1881C3858C1F for ; Wed, 7 Jun 2023 22:54:40 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 1881C3858C1F Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=nextmovesoftware.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=nextmovesoftware.com DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=nextmovesoftware.com; s=default; h=Content-Type:MIME-Version:Message-ID: Date:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=O3Vh71xWWxmI8/d23QOZ4iks04dZSdrlEgJuYdS/gmQ=; b=IiBwO1/0B9uubE8Ei4jTGyJIuU 9iwMskIkL93JbRL+CAB1kzumQn0bYEsYJqq12snx91uY2uzp8cPvW+I9DTMOu7KmVDVTRAg9FvqoD UiJ4s9ci1NLMIxtcV5AuFiBBAebfOCyMCvHoig0cDMm6bPGM325or+e/EZXezKxYoWzxxlSJTuBhP eeeFOUJhHhIdK1t2aYUfdNxOw72svmyDK5LWAtkNdzIeLO0EKd4GClL4fLvDIK7sIw+EfWrHwmw7C KO8b33NXBUzVx8HaFkWZZgcYKA6kfb7b8AYGCVtmz88RqceR7KZMczAAbHyhGWJQ4S2lEPXtWswB5 zogAxZYQ==; Received: from host86-169-41-81.range86-169.btcentralplus.com ([86.169.41.81]:54538 helo=Dell) by server.nextmovesoftware.com with esmtpsa (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1q7235-00080I-0S; Wed, 07 Jun 2023 18:54:39 -0400 From: "Roger Sayle" To: Cc: "'Richard Sandiford'" Subject: [Committed] Bug fix to new wi::bitreverse_large function. Date: Wed, 7 Jun 2023 23:54:37 +0100 Message-ID: <009d01d99993$0a433840$1ec9a8c0$@nextmovesoftware.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_009E_01D9999B.6C07A040" X-Mailer: Microsoft Outlook 16.0 Thread-Index: AdmZkoApfEOEY8etQTy24lz6aAFQ2A== Content-Language: en-gb X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - server.nextmovesoftware.com X-AntiAbuse: Original Domain - gcc.gnu.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - nextmovesoftware.com X-Get-Message-Sender-Via: server.nextmovesoftware.com: authenticated_id: roger@nextmovesoftware.com X-Authenticated-Sender: server.nextmovesoftware.com: roger@nextmovesoftware.com X-Source: X-Source-Args: X-Source-Dir: X-Spam-Status: No, score=-10.8 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,KAM_SHORT,RCVD_IN_BARRACUDACENTRAL,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: This is a multipart message in MIME format. ------=_NextPart_000_009E_01D9999B.6C07A040 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Richard Sandiford was, of course, right to be warry of new code without much test coverage. Converting the nvptx backend to use the BITREVERSE rtx infrastructure, has resulted in far more exhaustive testing and revealed a subtle bug in the new wi::bitreverse implementation. The code needs to use HOST_WIDE_INT_1U (instead of 1) to avoid unintended sign extension. This patch has been tested on nvptx-none hosted on x86_64-pc-linux-gnu (with a minor tweak to use BITREVERSE), where it fixes regressions of the 32-bit test vectors in gcc.target/nvptx/brev-2.c and the 64-bit test vectors in gcc.target/nvptx/brevll-2.c. Committed as obvious. 2023-06-07 Roger Sayle gcc/ChangeLog * wide-int.cc (wi::bitreverse_large): Use HOST_WIDE_INT_1U to avoid sign extension/undefined behaviour when setting each bit. Thanks, Roger -- ------=_NextPart_000_009E_01D9999B.6C07A040 Content-Type: text/plain; name="patchwi.txt" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="patchwi.txt" diff --git a/gcc/wide-int.cc b/gcc/wide-int.cc=0A= index 24bdce2..ab92ee6 100644=0A= --- a/gcc/wide-int.cc=0A= +++ b/gcc/wide-int.cc=0A= @@ -786,7 +786,7 @@ wi::bitreverse_large (HOST_WIDE_INT *val, const = HOST_WIDE_INT *xval,=0A= unsigned int d =3D (precision - 1) - s;=0A= block =3D d / HOST_BITS_PER_WIDE_INT;=0A= offset =3D d & (HOST_BITS_PER_WIDE_INT - 1);=0A= - val[block] |=3D 1 << offset;=0A= + val[block] |=3D HOST_WIDE_INT_1U << offset;=0A= }=0A= }=0A= =0A= ------=_NextPart_000_009E_01D9999B.6C07A040--