aboutsummaryrefslogtreecommitdiffstats
path: root/common
diff options
context:
space:
mode:
authorCyril SIX <cyril.six@kalray.eu>2019-10-16 17:13:05 +0200
committerCyril SIX <cyril.six@kalray.eu>2019-10-16 17:13:23 +0200
commit9ee131bd329d1941eb37eb347f36a0c613a719a9 (patch)
tree25760a2f9e796a0f3436463852bb819c288f0a50 /common
parent72378d9371bc5da342266bcf14231ab568e0f919 (diff)
parente1725209b2b4401adc63ce5238fa5db7c134609c (diff)
downloadcompcert-kvx-9ee131bd329d1941eb37eb347f36a0c613a719a9.tar.gz
compcert-kvx-9ee131bd329d1941eb37eb347f36a0c613a719a9.zip
[regression to check!] Merge tag 'v3.6' into mppa-work
Conflicts: .gitignore backend/Lineartyping.v common/Values.v configure cparser/Machine.ml cparser/Machine.mli driver/Configuration.ml driver/Frontend.ml runtime/Makefile test/c/Makefile test/c/aes.c test/compression/Makefile test/regression/Makefile test/regression/extasm.c test/regression/floats-basics.c test/regression/floats.c Note : test/regression should be checked, didn't test it yet
Diffstat (limited to 'common')
-rw-r--r--common/Errors.v2
-rw-r--r--common/Values.v23
2 files changed, 22 insertions, 3 deletions
diff --git a/common/Errors.v b/common/Errors.v
index 28933313..6807735a 100644
--- a/common/Errors.v
+++ b/common/Errors.v
@@ -164,7 +164,7 @@ Ltac monadInv1 H :=
| (match ?X with left _ => _ | right _ => assertion_failed end = OK _) =>
destruct X; [try (monadInv1 H) | discriminate]
| (match (negb ?X) with true => _ | false => assertion_failed end = OK _) =>
- destruct X as [] eqn:?; [discriminate | try (monadInv1 H)]
+ destruct X as [] eqn:?; simpl negb in H; [discriminate | try (monadInv1 H)]
| (match ?X with true => _ | false => assertion_failed end = OK _) =>
destruct X as [] eqn:?; [try (monadInv1 H) | discriminate]
| (mmap ?F ?L = OK ?M) =>
diff --git a/common/Values.v b/common/Values.v
index 59e6388f..de317734 100644
--- a/common/Values.v
+++ b/common/Values.v
@@ -783,6 +783,17 @@ Definition rolml (v: val) (amount: int) (mask: int64): val :=
| _ => Vundef
end.
+Definition zero_ext_l (nbits: Z) (v: val) : val :=
+ match v with
+ | Vlong n => Vlong(Int64.zero_ext nbits n)
+ | _ => Vundef
+ end.
+
+Definition sign_ext_l (nbits: Z) (v: val) : val :=
+ match v with
+ | Vlong n => Vlong(Int64.sign_ext nbits n)
+ | _ => Vundef
+ end.
(** Comparisons *)
@@ -1899,10 +1910,18 @@ Qed.
Lemma zero_ext_and:
forall n v,
- 0 < n < Int.zwordsize ->
+ 0 <= n ->
Val.zero_ext n v = Val.and v (Vint (Int.repr (two_p n - 1))).
Proof.
- intros. destruct v; simpl; auto. decEq. apply Int.zero_ext_and; auto. omega.
+ intros. destruct v; simpl; auto. decEq. apply Int.zero_ext_and; auto.
+Qed.
+
+Lemma zero_ext_andl:
+ forall n v,
+ 0 <= n ->
+ Val.zero_ext_l n v = Val.andl v (Vlong (Int64.repr (two_p n - 1))).
+Proof.
+ intros. destruct v; simpl; auto. decEq. apply Int64.zero_ext_and; auto.
Qed.
Lemma rolm_lt_zero: