[PATCH] powerpc: provide __bswapdi2

Joakim Tjernlund joakim.tjernlund at transmode.se
Mon May 13 21:12:58 EST 2013


"Linuxppc-dev" 
<linuxppc-dev-bounces+joakim.tjernlund=transmode.se at lists.ozlabs.org> 
wrote on 2013/05/13 12:51:59:
> 
> "Linuxppc-dev" 
> <linuxppc-dev-bounces+joakim.tjernlund=transmode.se at lists.ozlabs.org> 
> wrote 2013/05/13 12:38:13:
> > 
> > On Mon, 2013-05-13 at 11:33 +0100, David Woodhouse wrote:
> > > 
> > > On Mon, 2013-05-13 at 09:33 +0200, Gabriel Paubert wrote:
> > > > Actually, I'd swap the two mr instructions to never
> > > > have an instruction that uses the result from the
> > > > previous one. 
> > > 
> > > Bad GCC. No biscuit.
> > > 
> > > Should we file a PR? 
> > 
> > Maybe not. If you tell it to tune for an in-order machine like Cell, 
it
> > swaps them round. Although now I'm confused about which of POWER[567]
> > were in-order:
> > 
> > [dwmw2 at i7 ~]$ powerpc64-linux-gnu-gcc -O2 -S -o- bswapdi2.c -m32  | 
grep 
> -B1 mr
> >    rlwimi 11,3,24,16,23
> >    mr 4,11
> >    mr 3,10
> > [dwmw2 at i7 ~]$ powerpc64-linux-gnu-gcc -O2 -S -o- bswapdi2.c -m32 
> -mtune=cell | grep -B1 mr
> >    rlwimi 11,3,24,16,23
> >    mr 3,10
> >    mr 4,11
> > [dwmw2 at i7 ~]$ powerpc64-linux-gnu-gcc -O2 -S -o- bswapdi2.c -m32 
> -mtune=power5 | grep -B1 mr
> >    rlwimi 11,3,24,16,23
> >    mr 3,10
> >    mr 4,11
> > [dwmw2 at i7 ~]$ powerpc64-linux-gnu-gcc -O2 -S -o- bswapdi2.c -m32 
> -mtune=power6 | grep -B1 mr
> >    rlwimi 11,3,24,16,23
> >    mr 4,11
> >    mr 3,10
> > [dwmw2 at i7 ~]$ powerpc64-linux-gnu-gcc -O2 -S -o- bswapdi2.c -m32 
> -mtune=power7 | grep -B1 mr
> >    rlwimi 11,3,24,16,23
> >    mr 4,11
> >    mr 3,10
> 
> A bit rusty on the ppc asm but can you not remove the mr completely:
>                  rlwimi 10,4,24,16,23
>                  rlwimi 11,3,24,16,23
>                  mr 4,11
>                  mr 3,10
> to
>                  rlwimi 4,4,24,16,23
>                  rlwimi 3,3,24,16,23

Oops, that got twisted. Forget my comment.


More information about the Linuxppc-dev mailing list