From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
To: Stephen Boyd <sboyd@codeaurora.org>
Cc: linux-kernel@vger.kernel.org, heikki.krogerus@linux.intel.com,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Heiko Stuebner <heiko@sntech.de>,
linux-clk@vger.kernel.org
Subject: Re: [PATCH v4 3/6] clk: fractional-divider: keep mwidth and nwidth internally
Date: Wed, 22 Jul 2015 16:09:26 +0300 [thread overview]
Message-ID: <1437570566.8014.37.camel@linux.intel.com> (raw)
In-Reply-To: <20150722004124.GE15042@codeaurora.org>
On Tue, 2015-07-21 at 17:41 -0700, Stephen Boyd wrote:
> On 07/14, Andy Shevchenko wrote:
> > diff --git a/drivers/clk/clk-fractional-divider.c b/drivers/clk/clk
> > -fractional-divider.c
> > index 7cfcc56..16f42ae 100644
> > --- a/drivers/clk/clk-fractional-divider.c
> > +++ b/drivers/clk/clk-fractional-divider.c
> > @@ -128,9 +128,11 @@ struct clk
> > *clk_register_fractional_divider(struct device *dev,
> >
> > fd->reg = reg;
> > fd->mshift = mshift;
> > - fd->mmask = (BIT(mwidth) - 1) << mshift;
> > + fd->mwidth = mwidth;
> > + fd->mmask = GENMASK(mwidth - 1, 0) << mshift;
> > fd->nshift = nshift;
> > - fd->nmask = (BIT(nwidth) - 1) << nshift;
> > + fd->nwidth = nwidth;
> > + fd->nmask = GENMASK(nwidth - 1, 0) << nshift;
>
> Please do the shifts in the GENMASK.
It's not optimal. Waste of performance.
32-bit case on 32-bit machine (similar to other cases on x86).
a) GENMASK(x - 1, 0) << y
movl $32, %ecx
subb 4(%esp), %cl
movl $-1, %eax
shrl %cl, %eax
movzbl 8(%esp), %ecx
sall %cl, %eax
ret
b) GENMASK(x + y - 1, y)
pushl %esi
pushl %ebx
movl $1, %edx
movzbl 12(%esp), %eax
movzbl 16(%esp), %esi
movl $-1, %ebx
subl %eax, %edx
movl %ebx, %eax
subl %esi, %edx
leal 31(%edx), %ecx
shrl %cl, %eax
movl %esi, %ecx
sall %cl, %ebx
andl %ebx, %eax
popl %ebx
popl %esi
ret
--
Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Intel Finland Oy
next prev parent reply other threads:[~2015-07-22 13:09 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-07-14 15:11 [PATCH v4 0/6] clk: fractional-divider: do a clean up Andy Shevchenko
2015-07-14 15:11 ` [PATCH v4 1/6] clk: fractional-divider: fix sparse warnings Andy Shevchenko
2015-07-22 0:40 ` Stephen Boyd
2015-07-14 15:11 ` [PATCH v4 2/6] clk: fractional-divider: rename prate -> parent_rate Andy Shevchenko
2015-07-14 15:12 ` [PATCH v4 3/6] clk: fractional-divider: keep mwidth and nwidth internally Andy Shevchenko
2015-07-22 0:41 ` Stephen Boyd
2015-07-22 13:09 ` Andy Shevchenko [this message]
2015-07-22 23:45 ` Stephen Boyd
2015-07-23 7:27 ` Andy Shevchenko
2015-07-14 15:12 ` [PATCH v4 4/6] clk: rockchip: save width in struct clk_fractional_divider Andy Shevchenko
2015-07-14 16:16 ` Heiko Stübner
2015-07-14 15:12 ` [PATCH v4 5/6] clk: fractional-divider: switch to rational best approximation Andy Shevchenko
2015-07-14 15:12 ` [PATCH v4 6/6] serial: 8250_dw: allow lower reference frequencies Andy Shevchenko
2015-07-23 21:59 ` Greg Kroah-Hartman
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1437570566.8014.37.camel@linux.intel.com \
--to=andriy.shevchenko@linux.intel.com \
--cc=gregkh@linuxfoundation.org \
--cc=heikki.krogerus@linux.intel.com \
--cc=heiko@sntech.de \
--cc=linux-clk@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=sboyd@codeaurora.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.