aboutsummaryrefslogtreecommitdiffstats
path: root/frontends/ast/simplify.cc
diff options
context:
space:
mode:
authorclairexen <claire@symbioticeda.com>2020-07-01 16:40:20 +0200
committerGitHub <noreply@github.com>2020-07-01 16:40:20 +0200
commit8ce4f8790ecf33f7df19e0fb54a749abe026831d (patch)
tree20d18b6f47cb74be76d91568cfc0e0f51a47f1dd /frontends/ast/simplify.cc
parentb1707407a0912fe44ecf83f6f8e64b13a1c4daee (diff)
parent429d37ff41b5a058fdd0b70f23a55170a973c369 (diff)
downloadyosys-8ce4f8790ecf33f7df19e0fb54a749abe026831d.tar.gz
yosys-8ce4f8790ecf33f7df19e0fb54a749abe026831d.tar.bz2
yosys-8ce4f8790ecf33f7df19e0fb54a749abe026831d.zip
Merge pull request #2179 from splhack/static-cast
Support SystemVerilog Static Cast
Diffstat (limited to 'frontends/ast/simplify.cc')
-rw-r--r--frontends/ast/simplify.cc8
1 files changed, 8 insertions, 0 deletions
diff --git a/frontends/ast/simplify.cc b/frontends/ast/simplify.cc
index c819924a0..c4df5c0a0 100644
--- a/frontends/ast/simplify.cc
+++ b/frontends/ast/simplify.cc
@@ -950,6 +950,7 @@ bool AstNode::simplify(bool const_fold, bool at_zero, bool in_lvalue, int stage,
case AST_TO_SIGNED:
case AST_TO_UNSIGNED:
case AST_SELFSZ:
+ case AST_CAST_SIZE:
case AST_CONCAT:
case AST_REPLICATE:
case AST_REDUCE_AND:
@@ -3487,6 +3488,13 @@ replace_fcall_later:;
}
}
break;
+ case AST_CAST_SIZE:
+ if (children.at(0)->type == AST_CONSTANT && children.at(1)->type == AST_CONSTANT) {
+ int width = children[0]->bitsAsConst().as_int();
+ RTLIL::Const val = children[1]->bitsAsConst(width);
+ newNode = mkconst_bits(val.bits, children[1]->is_signed);
+ }
+ break;
case AST_CONCAT:
string_op = !children.empty();
for (auto it = children.begin(); it != children.end(); it++) {