From 51ad52d4f7d259b500543404f419ff62456e2097 Mon Sep 17 00:00:00 2001 From: Roman Leshchinskiy Date: Fri, 16 Nov 2007 05:10:37 +0000 Subject: [PATCH] Vectorisation utilities --- compiler/vectorise/VectMonad.hs | 5 ++++- compiler/vectorise/VectType.hs | 7 ++++++- compiler/vectorise/VectUtils.hs | 12 ++++++++---- 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/compiler/vectorise/VectMonad.hs b/compiler/vectorise/VectMonad.hs index 92ed3ec..1bd450e 100644 --- a/compiler/vectorise/VectMonad.hs +++ b/compiler/vectorise/VectMonad.hs @@ -11,7 +11,7 @@ module VectMonad ( noV, tryV, maybeV, traceMaybeV, orElseV, fixV, localV, closedV, initV, liftDs, - cloneName, cloneId, + cloneName, cloneId, cloneVar, newExportedVar, newLocalVar, newDummyVar, newTyVar, Builtins(..), sumTyCon, prodTyCon, @@ -301,6 +301,9 @@ cloneId mk_occ id ty | otherwise = Id.mkLocalId name ty return id' +cloneVar :: Var -> VM Var +cloneVar var = liftM (setIdUnique var) (liftDs newUnique) + newExportedVar :: OccName -> Type -> VM Var newExportedVar occ_name ty = do diff --git a/compiler/vectorise/VectType.hs b/compiler/vectorise/VectType.hs index c631054..2f4ca2f 100644 --- a/compiler/vectorise/VectType.hs +++ b/compiler/vectorise/VectType.hs @@ -6,7 +6,8 @@ -- for details module VectType ( vectTyCon, vectType, vectTypeEnv, - PAInstance, buildPADict ) + mkRepr, arrShapeTys, arrShapeVars, arrSelector, + PAInstance, buildPADict ) where #include "HsVersions.h" @@ -362,6 +363,10 @@ replicateShape (IdRepr _) _ _ = return [] replicateShape (VoidRepr {}) len _ = return [len] replicateShape (EnumRepr {}) len _ = return [len] +arrSelector :: Repr -> [a] -> a +arrSelector (SumRepr {}) [_, sel, _] = sel +arrSelector _ _ = panic "arrSelector" + emptyArrRepr :: Repr -> VM [CoreExpr] emptyArrRepr (SumRepr { sum_components = prods }) = liftM concat $ mapM emptyArrRepr prods diff --git a/compiler/vectorise/VectUtils.hs b/compiler/vectorise/VectUtils.hs index ebb2718..bdee5ea 100644 --- a/compiler/vectorise/VectUtils.hs +++ b/compiler/vectorise/VectUtils.hs @@ -8,7 +8,9 @@ module VectUtils ( collectAnnTypeBinders, collectAnnTypeArgs, isAnnTypeArg, collectAnnValBinders, - mkDataConTag, mkDataConTagLit, + dataConTagZ, mkDataConTag, mkDataConTagLit, + + newLocalVVar, mkBuiltinCo, mkPADictType, mkPArrayType, mkPReprType, @@ -74,12 +76,14 @@ isAnnTypeArg :: AnnExpr b ann -> Bool isAnnTypeArg (_, AnnType t) = True isAnnTypeArg _ = False +dataConTagZ :: DataCon -> Int +dataConTagZ con = dataConTag con - fIRST_TAG + mkDataConTagLit :: DataCon -> Literal -mkDataConTagLit con - = mkMachInt . toInteger $ dataConTag con - fIRST_TAG +mkDataConTagLit = mkMachInt . toInteger . dataConTagZ mkDataConTag :: DataCon -> CoreExpr -mkDataConTag con = mkIntLitInt (dataConTag con - fIRST_TAG) +mkDataConTag = mkIntLitInt . dataConTagZ splitPrimTyCon :: Type -> Maybe TyCon splitPrimTyCon ty -- 1.7.10.4