aboutsummaryrefslogtreecommitdiffstats
path: root/scheduling/RTLtoBTL.v
blob: 309c616e0c8123e216e167426c9bf5902f60070c (plain)
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
Require Import Coqlib Maps.
Require Import AST Integers Values Events Memory Globalenvs Smallstep.
Require Import RTL Op Registers OptionMonad BTL.
Require Export BTLmatchRTL BTL_Livecheck.

Require Import Errors Linking.

(** External oracle *)
Axiom rtl2btl: RTL.function -> BTL.code * node * (PTree.t node).

Extract Constant rtl2btl => "RTLtoBTLaux.rtl2btl".

Local Open Scope error_monad_scope.

Definition transf_function (f: RTL.function) : res BTL.function :=
  let (tcte, dupmap) := rtl2btl f in
  let (tc, te) := tcte in
  let f' := BTL.mkfunction (RTL.fn_sig f) (RTL.fn_params f) (RTL.fn_stacksize f) tc te in
  do u <- verify_function dupmap f' f;
  do u <- liveness_checker f';
  OK f'.

Definition transf_fundef (f: RTL.fundef) : res fundef :=
  transf_partial_fundef transf_function f.

Definition transf_program (p: RTL.program) : res program :=
  transform_partial_program transf_fundef p.