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]

RE: [PING, V850] Add support for V850E2 and V850E2V3


Hi,

>> I think that you are missing a definition of "extra_modes" in the
>> config.gcc file.

The definition of "extra_modes" is inserted in config.gcc file.

>> There was always a complaint about a missing library: "-lsim".

"lsim" is added due to modifications in newlib for V850 target based 
on the following newlib patch.
http://cygwin.com/ml/newlib/2010/msg00412.html

>> The patch introduces about 50 new unexpected failures into the gcc
>> testsuite.

No extra regressions with the attached patch. Some regressions have been
fixed which were observed with fresh toolchain

>> The patch removes the v850ea target.

The change has been reverted. 

>> The patch removes perfectly good comments for no reason.

Sorry for the mistake. The comments have been inserted.

Thank you very much for reviewing the patch and giving us very valuable
suggestions and comments. The comments have been addressed in attached
patch. Please review the patch and let us know if there should be any
further modifications in it to be applied for main trunk.

Please find attached the modified "v850-gcc-v850e2-v850e2v3-support.patch"
addresses issues the comments. The Changelog has been modified as follows
for the modified patch.

Thanks for your co-operation and support.

2010-07-23  Naveen.H.S  <naveen.S@kpitcummins.com>

	* gcc-4.6.0/configure.ac: Support all v850 targets.
	* gcc-4.6.0/configure: Regenerate.
	* gcc/config/v850/lib1funcs.asm (save_r2_r31, return_r2_r31,
	save_r20_r31, return_r20_r31, save_r21_r31, return_r21_r31,
	save_r22_r31, return_r22_r31, save_r23_r31, return_r23_r31,
	save_r24_r31, return_r24_r31, save_r25_r31, return_r25_r31,
	save_r26_r31, return_r26_r31, save_r27_r31, return_r27_r31,
	save_r28_r31, return_r28_r31, save_r29_r31, return_r29_r31,
	save_r31, return_r31, save_interrupt, return_interrupt,
	save_all_interrupt, return_all_interrupt, L_save_r2_r31,
	L_return_interrupt, callt_return_interrupt, L_restore_all_interrupt,
	L_save_##START##_r31c, L_callt_save_r31c: Updated as per the
	new ABI requirements.
	save_r6_r9, L_callt_save_r6_r9: Remove.
	* gcc/config/v850/predicates.md (even_reg_operand, disp23_operand,
	const_float_1_operand const_float_0_operand): New Predicates.
	(pattern_is_ok_for_prepare, pattern_is_ok_for_prologue,
	pattern_is_ok_for_epilogue): Update as per the ABI requirements.
	* gcc/config/v850/t-v850: Update multilibs for new target variants.
	(save_varargs, callt_save_varargs, callt_save_r6_r9): Remove.
	* gcc/config/v850/t-v850e: Likewise.
	* gcc/config/v850/v850.c (v850_issue_rate): New.
	(v850_strict_argument_naming): New.
	(function_arg): Modify to generate a different ABI.
	(print_operand): Update case 'z' to support float modes.
	(output_move_single): Modify to generate appropriate and better
	assembly.
	(v850_float_z_comparison_operator, v850_select_cc_mode,
	v850_float_nz_comparison_operator,  v850_gen_float_compare,
	v850_gen_compare): New functions to support comparison of
	float values.
	(ep_memory_offset): Add support for V850E2 targets.
	(INTERRUPT_FIXED_NUM, INTERRUPT_ALL_SAVE_NUM): Update.
	(INTERRUPT_REGPARM_NUM): Remove.
	(compute_register_save_size): Add extra case to save/restore
	long call.
	(use_prolog_function): New function to support prologue.
	(expand_prologue): Add support for V850E2 targets and modified
	as per the current ABI requirements.
	(expand_epilogue): Likewise.
	(construct_restore_jr): Modify based on TARGET_LONG_CALLS.
	(construct_save_jarl): Likewise.
	(construct_dispose_instruction): Update as per the current ABI
	requirements.
	(construct_prepare_instruction): Likewise.
	* gcc/config/v850/v850.h(TARGET_CPU_DEFAULT): Add target
	predefines.
	(TARGET_CPU_v850e2, TARGET_CPU_v850e2v3): Define
	(CPP_SPEC): Updated to support v850e2 targets.
	(STRICT_ALIGNMENT): Modified.
	(FIRST_PSEUDO_REGISTER): Updated to add even registers.
	(FIXED_REGISTERS): Likewise.
	(CALL_USED_REGISTERS): Likewise.
	(CONDITIONAL_REGISTER_USAGE): Updated.
	(HARD_REGNO_MODE_OK): Updated.
	(reg_class): Updated to add even registers.
	(REG_CLASS_NAMES): Likewise.
	(REG_CLASS_CONTENTS): Likewise.
	(REGNO_REG_CLASS): Updated for CC registers.
	(REG_CLASS_FROM_LETTER): Added support for even registers.
	(REGNO_OK_FOR_BASE_P): Updated for CC registers.
	(STACK_POINTER_REGNUM, FRAME_POINTER_REGNUM, LINK_POINTER_REGNUM,
	ARG_POINTER_REGNUM): Updated.
	(FUNCTION_ARG_ADVANCE): Define.
	(REG_PARM_STACK_SPACE): Update as per the current ABI requirements.
	(OUTGOING_REG_PARM_STACK_SPACE): Remove.
	(EXTRA_CONSTRAINT): Add new constraint 'W' for 23-bit displacement.
	(GO_IF_LEGITIMATE_ADDRESS): Updated.
	(SELECT_CC_MODE): Define.
	(REGISTER_NAMES): Updated to add psw and fcc registers.
	(ADDITIONAL_REGISTER_NAMES): Updated.
	(ASM_OUTPUT_ADDR_DIFF_ELT): Updated to support new targets.
	(JUMP_TABLES_IN_TEXT_SECTION): Updated.
	* gcc/config/v850/v850.md (define_constants): Define new
	constants.
	(type): Update store,bit1,macc,div,fpu and single attributes.
	(cpu): New attribute.
	(cc): Add set_z attribute.
	(unsign23byte_load, sign23byte_load, unsign23hword_load,
	sign23hword_load, 23word_load, 23byte_store, 23hword_store,
	23word_store): New instructions for 23-bit displacement load and
	store.
	(movqi_internal, movhi_internal): Update the attributes.
	(movsi, movsi_internal_v850e): Updated to support v850e2 targets.
	(movsi_internal_v850e, movsi_internal, movsf_internal): Update
	the attributes.
	(v850_tst1): Modified using CC_REGNUM.
	(tstsi): Remove.
	(cmpsi): Modified as define_expand from define_insn.
	(cmpsi_insn, cmpsf, cmpdf): New instructions.
	(addsi3, subsi3, negsi2, divmodsi4, udivmodsi4, divmodhi4,
	udivmodhi4, v850_clr1_1, v850_clr1_2, v850_clr1_3, andsi3,
	v850_set1_1, v850_set1_3, iorsi3, v850_not1_1, v850_not1_3, xorsi3,
	one_cmplsi2): Clobber the CC_REGNUM register.
	(v850_clr1_1, v850_clr1_2, v850_clr1_3, andsi3, v850_set1_1,
	v850_set1_2, v850_set1_3, iorsi3, v850_not1_1, v850_not1_2,
	v850_not1_3, xorsi3, one_cmplsi2): Update the attributes
	accordingly.
	(setf_insn, set_z_insn, set_nz_insn): New instructions for
	v850e2v3 target.
	(movsicc_normal_cc, movsicc_reversed_cc): New instructions.
	(movsicc, movsicc_normal, movsicc_reversed): Add support for V850E2
	targets.
	(sasf_1, sasf_2): Remove.
	(sasf): New instruction.
	(rotlhi3, rotlhi3_8, rotlsi3, rotlsi3_16): Update to support V850E2
	targets. CC_REGNUM register is clobbered and attributes are
	updated.
	(branch_z_normal, branch_z_invert, branch_nz_normal,
	branch_nz_invert): New branch related instructions.
	(jump): Updated the attributes.
	(switch): Update to support new targets. CC_REGNUM register is
	clobbered and attributes are updated.
	(call_internal_short, call_internal_long, call_value_internal_short,
	call_value_internal_long): Updated the attributes.
	(zero_extendhisi2, zero_extendqisi2): CC_REGNUM register is
	clobbered and attributes are updated.
	(extendhisi_insn, extendhisi2, extendqisi_insn, extendqisi2):
	Update to support new targets. CC_REGNUM register is clobbered.
	(ashlsi3_v850e2, lshrsi3_v850e2, ashrsi3_v850e2): New shift
	instructions.
	(lshrsi3, ashrsi3): CC_REGNUM register is clobbered and attributes
	are updated.
	(ffssi2, addsf3, adddf3, subsf3, subdf3, mulsf3, muldf3, divsf3,
	divdf3, minsf3, mindf3, maxsf3, maxdf3, abssf2, absdf2, negsf2,
	negdf2, sqrtsf2, sqrtdf2, truncsfsi2, truncdfsi2, floatsisf2,
	floatsidf2, extendsfdf2, extenddfsf2, recipsf2, recipdf2,
	rsqrtsf2, rsqrtdf2, maddsf4, msubsf4, nmaddsf4, nmsubsf4,
	cmpsf_le_insn, cmpsf_lt_insn, cmpsf_ge_insn, cmpsf_gt_insn,
	cmpsf_eq_insn, cmpsf_ne_insn, cmpdf_le_insn, cmpdf_lt_insn,
	cmpdf_ge_insn, cmpdf_gt_insn, cmpdf_eq_insn, cmpdf_ne_insn, trfsr,
	movsfcc, movdfcc, movsfcc_z_insn, movsfcc_nz_insn, movdfcc_z_insn,
	movdfcc_nz_insn, movedfcc_z_zero, movedfcc_nz_zero): New floating
	point instructions defined for V850e2v3 target.
	(callt_save_interrupt, callt_return_interrupt, return_interrupt):
	Add support for V850E2 targets and CC_REGNUM register is clobbered.
	(callt_save_all_interrupt, callt_restore_all_interrupt): Add
	support for new targets.
	* gcc/config/v850/v850-modes.def: New file.
	* gcc/config/v850/v850.opt(mstrict-align): Remove.
	(mno-strict-align, mjump-tables-in-data-section, mv850e2,
	mv850e2v3): New command line options for V850.
	* gcc/config.gcc: Update the newly added files.
	* gcc/doc/invoke.texi: Update the newly added command line
	options for V850 target.
	* gcc/regmove.c (fixup_match_2): Update using pseudo register.

Thanks & Regards,
Naveen.H.S

Attachment: v850-gcc-v850e2-v850e2v3-support.patch
Description: v850-gcc-v850e2-v850e2v3-support.patch


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]