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]

RFA: MN10300: Add LIW and SETLB support


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]