summaryrefslogtreecommitdiff
path: root/passes/opt/opt_const.cc
diff options
context:
space:
mode:
authorClifford Wolf <clifford@clifford.at>2013-02-27 18:00:01 +0100
committerClifford Wolf <clifford@clifford.at>2013-02-27 18:00:01 +0100
commit1bbc2b34c8c23f0da2d72f08c5cfb9dffa7fa673 (patch)
tree4c8b37f45666204e062d70a450f025d619a2d969 /passes/opt/opt_const.cc
parentda3d55a29c88de69ce7b51151544399e91ef23d8 (diff)
Added support for simple gates with one constant input to opt_const
Diffstat (limited to 'passes/opt/opt_const.cc')
-rw-r--r--passes/opt/opt_const.cc6
1 files changed, 6 insertions, 0 deletions
diff --git a/passes/opt/opt_const.cc b/passes/opt/opt_const.cc
index 9edea670..84b52544 100644
--- a/passes/opt/opt_const.cc
+++ b/passes/opt/opt_const.cc
@@ -76,6 +76,8 @@ void replace_const_cells(RTLIL::Module *module)
if (input.match("11")) ACTION_DO_Y(1);
if (input.match(" *")) ACTION_DO_Y(x);
if (input.match("* ")) ACTION_DO_Y(x);
+ if (input.match(" 1")) ACTION_DO("\\Y", input.extract(1, 1));
+ if (input.match("1 ")) ACTION_DO("\\Y", input.extract(0, 1));
}
if (cell->type == "$_OR_") {
@@ -88,6 +90,8 @@ void replace_const_cells(RTLIL::Module *module)
if (input.match("00")) ACTION_DO_Y(0);
if (input.match(" *")) ACTION_DO_Y(x);
if (input.match("* ")) ACTION_DO_Y(x);
+ if (input.match(" 0")) ACTION_DO("\\Y", input.extract(1, 1));
+ if (input.match("0 ")) ACTION_DO("\\Y", input.extract(0, 1));
}
if (cell->type == "$_XOR_") {
@@ -101,6 +105,8 @@ void replace_const_cells(RTLIL::Module *module)
if (input.match("11")) ACTION_DO_Y(0);
if (input.match(" *")) ACTION_DO_Y(x);
if (input.match("* ")) ACTION_DO_Y(x);
+ if (input.match(" 0")) ACTION_DO("\\Y", input.extract(1, 1));
+ if (input.match("0 ")) ACTION_DO("\\Y", input.extract(0, 1));
}
if (cell->type == "$_MUX_") {