From: David Miller <davem@davemloft.net>
To: torvalds@linux-foundation.org
Cc: linux-arch@vger.kernel.org
Subject: Re: Mostly portable strnlen_user()
Date: Fri, 25 May 2012 22:43:18 -0400 (EDT) [thread overview]
Message-ID: <20120525.224318.1418525735588086513.davem@davemloft.net> (raw)
In-Reply-To: <CA+55aFxYO-fb9K-_g8X85tK8-sGxUHy1R8X3Hes3fb-+0bhXLw@mail.gmail.com>
From: Linus Torvalds <torvalds@linux-foundation.org>
Date: Fri, 25 May 2012 19:13:31 -0700
> One issue is just syntactic: the fact that you want to initialize
> those constants just results in nasty syntax. Is gcc really so bad on
> sparc that it doesn't do the obvious CSE etc on the constants? That
> surprises me, because it does it on x86-64..
It CSE's them into the loop, but like I said a few days
ago it doesn't CSE them into the find_zero() code block.
> Do you *really* need to CSE them by hand?
Yes, GCC refused to do it.
It CSEs it into the loop, but not the tail code.
> So how bad does the code look on sparc if you just get rid of the
> "low_bits" and "high_bits" and just replace them with the constants
> they are?
It looks like GCC reconstituting the constants for the zero byte
determination, which on 64-bit is nearly half of the instructions
of the exit path.
But you shouldn't really need to care about this, we can surely
abstract it behind something.
next prev parent reply other threads:[~2012-05-26 2:43 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-05-25 22:35 Mostly portable strnlen_user() Linus Torvalds
2012-05-25 23:06 ` David Miller
2012-05-25 23:11 ` Linus Torvalds
2012-05-25 23:14 ` David Miller
2012-05-25 23:37 ` Linus Torvalds
2012-05-25 23:41 ` David Miller
2012-05-26 0:41 ` David Miller
2012-05-26 1:09 ` Linus Torvalds
2012-05-26 1:21 ` David Miller
2012-05-26 2:13 ` Linus Torvalds
2012-05-26 2:43 ` David Miller [this message]
2012-05-26 3:56 ` Linus Torvalds
2012-05-26 4:15 ` David Miller
2012-05-26 4:19 ` Linus Torvalds
2012-05-26 4:34 ` David Miller
2012-05-26 4:44 ` David Miller
2012-05-26 5:06 ` Linus Torvalds
2012-05-26 5:59 ` David Miller
2012-05-26 8:32 ` Jonas Bonn
2012-05-26 18:39 ` Linus Torvalds
2012-05-26 23:46 ` David Miller
2012-05-27 8:28 ` Jonas Bonn
2012-05-28 3:07 ` Paul Mackerras
2012-05-28 3:47 ` Linus Torvalds
2012-05-28 3:53 ` Linus Torvalds
2012-05-26 4:16 ` Linus Torvalds
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=20120525.224318.1418525735588086513.davem@davemloft.net \
--to=davem@davemloft.net \
--cc=linux-arch@vger.kernel.org \
--cc=torvalds@linux-foundation.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 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).