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]

[Commited, SPU] Generate constants with cbd, chd, cwd and cdd.


The "Generate Controls" instructions, called cpat instructions in the
code, load constants representing shuffle patterns.  This patch enables
the mov patters to identify these constants and generate the correct
instruction.  It also changes the UNSPEC_CPAT to a CONST_DOUBLE when it
can.

Trevor

2006-12-08  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>

	* config/spu/spu-protos.h (spu_split_immediate): Renamed from
	spu_split_address.
	(cpat_const_p, gen_cpat_const): Add.
	* config/spu/spu.c (immediate_class): New enum.
	(cpat_info, classify_immediate): New.
	(print_operand): Use S, D, T instead of F, G, H.  Use
	classify_immediate.  Handle cpat cases.
	(spu_split_immediate):  Renamed from spu_split_address.  Split all
	immediates that can be split.
	(immediate_load_p): Use classify_immediate.
	(spu_legitimate_constant_p): Accept everything except some cases of
	CONST_VECTOR.
	(spu_expand_move): Use spu_split_immedate.
	(fsmbi_const_p): Use classify_immediate.
	(cpat_const_p): New.
	(gen_cpat_const: New.
	* config/spu/constraints.md (j,k,l): New constraints for cpat
	instructions.
	* config/spu/spu.md (unnamed splitter): Change address splitter to
	handle all immediates.
	(_mov<mode>, _movdi, _movti): Handle i, j, k constraints for cpat
	instructions.
	(cpat, _cpat, splitter): Generate a TImode constant for cpat patterns
	when possible.

Attachment: spucpat.diff.txt
Description: Text document


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