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
This commit is contained in:
parent
8226320b92
commit
798f6e6f19
|
@ -1,3 +1,12 @@
|
|||
Wed Nov 10 11:47:54 1999 Michael Hayes <m.hayes@elec.canterbury.ac.nz>
|
||||
|
||||
* 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 <aph@cygnus.com>
|
||||
|
||||
* reload1.c (reload_reg_free_for_value_p): Don't use a register
|
||||
|
|
|
@ -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 */
|
||||
|
|
@ -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;
|
||||
{
|
||||
|
|
|
@ -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 ();
|
||||
|
|
Loading…
Reference in New Issue