aboutsummaryrefslogtreecommitdiffstats
path: root/mppa_k1c
diff options
context:
space:
mode:
authorDavid Monniaux <david.monniaux@univ-grenoble-alpes.fr>2019-04-28 08:48:15 +0200
committerDavid Monniaux <david.monniaux@univ-grenoble-alpes.fr>2019-04-28 08:48:15 +0200
commite20c75e0d54c38b5fab9cb12058b9918ceff3ae4 (patch)
tree9148f293852aa7dedf0778505a7eb3feac164220 /mppa_k1c
parent1faf4e651144cfdc40fd797d5ff9be388236d34f (diff)
downloadcompcert-kvx-e20c75e0d54c38b5fab9cb12058b9918ceff3ae4.tar.gz
compcert-kvx-e20c75e0d54c38b5fab9cb12058b9918ceff3ae4.zip
progress on bitfield detection
Diffstat (limited to 'mppa_k1c')
-rw-r--r--mppa_k1c/SelectOp.vp7
-rw-r--r--mppa_k1c/SelectOpproof.v2
2 files changed, 7 insertions, 2 deletions
diff --git a/mppa_k1c/SelectOp.vp b/mppa_k1c/SelectOp.vp
index bdceced8..2987fd1d 100644
--- a/mppa_k1c/SelectOp.vp
+++ b/mppa_k1c/SelectOp.vp
@@ -339,7 +339,12 @@ Nondetfunction or (e1: expr) (e2: expr) :=
| (Eop (Oandimm nmask) (prev:::Enil)),
(Eop (Oandimm mask)
((Eop (Oshlimm start) (fld:::Enil)):::Enil)) =>
- Eop Oor (e1:::e2:::Enil)
+ let zstart := Int.unsigned start in
+ let zstop := int_highest_bit mask in
+ let mask' := Int.repr (zbitfield_mask zstop zstart) in
+ if Int.eq_dec mask mask'
+ then Eop Oor (e1:::e2:::Enil)
+ else Eop Oor (e1:::e2:::Enil)
| _, _ => Eop Oor (e1:::e2:::Enil)
end.
diff --git a/mppa_k1c/SelectOpproof.v b/mppa_k1c/SelectOpproof.v
index dc8f16ab..1bd727b9 100644
--- a/mppa_k1c/SelectOpproof.v
+++ b/mppa_k1c/SelectOpproof.v
@@ -700,7 +700,7 @@ Proof.
rewrite Int.or_commut.
rewrite Int.or_zero.
reflexivity.
- - apply DEFAULT.
+ - destruct (Int.eq_dec _ _); apply DEFAULT.
- apply DEFAULT.
Qed.