diff options
author | Yann Herklotz <git@yannherklotz.com> | 2021-10-30 21:11:32 +0100 |
---|---|---|
committer | Yann Herklotz <git@yannherklotz.com> | 2021-10-30 21:11:32 +0100 |
commit | 029ce93abee25fb87a846b75eb54be6523f77c98 (patch) | |
tree | 9fe04f9893f5b815733beec9270cccf221c678d6 /src/hls | |
parent | de382bbc3a10dc2dceae3f1c15605fe764b721eb (diff) | |
download | vericert-029ce93abee25fb87a846b75eb54be6523f77c98.tar.gz vericert-029ce93abee25fb87a846b75eb54be6523f77c98.zip |
Add a predicate to RBsetpred
Diffstat (limited to 'src/hls')
-rw-r--r-- | src/hls/HTLPargen.v | 2 | ||||
-rw-r--r-- | src/hls/IfConversion.v | 2 | ||||
-rw-r--r-- | src/hls/RTLBlockInstr.v | 8 |
3 files changed, 6 insertions, 6 deletions
diff --git a/src/hls/HTLPargen.v b/src/hls/HTLPargen.v index 6058f62..b0815b7 100644 --- a/src/hls/HTLPargen.v +++ b/src/hls/HTLPargen.v @@ -694,7 +694,7 @@ Definition translate_inst a (fin rtrn stack preg : reg) (n : node) (i : instr) | RBstore p chunk addr args src => do dst <- translate_arr_access chunk addr args stack; translate_predicate a preg p dst (Vvar src) - | RBsetpred c args p => + | RBsetpred _ c args p => do cond <- translate_condition c args; ret (a (pred_expr preg (Plit (true, p))) cond) end. diff --git a/src/hls/IfConversion.v b/src/hls/IfConversion.v index 67bd2a8..7221c28 100644 --- a/src/hls/IfConversion.v +++ b/src/hls/IfConversion.v @@ -60,7 +60,7 @@ Definition if_convert_block (c: code) (p: predicate) (bb: bblock) : bblock := | Some bb1, Some bb2 => let bb1' := List.map (map_if_convert (Plit (true, p))) bb1.(bb_body) in let bb2' := List.map (map_if_convert (Plit (false, p))) bb2.(bb_body) in - mk_bblock (List.concat (bb.(bb_body) :: ((RBsetpred cond args p) :: bb1') :: bb2' :: nil)) + mk_bblock (List.concat (bb.(bb_body) :: ((RBsetpred None cond args p) :: bb1') :: bb2' :: nil)) (RBpred_cf (Plit (true, p)) bb1.(bb_exit) bb2.(bb_exit)) | _, _ => bb end diff --git a/src/hls/RTLBlockInstr.v b/src/hls/RTLBlockInstr.v index e9e85f7..7e204e7 100644 --- a/src/hls/RTLBlockInstr.v +++ b/src/hls/RTLBlockInstr.v @@ -38,7 +38,7 @@ Inductive instr : Type := | RBop : option pred_op -> operation -> list reg -> reg -> instr | RBload : option pred_op -> memory_chunk -> addressing -> list reg -> reg -> instr | RBstore : option pred_op -> memory_chunk -> addressing -> list reg -> reg -> instr -| RBsetpred : condition -> list reg -> predicate -> instr. +| RBsetpred : option pred_op -> condition -> list reg -> predicate -> instr. Inductive cf_instr : Type := | RBcall : signature -> reg + ident -> list reg -> reg -> node -> cf_instr @@ -72,7 +72,7 @@ Definition max_reg_instr (m: positive) (i: instr) := fold_left Pos.max args (Pos.max dst m) | RBstore p chunk addr args src => fold_left Pos.max args (Pos.max src m) - | RBsetpred c args p => + | RBsetpred p' c args p => fold_left Pos.max args m end. @@ -240,9 +240,9 @@ Section RELSEM. eval_pred p (mk_instr_state rs pr m) (mk_instr_state rs pr m') ist -> step_instr sp (mk_instr_state rs pr m) (RBstore p chunk addr args src) ist | exec_RBsetpred: - forall sp rs pr m p c b args, + forall sp rs pr m p c b args p', Op.eval_condition c rs##args m = Some b -> - step_instr sp (mk_instr_state rs pr m) (RBsetpred c args p) + step_instr sp (mk_instr_state rs pr m) (RBsetpred p' c args p) (mk_instr_state rs (PMap.set p b pr) m). Inductive step_cf_instr: state -> cf_instr -> trace -> state -> Prop := |