X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2Fvectorise%2FVectType.hs;h=2f4ca2f6016196c18c195a3b3efce9c641ccb6d0;hb=51ad52d4f7d259b500543404f419ff62456e2097;hp=77cb4295ed8ba5566420d8663fac3b88b66ff188;hpb=01e4f275e1c8cda513a3fea63a7ccf258af3277b;p=ghc-hetmet.git diff --git a/compiler/vectorise/VectType.hs b/compiler/vectorise/VectType.hs index 77cb429..2f4ca2f 100644 --- a/compiler/vectorise/VectType.hs +++ b/compiler/vectorise/VectType.hs @@ -1,5 +1,13 @@ +{-# OPTIONS -w #-} +-- The above warning supression flag is a temporary kludge. +-- While working on this module you are encouraged to remove it and fix +-- any warnings in the module. See +-- http://hackage.haskell.org/trac/ghc/wiki/Commentary/CodingStyle#Warnings +-- for details + module VectType ( vectTyCon, vectType, vectTypeEnv, - PAInstance, buildPADict ) + mkRepr, arrShapeTys, arrShapeVars, arrSelector, + PAInstance, buildPADict ) where #include "HsVersions.h" @@ -355,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 @@ -585,11 +597,11 @@ buildToArrPRepr repr vect_tc prepr_tc arr_tc $ mkConApp data_con [Var len_var, Var repr_var] to_prod repr_vars@(r : _) - (ProdRepr { prod_components = tys + (ProdRepr { prod_components = tys@(ty : _) , prod_arr_tycon = tycon , prod_arr_data_con = data_con }) = do - len <- lengthPA (Var r) + len <- lengthPA ty (Var r) return . wrapFamInstBody tycon tys . mkConApp data_con $ map Type tys ++ len : map Var repr_vars