Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp664030pxj; Tue, 18 May 2021 11:18:42 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwGFkiL6SQs4CdRwipQu4LPM5DmTWRz0x+T9lVrB/ASvsn0/JZxzSDJo+Zxnc5ItWHgm5E5 X-Received: by 2002:a50:fc82:: with SMTP id f2mr6282567edq.102.1621361922734; Tue, 18 May 2021 11:18:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1621361922; cv=none; d=google.com; s=arc-20160816; b=duKTMQjQJaAQ+1+mjtgXKKGs5wRpIHLMnc5vp8nOaXRYEFlHvoDSGki52XRuwdBTpo 6O5iLW0ZDrqj3y9ZqDPWIX4o2ZYCgVPu333pNfimO7ChJzrTjzAcGRwCwxV50VkGcruB vgjauvky3HFZw94HCvyC0XoQ2tBm94aBBICEeFmCLWAjlIePY6UWE0fknIc+vyTRs2BJ UwTJCAVoImqITzAtUBkRssnBV4OAVr+obNJIVKelhcgMzsf7ApCR4vPxY5KdW14X2EWx hucu5SE87GIQmOiyTuQcfS9YXrVyFlweSw0uCXD47HiUH7MxmHedCgPXQrpRGv3Z4aTc OhXg== 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=tD2zrq0W4lOxbXx6AgoLUHRYPXiV7GO8Jx3gpsktKIuya9bouIQXf1dhgbamoLhaMI zRCTkO0eFdbK53t1LED76Hrqk+mipxKzqUzp/KWt8j11BvM+e3QvTypC0mGhjzLjRsGc P+llgSasYHyr5E4w3xOXpNAwwXi2DgZAG8zf/8bp0H0bvuhUi8LsoWGngvFVsfY1LHuj pi7dPAopuTj7vG50a/tTCkfphQ2WPMOiVfdvseUHy3zjhelaHV4J4tVDJTA7sHv1OnYh aGcjJVKSVl0sjQNV5TxboR5u9Fe0iNKJJGHRnk/fjtH5q98zbNyz1vis6FysJZY+7vp6 Vybw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=0oIR2lhP; 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 e6si12961629edz.248.2021.05.18.11.18.19; Tue, 18 May 2021 11:18:42 -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=0oIR2lhP; 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 S1345962AbhEQQOh (ORCPT + 99 others); Mon, 17 May 2021 12:14:37 -0400 Received: from mail.kernel.org ([198.145.29.99]:45564 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1345133AbhEQPuS (ORCPT ); Mon, 17 May 2021 11:50:18 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id C83A561455; Mon, 17 May 2021 14:45:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1621262752; bh=7oYuLHNwzc9jy8+tx7Q4sSHTjfKDMdJFbkcaYmc36R8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=0oIR2lhPbVxYMdLdgjiFaWKBXYhC6wmegKdygswkn34WQvZm1SBZnUxe9bK3q59VX OK3Z0rfkQGuxLF5ob88iwxYUXaql770roOJeT5q0zZLkty+zET42lopD8h/sphm23v 8aF1m3H+X4kQvahpqtXB8amMmmNQbd0huzrL1GQo= 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.10 267/289] MIPS: Avoid DIVU in `__div64_32 is result would be zero Date: Mon, 17 May 2021 16:03:12 +0200 Message-Id: <20210517140314.135778821@linuxfoundation.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210517140305.140529752@linuxfoundation.org> References: <20210517140305.140529752@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)); \