aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorYann Herklotz <git@yannherklotz.com>2021-10-30 21:11:32 +0100
committerYann Herklotz <git@yannherklotz.com>2021-10-30 21:11:32 +0100
commit029ce93abee25fb87a846b75eb54be6523f77c98 (patch)
tree9fe04f9893f5b815733beec9270cccf221c678d6 /src
parentde382bbc3a10dc2dceae3f1c15605fe764b721eb (diff)
downloadvericert-029ce93abee25fb87a846b75eb54be6523f77c98.tar.gz
vericert-029ce93abee25fb87a846b75eb54be6523f77c98.zip
Add a predicate to RBsetpred
Diffstat (limited to 'src')
-rw-r--r--src/hls/HTLPargen.v2
-rw-r--r--src/hls/IfConversion.v2
-rw-r--r--src/hls/RTLBlockInstr.v8
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 :=