38c37a0ef0
* mn10300/mn10300.c (const_costs): Remove unused function. * mn10300/mn10300.h (CONST_COSTS): Rework to generate better code. * mn10300/mn10300.c (print_operand): Handle 'H' and 'L' output modifers for high/low part of a 64bit value. * mn10300/mn10300.h (CONST_DOUBLE_OK_FOR_LETTER_P): Handle 'G' (LEGITIMATE_CONSTANT_P): Allow any constant. * mn10300/mn10300.md (movdi, movdf): Implement. (adddi3, subdi3): New expanders and patterns. * mn10300/mn10300.c (print_operand): Handle 'A' modifier for an address which can't be simple register indirect. * mn10300/mn10300.h (EXTRA_CONSTRAINT): Handle 'R' for bit ops. * mn10300/mn10300.md: Add several patterns to test, set and clear bitfields. * mn10300/mn10300.c (can_use_return_insn): New function. (expand_epilogue): Emit a RETURN insn if possible. * mn10300/mn10300.md (return): New pattern. * mn10300/mn10300.h (CONST_OK_FOR_LETTER_P): Handle 'N'. * mn10300/mn10300.md (andsi3): Catch "and 255,dn" and "and 65535,dn" which were not turned into zero_extend patterns. * mn10300/mn10300.h (GO_IF_LEGITIMATE_ADDRESS): Handle symbolic constant as an index/base too. * mn10300/mn10300.md (movsi): Allow SP to be loaded/saved with reg+d8 addresses. * mn10300/mn10300.md (cmpsi): Allow second operand to be a constant. (subsi3): Likewise. * mn10300/mn10300.md (sign extension patterns): Fix thinko when extending from memory. * mn10300/mn10300.md (tst peepholes): Add peepholes for test/branch based on N bit being set/clear and the data value being tested dies. From-SVN: r13701 |
||
---|---|---|
gcc |