diff options
author | Clifford Wolf <clifford@clifford.at> | 2019-03-23 14:38:48 +0100 |
---|---|---|
committer | Clifford Wolf <clifford@clifford.at> | 2019-03-23 14:38:48 +0100 |
commit | 3b796c033cc40a753e24f21b25b2701a30f022f1 (patch) | |
tree | 237d5e489e8c996061cfaed1e716a704cb9a08b7 | |
parent | a440f82586eda461ae2a90cba7a14d7078c41f37 (diff) | |
download | yosys-3b796c033cc40a753e24f21b25b2701a30f022f1.tar.gz yosys-3b796c033cc40a753e24f21b25b2701a30f022f1.tar.bz2 yosys-3b796c033cc40a753e24f21b25b2701a30f022f1.zip |
Add RTLIL::Const::ext[su](), fix RTLIL::SigSpec::extend_u0 for 0-size signals
Signed-off-by: Clifford Wolf <clifford@clifford.at>
-rw-r--r-- | kernel/rtlil.cc | 2 | ||||
-rw-r--r-- | kernel/rtlil.h | 8 |
2 files changed, 9 insertions, 1 deletions
diff --git a/kernel/rtlil.cc b/kernel/rtlil.cc index d0fa88890..b3214579d 100644 --- a/kernel/rtlil.cc +++ b/kernel/rtlil.cc @@ -3237,7 +3237,7 @@ void RTLIL::SigSpec::extend_u0(int width, bool is_signed) remove(width, width_ - width); if (width_ < width) { - RTLIL::SigBit padding = width_ > 0 ? (*this)[width_ - 1] : RTLIL::State::S0; + RTLIL::SigBit padding = width_ > 0 ? (*this)[width_ - 1] : RTLIL::State::Sx; if (!is_signed) padding = RTLIL::State::S0; while (width_ < width) diff --git a/kernel/rtlil.h b/kernel/rtlil.h index 01323d112..52496e702 100644 --- a/kernel/rtlil.h +++ b/kernel/rtlil.h @@ -546,6 +546,14 @@ struct RTLIL::Const return ret; } + void extu(int width) { + bits.resize(width, RTLIL::State::S0); + } + + void exts(int width) { + bits.resize(width, bits.empty() ? RTLIL::State::Sx : bits.back()); + } + inline unsigned int hash() const { unsigned int h = mkhash_init; for (auto b : bits) |