aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornicolas.nardino <nicolas.nardino@ens-lyon.fr>2021-06-06 20:49:34 +0200
committernicolas.nardino <nicolas.nardino@ens-lyon.fr>2021-06-06 20:49:34 +0200
commit2249f3c7771c285ccd25f6e94478be388a741da5 (patch)
tree2fde92e7d86b197c45eab5795582fb1041394419
parent9118878bd14e24cc04c2f36cab7aa7271a0f1852 (diff)
downloadcompcert-kvx-2249f3c7771c285ccd25f6e94478be388a741da5.tar.gz
compcert-kvx-2249f3c7771c285ccd25f6e94478be388a741da5.zip
Adding debug info
-rw-r--r--scheduling/RTLpathScheduleraux.ml95
1 files changed, 53 insertions, 42 deletions
diff --git a/scheduling/RTLpathScheduleraux.ml b/scheduling/RTLpathScheduleraux.ml
index 653765f5..8e7f0dfa 100644
--- a/scheduling/RTLpathScheduleraux.ml
+++ b/scheduling/RTLpathScheduleraux.ml
@@ -74,6 +74,11 @@ end
let get_live_regs_entry (sb : superblock) code =
+ (if !Clflags.option_debug_compcert > 6
+ then debug_flag := true);
+ debug "getting live regs for superblock:\n";
+ print_superblock sb code;
+ debug "\n";
let seqa = Array.map (fun i ->
(match PTree.get i code with
| Some ii -> ii
@@ -83,48 +88,53 @@ let get_live_regs_entry (sb : superblock) code =
| Some s -> s
| None -> Regset.empty))
sb.instructions in
- Array.fold_right (fun (ins, liveins) regset ->
- match ins with
- | Inop _ -> regset
- | Iop (_, args, dest, _)
- | Iload (_, _, _, args, dest, _) ->
- List.fold_left (fun set reg -> Registers.Regset.add reg set)
- (Registers.Regset.remove dest regset) args
- | Istore (_, _, args, src, _) ->
- List.fold_left (fun set reg -> Registers.Regset.add reg set)
- (Registers.Regset.add src regset) args
- | Icall (_, fn, args, dest, _) ->
- List.fold_left (fun set reg -> Registers.Regset.add reg set)
- ((match fn with
- | Datatypes.Coq_inl reg -> (Registers.Regset.add reg)
- | Datatypes.Coq_inr _ -> (fun x -> x))
- (Registers.Regset.remove dest regset))
- args
- | Itailcall (_, fn, args) ->
- List.fold_left (fun set reg -> Registers.Regset.add reg set)
- (match fn with
- | Datatypes.Coq_inl reg -> (Registers.Regset.add reg regset)
- | Datatypes.Coq_inr _ -> regset)
- args
- | Ibuiltin (_, args, dest, _) ->
- List.fold_left (fun set reg ->
- match reg with
- | AST.BA r -> Registers.Regset.add r set
- | _ -> set)
- (match dest with
- | AST.BR r -> Registers.Regset.remove r regset
- | _ -> regset)
- args
- | Icond (_, args, _, _, _) ->
- List.fold_left (fun set reg ->
- Registers.Regset.add reg set)
- regset args
- | Ijumptable (reg, _)
- | Ireturn (Some reg) ->
- Registers.Regset.add reg regset
- | _ -> regset
- ) seqa sb.s_output_regs
-
+ let ret =
+ Array.fold_right (fun (ins, liveins) regset ->
+ match ins with
+ | Inop _ -> regset
+ | Iop (_, args, dest, _)
+ | Iload (_, _, _, args, dest, _) ->
+ List.fold_left (fun set reg -> Registers.Regset.add reg set)
+ (Registers.Regset.remove dest regset) args
+ | Istore (_, _, args, src, _) ->
+ List.fold_left (fun set reg -> Registers.Regset.add reg set)
+ (Registers.Regset.add src regset) args
+ | Icall (_, fn, args, dest, _) ->
+ List.fold_left (fun set reg -> Registers.Regset.add reg set)
+ ((match fn with
+ | Datatypes.Coq_inl reg -> (Registers.Regset.add reg)
+ | Datatypes.Coq_inr _ -> (fun x -> x))
+ (Registers.Regset.remove dest regset))
+ args
+ | Itailcall (_, fn, args) ->
+ List.fold_left (fun set reg -> Registers.Regset.add reg set)
+ (match fn with
+ | Datatypes.Coq_inl reg -> (Registers.Regset.add reg regset)
+ | Datatypes.Coq_inr _ -> regset)
+ args
+ | Ibuiltin (_, args, dest, _) ->
+ List.fold_left (fun set reg ->
+ match reg with
+ | AST.BA r -> Registers.Regset.add r set
+ | _ -> set)
+ (match dest with
+ | AST.BR r -> Registers.Regset.remove r regset
+ | _ -> regset)
+ args
+ | Icond (_, args, _, _, _) ->
+ List.fold_left (fun set reg ->
+ Registers.Regset.add reg set)
+ regset args
+ | Ijumptable (reg, _)
+ | Ireturn (Some reg) ->
+ Registers.Regset.add reg regset
+ | _ -> regset
+ ) seqa sb.s_output_regs
+ in debug "live in regs: ";
+ print_regset ret;
+ debug "\n";
+ debug_flag := false;
+ ret
(* TODO David *)
let schedule_superblock sb code =
@@ -144,6 +154,7 @@ let schedule_superblock sb code =
match predicted_successor ii with
| Some _ -> 0
| None -> 1 in
+ debug "hello\n";
let live_regs_entry = get_live_regs_entry sb code in
match PrepassSchedulingOracle.schedule_sequence
(Array.map (fun i ->