Patchwork [2/4] powerpc: enable ARCH_USE_BUILTIN_BSWAP

login
register
mail settings
Submitter David Woodhouse
Date Dec. 4, 2012, 10:15 a.m.
Message ID <1354616130-21587-3-git-send-email-dwmw2@infradead.org>
Download mbox | patch
Permalink /patch/203593/
State Superseded
Headers show

Comments

David Woodhouse - Dec. 4, 2012, 10:15 a.m.
From: David Woodhouse <David.Woodhouse@intel.com>

By using the compiler intrinsics instead of hand-crafted opaque inline
assembler for byte-swapping, we let the compiler see what's actually
happening and it gets to use lwbrx/stwbrx instructions instead of a
normal load/store coupled with a sequence of rlwimi instructions to
move bits around.

Compiled-tested only. It gave a code size reduction of almost 4% for
ext2, and more like 2.5% for ext3/ext4.

Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
---
 arch/powerpc/Kconfig | 3 +++
 1 file changed, 3 insertions(+)
Stephen Rothwell - Dec. 4, 2012, 11:02 a.m.
Hi David,

On Tue,  4 Dec 2012 10:15:28 +0000 David Woodhouse <dwmw2@infradead.org> wrote:
>
> diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
> index a902a5c..b4ea516 100644
> --- a/arch/powerpc/Kconfig
> +++ b/arch/powerpc/Kconfig
> @@ -78,6 +78,9 @@ config ARCH_HAS_ILOG2_U64
>  	bool
>  	default y if 64BIT
>  
> +config ARCH_USE_BUILTIN_BSWAP
> +       def_bool y
> +

This should be defined as bool in arch/Kconfig (probably in the previous
patch) and then selected from appropriate architectures.
David Woodhouse - Dec. 4, 2012, 2:32 p.m.
On Tue, 2012-12-04 at 22:02 +1100, Stephen Rothwell wrote:
> > +config ARCH_USE_BUILTIN_BSWAP
> > +       def_bool y
> > +
> 
> This should be defined as bool in arch/Kconfig (probably in the previous
> patch) and then selected from appropriate architectures.

Thanks. Updated series at

 git://git.infradead.org/users/dwmw2/byteswap.git
 http://git.infradead.org/users/dwmw2/byteswap.git

I'll post them again in a day or so, incorporating any other feedback I
get.

Patch

diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
index a902a5c..b4ea516 100644
--- a/arch/powerpc/Kconfig
+++ b/arch/powerpc/Kconfig
@@ -78,6 +78,9 @@  config ARCH_HAS_ILOG2_U64
 	bool
 	default y if 64BIT
 
+config ARCH_USE_BUILTIN_BSWAP
+       def_bool y
+
 config GENERIC_HWEIGHT
 	bool
 	default y