From 798f6e6f19cf60d8a94ed426fd75e11d5787042f Mon Sep 17 00:00:00 2001 From: Michael Hayes Date: Tue, 9 Nov 1999 22:56:56 +0000 Subject: [PATCH] c4x-protos.h: New file. * config/c4x/c4x-protos.h: New file. Prototypes for functions defined in c4x.c. * config/c4x/c4x.h: Moved prototypes to c4x.h. * config/c4x/c4x.c (c4x_preferred_reload_class, c4x_limit_reload_class, c4x_secondary_memory_needed) Delete. (fp_zero_operand): Add mode argument. From-SVN: r30463 --- gcc/ChangeLog | 9 ++ gcc/config/c4x/c4x-protos.h | 253 ++++++++++++++++++++++++++++++++++++ gcc/config/c4x/c4x.c | 54 +++----- gcc/config/c4x/c4x.h | 223 +------------------------------ 4 files changed, 289 insertions(+), 250 deletions(-) create mode 100644 gcc/config/c4x/c4x-protos.h diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 9bd5f08a21b..0303d6d7c43 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +Wed Nov 10 11:47:54 1999 Michael Hayes + + * config/c4x/c4x-protos.h: New file. Prototypes for functions defined + in c4x.c. + * config/c4x/c4x.h: Moved prototypes to c4x.h. + * config/c4x/c4x.c (c4x_preferred_reload_class, c4x_limit_reload_class, + c4x_secondary_memory_needed) Delete. + (fp_zero_operand): Add mode argument. + Thu Nov 4 15:52:35 1999 Andrew Haley * reload1.c (reload_reg_free_for_value_p): Don't use a register diff --git a/gcc/config/c4x/c4x-protos.h b/gcc/config/c4x/c4x-protos.h new file mode 100644 index 00000000000..dd15fe42d34 --- /dev/null +++ b/gcc/config/c4x/c4x-protos.h @@ -0,0 +1,253 @@ +/* Definitions of target machine for GNU compiler. TMS320C[34]x + Copyright (C) 1994-98, 1999 Free Software Foundation, Inc. + + Contributed by Michael Hayes (m.hayes@elec.canterbury.ac.nz) + and Herman Ten Brugge (Haj.Ten.Brugge@net.HCC.nl). + + This file is part of GNU CC. + + GNU CC is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + GNU CC is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with GNU CC; see the file COPYING. If not, write to + the Free Software Foundation, 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +extern void c4x_override_options PARAMS ((void)); + +extern void c4x_optimization_options PARAMS ((int, int)); + +extern void c4x_output_ascii PARAMS ((FILE *, const char *, int)); + +extern void c4x_function_prologue PARAMS ((FILE *, int)); + +extern void c4x_function_epilogue PARAMS ((FILE *, int)); + +extern int c4x_null_epilogue_p PARAMS ((void)); + +extern int c4x_handle_pragma PARAMS ((int (* p_getc) (void), + void (* p_ungetc) (int), + char *)); + +#ifdef TREE_CODE +extern void c4x_set_default_attributes PARAMS ((tree, tree *)); + +extern void c4x_function_arg_advance PARAMS ((CUMULATIVE_ARGS *, + enum machine_mode, tree, int)); + +extern struct rtx_def *c4x_function_arg PARAMS ((CUMULATIVE_ARGS *, + enum machine_mode, tree, + int)); + +extern void c4x_encode_section_info PARAMS ((tree)); +#endif /* TREE_CODE */ + + +#if defined(RTX_CODE) && defined(TREE_CODE) +extern void c4x_init_cumulative_args PARAMS ((CUMULATIVE_ARGS *c, tree, rtx)); + +extern void c4x_va_start PARAMS ((int, tree, rtx)); + +extern struct rtx_def *c4x_va_arg PARAMS ((tree, tree)); +#endif /* TREE_CODE and RTX_CODE*/ + + +#ifdef RTX_CODE +extern struct rtx_def *c4x_gen_compare_reg PARAMS ((enum rtx_code, rtx, rtx)); + +extern int c4x_check_legit_addr PARAMS ((enum machine_mode, rtx, int)); + +extern struct rtx_def *c4x_legitimize_address PARAMS ((rtx, + enum machine_mode)); + +extern struct rtx_def *c4x_legitimize_reload_address PARAMS ((rtx, enum machine_mode, rtx)); + +extern int c4x_address_cost PARAMS ((rtx)); + +extern void c4x_print_operand PARAMS ((FILE *, rtx, int)); + +extern void c4x_print_operand_address PARAMS ((FILE *, rtx)); + +extern enum reg_class c4x_preferred_reload_class PARAMS ((rtx, + enum reg_class)); + +extern struct rtx_def *c4x_operand_subword PARAMS ((rtx, int, int, + enum machine_mode)); + +extern char *c4x_output_cbranch PARAMS ((char *, rtx)); + +extern int c4x_label_conflict PARAMS ((rtx, rtx, rtx)); + +extern int c4x_address_conflict PARAMS ((rtx, rtx, int, int)); + +extern int c4x_adjust_cost PARAMS ((rtx, rtx, rtx, int)); + +extern void c4x_process_after_reload PARAMS ((rtx)); + +extern int c4x_rptb_nop_p PARAMS ((rtx)); + +extern int c4x_rptb_rpts_p PARAMS ((rtx, rtx)); + +extern int c4x_autoinc_operand PARAMS ((rtx, enum machine_mode)); + +extern int fp_zero_operand PARAMS ((rtx, enum machine_mode)); + +extern int const_operand PARAMS ((rtx, enum machine_mode)); + +extern int stik_const_operand PARAMS ((rtx, enum machine_mode)); + +extern int not_const_operand PARAMS ((rtx, enum machine_mode)); + +extern int parallel_operand PARAMS ((rtx, enum machine_mode)); + +extern int reg_or_const_operand PARAMS ((rtx, enum machine_mode)); + +extern int reg_operand PARAMS ((rtx, enum machine_mode)); + +extern int mixed_subreg_operand PARAMS ((rtx, enum machine_mode)); + +extern int reg_imm_operand PARAMS ((rtx, enum machine_mode)); + +extern int r0r1_reg_operand PARAMS ((rtx, enum machine_mode)); + +extern int r2r3_reg_operand PARAMS ((rtx, enum machine_mode)); + +extern int ext_low_reg_operand PARAMS ((rtx, enum machine_mode)); + +extern int ext_reg_operand PARAMS ((rtx, enum machine_mode)); + +extern int std_reg_operand PARAMS ((rtx, enum machine_mode)); + +extern int dst_operand PARAMS ((rtx, enum machine_mode)); + +extern int src_operand PARAMS ((rtx, enum machine_mode)); + +extern int src_hi_operand PARAMS ((rtx, enum machine_mode)); + +extern int lsrc_operand PARAMS ((rtx, enum machine_mode)); + +extern int tsrc_operand PARAMS ((rtx, enum machine_mode)); + +extern int addr_reg_operand PARAMS ((rtx, enum machine_mode)); + +extern int index_reg_operand PARAMS ((rtx, enum machine_mode)); + +extern int dp_reg_operand PARAMS ((rtx, enum machine_mode)); + +extern int sp_reg_operand PARAMS ((rtx, enum machine_mode)); + +extern int rc_reg_operand PARAMS ((rtx, enum machine_mode)); + +extern int st_reg_operand PARAMS ((rtx, enum machine_mode)); + +extern int symbolic_address_operand PARAMS ((rtx, enum machine_mode)); + +extern int ar0_reg_operand PARAMS ((rtx, enum machine_mode)); + +extern int ar0_mem_operand PARAMS ((rtx, enum machine_mode)); + +extern int ar1_reg_operand PARAMS ((rtx, enum machine_mode)); + +extern int ar1_mem_operand PARAMS ((rtx, enum machine_mode)); + +extern int ar2_reg_operand PARAMS ((rtx, enum machine_mode)); + +extern int ar2_mem_operand PARAMS ((rtx, enum machine_mode)); + +extern int ar3_reg_operand PARAMS ((rtx, enum machine_mode)); + +extern int ar3_mem_operand PARAMS ((rtx, enum machine_mode)); + +extern int ar4_reg_operand PARAMS ((rtx, enum machine_mode)); + +extern int ar4_mem_operand PARAMS ((rtx, enum machine_mode)); + +extern int ar5_reg_operand PARAMS ((rtx, enum machine_mode)); + +extern int ar5_mem_operand PARAMS ((rtx, enum machine_mode)); + +extern int ar6_reg_operand PARAMS ((rtx, enum machine_mode)); + +extern int ar6_mem_operand PARAMS ((rtx, enum machine_mode)); + +extern int ar7_reg_operand PARAMS ((rtx, enum machine_mode)); + +extern int ar7_mem_operand PARAMS ((rtx, enum machine_mode)); + +extern int ir0_reg_operand PARAMS ((rtx, enum machine_mode)); + +extern int ir0_mem_operand PARAMS ((rtx, enum machine_mode)); + +extern int ir1_reg_operand PARAMS ((rtx, enum machine_mode)); + +extern int ir1_mem_operand PARAMS ((rtx, enum machine_mode)); + +extern int group1_reg_operand PARAMS ((rtx, enum machine_mode)); + +extern int group1_mem_operand PARAMS ((rtx, enum machine_mode)); + +extern int arx_reg_operand PARAMS ((rtx, enum machine_mode)); + +extern int call_address_operand PARAMS ((rtx, enum machine_mode)); + +extern int par_ind_operand PARAMS ((rtx, enum machine_mode)); + +extern int not_rc_reg PARAMS ((rtx, enum machine_mode)); + +extern int not_modify_reg PARAMS ((rtx, enum machine_mode)); + +extern int c4x_shiftable_constant PARAMS ((rtx)); + +extern int c4x_H_constant PARAMS ((rtx)); + +extern int c4x_I_constant PARAMS ((rtx)); + +extern int c4x_J_constant PARAMS ((rtx)); + +extern int c4x_L_constant PARAMS ((rtx)); + +extern int c4x_Q_constraint PARAMS ((rtx)); + +extern int c4x_R_constraint PARAMS ((rtx)); + +extern int c4x_S_constraint PARAMS ((rtx)); + +extern int c4x_T_constraint PARAMS ((rtx)); + +extern int c4x_U_constraint PARAMS ((rtx)); + +extern void c4x_emit_libcall PARAMS ((const char *, enum rtx_code, + enum machine_mode, + enum machine_mode, int, rtx *)); + +extern void c4x_emit_libcall3 PARAMS ((const char *, enum rtx_code, + enum machine_mode, rtx *)); + +extern void c4x_emit_libcall_mulhi PARAMS ((char *, enum rtx_code, + enum machine_mode, rtx *)); + +extern int c4x_emit_move_sequence PARAMS ((rtx *, enum machine_mode)); + +extern int legitimize_operands PARAMS ((enum rtx_code, rtx *, + enum machine_mode)); + +extern int valid_operands PARAMS ((enum rtx_code, rtx *, enum machine_mode)); + +extern int valid_parallel_load_store PARAMS ((rtx *, enum machine_mode)); + +extern int valid_parallel_operands_4 PARAMS ((rtx *, enum machine_mode)); + +extern int valid_parallel_operands_5 PARAMS ((rtx *, enum machine_mode)); + +extern int valid_parallel_operands_6 PARAMS ((rtx *, enum machine_mode)); + +#endif /* RTX_CODE */ + diff --git a/gcc/config/c4x/c4x.c b/gcc/config/c4x/c4x.c index dd493c7d7fd..1475494d738 100644 --- a/gcc/config/c4x/c4x.c +++ b/gcc/config/c4x/c4x.c @@ -44,6 +44,7 @@ #include "recog.h" #include "c-tree.h" #include "ggc.h" +#include "c4x-protos.h" static int c4x_leaf_function; @@ -192,7 +193,14 @@ c4x_override_options () /* -mcpu=xx overrides -m40 etc. */ if (c4x_cpu_version_string) - c4x_cpu_version = atoi (c4x_cpu_version_string); + { + const char *p = c4x_cpu_version_string; + + /* Also allow -mcpu=c30 etc. */ + if (*p == 'c' || *p == 'C') + p++; + c4x_cpu_version = atoi (p); + } target_flags &= ~(C30_FLAG | C31_FLAG | C32_FLAG | C40_FLAG | C44_FLAG); @@ -251,7 +259,7 @@ c4x_optimization_options (level, size) void c4x_output_ascii (stream, ptr, len) FILE *stream; - unsigned char *ptr; + const char *ptr; int len; { char sbuf[C4X_ASCII_LIMIT + 1]; @@ -1197,7 +1205,7 @@ c4x_emit_move_sequence (operands, mode) void c4x_emit_libcall (name, code, dmode, smode, noperands, operands) - char *name; + const char *name; enum rtx_code code; enum machine_mode dmode; enum machine_mode smode; @@ -1276,34 +1284,6 @@ c4x_emit_libcall_mulhi (name, code, mode, operands) } -enum reg_class -c4x_preferred_reload_class (x, class) - rtx x ATTRIBUTE_UNUSED; - enum reg_class class; -{ - return class; -} - - -enum reg_class -c4x_limit_reload_class (mode, class) - enum machine_mode mode ATTRIBUTE_UNUSED; - enum reg_class class; -{ - return class; -} - - -enum reg_class -c4x_secondary_memory_needed (class1, class2, mode) - enum reg_class class1 ATTRIBUTE_UNUSED; - enum reg_class class2 ATTRIBUTE_UNUSED; - enum machine_mode mode ATTRIBUTE_UNUSED; -{ - return 0; -} - - /* Set the SYMBOL_REF_FLAG for a function decl. However, wo do not yet use this info. */ void @@ -1590,7 +1570,7 @@ c4x_legitimize_reload_address (orig, mode, insn) int c4x_address_cost (addr) -rtx addr; + rtx addr; { switch (GET_CODE (addr)) { @@ -1657,6 +1637,11 @@ rtx addr; return 2; case CONST_INT: + /* The following tries to improve GIV combination + in strength reduce but appears not to help. */ + if (TARGET_DEVEL && IS_UINT5_CONST (INTVAL (op1))) + return 1; + if (IS_DISP1_CONST (INTVAL (op1))) return 1; @@ -2722,8 +2707,9 @@ any_operand (op, mode) /* Nonzero if OP is a floating point value with value 0.0. */ int -fp_zero_operand (op) +fp_zero_operand (op, mode) rtx op; + enum machine_mode mode ATTRIBUTE_UNUSED; { REAL_VALUE_TYPE r; @@ -4211,7 +4197,7 @@ c4x_operand_subword (op, i, validate_address, mode) int c4x_handle_pragma (p_getc, p_ungetc, pname) - int (* p_getc) PROTO ((void)); + int (* p_getc) PROTO ((void)); void (* p_ungetc) PROTO ((int)) ATTRIBUTE_UNUSED; char *pname; { diff --git a/gcc/config/c4x/c4x.h b/gcc/config/c4x/c4x.h index 20a58350c3c..09e40bc039d 100644 --- a/gcc/config/c4x/c4x.h +++ b/gcc/config/c4x/c4x.h @@ -21,10 +21,6 @@ the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -/* Set the following so that some of the macros expand to function - calls to simplify debugging. */ -#define C4X_DEBUG 1 - /* RUN-TIME TARGET SPECIFICATION */ #define C4x 1 @@ -236,8 +232,8 @@ extern int target_flags; -#define TARGET_INLINE 1 /* Inline MPYI */ -#define TARGET_PARALLEL 1 /* Enable parallel insns in MD */ +#define TARGET_INLINE 1 /* Inline MPYI. */ +#define TARGET_PARALLEL 1 /* Enable parallel insns in MD. */ #define TARGET_SMALL_REG_CLASS 0 #define TARGET_SMALL (target_flags & SMALL_MEMORY_FLAG) @@ -316,11 +312,10 @@ extern const char *c4x_rpts_cycles_string, *c4x_cpu_version_string; defined, is executed once just after all the command options have been parsed. */ -extern void c4x_override_options (); #define OVERRIDE_OPTIONS c4x_override_options () /* Define this to change the optimizations performed by default. */ -extern void c4x_optimization_options (); + #define OPTIMIZATION_OPTIONS(LEVEL,SIZE) c4x_optimization_options(LEVEL,SIZE) /* Run Time Target Specification */ @@ -814,15 +809,11 @@ enum reg_class #define REGNO_OK_FOR_INDEX_P(REGNO) \ (IS_INDEX_REG(REGNO) || IS_INDEX_REG((unsigned)reg_renumber[REGNO])) -extern enum reg_class c4x_preferred_reload_class (); -#define PREFERRED_RELOAD_CLASS(X, CLASS) c4x_preferred_reload_class(X, CLASS) +#define PREFERRED_RELOAD_CLASS(X, CLASS) (CLASS) -extern enum reg_class c4x_limit_reload_class (); -#define LIMIT_RELOAD_CLASS(X, CLASS) c4x_limit_reload_class(X, CLASS) +#define LIMIT_RELOAD_CLASS(X, CLASS) (CLASS) -extern enum reg_class c4x_secondary_memory_needed (); -#define SECONDARY_MEMORY_NEEDED(CLASS1, CLASS2, MODE) \ -c4x_secondary_memory_needed(CLASS1, CLASS2, MODE) +#define SECONDARY_MEMORY_NEEDED(CLASS1, CLASS2, MODE) 0 #define CLASS_MAX_NREGS(CLASS, MODE) \ (((MODE) == CCmode || (MODE) == CC_NOOVmode) ? 1 : ((MODE) == HFmode) ? 1 : \ @@ -866,7 +857,7 @@ c4x_secondary_memory_needed(CLASS1, CLASS2, MODE) : 0 ) #define CONST_DOUBLE_OK_FOR_LETTER_P(OP, C) \ - ( ((C) == 'G') ? (fp_zero_operand (OP)) \ + ( ((C) == 'G') ? (fp_zero_operand (OP, QFmode)) \ : ((C) == 'H') ? (c4x_H_constant (OP)) \ : 0 ) @@ -1070,18 +1061,12 @@ typedef struct c4x_args } CUMULATIVE_ARGS; -extern void c4x_init_cumulative_args(); - #define INIT_CUMULATIVE_ARGS(CUM,FNTYPE,LIBNAME,INDIRECT) \ (c4x_init_cumulative_args (&CUM, FNTYPE, LIBNAME)) -extern void c4x_function_arg_advance(); - #define FUNCTION_ARG_ADVANCE(CUM, MODE, TYPE, NAMED) \ (c4x_function_arg_advance (&CUM, MODE, TYPE, NAMED)) -extern struct rtx_def *c4x_function_arg(); - #define FUNCTION_ARG(CUM, MODE, TYPE, NAMED) \ (c4x_function_arg(&CUM, MODE, TYPE, NAMED)) @@ -1127,11 +1112,9 @@ extern struct rtx_def *c4x_function_arg(); /* Varargs handling. */ -extern void c4x_va_start (); #define EXPAND_BUILTIN_VA_START(stdarg, valist, nextarg) \ c4x_va_start (stdarg, valist, nextarg) -extern struct rtx_def *c4x_va_arg (); #define EXPAND_BUILTIN_VA_ARG(valist, type) \ c4x_va_arg (valist, type) @@ -1553,8 +1536,6 @@ extern struct rtx_def *c4x_va_arg (); || GET_MODE (Y) == ABS) \ ? CC_NOOVmode : CCmode) -extern struct rtx_def *c4x_gen_compare_reg (); - /* Addressing Modes */ #define HAVE_POST_INCREMENT 1 @@ -1593,8 +1574,6 @@ extern struct rtx_def *c4x_gen_compare_reg (); After reload, it makes no difference, since pseudo regs have been eliminated by then. */ -extern int c4x_check_legit_addr (); - #ifndef REG_OK_STRICT /* Nonzero if X is a hard or pseudo reg that can be used as an base. */ @@ -1629,7 +1608,6 @@ extern int c4x_check_legit_addr (); #endif -extern struct rtx_def *c4x_legitimize_address (); #define LEGITIMIZE_ADDRESS(X, OLDX, MODE, WIN) \ { \ rtx new; \ @@ -1641,7 +1619,6 @@ extern struct rtx_def *c4x_legitimize_address (); } \ } -extern struct rtx_def *c4x_legitimize_reload_address (); #define LEGITIMIZE_RELOAD_ADDRESS(X,MODE,OPNUM,TYPE,IND_LEVELS,WIN) \ { \ rtx new; \ @@ -1708,7 +1685,6 @@ extern struct rtx_def *c4x_legitimize_reload_address (); On the C4x we use this to indicate if a symbol is in text or data space. */ -extern void c4x_encode_section_info (); #define ENCODE_SECTION_INFO(DECL) c4x_encode_section_info (DECL); /* Descripting Relative Cost of Operations */ @@ -1811,8 +1787,6 @@ extern void c4x_encode_section_info (); for valid addresses. We handle the most common address without a call to c4x_address_cost. */ -extern int c4x_address_cost (); - #define ADDRESS_COST(ADDR) (REG_P (ADDR) ? 1 : c4x_address_cost (ADDR)) #define CANONICALIZE_COMPARISON(CODE, OP0, OP1) \ @@ -2130,7 +2104,6 @@ dtors_section () \ #define ASM_OUTPUT_BYTE(FILE, VALUE) \ fprintf (FILE, "\t.word\t0%xh\n", (VALUE)) -extern void c4x_output_ascii (); #define ASM_OUTPUT_ASCII(FILE, PTR, LEN) c4x_output_ascii (FILE, PTR, LEN) #define ASM_OPEN_PAREN "(" @@ -2286,8 +2259,6 @@ asm_fprintf (FILE, "%s%d:\n", PREFIX, NUM) "iif", "rs", "re", "rc", "f8", "f9", "f10", "f11" \ } - -extern void c4x_print_operand (); #define PRINT_OPERAND(FILE, X, CODE) c4x_print_operand(FILE, X, CODE) /* Determine which codes are valid without a following integer. These must @@ -2295,7 +2266,6 @@ extern void c4x_print_operand (); #define PRINT_OPERAND_PUNCT_VALID_P(CODE) ((CODE) == '#') -extern void c4x_print_operand_address (); #define PRINT_OPERAND_ADDRESS(FILE, X) c4x_print_operand_address(FILE, X) /* Define this macro if you want to implement any pragmas. If defined, it @@ -2304,15 +2274,12 @@ extern void c4x_print_operand_address (); text can be read. CH is the first character after the #pragma. The result of the expression is the terminating character found (newline or EOF). */ -extern int c4x_handle_pragma (); #define HANDLE_PRAGMA(GETC, UNGETC, NAME) \ c4x_handle_pragma (GETC, UNGETC, NAME) -extern void c4x_set_default_attributes (); #define SET_DEFAULT_DECL_ATTRIBUTES(DECL, ATTRIBUTES) \ c4x_set_default_attributes (DECL, &ATTRIBUTES) -extern int c4x_valid_type_attribute_p (); #define VALID_MACHINE_TYPE_ATTRIBUTE(TYPE, ATTRIBUTES, NAME, ARGS) \ (c4x_valid_type_attribute_p (TYPE, ATTRIBUTES, NAME, ARGS)) @@ -2619,179 +2586,3 @@ extern struct rtx_def *c4x_compare_op1; /* operand 1 for comparisons */ extern int c4x_rpts_cycles; /* max cycles for RPTS */ extern int c4x_cpu_version; /* cpu version C30/31/32/40/44 */ - -/* Functions in c4x.c */ - -extern void c4x_function_prologue (); - -extern void c4x_function_epilogue (); - -extern struct rtx_def *c4x_operand_subword (); - -extern struct rtx_def *c4x_adj_offsettable_operand (); - -extern char *c4x_output_cbranch (); - -extern int c4x_null_epilogue_p (); - -extern int c4x_autoinc_operand (); - -extern int c4x_label_conflict (); - -extern int c4x_address_conflict (); - -extern int c4x_adjust_cost (); - -extern void c4x_process_after_reload (); - -extern void c4x_combine_parallel (); - -extern int c4x_rptb_nop_p (); - -extern int c4x_rptb_rpts_p (); - -extern int fp_zero_operand (); - -extern int const_operand (); - -extern int stik_const_operand (); - -extern int not_const_operand (); - -extern int parallel_operand (); - -extern int reg_or_const_operand (); - -extern int reg_operand (); - -extern int mixed_subreg_operand (); - -extern int reg_imm_operand (); - -extern int r0r1_reg_operand (); - -extern int r2r3_reg_operand (); - -extern int ext_low_reg_operand (); - -extern int ext_reg_operand (); - -extern int std_reg_operand (); - -extern int dst_operand (); - -extern int src_operand (); - -extern int src_hi_operand (); - -extern int lsrc_operand (); - -extern int tsrc_operand (); - -extern int addr_reg_operand (); - -extern int index_reg_operand (); - -extern int dp_reg_operand (); - -extern int sp_reg_operand (); - -extern int rc_reg_operand (); - -extern int st_reg_operand (); - -extern int symbolic_address_operand (); - -extern int ar0_reg_operand (); - -extern int ar0_mem_operand (); - -extern int ar1_reg_operand (); - -extern int ar1_mem_operand (); - -extern int ar2_reg_operand (); - -extern int ar2_mem_operand (); - -extern int ar3_reg_operand (); - -extern int ar3_mem_operand (); - -extern int ar4_reg_operand (); - -extern int ar4_mem_operand (); - -extern int ar5_reg_operand (); - -extern int ar5_mem_operand (); - -extern int ar6_reg_operand (); - -extern int ar6_mem_operand (); - -extern int ar7_reg_operand (); - -extern int ar7_mem_operand (); - -extern int ir0_reg_operand (); - -extern int ir0_mem_operand (); - -extern int ir1_reg_operand (); - -extern int ir1_mem_operand (); - -extern int group1_reg_operand (); - -extern int group1_mem_operand (); - -extern int arx_reg_operand (); - -extern int call_address_operand (); - -extern int par_ind_operand (); - -extern int not_rc_reg (); - -extern int not_modify_reg (); - -extern int c4x_shiftable_constant (); - -extern int c4x_H_constant (); - -extern int c4x_I_constant (); - -extern int c4x_J_constant (); - -extern int c4x_L_constant (); - -extern int c4x_Q_constraint (); - -extern int c4x_R_constraint (); - -extern int c4x_S_constraint (); - -extern int c4x_T_constraint (); - -extern int c4x_U_constraint (); - -extern void c4x_emit_libcall (); - -extern void c4x_emit_libcall3 (); - -extern void c4x_emit_libcall_mulhi (); - -extern int c4x_emit_move_sequence (); - -extern int legitimize_operands (); - -extern int valid_operands (); - -extern int valid_parallel_load_store (); - -extern int valid_parallel_operands_4 (); - -extern int valid_parallel_operands_5 (); - -extern int valid_parallel_operands_6 ();