aboutsummaryrefslogtreecommitdiffstats
path: root/passes/opt/share.cc
diff options
context:
space:
mode:
authorclairexen <claire@symbioticeda.com>2020-05-29 16:37:23 +0200
committerGitHub <noreply@github.com>2020-05-29 16:37:23 +0200
commit94c10353897c6b2b3f960bdd6647a5da9c1d9f2c (patch)
tree695ca7d8b26c8c4268498c76e09c157d9846bde0 /passes/opt/share.cc
parentaf36afe722dc35b129351af592ef340e512e0292 (diff)
parentf88bef767263590c94e157d0989afa91db3ccdb0 (diff)
downloadyosys-94c10353897c6b2b3f960bdd6647a5da9c1d9f2c.tar.gz
yosys-94c10353897c6b2b3f960bdd6647a5da9c1d9f2c.tar.bz2
yosys-94c10353897c6b2b3f960bdd6647a5da9c1d9f2c.zip
Merge pull request #1885 from Xiretza/mod-rem-cells
Fix modulo/remainder semantics
Diffstat (limited to 'passes/opt/share.cc')
-rw-r--r--passes/opt/share.cc6
1 files changed, 5 insertions, 1 deletions
diff --git a/passes/opt/share.cc b/passes/opt/share.cc
index 2839507b0..988253edf 100644
--- a/passes/opt/share.cc
+++ b/passes/opt/share.cc
@@ -376,7 +376,7 @@ struct ShareWorker
continue;
}
- if (cell->type.in(ID($mul), ID($div), ID($mod))) {
+ if (cell->type.in(ID($mul), ID($div), ID($mod), ID($divfloor), ID($modfloor))) {
if (config.opt_aggressive || cell->parameters.at(ID::Y_WIDTH).as_int() >= 4)
shareable_cells.insert(cell);
continue;
@@ -1133,6 +1133,8 @@ struct ShareWorker
cone_ct.cell_types.erase(ID($mul));
cone_ct.cell_types.erase(ID($mod));
cone_ct.cell_types.erase(ID($div));
+ cone_ct.cell_types.erase(ID($modfloor));
+ cone_ct.cell_types.erase(ID($divfloor));
cone_ct.cell_types.erase(ID($pow));
cone_ct.cell_types.erase(ID($shl));
cone_ct.cell_types.erase(ID($shr));
@@ -1512,6 +1514,8 @@ struct SharePass : public Pass {
config.generic_bin_ops.insert(ID($sub));
config.generic_bin_ops.insert(ID($div));
config.generic_bin_ops.insert(ID($mod));
+ config.generic_bin_ops.insert(ID($divfloor));
+ config.generic_bin_ops.insert(ID($modfloor));
// config.generic_bin_ops.insert(ID($pow));
config.generic_uni_ops.insert(ID($logic_not));