module BTL_BlockOptimizer:sig
..end
Main interface to communicate with BTL oracles
module IM:Stdlib.Map.Make
(
Stdlib.Int
)
val simple_schedule : BinNums.positive ->
BTL.iblock_info ->
BTL.iblock_info Maps.PTree.tree ->
RTLtyping.regenv -> bool -> BTL.iblock_info Maps.PTree.tree option
val turn_all_loads_nontrap : BinNums.positive ->
BTL.iblock_info ->
BTL.iblock_info Maps.PTree.tree -> BTL.iblock_info Maps.PTree.tree
val schedule_blk : Camlcoq.P.t ->
BTL.iblock_info ->
BTL.iblock_info Maps.PTree.tree ->
RTLtyping.regenv ->
(BTL_IfLiftingOracle.IM.key * int) BTL_IfLiftingOracle.IM.t ->
bool -> BTL.iblock_info Maps.PTree.tree option
val schedule_tf : bool ->
BTL.iblock_info Maps.PTree.t ->
BTLtypes.function_info ->
Camlcoq.P.t -> BTL.iblock_info -> BTL.iblock_info Maps.PTree.t
val apply_optims : ('a -> 'b -> 'c -> 'd -> 'a) -> 'a -> 'b -> ('c * 'd) list -> 'a
val btl_expansions_oracle : BTL.coq_function ->
(BTL.iblock_info Maps.PTree.t * BTL.function_info) *
BTL_Invariants.invariants Maps.PTree.t
val btl_int_promotion_oracle : BTL.coq_function -> (BTL.code * BTL.function_info) * BTL_Invariants.gluemap
val btl_lazy_code_oracle : BTL.coq_function ->
(BTL.iblock_info Maps.PTree.t * BTL.function_info) * BTL_Invariants.gluemap
val btl_scheduling_oracle : BTL.coq_function ->
(BTL.iblock_info Maps.PTree.t * BTL.function_info) *
BTL_Invariants.invariants Maps.PTree.t
module StoreMotionOracle1:StoreMotionOracle.Make
(
StoreMotionOracle.StTotal
)
module StoreMotionOracle2:StoreMotionOracle.Make
(
StoreMotionOracle.StPartial
)
val btl_store_motion_oracle : BTL.coq_function -> (BTL.code * BTL.function_info) * BTL_Invariants.gluemap
val btl_expansions_rrules : unit -> BTL_SEsimuref.rrules_set
val btl_lazy_code_rrules : unit -> BTL_SEsimuref.rrules_set
val btl_lazy_code_annotate_analysis : unit -> bool
val btl_store_motion_rrules : unit -> BTL_SEsimuref.rrules_set
val btl_store_motion_annotate_analysis : unit -> bool
val btl_scheduling_rrules : unit -> BTL_SEsimuref.rrules_set
val btl_scheduling_annotate_analysis : unit -> bool