From 91a45ce23469be8f039ba3d84c2d6bd50499cf52 Mon Sep 17 00:00:00 2001 From: Zachary Snow Date: Sat, 10 Jul 2021 19:58:19 -0400 Subject: [PATCH] constant folding evaluates localparam casts where possible --- src/Convert/Simplify.hs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/Convert/Simplify.hs b/src/Convert/Simplify.hs index 0af2a8b..82338c2 100644 --- a/src/Convert/Simplify.hs +++ b/src/Convert/Simplify.hs @@ -1,3 +1,4 @@ +{-# LANGUAGE PatternSynonyms #-} {- sv2v - Author: Zachary Snow - @@ -44,7 +45,15 @@ traverseDeclM decl = do _ -> return () return decl' +pattern SimpleVector :: Signing -> Integer -> Integer -> Type +pattern SimpleVector sg l r <- IntegerVector _ sg [(RawNum l, RawNum r)] + insertExpr :: Identifier -> Expr -> Scoper Expr () +insertExpr ident (Cast (Left (SimpleVector sg l r)) (Number n)) = + insertExpr ident $ Number $ numberCast signed size n + where + signed = sg == Signed + size = fromIntegral $ abs $ l - r + 1 insertExpr ident expr = do expr' <- substituteExprM expr when (isSimpleExpr expr') $ insertElem ident expr'