#include "fusion-phases.h"
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)
instance PA a => PR (Wrap a) where
validPR (PWrap pdata)
= validPA pdata
nfPR (PWrap pdata)
= nfPA pdata
similarPR (Wrap x) (Wrap y)
= similarPA x y
coversPR weak (PWrap pdata) ix
= coversPA weak pdata ix
pprpPR (Wrap x)
= pprpPA x
pprpDataPR (PWrap pdata)
= pprpDataPA pdata
typeRepPR (Wrap x)
= typeRepPA x
typeRepDataPR (PWrap pdata)
= typeRepDataPA pdata
typeRepDatasPR (PWraps pdata)
= typeRepDatasPA pdata
emptyPR
= PWrap emptyPA
replicatePR n (Wrap x)
= PWrap $ replicatePA n x
replicatesPR segd (PWrap xs)
= PWrap $ replicatesPA segd xs
appendPR (PWrap xs) (PWrap ys)
= PWrap $ appendPA xs ys
appendvsPR segdResult segd1 (PWraps xs) segd2 (PWraps ys)
= PWrap $ appendsPA segdResult segd1 xs segd2 ys
lengthPR (PWrap xs)
= lengthPA xs
indexPR (PWrap xs) ix
= Wrap $ indexPA xs ix
indexsPR (PWraps pdatas) srcixs
= PWrap $ indexsPA pdatas srcixs
indexvsPR (PWraps arrs) vsegd srcixs
= PWrap $ indexvsPA arrs vsegd srcixs
extractPR (PWrap xs) ix n
= PWrap $ extractPA xs ix n
extractssPR (PWraps pdatas) ssegd
= PWrap $ extractssPA pdatas ssegd
extractvsPR (PWraps pdatas) vsegd
= PWrap $ extractvsPA pdatas vsegd
packByTagPR (PWrap xs) tags tag
= PWrap $ packByTagPA xs tags tag
combine2PR sel (PWrap xs) (PWrap ys)
= PWrap $ combine2PA sel xs ys
fromVectorPR vec
= PWrap $ fromVectorPA $ V.map unWrap vec
toVectorPR (PWrap pdata)
= V.map Wrap $ toVectorPA pdata
emptydPR
= PWraps emptydPA
singletondPR (PWrap pdata)
= PWraps $ singletondPA pdata
lengthdPR (PWraps pdatas)
= lengthdPA pdatas
indexdPR (PWraps pdatas) ix
= PWrap $ indexdPA pdatas ix
appenddPR (PWraps xs) (PWraps ys)
= PWraps $ appenddPA xs ys
fromVectordPR vec
= PWraps $ fromVectordPA $ V.map (\(PWrap x) -> x) vec
toVectordPR (PWraps pdatas)
= V.map PWrap $ toVectordPA pdatas