@@ -15,7 +15,6 @@ nextBits x with (log2ceil x)
15 | (S (S (S (S O)))) = Bits16
15 | (S (S (S (S O)))) = Bits16
16 | _ = Bits8
16 | _ = Bits8
19data Bits : Nat -> Type where
18data Bits : Nat -> Type where
20 MkBits : {n : Nat} -> nextBits n -> Bits n
19 MkBits : {n : Nat} -> nextBits n -> Bits n
@@ -57,7 +56,6 @@ intToBits' {n=n} x with (nextBits n)
57 | Bits64 = let pad = (prim__intToB64 (cast (64-n))) in
56 | Bits64 = let pad = (prim__intToB64 (cast (64-n))) in
58 prim__lshrB64 (prim__shlB64 (prim__intToB64 x) pad) pad
57 prim__lshrB64 (prim__shlB64 (prim__intToB64 x) pad) pad
61intToBits : {n : Nat} -> Int -> Bits n
59intToBits : {n : Nat} -> Int -> Bits n
62intToBits n = MkBits (intToBits' n)
60intToBits n = MkBits (intToBits' n)
@@ -71,7 +69,6 @@ bitsShl' {n=n} x c with (nextBits n)
71 | Bits32 = pad32 n prim__shlB32 x c
69 | Bits32 = pad32 n prim__shlB32 x c
72 | Bits64 = pad64 n prim__shlB64 x c
70 | Bits64 = pad64 n prim__shlB64 x c
75bitsShl : Bits n -> Bits n -> Bits n
72bitsShl : Bits n -> Bits n -> Bits n
76bitsShl (MkBits x) (MkBits y) = MkBits (bitsShl' x y)
73bitsShl (MkBits x) (MkBits y) = MkBits (bitsShl' x y)
@@ -82,7 +79,6 @@ bitsLShr' {n=n} x c with (nextBits n)
82 | Bits32 = prim__lshrB32 x c
79 | Bits32 = prim__lshrB32 x c
83 | Bits64 = prim__lshrB64 x c
80 | Bits64 = prim__lshrB64 x c
86bitsLShr : Bits n -> Bits n -> Bits n
82bitsLShr : Bits n -> Bits n -> Bits n
87bitsLShr (MkBits x) (MkBits y) = MkBits (bitsLShr' x y)
83bitsLShr (MkBits x) (MkBits y) = MkBits (bitsLShr' x y)
@@ -93,7 +89,6 @@ bitsAShr' {n=n} x c with (nextBits n)
93 | Bits32 = prim__ashrB32 x c
89 | Bits32 = prim__ashrB32 x c
94 | Bits64 = prim__ashrB64 x c
90 | Bits64 = prim__ashrB64 x c
97bitsAShr : Bits n -> Bits n -> Bits n
92bitsAShr : Bits n -> Bits n -> Bits n
98bitsAShr (MkBits x) (MkBits y) = MkBits (bitsAShr' x y)
93bitsAShr (MkBits x) (MkBits y) = MkBits (bitsAShr' x y)
@@ -104,7 +99,6 @@ bitsAnd' {n=n} x y with (nextBits n)
104 | Bits32 = prim__andB32 x y
99 | Bits32 = prim__andB32 x y
105 | Bits64 = prim__andB64 x y
100 | Bits64 = prim__andB64 x y
108bitsAnd : Bits n -> Bits n -> Bits n
102bitsAnd : Bits n -> Bits n -> Bits n
109bitsAnd (MkBits x) (MkBits y) = MkBits (bitsAnd' x y)
103bitsAnd (MkBits x) (MkBits y) = MkBits (bitsAnd' x y)
@@ -115,7 +109,6 @@ bitsOr' {n=n} x y with (nextBits n)
115 | Bits32 = prim__orB32 x y
109 | Bits32 = prim__orB32 x y
116 | Bits64 = prim__orB64 x y
110 | Bits64 = prim__orB64 x y
119bitsOr : Bits n -> Bits n -> Bits n
112bitsOr : Bits n -> Bits n -> Bits n
120bitsOr (MkBits x) (MkBits y) = MkBits (bitsOr' x y)
113bitsOr (MkBits x) (MkBits y) = MkBits (bitsOr' x y)
@@ -126,7 +119,6 @@ bitsXOr' {n=n} x y with (nextBits n)
126 | Bits32 = prim__xorB32 x y
119 | Bits32 = prim__xorB32 x y
127 | Bits64 = prim__xorB64 x y
120 | Bits64 = prim__xorB64 x y
130bitsXOr : Bits n -> Bits n -> Bits n
122bitsXOr : Bits n -> Bits n -> Bits n
131bitsXOr (MkBits x) (MkBits y) = MkBits (bitsXOr' x y)
123bitsXOr (MkBits x) (MkBits y) = MkBits (bitsXOr' x y)
@@ -137,7 +129,6 @@ bitsAdd' {n=n} x y with (nextBits n)
137 | Bits32 = pad32 n prim__addB32 x y
129 | Bits32 = pad32 n prim__addB32 x y
138 | Bits64 = pad64 n prim__addB64 x y
130 | Bits64 = pad64 n prim__addB64 x y
141bitsAdd : Bits n -> Bits n -> Bits n
132bitsAdd : Bits n -> Bits n -> Bits n
142bitsAdd (MkBits x) (MkBits y) = MkBits (bitsAdd' x y)
133bitsAdd (MkBits x) (MkBits y) = MkBits (bitsAdd' x y)
@@ -148,7 +139,6 @@ bitsSub' {n=n} x y with (nextBits n)
148 | Bits32 = pad32 n prim__subB32 x y
139 | Bits32 = pad32 n prim__subB32 x y
149 | Bits64 = pad64 n prim__subB64 x y
140 | Bits64 = pad64 n prim__subB64 x y
152bitsSub : Bits n -> Bits n -> Bits n
142bitsSub : Bits n -> Bits n -> Bits n
153bitsSub (MkBits x) (MkBits y) = MkBits (bitsSub' x y)
143bitsSub (MkBits x) (MkBits y) = MkBits (bitsSub' x y)
@@ -159,7 +149,6 @@ bitsMul' {n=n} x y with (nextBits n)
159 | Bits32 = pad32 n prim__mulB32 x y
149 | Bits32 = pad32 n prim__mulB32 x y
160 | Bits64 = pad64 n prim__mulB64 x y
150 | Bits64 = pad64 n prim__mulB64 x y
163bitsMul : Bits n -> Bits n -> Bits n
152bitsMul : Bits n -> Bits n -> Bits n
164bitsMul (MkBits x) (MkBits y) = MkBits (bitsMul' x y)
153bitsMul (MkBits x) (MkBits y) = MkBits (bitsMul' x y)
@@ -170,7 +159,6 @@ bitsSDiv' {n=n} x y with (nextBits n)
170 | Bits32 = prim__sdivB32 x y
159 | Bits32 = prim__sdivB32 x y
171 | Bits64 = prim__sdivB64 x y
160 | Bits64 = prim__sdivB64 x y
174bitsSDiv : Bits n -> Bits n -> Bits n
162bitsSDiv : Bits n -> Bits n -> Bits n
175bitsSDiv (MkBits x) (MkBits y) = MkBits (bitsSDiv' x y)
163bitsSDiv (MkBits x) (MkBits y) = MkBits (bitsSDiv' x y)
@@ -181,7 +169,6 @@ bitsUDiv' {n=n} x y with (nextBits n)
181 | Bits32 = prim__udivB32 x y
169 | Bits32 = prim__udivB32 x y
182 | Bits64 = prim__udivB64 x y
170 | Bits64 = prim__udivB64 x y
185bitsUDiv : Bits n -> Bits n -> Bits n
172bitsUDiv : Bits n -> Bits n -> Bits n
186bitsUDiv (MkBits x) (MkBits y) = MkBits (bitsUDiv' x y)
173bitsUDiv (MkBits x) (MkBits y) = MkBits (bitsUDiv' x y)
@@ -192,7 +179,6 @@ bitsToStr' {n=n} x with (nextBits n)
192 | Bits32 = prim__b32ToStr x
179 | Bits32 = prim__b32ToStr x
193 | Bits64 = prim__b64ToStr x
180 | Bits64 = prim__b64ToStr x
196bitsToStr : Bits n -> String
182bitsToStr : Bits n -> String
197bitsToStr (MkBits x) = bitsToStr' x
183bitsToStr (MkBits x) = bitsToStr' x
@@ -203,12 +189,8 @@ bitsEq' {n=n} x y with (nextBits n)
203 | Bits32 = prim__eqB32 x y
189 | Bits32 = prim__eqB32 x y
204 | Bits64 = prim__eqB64 x y
190 | Bits64 = prim__eqB64 x y
207−bitsEq : (x : Bits n) -> (y : Bits n) -> Equality x y
192+bitsEq : (x : Bits n) -> (y : Bits n) -> Bool
208bitsEq (MkBits x) (MkBits y) =
193bitsEq (MkBits x) (MkBits y) =
209 case (bitsEq' x y) of
194 case (bitsEq' x y) of
210− 0 => Unequal uneq
195+ 0 => False
211− _ => Equal eq
196+ _ => True
213− postulate uneq : {x : Bits n} -> {y : Bits n} -> x = y -> _|_
214− postulate eq : {x : Bits n} -> {y : Bits n} -> x = y