This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Irix6 long doubles implemented wrong? (27_io/ostream_inserter_arith)


Kaveh R. Ghazi writes:

> I think it's obvious some are comparison operators.  The ones with
> __q_flot* seem to be integer conversions, but I'm not sure what each
> one does specifically.

There's the MIPS Processor ABI Conformance Guide Version 3.0 Draft 4
(dated: July 18, 1997) a.k.a. The Black Book.  It used to be available from
www.mipsabi.org, but this site has been closed down when the MIPS ABI group
dissolved.  I couldn't locate a copy on the Web, but have a local copy
here.  Maybe SGI could make it available again?  Their Dave Anderson has
always been quite helpful getting all sorts of ABI and toolset information.

Here's the relevant section from Appendix D: Platform Implementation Notes,
D4-5:

Support for long double Datatype
NOTE
The routines described here are for support of a 128-bit (quad-word) long double datatype in the 64-bit 3
ABI. The 32-bit ABI uses a 64-bit long double and does not require these routines.
Figure D-3: libc Contents, Internal Routines for long double Support
__q_add __q_div __q_eq __q_ext 3
__q_extd __q_floti __q_flotj __q_flotju 3
__q_flotk __q_flotku __q_ge __q_gt 3
__q_le __q_lt __q_mul __q_ne 3
__q_neg __q_sub __sngl_q __dble_q 3
__ii_qint __ji_qint __ji_quint __ki_qint 3
__ki_quint _qtoa 3
Data Definitions for long double Datatype
The following prototypes are provided for system implementors. They do not appear in any standard system 3
header file.

Figure D-4: Prototypes for Internal long double Support Routines
long double __q_add( double, double, double, double ); 3
long double __q_div( double, double, double, double ); 3
int32_t __q_eq( double, double, double, double ); 3
long double __q_ext( float ); 3
long double __q_extd( double ); 3
long double __q_floti( int16_t ); 3
long double __q_flotj( int32_t ); 3
long double __q_flotju( uint32_t ); 3
long double __q_flotk( int64_t ); 3
long double __q_flotku( uint64_t ); 3
int32_t __q_ge( double, double, double, double ); 3
int32_t __q_gt( double, double, double, double ); 3
int32_t __q_le( double, double, double, double ); 3
int32_t __q_lt( double, double, double, double ); 3
long double __q_mul( double, double, double, double ); 3
int32_t __q_ne( double, double, double, double ); 3
long double __q_neg( double, double ); 3
long double __q_sub( double, double, double, double ); 3
float __sngl_q( double, double ); 3
double __dble_q( double, double ); 3
int16_t __ii_qint( double, double ); 3
int32_t __ji_qint( double, double ); 3
uint32_t __ji_quint( double, double ); 3
int64_t __ki_qint( double, double ); 3
uint64_t __ki_quint( double, double ); 3
int _qtoa( char *, int, long double, int ); 3

This is all I've been able to locate in publicly available documentation.

	Rainer

-----------------------------------------------------------------------------
Rainer Orth, Faculty of Technology, Bielefeld University


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]