This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: GCC47 movmem breaks RA, GCC46 RA is fine


On 27/04/12 09:21, Richard Guenther wrote:

This differs from what GCC47 does and seems to work better. I would like help on how to best handle this situation under GCC47.

Not provide movmem which looks like open-coded and not in any way "optimized"?


Thanks Richard, however I don't understand your comment. GCC46 outputs for this problem: $t25: enterl #H'0002 st AL,@H'fff9 st AH,@H'fff8 ld X,@$XAP_AH ld X,@(0,X) ld AL,#H'0010 ld AH,@H'fff9 bc2 ld AL,@H'fff8 leavel #H'0002

and GCC47, once movmemqi and setmemqi are disabled:
$t25:
        enterl  #H'0005
        st      AH,@(H'0001,Y)
        ld      X,@$XAP_AH
        ld      X,@(0,X)
        ld      AH,#H'0010
        st      AH,@(0,Y)
        ld      AH,@$XAP_UXL
        bsr     $memcpy
        ld      AL,@(H'0001,Y)
        leavel  #H'0005


It feels to me that GCC46 version is better: * no branch to subroutine memcpy; * less stack usage (argument to enterl);

So, using our block copy (bc2) instruction is an optimisation, don't you think?

--
PMatos


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]