From: Roland Dreier <rdreier@cisco.com>
To: David Miller <davem@davemloft.net>
Cc: randy.dunlap@oracle.com, linux-next@vger.kernel.org,
general@lists.openfabrics.org, linux-kernel@vger.kernel.org
Subject: Re: [ofa-general] [PATCH 2.6.30] RDMA/cxgb3: Remove modulo math.
Date: Tue, 10 Feb 2009 17:18:49 -0800 [thread overview]
Message-ID: <adaeiy5ahza.fsf@cisco.com> (raw)
In-Reply-To: <20090210.170740.208470781.davem@davemloft.net> (David Miller's message of "Tue, 10 Feb 2009 17:07:40 -0800 (PST)")
> > Is this required? Strength reduction optimization should do this
> > automatically (and the code has been there for quite a while, so
> > obviously it isn't causing problems)
> GCC won't optimize that modulus the way you expect, try for yourself
> and look at the assembler if you don't believe me. :-)
Are you thinking of the case when there are signed integers involved and
so "% modulus" might produce a different result than "& (modulus - 1)"
(because the compiler can't know that things are never negative)?
Because in this case the compiler seems to do what I thought it would;
the relevant part of the i386 assembly for
wqe->recv.sgl[i].to = cpu_to_be64(((u32) wr->sg_list[i].addr) %
(1UL << (12 + page_size[i])));
is
movl %eax, 28(%edi,%ebx) # <variable>.length,
<variable>.len
movzbl 28(%esp,%esi), %ecx # page_size, tmp89
movl $1, %eax #, tmp92
addl $12, %ecx #, tmp90
sall %cl, %eax # tmp90, tmp92
movl (%esp), %ecx # wr,
decl %eax # tmp93
movl 12(%ecx), %edx # <variable>.sg_list, <variable>.sg_list
andl (%edx,%ebx), %eax # <variable>.addr, tmp93
ie the compiler computes the modulus, then does decl to compute
modulus-1 and then &s with it.
Or am I misunderstanding your point?
- R.
next prev parent reply other threads:[~2009-02-11 1:18 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-02-10 18:44 [ofa-general] [PATCH 2.6.30] RDMA/cxgb3: Remove modulo math Steve Wise
2009-02-10 19:04 ` [ofa-general] " Randy Dunlap
2009-02-10 19:10 ` Steve Wise
2009-02-10 19:12 ` Randy Dunlap
2009-02-11 0:38 ` [ofa-general] " Roland Dreier
2009-02-11 1:03 ` Steve Wise
[not found] ` <499223F8.1010204@opengridcomputing.com>
2009-02-11 1:07 ` David Miller
2009-02-11 1:18 ` Roland Dreier [this message]
2009-02-11 1:23 ` David Miller
2009-02-11 7:20 ` Roland Dreier
2009-02-11 8:00 ` David Miller
2009-02-11 15:44 ` Steve Wise
2009-02-11 18:12 ` Roland Dreier
2009-02-11 18:32 ` Steve Wise
2009-02-11 18:36 ` Roland Dreier
2009-02-11 18:44 ` Steve Wise
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=adaeiy5ahza.fsf@cisco.com \
--to=rdreier@cisco.com \
--cc=davem@davemloft.net \
--cc=general@lists.openfabrics.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-next@vger.kernel.org \
--cc=randy.dunlap@oracle.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).