Replace ARM_REG_PREFIX with REGISTER_PREFIX.
authorDoug Evans <dje@gnu.org>
Fri, 12 May 1995 18:23:56 +0000 (18:23 +0000)
committerDoug Evans <dje@gnu.org>
Fri, 12 May 1995 18:23:56 +0000 (18:23 +0000)
Replace ARM_COMMENT_CHAR with ASM_COMMENT_START.
(REGISTER_PREFIX): Define.
(USER_LABEL_PREFIX, LOCAL_LABEL_PREFIX): Define.
(SECONDARY_OUTPUT_RELOAD_CLASS): Handle DFmodes only if TARGET_HARD_FLOAT.
(PREDICATE_CODES): Add soft_df_operand.

From-SVN: r9651

gcc/config/arm/arm.h

index 961c7f3c2aa9258013cfda6c36004fdbf1e6a295..cd783f4fefb8a24dcea6fbb77a4676e845012f74 100644 (file)
@@ -565,7 +565,8 @@ enum reg_class
    NO_REGS is returned.  */
 #define SECONDARY_OUTPUT_RELOAD_CLASS(CLASS,MODE,X)    \
   (((MODE) == DFmode && (CLASS) == GENERAL_REGS                \
-    && true_regnum (X) == -1) ? GENERAL_REGS           \
+    && true_regnum (X) == -1 && TARGET_HARD_FLOAT)     \
+   ? GENERAL_REGS                                      \
    : ((MODE) == HImode && true_regnum (X) == -1) ? GENERAL_REGS : NO_REGS)
 
 /* If we need to load shorts byte-at-a-time, then we need a scratch. */
@@ -733,7 +734,7 @@ enum reg_class
    to mind about this!  */
 #define FUNCTION_PROFILER(STREAM,LABELNO)                                  \
 {                                                                          \
-    fprintf(STREAM, "\tmov\t%sip, %slr\n", ARM_REG_PREFIX, ARM_REG_PREFIX); \
+    fprintf(STREAM, "\tmov\t%sip, %slr\n", REGISTER_PREFIX, REGISTER_PREFIX); \
     fprintf(STREAM, "\tbl\tmcount\n");                                     \
     fprintf(STREAM, "\t.word\tLP%d\n", (LABELNO));                         \
 }
@@ -832,10 +833,10 @@ enum reg_class
           .word        function's address  */
 #define TRAMPOLINE_TEMPLATE(FILE)                              \
 {                                                              \
-  fprintf ((FILE), "\tldr\t%sr8, [%spc, #0]\n", ARM_REG_PREFIX,        \
-          ARM_REG_PREFIX);                                     \
-  fprintf ((FILE), "\tldr\t%spc, [%spc, #0]\n", ARM_REG_PREFIX,        \
-          ARM_REG_PREFIX);                                     \
+  fprintf ((FILE), "\tldr\t%sr8, [%spc, #0]\n",                        \
+          REGISTER_PREFIX, REGISTER_PREFIX);                   \
+  fprintf ((FILE), "\tldr\t%spc, [%spc, #0]\n",                        \
+          REGISTER_PREFIX, REGISTER_PREFIX);                   \
   fprintf ((FILE), "\t.word\t0\n");                            \
   fprintf ((FILE), "\t.word\t0\n");                            \
 }
@@ -1352,6 +1353,7 @@ extern int arm_compare_fp;
   {"minmax_operator", {SMIN, SMAX, UMIN, UMAX}},                       \
   {"shift_operator", {ASHIFT, ASHIFTRT, LSHIFTRT, ROTATERT, MULT}},    \
   {"di_operand", {SUBREG, REG, CONST_INT, CONST_DOUBLE, MEM}},         \
+  {"soft_df_operand", {SUBREG, REG, CONST_DOUBLE, MEM}},               \
   {"load_multiple_operation", {PARALLEL}},                             \
   {"store_multiple_operation", {PARALLEL}},                            \
   {"equality_operator", {EQ, NE}},                                     \
