X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2Fvectorise%2FVectBuiltIn.hs;h=dc01c7ceb9a893ecce1e424fa14380ba1fb11b54;hb=3a90968fac18bbf931420afff6ef866614ecdd7f;hp=ce93ad7c65fb5f374f60c679a7dd939e2a8f6af5;hpb=bb2c9a9211b10f649c61ee9e6c7055af7b3509dc;p=ghc-hetmet.git diff --git a/compiler/vectorise/VectBuiltIn.hs b/compiler/vectorise/VectBuiltIn.hs index ce93ad7..dc01c7c 100644 --- a/compiler/vectorise/VectBuiltIn.hs +++ b/compiler/vectorise/VectBuiltIn.hs @@ -125,7 +125,6 @@ data Builtins = Builtins { , liftedApplyVar :: Var , replicatePDVar :: Var , emptyPDVar :: Var - , packPDVar :: Var , packByTagPDVar :: Var , combinePDVars :: Array Int Var , scalarClass :: Class @@ -225,7 +224,6 @@ initBuiltins pkg liftedApplyVar <- externalVar dph_Closure (fsLit "liftedApply") replicatePDVar <- externalVar dph_PArray (fsLit "replicatePD") emptyPDVar <- externalVar dph_PArray (fsLit "emptyPD") - packPDVar <- externalVar dph_PArray (fsLit "packPD") packByTagPDVar <- externalVar dph_PArray (fsLit "packByTagPD") combines <- mapM (externalVar dph_PArray) @@ -276,7 +274,6 @@ initBuiltins pkg , liftedApplyVar = liftedApplyVar , replicatePDVar = replicatePDVar , emptyPDVar = emptyPDVar - , packPDVar = packPDVar , packByTagPDVar = packByTagPDVar , combinePDVars = combinePDVars , scalarClass = scalarClass @@ -333,6 +330,16 @@ preludeDataCons (Modules { dph_Prelude_Tuple = dph_Prelude_Tuple }) where mk_tup n mod name = (tupleCon Boxed n, mod, name) + +-- | Mapping of prelude functions to vectorised versions. +-- Functions like filterP currently have a working but naive version in GHC.PArr +-- During vectorisation we replace these by calls to filterPA, which are +-- defined in dph-common Data.Array.Parallel.Lifted.Combinators +-- +-- As renamer only sees the GHC.PArr functions, if you want to add a new function +-- to the vectoriser there has to be a definition for it in GHC.PArr, even though +-- it will never be used at runtime. +-- preludeVars :: Modules -> [(Module, FastString, Module, FastString)] preludeVars (Modules { dph_Combinators = dph_Combinators , dph_PArray = dph_PArray @@ -351,6 +358,7 @@ preludeVars (Modules { dph_Combinators = dph_Combinators , mk gHC_PARR (fsLit "lengthP") dph_Combinators (fsLit "lengthPA") , mk gHC_PARR (fsLit "replicateP") dph_Combinators (fsLit "replicatePA") , mk gHC_PARR (fsLit "!:") dph_Combinators (fsLit "indexPA") + , mk gHC_PARR (fsLit "sliceP") dph_Combinators (fsLit "slicePA") , mk gHC_PARR (fsLit "crossMapP") dph_Combinators (fsLit "crossMapPA") , mk gHC_PARR (fsLit "singletonP") dph_Combinators (fsLit "singletonPA") , mk gHC_PARR (fsLit "concatP") dph_Combinators (fsLit "concatPA")