summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--kernel/rtlil.cc7
-rw-r--r--kernel/rtlil.h3
2 files changed, 9 insertions, 1 deletions
diff --git a/kernel/rtlil.cc b/kernel/rtlil.cc
index 6556b82e..00be796f 100644
--- a/kernel/rtlil.cc
+++ b/kernel/rtlil.cc
@@ -65,6 +65,13 @@ RTLIL::Const::Const(RTLIL::State bit, int width)
bits.push_back(bit);
}
+RTLIL::Const::Const(const std::vector<bool> &bits)
+{
+ flags = RTLIL::CONST_FLAG_NONE;
+ for (auto b : bits)
+ this->bits.push_back(b ? RTLIL::S1 : RTLIL::S0);
+}
+
bool RTLIL::Const::operator <(const RTLIL::Const &other) const
{
if (bits.size() != other.bits.size())
diff --git a/kernel/rtlil.h b/kernel/rtlil.h
index c4883769..a0ae8f08 100644
--- a/kernel/rtlil.h
+++ b/kernel/rtlil.h
@@ -428,7 +428,8 @@ struct RTLIL::Const
Const(std::string str);
Const(int val, int width = 32);
Const(RTLIL::State bit, int width = 1);
- Const(std::vector<RTLIL::State> bits) : bits(bits) { flags = CONST_FLAG_NONE; };
+ Const(const std::vector<RTLIL::State> &bits) : bits(bits) { flags = CONST_FLAG_NONE; };
+ Const(const std::vector<bool> &bits);
bool operator <(const RTLIL::Const &other) const;
bool operator ==(const RTLIL::Const &other) const;