aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Monniaux <david.monniaux@univ-grenoble-alpes.fr>2019-03-16 12:56:41 +0100
committerDavid Monniaux <david.monniaux@univ-grenoble-alpes.fr>2019-03-16 12:56:41 +0100
commitc8f019b509c20bea50330761c5aa0a95e17c6e65 (patch)
tree1695b9bfe36f910349948ef0f3d59f6f760f3c5c
parent9526f710a65f9009822240bf2b47e9bc6c07cf19 (diff)
downloadcompcert-kvx-c8f019b509c20bea50330761c5aa0a95e17c6e65.tar.gz
compcert-kvx-c8f019b509c20bea50330761c5aa0a95e17c6e65.zip
some more progress on rotate
-rw-r--r--mppa_k1c/NeedOp.v1
-rw-r--r--mppa_k1c/Op.v5
2 files changed, 6 insertions, 0 deletions
diff --git a/mppa_k1c/NeedOp.v b/mppa_k1c/NeedOp.v
index 28d60fa5..5f8648d3 100644
--- a/mppa_k1c/NeedOp.v
+++ b/mppa_k1c/NeedOp.v
@@ -155,6 +155,7 @@ Proof.
- apply shlimm_sound; auto.
- apply shrimm_sound; auto.
- apply shruimm_sound; auto.
+- apply ror_sound; auto.
Qed.
Lemma operation_is_redundant_sound:
diff --git a/mppa_k1c/Op.v b/mppa_k1c/Op.v
index e91c6ae1..3a006fb2 100644
--- a/mppa_k1c/Op.v
+++ b/mppa_k1c/Op.v
@@ -256,6 +256,7 @@ Definition eval_operation
| Oshlimm n, v1 :: nil => Some (Val.shl v1 (Vint n))
| Oshr, v1 :: v2 :: nil => Some (Val.shr v1 v2)
| Oshrimm n, v1 :: nil => Some (Val.shr v1 (Vint n))
+ | Ororimm n, v1 :: nil => Some (Val.ror v1 (Vint n))
| Oshru, v1 :: v2 :: nil => Some (Val.shru v1 v2)
| Oshruimm n, v1 :: nil => Some (Val.shru v1 (Vint n))
| Oshrximm n, v1::nil => Val.shrx v1 (Vint n)
@@ -568,6 +569,8 @@ Proof with (try exact I; try reflexivity; auto using Val.Vptr_has_type).
- destruct v0; simpl... destruct (Int.ltu n Int.iwordsize)...
(* shrx *)
- destruct v0; simpl in H0; try discriminate. destruct (Int.ltu n (Int.repr 31)); inv H0...
+ (* shrimm *)
+ - destruct v0; simpl...
(* makelong, lowlong, highlong *)
- destruct v0; destruct v1...
- destruct v0...
@@ -1031,6 +1034,8 @@ Proof.
(* shrx *)
- inv H4; simpl in H1; try discriminate. simpl.
destruct (Int.ltu n (Int.repr 31)); inv H1. TrivialExists.
+ (* rorimm *)
+ - inv H4; simpl; auto.
(* makelong, highlong, lowlong *)
- inv H4; inv H2; simpl; auto.
- inv H4; simpl; auto.