summaryrefslogtreecommitdiff
path: root/gcc/config/spu/spu-protos.h
diff options
context:
space:
mode:
authortsmigiel <tsmigiel@138bc75d-0d04-0410-961f-82ee72b054a4>2006-12-09 01:22:39 +0000
committertsmigiel <tsmigiel@138bc75d-0d04-0410-961f-82ee72b054a4>2006-12-09 01:22:39 +0000
commitdea012588eba2419582fe77d773af142455ca52c (patch)
treeb092c04bc9fe69e1a7e2c26921cde187d1f338c1 /gcc/config/spu/spu-protos.h
parentffe859e6922789855277e9332f2263f2451e3df0 (diff)
downloadgcc-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.h4
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);