Commit 0ef5dce6 by Richard Stallman

(ASM_OUTPUT_FLOAT, ASM_OUTPUT_DOUBLE)

(ASM_OUTPUT_FLOAT, ASM_OUTPUT_DOUBLE)
(ASM_OUTPUT_FLOAT_OPERAND, ASM_OUTPUT_DOUBLE_OPERAND):
Use REAL_VALUE... macros.

From-SVN: r3977
parent 1861262d
/* next.h: definitions for NeXT. /* next.h: definitions for NeXT.
Copyright (c) 1993 Free Software Foundation, Inc.
This file is part of GNU CC. This file is part of GNU CC.
...@@ -185,29 +186,69 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ ...@@ -185,29 +186,69 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#undef ASM_OUTPUT_DOUBLE #undef ASM_OUTPUT_DOUBLE
#define ASM_OUTPUT_DOUBLE(FILE,VALUE) \ #define ASM_OUTPUT_DOUBLE(FILE,VALUE) \
(REAL_VALUE_ISINF ((VALUE)) \ do { if (REAL_VALUE_ISINF (VALUE)) \
? fprintf (FILE, "\t.double 0r%s99e999\n", ((VALUE) > 0 ? "" : "-")) \ { \
: fprintf (FILE, "\t.double 0r%.20e\n", (VALUE))) if (REAL_VALUE_NEGATIVE (VALUE)) \
fprintf (FILE, "\t.double 0r-99e999\n"); \
else \
fprintf (FILE, "\t.double 0r99e999\n"); \
} \
else \
{ char dstr[30]; \
REAL_VALUE_TO_DECIMAL ((VALUE), "%.20e", dstr); \
fprintf (FILE, "\t.double 0r%s\n", dstr); \
} \
} while (0)
/* This is how to output an assembler line defining a `float' constant. */ /* This is how to output an assembler line defining a `float' constant. */
#undef ASM_OUTPUT_FLOAT #undef ASM_OUTPUT_FLOAT
#define ASM_OUTPUT_FLOAT(FILE,VALUE) \ #define ASM_OUTPUT_FLOAT(FILE,VALUE) \
(REAL_VALUE_ISINF ((VALUE)) \ do { if (REAL_VALUE_ISINF (VALUE)) \
? fprintf (FILE, "\t.single 0r%s99e999\n", ((VALUE) > 0 ? "" : "-")) \ { \
: fprintf (FILE, "\t.single 0r%.20e\n", (VALUE))) if (REAL_VALUE_NEGATIVE (VALUE)) \
fprintf (FILE, "\t.single 0r-99e999\n"); \
else \
fprintf (FILE, "\t.single 0r99e999\n"); \
} \
else \
{ char dstr[30]; \
REAL_VALUE_TO_DECIMAL ((VALUE), "%.20e", dstr); \
fprintf (FILE, "\t.single 0r%s\n", dstr); \
} \
} while (0)
#undef ASM_OUTPUT_FLOAT_OPERAND #undef ASM_OUTPUT_FLOAT_OPERAND
#define ASM_OUTPUT_FLOAT_OPERAND(FILE,VALUE) \ #define ASM_OUTPUT_FLOAT_OPERAND(CODE,FILE,VALUE) \
(REAL_VALUE_ISINF ((VALUE)) \ do{ if (REAL_VALUE_ISINF (VALUE)) \
? fprintf (FILE, "#0r%s99e999", ((VALUE) > 0 ? "" : "-")) \ { \
: fprintf (FILE, "#0r%.9g", (VALUE))) if (REAL_VALUE_NEGATIVE (VALUE)) \
fprintf (FILE, "#0r-99e999"); \
else \
fprintf (FILE, "#0r99e999"); \
} \
else \
{ char dstr[30]; \
REAL_VALUE_TO_DECIMAL ((VALUE), "%.9g", dstr); \
fprintf (FILE, "#0r%s", dstr); \
} \
} while (0)
#undef ASM_OUTPUT_DOUBLE_OPERAND #undef ASM_OUTPUT_DOUBLE_OPERAND
#define ASM_OUTPUT_DOUBLE_OPERAND(FILE,VALUE) \ #define ASM_OUTPUT_DOUBLE_OPERAND(FILE,VALUE) \
(REAL_VALUE_ISINF ((VALUE)) \ do { if (REAL_VALUE_ISINF (VALUE)) \
? fprintf (FILE, "#0r%s99e999", ((VALUE) > 0 ? "" : "-")) \ { \
: fprintf (FILE, "#0r%.20g", (VALUE))) if (REAL_VALUE_NEGATIVE (VALUE)) \
fprintf (FILE, "#0r-99e999"); \
else \
fprintf (FILE, "#0r99e999"); \
} \
else \
{ char dstr[30]; \
REAL_VALUE_TO_DECIMAL ((VALUE), "%.20g", dstr); \
fprintf (FILE, "#0r%s", dstr); \
} \
} while (0)
#if 0 /* This is for system verson 3.0, which isn't out yet. */ #if 0 /* This is for system verson 3.0, which isn't out yet. */
#define ASM_OUTPUT_CONSTRUCTOR(FILE,NAME) \ #define ASM_OUTPUT_CONSTRUCTOR(FILE,NAME) \
......
/* Definitions of target machine for GNU compiler. Sun 2 running Sunos 4. /* Definitions of target machine for GNU compiler. Sun 2 running Sunos 4.
Copyright (C) 1987, 1988 Free Software Foundation, Inc. Copyright (C) 1987, 1988, 1993 Free Software Foundation, Inc.
This file is part of GNU CC. This file is part of GNU CC.
...@@ -97,34 +97,82 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ ...@@ -97,34 +97,82 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#undef ASM_OUTPUT_DOUBLE #undef ASM_OUTPUT_DOUBLE
#define ASM_OUTPUT_DOUBLE(FILE,VALUE) \ #define ASM_OUTPUT_DOUBLE(FILE,VALUE) \
(REAL_VALUE_ISINF ((VALUE)) \ do { if (REAL_VALUE_ISINF (VALUE)) \
? fprintf (FILE, "\t.double 0r%s99e999\n", ((VALUE) > 0 ? "" : "-")) \ { \
: REAL_VALUE_MINUS_ZERO ((VALUE)) \ if (REAL_VALUE_NEGATIVE (VALUE)) \
? fprintf (FILE, "\t.long 0x80000000,0\n") \ fprintf (FILE, "\t.double 0r-99e999\n"); \
: fprintf (FILE, "\t.double 0r%.20e\n", (VALUE))) else \
fprintf (FILE, "\t.double 0r99e999\n"); \
} \
else if (REAL_VALUE_MINUS_ZERO (VALUE)) \
{ \
fprintf (FILE, "\t.long 0x80000000,0\n"); \
} \
else \
{ char dstr[30]; \
REAL_VALUE_TO_DECIMAL ((VALUE), "%.20e", dstr); \
fprintf (FILE, "\t.double 0r%s\n", dstr); \
} \
} while (0)
/* This is how to output an assembler line defining a `float' constant. */ /* This is how to output an assembler line defining a `float' constant. */
#undef ASM_OUTPUT_FLOAT #undef ASM_OUTPUT_FLOAT
#define ASM_OUTPUT_FLOAT(FILE,VALUE) \ #define ASM_OUTPUT_FLOAT(FILE,VALUE) \
(REAL_VALUE_ISINF ((VALUE)) \ do { if (REAL_VALUE_ISINF (VALUE)) \
? fprintf (FILE, "\t.single 0r%s99e999\n", ((VALUE) > 0 ? "" : "-")) \ { \
: REAL_VALUE_MINUS_ZERO ((VALUE)) \ if (REAL_VALUE_NEGATIVE (VALUE)) \
? fprintf (FILE, "\t.long 0x80000000\n") \ fprintf (FILE, "\t.single 0r-99e999\n"); \
: fprintf (FILE, "\t.single 0r%.20e\n", (VALUE))) else \
fprintf (FILE, "\t.single 0r99e999\n"); \
} \
else if (REAL_VALUE_MINUS_ZERO (VALUE)) \
{ \
fprintf (FILE, "\t.long 0x80000000\n"); \
} \
else \
{ char dstr[30]; \
REAL_VALUE_TO_DECIMAL ((VALUE), "%.20e", dstr); \
fprintf (FILE, "\t.single 0r%s\n", dstr); \
} \
} while (0)
#undef ASM_OUTPUT_FLOAT_OPERAND #undef ASM_OUTPUT_FLOAT_OPERAND
#define ASM_OUTPUT_FLOAT_OPERAND(FILE,VALUE) \ #define ASM_OUTPUT_FLOAT_OPERAND(CODE,FILE,VALUE) \
(REAL_VALUE_ISINF ((VALUE)) \ do { if (REAL_VALUE_ISINF (VALUE)) \
? fprintf (FILE, "#0r%s99e999", ((VALUE) > 0 ? "" : "-")) \ { \
: REAL_VALUE_MINUS_ZERO ((VALUE)) \ if (REAL_VALUE_NEGATIVE (VALUE)) \
? fprintf (FILE, "#0r-0.0") \ fprintf (FILE, "#0r-99e999"); \
: fprintf (FILE, "#0r%.9g", (VALUE))) else \
fprintf (FILE, "#0r99e999"); \
} \
else if (REAL_VALUE_MINUS_ZERO (VALUE)) \
{ \
fprintf (FILE, "#0r-0.0"); \
} \
else \
{ char dstr[30]; \
REAL_VALUE_TO_DECIMAL ((VALUE), "%.9g", dstr); \
fprintf (FILE, "#0r%s", dstr); \
} \
} while (0)
#undef ASM_OUTPUT_DOUBLE_OPERAND #undef ASM_OUTPUT_DOUBLE_OPERAND
#define ASM_OUTPUT_DOUBLE_OPERAND(FILE,VALUE) \ #define ASM_OUTPUT_DOUBLE_OPERAND(FILE,VALUE) \
(REAL_VALUE_ISINF ((VALUE)) \ do { if (REAL_VALUE_ISINF (VALUE)) \
? fprintf (FILE, "#0r%s99e999", ((VALUE) > 0 ? "" : "-")) \ { \
: REAL_VALUE_MINUS_ZERO ((VALUE)) \ if (REAL_VALUE_NEGATIVE (VALUE)) \
? fprintf (FILE, "#0r-0.0") \ fprintf (FILE, "#0r-99e999"); \
: fprintf (FILE, "#0r%.20g", (VALUE))) else \
fprintf (FILE, "#0r99e999"); \
} \
else if (REAL_VALUE_MINUS_ZERO (VALUE)) \
{ \
fprintf (FILE, "#0r-0.0"); \
} \
else \
{ char dstr[30]; \
REAL_VALUE_TO_DECIMAL ((VALUE), "%.20g", dstr); \
fprintf (FILE, "#0r%s", dstr); \
} \
} while (0)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment