From 6bd4bdcbb35bb49728a025cf3b4b2a87793dbe8e Mon Sep 17 00:00:00 2001 From: Roman Leshchinskiy Date: Mon, 19 Nov 2007 01:37:14 +0000 Subject: [PATCH] Fix bugs in vectorisation of case expressions --- compiler/vectorise/VectType.hs | 2 +- compiler/vectorise/VectUtils.hs | 2 +- compiler/vectorise/Vectorise.hs | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/compiler/vectorise/VectType.hs b/compiler/vectorise/VectType.hs index 9bf11e6..a9db43c 100644 --- a/compiler/vectorise/VectType.hs +++ b/compiler/vectorise/VectType.hs @@ -1022,7 +1022,7 @@ fromVect (FunTy arg_ty res_ty) expr vres_ty <- vectType res_ty apply <- builtin applyClosureVar body <- fromVect res_ty - $ Var apply `mkTyApps` [arg_ty, res_ty] `mkApps` [expr, Var arg] + $ Var apply `mkTyApps` [varg_ty, vres_ty] `mkApps` [expr, varg] return $ Lam arg body fromVect ty expr = identityConv ty >> return expr diff --git a/compiler/vectorise/VectUtils.hs b/compiler/vectorise/VectUtils.hs index fcdcfd9..5c099c0 100644 --- a/compiler/vectorise/VectUtils.hs +++ b/compiler/vectorise/VectUtils.hs @@ -259,7 +259,7 @@ emptyPA :: Type -> VM CoreExpr emptyPA = paMethod pa_empty packPA :: Type -> CoreExpr -> CoreExpr -> CoreExpr -> VM CoreExpr -packPA ty xs len sel = liftM (`mkApps` [len, sel]) +packPA ty xs len sel = liftM (`mkApps` [xs, len, sel]) (paMethod pa_pack ty) combinePA :: Type -> CoreExpr -> CoreExpr -> CoreExpr -> [CoreExpr] diff --git a/compiler/vectorise/Vectorise.hs b/compiler/vectorise/Vectorise.hs index 63575b9..fac66ec 100644 --- a/compiler/vectorise/Vectorise.hs +++ b/compiler/vectorise/Vectorise.hs @@ -446,6 +446,7 @@ packLiftingContext len shape tag fvs res_ty p $ varSetElems fvs (vexpr, lexpr) <- p return (vexpr, Let (NonRec sel_var sel_expr) + . mkLets (concat bnds) $ Case len lc_var res_ty [(DEFAULT, [], lexpr)]) packFreeVar :: CoreExpr -> CoreExpr -> Var -> VM [CoreBind] -- 1.7.10.4