gcc/libgcc/config/avr
Georg-Johann Lay 0237179843 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
2013-07-19 11:10:08 +00:00
..
avr-lib.h avr-lib.h: Add GPL copyright notice. 2013-01-14 14:01:32 +00:00
lib1funcs-fixed.S re PR target/57516 ([avr] Incorrect fixed-point rounding result in the overflow case) 2013-07-19 11:10:08 +00:00
lib1funcs.S * config/avr/lib1funcs.S (__ashrdi3, __lshrdi3, __ashldi3) 2013-03-04 14:01:24 +00:00
lib2-object.mk re PR target/54222 ([avr] Implement fixed-point support) 2013-02-08 10:13:37 +00:00
lib2funcs.c re PR target/54222 ([avr] Implement fixed-point support) 2013-02-08 10:13:37 +00:00
t-avr re PR target/54222 ([avr] Implement fixed-point support) 2013-02-12 14:55:16 +00:00
t-avrlibc
t-rtems