aboutsummaryrefslogtreecommitdiff
path: root/src/Assembly/WordizeUtil.v
diff options
context:
space:
mode:
authorGravatar Rob Sloan <varomodt@google.com>2016-10-31 10:32:50 -0700
committerGravatar Rob Sloan <varomodt@google.com>2016-10-31 10:32:50 -0700
commitc9dc1e35783bdcf9e5bdeaed51c87c23f47dd448 (patch)
tree527630263b2f1e9d3c3afb2ad1960865d5b87ac1 /src/Assembly/WordizeUtil.v
parent4ae2f20dc35546bdc4e54a3570504778286cdd37 (diff)
most of jgross' admits
'
Diffstat (limited to 'src/Assembly/WordizeUtil.v')
-rw-r--r--src/Assembly/WordizeUtil.v20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/Assembly/WordizeUtil.v b/src/Assembly/WordizeUtil.v
index 6526c94ac..f12c6449d 100644
--- a/src/Assembly/WordizeUtil.v
+++ b/src/Assembly/WordizeUtil.v
@@ -252,6 +252,11 @@ Section Misc.
apply N.sub_le_mono_l.
apply N_ge_0.
Qed.
+ Lemma log2_conv: forall z, Z.log2 z = Z.of_N (N.log2 (Z.to_N z)).
+ Proof.
+ intro z; induction z as [| |p]; auto.
+ induction p; auto.
+ Qed.
End Misc.
Section Exp.
@@ -926,6 +931,21 @@ Section TopLevel.
reflexivity.
Qed.
+ Lemma wordize_or: forall {n} (x y: word n),
+ & (wor x y) = N.lor (&x) (&y).
+ Proof.
+ intros.
+ apply N.bits_inj_iff; unfold N.eqf; intro k.
+ rewrite N.lor_spec.
+ repeat rewrite wordToN_testbit.
+ revert x y.
+ generalize (N.to_nat k) as k'; clear k.
+ induction n; intros; shatter x; shatter y; simpl; [reflexivity|].
+ induction k'; [reflexivity|].
+ rewrite IHn.
+ reflexivity.
+ Qed.
+
Lemma conv_mask: forall {n} (x: word n) (k: nat),
(k <= n)%nat ->
mask k x = x ^& (NToWord _ (N.ones (N.of_nat k))).