module Foundation.Bits
( (.<<.)
, (.>>.)
, Bits(..)
, alignRoundUp
, alignRoundDown
) where
import Basement.Compat.Base
import Foundation.Numerical
import Data.Bits hiding ((.<<.), (.>>.))
(.<<.) :: Bits a => a -> Int -> a
.<<. :: forall a. Bits a => a -> Int -> a
(.<<.) = forall a. Bits a => a -> Int -> a
unsafeShiftL
(.>>.) :: Bits a => a -> Int -> a
.>>. :: forall a. Bits a => a -> Int -> a
(.>>.) = forall a. Bits a => a -> Int -> a
unsafeShiftR
alignRoundUp :: Int
-> Int
-> Int
alignRoundUp :: Int -> Int -> Int
alignRoundUp Int
m Int
alignment = (Int
m forall a. Additive a => a -> a -> a
+ (Int
alignmentforall a. Subtractive a => a -> a -> Difference a
-Int
1)) forall a. Bits a => a -> a -> a
.&. forall a. Bits a => a -> a
complement (Int
alignmentforall a. Subtractive a => a -> a -> Difference a
-Int
1)
alignRoundDown :: Int
-> Int
-> Int
alignRoundDown :: Int -> Int -> Int
alignRoundDown Int
m Int
alignment = Int
m forall a. Bits a => a -> a -> a
.&. forall a. Bits a => a -> a
complement (Int
alignmentforall a. Subtractive a => a -> a -> Difference a
-Int
1)