aboutsummaryrefslogtreecommitdiffstats
path: root/riscV
diff options
context:
space:
mode:
authorLéo Gourdin <leo.gourdin@univ-grenoble-alpes.fr>2021-04-08 20:47:38 +0200
committerLéo Gourdin <leo.gourdin@univ-grenoble-alpes.fr>2021-04-08 20:47:38 +0200
commit2f2e7b1da225aa3bf066c2fc689a08fab9851a53 (patch)
treea9c5de98b007cb176824eafe13db7e544e9bdc09 /riscV
parentdd4767e17235adb5de922626ed1fea15f4eb9e3b (diff)
downloadcompcert-kvx-2f2e7b1da225aa3bf066c2fc689a08fab9851a53.tar.gz
compcert-kvx-2f2e7b1da225aa3bf066c2fc689a08fab9851a53.zip
bugfix
Diffstat (limited to 'riscV')
-rw-r--r--riscV/ExpansionOracle.ml4
-rw-r--r--riscV/OpWeights.ml1
2 files changed, 3 insertions, 2 deletions
diff --git a/riscV/ExpansionOracle.ml b/riscV/ExpansionOracle.ml
index e0c9b9b2..b54bd5e1 100644
--- a/riscV/ExpansionOracle.ml
+++ b/riscV/ExpansionOracle.ml
@@ -1053,15 +1053,15 @@ let expanse (sb : superblock) code pm =
| _ -> ());
(* Update code, liveins, pathmap, and order of the superblock for one expansion *)
if !was_exp then (
- node := !node + List.length !exp - 1;
(if !was_branch && List.length !exp > 1 then
let lives = PTree.get n !liveins in
match lives with
| Some lives ->
- let new_branch_pc = n2p () in
+ let new_branch_pc = P.of_int (!node + 1) in
liveins := PTree.set new_branch_pc lives !liveins;
liveins := PTree.remove n !liveins
| _ -> ());
+ node := !node + List.length !exp - 1;
write_pathmap sb.instructions.(0) (List.length !exp - 1) pm';
write_tree vn (List.rev !exp) n !node code' new_order true)
else new_order := n :: !new_order)
diff --git a/riscV/OpWeights.ml b/riscV/OpWeights.ml
index 23fbd4fc..0a1d9ad4 100644
--- a/riscV/OpWeights.ml
+++ b/riscV/OpWeights.ml
@@ -63,6 +63,7 @@ module Rocket = struct
1
| Ccompf _ | Cnotcompf _ -> 2
| Ccompfs _ | Cnotcompfs _ -> 2)
+ | OEmayundef _ -> 0
| _ -> 1
let resources_of_op (op : operation) (nargs : int) = resource_bounds