diff options
author | Nick Clifton <nickc@cygnus.com> | 1999-07-26 10:59:55 +0000 |
---|---|---|
committer | Nick Clifton <nickc@gcc.gnu.org> | 1999-07-26 10:59:55 +0000 |
commit | dd18ae5606550f3abcc694e9cf482ed5941dd8d7 (patch) | |
tree | b553cdfae2be8ceb7caaaa186577f5f46aa2a787 /gcc/config/arm | |
parent | fe0503eabfee54a8bf163c7d732519d8a27dcfc4 (diff) | |
download | gcc-dd18ae5606550f3abcc694e9cf482ed5941dd8d7.zip gcc-dd18ae5606550f3abcc694e9cf482ed5941dd8d7.tar.gz gcc-dd18ae5606550f3abcc694e9cf482ed5941dd8d7.tar.bz2 |
Replace %R%s with %r
From-SVN: r28264
Diffstat (limited to 'gcc/config/arm')
-rw-r--r-- | gcc/config/arm/arm.c | 105 | ||||
-rw-r--r-- | gcc/config/arm/arm.h | 79 |
2 files changed, 90 insertions, 94 deletions
diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index f970bec..2a15262 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -4409,16 +4409,18 @@ fp_const_from_val (r) must follow the register list. */ void -print_multi_reg (stream, instr, mask, hat) +print_multi_reg (stream, instr, reg, mask, hat) FILE * stream; char * instr; - int mask, hat; + int reg; + int mask; + int hat; { int i; int not_first = FALSE; fputc ('\t', stream); - fprintf (stream, instr, REGISTER_PREFIX); + asm_fprintf (stream, instr, reg); fputs (", {", stream); for (i = 0; i < 16; i++) @@ -4427,7 +4429,7 @@ print_multi_reg (stream, instr, mask, hat) if (not_first) fprintf (stream, ", "); - asm_fprintf (stream, "%R%s", reg_names[i]); + asm_fprintf (stream, "%r", i); not_first = TRUE; } @@ -5557,15 +5559,15 @@ output_func_prologue (f, frame_size) return_used_this_function = 0; lr_save_eliminated = 0; - fprintf (f, "\t%s args = %d, pretend = %d, frame = %d\n", - ASM_COMMENT_START, current_function_args_size, - current_function_pretend_args_size, frame_size); - fprintf (f, "\t%s frame_needed = %d, current_function_anonymous_args = %d\n", - ASM_COMMENT_START, frame_pointer_needed, - current_function_anonymous_args); + asm_fprintf (f, "\t%@ args = %d, pretend = %d, frame = %d\n", + current_function_args_size, + current_function_pretend_args_size, frame_size); + asm_fprintf (f, "\t%@ frame_needed = %d, current_function_anonymous_args = %d\n", + frame_pointer_needed, + current_function_anonymous_args); if (volatile_func) - fprintf (f, "\t%s Volatile function.\n", ASM_COMMENT_START); + asm_fprintf (f, "\t%@ Volatile function.\n"); if (current_function_anonymous_args && current_function_pretend_args_size) store_arg_regs = 1; @@ -5574,7 +5576,7 @@ output_func_prologue (f, frame_size) if (regs_ever_live[reg] && ! call_used_regs[reg]) live_regs_mask |= (1 << reg); - if (flag_pic && ! TARGET_SINGLE_PIC_BASE + if (flag_pic && ! TARGET_SINGLE_PIC_BASE && regs_ever_live[PIC_OFFSET_TABLE_REGNUM]) live_regs_mask |= (1 << PIC_OFFSET_TABLE_REGNUM); @@ -5602,13 +5604,11 @@ output_func_prologue (f, frame_size) } if (lr_save_eliminated) - fprintf (f,"\t%s I don't think this function clobbers lr\n", - ASM_COMMENT_START); + asm_fprintf (f,"\t%@ I don't think this function clobbers lr\n"); #ifdef AOF_ASSEMBLER if (flag_pic) - asm_fprintf (f, "\tmov\t%R%s, %R%s\n", reg_names [IP_REGNUM], - reg_names[PIC_OFFSET_TABLE_REGNUM]); + asm_fprintf (f, "\tmov\t%r, %r\n", IP_REGNUM, PIC_OFFSET_TABLE_REGNUM); #endif } @@ -5671,8 +5671,8 @@ output_func_epilogue (f, frame_size) if (regs_ever_live[reg] && ! call_used_regs[reg]) { floats_offset += 12; - asm_fprintf (f, "\tldfe\t%R%s, [%R%s, #-%d]\n", - reg_names[reg], reg_names [FP_REGNUM], floats_offset); + asm_fprintf (f, "\tldfe\t%r, [%r, #-%d]\n", + reg, FP_REGNUM, floats_offset); } } else @@ -5688,39 +5688,38 @@ output_func_epilogue (f, frame_size) /* We can't unstack more than four registers at once */ if (start_reg - reg == 3) { - asm_fprintf (f, "\tlfm\t%R%s, 4, [%R%s, #-%d]\n", - reg_names[reg], reg_names [FP_REGNUM], - floats_offset); + asm_fprintf (f, "\tlfm\t%r, 4, [%r, #-%d]\n", + reg, FP_REGNUM, floats_offset); start_reg = reg - 1; } } else { if (reg != start_reg) - asm_fprintf (f, "\tlfm\t%R%s, %d, [%R%s, #-%d]\n", - reg_names [reg + 1], start_reg - reg, - reg_names [FP_REGNUM], floats_offset); + asm_fprintf (f, "\tlfm\t%r, %d, [%r, #-%d]\n", + reg + 1, start_reg - reg, + FP_REGNUM, floats_offset); start_reg = reg - 1; } } /* Just in case the last register checked also needs unstacking. */ if (reg != start_reg) - asm_fprintf (f, "\tlfm\t%R%s, %d, [%R%s, #-%d]\n", - reg_names [reg + 1], start_reg - reg, - reg_names [FP_REGNUM], floats_offset); + asm_fprintf (f, "\tlfm\t%r, %d, [%r, #-%d]\n", + reg + 1, start_reg - reg, + FP_REGNUM, floats_offset); } if (TARGET_INTERWORK) { live_regs_mask |= 0x6800; - print_multi_reg (f, "ldmea\t%sfp", live_regs_mask, FALSE); - asm_fprintf (f, "\tbx\t%R%s\n", reg_names [LR_REGNUM]); + print_multi_reg (f, "ldmea\t%r", FP_REGNUM, live_regs_mask, FALSE); + asm_fprintf (f, "\tbx\t%r\n", LR_REGNUM); } else { live_regs_mask |= 0xA800; - print_multi_reg (f, "ldmea\t%sfp", live_regs_mask, + print_multi_reg (f, "ldmea\t%r", FP_REGNUM, live_regs_mask, TARGET_APCS_32 ? FALSE : TRUE); } } @@ -5739,8 +5738,8 @@ output_func_epilogue (f, frame_size) { for (reg = 16; reg < 24; reg++) if (regs_ever_live[reg] && ! call_used_regs[reg]) - asm_fprintf (f, "\tldfe\t%R%s, [%R%s], #12\n", - reg_names[reg], reg_names [SP_REGNUM]); + asm_fprintf (f, "\tldfe\t%r, [%r], #12\n", + reg, SP_REGNUM); } else { @@ -5752,17 +5751,17 @@ output_func_epilogue (f, frame_size) { if (reg - start_reg == 3) { - asm_fprintf (f, "\tlfmfd\t%R%s, 4, [%R%s]!\n", - reg_names[start_reg], reg_names [SP_REGNUM]); + asm_fprintf (f, "\tlfmfd\t%r, 4, [%r]!\n", + start_reg, SP_REGNUM); start_reg = reg + 1; } } else { if (reg != start_reg) - asm_fprintf (f, "\tlfmfd\t%R%s, %d, [%R%s]!\n", - reg_names [start_reg], reg - start_reg, - reg_names [SP_REGNUM]); + asm_fprintf (f, "\tlfmfd\t%r, %d, [%r]!\n", + start_reg, reg - start_reg, + SP_REGNUM); start_reg = reg + 1; } @@ -5770,9 +5769,8 @@ output_func_epilogue (f, frame_size) /* Just in case the last register checked also needs unstacking. */ if (reg != start_reg) - asm_fprintf (f, "\tlfmfd\t%R%s, %d, [%R%s]!\n", - reg_names [start_reg], reg - start_reg, - reg_names [SP_REGNUM]); + asm_fprintf (f, "\tlfmfd\t%r, %d, [%r]!\n", + start_reg, reg - start_reg, SP_REGNUM); } if (current_function_pretend_args_size == 0 && regs_ever_live[LR_REGNUM]) @@ -5783,16 +5781,16 @@ output_func_epilogue (f, frame_size) live_regs_mask |= 1 << LR_REGNUM; if (live_regs_mask != 0) - print_multi_reg (f, "ldmfd\t%ssp!", live_regs_mask, FALSE); + print_multi_reg (f, "ldmfd\t%r!", SP_REGNUM, live_regs_mask, FALSE); - asm_fprintf (f, "\tbx\t%R%s\n", reg_names [LR_REGNUM]); + asm_fprintf (f, "\tbx\t%r\n", LR_REGNUM); } else if (lr_save_eliminated) asm_fprintf (f, "\tmov%c\t%r, %r\n", TARGET_APCS_32 ? ' ' : 's', - reg_names [PC_REGNUM], reg_names [LR_REGNUM]); + PC_REGNUM, LR_REGNUM); else - print_multi_reg (f, "ldmfd\t%ssp!", live_regs_mask | 0x8000, + print_multi_reg (f, "ldmfd\t%r!", SP_REGNUM, live_regs_mask | 0x8000, TARGET_APCS_32 ? FALSE : TRUE); } else @@ -5804,7 +5802,7 @@ output_func_epilogue (f, frame_size) live_regs_mask |= 1 << LR_REGNUM; if (live_regs_mask != 0) - print_multi_reg (f, "ldmfd\t%ssp!", live_regs_mask, FALSE); + print_multi_reg (f, "ldmfd\t%r!", SP_REGNUM, live_regs_mask, FALSE); } if (current_function_pretend_args_size) @@ -5816,11 +5814,11 @@ output_func_epilogue (f, frame_size) } /* And finally, go home */ if (TARGET_INTERWORK) - asm_fprintf (f, "\tbx\t%R%s\n", reg_names [LR_REGNUM]); + asm_fprintf (f, "\tbx\t%r\n", LR_REGNUM); else if (TARGET_APCS_32) - asm_fprintf (f, "\tmov\t%R%s, %R%s\n", reg_names [PC_REGNUM], reg_names [LR_REGNUM]); + asm_fprintf (f, "\tmov\t%r, %r\n", PC_REGNUM, LR_REGNUM); else - asm_fprintf (f, "\tmovs\t%R%s, %R%s\n", reg_names [PC_REGNUM], reg_names [LR_REGNUM]); + asm_fprintf (f, "\tmovs\t%r, %r\n", PC_REGNUM, LR_REGNUM); } } @@ -6129,9 +6127,8 @@ arm_print_operand (stream, x, code) return; case 'M': - asm_fprintf (stream, "{%R%s-%R%s}", - reg_names[REGNO (x)], - reg_names[REGNO (x) + NUM_REGS (GET_MODE (x)) - 1]); + asm_fprintf (stream, "{%r-%r}", + REGNO (x), REGNO (x) + NUM_REGS (GET_MODE (x)) - 1); return; case 'd': @@ -6698,9 +6695,9 @@ aof_dump_pic_table (f) if (aof_pic_chain == NULL) return; - asm_fprintf (f, "\tAREA |%R%s$$adcons|, BASED %R%s\n", - reg_names[PIC_OFFSET_TABLE_REGNUM], - reg_names[PIC_OFFSET_TABLE_REGNUM]); + asm_fprintf (f, "\tAREA |%r$$adcons|, BASED %r\n", + PIC_OFFSET_TABLE_REGNUM, + PIC_OFFSET_TABLE_REGNUM); fputs ("|x$adcons|\n", f); for (chain = aof_pic_chain; chain; chain = chain->next) diff --git a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h index 5b43259..43646ea 100644 --- a/gcc/config/arm/arm.h +++ b/gcc/config/arm/arm.h @@ -22,15 +22,6 @@ along with GNU CC; see the file COPYING. If not, write to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -/* Configuration triples for ARM ports work as follows: - (This is a bit of a mess and needs some thought) - arm-*-*: little endian - armel-*-*: little endian - armeb-*-*: big endian - If a non-embedded environment (ie: "real" OS) is specified, `arm' - should default to that used by the OS. -*/ - #ifndef __ARM_H__ #define __ARM_H__ @@ -316,11 +307,11 @@ Unrecognized value in TARGET_CPU_DEFAULT. #define ARM_FLAG_NO_SCHED_PRO (1 << 12) /* Nonzero if a call to abort should be generated if a noreturn -function tries to return. */ + function tries to return. */ #define ARM_FLAG_ABORT_NORETURN (1 << 13) /* Nonzero if function prologues should not load the PIC register. */ -#define ARM_FLAG_SINGLE_PIC_BASE (1 << 14) +#define ARM_FLAG_SINGLE_PIC_BASE (1 << 14) #define TARGET_APCS (target_flags & ARM_FLAG_APCS_FRAME) #define TARGET_POKE_FUNCTION_NAME (target_flags & ARM_FLAG_POKE) @@ -343,7 +334,7 @@ function tries to return. */ #define TARGET_INTERWORK (target_flags & ARM_FLAG_INTERWORK) #define TARGET_LITTLE_WORDS (target_flags & ARM_FLAG_LITTLE_WORDS) #define TARGET_NO_SCHED_PRO (target_flags & ARM_FLAG_NO_SCHED_PRO) -#define TARGET_ABORT_NORETURN (target_flags & ARM_FLAG_ABORT_NORETURN) +#define TARGET_ABORT_NORETURN (target_flags & ARM_FLAG_ABORT_NORETURN) #define TARGET_SINGLE_PIC_BASE (target_flags & ARM_FLAG_SINGLE_PIC_BASE) /* SUBTARGET_SWITCHES is used to add flags on a per-config basis. @@ -378,7 +369,7 @@ function tries to return. */ "Load shorts a byte at a time" }, \ {"no-short-load-bytes", -ARM_FLAG_SHORT_BYTE, "" }, \ {"short-load-words", -ARM_FLAG_SHORT_BYTE, \ - "Load shorts a word at a time" }, \ + "Load words a byte at a time" }, \ {"no-short-load-words", ARM_FLAG_SHORT_BYTE, "" }, \ {"soft-float", ARM_FLAG_SOFT_FLOAT, \ "Use library calls to perform FP operations" }, \ @@ -395,13 +386,13 @@ function tries to return. */ {"no-thumb-interwork", -ARM_FLAG_INTERWORK, "" }, \ {"abort-on-noreturn", ARM_FLAG_ABORT_NORETURN, \ "Generate a call to abort if a noreturn function returns"}, \ - {"no-abort-on-noreturn", -ARM_FLAG_ABORT_NORETURN, ""}, \ + {"no-abort-on-noreturn", -ARM_FLAG_ABORT_NORETURN, ""}, \ {"sched-prolog", -ARM_FLAG_NO_SCHED_PRO, \ "Do not move instructions into a function's prologue" }, \ {"no-sched-prolog", ARM_FLAG_NO_SCHED_PRO, "" }, \ {"single-pic-base", ARM_FLAG_SINGLE_PIC_BASE, \ "Do not load the PIC register in function prologues" }, \ - {"no-single-pic-base", -ARM_FLAG_SINGLE_PIC_BASE, "" },\ + {"no-single-pic-base", -ARM_FLAG_SINGLE_PIC_BASE, "" }, \ SUBTARGET_SWITCHES \ {"", TARGET_DEFAULT } \ } @@ -760,6 +751,20 @@ extern const char * structure_size_string; SUBTARGET_CONDITIONAL_REGISTER_USAGE \ } +/* These are a couple of extensions to the formats accecpted + by asm_fprintf: + %@ prints out ASM_COMMENT_START + %r prints out REGISTER_PREFIX reg_names[arg] */ +#define ASM_FPRINTF_EXTENSIONS(FILE, ARGS, P) \ + case '@': \ + fputs (ASM_COMMENT_START, FILE); \ + break; \ + \ + case 'r': \ + fputs (REGISTER_PREFIX, FILE); \ + fputs (reg_names [va_arg (ARGS, int)], FILE); \ + break; + /* Convert fron bytes to ints. */ #define NUM_INTS(X) (((X) + UNITS_PER_WORD - 1) / UNITS_PER_WORD) @@ -1234,9 +1239,8 @@ enum reg_class char temp[20]; \ rtx sym; \ \ - asm_fprintf (STREAM, "\tmov\t%R%s, %R%s\n\tbl\t", \ - reg_names[IP_REGNUM] /* ip */, \ - reg_names[LR_REGNUM] /* lr */); \ + asm_fprintf (STREAM, "\tmov\t%r, %r\n\tbl\t", \ + IP_REGNUM, LR_REGNUM); \ assemble_name (STREAM, ARM_MCOUNT_NAME); \ fputc ('\n', STREAM); \ ASM_GENERATE_INTERNAL_LABEL (temp, "LP", LABELNO); \ @@ -1982,12 +1986,10 @@ extern struct rtx_def * arm_compare_op1; /* Output a push or a pop instruction (only used when profiling). */ #define ASM_OUTPUT_REG_PUSH(STREAM, REGNO) \ - asm_fprintf (STREAM,"\tstmfd\t%Rsp!,{%R%s}\n", \ - reg_names [REGNO]) + asm_fprintf (STREAM,"\tstmfd\t%r!,{%r}\n", SP_REGNUM, REGNO) #define ASM_OUTPUT_REG_POP(STREAM, REGNO) \ - asm_fprintf (STREAM,"\tldmfd\t%Rsp!,{%R%s}\n", \ - reg_names [REGNO]) + asm_fprintf (STREAM,"\tldmfd\t%r!,{%r}\n", SP_REGNUM, REGNO) #define ARM_DECLARE_FUNCTION_NAME(STREAM, NAME, DECL) \ do \ @@ -2033,12 +2035,12 @@ extern struct rtx_def * arm_compare_op1; int is_minus = GET_CODE (X) == MINUS; \ \ if (GET_CODE (X) == REG) \ - asm_fprintf (STREAM, "[%R%s, #0]", reg_names[REGNO (X)]); \ + asm_fprintf (STREAM, "[%r, #0]", REGNO (X)); \ else if (GET_CODE (X) == PLUS || is_minus) \ { \ rtx base = XEXP (X, 0); \ rtx index = XEXP (X, 1); \ - char * base_reg_name; \ + int base_reg; \ HOST_WIDE_INT offset = 0; \ if (GET_CODE (base) != REG) \ { \ @@ -2047,20 +2049,19 @@ extern struct rtx_def * arm_compare_op1; base = index; \ index = temp; \ } \ - base_reg_name = reg_names[REGNO (base)]; \ + base_reg = REGNO (base); \ switch (GET_CODE (index)) \ { \ case CONST_INT: \ offset = INTVAL (index); \ if (is_minus) \ offset = -offset; \ - asm_fprintf (STREAM, "[%R%s, #%d]", base_reg_name, offset); \ + asm_fprintf (STREAM, "[%r, #%d]", base_reg, offset); \ break; \ \ case REG: \ - asm_fprintf (STREAM, "[%R%s, %s%R%s]", \ - base_reg_name, is_minus ? "-" : "", \ - reg_names[REGNO (index)] ); \ + asm_fprintf (STREAM, "[%r, %s%r]", base_reg, \ + is_minus ? "-" : "", REGNO (index)); \ break; \ \ case MULT: \ @@ -2069,9 +2070,8 @@ extern struct rtx_def * arm_compare_op1; case ASHIFT: \ case ROTATERT: \ { \ - asm_fprintf (STREAM, "[%R%s, %s%R%s", \ - base_reg_name, is_minus ? "-" : "", \ - reg_names[REGNO (XEXP (index, 0))]); \ + asm_fprintf (STREAM, "[%r, %s%r", base_reg, \ + is_minus ? "-" : "", REGNO (XEXP (index, 0))); \ arm_print_operand (STREAM, index, 'S'); \ fputs ("]", STREAM); \ break; \ @@ -2090,13 +2090,13 @@ extern struct rtx_def * arm_compare_op1; abort (); \ \ if (GET_CODE (X) == PRE_DEC || GET_CODE (X) == PRE_INC) \ - asm_fprintf (STREAM, "[%R%s, #%s%d]!", \ - reg_names[REGNO (XEXP (X, 0))], \ + asm_fprintf (STREAM, "[%r, #%s%d]!", \ + REGNO (XEXP (X, 0)), \ GET_CODE (X) == PRE_DEC ? "-" : "", \ GET_MODE_SIZE (output_memory_reference_mode)); \ else \ - asm_fprintf (STREAM, "[%R%s], #%s%d", \ - reg_names[REGNO (XEXP (X, 0))], \ + asm_fprintf (STREAM, "[%r], #%s%d", \ + REGNO (XEXP (X, 0)), \ GET_CODE (X) == POST_DEC ? "-" : "", \ GET_MODE_SIZE (output_memory_reference_mode)); \ } \ @@ -2146,9 +2146,8 @@ extern struct rtx_def * arm_compare_op1; shift += 2; \ else \ { \ - asm_fprintf (FILE, "\t%s\t%R%s, %R%s, #%d\n", \ - mi_op, reg_names[this_regno], \ - reg_names[this_regno], \ + asm_fprintf (FILE, "\t%s\t%r, %r, #%d\n", \ + mi_op, this_regno, this_regno, \ mi_delta & (0xff << shift)); \ mi_delta &= ~(0xff << shift); \ shift += 8; \ @@ -2156,7 +2155,7 @@ extern struct rtx_def * arm_compare_op1; } \ fputs ("\tb\t", FILE); \ assemble_name (FILE, XSTR (XEXP (DECL_RTL (FUNCTION), 0), 0)); \ - if (NEED_PLT_RELOC) \ + if (NEED_PLT_RELOC) \ fputs ("(PLT)", FILE); \ fputc ('\n', FILE); \ } \ |