Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 22b9a0a3 authored by Stephen Hemminger's avatar Stephen Hemminger Committed by David S. Miller
Browse files

[LIB]: div64_64 optimization



Minor optimization of div64_64.  do_div() already does optimization
for the case of 32 by 32 divide, so no need to do it here.

Signed-off-by: default avatarStephen Hemminger <shemminger@linux-foundation.org>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent c454673d
Loading
Loading
Loading
Loading
+7 −9
Original line number Diff line number Diff line
@@ -61,20 +61,18 @@ EXPORT_SYMBOL(__div64_32);
/* 64bit divisor, dividend and result. dynamic precision */
uint64_t div64_64(uint64_t dividend, uint64_t divisor)
{
	uint32_t d = divisor;
	uint32_t high, d;

	if (divisor > 0xffffffffULL) {
		unsigned int shift = fls(divisor >> 32);
	high = divisor >> 32;
	if (high) {
		unsigned int shift = fls(high);

		d = divisor >> shift;
		dividend >>= shift;
	}
	} else
		d = divisor;

	/* avoid 64 bit division if possible */
	if (dividend >> 32)
	do_div(dividend, d);
	else
		dividend = (uint32_t) dividend / d;

	return dividend;
}