X-Git-Url: https://git.stderr.nl/gitweb?a=blobdiff_plain;f=c%CE%BBash%2FCLasH%2FNormalize%2FNormalizeTools.hs;h=b9f4544c2e768c0873302006d2efd2e7e9f9cd0a;hb=6a943c79c8f7d6247e0b3336046b8a41c88e72f1;hp=633ac7af44c0294c02a5e6d071e9cd19e0c81df1;hpb=ba3fc1b305de424187b698b18a5facac799093f4;p=matthijs%2Fmaster-project%2Fc%CE%BBash.git diff --git "a/c\316\273ash/CLasH/Normalize/NormalizeTools.hs" "b/c\316\273ash/CLasH/Normalize/NormalizeTools.hs" index 633ac7a..b9f4544 100644 --- "a/c\316\273ash/CLasH/Normalize/NormalizeTools.hs" +++ "b/c\316\273ash/CLasH/Normalize/NormalizeTools.hs" @@ -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", "==", "/=" - ] - - -- , (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