packages feed

clash-ghc 0.5.7 → 0.5.8

raw patch · 7 files changed

+67/−15 lines, 7 filesdep ~clash-libdep ~clash-preludedep ~clash-systemverilog

Dependency ranges changed: clash-lib, clash-prelude, clash-systemverilog, clash-verilog, clash-vhdl

Files

CHANGELOG.md view
@@ -1,5 +1,11 @@ # Changelog for the [`clash-ghc`](http://hackage.haskell.org/package/clash-ghc) package +## 0.5.8 *June 25th 2015*+* New features:+  * Support for copying string literals from Haskell to generated code+  * Support `clash-prelude-0.9`+  * Size at below which functions are always inlined is configurable, run with `-clash-inline-below=N` to set the size limit to `N`+ ## 0.5.7 *June 3rd 2015* * New features:   * New Verilog backend, run `:verilog` in interactive mode, or `--verilog` for batch mode
clash-ghc.cabal view
@@ -1,5 +1,5 @@ Name:                 clash-ghc-Version:              0.5.7+Version:              0.5.8 Synopsis:             CAES Language for Synchronous Hardware Description:   CλaSH (pronounced ‘clash’) is a functional hardware description language that@@ -70,11 +70,11 @@                       unbound-generics          >= 0.1,                       unordered-containers      >= 0.2.1.0, -                      clash-lib                 >= 0.5.6,-                      clash-systemverilog       >= 0.5.5,-                      clash-vhdl                >= 0.5.5,-                      clash-verilog             >= 0.5.5,-                      clash-prelude             >= 0.8,+                      clash-lib                 >= 0.5.7,+                      clash-systemverilog       >= 0.5.6,+                      clash-vhdl                >= 0.5.7,+                      clash-verilog             >= 0.5.6,+                      clash-prelude             >= 0.9,                       ghc-typelits-natnormalise >= 0.3    if os(windows)
src-bin/Main.hs view
@@ -126,6 +126,7 @@     r <- newIORef (CLaSHOpts { opt_dbgLevel    = DebugNone                              , opt_inlineLimit = 20                              , opt_specLimit   = 20+                             , opt_inlineBelow = 15                              })     (argv3, clashFlagWarnings) <- parseCLaSHFlags r argv2 
src-ghc/CLaSH/GHC/CLaSHFlags.hs view
@@ -31,6 +31,7 @@ flagsClash r = [     defFlag "clash-inline-limit" (IntSuffix (liftEwM . setInlineLimit r))   , defFlag "clash-spec-limit" (IntSuffix (liftEwM . setSpecLimit r))+  , defFlag "clash-inline-below" (IntSuffix (liftEwM . setInlineBelow r))   , defFlag "clash-debug" (SepArg (setDebugLevel r))   ] @@ -38,6 +39,11 @@                -> Int                -> IO () setInlineLimit r n = modifyIORef r (\c -> c {opt_inlineLimit = n})++setInlineBelow :: IORef CLaSHOpts+               -> Int+               -> IO ()+setInlineBelow r n = modifyIORef r (\c -> c {opt_inlineBelow = n})  setSpecLimit :: IORef CLaSHOpts              -> Int
src-ghc/CLaSH/GHC/GHC2Core.hs view
@@ -61,7 +61,12 @@                    algTyConRhs, isAlgTyCon, isFamilyTyCon,                    isFunTyCon, isNewTyCon,                    isPrimTyCon, isTupleTyCon,-                   tcExpandTyCon_maybe, tyConArity,+#if __GLASGOW_HASKELL__ >= 711+                   expandSynTyCon_maybe,+#else+                   tcExpandTyCon_maybe,+#endif+                   tyConArity,                    tyConDataCons, tyConKind,                    tyConName, tyConUnique) import Type       (mkTopTvSubst, substTy, tcView)@@ -278,6 +283,7 @@               | f == pack "CLaSH.Signal.Internal.signal#"    -> return (signalTerm xType)               | f == pack "CLaSH.Signal.Internal.appSignal#" -> return (appSignalTerm xType)               | f == pack "CLaSH.Signal.Internal.traverse#"  -> return (traverseTerm xType)+              | f == pack "CLaSH.Signal.Internal.joinSignal#" -> return (joinTerm xType)               | f == pack "CLaSH.Signal.Bundle.vecBundle#"   -> return (vecUnwrapTerm xType)               | f == pack "GHC.Base.$"                       -> return (dollarTerm xType)               | otherwise                                    -> return (C.Prim xNameS xType)@@ -357,7 +363,11 @@ coreToType' (TyVarTy tv) = C.VarTy <$> coreToType (varType tv) <*> (coreToVar tv) coreToType' (TyConApp tc args)   | isFunTyCon tc = foldl C.AppTy (C.ConstTy C.Arrow) <$> mapM coreToType args+#if __GLASGOW_HASKELL__ >= 711+  | otherwise     = case expandSynTyCon_maybe tc args of+#else   | otherwise     = case tcExpandTyCon_maybe tc args of+#endif                       Just (substs,synTy,remArgs) -> do                         let substs' = mkTopTvSubst substs                             synTy'  = substTy substs' synTy@@ -638,6 +648,18 @@     xId   = C.Id xName (embed aTy)  dollarTerm ty = error $ $(curLoc) ++ show ty++-- | Given the type:+--+-- @forall a. forall clk. Signal' clk (Signal' clk a) -> Signal' clk a@+--+-- Generate the term+--+-- @/\(a:*)./\(clk:Clock).\(x:Signal' clk a).x@+joinTerm :: C.Type+         -> C.Term+joinTerm ty@(C.ForAllTy _) = signalTerm ty+joinTerm ty = error $ $(curLoc) ++ show ty  isDataConWrapId :: Id -> Bool isDataConWrapId v = case idDetails v of
src-ghc/CLaSH/GHC/LoadModules.hs view
@@ -94,13 +94,18 @@                                      }                   return dfPlug -    let dflags1 = dflags { DynFlags.ctxtStkDepth = 1000-                         , DynFlags.optLevel = 2-                         , DynFlags.ghcMode  = GHC.CompManager-                         , DynFlags.ghcLink  = GHC.LinkInMemory-                         , DynFlags.hscTarget = DynFlags.defaultObjectTarget-                                                  (DynFlags.targetPlatform dflags)-                         }+    let dflags1 = dflags+#if __GLASGOW_HASKELL__ >= 711+                    { DynFlags.reductionDepth = 1000+#else+                    { DynFlags.ctxtStkDepth = 1000+#endif+                    , DynFlags.optLevel = 2+                    , DynFlags.ghcMode  = GHC.CompManager+                    , DynFlags.ghcLink  = GHC.LinkInMemory+                    , DynFlags.hscTarget = DynFlags.defaultObjectTarget+                                             (DynFlags.targetPlatform dflags)+                    }     let dflags2 = wantedOptimizationFlags dflags1     let ghcDynamic = case lookup "GHC Dynamic" (DynFlags.compilerInfo dflags) of                       Just "YES" -> True@@ -163,7 +168,13 @@   = ms {GHC.ms_hspp_opts = dflags}   where     dflags = wantedOptimizationFlags (ms_hspp_opts-              {DynFlags.optLevel = 2, DynFlags.ctxtStkDepth = 1000})+              { DynFlags.optLevel = 2+#if __GLASGOW_HASKELL__ >= 711+              , DynFlags.reductionDepth = 1000+#else+              , DynFlags.ctxtStkDepth = 1000+#endif+              })  wantedOptimizationFlags :: GHC.DynFlags -> GHC.DynFlags wantedOptimizationFlags df = foldl DynFlags.gopt_unset (foldl DynFlags.gopt_set df wanted) unwanted
src-ghc/CLaSH/GHC/NetlistTypes.hs view
@@ -52,6 +52,12 @@       sz     <- tyNatSize m szTy       elHWTy <- ExceptT $ return $ coreTypeToHWType ghcTypeToHWType m elTy       return $ Vector sz elHWTy++    "String" -> return Void+    "GHC.Types.[]" -> case tyView (head args) of+      (TyConApp (name2String -> "GHC.Types.Char") []) -> return Void+      _ -> fail $ "Can't translate type: " ++ showDoc ty+     _ -> case m ! tc of            -- TODO: Remove this conversion            -- The current problem is that type-functions are not reduced by the GHC -> Core