--let valargs = filter isValArg args in
if all is_var valargs then do
labels <- getFieldLabels (CoreUtils.exprType app)
- let assigns = zipWith mkassign labels valargs
- let block_id = bndrToVHDLId bndr
- let block = AST.BlockSm block_id [] (AST.PMapAspect []) [] assigns
- return [AST.CSBSm block]
+ return $ zipWith mkassign labels valargs
else
error $ "VHDL.mkConcSm Not in normal form: One ore more complex arguments: " ++ pprString args
where
(error $ "Using function '" ++ (bndrToString f) ++ "' without signature? This should not happen!")
(Map.lookup f signatures)
entity_id = ent_id signature
- label = bndrToString bndr
+ label = "comp_ins_" ++ bndrToString bndr
-- Add a clk port if we have state
--clk_port = Maybe.fromJust $ mkAssocElem (Just $ mkVHDLExtId "clk") "clk"
+ clk_port = Maybe.fromJust $ mkAssocElem (Just $ mkVHDLExtId "clk") "clk"
--portmaps = mkAssocElems sigs args res signature ++ (if hasState hsfunc then [clk_port] else [])
- portmaps = mkAssocElems args bndr signature
+ portmaps = clk_port : mkAssocElems args bndr signature
in
return [AST.CSISm $ AST.CompInsSm (mkVHDLExtId label) (AST.IUEntity (AST.NSimple entity_id)) (AST.PMapAspect portmaps)]
details -> error $ "Calling unsupported function " ++ pprString f ++ " with GlobalIdDetails " ++ pprString details
--- GHC generates some funny "r = r" bindings in let statements before
--- simplification. This outputs some dummy ConcSM for these, so things will at
--- least compile for now.
-mkConcSm (bndr, CoreSyn.Var _) = return [AST.CSPSm $ AST.ProcSm (mkVHDLBasicId "unused") [] []]
-
-- A single alt case must be a selector. This means thee scrutinee is a simple
-- variable, the alternative is a dataalt with a single non-wild binder that
-- is also returned.