linux-next.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
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.

  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).