#include "fusion-phases.h"
module Data.Array.Parallel.PArray.PRepr.Tuple
( PRepr
, ziplPA)
where
import Data.Array.Parallel.PArray.Types
import Data.Array.Parallel.PArray.PRepr.Base
import Data.Array.Parallel.PArray.PData.Base
import Data.Array.Parallel.PArray.PData.Tuple2
import Data.Array.Parallel.PArray.PData.Tuple3
import Data.Array.Parallel.PArray.PData.Tuple4
import Data.Array.Parallel.PArray.PData.Tuple5
import Data.Array.Parallel.PArray.PData.Tuple6
import Data.Array.Parallel.PArray.PData.Tuple7
import Data.Array.Parallel.PArray.PData.Nested
import Data.Array.Parallel.PArray.PData.Wrap
type instance PRepr (a, b)
= (Wrap a, Wrap b)
instance (PA a, PA b) => PA (a, b) where
toPRepr (a, b)
= (Wrap a, Wrap b)
fromPRepr (Wrap a, Wrap b)
= (a, b)
toArrPRepr (PTuple2 as bs)
= PTuple2 (PWrap as) (PWrap bs)
fromArrPRepr (PTuple2 (PWrap as) (PWrap bs))
= PTuple2 as bs
toArrPReprs (PTuple2s as bs)
= PTuple2s (PWraps as) (PWraps bs)
fromArrPReprs (PTuple2s (PWraps as) (PWraps bs))
= PTuple2s as bs
ziplPA :: (PA a, PA b)
=> PData (PArray a) -> PData (PArray b) -> PData (PArray (a, b))
ziplPA xs ys
= let
PNested vsegd (PTuple2s xs' ys') segd _
= ziplPR (toNestedArrPRepr xs) (toNestedArrPRepr ys)
pdatas = PTuple2s (fromArrPReprs xs') (fromArrPReprs ys')
flat = fromArrPRepr $ extractvs_delay (toArrPReprs pdatas) vsegd
in PNested vsegd pdatas segd flat
type instance PRepr (a, b, c)
= (Wrap a, Wrap b, Wrap c)
instance (PA a, PA b, PA c) => PA (a, b, c) where
toPRepr (a, b, c)
= (Wrap a, Wrap b, Wrap c)
fromPRepr (Wrap a, Wrap b, Wrap c)
= (a, b, c)
toArrPRepr (PTuple3 as bs cs)
= PTuple3 (PWrap as) (PWrap bs) (PWrap cs)
fromArrPRepr (PTuple3 (PWrap as) (PWrap bs) (PWrap cs))
= PTuple3 as bs cs
toArrPReprs (PTuple3s as bs cs)
= PTuple3s (PWraps as) (PWraps bs) (PWraps cs)
fromArrPReprs (PTuple3s (PWraps as) (PWraps bs) (PWraps cs))
= PTuple3s as bs cs
type instance PRepr (a, b, c, d)
= (Wrap a, Wrap b, Wrap c, Wrap d)
instance (PA a, PA b, PA c, PA d) => PA (a, b, c, d) where
toPRepr (a, b, c, d)
= (Wrap a, Wrap b, Wrap c, Wrap d)
fromPRepr (Wrap a, Wrap b, Wrap c, Wrap d)
= (a, b, c, d)
toArrPRepr (PTuple4 as bs cs ds)
= PTuple4 (PWrap as) (PWrap bs) (PWrap cs) (PWrap ds)
fromArrPRepr (PTuple4 (PWrap as) (PWrap bs) (PWrap cs) (PWrap ds))
= PTuple4 as bs cs ds
toArrPReprs (PTuple4s as bs cs ds)
= PTuple4s (PWraps as) (PWraps bs) (PWraps cs) (PWraps ds)
fromArrPReprs (PTuple4s (PWraps as) (PWraps bs) (PWraps cs) (PWraps ds))
= PTuple4s as bs cs ds
type instance PRepr (a, b, c, d, e)
= (Wrap a, Wrap b, Wrap c, Wrap d, Wrap e)
instance (PA a, PA b, PA c, PA d, PA e) => PA (a, b, c, d, e) where
toPRepr (a, b, c, d, e)
= (Wrap a, Wrap b, Wrap c, Wrap d, Wrap e)
fromPRepr (Wrap a, Wrap b, Wrap c, Wrap d, Wrap e)
= (a, b, c, d, e)
toArrPRepr (PTuple5 as bs cs ds es)
= PTuple5 (PWrap as) (PWrap bs) (PWrap cs) (PWrap ds) (PWrap es)
fromArrPRepr (PTuple5 (PWrap as) (PWrap bs) (PWrap cs) (PWrap ds) (PWrap es))
= PTuple5 as bs cs ds es
toArrPReprs (PTuple5s as bs cs ds es)
= PTuple5s (PWraps as) (PWraps bs) (PWraps cs) (PWraps ds) (PWraps es)
fromArrPReprs (PTuple5s (PWraps as) (PWraps bs) (PWraps cs) (PWraps ds) (PWraps es))
= PTuple5s as bs cs ds es
type instance PRepr (a, b, c, d, e, f)
= (Wrap a, Wrap b, Wrap c, Wrap d, Wrap e, Wrap f)
instance (PA a, PA b, PA c, PA d, PA e, PA f) => PA (a, b, c, d, e, f) where
toPRepr (a, b, c, d, e, f)
= (Wrap a, Wrap b, Wrap c, Wrap d, Wrap e, Wrap f)
fromPRepr (Wrap a, Wrap b, Wrap c, Wrap d, Wrap e, Wrap f)
= (a, b, c, d, e, f)
toArrPRepr (PTuple6 as bs cs ds es fs)
= PTuple6 (PWrap as) (PWrap bs) (PWrap cs) (PWrap ds) (PWrap es) (PWrap fs)
fromArrPRepr (PTuple6 (PWrap as) (PWrap bs) (PWrap cs) (PWrap ds) (PWrap es) (PWrap fs))
= PTuple6 as bs cs ds es fs
toArrPReprs (PTuple6s as bs cs ds es fs)
= PTuple6s (PWraps as) (PWraps bs) (PWraps cs) (PWraps ds) (PWraps es) (PWraps fs)
fromArrPReprs (PTuple6s (PWraps as) (PWraps bs) (PWraps cs) (PWraps ds) (PWraps es) (PWraps fs))
= PTuple6s as bs cs ds es fs
type instance PRepr (a, b, c, d, e, f, g)
= (Wrap a, Wrap b, Wrap c, Wrap d, Wrap e, Wrap f, Wrap g)
instance (PA a, PA b, PA c, PA d, PA e, PA f, PA g) => PA (a, b, c, d, e, f, g) where
toPRepr (a, b, c, d, e, f, g)
= (Wrap a, Wrap b, Wrap c, Wrap d, Wrap e, Wrap f, Wrap g)
fromPRepr (Wrap a, Wrap b, Wrap c, Wrap d, Wrap e, Wrap f, Wrap g)
= (a, b, c, d, e, f, g)
toArrPRepr (PTuple7 as bs cs ds es fs gs)
= PTuple7 (PWrap as) (PWrap bs) (PWrap cs) (PWrap ds) (PWrap es) (PWrap fs) (PWrap gs)
fromArrPRepr (PTuple7 (PWrap as) (PWrap bs) (PWrap cs) (PWrap ds) (PWrap es) (PWrap fs) (PWrap gs))
= PTuple7 as bs cs ds es fs gs
toArrPReprs (PTuple7s as bs cs ds es fs gs)
= PTuple7s (PWraps as) (PWraps bs) (PWraps cs) (PWraps ds) (PWraps es) (PWraps fs) (PWraps gs)
fromArrPReprs (PTuple7s (PWraps as) (PWraps bs) (PWraps cs) (PWraps ds) (PWraps es) (PWraps fs) (PWraps gs))
= PTuple7s as bs cs ds es fs gs