diff options
Diffstat (limited to 'gcc/config/i386')
-rw-r--r-- | gcc/config/i386/i386-protos.h | 5 | ||||
-rw-r--r-- | gcc/config/i386/i386.c | 34 | ||||
-rw-r--r-- | gcc/config/i386/i386.h | 23 |
3 files changed, 26 insertions, 36 deletions
diff --git a/gcc/config/i386/i386-protos.h b/gcc/config/i386/i386-protos.h index e263116ace3..b97d82f1609 100644 --- a/gcc/config/i386/i386-protos.h +++ b/gcc/config/i386/i386-protos.h @@ -131,11 +131,6 @@ extern rtx assign_386_stack_local PARAMS ((enum machine_mode, int)); extern int ix86_attr_length_immediate_default PARAMS ((rtx, int)); extern int ix86_attr_length_address_default PARAMS ((rtx)); -extern int ix86_issue_rate PARAMS ((void)); -extern int ix86_adjust_cost PARAMS ((rtx, rtx, rtx, int)); -extern void ix86_sched_init PARAMS ((FILE *, int)); -extern int ix86_sched_reorder PARAMS ((FILE *, int, rtx *, int, int)); -extern int ix86_variable_issue PARAMS ((FILE *, int, rtx, int)); extern enum machine_mode ix86_fp_compare_mode PARAMS ((enum rtx_code)); extern int x86_64_sign_extended_value PARAMS ((rtx)); diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index e952e61b08f..51d32f6ae51 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -574,6 +574,11 @@ static HOST_WIDE_INT ix86_GOT_alias_set PARAMS ((void)); static void ix86_adjust_counter PARAMS ((rtx, HOST_WIDE_INT)); static rtx ix86_expand_aligntest PARAMS ((rtx, int)); static void ix86_expand_strlensi_unroll_1 PARAMS ((rtx, rtx)); +static int ix86_issue_rate PARAMS ((void)); +static int ix86_adjust_cost PARAMS ((rtx, rtx, rtx, int)); +static void ix86_sched_init PARAMS ((FILE *, int, int)); +static int ix86_sched_reorder PARAMS ((FILE *, int, rtx *, int *, int)); +static int ix86_variable_issue PARAMS ((FILE *, int, rtx, int)); struct ix86_address { @@ -649,6 +654,17 @@ static void sco_asm_out_constructor PARAMS ((rtx, int)); #undef TARGET_ASM_CLOSE_PAREN #define TARGET_ASM_CLOSE_PAREN "" +#undef TARGET_SCHED_ADJUST_COST +#define TARGET_SCHED_ADJUST_COST ix86_adjust_cost +#undef TARGET_SCHED_ISSUE_RATE +#define TARGET_SCHED_ISSUE_RATE ix86_issue_rate +#undef TARGET_SCHED_VARIABLE_ISSUE +#define TARGET_SCHED_VARIABLE_ISSUE ix86_variable_issue +#undef TARGET_SCHED_INIT +#define TARGET_SCHED_INIT ix86_sched_init +#undef TARGET_SCHED_REORDER +#define TARGET_SCHED_REORDER ix86_sched_reorder + struct gcc_target targetm = TARGET_INITIALIZER; /* Sometimes certain combinations of command options do not make @@ -8373,7 +8389,7 @@ ix86_attr_length_address_default (insn) /* Return the maximum number of instructions a cpu can issue. */ -int +static int ix86_issue_rate () { switch (ix86_cpu) @@ -8479,7 +8495,7 @@ ix86_agi_dependant (insn, dep_insn, insn_type) return modified_in_p (addr, dep_insn); } -int +static int ix86_adjust_cost (insn, link, dep_insn, cost) rtx insn, link, dep_insn; int cost; @@ -8707,10 +8723,11 @@ ix86_dump_ppro_packet (dump) /* We're beginning a new block. Initialize data structures as necessary. */ -void -ix86_sched_init (dump, sched_verbose) +static void +ix86_sched_init (dump, sched_verbose, veclen) FILE *dump ATTRIBUTE_UNUSED; int sched_verbose ATTRIBUTE_UNUSED; + int veclen ATTRIBUTE_UNUSED; { memset (&ix86_sched_data, 0, sizeof (ix86_sched_data)); } @@ -8941,14 +8958,15 @@ ix86_sched_reorder_ppro (ready, e_ready) /* We are about to being issuing insns for this clock cycle. Override the default sort algorithm to better slot instructions. */ -int -ix86_sched_reorder (dump, sched_verbose, ready, n_ready, clock_var) +static int +ix86_sched_reorder (dump, sched_verbose, ready, n_readyp, clock_var) FILE *dump ATTRIBUTE_UNUSED; int sched_verbose ATTRIBUTE_UNUSED; rtx *ready; - int n_ready; + int *n_readyp; int clock_var ATTRIBUTE_UNUSED; { + int n_ready = *n_readyp; rtx *e_ready = ready + n_ready - 1; if (n_ready < 2) @@ -8975,7 +8993,7 @@ out: /* We are about to issue INSN. Return the number of insns left on the ready queue that can be issued this cycle. */ -int +static int ix86_variable_issue (dump, sched_verbose, insn, can_issue_more) FILE *dump; int sched_verbose; diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h index a0d23f65832..bc5fd0875c4 100644 --- a/gcc/config/i386/i386.h +++ b/gcc/config/i386/i386.h @@ -2638,29 +2638,6 @@ while (0) register. */ #define NO_RECURSIVE_FUNCTION_CSE - -/* A C statement (sans semicolon) to update the integer variable COST - based on the relationship between INSN that is dependent on - DEP_INSN through the dependence LINK. The default is to make no - adjustment to COST. This can be used for example to specify to - the scheduler that an output- or anti-dependence does not incur - the same cost as a data-dependence. */ - -#define ADJUST_COST(insn,link,dep_insn,cost) \ - (cost) = ix86_adjust_cost(insn, link, dep_insn, cost) - -#define ISSUE_RATE \ - ix86_issue_rate () - -#define MD_SCHED_INIT(DUMP, SCHED_VERBOSE, MAX_READY) \ - ix86_sched_init (DUMP, SCHED_VERBOSE) - -#define MD_SCHED_REORDER(DUMP, SCHED_VERBOSE, READY, N_READY, CLOCK, CIM) \ - (CIM) = ix86_sched_reorder (DUMP, SCHED_VERBOSE, READY, N_READY, CLOCK) - -#define MD_SCHED_VARIABLE_ISSUE(DUMP, SCHED_VERBOSE, INSN, CAN_ISSUE_MORE) \ - ((CAN_ISSUE_MORE) = \ - ix86_variable_issue (DUMP, SCHED_VERBOSE, INSN, CAN_ISSUE_MORE)) /* Add any extra modes needed to represent the condition code. |