[Bug target/49313] Inefficient libgcc implementations for avr

gjl at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Fri Jul 29 09:34:00 GMT 2011


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

--- Comment #9 from Georg-Johann Lay <gjl at gcc dot gnu.org> 2011-07-29 09:33:58 UTC ---
Author: gjl
Date: Fri Jul 29 09:33:54 2011
New Revision: 176920

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=176920
Log:

    PR target/49313
    * config/avr/libgcc.S (__ffshi2): Don't skip 2-word instruction.
    (__ctzsi2): Result for 0 may be undefined.
    (__ctzhi2): Result for 0 may be undefined.
    (__popcounthi2): Don't clobber r30. Use __popcounthi2_tail.
    (__popcountsi2): Ditto. And don't clobber r26.
    (__popcountdi2): Ditto. And don't clobber r27.
    * config/avr/avr.md (UNSPEC_COPYSIGN): New c_enum.
    (parityhi2): New expand.
    (paritysi2): New expand.
    (popcounthi2): New expand.
    (popcountsi2): New expand.
    (clzhi2): New expand.
    (clzsi2): New expand.
    (ctzhi2): New expand.
    (ctzsi2): New expand.
    (ffshi2): New expand.
    (ffssi2): New expand.
    (copysignsf3): New insn.
    (bswapsi2): New expand.
    (*parityhi2.libgcc): New insn.
    (*parityqihi2.libgcc): New insn.
    (*paritysihi2.libgcc): New insn.
    (*popcounthi2.libgcc): New insn.
    (*popcountsi2.libgcc): New insn.
    (*popcountqi2.libgcc): New insn.
    (*popcountqihi2.libgcc): New insn-and-split.
    (*clzhi2.libgcc): New insn.
    (*clzsihi2.libgcc): New insn.
    (*ctzhi2.libgcc): New insn.
    (*ctzsihi2.libgcc): New insn.
    (*ffshi2.libgcc): New insn.
    (*ffssihi2.libgcc): New insn.
    (*bswapsi2.libgcc): New insn.


Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/config/avr/avr.md
    trunk/gcc/config/avr/libgcc.S



More information about the Gcc-bugs mailing list