From: david.woodhouse@intel.com (Woodhouse, David)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v7] arm: use built-in byte swap function
Date: Sun, 26 May 2013 09:30:00 +0000 [thread overview]
Message-ID: <1369560593.27719.67.camel@shinybook.infradead.org> (raw)
In-Reply-To: <51A19FDD.9040403@gmail.com>
On Sun, 2013-05-26 at 07:38 +0200, Dirk Behme wrote:
> Am 23.05.2013 18:46, schrieb Kim Phillips:
> > Enable the compiler intrinsic for byte swapping on arch ARM. This
> > allows the compiler to detect and be able to optimize out byte
> > swappings, and has a very modest benefit on vmlinux size (Linaro gcc
> > 4.8):
>
> I'm no GCC tool chain expert, so I just have an understanding
> question: Could anyone kindly give a brief explanation (*) of what the
> advantage of this is on ARM?
>
> http://comments.gmane.org/gmane.linux.kernel.cross-arch/16016
>
> mentions "lwbrx/stwbrx on PowerPC, movbe on Atom". But for ARM?
>
> I haven't understood yet why the __arch_swabXX() in
> arch/arm/include/asm/swab.h [1] aren't sufficient? How can this be
> done better? E.g. does anybody have a disassembly without/with this
> change to illustrate that?
The point is just that the compiler gets to *see* what's happening.
See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55177 for a bunch of
examples of things that GCC ought to be able to optimise, even without
the CPU having load-and-swap instructions. Not that it always does;
hence the PR. But there are some that it does currently manage,
evidently.
You'll see this if you follow the link above, but as an example: imagine
a code sequence that goes load, swap, mask, swap, store.
With the swaps done by opaque inline asm, there's nothing the compiler
can do to optimise this. But if it *knows* what's going on, it can
optimise it into a single load, mask of a pre-byte-swapped constant, and
store.
Having said that, I can't actually answer your question ? I don't know
which optimisations the compiler *is* doing to provide the "modest
benefit" that Kim mentions; every class of optimisation I explicitly
checked for was missing. Again, hence the PR. But evidently it does
manage to get *something* right.
--
Sent with Evolution's ActiveSync support.
David Woodhouse Open Source Technology Centre
David.Woodhouse at intel.com Intel Corporation
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/x-pkcs7-signature
Size: 4370 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20130526/9c798d60/attachment-0001.bin>
next prev parent reply other threads:[~2013-05-26 9:30 UTC|newest]
Thread overview: 64+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-01-29 1:30 [RFC] arm: use built-in byte swap function Kim Phillips
2013-01-29 8:35 ` Borislav Petkov
2013-01-29 16:46 ` Woodhouse, David
2013-01-29 17:42 ` Borislav Petkov
2013-01-29 17:55 ` Woodhouse, David
2013-01-29 18:10 ` Borislav Petkov
2013-01-30 10:22 ` Woodhouse, David
2013-01-31 2:09 ` Kim Phillips
2013-01-31 6:44 ` Borislav Petkov
2013-01-31 9:28 ` Russell King - ARM Linux
2013-01-31 20:59 ` Kim Phillips
2013-01-31 21:33 ` Borislav Petkov
2013-01-31 22:11 ` Woodhouse, David
2013-02-01 0:37 ` [PATCH v4] " Kim Phillips
2013-02-01 10:46 ` Russell King - ARM Linux
2013-02-01 1:17 ` [RFC] " Russell King - ARM Linux
2013-02-01 7:33 ` Woodhouse, David
2013-02-06 3:04 ` Kim Phillips
2013-02-06 9:02 ` Woodhouse, David
2013-02-07 1:19 ` Kim Phillips
2013-02-07 10:19 ` Will Newton
2013-02-07 10:43 ` Catalin Marinas
2013-02-07 18:13 ` Russell King - ARM Linux
2013-02-08 17:25 ` Woodhouse, David
2013-02-08 20:04 ` Nicolas Pitre
2013-02-08 22:40 ` Woodhouse, David
2013-02-08 22:47 ` Nicolas Pitre
2013-02-09 1:12 ` Kim Phillips
2013-02-09 3:16 ` Nicolas Pitre
2013-02-20 2:31 ` Kim Phillips
2013-02-20 2:38 ` Stephen Boyd
2013-02-20 3:17 ` Nicolas Pitre
2013-02-20 10:38 ` Woodhouse, David
2013-02-20 13:36 ` Nicolas Pitre
2013-02-20 13:44 ` Woodhouse, David
2013-02-20 14:06 ` Nicolas Pitre
2013-02-20 14:53 ` Woodhouse, David
2013-02-20 15:43 ` Nicolas Pitre
2013-02-21 3:49 ` Kim Phillips
2013-02-21 4:29 ` Nicolas Pitre
2013-02-21 6:52 ` Kim Phillips
2013-02-21 16:40 ` Nicolas Pitre
2013-02-22 2:33 ` Kim Phillips
2013-02-22 3:40 ` Nicolas Pitre
2013-02-23 1:40 ` [PATCH v6] " Kim Phillips
2013-02-23 2:40 ` Nicolas Pitre
2013-02-23 23:20 ` Woodhouse, David
2013-05-23 16:46 ` [PATCH v7] " Kim Phillips
2013-05-23 20:09 ` Nicolas Pitre
2013-05-23 23:13 ` Russell King - ARM Linux
2013-06-06 22:12 ` Russell King - ARM Linux
2013-06-06 22:23 ` Borislav Petkov
2013-06-07 0:03 ` Stephen Rothwell
2013-05-26 5:38 ` Dirk Behme
2013-05-26 9:30 ` Woodhouse, David [this message]
2013-10-27 2:41 ` Nicolas Pitre
2013-11-05 21:45 ` Kim Phillips
2013-02-21 16:37 ` [RFC] " Woodhouse, David
2013-02-21 17:27 ` Nicolas Pitre
2013-03-13 13:35 ` Woodhouse, David
2013-01-29 14:13 ` Russell King - ARM Linux
2013-01-29 14:43 ` Woodhouse, David
2013-01-29 14:53 ` Rob Herring
2013-01-29 15:10 ` Woodhouse, David
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=1369560593.27719.67.camel@shinybook.infradead.org \
--to=david.woodhouse@intel.com \
--cc=linux-arm-kernel@lists.infradead.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).