dsp16xx-protos.h: New file.

* dsp16xx-protos.h: New file.

	* dsp16xx.c: Include tm_p.h.  Add static prototypes.  Fix compile
	time warnings.

	* dsp16xx.h: Move prototypes to dsp16xx-protos.h.  Fix compile time
	warnings.

	* dsp16xx.md: Likewise.

From-SVN: r31416
This commit is contained in:
Kaveh R. Ghazi 2000-01-14 16:16:46 +00:00 committed by Kaveh Ghazi
parent 6b995286d6
commit 699851185a
5 changed files with 252 additions and 159 deletions

View File

@ -1,3 +1,15 @@
2000-01-14 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* dsp16xx-protos.h: New file.
* dsp16xx.c: Include tm_p.h. Add static prototypes. Fix compile
time warnings.
* dsp16xx.h: Move prototypes to dsp16xx-protos.h. Fix compile time
warnings.
* dsp16xx.md: Likewise.
2000-01-14 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* convex-protos.h: New file.

View File

@ -0,0 +1,85 @@
/* Definitions of target machine for GNU compiler. AT&T DSP1600.
Copyright (C) 2000 Free Software Foundation, Inc.
Contributed by Michael Collison (collison@world.std.com).
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 1, 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. */
#ifdef RTX_CODE
extern struct rtx_def *gen_compare_reg PARAMS ((enum rtx_code, rtx, rtx));
extern int call_address_operand PARAMS ((rtx, enum machine_mode));
extern int arith_reg_operand PARAMS ((rtx, enum machine_mode));
extern int symbolic_address_operand PARAMS ((rtx, enum machine_mode));
extern int Y_address_operand PARAMS ((rtx, enum machine_mode));
extern int sp_operand PARAMS ((rtx, enum machine_mode));
extern int sp_operand2 PARAMS ((rtx, enum machine_mode));
extern int nonmemory_arith_operand PARAMS ((rtx, enum machine_mode));
extern int dsp16xx_comparison_operator PARAMS ((rtx, enum machine_mode));
extern void notice_update_cc PARAMS ((rtx));
extern void double_reg_from_memory PARAMS ((rtx[]));
extern void double_reg_to_memory PARAMS ((rtx[]));
extern enum rtx_code next_cc_user_code PARAMS ((rtx));
extern int next_cc_user_unsigned PARAMS ((rtx));
extern struct rtx_def *gen_tst_reg PARAMS ((rtx));
extern const char *output_block_move PARAMS ((rtx[]));
extern enum reg_class preferred_reload_class PARAMS ((rtx, enum reg_class));
extern enum reg_class secondary_reload_class PARAMS ((enum reg_class,
enum machine_mode, rtx));
extern int emit_move_sequence PARAMS ((rtx *, enum machine_mode));
extern void print_operand PARAMS ((FILE *, rtx, int));
extern void print_operand_address PARAMS ((FILE *, rtx));
extern void output_dsp16xx_float_const PARAMS ((rtx *));
extern void emit_1600_core_shift PARAMS ((enum rtx_code, rtx *, int));
extern int dsp16xx_address_cost PARAMS ((rtx));
extern int symbolic_address_p PARAMS ((rtx));
#endif /* RTX_CODE */
#ifdef TREE_CODE
extern struct rtx_def *dsp16xx_function_arg PARAMS ((CUMULATIVE_ARGS,
enum machine_mode,
tree, int));
extern void dsp16xx_function_arg_advance PARAMS ((CUMULATIVE_ARGS *,
enum machine_mode,
tree, int));
#endif /* TREE_CODE */
extern void dsp16xx_invalid_register_for_compare PARAMS ((void));
extern int class_max_nregs PARAMS ((enum reg_class, enum machine_mode));
extern enum reg_class limit_reload_class PARAMS ((enum reg_class, enum machine_mode));
extern int dsp16xx_register_move_cost PARAMS ((enum reg_class, enum reg_class));
extern int dsp16xx_makes_calls PARAMS ((void));
extern long compute_frame_size PARAMS ((int));
extern int dsp16xx_call_saved_register PARAMS ((int));
extern int dsp16xx_call_saved_register PARAMS ((int));
extern void init_emulation_routines PARAMS ((void));
extern int ybase_regs_ever_used PARAMS ((void));
extern void override_options PARAMS ((void));
extern int dsp16xx_starting_frame_offset PARAMS ((void));
extern int initial_frame_pointer_offset PARAMS ((void));
extern void asm_output_common PARAMS ((FILE *, const char *, int, int));
extern void asm_output_local PARAMS ((FILE *, const char *, int, int));
extern void asm_output_float PARAMS ((FILE *, double));
extern void asm_output_long PARAMS ((FILE *, long));
extern void dsp16xx_file_start PARAMS ((void));
extern struct rtx_def *(*dsp16xx_compare_gen) PARAMS (());
extern int hard_regno_mode_ok PARAMS ((int, enum machine_mode));
extern enum reg_class dsp16xx_reg_class_from_letter PARAMS ((int));
extern int regno_reg_class PARAMS ((int));
extern void function_prologue PARAMS ((FILE *, int));
extern void function_epilogue PARAMS ((FILE *, int));

