mirror of git://gcc.gnu.org/git/gcc.git
modulo-sched.c (sms_order_nodes, [...]): Fix prototypes.
* modulo-sched.c (sms_order_nodes, permute_partial_schedule,
generate_prolog_epilog, duplicate_insns_of_cycles): Fix prototypes.
(calculate_order_params, sms_order_nodes): New parameter pmax_asap.
Save calculated max_asap in it.
(sms_schedule): Calculate maxii using max_asap.
Co-Authored-By: Andrey Belevantsev <abel@ispras.ru>
From-SVN: r129966
This commit is contained in:
parent
d9c1dc68ad
commit
5cd537421e
|
|
@ -1,3 +1,12 @@
|
||||||
|
2007-11-07 Dmitry Zhurikhin <zhur@ispras.ru>
|
||||||
|
Andrey Belevantsev <abel@ispras.ru>
|
||||||
|
|
||||||
|
* modulo-sched.c (sms_order_nodes, permute_partial_schedule,
|
||||||
|
generate_prolog_epilog, duplicate_insns_of_cycles): Fix prototypes.
|
||||||
|
(calculate_order_params, sms_order_nodes): New parameter pmax_asap.
|
||||||
|
Save calculated max_asap in it.
|
||||||
|
(sms_schedule): Calculate maxii using max_asap.
|
||||||
|
|
||||||
2007-11-07 Andreas Krebbel <krebbel1@de.ibm.com>
|
2007-11-07 Andreas Krebbel <krebbel1@de.ibm.com>
|
||||||
|
|
||||||
* doc/invoke.texi: Replace rs6000 dfp switches -mdfp/-mno-dfp
|
* doc/invoke.texi: Replace rs6000 dfp switches -mdfp/-mno-dfp
|
||||||
|
|
|
||||||
|
|
@ -194,15 +194,14 @@ static int compute_split_row (sbitmap, int, int, int, ddg_node_ptr);
|
||||||
|
|
||||||
static int issue_rate;
|
static int issue_rate;
|
||||||
|
|
||||||
static int sms_order_nodes (ddg_ptr, int, int * result);
|
static int sms_order_nodes (ddg_ptr, int, int *, int *);
|
||||||
static void set_node_sched_params (ddg_ptr);
|
static void set_node_sched_params (ddg_ptr);
|
||||||
static partial_schedule_ptr sms_schedule_by_order (ddg_ptr, int, int, int *);
|
static partial_schedule_ptr sms_schedule_by_order (ddg_ptr, int, int, int *);
|
||||||
static void permute_partial_schedule (partial_schedule_ptr ps, rtx last);
|
static void permute_partial_schedule (partial_schedule_ptr, rtx);
|
||||||
static void generate_prolog_epilog (partial_schedule_ptr, struct loop *loop,
|
static void generate_prolog_epilog (partial_schedule_ptr, struct loop *,
|
||||||
rtx, rtx);
|
rtx, rtx);
|
||||||
static void duplicate_insns_of_cycles (partial_schedule_ptr ps,
|
static void duplicate_insns_of_cycles (partial_schedule_ptr,
|
||||||
int from_stage, int to_stage,
|
int, int, int, rtx);
|
||||||
int is_prolog, rtx count_reg);
|
|
||||||
|
|
||||||
#define SCHED_ASAP(x) (((node_sched_params_ptr)(x)->aux.info)->asap)
|
#define SCHED_ASAP(x) (((node_sched_params_ptr)(x)->aux.info)->asap)
|
||||||
#define SCHED_TIME(x) (((node_sched_params_ptr)(x)->aux.info)->time)
|
#define SCHED_TIME(x) (((node_sched_params_ptr)(x)->aux.info)->time)
|
||||||
|
|
@ -866,7 +865,7 @@ sms_schedule (void)
|
||||||
rtx insn;
|
rtx insn;
|
||||||
ddg_ptr *g_arr, g;
|
ddg_ptr *g_arr, g;
|
||||||
int * node_order;
|
int * node_order;
|
||||||
int maxii;
|
int maxii, max_asap;
|
||||||
loop_iterator li;
|
loop_iterator li;
|
||||||
partial_schedule_ptr ps;
|
partial_schedule_ptr ps;
|
||||||
basic_block bb = NULL;
|
basic_block bb = NULL;
|
||||||
|
|
@ -1093,9 +1092,9 @@ sms_schedule (void)
|
||||||
node_order = XNEWVEC (int, g->num_nodes);
|
node_order = XNEWVEC (int, g->num_nodes);
|
||||||
|
|
||||||
mii = 1; /* Need to pass some estimate of mii. */
|
mii = 1; /* Need to pass some estimate of mii. */
|
||||||
rec_mii = sms_order_nodes (g, mii, node_order);
|
rec_mii = sms_order_nodes (g, mii, node_order, &max_asap);
|
||||||
mii = MAX (res_MII (g), rec_mii);
|
mii = MAX (res_MII (g), rec_mii);
|
||||||
maxii = MAXII_FACTOR * mii;
|
maxii = MAX (max_asap, MAXII_FACTOR * mii);
|
||||||
|
|
||||||
if (dump_file)
|
if (dump_file)
|
||||||
fprintf (dump_file, "SMS iis %d %d %d (rec_mii, mii, maxii)\n",
|
fprintf (dump_file, "SMS iis %d %d %d (rec_mii, mii, maxii)\n",
|
||||||
|
|
@ -1851,7 +1850,7 @@ typedef struct node_order_params * nopa;
|
||||||
|
|
||||||
static void order_nodes_of_sccs (ddg_all_sccs_ptr, int * result);
|
static void order_nodes_of_sccs (ddg_all_sccs_ptr, int * result);
|
||||||
static int order_nodes_in_scc (ddg_ptr, sbitmap, sbitmap, int*, int);
|
static int order_nodes_in_scc (ddg_ptr, sbitmap, sbitmap, int*, int);
|
||||||
static nopa calculate_order_params (ddg_ptr, int mii);
|
static nopa calculate_order_params (ddg_ptr, int, int *);
|
||||||
static int find_max_asap (ddg_ptr, sbitmap);
|
static int find_max_asap (ddg_ptr, sbitmap);
|
||||||
static int find_max_hv_min_mob (ddg_ptr, sbitmap);
|
static int find_max_hv_min_mob (ddg_ptr, sbitmap);
|
||||||
static int find_max_dv_min_mob (ddg_ptr, sbitmap);
|
static int find_max_dv_min_mob (ddg_ptr, sbitmap);
|
||||||
|
|
@ -1896,15 +1895,15 @@ check_nodes_order (int *node_order, int num_nodes)
|
||||||
|
|
||||||
/* Order the nodes of G for scheduling and pass the result in
|
/* Order the nodes of G for scheduling and pass the result in
|
||||||
NODE_ORDER. Also set aux.count of each node to ASAP.
|
NODE_ORDER. Also set aux.count of each node to ASAP.
|
||||||
Return the recMII for the given DDG. */
|
Put maximal ASAP to PMAX_ASAP. Return the recMII for the given DDG. */
|
||||||
static int
|
static int
|
||||||
sms_order_nodes (ddg_ptr g, int mii, int * node_order)
|
sms_order_nodes (ddg_ptr g, int mii, int * node_order, int *pmax_asap)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
int rec_mii = 0;
|
int rec_mii = 0;
|
||||||
ddg_all_sccs_ptr sccs = create_ddg_all_sccs (g);
|
ddg_all_sccs_ptr sccs = create_ddg_all_sccs (g);
|
||||||
|
|
||||||
nopa nops = calculate_order_params (g, mii);
|
nopa nops = calculate_order_params (g, mii, pmax_asap);
|
||||||
|
|
||||||
if (dump_file)
|
if (dump_file)
|
||||||
print_sccs (dump_file, sccs, g);
|
print_sccs (dump_file, sccs, g);
|
||||||
|
|
@ -1979,7 +1978,7 @@ order_nodes_of_sccs (ddg_all_sccs_ptr all_sccs, int * node_order)
|
||||||
|
|
||||||
/* MII is needed if we consider backarcs (that do not close recursive cycles). */
|
/* MII is needed if we consider backarcs (that do not close recursive cycles). */
|
||||||
static struct node_order_params *
|
static struct node_order_params *
|
||||||
calculate_order_params (ddg_ptr g, int mii ATTRIBUTE_UNUSED)
|
calculate_order_params (ddg_ptr g, int mii ATTRIBUTE_UNUSED, int *pmax_asap)
|
||||||
{
|
{
|
||||||
int u;
|
int u;
|
||||||
int max_asap;
|
int max_asap;
|
||||||
|
|
@ -2042,6 +2041,7 @@ calculate_order_params (ddg_ptr g, int mii ATTRIBUTE_UNUSED)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
*pmax_asap = max_asap;
|
||||||
return node_order_params_arr;
|
return node_order_params_arr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue