This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
Hi Guys, Here is the next MN10300 patch. This one adds support for the Long Instruction Word instructions and the SETLB and Lcc instructions. The new instructions are not enabled by default. I am not exactly sure why this is, but I do remember that it was at the request of Mitsubishi when the work was being done. So I have also created a new set of multilibs with the instructions enabled. Tested without regressions, both with and without the new instructions enabled, using an mn10300-elf toolchain. OK to apply ? Cheers Nick gcc/ChangeLog 2010-11-05 Nick Clifton <nickc@redhat.com> * config/mn10300/mn10300.c (liw_op_names): New array. (mn10300_print_operand): Handle 'W' operand. (mn10300_encode_section_info): Call default_encode_section_info after mn10300 specific processing. (extract_bundle): New function: Extracts the components of a LIW instruction. (liw_op_uses_only_regs): New function. (check_liw_constraints): New function. (liw_candidate): New function. Determines in the given insn is a suitable candidate for conversion into an LIW instruction. (mn10300_bundle_liw): New function. Converts pairs of insns into single LIW instructions. (mn10300_bundle_lcc): New function. Combines a MOV and an LCC instruction into a single LIW instruction. (mn10300_insert_setlb_lcc): New function. Replaces a JUMP with an LCC instruction. (mn10300_scan_for_setlb_lcc): New function. Look for small loops that can use the SETLB/LCC instruction pair. (scan_for_redundant_compares): New function. Eliminates unnecessary compare instructions. (mn10300_reorg): New function. Run MN10300 specific optimizations. (TARGET_MACHINE_DEPENDENT_REORG): Define. * config/mn10300/mn10300.opt (mliw): New command line option. Enables the generation of LIW instructions. (msetlb): New command line option. Enables the generation of SETLB LCC instructions. * config/mn10300/t-mn10300 (MULTILIB_OPTIONS): Add mliw|msetlb. (MULTILIB_DIRNAMES): Add liw. * config/mn10300/mn10300.h (TARGET_CPP_CPU_BUILTINS): Add __LIW__ and __SETLB__. * config/mn10300/constraints.md (O): New constraint. * config/mn10300/mn10300.md (UNSPEC_LIW_1, UNSPEC_LIW_2, UNSPEC_LCC, UNSPEC_SETLB): New constants. (liw_bundling): New automaton. (liw): New attribute. (liw_op): New attribute. (movsi_internal): Add liw and liw_op attributes. (am33_addsi3, am33_subsi3, am33_andsi3, am33_iorsi3, am33_xorsi3, cmpsi, am33_ashlsi3, am33_lshrsi3, am33_ashrsi3): Likewise. (udivmodsi4): Remove unnecessary expander. (am33_subsi3): Separate alternatives involving immediates. (am33_andis3, am33_iorsi3, am33_xorsi3, am33_ashlsi3, am33_lshrsi3, am33_ashrsi3): Likewise. (cbranchsi4_post_reload): Remove anonymity. (cbranchsf4_post_reload): Likewise. (loop_integer_conditional_branch): New pattern. (loop_floating_conditional_branch): New pattern. (setlb): New pattern. (lcc): New pattern. (liw_1): New pattern. (liw_lcc): New pattern. (* doc/invoke.texi: Document new command line options -mliw and -msetlb.
Attachment:
am33.liw.patch.bz2
Description: BZip2 compressed data
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |