Added const folding support for $signed and $unsigned
authorClifford Wolf <clifford@clifford.at>
Thu, 5 Dec 2013 12:09:41 +0000 (13:09 +0100)
committerClifford Wolf <clifford@clifford.at>
Thu, 5 Dec 2013 12:09:41 +0000 (13:09 +0100)
frontends/ast/simplify.cc

index 3d512d6f0b554784c7716cff35b03b4ce6c3daa9..fe4ff3f237129ec62414896144d44f2643255f21 100644 (file)
@@ -1205,6 +1205,13 @@ skip_dynamic_range_lvalue_expansion:;
                                newNode = mkconst_bits(y.bits, sign_hint);
                        }
                        break;
+               case AST_TO_SIGNED:
+               case AST_TO_UNSIGNED:
+                       if (children[0]->type == AST_CONSTANT) {
+                               RTLIL::Const y = children[0]->bitsAsConst(width_hint, sign_hint);
+                               newNode = mkconst_bits(y.bits, type == AST_TO_SIGNED);
+                       }
+                       break;
                if (0) { case AST_BIT_AND:  const_func = RTLIL::const_and;  }
                if (0) { case AST_BIT_OR:   const_func = RTLIL::const_or;   }
                if (0) { case AST_BIT_XOR:  const_func = RTLIL::const_xor;  }