This is the mail archive of the 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


2006-12-08  Trevor Smigiel  <>

	* config/spu/spu-protos.h (spu_split_immediate): Renamed from
	(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
	(spu_expand_move): Use spu_split_immedate.
	(fsmbi_const_p): Use classify_immediate.
	(cpat_const_p): New.
	(gen_cpat_const: New.
	* config/spu/ (j,k,l): New constraints for cpat
	* config/spu/ (unnamed splitter): Change address splitter to
	handle all immediates.
	(_mov<mode>, _movdi, _movti): Handle i, j, k constraints for cpat
	(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]