X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2Fvectorise%2FVectorise%2FExp.hs;h=4e07086fd83eff5ce17b6cd0a309dc075b350ed7;hb=f0c2b5e857841103e5431b698a9eb853aea399b0;hp=d00b040726930be1d6af5cdeb245c3676f54b44f;hpb=aa8096682b02fefcdc77e8f689b50b7288e273e7;p=ghc-hetmet.git diff --git a/compiler/vectorise/Vectorise/Exp.hs b/compiler/vectorise/Vectorise/Exp.hs index d00b040..4e07086 100644 --- a/compiler/vectorise/Vectorise/Exp.hs +++ b/compiler/vectorise/Vectorise/Exp.hs @@ -203,7 +203,11 @@ vectScalarLam args body is_scalar vs (Var v) = v `elemVarSet` vs is_scalar _ e@(Lit _) = is_scalar_ty $ exprType e - is_scalar vs (App e1 e2) = is_scalar vs e1 && is_scalar vs e2 + + is_scalar _ (App (Var v) (Lit lit)) + | Just con <- isDataConId_maybe v = con `elem` [intDataCon, floatDataCon, doubleDataCon] + + is_scalar vs (App e1 e2) = is_scalar vs e1 && is_scalar vs e2 is_scalar vs (Let (NonRec b letExpr) body) = is_scalar vs letExpr && is_scalar (extendVarSet vs b) body is_scalar vs (Let (Rec bnds) body) @@ -214,7 +218,7 @@ vectScalarLam args body in is_scalar_ty ty && is_scalar vs' e && (all (is_scalar_alt vs') alts) - + is_scalar _ e = False is_scalar_alt vs (_, bs, e)