{-# OPTIONS -Wall -fno-warn-orphans -fno-warn-missing-signatures #-} {-# LANGUAGE CPP #-} #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 -- | OR together all instances of a distributed 'Bool'. orD :: Gang -> Dist Bool -> Bool orD g = foldD (W.What "orD") g (||) {-# INLINE_DIST orD #-} -- | AND together all instances of a distributed 'Bool'. andD :: Gang -> Dist Bool -> Bool andD g = foldD (W.What "andD") g (&&) {-# INLINE_DIST andD #-}