From: Clifford Wolf Date: Fri, 8 Mar 2013 07:47:29 +0000 (+0100) Subject: Added ## selection operator (union all on stack) X-Git-Tag: yosys-0.2.0~731 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=79b3afa0110f975f300674426c938bab25d76baf;p=yosys.git Added ## selection operator (union all on stack) --- diff --git a/kernel/select.cc b/kernel/select.cc index ae76f4f43..df13fce1f 100644 --- a/kernel/select.cc +++ b/kernel/select.cc @@ -325,6 +325,12 @@ static void select_stmt(RTLIL::Design *design, std::string arg) if (design->selection_stack.size() > 0) work_stack.push_back(design->selection_stack.back()); } else + if (arg == "##") { + while (work_stack.size() > 1) { + select_op_union(design, work_stack.front(), work_stack.back()); + work_stack.pop_back(); + } + } else if (arg == "#n") { if (work_stack.size() < 1) log_cmd_error("Must have at least one element on stack for operator #n.\n"); @@ -617,6 +623,9 @@ struct SelectPass : public Pass { log(" #\n"); log(" push a copy of the current selection to the stack\n"); log("\n"); + log(" ##\n"); + log(" replace the stack with a union of all elements on it\n"); + log("\n"); log(" #n\n"); log(" replace top set with its invert\n"); log("\n");