module Data.Array.Parallel.Prelude.Ordering
( Ordering
, isLT, isEQ, isGT)
where
import Data.Array.Parallel.Prim ()
import Data.Array.Parallel.Prelude.Base ()
import Data.Array.Parallel.PArray.PData
import Data.Array.Parallel.PArray.PData.Word8
import Data.Array.Parallel.PArray.PRepr
import Data.Array.Parallel.Lifted ((:->)(..))
import qualified Data.Array.Parallel.Lifted as L
import qualified Data.Array.Parallel.PArray.Scalar as SC
isLT, isEQ, isGT :: Ordering -> Bool
isLT _ = False
isEQ _ = False
isGT _ = False
isLtPP, isEqPP, isGtPP :: Ordering :-> Bool
isLtPP = L.closure1' (== LT) (isOrdering LT)
isEqPP = L.closure1' (== EQ) (isOrdering EQ)
isGtPP = L.closure1' (== GT) (isOrdering GT)
isOrdering :: Ordering -> PArray Ordering -> PArray Bool
isOrdering o (PArray n pdata)
= case pdata of
POrdering w8s
-> SC.map (== (toPRepr o)) (PArray n $ PWord8 w8s)