Use emptyPA in vectorisation
authorRoman Leshchinskiy <rl@cse.unsw.edu.au>
Wed, 25 Jul 2007 03:35:30 +0000 (03:35 +0000)
committerRoman Leshchinskiy <rl@cse.unsw.edu.au>
Wed, 25 Jul 2007 03:35:30 +0000 (03:35 +0000)
compiler/vectorise/VectMonad.hs
compiler/vectorise/VectUtils.hs

index 09e2d2f..cd46cf8 100644 (file)
@@ -65,6 +65,7 @@ data Builtins = Builtins {
                 , applyClosurePVar :: Var
                 , lengthPAVar      :: Var
                 , replicatePAVar   :: Var
+                , emptyPAVar       :: Var
                 }
 
 paDictTyCon :: Builtins -> TyCon
@@ -83,6 +84,7 @@ initBuiltins
       applyClosurePVar <- dsLookupGlobalId applyClosurePName
       lengthPAVar      <- dsLookupGlobalId lengthPAName
       replicatePAVar   <- dsLookupGlobalId replicatePAName
+      emptyPAVar       <- dsLookupGlobalId emptyPAName
 
       return $ Builtins {
                  parrayTyCon      = parrayTyCon
@@ -94,6 +96,7 @@ initBuiltins
                , applyClosurePVar = applyClosurePVar
                , lengthPAVar      = lengthPAVar
                , replicatePAVar   = replicatePAVar
+               , emptyPAVar       = emptyPAVar
                }
 
 data GlobalEnv = GlobalEnv {
index 24a12ea..0df1672 100644 (file)
@@ -3,7 +3,7 @@ module VectUtils (
   splitClosureTy,
   mkPADictType, mkPArrayType,
   paDictArgType, paDictOfType,
-  paMethod, lengthPA, replicatePA,
+  paMethod, lengthPA, replicatePA, emptyPA,
   lookupPArrayFamInst,
   hoistExpr, takeHoisted
 ) where
@@ -123,6 +123,9 @@ replicatePA :: CoreExpr -> CoreExpr -> VM CoreExpr
 replicatePA len x = liftM (`mkApps` [len,x])
                           (paMethod replicatePAVar (exprType x))
 
+emptyPA :: Type -> VM CoreExpr
+emptyPA = paMethod emptyPAVar
+
 lookupPArrayFamInst :: Type -> VM (TyCon, [Type])
 lookupPArrayFamInst ty = builtin parrayTyCon >>= (`lookupFamInst` [ty])