| 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 |
|
CLaSH.Class.Resize
Description
- class Resize f where
Documentation
Coerce a value to be represented by a different number of bits
Minimal complete definition
Methods
resize :: (KnownNat a, KnownNat b) => f a -> f b Source
A sign-preserving resize operation
- For signed datatypes: Increasing the size of the number replicates the sign bit to the left. Truncating a number to length L keeps the sign bit and the rightmost L-1 bits.
- For unsigned datatypes: Increasing the size of the number extends with zeros to the left. Truncating a number of length N to a length L just removes the left (most significant) N-L bits.
extend :: (KnownNat a, KnownNat (b + a)) => f a -> f (b + a) Source
Perform a zeroExtend for unsigned datatypes, and signExtend for a
signed datatypes
zeroExtend :: (KnownNat a, KnownNat b, KnownNat (b + a)) => f a -> f (b + a) Source
Add extra zero bits in front of the MSB
signExtend :: (KnownNat a, KnownNat (b + a)) => f a -> f (b + a) Source
Add extra sign bits in front of the MSB
truncateB :: KnownNat a => f (b + a) -> f a Source
Remove bits from the MSB