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: [PATCH] Favour FLDMD over FLDMX where possible on ARM


> OK for mainline, once open?

Yes.

> 2006-08-24  Mark Shinwell  <shinwell@codesourcery.com>
>
> 	* config/arm/arm.c (arm_output_fldmx): Output FLDMD instead of
> 	FLDMX if target supports FLDMD.
> 	(vfp_output_fstmx): Output FSTMD instead of FSTMX if target supports
> 	FLDMD.
> 	(vfp_emit_fstmx): Don't leave space in the frame layout for the
> 	FSTMX format word if using FSTMD.
> 	(arm_get_vfp_saved_size): Don't add in space for the FSTMX format word
> 	if using FSTMD/FLDMD instead of FSTMX/FLDMX.
> 	(arm_output_epilogue): Adjust comment to reflect use of FSTMD.
> 	(arm_unwind_emit_sequence): Don't compensate for the FSTMX format
> 	word if emitting FSTMD.  Also emit "vsave" assembler directives in
> 	such cases rather than "save".
> 	* config/arm/libunwind.S (gnu_Unwind_Restore_VFP,
> 	gnu_Unwind_Save_VFP): Adjust comments.
> 	(gnu_Unwind_Restore_VFP_D, gnu_Unwind_Save_VFP_D): New functions
> 	for saving and restoring using FSTMD and FLDMD, rather than
> 	FSTMX and FLDMX.
> 	(gnu_Unwind_Restore_VFP_D_16_to_31, gnu_Unwind_Restore_VFP_D_16_to_31):
> 	New functions for saving and restoring the VFPv3 registers 16 .. 31.
> 	* config/arm/pr-support.c (gnu_unwind_execute): Add conditional
> 	compilation case to correctly handle unwind opcode 0xc8 when using
> 	VFP.
> 	* config/arm/unwind-arm.c (struct vfpv3_regs): New.
> 	(DEMAND_SAVE_VFP_D, DEMAND_SAVE_VFP_V3): New flags.
> 	(__gnu_Unwind_Save_VFP_D, __gnu_Unwind_Restore_VFP_D,
> 	__gnu_Unwind_Save_VFP_D_16_to_31, __gnu_Unwind_Restore_VFP_D_16_to_31):
> 	Declare.
> 	(restore_non_core_regs): Restore registers using FLDMD rather than
> 	FLDMX if required.  Also handle restoration of VFPv3 registers.
> 	(_Unwind_VRS_Pop): Handle saving and restoring of registers using
> 	FSTMD and FLDMD if required; also handle VFPv3 registers 16 .. 31,
> 	including cases where the caller specifies a range of registers
> 	that overlaps the d15/d16 boundary.
> 	* config/arm/arm.h (TARGET_FLDMX): New.


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