[gnu.gcc] IEEE extended-precision long doubles for the 68881

self@BAYES.ARC.NASA.GOV (Matthew Self) (11/24/88)

  I am currently implementing 80-bit IEEE long doubles in gcc for
machines with a 68881/2.  I have finished the tedium of adding a new
machine mode (XF for extended float), updating the m68k machine
description, and adding code to perform mode widening from float to
long double and double to long double in addition to float to double,
but I now face the difficult task of integrating this new code with
the existing compiler.  The first major problem is the representation
of long double constants.  Since we cannot assume that the native
compiler provides extended float arithmetic, we must simulate it (or
perhaps go through a very complicated bootstrap process).  Simulation
brings in all of the issues of cross-compilers.

fold-const.c:

/*@@ This file should be rewritten to use an arbitrary precision
  @@ representation for "struct tree_int_cst" and "struct tree_real_cst".
  @@ Perhaps the routines could also be used for bc/dc, and made a lib.
  @@ The routines that translate from the ap rep should
  @@ warn if precision et. al. is lost.
  @@ This would also make life easier when this technology is used
  @@ for cross-compilers.  */

  Has anyone started this project? (Perhaps someone interested in
cross-compilers.)  If not, I will dig in, but I haven't received my
copy of the ANSI standard yet, so I'm not quite sure what the rules
are for constant folding....  For example, can constant folding be
performed with higher (infinite) precision than the target machine
would have used?  Also, does IEEE say anything about this kind of
thing (similar to the extra precision of the 68881 and subsequent
double rounding causes non-compliance with IEEE).  It might be
important to have constant folding done in IEEE format as well as
run-time arithmetic. (??)

  Comments... Help...

			Matthew Self
		  NASA Ames Research Center
		   self@bayes.arc.nasa.gov