Copyright | (C) 2013-2015, University of Twente |
---|---|
License | BSD2 (see the file LICENSE) |
Maintainer | Christiaan Baaij <christiaan.baaij@gmail.com> |
Safe Haskell | None |
Language | Haskell2010 |
Extensions |
|
- newtype BitVector n = BV {}
- type Bit = BitVector 1
- size# :: KnownNat n => BitVector n -> Int
- maxIndex# :: KnownNat n => BitVector n -> Int
- high :: Bit
- low :: Bit
- bLit :: KnownNat n => String -> Q (TExp (BitVector n))
- (++#) :: KnownNat m => BitVector n -> BitVector m -> BitVector (n + m)
- reduceAnd# :: KnownNat n => BitVector n -> BitVector 1
- reduceOr# :: BitVector n -> BitVector 1
- reduceXor# :: BitVector n -> BitVector 1
- index# :: KnownNat n => BitVector n -> Int -> Bit
- replaceBit# :: KnownNat n => BitVector n -> Int -> Bit -> BitVector n
- setSlice# :: BitVector ((m + 1) + i) -> SNat m -> SNat n -> BitVector ((m + 1) - n) -> BitVector ((m + 1) + i)
- slice# :: BitVector ((m + 1) + i) -> SNat m -> SNat n -> BitVector ((m + 1) - n)
- split# :: KnownNat n => BitVector (m + n) -> (BitVector m, BitVector n)
- msb# :: KnownNat n => BitVector n -> Bit
- lsb# :: BitVector n -> Bit
- eq# :: BitVector n -> BitVector n -> Bool
- neq# :: BitVector n -> BitVector n -> Bool
- lt# :: BitVector n -> BitVector n -> Bool
- ge# :: BitVector n -> BitVector n -> Bool
- gt# :: BitVector n -> BitVector n -> Bool
- le# :: BitVector n -> BitVector n -> Bool
- enumFrom# :: KnownNat n => BitVector n -> [BitVector n]
- enumFromThen# :: KnownNat n => BitVector n -> BitVector n -> [BitVector n]
- enumFromTo# :: KnownNat n => BitVector n -> BitVector n -> [BitVector n]
- enumFromThenTo# :: KnownNat n => BitVector n -> BitVector n -> BitVector n -> [BitVector n]
- minBound# :: KnownNat n => BitVector n
- maxBound# :: KnownNat n => BitVector n
- (+#) :: KnownNat n => BitVector n -> BitVector n -> BitVector n
- (-#) :: KnownNat n => BitVector n -> BitVector n -> BitVector n
- (*#) :: KnownNat n => BitVector n -> BitVector n -> BitVector n
- negate# :: KnownNat n => BitVector n -> BitVector n
- fromInteger# :: KnownNat n => Integer -> BitVector n
- plus# :: KnownNat (Max m n + 1) => BitVector m -> BitVector n -> BitVector (Max m n + 1)
- minus# :: KnownNat (Max m n + 1) => BitVector m -> BitVector n -> BitVector (Max m n + 1)
- times# :: KnownNat (m + n) => BitVector m -> BitVector n -> BitVector (m + n)
- quot# :: BitVector n -> BitVector n -> BitVector n
- rem# :: BitVector n -> BitVector n -> BitVector n
- mod# :: BitVector n -> BitVector n -> BitVector n
- toInteger# :: BitVector n -> Integer
- and# :: BitVector n -> BitVector n -> BitVector n
- or# :: BitVector n -> BitVector n -> BitVector n
- xor# :: BitVector n -> BitVector n -> BitVector n
- complement# :: KnownNat n => BitVector n -> BitVector n
- shiftL# :: KnownNat n => BitVector n -> Int -> BitVector n
- shiftR# :: KnownNat n => BitVector n -> Int -> BitVector n
- rotateL# :: KnownNat n => BitVector n -> Int -> BitVector n
- rotateR# :: KnownNat n => BitVector n -> Int -> BitVector n
- popCount# :: BitVector n -> Int
- resize# :: KnownNat m => BitVector n -> BitVector m
Datatypes
A vector of bits.
- Bit indices are descending
Num
instance performs unsigned arithmetic.
BV | The constructor, |
Resize BitVector | |
KnownNat n => Bounded (BitVector n) | |
KnownNat n => Enum (BitVector n) | The functions: |
Eq (BitVector n) | |
KnownNat n => Integral (BitVector n) | |
KnownNat n => Num (BitVector n) | |
Ord (BitVector n) | |
KnownNat n => Real (BitVector n) | |
KnownNat n => Show (BitVector n) | |
KnownNat n => Bits (BitVector n) | |
KnownNat n => FiniteBits (BitVector n) | |
KnownNat n => Default (BitVector n) | |
KnownNat n => Lift (BitVector n) | |
(KnownNat n, KnownNat ((+) n 1), KnownNat ((+) n n)) => SaturatingNum (BitVector n) | |
BitPack (BitVector n) | |
Bundle (BitVector n) | |
(KnownNat ((+) (Max m n) 1), KnownNat ((+) m n)) => ExtendingNum (BitVector m) (BitVector n) | |
Typeable (Nat -> *) BitVector | |
type Unbundled' clk (BitVector n) = Signal' clk (BitVector n) | |
type BitSize (BitVector n) = n | |
type AResult (BitVector m) (BitVector n) = BitVector ((+) (Max m n) 1) | |
type MResult (BitVector m) (BitVector n) = BitVector ((+) m n) |
Accessors
Length information
Construction
Initialisation
bLit :: KnownNat n => String -> Q (TExp (BitVector n)) Source
Create a binary literal
>>>
$$(bLit "1001") :: BitVector 4
1001>>>
$$(bLit "1001") :: BitVector 3
001
NB: Will be removed once GHC 7.10 is released which has support for binary literals. Once GHC 7.10 is released you can just write:
>>>
0b1001 :: BitVector 4
1001
Concatenation
(++#) :: KnownNat m => BitVector n -> BitVector m -> BitVector (n + m) Source
Concatenate two BitVector
s
Reduction
reduceAnd# :: KnownNat n => BitVector n -> BitVector 1 Source
reduceXor# :: BitVector n -> BitVector 1 Source
Indexing
setSlice# :: BitVector ((m + 1) + i) -> SNat m -> SNat n -> BitVector ((m + 1) - n) -> BitVector ((m + 1) + i) Source
Type classes
Eq
Ord
Enum (not synthesisable)
Bounded
Num
fromInteger# :: KnownNat n => Integer -> BitVector n Source
ExtendingNum
Integral
toInteger# :: BitVector n -> Integer Source
Bits
complement# :: KnownNat n => BitVector n -> BitVector n Source