From 0873e46c2f20a6a168bca71a14d48613b22c94da Mon Sep 17 00:00:00 2001 From: Roman Leshchinskiy Date: Thu, 13 Dec 2007 03:48:55 +0000 Subject: [PATCH] Treat some standard data cons specially during vectorisation This is a temporary hack which allows us to vectorise literals. --- compiler/vectorise/Vectorise.hs | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/compiler/vectorise/Vectorise.hs b/compiler/vectorise/Vectorise.hs index 1b7bca0..80c896c 100644 --- a/compiler/vectorise/Vectorise.hs +++ b/compiler/vectorise/Vectorise.hs @@ -243,6 +243,17 @@ vectExpr e@(_, AnnApp _ arg) where (fn, tys) = collectAnnTypeArgs e +vectExpr (_, AnnApp (_, AnnVar v) (_, AnnLit lit)) + | Just con <- isDataConId_maybe v + , is_special_con con + = do + let vexpr = App (Var v) (Lit lit) + lexpr <- liftPA vexpr + return (vexpr, lexpr) + where + is_special_con con = con `elem` [intDataCon, floatDataCon, doubleDataCon] + + vectExpr (_, AnnApp fn arg) = do arg_ty' <- vectType arg_ty -- 1.7.10.4