File: schedgen.mli

package info (click to toggle)
jocaml 3.12.1-1
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 16,740 kB
  • sloc: ml: 107,815; ansic: 36,537; sh: 5,467; asm: 5,359; lisp: 4,041; makefile: 2,527; perl: 45; fortran: 21; sed: 19; cs: 9; tcl: 2
file content (46 lines) | stat: -rw-r--r-- 2,239 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
(***********************************************************************)
(*                                                                     *)
(*                           Objective Caml                            *)
(*                                                                     *)
(*            Xavier Leroy, projet Cristal, INRIA Rocquencourt         *)
(*                                                                     *)
(*  Copyright 1997 Institut National de Recherche en Informatique et   *)
(*  en Automatique.  All rights reserved.  This file is distributed    *)
(*  under the terms of the Q Public License version 1.0.               *)
(*                                                                     *)
(***********************************************************************)

(* $Id: schedgen.mli 10507 2010-06-04 19:16:58Z maranget $ *)

(* Instruction scheduling *)

type code_dag_node =
  { instr: Linearize.instruction;
    delay: int;
    mutable sons: (code_dag_node * int) list;
    mutable date: int;
    mutable length: int;
    mutable ancestors: int;
    mutable emitted_ancestors: int }

class virtual scheduler_generic : object
  (* Can be overridden by processor description *)
  method virtual oper_issue_cycles : Mach.operation -> int
      (* Number of cycles needed to issue the given operation *)
  method virtual oper_latency : Mach.operation -> int
      (* Number of cycles needed to complete the given operation *)
  method reload_retaddr_issue_cycles : int
      (* Number of cycles needed to issue a Lreloadretaddr operation *)
  method reload_retaddr_latency : int
      (* Number of cycles needed to complete a Lreloadretaddr operation *)
  method oper_in_basic_block : Mach.operation -> bool
      (* Says whether the given operation terminates a basic block *)
  method is_store : Mach.operation -> bool
      (* Says whether the given operation is a memory store *)
  method is_load : Mach.operation -> bool
      (* Says whether the given operation is a memory load *)
  method is_checkbound : Mach.operation -> bool
      (* Says whether the given operation is a checkbound *)
  (* Entry point *)
  method schedule_fundecl : Linearize.fundecl -> Linearize.fundecl
end