Message ID | 009d01d99993$0a433840$1ec9a8c0$@nextmovesoftware.com |
---|---|
State | Unresolved |
Headers |
Return-Path: <gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org> Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:994d:0:b0:3d9:f83d:47d9 with SMTP id k13csp532641vqr; Wed, 7 Jun 2023 15:55:12 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ4uYeg43Xkt6EmC0XzlYTnI3BgrMlKswrMNqBUknQ2UeB8vaQfiYhoVO+m2htYHWndJmHkY X-Received: by 2002:aa7:de16:0:b0:514:abb9:7ab1 with SMTP id h22-20020aa7de16000000b00514abb97ab1mr5588846edv.8.1686178511854; Wed, 07 Jun 2023 15:55:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1686178511; cv=none; d=google.com; s=arc-20160816; b=zMzynYR4PhYW9TvRSvXT4UXtcF0PYAZyFQsbyBYbNxS7sdB6eBowCuqNy9o/dxk3Zq YC0F8qJ3HCKruw5+wZrMCToQczhFUy/vBe/LzWNt3Idleqo3xCuyItgd/A7XPsWSMvdN /5ETJQpw2c46UtyRStE+xaPKMIupcSiv7LzmmTWVx8rD7tH8Kw9P+EPrRpplg493wyMH AaCIbI7drdSMWrf/1OYzQwnTwh2232ORoYx08TE7nA4MFuKGb5urOoOR2yGJ5vt24efa yzE0UxuyyS4LVT1SSLj7fjl5VJmOOVRNe6j5bdH6qMubuivWtqXhG3pYLxnsMu9Ji0ZE 8Dig== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-language:thread-index :mime-version:message-id:date:subject:cc:to:from:dkim-signature :dmarc-filter:delivered-to; bh=O3Vh71xWWxmI8/d23QOZ4iks04dZSdrlEgJuYdS/gmQ=; b=rl8XZHyhgl2x0g3+ZTIWvMUL5vaDb6BzFqBBFixHXCmHKyky6jIykgpPn+TdL/OAjw QeL6f5puiZbbmhqzmqtw92LUpr9Xy/KABVmNkBLlm5ZljufF6lEksr2i2sPc/9HMfCCq vEWYiLzEHki+R36FM/GUSsGL1Q8+vaGpraugD0GgBzRXTffBfPpzqiuEc0Ll04lYxRML v6IR7VtGr6QpaBEowHHGDrt4YQOWgS2UrqpKaDKZjD3w0TyBv4SWc2rxnemL3Mt07MCl YIeiGSXJ8tLbx2UxtA3EzEsKoV+5yOIrl7LlZFRlfA/7JRhnvZGeIDIqvJV4zdlykj2v Yeww== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@nextmovesoftware.com header.s=default header.b="IiBwO1/0"; spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org" Received: from sourceware.org (ip-8-43-85-97.sourceware.org. [8.43.85.97]) by mx.google.com with ESMTPS id b2-20020aa7df82000000b00514a0ec9898si3950810edy.341.2023.06.07.15.55.11 for <ouuuleilei@gmail.com> (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 07 Jun 2023 15:55:11 -0700 (PDT) Received-SPF: pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) client-ip=8.43.85.97; Authentication-Results: mx.google.com; dkim=fail header.i=@nextmovesoftware.com header.s=default header.b="IiBwO1/0"; spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org" Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 3138E3856DE2 for <ouuuleilei@gmail.com>; Wed, 7 Jun 2023 22:55:04 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from server.nextmovesoftware.com (server.nextmovesoftware.com [162.254.253.69]) by sourceware.org (Postfix) with ESMTPS id 1881C3858C1F for <gcc-patches@gcc.gnu.org>; 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 <roger@nextmovesoftware.com>) id 1q7235-00080I-0S; Wed, 07 Jun 2023 18:54:39 -0400 From: "Roger Sayle" <roger@nextmovesoftware.com> To: <gcc-patches@gcc.gnu.org> Cc: "'Richard Sandiford'" <richard.sandiford@arm.com> 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 X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 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+ouuuleilei=gmail.com@gcc.gnu.org Sender: "Gcc-patches" <gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org> X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1768086319257051746?= X-GMAIL-MSGID: =?utf-8?q?1768086319257051746?= |
Series |
[Committed] Bug fix to new wi::bitreverse_large function.
|
|
Checks
Context | Check | Description |
---|---|---|
snail/gcc-patch-check | warning | Git am fail log |
Commit Message
Roger Sayle
June 7, 2023, 10:54 p.m. UTC
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 <roger@nextmovesoftware.com> 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 --
diff --git a/gcc/wide-int.cc b/gcc/wide-int.cc index 24bdce2..ab92ee6 100644 --- a/gcc/wide-int.cc +++ b/gcc/wide-int.cc @@ -786,7 +786,7 @@ wi::bitreverse_large (HOST_WIDE_INT *val, const HOST_WIDE_INT *xval, unsigned int d = (precision - 1) - s; block = d / HOST_BITS_PER_WIDE_INT; offset = d & (HOST_BITS_PER_WIDE_INT - 1); - val[block] |= 1 << offset; + val[block] |= HOST_WIDE_INT_1U << offset; } }