From patchwork Tue Nov 16 00:36:07 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Patrick Palka X-Patchwork-Id: 47739 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id A1A8B3857C4A for ; Tue, 16 Nov 2021 00:37:13 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org A1A8B3857C4A DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1637023033; bh=+fhn9jcFK8wM20HBm3uQSxLGO9pbXEGQhCykolYBU9E=; h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:Cc:From; b=CYPxsiLM+2QqDQZOTcirwLs1wuyCaxdiO4sXEaCRoL5aPYqG72YQE35YGxyyek5rM IeqwOPs0aHw10m2OBfB2DkpdlglQ2LoyHeGA/W70nXvr89lEv7AWgW0jVFaiqlrVVX DYQpElxiZtmIBvPnwer2BGnP4aGW206C6Kn2CagI= 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.129.124]) by sourceware.org (Postfix) with ESMTPS id E992A385802A for ; Tue, 16 Nov 2021 00:36:11 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org E992A385802A Received: from mail-qk1-f200.google.com (mail-qk1-f200.google.com [209.85.222.200]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-189-khaJ2g80PBO34m_-04Pz1g-1; Mon, 15 Nov 2021 19:36:10 -0500 X-MC-Unique: khaJ2g80PBO34m_-04Pz1g-1 Received: by mail-qk1-f200.google.com with SMTP id c1-20020a05620a0ce100b00468060d41ecso9162793qkj.19 for ; Mon, 15 Nov 2021 16:36:10 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=+fhn9jcFK8wM20HBm3uQSxLGO9pbXEGQhCykolYBU9E=; b=obSxH+akiweJ5Wsp7WXlX5ZUiTqGzIgo95S8po77pyLBK/elv/IgCdlTDWvqmrql1D rT6AI3YKgVf+LptWy4Lk6Apj7QlzuSgTELdXDCk0BlFoTZZBAu2+sqQ9g5b4vxKrYmIy L23MwEfO4mtbqKt4XPbHbZ+rPwBG6+m0+Hu2NOtMBx9ZavKiEnkoDCfs1BDcX4cPJmM1 st8MdCwRERETBvMsltlH6I9Ckd2hT5ssDUfzvvTlocilEYTq7rLk/zd4ptp+7aSu6bJF tmYE8vHihzixEnndXlWJHYOAN4NZ6dQ2pDEV7wThR/3o5jy+Gb9P4QJQV3pcHJEtNiO4 +buA== X-Gm-Message-State: AOAM533dku1xUKhY6tRYPrFC3WhVS3KRQ5nFgaMfhOwPQKjQd6UmIHMv tFs8P59565Anr6148pZTHmn79Os0vaDdvudQ9wvtVM5OzDIQA9gjFQGnwF63Fg2bgCF2neSsJXb a75TT8S0SyUOFnulKc0z/gU2utFzeJqzy1WDGF88yB/gpBED0OGgI4PjuowUlteVDYVc= X-Received: by 2002:a05:6214:4012:: with SMTP id kd18mr41560135qvb.1.1637022969830; Mon, 15 Nov 2021 16:36:09 -0800 (PST) X-Google-Smtp-Source: ABdhPJwHQMbzkr9yNoRE/oLqPywO56PIWZNztHxvyp8H03XLMNs/1kAr1TrzKFPgvQG2OjoXsMlxsQ== X-Received: by 2002:a05:6214:4012:: with SMTP id kd18mr41560092qvb.1.1637022969498; Mon, 15 Nov 2021 16:36:09 -0800 (PST) Received: from localhost.localdomain (ool-457d493a.dyn.optonline.net. [69.125.73.58]) by smtp.gmail.com with ESMTPSA id c7sm1185845qtc.32.2021.11.15.16.36.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 15 Nov 2021 16:36:08 -0800 (PST) To: gcc-patches@gcc.gnu.org Subject: [PATCH] libstdc++: Merge latest Ryu sources Date: Mon, 15 Nov 2021 19:36:07 -0500 Message-Id: <20211116003607.2350853-1-ppalka@redhat.com> X-Mailer: git-send-email 2.34.0 MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com X-Spam-Status: No, score=-15.7 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H4, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_NONE, TXREP autolearn=unavailable autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) 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: Patrick Palka via Gcc-patches From: Patrick Palka Reply-To: Patrick Palka Cc: libstdc++@gcc.gnu.org Errors-To: gcc-patches-bounces+patchwork=sourceware.org@gcc.gnu.org Sender: "Gcc-patches" The only source change is a speedup to pow5Factor. Tested on x86_64-pc-linux-gnu, does this look OK for trunk? libstdc++-v3/ChangeLog: * src/c++17/ryu/MERGE: Update the commit hash. * src/c++17/ryu/d2s_intrinsics.h: Merge from Ryu's master branch. --- libstdc++-v3/src/c++17/ryu/MERGE | 2 +- libstdc++-v3/src/c++17/ryu/d2s_intrinsics.h | 9 ++++----- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/libstdc++-v3/src/c++17/ryu/MERGE b/libstdc++-v3/src/c++17/ryu/MERGE index 0ea65add2ff..9035502846e 100644 --- a/libstdc++-v3/src/c++17/ryu/MERGE +++ b/libstdc++-v3/src/c++17/ryu/MERGE @@ -1,4 +1,4 @@ -22c887c017a8512abcd4a8f6bfcdb2742829cd7d +150d0c87830756d34e76c42f7f33f811d89903a8 The first line of this file holds the git revision number of the last merge done from the master library sources. diff --git a/libstdc++-v3/src/c++17/ryu/d2s_intrinsics.h b/libstdc++-v3/src/c++17/ryu/d2s_intrinsics.h index bbac4dfd48f..e3206b5d7dd 100644 --- a/libstdc++-v3/src/c++17/ryu/d2s_intrinsics.h +++ b/libstdc++-v3/src/c++17/ryu/d2s_intrinsics.h @@ -181,15 +181,14 @@ static inline uint32_t mod1e9(const uint64_t x) { #endif // defined(RYU_32_BIT_PLATFORM) static inline uint32_t pow5Factor(uint64_t value) { + const uint64_t m_inv_5 = 14757395258967641293u; // 5 * m_inv_5 = 1 (mod 2^64) + const uint64_t n_div_5 = 3689348814741910323u; // #{ n | n = 0 (mod 2^64) } = 2^64 / 5 uint32_t count = 0; for (;;) { assert(value != 0); - const uint64_t q = div5(value); - const uint32_t r = ((uint32_t) value) - 5 * ((uint32_t) q); - if (r != 0) { + value *= m_inv_5; + if (value > n_div_5) break; - } - value = q; ++count; } return count;