aboutsummaryrefslogtreecommitdiff
path: root/src/Util
diff options
context:
space:
mode:
authorGravatar Jason Gross <jgross@mit.edu>2017-05-12 14:13:54 -0400
committerGravatar Jason Gross <jasongross9@gmail.com>2017-05-13 18:42:29 -0400
commitcf76a8c3fd1d240545bd87150aab1081d3f7c9a8 (patch)
tree6224e00007ced775b38074b8705a09428573f52f /src/Util
parent626819cc58b9c6194fd7559b0c6264c774d5114d (diff)
Add definitions for zselect and add_get_carry
In ZUtil/Definitions.v
Diffstat (limited to 'src/Util')
-rw-r--r--src/Util/ZUtil/Definitions.v12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/Util/ZUtil/Definitions.v b/src/Util/ZUtil/Definitions.v
index 2753f5ff8..a8dbc5e96 100644
--- a/src/Util/ZUtil/Definitions.v
+++ b/src/Util/ZUtil/Definitions.v
@@ -4,4 +4,16 @@ Local Open Scope Z_scope.
Module Z.
Definition pow2_mod n i := (n &' (Z.ones i)).
+
+ Definition zselect (cond zero_case nonzero_case : Z) :=
+ if cond =? 0 then zero_case else nonzero_case.
+
+ Definition get_carry (bitwidth : Z) (v : Z) : Z * Z
+ := (v mod 2^bitwidth, v / 2^bitwidth).
+ Definition add_with_carry (c : Z) (x y : Z) : Z
+ := c + x + y.
+ Definition add_with_get_carry (bitwidth : Z) (c : Z) (x y : Z) : Z * Z
+ := get_carry bitwidth (add_with_carry c x y).
+ Definition add_get_carry (bitwidth : Z) (x y : Z) : Z * Z
+ := get_carry bitwidth (x + y).
End Z.