vectTopBind b@(Rec bs)
= do
- -- pprTrace "in Rec" (ppr vars) $ return ()
(vars', _, exprs')
<- fixV $ \ ~(_, inlines, rhss) ->
do vars' <- sequence [vectTopBinder var inline rhs
<- mapAndUnzip3M (uncurry $ vectTopRhs vars) bs
if (and areScalars') || (length bs <= 1)
then do
- -- pprTrace "in Rec - all scalars??" (ppr areScalars') $ return ()
return (vars', inlines', exprs')
else do
- -- pprTrace "in Rec - not all scalars" (ppr areScalars') $ return ()
- mapM deleteGlobalScalar vars
+ _ <- mapM deleteGlobalScalar vars
(inlines'', _, exprs'') <- mapAndUnzip3M (uncurry $ vectTopRhs []) bs
return (vars', inlines'', exprs'')
vectTopRhs recFs var expr
= dtrace (vcat [text "vectTopRhs", ppr expr])
$ closedV
- $ do (inline, isScalar, vexpr) <- inBind var
- -- $ pprTrace "vectTopRhs" (ppr var)
- $ vectPolyExpr (isLoopBreaker $ idOccInfo var) recFs
- (freeVars expr)
+ $ do (inline, isScalar, vexpr) <-
+ inBind var $ vectPolyExpr (isLoopBreaker $ idOccInfo var) recFs (freeVars expr)
if isScalar
then addGlobalScalar var
else deleteGlobalScalar var