diff options
author | whitequark <whitequark@whitequark.org> | 2020-12-21 00:22:50 +0000 |
---|---|---|
committer | whitequark <whitequark@whitequark.org> | 2020-12-21 02:20:30 +0000 |
commit | 40ca9d038b1e657b9b9ac17e7e5a2969c9922e00 (patch) | |
tree | e85bd96275c39333e6da341826485ff98003a95f /backends/cxxrtl | |
parent | 3d3ea5099d50a3de7b76ea47189b5700956b2703 (diff) | |
download | yosys-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/cxxrtl')
-rw-r--r-- | backends/cxxrtl/cxxrtl_backend.cc | 6 |
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"; |