OSDN Git Service

Initial revision
authordje <dje@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 17 Nov 1994 21:59:01 +0000 (21:59 +0000)
committerdje <dje@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 17 Nov 1994 21:59:01 +0000 (21:59 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@8487 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/config/a29k/udi.h [new file with mode: 0644]
gcc/config/gofast.h [new file with mode: 0644]

diff --git a/gcc/config/a29k/udi.h b/gcc/config/a29k/udi.h
new file mode 100644 (file)
index 0000000..6d28de0
--- /dev/null
@@ -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)
diff --git a/gcc/config/gofast.h b/gcc/config/gofast.h
new file mode 100644 (file)
index 0000000..cc793f3
--- /dev/null
@@ -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 */