------- Additional Comments From segher at kernel dot crashing dot org  
2005-04-07 23:34 -------
Subject: Re:  New: 64 bit shift by non-constant implemented as libcall on PPC32

> (O5 will give slightly better code for both, but let's start somewhere 
> :P)

Well the code for the left shift can be replaced with

        subfic  r6,r5,32
        addi    r7,r5,-32
        slw     r3,r3,r5
        srw     r6,r4,r6
        slw     r7,r4,r7
        slw     r4,r4,r5
        or      r5,r6,r7
        or      r3,r3,r5

and similar for the right shift (and also for signed shift counts),
as shift counts < 0 and >= 64 are undefined here in C.  If you want
to verify this, do take care with count == 32, as it's "special";
but you can also just look in Book I appendix C.1 and trust that.



-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20781

Reply via email to