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
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]
$ 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]