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]

[fixed-point] Patch for fixed-point madd


Hi,

  This patch extends integer madd supports to fixed-point types
(both saturating and non-saturating).  One new MIPS test is added.
Tree reassociation is extended to support non-saturating fixed-point types.
MIPS EABI is extended to pass 64-bit fixed-point modes in registers, similar to
passing the DI mode.

  Thanks a lot!

Regards,
Chao-ying

gcc/ChangeLog
2007-05-03  Chao-ying Fu  <fu@mips.com>

	* doc/md.texi (madd@var{m}@var{n}4): Extend to fixed-point modes.
	(ssmadd@var{m}@var{n}4, usmadd@var{m}@var{n}4): Document.
	* optabs.c (init_optabs): Initialize ssmadd_widen_optab and
	usmadd_widen_optab.
	* optabs.h (OTI_ssmadd_widen, OTI_usmadd_widen): New optab_indexes.
	(ssmadd_widen_optab, usmadd_widen_optab): Define.
	* genopinit.c (optabs): Fill in ssmadd_widen_optab and
	usmadd_widen_optab.
	* tree.h (NON_SAT_FIXED_POINT_TYPE_P, SAT_FIXED_POINT_TYPE_P,
	FIXED_POINT_TYPE_P): Define.
	* expr.c (expand_expr_real_1): Support saturating and non-saturating
	multiply and add for fixed-point types.
	* c-typeck.c (c_common_type): Initialize mclass to 0 to avoid warnings.
	* tree-ssa-reassoc.c (break_up_subtract_bb): We can do reassociation
	for non-saturating fixed-point types
	(reassociate_bb): Likewise.
	* config/mips/mips-fixed.md (ssmaddsqdq4): New instruction.
	* config/mips/mips.c (mips_pass_by_reference): Pass DQ, UDQ, DA, and
	UDA modes in registers.

gcc/testsuite/ChangeLog
2007-05-03  Chao-ying Fu  <fu@mips.com>

	* gcc.target/mips/dpaq_sa_l_w.c: New test.

Attachment: gcc.diff
Description: gcc.diff


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