aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/rtlil.cc
diff options
context:
space:
mode:
authorNotAFile <notafile@gmail.com>2022-03-25 18:46:34 +0100
committergatecat <gatecat@ds0.me>2022-03-25 18:38:00 +0000
commit349c0ff0a7349a05fbb4381ba5b5ebb16b92261c (patch)
treed7808a03372f47d3f6666df2b2e9236c79429c52 /kernel/rtlil.cc
parenta7e7a9f485f82f131a7b8dd8e3254b38f575eb5b (diff)
downloadyosys-349c0ff0a7349a05fbb4381ba5b5ebb16b92261c.tar.gz
yosys-349c0ff0a7349a05fbb4381ba5b5ebb16b92261c.tar.bz2
yosys-349c0ff0a7349a05fbb4381ba5b5ebb16b92261c.zip
Add some more reserve calls to RTLIL::Const
This results in a slight ~0.22% total speedup synthesizing vexriscv
Diffstat (limited to 'kernel/rtlil.cc')
-rw-r--r--kernel/rtlil.cc5
1 files changed, 5 insertions, 0 deletions
diff --git a/kernel/rtlil.cc b/kernel/rtlil.cc
index a89edd992..72dcb89af 100644
--- a/kernel/rtlil.cc
+++ b/kernel/rtlil.cc
@@ -207,6 +207,7 @@ RTLIL::Const::Const()
RTLIL::Const::Const(std::string str)
{
flags = RTLIL::CONST_FLAG_STRING;
+ bits.reserve(str.size() * 8);
for (int i = str.size()-1; i >= 0; i--) {
unsigned char ch = str[i];
for (int j = 0; j < 8; j++) {
@@ -219,6 +220,7 @@ RTLIL::Const::Const(std::string str)
RTLIL::Const::Const(int val, int width)
{
flags = RTLIL::CONST_FLAG_NONE;
+ bits.reserve(width);
for (int i = 0; i < width; i++) {
bits.push_back((val & 1) != 0 ? State::S1 : State::S0);
val = val >> 1;
@@ -228,6 +230,7 @@ RTLIL::Const::Const(int val, int width)
RTLIL::Const::Const(RTLIL::State bit, int width)
{
flags = RTLIL::CONST_FLAG_NONE;
+ bits.reserve(width);
for (int i = 0; i < width; i++)
bits.push_back(bit);
}
@@ -235,6 +238,7 @@ RTLIL::Const::Const(RTLIL::State bit, int width)
RTLIL::Const::Const(const std::vector<bool> &bits)
{
flags = RTLIL::CONST_FLAG_NONE;
+ this->bits.reserve(bits.size());
for (const auto &b : bits)
this->bits.emplace_back(b ? State::S1 : State::S0);
}
@@ -242,6 +246,7 @@ RTLIL::Const::Const(const std::vector<bool> &bits)
RTLIL::Const::Const(const RTLIL::Const &c)
{
flags = c.flags;
+ this->bits.reserve(c.size());
for (const auto &b : c.bits)
this->bits.push_back(b);
}