]> git.ipfire.org Git - thirdparty/gcc.git/commit - libgcc/ChangeLog
re PR target/57516 ([avr] Incorrect fixed-point rounding result in the overflow case)
authorGeorg-Johann Lay <avr@gjlay.de>
Fri, 19 Jul 2013 11:10:08 +0000 (11:10 +0000)
committerGeorg-Johann Lay <gjl@gcc.gnu.org>
Fri, 19 Jul 2013 11:10:08 +0000 (11:10 +0000)
commit0237179843a59b84cc1ae9a14bdf66a308ebd289
treeaec31c0be57cb1d48958052153b5c54d7e94476e
parent1545921d63fe20ebe99a3280728ec33c99f8af78
re PR target/57516 ([avr] Incorrect fixed-point rounding result in the overflow case)

gcc/
PR target/57516
* config/avr/avr-fixed.md (round<mode>3_const): Turn expander to insn.
* config/avr/avr.md (adjust_len): Add `round'.
* config/avr/avr-protos.h (avr_out_round): New prototype.
(avr_out_plus): Add `out_label' argument.
* config/avr/avr.c (avr_out_plus_1): Add `out_label' argument.
(avr_out_plus): Pass down `out_label' to avr_out_plus_1.
Handle the case where `insn' is just a pattern.
(avr_out_bitop): Handle the case where `insn' is just a pattern.
(avr_out_round): New function.
(avr_adjust_insn_length): Handle ADJUST_LEN_ROUND.

libgcc/
PR target/57516
* config/avr/lib1funcs-fixed.S (__roundqq3, __rounduqq3)
(__round_s2_const, __round_u2_const)
(__round_s4_const, __round_u4_const, __round_x8):
Saturate result if addition result cannot be represented.

gcc/testsuite/
PR target/57516
* gcc.target/avr/torture/builtins-4-roundfx.c (test2hr, test2k):
Adjust to corrected rounding.

From-SVN: r201051
gcc/ChangeLog
gcc/config/avr/avr-fixed.md
gcc/config/avr/avr-protos.h
gcc/config/avr/avr.c
gcc/config/avr/avr.md
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/avr/torture/builtins-4-roundfx.c
libgcc/ChangeLog
libgcc/config/avr/lib1funcs-fixed.S