All of lore.kernel.org
 help / color / mirror / Atom feed
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>

  reply	other threads:[~2013-05-26  9:30 UTC|newest]

Thread overview: 126+ 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  1:30 ` Kim Phillips
2013-01-29  8:35 ` Borislav Petkov
2013-01-29  8:35   ` Borislav Petkov
2013-01-29 16:46   ` Woodhouse, David
2013-01-29 16:46     ` Woodhouse, David
2013-01-29 17:42     ` Borislav Petkov
2013-01-29 17:42       ` Borislav Petkov
2013-01-29 17:55       ` Woodhouse, David
2013-01-29 17:55         ` Woodhouse, David
2013-01-29 18:10         ` Borislav Petkov
2013-01-29 18:10           ` Borislav Petkov
2013-01-30 10:22           ` Woodhouse, David
2013-01-30 10:22             ` Woodhouse, David
2013-01-31  2:09             ` Kim Phillips
2013-01-31  2:09               ` Kim Phillips
2013-01-31  6:44               ` Borislav Petkov
2013-01-31  6:44                 ` Borislav Petkov
2013-01-31  9:28               ` Russell King - ARM Linux
2013-01-31  9:28                 ` Russell King - ARM Linux
2013-01-31 20:59                 ` Kim Phillips
2013-01-31 20:59                   ` Kim Phillips
2013-01-31 21:33                   ` Borislav Petkov
2013-01-31 21:33                     ` Borislav Petkov
2013-01-31 22:11                   ` Woodhouse, David
2013-01-31 22:11                     ` Woodhouse, David
2013-02-01  0:37                     ` [PATCH v4] " Kim Phillips
2013-02-01  0:37                       ` Kim Phillips
2013-02-01 10:46                       ` Russell King - ARM Linux
2013-02-01 10:46                         ` Russell King - ARM Linux
2013-02-01  1:17                   ` [RFC] " Russell King - ARM Linux
2013-02-01  1:17                     ` Russell King - ARM Linux
2013-02-01  7:33                     ` Woodhouse, David
2013-02-01  7:33                       ` Woodhouse, David
2013-02-06  3:04                       ` Kim Phillips
2013-02-06  3:04                         ` Kim Phillips
2013-02-06  9:02                         ` Woodhouse, David
2013-02-06  9:02                           ` Woodhouse, David
2013-02-07  1:19                           ` Kim Phillips
2013-02-07  1:19                             ` Kim Phillips
2013-02-07 10:19                             ` Will Newton
2013-02-07 10:19                               ` Will Newton
2013-02-07 10:43                               ` Catalin Marinas
2013-02-07 10:43                                 ` Catalin Marinas
2013-02-07 18:13                             ` Russell King - ARM Linux
2013-02-07 18:13                               ` Russell King - ARM Linux
2013-02-08 17:25                               ` Woodhouse, David
2013-02-08 17:25                                 ` Woodhouse, David
2013-02-08 20:04                                 ` Nicolas Pitre
2013-02-08 20:04                                   ` Nicolas Pitre
2013-02-08 22:40                                   ` Woodhouse, David
2013-02-08 22:40                                     ` Woodhouse, David
2013-02-08 22:47                                     ` Nicolas Pitre
2013-02-08 22:47                                       ` Nicolas Pitre
2013-02-09  1:12                                       ` Kim Phillips
2013-02-09  1:12                                         ` Kim Phillips
2013-02-09  3:16                                         ` Nicolas Pitre
2013-02-09  3:16                                           ` Nicolas Pitre
2013-02-20  2:31                                           ` Kim Phillips
2013-02-20  2:31                                             ` Kim Phillips
2013-02-20  2:38                                             ` Stephen Boyd
2013-02-20  2:38                                               ` Stephen Boyd
2013-02-20  3:17                                             ` Nicolas Pitre
2013-02-20  3:17                                               ` Nicolas Pitre
2013-02-20 10:38                                               ` Woodhouse, David
2013-02-20 10:38                                                 ` Woodhouse, David
2013-02-20 13:36                                                 ` Nicolas Pitre
2013-02-20 13:36                                                   ` Nicolas Pitre
2013-02-20 13:44                                                   ` Woodhouse, David
2013-02-20 13:44                                                     ` Woodhouse, David
2013-02-20 14:06                                                     ` Nicolas Pitre
2013-02-20 14:06                                                       ` Nicolas Pitre
2013-02-20 14:53                                                       ` Woodhouse, David
2013-02-20 14:53                                                         ` Woodhouse, David
2013-02-20 15:43                                                         ` Nicolas Pitre
2013-02-20 15:43                                                           ` Nicolas Pitre
2013-02-21  3:49                                                           ` Kim Phillips
2013-02-21  3:49                                                             ` Kim Phillips
2013-02-21  4:29                                                             ` Nicolas Pitre
2013-02-21  4:29                                                               ` Nicolas Pitre
2013-02-21  6:52                                                               ` Kim Phillips
2013-02-21  6:52                                                                 ` Kim Phillips
2013-02-21 16:40                                                                 ` Nicolas Pitre
2013-02-21 16:40                                                                   ` Nicolas Pitre
2013-02-22  2:33                                                                   ` Kim Phillips
2013-02-22  2:33                                                                     ` Kim Phillips
2013-02-22  3:40                                                                     ` Nicolas Pitre
2013-02-22  3:40                                                                       ` Nicolas Pitre
2013-02-23  1:40                                                                       ` [PATCH v6] " Kim Phillips
2013-02-23  1:40                                                                         ` Kim Phillips
2013-02-23  2:40                                                                         ` Nicolas Pitre
2013-02-23  2:40                                                                           ` Nicolas Pitre
2013-02-23 23:20                                                                         ` Woodhouse, David
2013-02-23 23:20                                                                           ` Woodhouse, David
2013-05-23 16:46                                                                           ` [PATCH v7] " Kim Phillips
2013-05-23 16:46                                                                             ` Kim Phillips
2013-05-23 20:09                                                                             ` Nicolas Pitre
2013-05-23 20:09                                                                               ` Nicolas Pitre
2013-05-23 23:13                                                                             ` Russell King - ARM Linux
2013-05-23 23:13                                                                               ` Russell King - ARM Linux
2013-06-06 22:12                                                                               ` Russell King - ARM Linux
2013-06-06 22:12                                                                                 ` Russell King - ARM Linux
2013-06-06 22:23                                                                                 ` Borislav Petkov
2013-06-06 22:23                                                                                   ` Borislav Petkov
2013-06-07  0:03                                                                                 ` Stephen Rothwell
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-10-27  2:41                                                                               ` Nicolas Pitre
2013-11-05 21:45                                                                               ` Kim Phillips
2013-11-05 21:45                                                                                 ` Kim Phillips
2013-02-21 16:37                                                               ` [RFC] " Woodhouse, David
2013-02-21 16:37                                                                 ` Woodhouse, David
2013-02-21 17:27                                                                 ` Nicolas Pitre
2013-02-21 17:27                                                                   ` Nicolas Pitre
2013-03-13 13:35                                             ` Woodhouse, David
2013-03-13 13:35                                               ` Woodhouse, David
2013-01-29 14:13 ` Russell King - ARM Linux
2013-01-29 14:13   ` Russell King - ARM Linux
2013-01-29 14:43   ` Woodhouse, David
2013-01-29 14:43     ` Woodhouse, David
2013-01-29 14:53 ` Rob Herring
2013-01-29 14:53   ` Rob Herring
2013-01-29 15:10   ` Woodhouse, David
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 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.