From: Mark Klein <mklein@dis.com>
To: law@cygnus.com
Cc: gcc@gcc.gnu.org
Subject: Re: MPE Port
Date: Mon, 06 Sep 1999 10:39:00 -0000 [thread overview]
Message-ID: <4.1.19990906102304.00c72c80@garfield.dis.com> (raw)
Sat Sep 4 18:00:00 PDT 1999 Mark Klein (mklein@dis.com)
* pa/pa-mpeix.h: New file for MPE port.
*** egcs/gcc/config/pa/pa-mpeix.h Wed Dec 31 16:00:00 1969
--- egcs-ss/gcc/config/pa/pa-mpeix.h Mon Aug 30 21:52:06 1999
***************
*** 0 ****
--- 1,240 ----
+ /* Definitions of target machine for GNU compiler, for MPEiX.
+ Contributed by Mark Klein <mklein@dis.com>
+ Copyright (C) 1998 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. */
+
+ #undef TARGET_DEFAULT
+ #define TARGET_DEFAULT (MASK_GAS | MASK_JUMP_IN_DELAY | MASK_USE_MILLICODE)
+
+ /* MPE (as of MPE/iX 6.5) still uses older millicode than HP-UX. */
+ #undef TARGET_NEW_MILLICODE
+ #define TARGET_NEW_MILLICODE 0
+
+ /* Make GCC agree with types.h. */
+ #undef SIZE_TYPE
+ #undef PTRDIFF_TYPE
+
+ #define SIZE_TYPE "unsigned int"
+ #define PTRDIFF_TYPE "int"
+
+ #undef LINK_SPEC
+ #define LINK_SPEC ""
+
+ #undef LIB_SPEC
+ #define LIB_SPEC "%{!p:%{!pg:%{!threads:-lc}}}%{p:-lc_p}%{pg:-lc_p}
%{threads:/SYS/PUB/start.o -WL,xl=threadxl.pub.sys}"
+
+ #undef CPP_PREDEFINES
+ #define CPP_PREDEFINES "-Dhppa -Dhp3000s900 -D__hp3000s900 -Dhp3k9
-Dmpeix -Dhp3000 -DREVARGV -Asystem(mpeix) -Acpu(hppa) -Amachine(hppa)"
+
+ #undef LDD_SUFFIX
+
+ /* Readonly data on MPE must be in $DATA$ to be available across
+ space boundaries for the intrinsic mechanism.
+ */
+ #undef SELECT_RTX_SECTION
+ #define SELECT_RTX_SECTION(MODE,RTX) data_section ();
+
+ #undef READONLY_DATA_ASM_OP
+ #define READONLY_DATA_ASM_OP "\t.SPACE $PRIVATE$\n\t.SUBSPA $DATA$\n"
+
+ /* Ugly hack, but I don't see any other way.
+ * Gotta enable the <Control Y> traps, otherwise SIG_INT won't work.
+ */
+ #undef DO_GLOBAL_CTORS_BODY
+ #define DO_GLOBAL_CTORS_BODY \
+ do { \
+ extern __MPEArmSubsystemBreak(); \
+ unsigned long nptrs = (unsigned long) __CTOR_LIST__[0]; \
+ unsigned i; \
+ if (nptrs == -1) \
+ for (nptrs = 0; __CTOR_LIST__[nptrs + 1] != 0; nptrs++); \
+ for (i = nptrs; i >= 1; i--) \
+ __CTOR_LIST__[i] (); \
+ __MPEArmSubsystemBreak(); \
+ } while (0)
+
+ /* HPUX needs gcc_plt_call for gdb. Since gdb is not yet running on
+ * MPE and I think that gcc_plt_call will need an MPE variant, use
+ * the following in lieu of the DO_GLOBAL_DTORS_BODY declared in pa.h
+ */
+ #undef DO_GLOBAL_DTORS_BODY
+ #define DO_GLOBAL_DTORS_BODY \
+ do { \
+ func_ptr *p; \
+ for (p = __DTOR_LIST__ + 1; *p; ) \
+ (*p++) (); \
+ } while (0)
+
+
+ /* Gotta worry about priv_lev on MPE, so this is different from
+ * the HP-UX defn.
+ */
+ #undef ASM_DECLARE_FUNCTION_NAME
+ #define ASM_DECLARE_FUNCTION_NAME(FILE, NAME, DECL) \
+ do { tree fntype = TREE_TYPE (TREE_TYPE (DECL)); \
+ tree tree_type = TREE_TYPE (DECL); \
+ tree parm; \
+ int i; \
+ if (TREE_PUBLIC (DECL) || TARGET_GAS) \
+ { extern int current_function_varargs; \
+ if (TREE_PUBLIC (DECL)) \
+ { \
+ fputs ("\t.EXPORT ", FILE); \
+ assemble_name (FILE, NAME); \
+ fputs (",ENTRY,PRIV_LEV=3", FILE); \
+ } \
+ else \
+ { \
+ fputs ("\t.PARAM ", FILE); \
+ assemble_name (FILE, NAME); \
+ fputs (",PRIV_LEV=3", FILE); \
+ } \
+ if (TARGET_PORTABLE_RUNTIME) \
+ { \
+ fputs (",ARGW0=NO,ARGW1=NO,ARGW2=NO,ARGW3=NO,", FILE); \
+ fputs ("RTNVAL=NO\n", FILE); \
+ break; \
+ } \
+ for (parm = DECL_ARGUMENTS (DECL), i = 0; parm && i < 4; \
+ parm = TREE_CHAIN (parm)) \
+ { \
+ if (TYPE_MODE (DECL_ARG_TYPE (parm)) == SFmode \
+ && ! TARGET_SOFT_FLOAT) \
+ fprintf (FILE, ",ARGW%d=FR", i++); \
+ else if (TYPE_MODE (DECL_ARG_TYPE (parm)) == DFmode \
+ && ! TARGET_SOFT_FLOAT) \
+ { \
+ if (i <= 2) \
+ { \
+ if (i == 1) i++; \
+ ASM_DOUBLE_ARG_DESCRIPTORS (FILE, i++, i++); \
+ } \
+ else \
+ break; \
+ } \
+ else \
+ { \
+ int arg_size = \
+ FUNCTION_ARG_SIZE (TYPE_MODE (DECL_ARG_TYPE (parm)),\
+ DECL_ARG_TYPE (parm)); \
+ /* Passing structs by invisible reference uses \
+ one general register. */ \
+ if (arg_size > 2 \
+ || TREE_ADDRESSABLE (DECL_ARG_TYPE (parm))) \
+ arg_size = 1; \
+ if (arg_size == 2 && i <= 2) \
+ { \
+ if (i == 1) i++; \
+ fprintf (FILE, ",ARGW%d=GR", i++); \
+ fprintf (FILE, ",ARGW%d=GR", i++); \
+ } \
+ else if (arg_size == 1) \
+ fprintf (FILE, ",ARGW%d=GR", i++); \
+ else \
+ i += arg_size; \
+ } \
+ } \
+ /* anonymous args */ \
+ if ((TYPE_ARG_TYPES (tree_type) != 0 \
+ && (TREE_VALUE (tree_last (TYPE_ARG_TYPES (tree_type)))\
+ != void_type_node)) \
+ || current_function_varargs) \
+ { \
+ for (; i < 4; i++) \
+ fprintf (FILE, ",ARGW%d=GR", i); \
+ } \
+ if (TYPE_MODE (fntype) == DFmode && ! TARGET_SOFT_FLOAT) \
+ fputs (DFMODE_RETURN_STRING, FILE); \
+ else if (TYPE_MODE (fntype) == SFmode && ! TARGET_SOFT_FLOAT) \
+ fputs (SFMODE_RETURN_STRING, FILE); \
+ else if (fntype != void_type_node) \
+ fputs (",RTNVAL=GR", FILE); \
+ fputs ("\n", FILE); \
+ }} while (0)
+
+ /* This is another ugly hack. Compilation units must be named
+ * if we ever want to extract them by name. Since making libgcc
+ * does this, I added a new pseudo command .compiler that is used
+ * to communicate the names to gas.
+ */
+ #undef ASM_IDENTIFY_GCC
+ #define ASM_IDENTIFY_GCC(FILE) \
+ do { \
+ fputs ("; gcc_compiled.:\n", FILE); \
+ fprintf (FILE, "\t.compiler \"%s %s %s\"\n", \
+ main_input_filename, \
+ "GNU_C_Compiler", \
+ version_string); \
+ } while (0)
+
+
+ /*
+ * Long double support for MPE. The Quad functions are part of the PRO
+ * ABI, but it appears that I'm the only one interested in Quad support
+ * on PA, so I'll declare and support it only for MPE.
+ */
+ #undef LONG_DOUBLE_TYPE_SIZE
+ #define LONG_DOUBLE_TYPE_SIZE 128
+
+ /* This is how to output an assembler line defining a `long double'
constant. */
+
+ #undef ASM_OUTPUT_LONG_DOUBLE
+ #define ASM_OUTPUT_LONG_DOUBLE(FILE,VALUE) \
+ do { long l[4]; \
+ REAL_VALUE_TO_TARGET_LONG_DOUBLE (VALUE, l); \
+ fprintf (FILE, "\t.word 0x%lx\n\t.word 0x%lx\n", l[0], l[1]); \
+ fprintf (FILE, "\t.word 0x%lx\n\t.word 0x%lx\n", l[2], l[3]); \
+ } while (0)
+
+ #undef INIT_TARGET_OPTABS
+ #define INIT_TARGET_OPTABS \
+ do { \
+ add_optab->handlers[(int) TFmode].libfunc \
+ = gen_rtx_SYMBOL_REF (Pmode, ADDTF3_LIBCALL); \
+ sub_optab->handlers[(int) TFmode].libfunc \
+ = gen_rtx_SYMBOL_REF (Pmode, SUBTF3_LIBCALL); \
+ smul_optab->handlers[(int) TFmode].libfunc \
+ = gen_rtx_SYMBOL_REF (Pmode, MULTF3_LIBCALL); \
+ flodiv_optab->handlers[(int) TFmode].libfunc \
+ = gen_rtx_SYMBOL_REF (Pmode, DIVTF3_LIBCALL); \
+ neg_optab->handlers[(int) TFmode].libfunc \
+ = gen_rtx_SYMBOL_REF (Pmode, NEGTF2_LIBCALL); \
+ eqtf2_libfunc = gen_rtx_SYMBOL_REF (Pmode, EQTF2_LIBCALL); \
+ netf2_libfunc = gen_rtx_SYMBOL_REF (Pmode, NETF2_LIBCALL); \
+ gttf2_libfunc = gen_rtx_SYMBOL_REF (Pmode, GTTF2_LIBCALL); \
+ getf2_libfunc = gen_rtx_SYMBOL_REF (Pmode, GETF2_LIBCALL); \
+ lttf2_libfunc = gen_rtx_SYMBOL_REF (Pmode, LTTF2_LIBCALL); \
+ letf2_libfunc = gen_rtx_SYMBOL_REF (Pmode, LETF2_LIBCALL); \
+ trunctfsf2_libfunc = gen_rtx_SYMBOL_REF (Pmode, TRUNCTFSF2_LIBCALL); \
+ trunctfdf2_libfunc = gen_rtx_SYMBOL_REF (Pmode, TRUNCTFDF2_LIBCALL); \
+ extendsftf2_libfunc = gen_rtx_SYMBOL_REF (Pmode, EXTENDSFTF2_LIBCALL); \
+ extenddftf2_libfunc = gen_rtx_SYMBOL_REF (Pmode, EXTENDDFTF2_LIBCALL); \
+ floatsitf_libfunc = gen_rtx_SYMBOL_REF (Pmode, FLOATSITF2_LIBCALL); \
+ floatditf_libfunc = gen_rtx_SYMBOL_REF (Pmode, FLOATDITF2_LIBCALL); \
+ fixtfsi_libfunc = gen_rtx_SYMBOL_REF (Pmode, FIX_TRUNCTFSI2_LIBCALL); \
+ fixtfdi_libfunc = gen_rtx_SYMBOL_REF (Pmode, FIX_TRUNCTFDI2_LIBCALL); \
+ fixunstfsi_libfunc \
+ = gen_rtx_SYMBOL_REF (Pmode, FIXUNS_TRUNCTFSI2_LIBCALL); \
+ fixunstfdi_libfunc \
+ = gen_rtx_SYMBOL_REF (Pmode, FIXUNS_TRUNCTFDI2_LIBCALL); \
+ sqrt_optab->handlers[(int) TFmode].libfunc \
+ = gen_rtx_SYMBOL_REF (Pmode, "_U_Qfsqrt"); \
+ } while (0)
+
+ #undef TARGET_VERSION
+ #define TARGET_VERSION fputs (" (hppa - MPE Threaded)", stderr);
--
Mark Klein DIS International, Ltd.
http://www.dis.com 415-892-8400
PGP Public Key Available
WARNING: multiple messages have this Message-ID
From: Mark Klein <mklein@dis.com>
To: law@cygnus.com
Cc: gcc@gcc.gnu.org
Subject: Re: MPE Port
Date: Thu, 30 Sep 1999 18:02:00 -0000 [thread overview]
Message-ID: <4.1.19990906102304.00c72c80@garfield.dis.com> (raw)
Message-ID: <19990930180200.Jut5jlDDcvbSvwCevTif9DegaDISiZjHD0h8WlshKPQ@z> (raw)
Sat Sep 4 18:00:00 PDT 1999 Mark Klein (mklein@dis.com)
* pa/pa-mpeix.h: New file for MPE port.
*** egcs/gcc/config/pa/pa-mpeix.h Wed Dec 31 16:00:00 1969
--- egcs-ss/gcc/config/pa/pa-mpeix.h Mon Aug 30 21:52:06 1999
***************
*** 0 ****
--- 1,240 ----
+ /* Definitions of target machine for GNU compiler, for MPEiX.
+ Contributed by Mark Klein <mklein@dis.com>
+ Copyright (C) 1998 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. */
+
+ #undef TARGET_DEFAULT
+ #define TARGET_DEFAULT (MASK_GAS | MASK_JUMP_IN_DELAY | MASK_USE_MILLICODE)
+
+ /* MPE (as of MPE/iX 6.5) still uses older millicode than HP-UX. */
+ #undef TARGET_NEW_MILLICODE
+ #define TARGET_NEW_MILLICODE 0
+
+ /* Make GCC agree with types.h. */
+ #undef SIZE_TYPE
+ #undef PTRDIFF_TYPE
+
+ #define SIZE_TYPE "unsigned int"
+ #define PTRDIFF_TYPE "int"
+
+ #undef LINK_SPEC
+ #define LINK_SPEC ""
+
+ #undef LIB_SPEC
+ #define LIB_SPEC "%{!p:%{!pg:%{!threads:-lc}}}%{p:-lc_p}%{pg:-lc_p}
%{threads:/SYS/PUB/start.o -WL,xl=threadxl.pub.sys}"
+
+ #undef CPP_PREDEFINES
+ #define CPP_PREDEFINES "-Dhppa -Dhp3000s900 -D__hp3000s900 -Dhp3k9
-Dmpeix -Dhp3000 -DREVARGV -Asystem(mpeix) -Acpu(hppa) -Amachine(hppa)"
+
+ #undef LDD_SUFFIX
+
+ /* Readonly data on MPE must be in $DATA$ to be available across
+ space boundaries for the intrinsic mechanism.
+ */
+ #undef SELECT_RTX_SECTION
+ #define SELECT_RTX_SECTION(MODE,RTX) data_section ();
+
+ #undef READONLY_DATA_ASM_OP
+ #define READONLY_DATA_ASM_OP "\t.SPACE $PRIVATE$\n\t.SUBSPA $DATA$\n"
+
+ /* Ugly hack, but I don't see any other way.
+ * Gotta enable the <Control Y> traps, otherwise SIG_INT won't work.
+ */
+ #undef DO_GLOBAL_CTORS_BODY
+ #define DO_GLOBAL_CTORS_BODY \
+ do { \
+ extern __MPEArmSubsystemBreak(); \
+ unsigned long nptrs = (unsigned long) __CTOR_LIST__[0]; \
+ unsigned i; \
+ if (nptrs == -1) \
+ for (nptrs = 0; __CTOR_LIST__[nptrs + 1] != 0; nptrs++); \
+ for (i = nptrs; i >= 1; i--) \
+ __CTOR_LIST__[i] (); \
+ __MPEArmSubsystemBreak(); \
+ } while (0)
+
+ /* HPUX needs gcc_plt_call for gdb. Since gdb is not yet running on
+ * MPE and I think that gcc_plt_call will need an MPE variant, use
+ * the following in lieu of the DO_GLOBAL_DTORS_BODY declared in pa.h
+ */
+ #undef DO_GLOBAL_DTORS_BODY
+ #define DO_GLOBAL_DTORS_BODY \
+ do { \
+ func_ptr *p; \
+ for (p = __DTOR_LIST__ + 1; *p; ) \
+ (*p++) (); \
+ } while (0)
+
+
+ /* Gotta worry about priv_lev on MPE, so this is different from
+ * the HP-UX defn.
+ */
+ #undef ASM_DECLARE_FUNCTION_NAME
+ #define ASM_DECLARE_FUNCTION_NAME(FILE, NAME, DECL) \
+ do { tree fntype = TREE_TYPE (TREE_TYPE (DECL)); \
+ tree tree_type = TREE_TYPE (DECL); \
+ tree parm; \
+ int i; \
+ if (TREE_PUBLIC (DECL) || TARGET_GAS) \
+ { extern int current_function_varargs; \
+ if (TREE_PUBLIC (DECL)) \
+ { \
+ fputs ("\t.EXPORT ", FILE); \
+ assemble_name (FILE, NAME); \
+ fputs (",ENTRY,PRIV_LEV=3", FILE); \
+ } \
+ else \
+ { \
+ fputs ("\t.PARAM ", FILE); \
+ assemble_name (FILE, NAME); \
+ fputs (",PRIV_LEV=3", FILE); \
+ } \
+ if (TARGET_PORTABLE_RUNTIME) \
+ { \
+ fputs (",ARGW0=NO,ARGW1=NO,ARGW2=NO,ARGW3=NO,", FILE); \
+ fputs ("RTNVAL=NO\n", FILE); \
+ break; \
+ } \
+ for (parm = DECL_ARGUMENTS (DECL), i = 0; parm && i < 4; \
+ parm = TREE_CHAIN (parm)) \
+ { \
+ if (TYPE_MODE (DECL_ARG_TYPE (parm)) == SFmode \
+ && ! TARGET_SOFT_FLOAT) \
+ fprintf (FILE, ",ARGW%d=FR", i++); \
+ else if (TYPE_MODE (DECL_ARG_TYPE (parm)) == DFmode \
+ && ! TARGET_SOFT_FLOAT) \
+ { \
+ if (i <= 2) \
+ { \
+ if (i == 1) i++; \
+ ASM_DOUBLE_ARG_DESCRIPTORS (FILE, i++, i++); \
+ } \
+ else \
+ break; \
+ } \
+ else \
+ { \
+ int arg_size = \
+ FUNCTION_ARG_SIZE (TYPE_MODE (DECL_ARG_TYPE (parm)),\
+ DECL_ARG_TYPE (parm)); \
+ /* Passing structs by invisible reference uses \
+ one general register. */ \
+ if (arg_size > 2 \
+ || TREE_ADDRESSABLE (DECL_ARG_TYPE (parm))) \
+ arg_size = 1; \
+ if (arg_size == 2 && i <= 2) \
+ { \
+ if (i == 1) i++; \
+ fprintf (FILE, ",ARGW%d=GR", i++); \
+ fprintf (FILE, ",ARGW%d=GR", i++); \
+ } \
+ else if (arg_size == 1) \
+ fprintf (FILE, ",ARGW%d=GR", i++); \
+ else \
+ i += arg_size; \
+ } \
+ } \
+ /* anonymous args */ \
+ if ((TYPE_ARG_TYPES (tree_type) != 0 \
+ && (TREE_VALUE (tree_last (TYPE_ARG_TYPES (tree_type)))\
+ != void_type_node)) \
+ || current_function_varargs) \
+ { \
+ for (; i < 4; i++) \
+ fprintf (FILE, ",ARGW%d=GR", i); \
+ } \
+ if (TYPE_MODE (fntype) == DFmode && ! TARGET_SOFT_FLOAT) \
+ fputs (DFMODE_RETURN_STRING, FILE); \
+ else if (TYPE_MODE (fntype) == SFmode && ! TARGET_SOFT_FLOAT) \
+ fputs (SFMODE_RETURN_STRING, FILE); \
+ else if (fntype != void_type_node) \
+ fputs (",RTNVAL=GR", FILE); \
+ fputs ("\n", FILE); \
+ }} while (0)
+
+ /* This is another ugly hack. Compilation units must be named
+ * if we ever want to extract them by name. Since making libgcc
+ * does this, I added a new pseudo command .compiler that is used
+ * to communicate the names to gas.
+ */
+ #undef ASM_IDENTIFY_GCC
+ #define ASM_IDENTIFY_GCC(FILE) \
+ do { \
+ fputs ("; gcc_compiled.:\n", FILE); \
+ fprintf (FILE, "\t.compiler \"%s %s %s\"\n", \
+ main_input_filename, \
+ "GNU_C_Compiler", \
+ version_string); \
+ } while (0)
+
+
+ /*
+ * Long double support for MPE. The Quad functions are part of the PRO
+ * ABI, but it appears that I'm the only one interested in Quad support
+ * on PA, so I'll declare and support it only for MPE.
+ */
+ #undef LONG_DOUBLE_TYPE_SIZE
+ #define LONG_DOUBLE_TYPE_SIZE 128
+
+ /* This is how to output an assembler line defining a `long double'
constant. */
+
+ #undef ASM_OUTPUT_LONG_DOUBLE
+ #define ASM_OUTPUT_LONG_DOUBLE(FILE,VALUE) \
+ do { long l[4]; \
+ REAL_VALUE_TO_TARGET_LONG_DOUBLE (VALUE, l); \
+ fprintf (FILE, "\t.word 0x%lx\n\t.word 0x%lx\n", l[0], l[1]); \
+ fprintf (FILE, "\t.word 0x%lx\n\t.word 0x%lx\n", l[2], l[3]); \
+ } while (0)
+
+ #undef INIT_TARGET_OPTABS
+ #define INIT_TARGET_OPTABS \
+ do { \
+ add_optab->handlers[(int) TFmode].libfunc \
+ = gen_rtx_SYMBOL_REF (Pmode, ADDTF3_LIBCALL); \
+ sub_optab->handlers[(int) TFmode].libfunc \
+ = gen_rtx_SYMBOL_REF (Pmode, SUBTF3_LIBCALL); \
+ smul_optab->handlers[(int) TFmode].libfunc \
+ = gen_rtx_SYMBOL_REF (Pmode, MULTF3_LIBCALL); \
+ flodiv_optab->handlers[(int) TFmode].libfunc \
+ = gen_rtx_SYMBOL_REF (Pmode, DIVTF3_LIBCALL); \
+ neg_optab->handlers[(int) TFmode].libfunc \
+ = gen_rtx_SYMBOL_REF (Pmode, NEGTF2_LIBCALL); \
+ eqtf2_libfunc = gen_rtx_SYMBOL_REF (Pmode, EQTF2_LIBCALL); \
+ netf2_libfunc = gen_rtx_SYMBOL_REF (Pmode, NETF2_LIBCALL); \
+ gttf2_libfunc = gen_rtx_SYMBOL_REF (Pmode, GTTF2_LIBCALL); \
+ getf2_libfunc = gen_rtx_SYMBOL_REF (Pmode, GETF2_LIBCALL); \
+ lttf2_libfunc = gen_rtx_SYMBOL_REF (Pmode, LTTF2_LIBCALL); \
+ letf2_libfunc = gen_rtx_SYMBOL_REF (Pmode, LETF2_LIBCALL); \
+ trunctfsf2_libfunc = gen_rtx_SYMBOL_REF (Pmode, TRUNCTFSF2_LIBCALL); \
+ trunctfdf2_libfunc = gen_rtx_SYMBOL_REF (Pmode, TRUNCTFDF2_LIBCALL); \
+ extendsftf2_libfunc = gen_rtx_SYMBOL_REF (Pmode, EXTENDSFTF2_LIBCALL); \
+ extenddftf2_libfunc = gen_rtx_SYMBOL_REF (Pmode, EXTENDDFTF2_LIBCALL); \
+ floatsitf_libfunc = gen_rtx_SYMBOL_REF (Pmode, FLOATSITF2_LIBCALL); \
+ floatditf_libfunc = gen_rtx_SYMBOL_REF (Pmode, FLOATDITF2_LIBCALL); \
+ fixtfsi_libfunc = gen_rtx_SYMBOL_REF (Pmode, FIX_TRUNCTFSI2_LIBCALL); \
+ fixtfdi_libfunc = gen_rtx_SYMBOL_REF (Pmode, FIX_TRUNCTFDI2_LIBCALL); \
+ fixunstfsi_libfunc \
+ = gen_rtx_SYMBOL_REF (Pmode, FIXUNS_TRUNCTFSI2_LIBCALL); \
+ fixunstfdi_libfunc \
+ = gen_rtx_SYMBOL_REF (Pmode, FIXUNS_TRUNCTFDI2_LIBCALL); \
+ sqrt_optab->handlers[(int) TFmode].libfunc \
+ = gen_rtx_SYMBOL_REF (Pmode, "_U_Qfsqrt"); \
+ } while (0)
+
+ #undef TARGET_VERSION
+ #define TARGET_VERSION fputs (" (hppa - MPE Threaded)", stderr);
--
Mark Klein DIS International, Ltd.
http://www.dis.com 415-892-8400
PGP Public Key Available
next reply other threads:[~1999-09-06 10:39 UTC|newest]
Thread overview: 96+ messages / expand[flat|nested] mbox.gz Atom feed top
1999-09-06 10:39 Mark Klein [this message]
1999-09-07 3:20 ` Jeffrey A Law
1999-09-07 6:46 ` Mark Klein
1999-09-08 0:43 ` Jeffrey A Law
1999-09-30 18:02 ` Jeffrey A Law
1999-09-30 18:02 ` Mark Klein
1999-09-30 18:02 ` Jeffrey A Law
1999-09-30 18:02 ` Mark Klein
-- strict thread matches above, loose matches on Subject: below --
1999-09-07 8:42 Mark Klein
1999-09-30 18:02 ` Mark Klein
1999-10-25 22:41 ` Jeffrey A Law
1999-10-26 7:03 ` Mark Klein
1999-10-26 19:12 ` Jeffrey A Law
1999-10-26 19:52 ` Mark Klein
1999-10-31 23:35 ` Mark Klein
1999-10-31 23:35 ` Jeffrey A Law
1999-10-31 23:35 ` Mark Klein
1999-10-31 23:35 ` Jeffrey A Law
1999-09-06 10:40 Mark Klein
1999-09-08 1:41 ` Jeffrey A Law
1999-09-08 6:37 ` Mark Klein
1999-09-30 18:02 ` Mark Klein
1999-09-30 18:02 ` Jeffrey A Law
1999-09-30 18:02 ` Mark Klein
1999-09-06 10:40 Mark Klein
1999-09-08 1:39 ` Jeffrey A Law
1999-09-08 6:35 ` Mark Klein
1999-09-15 2:52 ` Jeffrey A Law
1999-09-15 8:26 ` Mark Klein
1999-09-30 18:02 ` Mark Klein
1999-09-30 18:02 ` Jeffrey A Law
1999-09-30 18:02 ` Mark Klein
1999-09-30 18:02 ` Jeffrey A Law
1999-09-30 18:02 ` Mark Klein
1999-09-06 10:40 Mark Klein
1999-09-08 1:49 ` Jeffrey A Law
1999-09-08 20:31 ` Mark Klein
1999-09-30 18:02 ` Mark Klein
1999-09-30 18:02 ` Jeffrey A Law
1999-09-30 18:02 ` Mark Klein
1999-09-06 10:40 Mark Klein
1999-09-30 18:02 ` Mark Klein
1999-10-25 22:32 ` Jeffrey A Law
1999-10-26 6:51 ` Mark Klein
1999-10-26 19:05 ` Jeffrey A Law
1999-10-26 19:21 ` Mark Klein
1999-10-31 23:35 ` Mark Klein
1999-10-31 23:35 ` Jeffrey A Law
1999-10-31 23:35 ` Mark Klein
1999-10-31 23:35 ` Jeffrey A Law
1999-09-06 10:40 Mark Klein
1999-09-30 18:02 ` Mark Klein
1999-09-06 10:40 Mark Klein
1999-09-07 2:38 ` Jeffrey A Law
1999-09-07 6:39 ` Mark Klein
1999-09-08 0:45 ` Jeffrey A Law
1999-09-08 20:04 ` Mark Klein
1999-09-15 2:47 ` Jeffrey A Law
1999-09-15 8:32 ` Mark Klein
1999-09-30 18:02 ` Mark Klein
1999-09-30 18:02 ` Jeffrey A Law
1999-10-09 20:18 ` Mark Klein
1999-10-14 4:03 ` Jeffrey A Law
1999-10-14 7:20 ` Mark Klein
1999-10-14 10:45 ` Jeffrey A Law
1999-10-14 11:05 ` Mark Klein
1999-10-31 23:35 ` Mark Klein
1999-10-31 23:35 ` Jeffrey A Law
1999-10-31 23:35 ` Mark Klein
1999-10-31 23:35 ` Jeffrey A Law
1999-10-31 23:35 ` Mark Klein
1999-11-08 19:34 ` Mark Klein
1999-11-08 19:54 ` Jeffrey A Law
1999-11-09 6:52 ` Mark Klein
1999-11-30 23:37 ` Mark Klein
1999-11-30 23:37 ` Jeffrey A Law
1999-11-30 23:37 ` Mark Klein
1999-09-30 18:02 ` Mark Klein
1999-09-30 18:02 ` Jeffrey A Law
1999-09-30 18:02 ` Mark Klein
1999-09-30 18:02 ` Jeffrey A Law
1999-09-30 18:02 ` Mark Klein
1999-09-06 10:40 Mark Klein
1999-09-08 1:40 ` Jeffrey A Law
1999-09-30 18:02 ` Jeffrey A Law
1999-09-30 18:02 ` Mark Klein
1999-09-06 10:40 Mark Klein
1999-09-30 18:02 ` Mark Klein
1999-09-06 10:40 Mark Klein
1999-09-30 18:02 ` Mark Klein
1999-09-06 10:39 Mark Klein
1999-09-30 18:02 ` Mark Klein
1999-09-06 10:39 Mark Klein
1999-09-30 18:02 ` Mark Klein
1999-08-27 17:20 HARD_REGNO_MODE_OK on PA-RISC (revisited) Mark Klein
1999-08-29 3:19 ` Jeffrey A Law
1999-09-06 10:39 ` MPE Port Mark Klein
1999-09-30 18:02 ` Mark Klein
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4.1.19990906102304.00c72c80@garfield.dis.com \
--to=mklein@dis.com \
--cc=gcc@gcc.gnu.org \
--cc=law@cygnus.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).