diff options
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/c4x/c4x.c | 288 | ||||
-rw-r--r-- | gcc/config/c4x/c4x.h | 256 |
3 files changed, 285 insertions, 264 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ade9b9d..8a39bcc 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2000-01-09 Michael Hayes <m.hayes@elec.canterbury.ac.nz> + + * config/c4x.h: Tidy up comments. + * config/c4x.c: Likewise. + Sun Jan 9 01:02:55 EST 2000 John Wehle (john@feith.com) * fold-const.c (lshift_double, rshift_double): Handle diff --git a/gcc/config/c4x/c4x.c b/gcc/config/c4x/c4x.c index 778773d..2bbb757 100644 --- a/gcc/config/c4x/c4x.c +++ b/gcc/config/c4x/c4x.c @@ -57,76 +57,76 @@ static char *float_reg_names[] = FLOAT_REGISTER_NAMES; enum reg_class c4x_regclass_map[FIRST_PSEUDO_REGISTER] = { - /* Reg Modes Saved */ - R0R1_REGS, /* R0 QI, QF, HF No */ - R0R1_REGS, /* R1 QI, QF, HF No */ - R2R3_REGS, /* R2 QI, QF, HF No */ - R2R3_REGS, /* R3 QI, QF, HF No */ - EXT_LOW_REGS, /* R4 QI, QF, HF QI */ - EXT_LOW_REGS, /* R5 QI, QF, HF QI */ - EXT_LOW_REGS, /* R6 QI, QF, HF QF */ - EXT_LOW_REGS, /* R7 QI, QF, HF QF */ - ADDR_REGS, /* AR0 QI No */ - ADDR_REGS, /* AR1 QI No */ - ADDR_REGS, /* AR2 QI No */ - ADDR_REGS, /* AR3 QI QI */ - ADDR_REGS, /* AR4 QI QI */ - ADDR_REGS, /* AR5 QI QI */ - ADDR_REGS, /* AR6 QI QI */ - ADDR_REGS, /* AR7 QI QI */ - DP_REG, /* DP QI No */ - INDEX_REGS, /* IR0 QI No */ - INDEX_REGS, /* IR1 QI No */ - BK_REG, /* BK QI QI */ - SP_REG, /* SP QI No */ - ST_REG, /* ST CC No */ - NO_REGS, /* DIE/IE No */ - NO_REGS, /* IIE/IF No */ - NO_REGS, /* IIF/IOF No */ - INT_REGS, /* RS QI No */ - INT_REGS, /* RE QI No */ - RC_REG, /* RC QI No */ - EXT_REGS, /* R8 QI, QF, HF QI */ - EXT_REGS, /* R9 QI, QF, HF No */ - EXT_REGS, /* R10 QI, QF, HF No */ - EXT_REGS, /* R11 QI, QF, HF No */ + /* Reg Modes Saved. */ + R0R1_REGS, /* R0 QI, QF, HF No. */ + R0R1_REGS, /* R1 QI, QF, HF No. */ + R2R3_REGS, /* R2 QI, QF, HF No. */ + R2R3_REGS, /* R3 QI, QF, HF No. */ + EXT_LOW_REGS, /* R4 QI, QF, HF QI. */ + EXT_LOW_REGS, /* R5 QI, QF, HF QI. */ + EXT_LOW_REGS, /* R6 QI, QF, HF QF. */ + EXT_LOW_REGS, /* R7 QI, QF, HF QF. */ + ADDR_REGS, /* AR0 QI No. */ + ADDR_REGS, /* AR1 QI No. */ + ADDR_REGS, /* AR2 QI No. */ + ADDR_REGS, /* AR3 QI QI. */ + ADDR_REGS, /* AR4 QI QI. */ + ADDR_REGS, /* AR5 QI QI. */ + ADDR_REGS, /* AR6 QI QI. */ + ADDR_REGS, /* AR7 QI QI. */ + DP_REG, /* DP QI No. */ + INDEX_REGS, /* IR0 QI No. */ + INDEX_REGS, /* IR1 QI No. */ + BK_REG, /* BK QI QI. */ + SP_REG, /* SP QI No. */ + ST_REG, /* ST CC No. */ + NO_REGS, /* DIE/IE No. */ + NO_REGS, /* IIE/IF No. */ + NO_REGS, /* IIF/IOF No. */ + INT_REGS, /* RS QI No. */ + INT_REGS, /* RE QI No. */ + RC_REG, /* RC QI No. */ + EXT_REGS, /* R8 QI, QF, HF QI. */ + EXT_REGS, /* R9 QI, QF, HF No. */ + EXT_REGS, /* R10 QI, QF, HF No. */ + EXT_REGS, /* R11 QI, QF, HF No. */ }; enum machine_mode c4x_caller_save_map[FIRST_PSEUDO_REGISTER] = { - /* Reg Modes Saved */ - HFmode, /* R0 QI, QF, HF No */ - HFmode, /* R1 QI, QF, HF No */ - HFmode, /* R2 QI, QF, HF No */ - HFmode, /* R3 QI, QF, HF No */ - QFmode, /* R4 QI, QF, HF QI */ - QFmode, /* R5 QI, QF, HF QI */ - QImode, /* R6 QI, QF, HF QF */ - QImode, /* R7 QI, QF, HF QF */ - QImode, /* AR0 QI No */ - QImode, /* AR1 QI No */ - QImode, /* AR2 QI No */ - QImode, /* AR3 QI QI */ - QImode, /* AR4 QI QI */ - QImode, /* AR5 QI QI */ - QImode, /* AR6 QI QI */ - QImode, /* AR7 QI QI */ - VOIDmode, /* DP QI No */ - QImode, /* IR0 QI No */ - QImode, /* IR1 QI No */ - QImode, /* BK QI QI */ - VOIDmode, /* SP QI No */ - VOIDmode, /* ST CC No */ - VOIDmode, /* DIE/IE No */ - VOIDmode, /* IIE/IF No */ - VOIDmode, /* IIF/IOF No */ - QImode, /* RS QI No */ - QImode, /* RE QI No */ - VOIDmode, /* RC QI No */ - QFmode, /* R8 QI, QF, HF QI */ - HFmode, /* R9 QI, QF, HF No */ - HFmode, /* R10 QI, QF, HF No */ - HFmode, /* R11 QI, QF, HF No */ + /* Reg Modes Saved. */ + HFmode, /* R0 QI, QF, HF No. */ + HFmode, /* R1 QI, QF, HF No. */ + HFmode, /* R2 QI, QF, HF No. */ + HFmode, /* R3 QI, QF, HF No. */ + QFmode, /* R4 QI, QF, HF QI. */ + QFmode, /* R5 QI, QF, HF QI. */ + QImode, /* R6 QI, QF, HF QF. */ + QImode, /* R7 QI, QF, HF QF. */ + QImode, /* AR0 QI No. */ + QImode, /* AR1 QI No. */ + QImode, /* AR2 QI No. */ + QImode, /* AR3 QI QI. */ + QImode, /* AR4 QI QI. */ + QImode, /* AR5 QI QI. */ + QImode, /* AR6 QI QI. */ + QImode, /* AR7 QI QI. */ + VOIDmode, /* DP QI No. */ + QImode, /* IR0 QI No. */ + QImode, /* IR1 QI No. */ + QImode, /* BK QI QI. */ + VOIDmode, /* SP QI No. */ + VOIDmode, /* ST CC No. */ + VOIDmode, /* DIE/IE No. */ + VOIDmode, /* IIE/IF No. */ + VOIDmode, /* IIF/IOF No. */ + QImode, /* RS QI No. */ + QImode, /* RE QI No. */ + VOIDmode, /* RC QI No. */ + QFmode, /* R8 QI, QF, HF QI. */ + HFmode, /* R9 QI, QF, HF No. */ + HFmode, /* R10 QI, QF, HF No. */ + HFmode, /* R11 QI, QF, HF No. */ }; @@ -149,6 +149,7 @@ static tree pure_tree = NULL_TREE; static tree noreturn_tree = NULL_TREE; static tree interrupt_tree = NULL_TREE; + /* Called to register all of our global variables with the garbage collector. */ @@ -236,6 +237,7 @@ c4x_override_options () /* This is called before c4x_override_options. */ + void c4x_optimization_options (level, size) int level; @@ -252,6 +254,7 @@ c4x_optimization_options (level, size) flag_branch_on_count_reg = 1; } + /* Write an ASCII string. */ #define C4X_ASCII_LIMIT 40 @@ -329,20 +332,20 @@ c4x_hard_regno_mode_ok (regno, mode) switch (mode) { #if Pmode != QImode - case Pmode: /* Pointer (24/32 bits) */ + case Pmode: /* Pointer (24/32 bits). */ #endif - case QImode: /* Integer (32 bits) */ + case QImode: /* Integer (32 bits). */ return IS_INT_REGNO (regno); - case QFmode: /* Float, Double (32 bits) */ - case HFmode: /* Long Double (40 bits) */ + case QFmode: /* Float, Double (32 bits). */ + case HFmode: /* Long Double (40 bits). */ return IS_EXT_REGNO (regno); - case CCmode: /* Condition Codes */ - case CC_NOOVmode: /* Condition Codes */ + case CCmode: /* Condition Codes. */ + case CC_NOOVmode: /* Condition Codes. */ return IS_ST_REGNO (regno); - case HImode: /* Long Long (64 bits) */ + case HImode: /* Long Long (64 bits). */ /* We need two registers to store long longs. Note that it is much easier to constrain the first register to start on an even boundary. */ @@ -351,7 +354,7 @@ c4x_hard_regno_mode_ok (regno, mode) && (regno & 1) == 0; default: - return 0; /* We don't support these modes */ + return 0; /* We don't support these modes. */ } return 0; @@ -401,9 +404,9 @@ static int c4x_fp_reglist[2] = {R2_REGNO, R3_REGNO}; void c4x_init_cumulative_args (cum, fntype, libname) - CUMULATIVE_ARGS *cum; /* argument info to initialize */ - tree fntype; /* tree ptr for function decl */ - rtx libname; /* SYMBOL_REF of library name or 0 */ + CUMULATIVE_ARGS *cum; /* Argument info to initialize. */ + tree fntype; /* Tree ptr for function decl. */ + rtx libname; /* SYMBOL_REF of library name or 0. */ { tree param, next_param; @@ -480,10 +483,10 @@ c4x_init_cumulative_args (cum, fntype, libname) void c4x_function_arg_advance (cum, mode, type, named) - CUMULATIVE_ARGS *cum; /* current arg information */ - enum machine_mode mode; /* current arg mode */ - tree type; /* type of the argument or 0 if lib support */ - int named; /* whether or not the argument was named */ + CUMULATIVE_ARGS *cum; /* Current arg information. */ + enum machine_mode mode; /* Current arg mode. */ + tree type; /* Type of the arg or 0 if lib support. */ + int named; /* Whether or not the argument was named. */ { if (TARGET_DEBUG) fprintf (stderr, "c4x_function_adv(mode=%s, named=%d)\n\n", @@ -527,16 +530,16 @@ c4x_function_arg_advance (cum, mode, type, named) struct rtx_def * c4x_function_arg (cum, mode, type, named) - CUMULATIVE_ARGS *cum; /* current arg information */ - enum machine_mode mode; /* current arg mode */ - tree type; /* type of the argument or 0 if lib support */ - int named; /* != 0 for normal args, == 0 for ... args */ + CUMULATIVE_ARGS *cum; /* Current arg information. */ + enum machine_mode mode; /* Current arg mode. */ + tree type; /* Type of the arg or 0 if lib support. */ + int named; /* != 0 for normal args, == 0 for ... args. */ { - int reg = 0; /* default to passing argument on stack */ + int reg = 0; /* Default to passing argument on stack. */ if (! cum->init) { - /* We can handle at most 2 floats in R2, R3 */ + /* We can handle at most 2 floats in R2, R3. */ cum->maxfloats = (cum->floats > 2) ? 2 : cum->floats; /* We can handle at most 6 integers minus number of floats passed @@ -615,7 +618,7 @@ c4x_va_start (stdarg_p, valist, nextarg) /* C[34]x arguments grow in weird ways (downwards) that the standard - varargs stuff can't handle. */ + varargs stuff can't handle.. */ rtx c4x_va_arg (valist, type) tree valist, type; @@ -702,7 +705,7 @@ c4x_interrupt_function_p () TYPE_ATTRIBUTES (TREE_TYPE (current_function_decl)))) return 1; - /* Look for TI style c_intnn */ + /* Look for TI style c_intnn. */ return current_function_name[0] == 'c' && current_function_name[1] == '_' && current_function_name[2] == 'i' @@ -757,7 +760,7 @@ c4x_function_prologue (file, size) if (c4x_isr_reg_used_p (regno)) { fprintf (file, "\tpush\t%s\n", reg_names[regno]); - if (IS_EXT_REGNO (regno)) /* save 32MSB of R0--R11 */ + if (IS_EXT_REGNO (regno)) /* Save 32MSB of R0--R11. */ fprintf (file, "\tpushf\t%s\n", float_reg_names[regno]); } } @@ -834,7 +837,7 @@ c4x_function_prologue (file, size) { if ((regno == R6_REGNO) || (regno == R7_REGNO)) { - /* R6 and R7 are saved as floating point */ + /* R6 and R7 are saved as floating point. */ if (TARGET_PRESERVE_FLOAT) fprintf (file, "\tpush\t%s\n", reg_names[regno]); fprintf (file, "\tpushf\t%s\n", float_reg_names[regno]); @@ -872,7 +875,7 @@ c4x_function_epilogue (file, size) /* For __assembler__ function build no epilogue. */ if (c4x_assembler_function_p ()) { - fprintf (file, "\trets\n"); /* Play it safe */ + fprintf (file, "\trets\n"); /* Play it safe. */ return; } @@ -929,7 +932,7 @@ c4x_function_epilogue (file, size) } else { - dont_pop_ar3 = 0; /* If we use ar3, we need to pop it */ + dont_pop_ar3 = 0; /* If we use ar3, we need to pop it. */ if (size || current_function_args_size) { /* If we are ommitting the frame pointer, we still have @@ -1306,9 +1309,9 @@ c4x_check_legit_addr (mode, addr, strict) rtx addr; int strict; { - rtx base = NULL_RTX; /* Base register (AR0-AR7) */ - rtx indx = NULL_RTX; /* Index register (IR0,IR1) */ - rtx disp = NULL_RTX; /* Displacement */ + rtx base = NULL_RTX; /* Base register (AR0-AR7). */ + rtx indx = NULL_RTX; /* Index register (IR0,IR1). */ + rtx disp = NULL_RTX; /* Displacement. */ enum rtx_code code; code = GET_CODE (addr); @@ -1369,7 +1372,7 @@ c4x_check_legit_addr (mode, addr, strict) case REG: if (REG_P (op1)) { - base = op0; /* base + index */ + base = op0; /* Base + index. */ indx = op1; if (IS_INDEX_REG (base) || IS_ADDR_REG (indx)) { @@ -1379,7 +1382,7 @@ c4x_check_legit_addr (mode, addr, strict) } else { - base = op0; /* base + displacement */ + base = op0; /* Base + displacement. */ disp = op1; } break; @@ -1723,16 +1726,16 @@ c4x_output_cbranch (form, seq) void c4x_print_operand (file, op, letter) - FILE *file; /* file to write to */ - rtx op; /* operand to print */ - int letter; /* %<letter> or 0 */ + FILE *file; /* File to write to. */ + rtx op; /* Operand to print. */ + int letter; /* %<letter> or 0. */ { rtx op1; enum rtx_code code; switch (letter) { - case '#': /* delayed */ + case '#': /* Delayed. */ if (final_sequence) asm_fprintf (file, "d"); return; @@ -1741,32 +1744,32 @@ c4x_print_operand (file, op, letter) code = GET_CODE (op); switch (letter) { - case 'A': /* direct address */ + case 'A': /* Direct address. */ if (code == CONST_INT || code == SYMBOL_REF) asm_fprintf (file, "@"); break; - case 'H': /* sethi */ + case 'H': /* Sethi. */ output_addr_const (file, op); return; - case 'I': /* reversed condition */ + case 'I': /* Reversed condition. */ code = reverse_condition (code); break; - case 'L': /* log 2 of constant */ + case 'L': /* Log 2 of constant. */ if (code != CONST_INT) fatal_insn ("c4x_print_operand: %%L inconsistency", op); fprintf (file, "%d", exact_log2 (INTVAL (op))); return; - case 'N': /* ones complement of small constant */ + case 'N': /* Ones complement of small constant. */ if (code != CONST_INT) fatal_insn ("c4x_print_operand: %%N inconsistency", op); fprintf (file, "%d", ~INTVAL (op)); return; - case 'K': /* generate ldp(k) if direct address */ + case 'K': /* Generate ldp(k) if direct address. */ if (! TARGET_SMALL && code == MEM && GET_CODE (XEXP (op, 0)) == LO_SUM @@ -1783,8 +1786,8 @@ c4x_print_operand (file, op, letter) } return; - case 'M': /* generate ldp(k) if direct address */ - if (! TARGET_SMALL /* only used in asm statements */ + case 'M': /* Generate ldp(k) if direct address. */ + if (! TARGET_SMALL /* Only used in asm statements. */ && code == MEM && (GET_CODE (XEXP (op, 0)) == CONST || GET_CODE (XEXP (op, 0)) == SYMBOL_REF)) @@ -1795,7 +1798,7 @@ c4x_print_operand (file, op, letter) } return; - case 'O': /* offset address */ + case 'O': /* Offset address. */ if (code == MEM && c4x_autoinc_operand (op, Pmode)) break; else if (code == MEM) @@ -1806,10 +1809,10 @@ c4x_print_operand (file, op, letter) fatal_insn ("c4x_print_operand: %%O inconsistency", op); return; - case 'C': /* call */ + case 'C': /* Call. */ break; - case 'U': /* call/callu */ + case 'U': /* Call/callu. */ if (code != SYMBOL_REF) asm_fprintf (file, "u"); return; @@ -1988,26 +1991,26 @@ c4x_print_operand_address (file, addr) { fprintf (file, "*+%s(%s)", reg_names[REGNO (op1)], - reg_names[REGNO (op0)]); /* index + base */ + reg_names[REGNO (op0)]); /* Index + base. */ } else { fprintf (file, "*+%s(%s)", reg_names[REGNO (op0)], - reg_names[REGNO (op1)]); /* base + index */ + reg_names[REGNO (op1)]); /* Base + index. */ } } else if (INTVAL (op1) < 0) { fprintf (file, "*-%s(%d)", reg_names[REGNO (op0)], - -INTVAL (op1)); /* base - displacement */ + -INTVAL (op1)); /* Base - displacement. */ } else { fprintf (file, "*+%s(%d)", reg_names[REGNO (op0)], - INTVAL (op1)); /* base + displacement */ + INTVAL (op1)); /* Base + displacement. */ } } else @@ -2043,8 +2046,10 @@ c4x_print_operand_address (file, addr) } } + /* Return nonzero if the floating point operand will fit in the immediate field. */ + static int c4x_immed_float_p (op) rtx op; @@ -2062,16 +2067,17 @@ c4x_immed_float_p (op) convval[1] = 0; } - /* sign extend exponent */ + /* Sign extend exponent. */ exponent = (((convval[0] >> 24) & 0xff) ^ 0x80) - 0x80; if (exponent == -128) - return 1; /* 0.0 */ + return 1; /* 0.0 */ if ((convval[0] & 0x00000fff) != 0 || convval[1] != 0) - return 0; /* Precision doesn't fit */ - return (exponent <= 7) /* Positive exp */ - && (exponent >= -7); /* Negative exp */ + return 0; /* Precision doesn't fit. */ + return (exponent <= 7) /* Positive exp. */ + && (exponent >= -7); /* Negative exp. */ } + /* The last instruction in a repeat block cannot be a Bcond, DBcound, CALL, CALLCond, TRAPcond, RETIcond, RETScond, IDLE, RPTB or RPTS. @@ -2144,6 +2150,7 @@ c4x_rptb_nop_p (insn) Any additional labels can be emitted at this point. In addition, if the desired loop count register was not allocated, this routine does nothing. */ + void c4x_rptb_insert (insn) rtx insn; @@ -2411,7 +2418,7 @@ c4x_Q_constraint (op) /* ARx + 5-bit unsigned const - *ARx, *+ARx(n) for n < 32 */ + *ARx, *+ARx(n) for n < 32. */ int c4x_R_constraint (op) @@ -2526,7 +2533,7 @@ c4x_S_constraint (op) op0 = XEXP (op1, 0); op1 = XEXP (op1, 1); return REG_P (op0) && REG_P (op1); - /* pre or post_modify with a displacement of 0 or 1 + /* Pre or post_modify with a displacement of 0 or 1 should not be generated. */ } break; @@ -2599,7 +2606,7 @@ c4x_S_indirect (op) op1 = XEXP (op1, 1); return REG_P (op0) && IS_ADDR_OR_PSEUDO_REG (op0) && REG_P (op1) && IS_INDEX_OR_PSEUDO_REG (op1); - /* pre or post_modify with a displacement of 0 or 1 + /* Pre or post_modify with a displacement of 0 or 1 should not be generated. */ } @@ -3066,7 +3073,9 @@ symbolic_address_operand (op, mode) } } + /* Check dst operand of a move instruction. */ + int dst_operand (op, mode) rtx op; @@ -3084,6 +3093,7 @@ dst_operand (op, mode) /* Check src operand of two operand arithmetic instructions. */ + int src_operand (op, mode) rtx op; @@ -3315,7 +3325,7 @@ c4x_S_address_parse (op, base, incdec, index, disp) return; } } - /* Fallthrough */ + /* Fallthrough. */ default: fatal_insn ("Invalid indirect (S) memory address", op); @@ -3444,23 +3454,23 @@ valid_parallel_load_store (operands, mode) || (GET_CODE (op3) == MEM && reg_mentioned_p (op0, XEXP (op3, 0))))) return 0; - /* LDI||LDI */ + /* LDI||LDI. */ if (GET_CODE (op0) == REG && GET_CODE (op2) == REG) return (REGNO (op0) != REGNO (op2)) && GET_CODE (op1) == MEM && GET_CODE (op3) == MEM && ! c4x_address_conflict (op1, op3, 0, 0); - /* STI||STI */ + /* STI||STI. */ if (GET_CODE (op1) == REG && GET_CODE (op3) == REG) return GET_CODE (op0) == MEM && GET_CODE (op2) == MEM && ! c4x_address_conflict (op0, op2, 1, 1); - /* LDI||STI */ + /* LDI||STI. */ if (GET_CODE (op0) == REG && GET_CODE (op3) == REG) return GET_CODE (op1) == MEM && GET_CODE (op2) == MEM && ! c4x_address_conflict (op1, op2, 0, 1); - /* STI||LDI */ + /* STI||LDI. */ if (GET_CODE (op1) == REG && GET_CODE (op2) == REG) return GET_CODE (op0) == MEM && GET_CODE (op3) == MEM && ! c4x_address_conflict (op0, op3, 1, 0); @@ -3726,7 +3736,7 @@ int valid_operands (code, operands, mode) valid one into an invalid one, when the second operand is also a memory operand. The alternative is not to allow two memory operands for an insn when not optimizing. The problem only rarely - occurs, for example with the C-torture program DFcmp.c */ + occurs, for example with the C-torture program DFcmp.c. */ return ! optimize || c4x_valid_operands (code, operands, mode, 0); } @@ -4126,7 +4136,8 @@ ir1_mem_operand (op, mode) } -/* We allow autoincrement addressing. */ +/* This is similar to operand_subword but allows autoincrement + addressing. */ rtx c4x_operand_subword (op, i, validate_address, mode) @@ -4298,25 +4309,25 @@ c4x_handle_pragma (p_getc, p_ungetc, pname) data_tree = chainon (data_tree, new); else if (strcmp (pname, "FUNC_CANNOT_INLINE") == 0) - ; /* ignore */ + ; /* Ignore. */ else if (strcmp (pname, "FUNC_EXT_CALLED") == 0) - ; /* ignore */ + ; /* Ignore. */ else if (strcmp (pname, "FUNC_IS_PURE") == 0) pure_tree = chainon (pure_tree, new); else if (strcmp (pname, "FUNC_IS_SYSTEM") == 0) - ; /* ignore */ + ; /* Ignore. */ else if (strcmp (pname, "FUNC_NEVER_RETURNS") == 0) noreturn_tree = chainon (noreturn_tree, new); else if (strcmp (pname, "FUNC_NO_GLOBAL_ASG") == 0) - ; /* ignore */ + ; /* Ignore. */ else if (strcmp (pname, "FUNC_NO_IND_ASG") == 0) - ; /* ignore */ + ; /* Ignore. */ else if (strcmp (pname, "INTERRUPT") == 0) interrupt_tree = chainon (interrupt_tree, new); @@ -4395,6 +4406,7 @@ c4x_valid_type_attribute_p (type, attributes, identifier, args) /* !!! FIXME to emit RPTS correctly. */ + int c4x_rptb_rpts_p (insn, op) rtx insn, op; @@ -4443,10 +4455,12 @@ c4x_rptb_rpts_p (insn, op) A set of an address register followed by a use occurs a 2 cycle stall (reduced to a single cycle on the c40 using LDA), while a read of an address register followed by a use occurs a single cycle. */ + #define SET_USE_COST 3 #define SETLDA_USE_COST 2 #define READ_USE_COST 2 + int c4x_adjust_cost (insn, link, dep_insn, cost) rtx insn; diff --git a/gcc/config/c4x/c4x.h b/gcc/config/c4x/c4x.h index 4e40bba..b6b43be 100644 --- a/gcc/config/c4x/c4x.h +++ b/gcc/config/c4x/c4x.h @@ -21,15 +21,15 @@ the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -/* RUN-TIME TARGET SPECIFICATION */ +/* RUN-TIME TARGET SPECIFICATION. */ #define C4x 1 -/* Name of the c4x assembler */ +/* Name of the c4x assembler. */ #define ASM_PROG "c4x-as" -/* Name of the c4x linker */ +/* Name of the c4x linker. */ #define LD_PROG "c4x-ld" @@ -90,32 +90,32 @@ /* Target compilation option flags. */ -#define SMALL_MEMORY_FLAG 0x0000001 /* small memory model */ -#define MPYI_FLAG 0x0000002 /* use 24-bit MPYI for C3x */ -#define FAST_FIX_FLAG 0x0000004 /* fast fixing of floats */ -#define RPTS_FLAG 0x0000008 /* allow use of RPTS */ -#define C3X_FLAG 0x0000010 /* emit C3x code */ -#define TI_FLAG 0x0000020 /* be compatible with TI assembler */ -#define PARANOID_FLAG 0x0000040 /* be paranoid about DP reg. in ISRs */ -#define MEMPARM_FLAG 0x0000080 /* pass arguments on stack */ -#define DEVEL_FLAG 0x0000100 /* enable features under development */ -#define RPTB_FLAG 0x0000200 /* enable repeat block */ -#define BK_FLAG 0x0000400 /* use BK as general register */ -#define DB_FLAG 0x0000800 /* use decrement and branch for C3x */ -#define DEBUG_FLAG 0x0001000 /* enable debugging of GCC */ -#define HOIST_FLAG 0x0002000 /* force constants into registers */ -#define LOOP_UNSIGNED_FLAG 0x0004000 /* allow unsigned loop counters */ -#define FORCE_FLAG 0x0008000 /* force op0 and op1 to be same */ -#define PRESERVE_FLOAT_FLAG 0x0010000 /* save all 40 bits for floats */ -#define PARALLEL_PACK_FLAG 0x0020000 /* allow parallel insn packing */ -#define PARALLEL_MPY_FLAG 0x0040000 /* allow MPY||ADD, MPY||SUB insns */ -#define ALIASES_FLAG 0x0080000 /* assume mem refs possibly aliased */ - -#define C30_FLAG 0x0100000 /* emit C30 code */ -#define C31_FLAG 0x0200000 /* emit C31 code */ -#define C32_FLAG 0x0400000 /* emit C32 code */ -#define C40_FLAG 0x1000000 /* emit C40 code */ -#define C44_FLAG 0x2000000 /* emit C44 code */ +#define SMALL_MEMORY_FLAG 0x0000001 /* Small memory model. */ +#define MPYI_FLAG 0x0000002 /* Use 24-bit MPYI for C3x. */ +#define FAST_FIX_FLAG 0x0000004 /* Fast fixing of floats. */ +#define RPTS_FLAG 0x0000008 /* Allow use of RPTS. */ +#define C3X_FLAG 0x0000010 /* Emit C3x code. */ +#define TI_FLAG 0x0000020 /* Be compatible with TI assembler. */ +#define PARANOID_FLAG 0x0000040 /* Be paranoid about DP reg. in ISRs. */ +#define MEMPARM_FLAG 0x0000080 /* Pass arguments on stack. */ +#define DEVEL_FLAG 0x0000100 /* Enable features under development. */ +#define RPTB_FLAG 0x0000200 /* Enable repeat block. */ +#define BK_FLAG 0x0000400 /* Use BK as general register. */ +#define DB_FLAG 0x0000800 /* Use decrement and branch for C3x. */ +#define DEBUG_FLAG 0x0001000 /* Enable debugging of GCC. */ +#define HOIST_FLAG 0x0002000 /* Force constants into registers. */ +#define LOOP_UNSIGNED_FLAG 0x0004000 /* Allow unsigned loop counters. */ +#define FORCE_FLAG 0x0008000 /* Force op0 and op1 to be same. */ +#define PRESERVE_FLOAT_FLAG 0x0010000 /* Save all 40 bits for floats. */ +#define PARALLEL_PACK_FLAG 0x0020000 /* Allow parallel insn packing. */ +#define PARALLEL_MPY_FLAG 0x0040000 /* Allow MPY||ADD, MPY||SUB insns. */ +#define ALIASES_FLAG 0x0080000 /* Assume mem refs possibly aliased. */ + +#define C30_FLAG 0x0100000 /* Emit C30 code. */ +#define C31_FLAG 0x0200000 /* Emit C31 code. */ +#define C32_FLAG 0x0400000 /* Emit C32 code. */ +#define C40_FLAG 0x1000000 /* Emit C40 code. */ +#define C44_FLAG 0x2000000 /* Emit C44 code. */ /* Run-time compilation parameters selecting different hardware subsets. @@ -218,7 +218,7 @@ "Assume that pointers not aliased" }, \ { "", TARGET_DEFAULT, ""} } -/* Default target switches */ +/* Default target switches. */ /* Play safe, not the fastest code. */ #define TARGET_DEFAULT ALIASES_FLAG | PARALLEL_PACK_FLAG \ @@ -279,7 +279,7 @@ extern int target_flags; #define BCT_CHECK_LOOP_ITERATIONS !(TARGET_LOOP_UNSIGNED) -/* -mcpu=XX with XX = target DSP version number */ +/* -mcpu=XX with XX = target DSP version number. */ /* This macro is similar to `TARGET_SWITCHES' but defines names of command options that have values. Its definition is an @@ -318,11 +318,11 @@ extern const char *c4x_rpts_cycles_string, *c4x_cpu_version_string; #define OPTIMIZATION_OPTIONS(LEVEL,SIZE) c4x_optimization_options(LEVEL, SIZE) -/* Run Time Target Specification */ +/* Run Time Target Specification. */ #define TARGET_VERSION fprintf (stderr, " (TMS320C[34]x, TI syntax)"); -/* Storage Layout */ +/* Storage Layout. */ #define BITS_BIG_ENDIAN 0 #define BYTES_BIG_ENDIAN 0 @@ -350,7 +350,7 @@ extern const char *c4x_rpts_cycles_string, *c4x_cpu_version_string; #define EMPTY_FIELD_BOUNDARY 32 #define STRICT_ALIGNMENT 0 #define TARGET_FLOAT_FORMAT C4X_FLOAT_FORMAT -#define MAX_FIXED_MODE_SIZE 64 /* HImode */ +#define MAX_FIXED_MODE_SIZE 64 /* HImode. */ /* Number of bits in the high and low parts of a two stage load of an immediate constant. */ @@ -509,9 +509,9 @@ extern const char *c4x_rpts_cycles_string, *c4x_cpu_version_string; #define FIXED_REGISTERS \ { \ -/* R0 R1 R2 R3 R4 R5 R6 R7 AR0 AR1 AR2 AR3 AR4 AR5 AR6 AR7 */ \ +/* R0 R1 R2 R3 R4 R5 R6 R7 AR0 AR1 AR2 AR3 AR4 AR5 AR6 AR7. */ \ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \ -/* DP IR0 IR1 BK SP ST DIE IIE IIF RS RE RC R8 R9 R10 R11 */ \ +/* DP IR0 IR1 BK SP ST DIE IIE IIF RS RE RC R8 R9 R10 R11. */ \ 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0 \ } @@ -528,9 +528,9 @@ extern const char *c4x_rpts_cycles_string, *c4x_cpu_version_string; #define CALL_USED_REGISTERS \ { \ -/* R0 R1 R2 R3 R4 R5 R6 R7 AR0 AR1 AR2 AR3 AR4 AR5 AR6 AR7 */ \ +/* R0 R1 R2 R3 R4 R5 R6 R7 AR0 AR1 AR2 AR3 AR4 AR5 AR6 AR7. */ \ 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, \ -/* DP IR0 IR1 BK SP ST DIE IIE IIF RS RE RC R8 R9 R10 R11 */ \ +/* DP IR0 IR1 BK SP ST DIE IIE IIF RS RE RC R8 R9 R10 R11. */ \ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1 \ } @@ -548,9 +548,9 @@ extern const char *c4x_rpts_cycles_string, *c4x_cpu_version_string; { \ int i; \ \ - reg_names[DIE_REGNO] = "ie"; /* clobber die */ \ - reg_names[IF_REGNO] = "if"; /* clobber iie */ \ - reg_names[IOF_REGNO] = "iof"; /* clobber iif */ \ + reg_names[DIE_REGNO] = "ie"; /* Clobber die. */ \ + reg_names[IF_REGNO] = "if"; /* Clobber iie. */ \ + reg_names[IOF_REGNO] = "iof"; /* Clobber iif. */ \ \ for (i = R8_REGNO; i <= R11_REGNO; i++) \ { \ @@ -565,7 +565,7 @@ extern const char *c4x_rpts_cycles_string, *c4x_cpu_version_string; } \ } -/* Order of Allocation of Registers */ +/* Order of Allocation of Registers. */ /* List the order in which to allocate registers. Each register must be listed once, even those in FIXED_REGISTERS. @@ -653,20 +653,20 @@ extern const char *c4x_rpts_cycles_string, *c4x_cpu_version_string; enum reg_class { NO_REGS, - R0R1_REGS, /* 't' */ - R2R3_REGS, /* 'u' */ - EXT_LOW_REGS, /* 'q' */ - EXT_REGS, /* 'f' */ - ADDR_REGS, /* 'a' */ - INDEX_REGS, /* 'x' */ - BK_REG, /* 'k' */ - SP_REG, /* 'b' */ - RC_REG, /* 'v' */ + R0R1_REGS, /* 't'. */ + R2R3_REGS, /* 'u'. */ + EXT_LOW_REGS, /* 'q'. */ + EXT_REGS, /* 'f'. */ + ADDR_REGS, /* 'a'. */ + INDEX_REGS, /* 'x'. */ + BK_REG, /* 'k'. */ + SP_REG, /* 'b'. */ + RC_REG, /* 'v'. */ COUNTER_REGS, /* */ - INT_REGS, /* 'c' */ - GENERAL_REGS, /* 'r' */ - DP_REG, /* 'z' */ - ST_REG, /* 'y' */ + INT_REGS, /* 'c'. */ + GENERAL_REGS, /* 'r'. */ + DP_REG, /* 'z'. */ + ST_REG, /* 'y'. */ ALL_REGS, LIM_REG_CLASSES }; @@ -701,22 +701,22 @@ enum reg_class #define REG_CLASS_CONTENTS \ { \ - {0x00000000}, /* No registers */ \ - {0x00000003}, /* 't' R0-R1 */ \ - {0x0000000c}, /* 'u' R2-R3 */ \ - {0x000000ff}, /* 'q' R0-R7 */ \ + {0x00000000}, /* No registers. */ \ + {0x00000003}, /* 't' R0-R1 . */ \ + {0x0000000c}, /* 'u' R2-R3 . */ \ + {0x000000ff}, /* 'q' R0-R7 . */ \ {0xf00000ff}, /* 'f' R0-R11 */ \ - {0x0000ff00}, /* 'a' AR0-AR7 */ \ - {0x00060000}, /* 'x' IR0-IR1 */ \ - {0x00080000}, /* 'k' BK */ \ - {0x00100000}, /* 'b' SP */ \ - {0x08000000}, /* 'v' RC */ \ - {0x0800ff00}, /* RC,AR0-AR7 */ \ - {0x0e1eff00}, /* 'c' AR0-AR7, IR0-IR1, BK, SP, RS, RE, RC */ \ - {0xfe1effff}, /* 'r' R0-R11, AR0-AR7, IR0-IR1, BK, SP, RS, RE, RC */\ - {0x00010000}, /* 'z' DP */ \ - {0x00200000}, /* 'y' ST */ \ - {0xffffffff}, /* All registers */ \ + {0x0000ff00}, /* 'a' AR0-AR7. */ \ + {0x00060000}, /* 'x' IR0-IR1. */ \ + {0x00080000}, /* 'k' BK. */ \ + {0x00100000}, /* 'b' SP. */ \ + {0x08000000}, /* 'v' RC. */ \ + {0x0800ff00}, /* RC,AR0-AR7. */ \ + {0x0e1eff00}, /* 'c' AR0-AR7, IR0-IR1, BK, SP, RS, RE, RC. */ \ + {0xfe1effff}, /* 'r' R0-R11, AR0-AR7, IR0-IR1, BK, SP, RS, RE, RC. */\ + {0x00010000}, /* 'z' DP. */ \ + {0x00200000}, /* 'y' ST. */ \ + {0xffffffff}, /* All registers. */ \ } /* The same information, inverted: @@ -821,26 +821,27 @@ enum reg_class (((MODE) == CCmode || (MODE) == CC_NOOVmode) ? 1 : ((MODE) == HFmode) ? 1 : \ ((GET_MODE_SIZE(MODE) + UNITS_PER_WORD - 1) / UNITS_PER_WORD)) -#define IS_INT5_CONST(VAL) (((VAL) <= 15) && ((VAL) >= -16)) /* 'K' */ +#define IS_INT5_CONST(VAL) (((VAL) <= 15) && ((VAL) >= -16)) /* 'K'. */ -#define IS_UINT5_CONST(VAL) (((VAL) <= 31) && ((VAL) >= 0)) /* 'R' */ +#define IS_UINT5_CONST(VAL) (((VAL) <= 31) && ((VAL) >= 0)) /* 'R'. */ -#define IS_INT8_CONST(VAL) (((VAL) <= 127) && ((VAL) >= -128)) /* 'J' */ +#define IS_INT8_CONST(VAL) (((VAL) <= 127) && ((VAL) >= -128)) /* 'J'. */ -#define IS_UINT8_CONST(VAL) (((VAL) <= 255) && ((VAL) >= 0)) /* 'M' */ +#define IS_UINT8_CONST(VAL) (((VAL) <= 255) && ((VAL) >= 0)) /* 'M'. */ -#define IS_INT16_CONST(VAL) (((VAL) <= 32767) && ((VAL) >= -32768)) /* 'I' */ +#define IS_INT16_CONST(VAL) (((VAL) <= 32767) && ((VAL) >= -32768)) /* 'I'. */ -#define IS_UINT16_CONST(VAL) (((VAL) <= 65535) && ((VAL) >= 0)) /* 'L' */ +#define IS_UINT16_CONST(VAL) (((VAL) <= 65535) && ((VAL) >= 0)) /* 'L'. */ -#define IS_NOT_UINT16_CONST(VAL) IS_UINT16_CONST(~(VAL)) /* 'N' */ +#define IS_NOT_UINT16_CONST(VAL) IS_UINT16_CONST(~(VAL)) /* 'N'. */ -#define IS_HIGH_CONST(VAL) (! TARGET_C3X && (((VAL) & 0xffff) == 0)) /* 'O' */ +#define IS_HIGH_CONST(VAL) \ +(! TARGET_C3X && (((VAL) & 0xffff) == 0)) /* 'O'. */ -#define IS_DISP1_CONST(VAL) (((VAL) <= 1) && ((VAL) >= -1)) /* 'S' */ +#define IS_DISP1_CONST(VAL) (((VAL) <= 1) && ((VAL) >= -1)) /* 'S'. */ -#define IS_DISP8_CONST(VAL) (((VAL) <= 255) && ((VAL) >= -255)) /* 'Q' */ +#define IS_DISP8_CONST(VAL) (((VAL) <= 255) && ((VAL) >= -255)) /* 'Q'. */ #define IS_DISP1_OFF_CONST(VAL) (IS_DISP1_CONST (VAL) \ && IS_DISP1_CONST (VAL + 1)) @@ -973,7 +974,7 @@ enum reg_class #define C4X_ARG0 -2 #define C4X_LOC0 1 -/* Basic Stack Layout */ +/* Basic Stack Layout. */ /* The stack grows upward, stack frame grows upward, and args grow downward. */ @@ -986,25 +987,25 @@ enum reg_class /* Define this if pushing a word on the stack makes the stack pointer a smaller address. */ -/* #define STACK_GROWS_DOWNWARD */ -/* Like the dsp16xx, i370, i960, and we32k ports */ +/* #define STACK_GROWS_DOWNWARD. */ +/* Like the dsp16xx, i370, i960, and we32k ports. */ /* Define this if the nominal address of the stack frame is at the high-address end of the local variables; that is, each additional local variable allocated goes at a more negative offset in the frame. */ -/* #define FRAME_GROWS_DOWNWARD */ +/* #define FRAME_GROWS_DOWNWARD. */ -/* Registers That Address the Stack Frame */ +/* Registers That Address the Stack Frame. */ -#define STACK_POINTER_REGNUM SP_REGNO /* SP */ -#define FRAME_POINTER_REGNUM AR3_REGNO /* AR3 */ -#define ARG_POINTER_REGNUM AR3_REGNO /* AR3 */ -#define STATIC_CHAIN_REGNUM AR0_REGNO /* AR0 */ +#define STACK_POINTER_REGNUM SP_REGNO /* SP. */ +#define FRAME_POINTER_REGNUM AR3_REGNO /* AR3. */ +#define ARG_POINTER_REGNUM AR3_REGNO /* AR3. */ +#define STATIC_CHAIN_REGNUM AR0_REGNO /* AR0. */ -/* Eliminating Frame Pointer and Arg Pointer */ +/* Eliminating Frame Pointer and Arg Pointer. */ #define FRAME_POINTER_REQUIRED 0 @@ -1020,7 +1021,7 @@ enum reg_class (DEPTH) = -(offset + get_frame_size ()); \ } -/* This is a hack... We need to specify a register. */ +/* This is a hack... We need to specify a register. */ #define ELIMINABLE_REGS \ {{ FRAME_POINTER_REGNUM, FRAME_POINTER_REGNUM }} @@ -1041,14 +1042,14 @@ enum reg_class } -/* Passing Function Arguments on the Stack */ +/* Passing Function Arguments on the Stack. */ #if 0 #define PUSH_ROUNDING(BYTES) (BYTES) #endif #define RETURN_POPS_ARGS(FUNDECL, FUNTYPE, STACK_SIZE) 0 -/* The following structure is used by calls.c, function.c, c4x.c */ +/* The following structure is used by calls.c, function.c, c4x.c. */ typedef struct c4x_args { @@ -1088,29 +1089,29 @@ CUMULATIVE_ARGS; /* 1 if N is a possible register number for function argument passing. */ #define FUNCTION_ARG_REGNO_P(REGNO) \ - ( ( ((REGNO) == AR2_REGNO) /* AR2 */ \ - || ((REGNO) == R2_REGNO) /* R2 */ \ - || ((REGNO) == R3_REGNO) /* R3 */ \ - || ((REGNO) == RC_REGNO) /* RC */ \ - || ((REGNO) == RS_REGNO) /* RS */ \ - || ((REGNO) == RE_REGNO)) /* RE */ \ + ( ( ((REGNO) == AR2_REGNO) /* AR2. */ \ + || ((REGNO) == R2_REGNO) /* R2. */ \ + || ((REGNO) == R3_REGNO) /* R3. */ \ + || ((REGNO) == RC_REGNO) /* RC. */ \ + || ((REGNO) == RS_REGNO) /* RS. */ \ + || ((REGNO) == RE_REGNO)) /* RE. */ \ ? 1 \ : 0) -/* How Scalar Function Values Are Returned */ +/* How Scalar Function Values Are Returned. */ #define FUNCTION_VALUE(VALTYPE, FUNC) \ - gen_rtx(REG, TYPE_MODE(VALTYPE), R0_REGNO) /* Return in R0 */ + gen_rtx(REG, TYPE_MODE(VALTYPE), R0_REGNO) /* Return in R0. */ #define LIBCALL_VALUE(MODE) \ - gen_rtx(REG, MODE, R0_REGNO) /* Return in R0 */ + gen_rtx(REG, MODE, R0_REGNO) /* Return in R0. */ #define FUNCTION_VALUE_REGNO_P(REGNO) ((REGNO) == R0_REGNO) -/* How Large Values Are Returned */ +/* How Large Values Are Returned. */ #define DEFAULT_PCC_STRUCT_RETURN 0 -#define STRUCT_VALUE_REGNUM AR0_REGNO /* AR0 */ +#define STRUCT_VALUE_REGNUM AR0_REGNO /* AR0. */ /* Varargs handling. */ @@ -1120,13 +1121,13 @@ CUMULATIVE_ARGS; #define EXPAND_BUILTIN_VA_ARG(valist, type) \ c4x_va_arg (valist, type) -/* Function Entry and Exit */ +/* Function Entry and Exit. */ #define FUNCTION_PROLOGUE(FILE, SIZE) c4x_function_prologue(FILE, SIZE) #define FUNCTION_EPILOGUE(FILE, SIZE) c4x_function_epilogue(FILE, SIZE) -/* Generating Code for Profiling */ +/* Generating Code for Profiling. */ /* Note that the generated assembly uses the ^ operator to load the 16 MSBs of the address. This is not supported by the TI assembler. @@ -1412,7 +1413,7 @@ CUMULATIVE_ARGS; asm(" popf r0"); \ asm(" pop r0"); \ -/* Implicit Calls to Library Routines */ +/* Implicit Calls to Library Routines. */ #define MULQI3_LIBCALL "__mulqi3" #define DIVQI3_LIBCALL "__divqi3" @@ -1571,7 +1572,7 @@ CUMULATIVE_ARGS; || GET_MODE (Y) == ABS) \ ? CC_NOOVmode : CCmode) -/* Addressing Modes */ +/* Addressing Modes. */ #define HAVE_POST_INCREMENT 1 #define HAVE_PRE_INCREMENT 1 @@ -1722,7 +1723,7 @@ CUMULATIVE_ARGS; #define ENCODE_SECTION_INFO(DECL) c4x_encode_section_info (DECL); -/* Descripting Relative Cost of Operations */ +/* Descripting Relative Cost of Operations. */ /* Provide the costs of a rtl expression. This is in the body of a switch on CODE. @@ -1843,7 +1844,7 @@ if (REG_P (OP1) && ! REG_P (OP0)) \ #define REGISTER_MOVE_COST(FROM, TO) 2 /* Memory move cost is same as fast register move. Maybe this should - be bumped up? */ + be bumped up?. */ #define MEMORY_MOVE_COST(M,C,I) 4 @@ -2028,7 +2029,7 @@ dtors_section () \ } \ else if (TREE_CODE (DECL) == VAR_DECL) \ { \ - if ((0 && RELOC) /* should be (flag_pic && RELOC) */ \ + if ((0 && RELOC) /* Should be (flag_pic && RELOC). */ \ || ! TREE_READONLY (DECL) || TREE_SIDE_EFFECTS (DECL) \ || ! DECL_INITIAL (DECL) \ || (DECL_INITIAL (DECL) != error_mark_node \ @@ -2050,7 +2051,7 @@ dtors_section () \ #define SELECT_RTX_SECTION(MODE, RTX) const_section() -/* Overall Framework of an Assembler File */ +/* Overall Framework of an Assembler File. */ #define ASM_FILE_START(FILE) \ { \ @@ -2148,9 +2149,9 @@ dtors_section () \ #define ASM_CLOSE_PAREN ")" -/* Output and Generation of Labels */ +/* Output and Generation of Labels. */ -#define NO_DOT_IN_LABEL /* Only required for TI format */ +#define NO_DOT_IN_LABEL /* Only required for TI format. */ #define ASM_OUTPUT_LABEL(FILE, NAME) \ do { assemble_name (FILE, NAME); fputs (":\n", FILE); } while (0); @@ -2207,7 +2208,7 @@ asm_fprintf (FILE, "%s%d:\n", PREFIX, NUM) sprintf ((OUTPUT), "%s%d", (NAME), (LABELNO))) -/* Output of Dispatch Tables */ +/* Output of Dispatch Tables. */ /* This is how to output an element of a case-vector that is absolute. */ @@ -2235,7 +2236,7 @@ asm_fprintf (FILE, "%s%d:\n", PREFIX, NUM) #define LONG_LONG_TYPE_SIZE 64 #define FLOAT_TYPE_SIZE 32 #define DOUBLE_TYPE_SIZE 32 -#define LONG_DOUBLE_TYPE_SIZE 64 /* actually only 40 */ +#define LONG_DOUBLE_TYPE_SIZE 64 /* Actually only 40. */ /* Allow #sccs in preprocessor. */ @@ -2248,7 +2249,7 @@ asm_fprintf (FILE, "%s%d:\n", PREFIX, NUM) #define CPP_PREDEFINES "" -/* Output of Uninitialized Variables */ +/* Output of Uninitialized Variables. */ /* This says how to output an assembler line to define a local uninitialized variable. */ @@ -2270,12 +2271,12 @@ asm_fprintf (FILE, "%s%d:\n", PREFIX, NUM) assemble_name (FILE, (NAME)), \ fprintf (FILE, ",%u\n", (ROUNDED))) -/* Macros Controlling Initialization Routines */ +/* Macros Controlling Initialization Routines. */ #define OBJECT_FORMAT_COFF #define REAL_NM_FILE_NAME "c4x-nm" -/* Output of Assembler Instructions */ +/* Output of Assembler Instructions. */ /* Register names when used for integer modes. */ @@ -2321,7 +2322,7 @@ asm_fprintf (FILE, "%s%d:\n", PREFIX, NUM) #define VALID_MACHINE_TYPE_ATTRIBUTE(TYPE, ATTRIBUTES, NAME, ARGS) \ (c4x_valid_type_attribute_p (TYPE, ATTRIBUTES, NAME, ARGS)) -/* Assembler Commands for Alignment */ +/* Assembler Commands for Alignment. */ #define ASM_OUTPUT_SKIP(FILE, SIZE) \ { int c = SIZE; \ @@ -2339,7 +2340,7 @@ asm_fprintf (FILE, "%s%d:\n", PREFIX, NUM) /* Macros for SDB and DWARF Output (use .sdef instead of .def - to avoid conflict with TI's use of .def) */ + to avoid conflict with TI's use of .def). */ #define SDB_DELIM "\n" #define SDB_DEBUGGING_INFO @@ -2530,7 +2531,7 @@ do { fprintf (asm_out_file, "\t.sdef\t"); \ /* MOVE_RATIO is the number of move instructions that is better than a block move. */ -#define MOVE_RATIO 2 /* Default value */ +#define MOVE_RATIO 2 /* Default value. */ #define BSS_SECTION_ASM_OP ".bss" @@ -2616,11 +2617,12 @@ if (final_sequence != NULL_RTX) \ /* Variables in c4x.c */ -extern enum reg_class c4x_regclass_map[];/* smallest class containing REGNO */ +/* Smallest class containing REGNO. */ +extern enum reg_class c4x_regclass_map[]; extern enum machine_mode c4x_caller_save_map[]; -extern struct rtx_def *c4x_compare_op0; /* operand 0 for comparisons */ -extern struct rtx_def *c4x_compare_op1; /* operand 1 for comparisons */ +extern struct rtx_def *c4x_compare_op0; /* Operand 0 for comparisons. */ +extern struct rtx_def *c4x_compare_op1; /* Operand 1 for comparisons. */ -extern int c4x_rpts_cycles; /* max cycles for RPTS */ -extern int c4x_cpu_version; /* cpu version C30/31/32/40/44 */ +extern int c4x_rpts_cycles; /* Max cycles for RPTS. */ +extern int c4x_cpu_version; /* Cpu version C30/31/32/40/44. */ |