Commit 303d524a by Jim Wilson

(ASM_LONG, ASM_SHORT, ASM_BYTE_OP): Definitions added.

(ASM_OUTPUT_DOUBLE):  Use REAL_VALUE_TO_TARGET_DOUBLE to convert.
(ASM_OUTPUT_FLOAT):  Use REAL_VALUE_TO_TARGET_SINGLE to convert.
(ASM_OUTPUT_INT):  Use ASM_LONG pseudo-op.
(ASM_OUTPUT_SHORT):  Use ASM_SHORT pseudo-op.
(ASM_OUTPUT_CHAR):  Use ASM_BYTE_OP pseudo-op.
(ASM_OUTPUT_BYTE):  Use ASM_BYTE_OP pseudo-op.

From-SVN: r1692
parent c2fb4581
...@@ -1439,6 +1439,10 @@ extern struct rtx_def *legitimize_pic_address (); ...@@ -1439,6 +1439,10 @@ extern struct rtx_def *legitimize_pic_address ();
#define ASM_APP_OFF "" #define ASM_APP_OFF ""
#define ASM_LONG ".word"
#define ASM_SHORT ".half"
#define ASM_BYTE_OP ".byte"
/* Output before read-only data. */ /* Output before read-only data. */
#define TEXT_SECTION_ASM_OP ".text" #define TEXT_SECTION_ASM_OP ".text"
...@@ -1536,14 +1540,14 @@ extern struct rtx_def *legitimize_pic_address (); ...@@ -1536,14 +1540,14 @@ extern struct rtx_def *legitimize_pic_address ();
They reject 99e9999, but accept inf. */ They reject 99e9999, but accept inf. */
#define ASM_OUTPUT_DOUBLE(FILE,VALUE) \ #define ASM_OUTPUT_DOUBLE(FILE,VALUE) \
{ \ { \
if (REAL_VALUE_ISINF (VALUE)) \ if (REAL_VALUE_ISINF (VALUE) \
fprintf (FILE, "\t.double 0r%sinf\n", (VALUE) > 0 ? "" : "-"); \ || REAL_VALUE_ISNAN (VALUE) \
else if (REAL_VALUE_ISNAN (VALUE) \ || REAL_VALUE_MINUS_ZERO (VALUE)) \
|| REAL_VALUE_MINUS_ZERO (VALUE)) \
{ \ { \
union { double d; long l[2];} t; \ long t[2]; \
t.d = (VALUE); \ REAL_VALUE_TO_TARGET_DOUBLE ((VALUE), t); \
fprintf (FILE, "\t.word 0x%lx\n\t.word 0x%lx\n", t.l[0], t.l[1]); \ fprintf (FILE, "\t%s\t0x%lx\n\t%s\t0x%lx\n", \
ASM_LONG, t[0], ASM_LONG, t[1]); \
} \ } \
else \ else \
fprintf (FILE, "\t.double 0r%.17g\n", VALUE); \ fprintf (FILE, "\t.double 0r%.17g\n", VALUE); \
...@@ -1553,14 +1557,13 @@ extern struct rtx_def *legitimize_pic_address (); ...@@ -1553,14 +1557,13 @@ extern struct rtx_def *legitimize_pic_address ();
#define ASM_OUTPUT_FLOAT(FILE,VALUE) \ #define ASM_OUTPUT_FLOAT(FILE,VALUE) \
{ \ { \
if (REAL_VALUE_ISINF (VALUE)) \ if (REAL_VALUE_ISINF (VALUE) \
fprintf (FILE, "\t.single 0r%sinf\n", (VALUE) > 0 ? "" : "-"); \ || REAL_VALUE_ISNAN (VALUE) \
else if (REAL_VALUE_ISNAN (VALUE) \ || REAL_VALUE_MINUS_ZERO (VALUE)) \
|| REAL_VALUE_MINUS_ZERO (VALUE)) \
{ \ { \
union { float f; long l;} t; \ long t; \
t.f = (VALUE); \ REAL_VALUE_TO_TARGET_SINGLE ((VALUE), t); \
fprintf (FILE, "\t.word 0x%lx\n", t.l); \ fprintf (FILE, "\t%s\t0x%lx\n", ASM_LONG, t); \
} \ } \
else \ else \
fprintf (FILE, "\t.single 0r%.9g\n", VALUE); \ fprintf (FILE, "\t.single 0r%.9g\n", VALUE); \
...@@ -1569,7 +1572,7 @@ extern struct rtx_def *legitimize_pic_address (); ...@@ -1569,7 +1572,7 @@ extern struct rtx_def *legitimize_pic_address ();
/* This is how to output an assembler line defining an `int' constant. */ /* This is how to output an assembler line defining an `int' constant. */
#define ASM_OUTPUT_INT(FILE,VALUE) \ #define ASM_OUTPUT_INT(FILE,VALUE) \
( fprintf (FILE, "\t.word "), \ ( fprintf (FILE, "\t%s\t", ASM_LONG), \
output_addr_const (FILE, (VALUE)), \ output_addr_const (FILE, (VALUE)), \
fprintf (FILE, "\n")) fprintf (FILE, "\n"))
...@@ -1580,19 +1583,19 @@ extern struct rtx_def *legitimize_pic_address (); ...@@ -1580,19 +1583,19 @@ extern struct rtx_def *legitimize_pic_address ();
/* Likewise for `char' and `short' constants. */ /* Likewise for `char' and `short' constants. */
#define ASM_OUTPUT_SHORT(FILE,VALUE) \ #define ASM_OUTPUT_SHORT(FILE,VALUE) \
( fprintf (FILE, "\t.half "), \ ( fprintf (FILE, "\t%s\t", ASM_SHORT), \
output_addr_const (FILE, (VALUE)), \ output_addr_const (FILE, (VALUE)), \
fprintf (FILE, "\n")) fprintf (FILE, "\n"))
#define ASM_OUTPUT_CHAR(FILE,VALUE) \ #define ASM_OUTPUT_CHAR(FILE,VALUE) \
( fprintf (FILE, "\t.byte "), \ ( fprintf (FILE, "\t%s\t", ASM_BYTE_OP), \
output_addr_const (FILE, (VALUE)), \ output_addr_const (FILE, (VALUE)), \
fprintf (FILE, "\n")) fprintf (FILE, "\n"))
/* This is how to output an assembler line for a numeric constant byte. */ /* This is how to output an assembler line for a numeric constant byte. */
#define ASM_OUTPUT_BYTE(FILE,VALUE) \ #define ASM_OUTPUT_BYTE(FILE,VALUE) \
fprintf (FILE, "\t.byte 0x%x\n", (VALUE)) fprintf (FILE, "\t%s\t0x%x\n", ASM_BYTE_OP, (VALUE))
/* This is how to output an element of a case-vector that is absolute. */ /* This is how to output an element of a case-vector that is absolute. */
......
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