-vectPolyExpr :: CoreExprWithFVs -> VM VExpr
-vectPolyExpr (_, AnnNote note expr)
- = liftM (vNote note) $ vectPolyExpr expr
-vectPolyExpr expr
- = polyAbstract tvs $ \abstract ->
- do
- mono' <- vectFnExpr False mono
- return $ mapVect abstract mono'
+vectPolyExpr :: Bool -> CoreExprWithFVs -> VM (Inline, VExpr)
+vectPolyExpr loop_breaker (_, AnnNote note expr)
+ = do
+ (inline, expr') <- vectPolyExpr loop_breaker expr
+ return (inline, vNote note expr')
+vectPolyExpr loop_breaker expr
+ = do
+ arity <- polyArity tvs
+ polyAbstract tvs $ \args ->
+ do
+ (inline, mono') <- vectFnExpr False loop_breaker mono
+ return (addInlineArity inline arity,
+ mapVect (mkLams $ tvs ++ args) mono')