re PR target/49313 (Inefficient libgcc implementations for avr)
authorGeorg-Johann Lay <avr@gjlay.de>
Fri, 29 Jul 2011 09:33:54 +0000 (09:33 +0000)
committerGeorg-Johann Lay <gjl@gcc.gnu.org>
Fri, 29 Jul 2011 09:33:54 +0000 (09:33 +0000)
commit6130646b8811ec5af4d58bd08fee7ebd8ffbc973
tree6f22c438fb8d622f073b27db738c553a713ab2b9
parentf2b4b91a9e3b311038effb3b200ded7e6cdba777
re PR target/49313 (Inefficient libgcc implementations for avr)

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.

From-SVN: r176920
gcc/ChangeLog
gcc/config/avr/avr.md
gcc/config/avr/libgcc.S