1 (***********************************************************************)
5 (* Xavier Leroy, projet Cristal, INRIA Rocquencourt *)
7 (* Copyright 1997 Institut National de Recherche en Informatique et *)
8 (* en Automatique. All rights reserved. This file is distributed *)
9 (* under the terms of the Q Public License version 1.0. *)
11 (***********************************************************************)
15 (* Instruction scheduling *)
18 { instr
: Linearize.instruction
;
20 mutable sons
: (code_dag_node
* int) list
;
23 mutable ancestors
: int;
24 mutable emitted_ancestors
: int }
26 class virtual scheduler_generic
: object
27 (* Can be overriden by processor description *)
28 method virtual oper_issue_cycles
: Mach.operation
-> int
29 (* Number of cycles needed to issue the given operation *)
30 method virtual oper_latency
: Mach.operation
-> int
31 (* Number of cycles needed to complete the given operation *)
32 method reload_retaddr_issue_cycles
: int
33 (* Number of cycles needed to issue a Lreloadretaddr operation *)
34 method reload_retaddr_latency
: int
35 (* Number of cycles needed to complete a Lreloadretaddr operation *)
36 method oper_in_basic_block
: Mach.operation
-> bool
37 (* Says whether the given operation terminates a basic block *)
38 method is_store
: Mach.operation
-> bool
39 (* Says whether the given operation is a memory store *)
40 method is_load
: Mach.operation
-> bool
41 (* Says whether the given operation is a memory load *)
42 method is_checkbound
: Mach.operation
-> bool
43 (* Says whether the given operation is a checkbound *)
45 method schedule_fundecl
: Linearize.fundecl
-> Linearize.fundecl