Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp192914pxj; Tue, 18 May 2021 00:51:01 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxwQBGPpxca7wymykMVm04QmZcPBXcjCZnlM8AResD4AiW86esJUahKY8fbrGW0QOckmSE8 X-Received: by 2002:a17:907:76d9:: with SMTP id kf25mr4815580ejc.340.1621324261013; Tue, 18 May 2021 00:51:01 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1621324261; cv=none; d=google.com; s=arc-20160816; b=qr74AICy92j8yQPY8ip1AwphFnz1UhD39L4PbcWtW4G7VxIxjDbwEnN6cJWeF6WZa8 S55zWLcupADRblN3agxYy5YkhU9r09EwMsEAXE1aMkBI26q8kZGf71gWpAVk9Lef7PFF qWPL5Lha8U2V0zAJYdlE+d+r853gOG0f1yje9QCoETewz8nrUaxM1swgXMKwY48TmCjJ qb0RMZMec0uKSPUJibDK+Q9O890orWLU3uDhhAw3wrP12rLK4PLOJteWpKLG0r7CLrc9 zUUpf0/4kqRm7srH9wnAlajQ6QJwLpos+Sj1/wOGajlDectV5S9jwQz1vE32RoQeSpsb dSrQ== 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=F2+J3FbV24iJFWNAxgxF/Sm6DkIctX3GGh6PCjqE4oFaSdx3cF8bRMBs4sk+0fZVcQ dRBTgUnkdmBgCmAU6tAdae2QBEzUTTP16ab5fTqLnP+g4g/92HedQVVLUx+g4BzdmZwS oYYc6v3DhU9HP9mxJ75Z8abC5YGBvNwpH6xiHDW4VvEGKSfbltbt90YBo2NjZyGNfsRl lTzLrYmS3mRKVekhJax+v70ZlQIET80KwuxRiZ79Chmcg51fD62XOdzO9m1+UDA+wfPT D4mxGsnmraq/Bt6DQ3YXm+/uHWXTaXHOgp4b+s5hdNVgqcYr2v8ythRciq5oZrBxOA3O VSDg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=oBarlork; 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 n14si5199723ejr.399.2021.05.18.00.50.38; Tue, 18 May 2021 00:51:00 -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=oBarlork; 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 S240823AbhEQO6V (ORCPT + 99 others); Mon, 17 May 2021 10:58:21 -0400 Received: from mail.kernel.org ([198.145.29.99]:40386 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S241654AbhEQOs5 (ORCPT ); Mon, 17 May 2021 10:48:57 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 9AD826197B; Mon, 17 May 2021 14:22:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1621261356; bh=7oYuLHNwzc9jy8+tx7Q4sSHTjfKDMdJFbkcaYmc36R8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=oBarlork61kYtLCbCwNWb3Wxldwqs1XAhIZtTyyBMSQj0p+Hf5KfGiXkMO/i3ZgzB jBtUk5u7GtuAWgLG0ETvO2yIte3l+14oIvm6IUiBCrLPB1KXopwbHD4aHFkmkqiJE0 FLuvzg3C9N+qc/eZedSF7rzq+UyUFow/ZmRd4lXg= 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.12 337/363] MIPS: Avoid DIVU in `__div64_32 is result would be zero Date: Mon, 17 May 2021 16:03:23 +0200 Message-Id: <20210517140314.004843053@linuxfoundation.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210517140302.508966430@linuxfoundation.org> References: <20210517140302.508966430@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)); \