Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp379912pxj; Tue, 18 May 2021 05:36:39 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyELtHN0DMf3ZnyYgUyNEXiLnPjByE8624gb7p9yEKJw8qkNyNfc5U8Zf2zsZv8z1603K/D X-Received: by 2002:a17:906:c010:: with SMTP id e16mr5962002ejz.214.1621341399681; Tue, 18 May 2021 05:36:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1621341399; cv=none; d=google.com; s=arc-20160816; b=pJE/rHq3AZR4kAxpMr/AI7aY15pEFlwzayn+VGjbwdxDY2m9Vn/cWslMdmeGjhAwkw VYj6KEqCRKCYAqa2HHbpg5B5Ojtsw6uHl6tzWmbMDXFiDNi08UMoW/k6XJX24rZq43lN 2y/dsj3X3nOvyk58UW6u3L0nq3Ix5IkO84L1um0O7zRKi1QBhjkVYKSZMbpmiyseuxuU GBBYuj0xzPVkF8XC9zjo1aWMRi6HaXrhZntaHCYbTn4YdmKDVYABlRAMmBLdkdIQJwku OsjCz1NkigWawwhX4CNvtsp6C5hvgSa84rCS4UqIjjtjH4qKBzb79Vkjiz1C+Yz4OSEd WKGw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=l3zXB7z1H35nnTT54pwXWfkMGkBdwPmSKjNio+Xf6No=; b=hiursCJ79BF9YpVjG8JHR7Nva02X268qDuUMbtTpEOgWuNmtsGk002CrdPXFb3ItWz FuHcIaEjGPScW1P0jmEQtEma5DfRCqkCfkntT4yOoP+wsC89dCf/ltxy0AYyiTmBKOsV HI3yANeI7jjGjrLF3XQI9ugrH5nEyKBjjh52QSKprCLg5Vn6/IpumbSDQC9nhWIqUW8q HTr72kJMnLl0PiYWuPAd1e+zSW1aR40WFFGYin7npjcLrB+eKM4YNZ8YU4QFwL+9Zrui MDxwOizaBnqt/5buqQB5sBIsrF/4+sfHX0kavAhQhPcmlTDhCPkb4ByqvkeP2RhmuJKo xFUw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=ojrd87Lt; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id mp10si18357621ejc.617.2021.05.18.05.36.16; Tue, 18 May 2021 05:36:39 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=ojrd87Lt; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1343692AbhEQPem (ORCPT + 99 others); Mon, 17 May 2021 11:34:42 -0400 Received: from mail.kernel.org ([198.145.29.99]:52812 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S244224AbhEQPTm (ORCPT ); Mon, 17 May 2021 11:19:42 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 11F7061C80; Mon, 17 May 2021 14:33:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1621262039; bh=7oYuLHNwzc9jy8+tx7Q4sSHTjfKDMdJFbkcaYmc36R8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ojrd87LtWiV1olGCEl1HpjDpaMcE+4U9s3a4JTnX7O3rzUmXAQtzg6V78eZGHw8K4 ATKSHAGwGPaX+LMXer89dfxP5se4+Lbhljcg2I+N2JlZ5Pz65dTXjvb0Q1E8u7ULaj S5LDRMR/HKATInNoa+sNgOJBxkVtLsL5K88jpLfQ= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, "Maciej W. Rozycki" , Thomas Bogendoerfer Subject: [PATCH 5.4 128/141] MIPS: Avoid DIVU in `__div64_32 is result would be zero Date: Mon, 17 May 2021 16:03:00 +0200 Message-Id: <20210517140247.127831336@linuxfoundation.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210517140242.729269392@linuxfoundation.org> References: <20210517140242.729269392@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Maciej W. Rozycki commit c1d337d45ec0a802299688e17d568c4e3a585895 upstream. We already check the high part of the divident against zero to avoid the costly DIVU instruction in that case, needed to reduce the high part of the divident, so we may well check against the divisor instead and set the high part of the quotient to zero right away. We need to treat the high part the divident in that case though as the remainder that would be calculated by the DIVU instruction we avoided. This has passed correctness verification with test_div64 and reduced the module's average execution time down to 1.0445s and 0.2619s from 1.0668s and 0.2629s respectively for an R3400 CPU @40MHz and a 5Kc CPU @160MHz. Signed-off-by: Maciej W. Rozycki Signed-off-by: Thomas Bogendoerfer Signed-off-by: Greg Kroah-Hartman --- arch/mips/include/asm/div64.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) --- a/arch/mips/include/asm/div64.h +++ b/arch/mips/include/asm/div64.h @@ -68,9 +68,11 @@ \ __high = __div >> 32; \ __low = __div; \ - __upper = __high; \ \ - if (__high) { \ + if (__high < __radix) { \ + __upper = __high; \ + __high = 0; \ + } else { \ __asm__("divu $0, %z1, %z2" \ : "=x" (__modquot) \ : "Jr" (__high), "Jr" (__radix)); \