Initial revision
From-SVN: r8487
This commit is contained in:
parent
338023d4cb
commit
627b12bc5b
95
gcc/config/a29k/udi.h
Normal file
95
gcc/config/a29k/udi.h
Normal file
@ -0,0 +1,95 @@
|
||||
/* Definitions of target machine for GNU compiler, for AMD Am29000 CPU
|
||||
running over UDI using COFF.
|
||||
Copyright (C) 1994 Free Software Foundation, Inc.
|
||||
|
||||
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, 675 Mass Ave, Cambridge, MA 02139, USA. */
|
||||
|
||||
#include "a29k/a29k.h"
|
||||
|
||||
/* Support the ctors and dtors sections for g++. */
|
||||
|
||||
#define CTORS_SECTION_ASM_OP "\t.use .ctors"
|
||||
#define DTORS_SECTION_ASM_OP "\t.use .dtors"
|
||||
|
||||
/* A list of other sections which the compiler might be "in" at any
|
||||
given time. */
|
||||
|
||||
#undef EXTRA_SECTIONS
|
||||
#define EXTRA_SECTIONS readonly_data, in_ctors, in_dtors
|
||||
|
||||
/* A list of extra section function definitions. */
|
||||
|
||||
#undef EXTRA_SECTION_FUNCTIONS
|
||||
#define EXTRA_SECTION_FUNCTIONS \
|
||||
READONLY_DATA_FUNCTION \
|
||||
CTORS_SECTION_FUNCTION \
|
||||
DTORS_SECTION_FUNCTION
|
||||
|
||||
#define READONLY_DATA_FUNCTION \
|
||||
void \
|
||||
literal_section () \
|
||||
{ \
|
||||
if (in_section != readonly_data) \
|
||||
{ \
|
||||
fprintf (asm_out_file, "%s\n", READONLY_DATA_SECTION_ASM_OP); \
|
||||
in_section = readonly_data; \
|
||||
} \
|
||||
} \
|
||||
|
||||
#define CTORS_SECTION_FUNCTION \
|
||||
void \
|
||||
ctors_section () \
|
||||
{ \
|
||||
if (in_section != in_ctors) \
|
||||
{ \
|
||||
fprintf (asm_out_file, "%s\n", CTORS_SECTION_ASM_OP); \
|
||||
in_section = in_ctors; \
|
||||
} \
|
||||
}
|
||||
|
||||
#define DTORS_SECTION_FUNCTION \
|
||||
void \
|
||||
dtors_section () \
|
||||
{ \
|
||||
if (in_section != in_dtors) \
|
||||
{ \
|
||||
fprintf (asm_out_file, "%s\n", DTORS_SECTION_ASM_OP); \
|
||||
in_section = in_dtors; \
|
||||
} \
|
||||
}
|
||||
|
||||
#define INT_ASM_OP ".word"
|
||||
|
||||
/* A C statement (sans semicolon) to output an element in the table of
|
||||
global constructors. */
|
||||
#define ASM_OUTPUT_CONSTRUCTOR(FILE,NAME) \
|
||||
do { \
|
||||
ctors_section (); \
|
||||
fprintf (FILE, "\t%s\t ", INT_ASM_OP); \
|
||||
assemble_name (FILE, NAME); \
|
||||
fprintf (FILE, "\n"); \
|
||||
} while (0)
|
||||
|
||||
/* A C statement (sans semicolon) to output an element in the table of
|
||||
global destructors. */
|
||||
#define ASM_OUTPUT_DESTRUCTOR(FILE,NAME) \
|
||||
do { \
|
||||
dtors_section (); \
|
||||
fprintf (FILE, "\t%s\t ", INT_ASM_OP); \
|
||||
assemble_name (FILE, NAME); \
|
||||
fprintf (FILE, "\n"); \
|
||||
} while (0)
|
95
gcc/config/gofast.h
Normal file
95
gcc/config/gofast.h
Normal file
@ -0,0 +1,95 @@
|
||||
/* US Software GOFAST floating point library support.
|
||||
Copyright (C) 1994 Free Software Foundation, Inc.
|
||||
|
||||
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, 675 Mass Ave, Cambridge, MA 02139, USA. */
|
||||
|
||||
/* This is used by fp-bit.c. */
|
||||
#define US_SOFTWARE_GOFAST
|
||||
|
||||
/* The US Software GOFAST library requires special optabs support.
|
||||
There is no negation libcall, and several others have names different
|
||||
from gcc. This file consolidates the support in one place.
|
||||
|
||||
The basic plan is to leave gcc proper alone and via some hook fix things
|
||||
after the optabs have been set up. Our main entry point is
|
||||
INIT_GOFAST_OPTABS. */
|
||||
|
||||
#define INIT_GOFAST_OPTABS \
|
||||
do { \
|
||||
GOFAST_CLEAR_NEG_FLOAT_OPTAB; \
|
||||
GOFAST_RENAME_LIBCALLS; \
|
||||
} while (0)
|
||||
|
||||
#define GOFAST_CLEAR_NEG_FLOAT_OPTAB \
|
||||
do { \
|
||||
int mode; \
|
||||
for (mode = SFmode; (int) mode <= (int) TFmode; \
|
||||
mode = (enum machine_mode) ((int) mode + 1)) \
|
||||
neg_optab->handlers[(int) mode].libfunc = NULL_RTX; \
|
||||
} while (0)
|
||||
|
||||
#define GOFAST_RENAME_LIBCALLS \
|
||||
add_optab->handlers[(int) SFmode].libfunc = gen_rtx (SYMBOL_REF, Pmode, "fpadd"); \
|
||||
add_optab->handlers[(int) DFmode].libfunc = gen_rtx (SYMBOL_REF, Pmode, "dpadd"); \
|
||||
sub_optab->handlers[(int) SFmode].libfunc = gen_rtx (SYMBOL_REF, Pmode, "fpsub"); \
|
||||
sub_optab->handlers[(int) DFmode].libfunc = gen_rtx (SYMBOL_REF, Pmode, "dpsub"); \
|
||||
smul_optab->handlers[(int) SFmode].libfunc = gen_rtx (SYMBOL_REF, Pmode, "fpmul"); \
|
||||
smul_optab->handlers[(int) DFmode].libfunc = gen_rtx (SYMBOL_REF, Pmode, "dpmul"); \
|
||||
flodiv_optab->handlers[(int) SFmode].libfunc = gen_rtx (SYMBOL_REF, Pmode, "fpdiv"); \
|
||||
flodiv_optab->handlers[(int) DFmode].libfunc = gen_rtx (SYMBOL_REF, Pmode, "dpdiv"); \
|
||||
cmp_optab->handlers[(int) SFmode].libfunc = gen_rtx (SYMBOL_REF, Pmode, "fpcmp"); \
|
||||
cmp_optab->handlers[(int) DFmode].libfunc = gen_rtx (SYMBOL_REF, Pmode, "dpcmp"); \
|
||||
\
|
||||
extendsfdf2_libfunc = gen_rtx (SYMBOL_REF, Pmode, "fptodp"); \
|
||||
truncdfsf2_libfunc = gen_rtx (SYMBOL_REF, Pmode, "dptofp"); \
|
||||
\
|
||||
eqsf2_libfunc = gen_rtx (SYMBOL_REF, Pmode, "fpcmp"); \
|
||||
nesf2_libfunc = gen_rtx (SYMBOL_REF, Pmode, "fpcmp"); \
|
||||
gtsf2_libfunc = gen_rtx (SYMBOL_REF, Pmode, "fpcmp"); \
|
||||
gesf2_libfunc = gen_rtx (SYMBOL_REF, Pmode, "fpcmp"); \
|
||||
ltsf2_libfunc = gen_rtx (SYMBOL_REF, Pmode, "fpcmp"); \
|
||||
lesf2_libfunc = gen_rtx (SYMBOL_REF, Pmode, "fpcmp"); \
|
||||
\
|
||||
eqdf2_libfunc = gen_rtx (SYMBOL_REF, Pmode, "dpcmp"); \
|
||||
nedf2_libfunc = gen_rtx (SYMBOL_REF, Pmode, "dpcmp"); \
|
||||
gtdf2_libfunc = gen_rtx (SYMBOL_REF, Pmode, "dpcmp"); \
|
||||
gedf2_libfunc = gen_rtx (SYMBOL_REF, Pmode, "dpcmp"); \
|
||||
ltdf2_libfunc = gen_rtx (SYMBOL_REF, Pmode, "dpcmp"); \
|
||||
ledf2_libfunc = gen_rtx (SYMBOL_REF, Pmode, "dpcmp"); \
|
||||
\
|
||||
eqxf2_libfunc = NULL_RTX; \
|
||||
nexf2_libfunc = NULL_RTX; \
|
||||
gtxf2_libfunc = NULL_RTX; \
|
||||
gexf2_libfunc = NULL_RTX; \
|
||||
ltxf2_libfunc = NULL_RTX; \
|
||||
lexf2_libfunc = NULL_RTX; \
|
||||
\
|
||||
eqtf2_libfunc = NULL_RTX; \
|
||||
netf2_libfunc = NULL_RTX; \
|
||||
gttf2_libfunc = NULL_RTX; \
|
||||
getf2_libfunc = NULL_RTX; \
|
||||
lttf2_libfunc = NULL_RTX; \
|
||||
letf2_libfunc = NULL_RTX; \
|
||||
\
|
||||
floatsisf_libfunc = gen_rtx (SYMBOL_REF, Pmode, "sitofp"); \
|
||||
floatsidf_libfunc = gen_rtx (SYMBOL_REF, Pmode, "litodp"); \
|
||||
fixsfsi_libfunc = gen_rtx (SYMBOL_REF, Pmode, "fptosi"); \
|
||||
fixdfsi_libfunc = gen_rtx (SYMBOL_REF, Pmode, "dptoli"); \
|
||||
fixunssfsi_libfunc = gen_rtx (SYMBOL_REF, Pmode, "fptoui"); \
|
||||
fixunsdfsi_libfunc = gen_rtx (SYMBOL_REF, Pmode, "dptoul"); \
|
||||
|
||||
/* End of GOFAST_RENAME_LIBCALLS */
|
Loading…
Reference in New Issue
Block a user