aboutsummaryrefslogtreecommitdiffstats
path: root/backends
diff options
context:
space:
mode:
authorwhitequark <whitequark@whitequark.org>2020-12-21 00:22:50 +0000
committerwhitequark <whitequark@whitequark.org>2020-12-21 02:20:30 +0000
commit40ca9d038b1e657b9b9ac17e7e5a2969c9922e00 (patch)
treee85bd96275c39333e6da341826485ff98003a95f /backends
parent3d3ea5099d50a3de7b76ea47189b5700956b2703 (diff)
downloadyosys-40ca9d038b1e657b9b9ac17e7e5a2969c9922e00.tar.gz
yosys-40ca9d038b1e657b9b9ac17e7e5a2969c9922e00.tar.bz2
yosys-40ca9d038b1e657b9b9ac17e7e5a2969c9922e00.zip
cxxrtl: speed up commits on clang.
On Minerva SoC SRAM compiled with clang-11, this change cuts commit time in half (!) and overall time by 20%. When compiled with gcc-10, there is no difference.
Diffstat (limited to 'backends')
-rw-r--r--backends/cxxrtl/cxxrtl_backend.cc6
1 files changed, 3 insertions, 3 deletions
diff --git a/backends/cxxrtl/cxxrtl_backend.cc b/backends/cxxrtl/cxxrtl_backend.cc
index 9875aba60..3b2fb4985 100644
--- a/backends/cxxrtl/cxxrtl_backend.cc
+++ b/backends/cxxrtl/cxxrtl_backend.cc
@@ -1702,19 +1702,19 @@ struct CxxrtlWorker {
continue;
}
if (!module->get_bool_attribute(ID(cxxrtl_blackbox)) || wire->port_id != 0)
- f << indent << "changed |= " << mangle(wire) << ".commit();\n";
+ f << indent << "if (" << mangle(wire) << ".commit()) changed = true;\n";
}
if (!module->get_bool_attribute(ID(cxxrtl_blackbox))) {
for (auto memory : module->memories) {
if (!writable_memories[memory.second])
continue;
- f << indent << "changed |= " << mangle(memory.second) << ".commit();\n";
+ f << indent << "if (" << mangle(memory.second) << ".commit()) changed = true;\n";
}
for (auto cell : module->cells()) {
if (is_internal_cell(cell->type))
continue;
const char *access = is_cxxrtl_blackbox_cell(cell) ? "->" : ".";
- f << indent << "changed |= " << mangle(cell) << access << "commit();\n";
+ f << indent << "if (" << mangle(cell) << access << "commit()) changed = true;\n";
}
}
f << indent << "return changed;\n";