#include "fusion-phases.h"
module Data.Array.Parallel.Unlifted.Distributed.Data.Bool
( orD
, andD)
where
import Data.Array.Parallel.Unlifted.Distributed.Data.Scalar.Base ()
import Data.Array.Parallel.Unlifted.Distributed.Primitive.DPrim
import Data.Array.Parallel.Unlifted.Distributed.Primitive
import qualified Data.Array.Parallel.Unlifted.Distributed.What as W
import qualified Data.Array.Parallel.Unlifted.Sequential.Vector as V
import qualified Data.Vector.Unboxed.Mutable as MV
import Prelude as P
instance DPrim Bool where
mkDPrim = DBool
unDPrim (DBool a) = a
mkMDPrim = MDBool
unMDPrim (MDBool a) = a
instance DT Bool where
data Dist Bool = DBool !(V.Vector Bool)
data MDist Bool s = MDBool !(MV.STVector s Bool)
indexD = primIndexD
newMD = primNewMD
readMD = primReadMD
writeMD = primWriteMD
unsafeFreezeMD = primUnsafeFreezeMD
sizeD = primSizeD
sizeMD = primSizeMD
orD :: Gang -> Dist Bool -> Bool
orD g = foldD (W.What "orD") g (||)
andD :: Gang -> Dist Bool -> Bool
andD g = foldD (W.What "andD") g (&&)