diff options
author | tsmigiel <tsmigiel@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-12-09 01:22:39 +0000 |
---|---|---|
committer | tsmigiel <tsmigiel@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-12-09 01:22:39 +0000 |
commit | dea012588eba2419582fe77d773af142455ca52c (patch) | |
tree | b092c04bc9fe69e1a7e2c26921cde187d1f338c1 /gcc/config/spu/spu-protos.h | |
parent | ffe859e6922789855277e9332f2263f2451e3df0 (diff) | |
download | gcc-dea012588eba2419582fe77d773af142455ca52c.tar.gz |
* 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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@119682 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/spu/spu-protos.h')
-rw-r--r-- | gcc/config/spu/spu-protos.h | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/gcc/config/spu/spu-protos.h b/gcc/config/spu/spu-protos.h index 3239745ee0e..710c833746a 100644 --- a/gcc/config/spu/spu-protos.h +++ b/gcc/config/spu/spu-protos.h @@ -34,7 +34,7 @@ extern HOST_WIDE_INT const_double_to_hwint (rtx x); extern rtx hwint_to_const_double (enum machine_mode mode, HOST_WIDE_INT v); extern void print_operand_address (FILE * file, register rtx addr); extern void print_operand (FILE * file, rtx x, int code); -extern void spu_split_address (rtx * ops); +extern int spu_split_immediate (rtx * ops); extern int spu_saved_regs_size (void); extern int direct_return (void); extern void spu_expand_prologue (void); @@ -69,6 +69,8 @@ extern void spu_split_load (rtx * ops); extern void spu_split_store (rtx * ops); extern int spu_valid_move (rtx * ops); extern int fsmbi_const_p (rtx x); +extern int cpat_const_p (rtx x, enum machine_mode mode); +extern rtx gen_cpat_const (rtx * ops); extern void constant_to_array (enum machine_mode mode, rtx x, unsigned char *arr); extern rtx array_to_constant (enum machine_mode mode, unsigned char *arr); |