public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* HPUX IA64 longdouble changes
@ 2002-11-06 14:19 Steve Ellcey
  2002-11-14 10:10 ` Jim Wilson
  0 siblings, 1 reply; 2+ messages in thread
From: Steve Ellcey @ 2002-11-06 14:19 UTC (permalink / raw)
  To: gcc-patches

This patch is to fix the conversion of long doubles to unsigned
integers.  The original code was using the standard signed integer
conversion, this change is to use unsigned integer conversion routines
(from HP-UX libc).

This patch also gets rid of some bogus changes to udiv_optab,
sdiv_optab, smod_optab, and umod_optab that are in the same file.  For
some reason I was zeroing out the functions that did these operations
for SImode and thus forcing us to use the DImode operations.  I think
this was a temporary hack from some time ago and it is no longer needed
and should not be there.

Steve Ellcey
sje@cup.hp.com

2002-11-06  Steve Ellcey  <sje@cup.hp.com>

	* config/ia64/hpux_longdouble.h (FIXUNS_TRUNCTFSI2_LIBCALL): New.
	(FIXUNS_TRUNCTFDI2_LIBCALL): New.
	(fixunstfsi_libfunc): Change.
	(fixunstfdi_libfunc): Change.
	(sdiv_optab): Don't zero out SImode handler.
	(udiv_optab): Don't zero out SImode handler.
	(smod_optab): Don't zero out SImode handler.
	(umod_optab): Don't zero out SImode handler.

*** gcc.orig/gcc/config/ia64/hpux_longdouble.h	Wed Nov  6 14:03:09 2002
--- gcc/gcc/config/ia64/hpux_longdouble.h	Wed Nov  6 14:03:27 2002
*************** Boston, MA 02111-1307, USA.  */
*** 41,46 ****
--- 41,48 ----
  #define FLOATDITF2_LIBCALL "_U_Qfcnvxf_dbl_to_quad"
  #define FIX_TRUNCTFSI2_LIBCALL "_U_Qfcnvfxt_quad_to_sgl"
  #define FIX_TRUNCTFDI2_LIBCALL "_U_Qfcnvfxt_quad_to_dbl"
+ #define FIXUNS_TRUNCTFSI2_LIBCALL "_U_Qfcnvfxut_quad_to_sgl"
+ #define FIXUNS_TRUNCTFDI2_LIBCALL "_U_Qfcnvfxut_quad_to_dbl"
  #define EQTF2_LIBCALL "_U_Qfeq"
  #define NETF2_LIBCALL "_U_Qfne"
  #define GTTF2_LIBCALL "_U_Qfgt"
*************** Boston, MA 02111-1307, USA.  */
*** 76,94 ****
      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, FIX_TRUNCTFSI2_LIBCALL);  \
!     fixunstfdi_libfunc = gen_rtx_SYMBOL_REF (Pmode, FIX_TRUNCTFDI2_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);		\
- 									\
-   sdiv_optab->handlers[(int) SImode].libfunc = 0;                       \
-   udiv_optab->handlers[(int) SImode].libfunc = 0;                       \
-   smod_optab->handlers[(int) SImode].libfunc = 0;                       \
-   umod_optab->handlers[(int) SImode].libfunc = 0;                       \
  									\
      INIT_SUBTARGET_OPTABS;						\
    } while (0)
--- 78,91 ----
      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);  \
      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);		\
  									\
      INIT_SUBTARGET_OPTABS;						\
    } while (0)

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: HPUX IA64 longdouble changes
  2002-11-06 14:19 HPUX IA64 longdouble changes Steve Ellcey
@ 2002-11-14 10:10 ` Jim Wilson
  0 siblings, 0 replies; 2+ messages in thread
From: Jim Wilson @ 2002-11-14 10:10 UTC (permalink / raw)
  To: sje; +Cc: gcc-patches

> some reason I was zeroing out the functions that did these operations
> for SImode and thus forcing us to use the DImode operations.  I think
> this was a temporary hack from some time ago and it is no longer needed
> and should not be there.

This is because the original lib1funcs.asm file did not have working SImode
divide routines.  This was fixed by Richard Henderson 2000-09-05, so this
has indeed been obsolete for quite a while now.

> 	* config/ia64/hpux_longdouble.h (FIXUNS_TRUNCTFSI2_LIBCALL): New.
> 	(FIXUNS_TRUNCTFDI2_LIBCALL): New.
>	...

OK.

Jim

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2002-11-14 18:10 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-11-06 14:19 HPUX IA64 longdouble changes Steve Ellcey
2002-11-14 10:10 ` Jim Wilson

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).