OSDN Git Service

(ASM_OUTPUT_DOUBLE,ASM_OUTPUT_FLOAT): Use REAL_VALUE_ macros.
authorjrv <jrv@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 3 Oct 1993 23:59:48 +0000 (23:59 +0000)
committerjrv <jrv@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 3 Oct 1993 23:59:48 +0000 (23:59 +0000)
(ASM_OUTPUT_LONG_DOUBLE): New macro.
(VALUE_REGNO): Add case XFmode.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@5574 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/config/i386/next.h

index c59838f..1a327a5 100644 (file)
@@ -38,20 +38,39 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
 
 #undef VALUE_REGNO
 #define VALUE_REGNO(MODE) \
-  (((MODE)==SFmode || (MODE)==DFmode) ? FIRST_FLOAT_REG : 0)
+  ((MODE) == SFmode || (MODE) == DFmode || (MODE) == XFmode    \
+   ? FIRST_FLOAT_REG : 0)
 
 /* 1 if N is a possible register number for a function value. */
 
 #undef FUNCTION_VALUE_REGNO_P
 #define FUNCTION_VALUE_REGNO_P(N) ((N) == 0 || (N)== FIRST_FLOAT_REG)
 
+#ifdef REAL_VALUE_TO_TARGET_LONG_DOUBLE
+#undef ASM_OUTPUT_LONG_DOUBLE
+#define ASM_OUTPUT_LONG_DOUBLE(FILE,VALUE)                             \
+  do {                                                                 \
+    long hex[3];                                                       \
+    REAL_VALUE_TO_TARGET_LONG_DOUBLE (VALUE, hex);                     \
+    if (sizeof (int) == sizeof (long))                                 \
+      fprintf (FILE, "\t.long 0x%x\n\t.long 0x%x\n\t.long 0x%x\n",     \
+               hex[0], hex[1], hex[2]);                                \
+    else                                                               \
+      fprintf (FILE, "\t.long 0x%lx\n\t.long 0x%lx\n\t.long 0x%lx\n",  \
+               hex[0], hex[1], hex[2]);                                \
+  } while (0)
+#endif
+
 #ifdef REAL_VALUE_TO_TARGET_DOUBLE
 #undef ASM_OUTPUT_DOUBLE
 #define ASM_OUTPUT_DOUBLE(FILE,VALUE)                                  \
   do {                                                                 \
     long hex[2];                                                       \
     REAL_VALUE_TO_TARGET_DOUBLE (VALUE, hex);                          \
-    fprintf (FILE, "\t.long 0x%x\n\t.long 0x%x\n", hex[0], hex[1]);    \
+    if (sizeof (int) == sizeof (long))                                 \
+      fprintf (FILE, "\t.long 0x%x\n\t.long 0x%x\n", hex[0], hex[1]);  \
+    else                                                               \
+      fprintf (FILE, "\t.long 0x%lx\n\t.long 0x%lx\n", hex[0], hex[1]);        \
   } while (0)
 #endif
 
@@ -63,7 +82,10 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
   do {                                                                 \
     long hex;                                                          \
     REAL_VALUE_TO_TARGET_SINGLE (VALUE, hex);                          \
-    fprintf (FILE, "\t.long 0x%x\n", hex);                             \
+    if (sizeof (int) == sizeof (long))                                 \
+      fprintf (FILE, "\t.long 0x%x\n", hex);                           \
+    else                                                               \
+      fprintf (FILE, "\t.long 0x%lx\n", hex);                          \
   } while (0)
 #endif