View File

@ -36,18 +36,21 @@ Boston, MA 02111-1307, USA. */
#include "function.h"
#include "flags.h"
#include "ggc.h"
#include "toplev.h"
#include "recog.h"
#include "tm_p.h"
char *text_seg_name;
char *rsect_text;
char *data_seg_name;
char *rsect_data;
char *bss_seg_name;
char *rsect_bss;
char *const_seg_name;
char *rsect_const;
const char *text_seg_name;
const char *rsect_text;
const char *data_seg_name;
const char *rsect_data;
const char *bss_seg_name;
const char *rsect_bss;
const char *const_seg_name;
const char *rsect_const;
char *chip_name;
char *save_chip_name;
const char *chip_name;
const char *save_chip_name;
/* Save the operands of a compare. The 16xx has not lt or gt, so
in these cases we swap the operands and reverse the condition */
@ -56,10 +59,10 @@ rtx dsp16xx_compare_op0;
rtx dsp16xx_compare_op1;
struct rtx_def *(*dsp16xx_compare_gen)();
static char *fp;
static char *sp;
static char *rr;
static char *a1h;
static const char *fp;
static const char *sp;
static const char *rr;
static const char *a1h;
struct dsp16xx_frame_info current_frame_info;
struct dsp16xx_frame_info zero_frame_info;
@ -87,14 +90,14 @@ rtx dsp16xx_ashlhi3_libcall = (rtx) 0;
rtx dsp16xx_ucmphi2_libcall = (rtx) 0;
rtx dsp16xx_lshrhi3_libcall = (rtx) 0;
char *himode_reg_name[] = HIMODE_REGISTER_NAMES;
static const char *const himode_reg_name[] = HIMODE_REGISTER_NAMES;
#define SHIFT_INDEX_1 0
#define SHIFT_INDEX_4 1
#define SHIFT_INDEX_8 2
#define SHIFT_INDEX_16 3
static char *ashift_right_asm[] =
static const char *const ashift_right_asm[] =
{
"%0=%0>>1",
"%0=%0>>4",
@ -102,7 +105,7 @@ static char *ashift_right_asm[] =
"%0=%0>>16"
};
static char *ashift_right_asm_first[] =
static const char *const ashift_right_asm_first[] =
{
"%0=%1>>1",
"%0=%1>>4",
@ -110,7 +113,7 @@ static char *ashift_right_asm_first[] =
"%0=%1>>16"
};
static char *ashift_left_asm[] =
static const char *const ashift_left_asm[] =
{
"%0=%0<<1",
"%0=%0<<4",
@ -118,7 +121,7 @@ static char *ashift_left_asm[] =
"%0=%0<<16"
};
static char *ashift_left_asm_first[] =
static const char *const ashift_left_asm_first[] =
{
"%0=%1<<1",
"%0=%1<<4",
@ -126,7 +129,7 @@ static char *ashift_left_asm_first[] =
"%0=%1<<16"
};
static char *lshift_right_asm[] =
static const char *const lshift_right_asm[] =
{
"%0=%0>>1\n\t%0=%b0&0x7fff",
"%0=%0>>4\n\t%0=%b0&0x0fff",
@ -134,7 +137,7 @@ static char *lshift_right_asm[] =
"%0=%0>>16\n\t%0=%b0&0x0000"
};
static char *lshift_right_asm_first[] =
static const char *const lshift_right_asm_first[] =
{
"%0=%1>>1\n\t%0=%b0&0x7fff",
"%0=%1>>4\n\t%0=%b0&0x0fff",
@ -142,10 +145,12 @@ static char *lshift_right_asm_first[] =
"%0=%1>>16\n\t%0=%b0&0x0000"
};
static int reg_save_size PARAMS ((void));
int
hard_regno_mode_ok (regno, mode)
int regno;
enum machine_mode mode;
int regno;
enum machine_mode mode;
{
switch ((int) mode)
{
@ -186,7 +191,7 @@ enum machine_mode mode;
enum reg_class
dsp16xx_reg_class_from_letter (c)
int c;
int c;
{
switch (c)
{
@ -272,7 +277,7 @@ int c;
int
regno_reg_class(regno)
int regno;
int regno;
{
switch (regno)
{
@ -345,16 +350,16 @@ int regno;
int
class_max_nregs(class, mode)
enum reg_class class;
enum machine_mode mode;
enum reg_class class ATTRIBUTE_UNUSED;
enum machine_mode mode;
{
return (GET_MODE_SIZE(mode));
}
enum reg_class
limit_reload_class (mode, class)
enum machine_mode mode;
enum reg_class class;
enum machine_mode mode;
enum reg_class class;
{
switch ((int) class)
{
@ -551,7 +556,7 @@ enum reg_class class;
int
dsp16xx_register_move_cost (from, to)
enum reg_class from, to;
enum reg_class from, to;
{
#if 0
if (from == NO_REGS || to == NO_REGS || (from == to))
@ -870,15 +875,15 @@ secondary_reload_class (class, mode, in)
int
symbolic_address_operand (op, mode)
rtx op;
enum machine_mode mode;
rtx op;
enum machine_mode mode ATTRIBUTE_UNUSED;
{
return (symbolic_address_p (op));
return (symbolic_address_p (op));
}
int symbolic_address_p (op)
rtx op;
int
symbolic_address_p (op)
rtx op;
{
switch (GET_CODE (op))
{
@ -904,16 +909,16 @@ rtx op;
int
Y_address_operand (op, mode)
rtx op;
enum machine_mode mode;
rtx op;
enum machine_mode mode;
{
return (memory_address_p (mode, op) && !symbolic_address_p (op));
return (memory_address_p (mode, op) && !symbolic_address_p (op));
}
int
sp_operand (op, mode)
rtx op;
enum machine_mode mode;
rtx op;
enum machine_mode mode ATTRIBUTE_UNUSED;
{
return (GET_CODE (op) == PLUS
&& (XEXP (op, 0) == stack_pointer_rtx
@ -923,8 +928,8 @@ enum machine_mode mode;
int
sp_operand2 (op, mode)
rtx op;
enum machine_mode mode;
rtx op;
enum machine_mode mode ATTRIBUTE_UNUSED;
{
if ((GET_CODE (op) == PLUS
&& (XEXP (op, 0) == stack_pointer_rtx
@ -944,16 +949,16 @@ enum machine_mode mode;
int
nonmemory_arith_operand (op, mode)
rtx op;
enum machine_mode mode;
rtx op;
enum machine_mode mode;
{
return (immediate_operand (op, mode) || arith_reg_operand (op, mode));
}
int
arith_reg_operand (op, mode)
rtx op;
enum machine_mode mode;
rtx op;
enum machine_mode mode;
{
return (register_operand (op, mode)
&& (GET_CODE (op) != REG
@ -964,8 +969,8 @@ enum machine_mode mode;
int
call_address_operand (op, mode)
rtx op;
enum machine_mode mode;
rtx op;
enum machine_mode mode ATTRIBUTE_UNUSED;
{
if (symbolic_address_p (op) || REG_P(op))
{
@ -988,7 +993,7 @@ dsp16xx_comparison_operator (op, mode)
void
notice_update_cc(exp)
rtx exp;
rtx exp;
{
if (GET_CODE (exp) == SET)
{
@ -1104,8 +1109,9 @@ dsp16xx_makes_calls ()
return 0;
}
long compute_frame_size (size)
int size;
long
compute_frame_size (size)
int size;
{
long total_size;
long var_size;
@ -1144,7 +1150,7 @@ int size;
int
dsp16xx_call_saved_register (regno)
int regno;
int regno;
{
return (regs_ever_live[regno] && !call_used_regs[regno] &&
!IS_YBASE_REGISTER_WINDOW(regno));
@ -1169,8 +1175,8 @@ ybase_regs_ever_used ()
void
function_prologue (file, size)
FILE *file;
int size;
FILE *file;
int size;
{
int regno;
long total_size;
@ -1182,14 +1188,14 @@ int size;
total_size = compute_frame_size (size);
fprintf( file, "\t/* FUNCTION PROLOGUE: */\n" );
fprintf (file, "\t/* total=%d, vars= %d, regs= %d, args=%d, extra= %d */\n",
fprintf (file, "\t/* total=%ld, vars= %ld, regs= %d, args=%d, extra= %ld */\n",
current_frame_info.total_size,
current_frame_info.var_size,
current_frame_info.reg_size,
current_function_outgoing_args_size,
current_frame_info.extra_size);
fprintf (file, "\t/* fp save offset= %d, sp save_offset= %d */\n\n",
fprintf (file, "\t/* fp save offset= %ld, sp save_offset= %ld */\n\n",
current_frame_info.fp_save_offset,
current_frame_info.sp_save_offset);
/* Set up the 'ybase' register window. */
@ -1217,7 +1223,7 @@ int size;
else
{
if(SMALL_INTVAL(current_frame_info.var_size) && ((current_frame_info.var_size & 0x8000) == 0))
fprintf (file, "\t%s=%d\n\t*%s++%s\n", reg_names[REG_J], current_frame_info.var_size, sp, reg_names[REG_J]);
fprintf (file, "\t%s=%ld\n\t*%s++%s\n", reg_names[REG_J], current_frame_info.var_size, sp, reg_names[REG_J]);
else
fatal ("Stack size > 32k");
}
@ -1244,7 +1250,7 @@ int size;
else
{
if(SMALL_INTVAL(current_frame_info.args_size) && ((current_frame_info.args_size & 0x8000) == 0))
fprintf (file, "\t%s=%d\n\t*%s++%s\n", reg_names[REG_J], current_frame_info.args_size, sp, reg_names[REG_J]);
fprintf (file, "\t%s=%ld\n\t*%s++%s\n", reg_names[REG_J], current_frame_info.args_size, sp, reg_names[REG_J]);
else
fatal ("Stack size > 32k");
}
@ -1254,7 +1260,7 @@ int size;
{
fprintf( file, "\t%s=%s\n", a1h, sp );
fprintf( file, "\t%s=%s\n", fp, a1h ); /* Establish new base frame */
fprintf( file, "\t%s=%d\n", reg_names[REG_J], -total_size);
fprintf( file, "\t%s=%ld\n", reg_names[REG_J], -total_size);
fprintf( file, "\t*%s++%s\n", fp, reg_names[REG_J]);
}
@ -1290,11 +1296,13 @@ init_emulation_routines ()
}
void
function_epilogue (file, size)
FILE *file;
int size;
FILE *file;
int size ATTRIBUTE_UNUSED;
{
int regno;
#if OLD_REGISTER_SAVE
int initial_stack_dec = 0;
#endif
fp = reg_names[FRAME_POINTER_REGNUM];
sp = reg_names[STACK_POINTER_REGNUM];
@ -1309,7 +1317,7 @@ int size;
fprintf (file, "\t*%s--\n", sp);
else
{
fprintf (file, "\t%s=%d\n\t*%s++%s\n",
fprintf (file, "\t%s=%ld\n\t*%s++%s\n",
reg_names[REG_J], -current_frame_info.args_size, sp, reg_names[REG_J]);
}
}
@ -1356,7 +1364,7 @@ int size;
fprintf (file, "\t*%s--\n", sp);
else
{
fprintf (file, "\t%s=%d\n\t*%s++%s\n",
fprintf (file, "\t%s=%ld\n\t*%s++%s\n",
reg_names[REG_J], -current_frame_info.var_size, sp, reg_names[REG_J]);
}
}
@ -1391,7 +1399,7 @@ emit_move_sequence (operands, mode)
void
double_reg_from_memory (operands)
rtx operands[];
rtx operands[];
{
rtx xoperands[4];
@ -1412,7 +1420,6 @@ rtx operands[];
else if (GET_CODE(XEXP(operands[1],0)) == PLUS)
{
rtx addr;
rtx base;
int offset;
output_asm_insn ("%u0=%1", operands);
@ -1440,7 +1447,7 @@ rtx operands[];
void
double_reg_to_memory (operands)
rtx operands[];
rtx operands[];
{
rtx xoperands[4];
@ -1491,6 +1498,8 @@ rtx operands[];
void
override_options ()
{
char *tmp;
if (chip_name == (char *) 0)
chip_name = DEFAULT_CHIP_NAME;
@ -1508,19 +1517,21 @@ override_options ()
save_chip_name = xstrdup (chip_name);
rsect_text = (char *) xmalloc (strlen(".rsect ") +
strlen(text_seg_name) + 3);
rsect_data = (char *) xmalloc (strlen(".rsect ") +
strlen(data_seg_name) + 3);
rsect_bss = (char *) xmalloc (strlen(".rsect ") +
strlen(bss_seg_name) + 3);
rsect_const = (char *) xmalloc (strlen(".rsect ") +
strlen(const_seg_name) + 3);
sprintf (rsect_text, ".rsect \"%s\"", text_seg_name);
sprintf (rsect_data, ".rsect \"%s\"", data_seg_name);
sprintf (rsect_bss, ".rsect \"%s\"", bss_seg_name);
sprintf (rsect_const, ".rsect \"%s\"", const_seg_name);
rsect_text = tmp = (char *) xmalloc (strlen(".rsect ") +
strlen(text_seg_name) + 3);
sprintf (tmp, ".rsect \"%s\"", text_seg_name);
rsect_data = tmp = (char *) xmalloc (strlen(".rsect ") +
strlen(data_seg_name) + 3);
sprintf (tmp, ".rsect \"%s\"", data_seg_name);
rsect_bss = tmp = (char *) xmalloc (strlen(".rsect ") +
strlen(bss_seg_name) + 3);
sprintf (tmp, ".rsect \"%s\"", bss_seg_name);
rsect_const = tmp = (char *) xmalloc (strlen(".rsect ") +
strlen(const_seg_name) + 3);
sprintf (tmp, ".rsect \"%s\"", const_seg_name);
if (optimize)
{
@ -1558,7 +1569,7 @@ override_options ()
enum rtx_code
next_cc_user_code (insn)
rtx insn;
rtx insn;
{
if ( !(insn = next_cc0_user (insn)))
abort ();
@ -1592,9 +1603,9 @@ next_cc_user_unsigned (insn)
void
print_operand(file, op, letter)
FILE *file;
rtx op;
int letter;
FILE *file;
rtx op;
int letter;
{
enum rtx_code code;
@ -1688,8 +1699,8 @@ int letter;
void
print_operand_address(file, addr)
FILE *file;
rtx addr;
FILE *file;
rtx addr;
{
rtx base;
int offset;
@ -1733,9 +1744,8 @@ rtx addr;
void
output_dsp16xx_float_const(operands)
rtx *operands;
rtx *operands;
{
rtx dst = operands[0];
rtx src = operands[1];
#if HOST_FLOAT_FORMAT == TARGET_FLOAT_FORMAT
@ -1752,7 +1762,7 @@ rtx *operands;
#endif
}
int
static int
reg_save_size ()
{
int reg_save_size = 0;
@ -1785,8 +1795,6 @@ dsp16xx_starting_frame_offset()
int
initial_frame_pointer_offset()
{
int frame_size;
int regno;
int offset = 0;
offset = compute_frame_size (get_frame_size());
@ -1804,10 +1812,10 @@ initial_frame_pointer_offset()
#if 0
void
emit_1600_core_shift (shift_op, operands, shift_amount, mode)
enum rtx_code shift_op;
rtx *operands;
int shift_amount;
enum machine_mode mode;
enum rtx_code shift_op;
rtx *operands;
int shift_amount;
enum machine_mode mode;
{
int quotient;
int i;
@ -1868,15 +1876,15 @@ enum machine_mode mode;
#else
void
emit_1600_core_shift (shift_op, operands, shift_amount)
enum rtx_code shift_op;
rtx *operands;
int shift_amount;
enum rtx_code shift_op;
rtx *operands;
int shift_amount;
{
int quotient;
int i;
int first_shift_emitted = 0;
char **shift_asm_ptr;
char **shift_asm_ptr_first;
const char * const *shift_asm_ptr;
const char * const *shift_asm_ptr_first;
if (shift_op == ASHIFT)
{
@ -1938,11 +1946,11 @@ int shift_amount;
}
#endif
void
asm_output_common(file, name, size, rounded)
FILE *file;
char *name;
int size;
int rounded;
asm_output_common(file, name, size, rounded)
FILE *file;
const char *name;
int size ATTRIBUTE_UNUSED;
int rounded;
{
bss_section ();
ASM_GLOBALIZE_LABEL (file, name);
@ -1956,10 +1964,10 @@ int rounded;
void
asm_output_local(file, name, size, rounded)
FILE *file;
char *name;
int size;
int rounded;
FILE *file;
const char *name;
int size ATTRIBUTE_UNUSED;
int rounded;
{
bss_section ();
assemble_name (file, name);
@ -1972,8 +1980,8 @@ int rounded;
void
asm_output_float (file, fp_const)
FILE *file;
double fp_const;
FILE *file;
double fp_const;
{
#if HOST_FLOAT_FORMAT == TARGET_FLOAT_FORMAT
REAL_VALUE_TYPE d = fp_const;
@ -1982,9 +1990,9 @@ double fp_const;
REAL_VALUE_TO_TARGET_SINGLE (d, value);
fputs ("\tint ", file);
#ifdef WORDS_BIG_ENDIAN
fprintf (file, "0x%-4.4x, 0x%-4.4x", (value >> 16) & 0xffff, (value & 0xffff));
fprintf (file, "0x%-4.4lx, 0x%-4.4lx", (value >> 16) & 0xffff, (value & 0xffff));
#else
fprintf (file, "0x%-4.4x, 0x%-4.4x", (value & 0xffff), (value >> 16) & 0xffff);
fprintf (file, "0x%-4.4lx, 0x%-4.4lx", (value & 0xffff), (value >> 16) & 0xffff);
#endif
fputs ("\n", file);
#else
@ -1994,21 +2002,21 @@ double fp_const;
void
asm_output_long (file, value)
FILE *file;
long value;
FILE *file;
long value;
{
fputs ("\tint ", file);
#ifdef WORDS_BIG_ENDIAN
fprintf (file, "0x%-4.4x, 0x%-4.4x", (value >> 16) & 0xffff, (value & 0xffff));
fprintf (file, "0x%-4.4lx, 0x%-4.4lx", (value >> 16) & 0xffff, (value & 0xffff));
#else
fprintf (file, "0x%-4.4x, 0x%-4.4x", (value & 0xffff), (value >> 16) & 0xffff);
fprintf (file, "0x%-4.4lx, 0x%-4.4lx", (value & 0xffff), (value >> 16) & 0xffff);
#endif
fputs ("\n", file);
}
int
dsp16xx_address_cost (addr)
rtx addr;
rtx addr;
{
switch (GET_CODE (addr))
{
@ -2129,7 +2137,7 @@ dsp16xx_function_arg_advance (cum, mode, type, named)
CUMULATIVE_ARGS *cum; /* current arg information */
enum machine_mode mode; /* current arg mode */
tree type; /* type of the argument or 0 if lib support */
int named; /* whether or not the argument was named */
int named ATTRIBUTE_UNUSED;/* whether or not the argument was named */
{
if (TARGET_REGPARM)
{
@ -2259,7 +2267,7 @@ gen_compare_reg (code, x, y)
return cc0_rtx;
}
char *
const char *
output_block_move (operands)
rtx operands[];
{

View File

@ -19,20 +19,18 @@ 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 char *low_reg_names[];
extern char *text_seg_name;
extern char *rsect_text;
extern char *data_seg_name;
extern char *rsect_data;
extern char *bss_seg_name;
extern char *rsect_bss;
extern char *const_seg_name;
extern char *rsect_const;
extern char *chip_name;
extern char *save_chip_name;
extern const char *low_reg_names[];
extern const char *text_seg_name;
extern const char *rsect_text;
extern const char *data_seg_name;
extern const char *rsect_data;
extern const char *bss_seg_name;
extern const char *rsect_bss;
extern const char *const_seg_name;
extern const char *rsect_const;
extern const char *chip_name;
extern const char *save_chip_name;
extern struct rtx_def *dsp16xx_compare_op0, *dsp16xx_compare_op1;
extern struct rtx_def *(*dsp16xx_compare_gen)();
extern struct rtx_def *gen_compare_reg();
extern struct rtx_def *dsp16xx_addhf3_libcall;
extern struct rtx_def *dsp16xx_subhf3_libcall;
extern struct rtx_def *dsp16xx_mulhf3_libcall;
@ -56,29 +54,6 @@ extern struct rtx_def *dsp16xx_ashrhi3_libcall;
extern struct rtx_def *dsp16xx_ashlhi3_libcall;
extern struct rtx_def *dsp16xx_lshrhi3_libcall;
extern int hard_regno_mode_ok ();
extern enum reg_class dsp16xx_reg_class_from_letter ();
extern enum reg_class dsp16xx_limit_reload_class ();
extern int hard_regno_nregs ();
extern int regno_reg_class ();
extern int move_operand ();
extern int symbolic_address_p ();
extern int Y_address ();
extern int call_address_operand ();
extern void notice_update_cc();
extern void function_prologue ();
extern void function_epilogue ();
extern int dsp1600_comparison_reverse ();
extern void double_reg_from_memory ();
extern void double_reg_to_memory ();
extern struct rtx_def *dsp16xx_function_arg ();
extern void dsp16xx_function_arg_advance ();
extern enum rtx_code next_cc_user_code ();
extern int next_cc_user_unsigned ();
extern struct rtx_def *gen_tst_reg ();
extern char *output_block_move();
/* RUN-TIME TARGET SPECIFICATION */
#define DSP16XX 1
@ -1671,11 +1646,11 @@ const_section () \
#define ASM_OUTPUT_ASCII(MYFILE, MYSTRING, MYLENGTH) \
do { \
FILE *_hide_asm_out_file = (MYFILE); \
unsigned char *_hide_p = (unsigned char *) (MYSTRING); \
const unsigned char *_hide_p = (const unsigned char *) (MYSTRING); \
int _hide_thissize = (MYLENGTH); \
{ \
FILE *asm_out_file = _hide_asm_out_file; \
unsigned char *p = _hide_p; \
const unsigned char *p = _hide_p; \
int thissize = _hide_thissize; \
int i; \
\
@ -1970,4 +1945,3 @@ const_section () \
are not currently supporting c++. */
#define INIT_SECTION_ASM_OP 1
void dsp16xx_invalid_register_for_compare ();

View File

@ -117,6 +117,8 @@
case 2:
return \"%0&%H1\";
default:
abort();
}
}"
[(set_attr "type" "f3_alu,malu,f3_alu_i")])
@ -405,6 +407,8 @@
case 7:
return \"%3=%2\;*%0++%3\";
default:
abort();
}
}")
@ -485,6 +489,8 @@
case 3:
case 4:
return \"%m0=%m1-%m2\";
default:
abort();
}
}")
@ -921,6 +927,8 @@
case 8:
case 9:
return \"\";
default:
abort();
}
}"
[(set_attr "type" "move,move,load_i,load_i,load,store,load,store,move,move")])
@ -986,6 +994,8 @@
case 9: case 10:
return \"%0=%1\";
default:
abort();
}
}")
@ -1032,6 +1042,8 @@
case 9: case 10:
return \"%0=%1\";
default:
abort();
}
}")
@ -1187,6 +1199,8 @@
case 5:
case 6:
return \"%u0=%u1\;%w0=%w1\";
default:
abort();
}
}"
[(set_attr "type" "move,move,load_i,load,store,load,store")])