add fromRangedWord function, and add error message to genVarArgs
[matthijs/master-project/cλash.git] / cλash / CLasH / Normalize / NormalizeTools.hs
index ed538cfc455ffc8431b834a0cd768f353b539af0..b9f4544c2e768c0873302006d2efd2e7e9f9cd0a 100644 (file)
@@ -24,6 +24,7 @@ import qualified Type
 -- Local imports
 import CLasH.Normalize.NormalizeTypes
 import CLasH.Translator.TranslatorTypes
+import CLasH.VHDL.Constants (builtinIds)
 import CLasH.Utils
 import qualified CLasH.Utils.Core.CoreTools as CoreTools
 import qualified CLasH.VHDL.VHDLTools as VHDLTools
@@ -45,8 +46,8 @@ applyboth first (name, second) expr = do
         -- trace ("Trying to apply transform " ++ name ++ " to:\n" ++ showSDoc (nest 4 $ ppr expr') ++ "\nType: \n" ++ (showSDoc $ nest 4 $ ppr $ CoreUtils.exprType expr') ++ "\n")
         changed 
     then 
-     -- trace ("Applying transform " ++ name ++ " to:\n" ++ showSDoc (nest 4 $ ppr expr') ++ "\nType: \n" ++ (showSDoc $ nest 4 $ ppr $ CoreUtils.exprType expr') ++ "\n") $
-     -- trace ("Result of applying " ++ name ++ ":\n" ++ showSDoc (nest 4 $ ppr expr'') ++ "\n" ++ "Type: \n" ++ (showSDoc $ nest 4 $ ppr $ CoreUtils.exprType expr'') ++ "\n" ) $
+     -- trace ("Applying transform " ++ name ++ " to:\n" ++ showSDoc (nest 4 $ ppr expr') ++ "\nType: \n" ++ (showSDoc $ nest 4 $ ppr $ CoreUtils.exprType expr') ++ "\n"
+     --        ++ "Result of applying " ++ name ++ ":\n" ++ showSDoc (nest 4 $ ppr expr'') ++ "\n" ++ "Type: \n" ++ (showSDoc $ nest 4 $ ppr $ CoreUtils.exprType expr'') ++ "\n" ) $
       applyboth first (name, second)
         expr'' 
     else 
@@ -195,34 +196,11 @@ is_local_var _ = return False
 isUserDefined :: CoreSyn.CoreBndr -> Bool
 -- System names are certain to not be user defined
 isUserDefined bndr | Name.isSystemName (Id.idName bndr) = False
--- Check a list of typical compiler-defined names
-isUserDefined bndr = str `notElem` (compiler_names ++ builtin_names)
+-- Builtin functions are usually not user-defined either (and would
+-- break currently if they are...)
+isUserDefined bndr = str `notElem` builtinIds
   where
     str = Name.getOccString bndr
-    -- These are names of bindings usually generated by the compiler. For some
-    -- reason these are not marked as system, probably because the name itself
-    -- is not made up by the compiler, just this particular binding is.
-    compiler_names = ["fromInteger"]
-    builtin_names = [ "!", "replace", "head", "last", "tail", "take", "drop"
-                    , "select", "+>", "<+", "++", "map", "zipWith", "foldl"
-                    , "foldr", "zip", "unzip", "shiftl", "shiftr", "rotl"
-                    , "rotr", "concat", "reverse", "iteraten", "iterate"
-                    , "generaten", "generate", "empty", "singleton", "copyn"
-                    , "copy", "lengthT", "null", "hwxor", "hwand", "hwor"
-                    , "hwnot", "not", "+", "*", "-", "fromSizedWord"
-                    , "resizeWord", "resizeInt", "fst", "snd", "blockRAM"
-                    , "split", "==", "/=", "init"
-                    ]
-
-    -- , (ltId             , (2, genOperator2 (AST.:<:)  ) )
-    -- , (lteqId           , (2, genOperator2 (AST.:<=:) ) )
-    -- , (gtId             , (2, genOperator2 (AST.:>:)  ) )
-    -- , (gteqId           , (2, genOperator2 (AST.:>=:) ) )
-    -- , (boolOrId         , (2, genOperator2 AST.Or     ) )
-    -- , (boolAndId        , (2, genOperator2 AST.And    ) )
-    -- , (negateId         , (1, genNegation             ) )
-    -- , (sizedIntId       , (1, genSizedInt             ) )
-    -- , (smallIntegerId   , (1, genFromInteger          ) )
 
 -- Is the given binder normalizable? This means that its type signature can be
 -- represented in hardware, which should (?) guarantee that it can be made