dph-lifted-vseg-0.6.0.1: Data/Array/Parallel/PArray/PData/Wrap.hs
{-# OPTIONS_HADDOCK hide #-}
{-# LANGUAGE CPP #-}
#include "fusion-phases.h"
-- | PR instance for the Wrap type.
module Data.Array.Parallel.PArray.PData.Wrap where
import Data.Array.Parallel.PArray.PData.Base
import Data.Array.Parallel.PArray.Types
import Data.Array.Parallel.PArray.PRepr.Base
import qualified Data.Vector as V
-------------------------------------------------------------------------------
newtype instance PData (Wrap a)
= PWrap (PData a)
newtype instance PDatas (Wrap a)
= PWraps (PDatas a)
-- PR -------------------------------------------------------------------------
instance PA a => PR (Wrap a) where
{-# NOINLINE validPR #-}
validPR (PWrap pdata)
= validPA pdata
{-# NOINLINE nfPR #-}
nfPR (PWrap pdata)
= nfPA pdata
{-# NOINLINE similarPR #-}
similarPR (Wrap x) (Wrap y)
= similarPA x y
{-# NOINLINE coversPR #-}
coversPR weak (PWrap pdata) ix
= coversPA weak pdata ix
{-# NOINLINE pprpPR #-}
pprpPR (Wrap x)
= pprpPA x
{-# NOINLINE pprpDataPR #-}
pprpDataPR (PWrap pdata)
= pprpDataPA pdata
-- Constructors -------------------------------
{-# INLINE_PDATA emptyPR #-}
emptyPR
= PWrap emptyPA
{-# INLINE_PDATA replicatePR #-}
replicatePR n (Wrap x)
= PWrap $ replicatePA n x
{-# INLINE_PDATA replicatesPR #-}
replicatesPR segd (PWrap xs)
= PWrap $ replicatesPA segd xs
{-# INLINE_PDATA appendPR #-}
appendPR (PWrap xs) (PWrap ys)
= PWrap $ appendPA xs ys
{-# INLINE_PDATA appendsPR #-}
appendsPR segdResult segd1 (PWrap xs) segd2 (PWrap ys)
= PWrap $ appendsPA segdResult segd1 xs segd2 ys
-- Projections --------------------------------
{-# INLINE_PDATA lengthPR #-}
lengthPR (PWrap xs)
= lengthPA xs
{-# INLINE_PDATA indexPR #-}
indexPR (PWrap xs) ix
= Wrap $ indexPA xs ix
{-# INLINE_PDATA indexsPR #-}
indexsPR (PWraps pdatas) srcixs
= PWrap $ indexsPA pdatas srcixs
{-# INLINE_PDATA indexvsPR #-}
indexvsPR (PWraps arrs) vsegd srcixs
= PWrap $ indexvsPA arrs vsegd srcixs
{-# INLINE_PDATA extractPR #-}
extractPR (PWrap xs) ix n
= PWrap $ extractPA xs ix n
{-# INLINE_PDATA extractssPR #-}
extractssPR (PWraps pdatas) ssegd
= PWrap $ extractssPA pdatas ssegd
{-# INLINE_PDATA extractvsPR #-}
extractvsPR (PWraps pdatas) vsegd
= PWrap $ extractvsPA pdatas vsegd
-- Pack and Combine ---------------------------
{-# INLINE_PDATA packByTagPR #-}
packByTagPR (PWrap xs) tags tag
= PWrap $ packByTagPA xs tags tag
{-# INLINE_PDATA combine2PR #-}
combine2PR sel (PWrap xs) (PWrap ys)
= PWrap $ combine2PA sel xs ys
-- Conversions --------------------------------
{-# NOINLINE fromVectorPR #-}
fromVectorPR vec
= PWrap $ fromVectorPA $ V.map unWrap vec
{-# NOINLINE toVectorPR #-}
toVectorPR (PWrap pdata)
= V.map Wrap $ toVectorPA pdata
-- PDatas -------------------------------------
{-# INLINE_PDATA emptydPR #-}
emptydPR
= PWraps emptydPA
{-# INLINE_PDATA singletondPR #-}
singletondPR (PWrap pdata)
= PWraps $ singletondPA pdata
{-# INLINE_PDATA lengthdPR #-}
lengthdPR (PWraps pdatas)
= lengthdPA pdatas
{-# INLINE_PDATA indexdPR #-}
indexdPR (PWraps pdatas) ix
= PWrap $ indexdPA pdatas ix
{-# INLINE_PDATA appenddPR #-}
appenddPR (PWraps xs) (PWraps ys)
= PWraps $ appenddPA xs ys
{-# NOINLINE fromVectordPR #-}
fromVectordPR vec
= PWraps $ fromVectordPA $ V.map (\(PWrap x) -> x) vec
{-# NOINLINE toVectordPR #-}
toVectordPR (PWraps pdatas)
= V.map PWrap $ toVectordPA pdatas