From c383667d4fa396fc2748cc163b3527c8de0f7f21 Mon Sep 17 00:00:00 2001 From: Doug Evans Date: Fri, 12 May 1995 18:23:56 +0000 Subject: [PATCH] Replace ARM_REG_PREFIX with REGISTER_PREFIX. 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 | 101 ++++++++++++++++++++++--------------------- 1 file changed, 51 insertions(+), 50 deletions(-) diff --git a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h index 961c7f3c2aa..cd783f4fefb 100644 --- a/gcc/config/arm/arm.h +++ b/gcc/config/arm/arm.h @@ -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)); \ -- 2.30.2