summaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
Diffstat (limited to 'kernel')
-rw-r--r--kernel/rtlil.cc12
-rw-r--r--kernel/rtlil.h3
2 files changed, 15 insertions, 0 deletions
diff --git a/kernel/rtlil.cc b/kernel/rtlil.cc
index 610ab6a8..753c4009 100644
--- a/kernel/rtlil.cc
+++ b/kernel/rtlil.cc
@@ -1652,6 +1652,18 @@ RTLIL::SigSpec::SigSpec(const RTLIL::SigSpec &other)
*this = other;
}
+RTLIL::SigSpec::SigSpec(std::initializer_list<RTLIL::SigSpec> parts)
+{
+ cover("kernel.rtlil.sigspec.init.list");
+
+ width_ = 0;
+ hash_ = 0;
+
+ std::vector<RTLIL::SigSpec> parts_vec(parts.begin(), parts.end());
+ for (auto it = parts_vec.rbegin(); it != parts_vec.rend(); it++)
+ append(*it);
+}
+
const RTLIL::SigSpec &RTLIL::SigSpec::operator=(const RTLIL::SigSpec &other)
{
cover("kernel.rtlil.sigspec.assign");
diff --git a/kernel/rtlil.h b/kernel/rtlil.h
index cd00b43d..331ea377 100644
--- a/kernel/rtlil.h
+++ b/kernel/rtlil.h
@@ -26,6 +26,8 @@
#include <string>
#include <assert.h>
+#include <initializer_list>
+
// various helpers (unrelated to RTLIL)
std::string stringf(const char *fmt, ...);
#define SIZE(__obj) int(__obj.size())
@@ -738,6 +740,7 @@ private:
public:
SigSpec();
SigSpec(const RTLIL::SigSpec &other);
+ SigSpec(std::initializer_list<RTLIL::SigSpec> parts);
const RTLIL::SigSpec &operator=(const RTLIL::SigSpec &other);
SigSpec(const RTLIL::Const &value);