X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2Fvectorise%2FVectUtils.hs;h=77e037f4779d8a4905de463360b0f7772dfb82a1;hb=b7994edd84d6350d65080cc147cd9995e61dbf95;hp=8cb0a11a99251000380db7234b1c11e97f97c9c2;hpb=151b1170c26a325cc93b2ae151804d5a714021a3;p=ghc-hetmet.git diff --git a/compiler/vectorise/VectUtils.hs b/compiler/vectorise/VectUtils.hs index 8cb0a11..77e037f 100644 --- a/compiler/vectorise/VectUtils.hs +++ b/compiler/vectorise/VectUtils.hs @@ -5,7 +5,7 @@ module VectUtils ( splitClosureTy, TyConRepr(..), mkTyConRepr, - mkToPRepr, mkToArrPRepr, mkFromPRepr, mkFromArrPRepr, + mkToArrPRepr, mkFromArrPRepr, mkPADictType, mkPArrayType, mkPReprType, parrayCoerce, parrayReprTyCon, parrayReprDataCon, mkVScrut, @@ -165,31 +165,6 @@ mkTyConRepr vect_tc mk_tc_app_maybe Nothing [ty] = ty mk_tc_app_maybe (Just tc) tys = mkTyConApp tc tys -mkToPRepr :: TyConRepr -> [[CoreExpr]] -> [CoreExpr] -mkToPRepr (TyConRepr { - repr_tys = repr_tys - , repr_prod_tycons = prod_tycons - , repr_prod_tys = prod_tys - , repr_sum_tycon = repr_sum_tycon - }) - = mk_sum . zipWith3 mk_prod prod_tycons repr_tys - where - Just sum_tycon = repr_sum_tycon - - mk_sum [] = [Var unitDataConId] - mk_sum [expr] = [expr] - mk_sum exprs = zipWith (mk_alt prod_tys) (tyConDataCons sum_tycon) exprs - - mk_alt tys dc expr = mk_con_app dc tys [expr] - - mk_prod _ _ [] = Var unitDataConId - mk_prod _ _ [expr] = expr - mk_prod (Just tc) tys exprs = mk_con_app dc tys exprs - where - [dc] = tyConDataCons tc - - mk_con_app dc tys exprs = mkConApp dc (map Type tys ++ exprs) - mkToArrPRepr :: CoreExpr -> CoreExpr -> [[CoreExpr]] -> VM CoreExpr mkToArrPRepr len sel ess = do @@ -219,39 +194,6 @@ mkToArrPRepr len sel ess liftM fst (mk_sum =<< mapM mk_prod ess) -mkFromPRepr :: CoreExpr -> Type -> [([Var], CoreExpr)] -> VM CoreExpr -mkFromPRepr scrut res_ty alts - = do - sum_tcs <- builtins sumTyCon - prod_tcs <- builtins prodTyCon - - let un_sum expr ty [(vars, res)] = un_prod expr ty vars res - un_sum expr ty bs - = do - ps <- mapM (newLocalVar FSLIT("p")) tys - bodies <- sequence - $ zipWith4 un_prod (map Var ps) tys vars rs - return . Case expr (mkWildId ty) res_ty - $ zipWith3 mk_alt sum_dcs ps bodies - where - (vars, rs) = unzip bs - tys = splitFixedTyConApp sum_tc ty - sum_tc = sum_tcs $ length bs - sum_dcs = tyConDataCons sum_tc - - mk_alt dc p body = (DataAlt dc, [p], body) - - un_prod expr ty [] r = return r - un_prod expr ty [var] r = return $ Let (NonRec var expr) r - un_prod expr ty vars r - = return $ Case expr (mkWildId ty) res_ty - [(DataAlt prod_dc, vars, r)] - where - prod_tc = prod_tcs $ length vars - [prod_dc] = tyConDataCons prod_tc - - un_sum scrut (exprType scrut) alts - mkFromArrPRepr :: CoreExpr -> Type -> Var -> Var -> [[Var]] -> CoreExpr -> VM CoreExpr mkFromArrPRepr scrut res_ty len sel vars res