@@ -1374,15 +1376,15 @@ extern int arm_compare_fp;
 #define ASM_FILE_START(STREAM)                                           \
 {                                                                        \
   extern char *version_string;                                           \
-  fprintf (STREAM,"%c Generated by gcc %s for ARM/%s\n",                 \
-          ARM_COMMENT_CHAR, version_string, ARM_OS_NAME);                \
-  fprintf (STREAM,"%srfp\t.req\t%sr9\n", ARM_REG_PREFIX, ARM_REG_PREFIX); \
-  fprintf (STREAM,"%ssl\t.req\t%sr10\n", ARM_REG_PREFIX, ARM_REG_PREFIX); \
-  fprintf (STREAM,"%sfp\t.req\t%sr11\n", ARM_REG_PREFIX, ARM_REG_PREFIX); \
-  fprintf (STREAM,"%sip\t.req\t%sr12\n", ARM_REG_PREFIX, ARM_REG_PREFIX); \
-  fprintf (STREAM,"%ssp\t.req\t%sr13\n", ARM_REG_PREFIX, ARM_REG_PREFIX); \
-  fprintf (STREAM,"%slr\t.req\t%sr14\n", ARM_REG_PREFIX, ARM_REG_PREFIX); \
-  fprintf (STREAM,"%spc\t.req\t%sr15\n", ARM_REG_PREFIX, ARM_REG_PREFIX); \
+  fprintf (STREAM,"%s Generated by gcc %s for ARM/%s\n",                 \
+          ASM_COMMENT_START, version_string, ARM_OS_NAME);               \
+  fprintf (STREAM,"%srfp\t.req\t%sr9\n", REGISTER_PREFIX, REGISTER_PREFIX); \
+  fprintf (STREAM,"%ssl\t.req\t%sr10\n", REGISTER_PREFIX, REGISTER_PREFIX); \
+  fprintf (STREAM,"%sfp\t.req\t%sr11\n", REGISTER_PREFIX, REGISTER_PREFIX); \
+  fprintf (STREAM,"%sip\t.req\t%sr12\n", REGISTER_PREFIX, REGISTER_PREFIX); \
+  fprintf (STREAM,"%ssp\t.req\t%sr13\n", REGISTER_PREFIX, REGISTER_PREFIX); \
+  fprintf (STREAM,"%slr\t.req\t%sr14\n", REGISTER_PREFIX, REGISTER_PREFIX); \
+  fprintf (STREAM,"%spc\t.req\t%sr15\n", REGISTER_PREFIX, REGISTER_PREFIX); \
 }
 
 #define ASM_APP_ON  ""
@@ -1392,6 +1394,10 @@ extern int arm_compare_fp;
 #define TEXT_SECTION_ASM_OP  ".text"
 #define DATA_SECTION_ASM_OP  ".data"
 
+#define REGISTER_PREFIX ""
+#define USER_LABEL_PREFIX "_"
+#define LOCAL_LABEL_PREFIX ""
+
 /* The assembler's names for the registers.  */
 #ifndef REGISTER_NAMES
 #define REGISTER_NAMES  \
@@ -1471,7 +1477,7 @@ do {                                                                      \
 
 /* Output a reference to a label.  */
 #define ASM_OUTPUT_LABELREF(STREAM,NAME)  \
-  fprintf (STREAM, "_%s", NAME)
+  fprintf (STREAM, "%s%s", USER_LABEL_PREFIX, NAME)
 
 /* Make an internal label into a string.  */
 #define ASM_GENERATE_INTERNAL_LABEL(STRING, PREFIX, NUM)  \
@@ -1506,13 +1512,13 @@ do {                                                                    \
    sprintf ((OUTVAR), "%s.%d", (NAME), (NUMBER)))
 
 /* Output a push or a pop instruction (only used when profiling).  */
-#define ASM_OUTPUT_REG_PUSH(STREAM,REGNO)                                  \
-  fprintf(STREAM,"\tstmfd\t%ssp!,{%s%s}\n", ARM_REG_PREFIX, ARM_REG_PREFIX, \
-         reg_names[REGNO])
+#define ASM_OUTPUT_REG_PUSH(STREAM,REGNO) \
+  fprintf(STREAM,"\tstmfd\t%ssp!,{%s%s}\n", \
+         REGISTER_PREFIX, REGISTER_PREFIX, reg_names[REGNO])
 
-#define ASM_OUTPUT_REG_POP(STREAM,REGNO)                                   \
-  fprintf(STREAM,"\tldmfd\t%ssp!,{%s%s}\n", ARM_REG_PREFIX, ARM_REG_PREFIX, \
-         reg_names[REGNO])
+#define ASM_OUTPUT_REG_POP(STREAM,REGNO) \
+  fprintf(STREAM,"\tldmfd\t%ssp!,{%s%s}\n", \
+         REGISTER_PREFIX, REGISTER_PREFIX, reg_names[REGNO])
 
 /* Output a relative address. Not needed since jump tables are absolute
    but we must define it anyway.  */
@@ -1535,11 +1541,11 @@ do { char dstr[30];                                                     \
      REAL_VALUE_TO_TARGET_LONG_DOUBLE (VALUE, l);                      \
      REAL_VALUE_TO_DECIMAL (VALUE, "%.20g", dstr);                     \
      if (sizeof (int) == sizeof (long))                                        \
-       fprintf (STREAM, "\t.long 0x%x,0x%x,0x%x\t%c long double %s\n", \
-               l[2], l[1], l[0], ARM_COMMENT_CHAR, dstr);              \
+       fprintf (STREAM, "\t.long 0x%x,0x%x,0x%x\t%s long double %s\n", \
+               l[2], l[1], l[0], ASM_COMMENT_START, dstr);             \
      else                                                              \
-       fprintf (STREAM, "\t.long 0x%lx,0x%lx,0x%lx\t%c long double %s\n",\
-               l[0], l[1], l[2], ARM_COMMENT_CHAR, dstr);              \
+       fprintf (STREAM, "\t.long 0x%lx,0x%lx,0x%lx\t%s long double %s\n",\
+               l[0], l[1], l[2], ASM_COMMENT_START, dstr);             \
    } while (0)
 
     
@@ -1550,11 +1556,11 @@ do { char dstr[30];                                                     \
      REAL_VALUE_TO_TARGET_DOUBLE (VALUE, l);                           \
      REAL_VALUE_TO_DECIMAL (VALUE, "%.14g", dstr);                     \
      if (sizeof (int) == sizeof (long))                                        \
-       fprintf (STREAM, "\t.long 0x%x, 0x%x\t%c double %s\n", l[0],    \
-               l[1], ARM_COMMENT_CHAR, dstr);                          \
+       fprintf (STREAM, "\t.long 0x%x, 0x%x\t%s double %s\n", l[0],    \
+               l[1], ASM_COMMENT_START, dstr);                         \
      else                                                              \
-       fprintf (STREAM, "\t.long 0x%lx, 0x%lx\t%c double %s\n", l[0],  \
-               l[1], ARM_COMMENT_CHAR, dstr);                          \
+       fprintf (STREAM, "\t.long 0x%lx, 0x%lx\t%s double %s\n", l[0],  \
+               l[1], ASM_COMMENT_START, dstr);                         \
    } while (0)
 
 #define ASM_OUTPUT_FLOAT(STREAM, VALUE)                                        \
@@ -1564,11 +1570,11 @@ do { char dstr[30];                                                     \
      REAL_VALUE_TO_TARGET_SINGLE (VALUE, l);                           \
      REAL_VALUE_TO_DECIMAL (VALUE, "%.7g", dstr);                      \
      if (sizeof (int) == sizeof (long))                                        \
-       fprintf (STREAM, "\t.word 0x%x\t%c float %s\n", l,              \
-               ARM_COMMENT_CHAR, dstr);                                \
+       fprintf (STREAM, "\t.word 0x%x\t%s float %s\n", l,              \
+               ASM_COMMENT_START, dstr);                               \
      else                                                              \
-       fprintf (STREAM, "\t.word 0x%lx\t%c float %s\n", l,             \
-               ARM_COMMENT_CHAR, dstr);                                \
+       fprintf (STREAM, "\t.word 0x%lx\t%s float %s\n", l,             \
+               ASM_COMMENT_START, dstr);                               \
    } while (0);
 
 #define ASM_OUTPUT_INT(STREAM, EXP)    \
@@ -1622,7 +1628,7 @@ do { char dstr[30];                                                       \
 #define ASM_OUTPUT_COMMON(STREAM, NAME, SIZE, ROUNDED)                 \
   (fprintf (STREAM, "\t.comm\t"),                                      \
    assemble_name ((STREAM), (NAME)),                                   \
-   fprintf(STREAM, ", %d\t%c%d\n", ROUNDED, ARM_COMMENT_CHAR, SIZE))
+   fprintf(STREAM, ", %d\t%s %d\n", ROUNDED, ASM_COMMENT_START, SIZE))
 
 /* Output a local common block.  /bin/as can't do this, so hack a `.space' into
    the bss segment.  Note that this is *bad* practice.  */
@@ -1655,13 +1661,8 @@ do { char dstr[30];                                                      \
   if (optimize)                                            \
     final_prescan_insn (INSN, OPVEC, NOPERANDS)
 
-#ifndef ARM_COMMENT_CHAR
-#define ARM_COMMENT_CHAR '@'
-#endif
-
-/* Default is for register names not to have a prefix.  */
-#ifndef ARM_REG_PREFIX
-#define ARM_REG_PREFIX ""
+#ifndef ASM_COMMENT_START
+#define ASM_COMMENT_START "@"
 #endif
 
 #define PRINT_OPERAND_PUNCT_VALID_P(CODE)      \
@@ -1684,7 +1685,7 @@ do { char dstr[30];                                                       \
     int is_minus = GET_CODE (X) == MINUS;                              \
                                                                        \
     if (GET_CODE (X) == REG)                                           \
-       fprintf (STREAM, "[%s%s, #0]", ARM_REG_PREFIX,                  \
+       fprintf (STREAM, "[%s%s, #0]", REGISTER_PREFIX,                 \
                 reg_names[REGNO (X)]);                                 \
     else if (GET_CODE (X) == PLUS || is_minus)                         \
       {                                                                        \
@@ -1706,14 +1707,14 @@ do { char dstr[30];                                                     \
            offset = INTVAL (index);                                    \
            if (is_minus)                                               \
              offset = -offset;                                         \
-           fprintf (STREAM, "[%s%s, #%d]", ARM_REG_PREFIX,             \
+           fprintf (STREAM, "[%s%s, #%d]", REGISTER_PREFIX,            \
                     base_reg_name, offset);                            \
            break;                                                      \
                                                                        \
          case REG:                                                     \
-           fprintf (STREAM, "[%s%s, %s%s%s]", ARM_REG_PREFIX,          \
+           fprintf (STREAM, "[%s%s, %s%s%s]", REGISTER_PREFIX,         \
                     base_reg_name, is_minus ? "-" : "",                \
-                    ARM_REG_PREFIX, reg_names[REGNO (index)] );        \
+                    REGISTER_PREFIX, reg_names[REGNO (index)] );       \
            break;                                                      \
                                                                        \
          case MULT:                                                    \
@@ -1722,8 +1723,8 @@ do { char dstr[30];                                                       \
          case ASHIFT:                                                  \
          case ROTATERT:                                                \
          {                                                             \
-           fprintf (STREAM, "[%s%s, %s%s%s", ARM_REG_PREFIX,           \
-                    base_reg_name, is_minus ? "-" : "", ARM_REG_PREFIX,\
+           fprintf (STREAM, "[%s%s, %s%s%s", REGISTER_PREFIX,          \
+                    base_reg_name, is_minus ? "-" : "", REGISTER_PREFIX,\
                     reg_names[REGNO (XEXP (index, 0))]);               \
            arm_print_operand (STREAM, index, 'S');                     \
            fputs ("]", STREAM);                                        \
@@ -1743,12 +1744,12 @@ do { char dstr[30];                                                     \
        abort ();                                                       \
                                                                        \
       if (GET_CODE (X) == PRE_DEC || GET_CODE (X) == PRE_INC)          \
-       fprintf (STREAM, "[%s%s, #%s%d]!", ARM_REG_PREFIX,              \
+       fprintf (STREAM, "[%s%s, #%s%d]!", REGISTER_PREFIX,             \
                 reg_names[REGNO (XEXP (X, 0))],                        \
                 GET_CODE (X) == PRE_DEC ? "-" : "",                    \
                 GET_MODE_SIZE (output_memory_reference_mode));         \
       else                                                             \
-       fprintf (STREAM, "[%s%s], #%s%d", ARM_REG_PREFIX,               \
+       fprintf (STREAM, "[%s%s], #%s%d", REGISTER_PREFIX,              \
                 reg_names[REGNO (XEXP (X, 0))],                        \
                 GET_CODE (X) == POST_DEC ? "-" : "",                   \
                 GET_MODE_SIZE (output_memory_reference_mode));         \