diff options
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/rtlil.cc | 6 | ||||
| -rw-r--r-- | kernel/rtlil.h | 8 | 
2 files changed, 8 insertions, 6 deletions
| diff --git a/kernel/rtlil.cc b/kernel/rtlil.cc index fade0bc36..909f60dd9 100644 --- a/kernel/rtlil.cc +++ b/kernel/rtlil.cc @@ -3299,7 +3299,7 @@ void RTLIL::SigSpec::replace(int offset, const RTLIL::SigSpec &with)  	check();  } -void RTLIL::SigSpec::remove_const() +RTLIL::SigSpec& RTLIL::SigSpec::remove_const()  {  	if (packed())  	{ @@ -3333,6 +3333,7 @@ void RTLIL::SigSpec::remove_const()  	}  	check(); +	return *this;  }  void RTLIL::SigSpec::remove(int offset, int length) @@ -3428,7 +3429,7 @@ void RTLIL::SigSpec::append_bit(const RTLIL::SigBit &bit)  	check();  } -void RTLIL::SigSpec::extend_u0(int width, bool is_signed) +RTLIL::SigSpec& RTLIL::SigSpec::extend_u0(int width, bool is_signed)  {  	cover("kernel.rtlil.sigspec.extend_u0"); @@ -3445,6 +3446,7 @@ void RTLIL::SigSpec::extend_u0(int width, bool is_signed)  			append(padding);  	} +	return *this;  }  RTLIL::SigSpec RTLIL::SigSpec::repeat(int num) const diff --git a/kernel/rtlil.h b/kernel/rtlil.h index 37b5f984c..16fd852ba 100644 --- a/kernel/rtlil.h +++ b/kernel/rtlil.h @@ -754,8 +754,8 @@ public:  	inline int size() const { return width_; }  	inline bool empty() const { return width_ == 0; } -	inline RTLIL::SigBit &operator[](int index) { inline_unpack(); return bits_.at(index); } -	inline const RTLIL::SigBit &operator[](int index) const { inline_unpack(); return bits_.at(index); } +	inline RTLIL::SigBit &operator[](int index) { inline_unpack(); return index >= 0 ? bits_.at(index) : bits_.at(width_ + index); } +	inline const RTLIL::SigBit &operator[](int index) const { inline_unpack(); return index >= 0 ? bits_.at(index) : bits_.at(width_ + index); }  	inline RTLIL::SigSpecIterator begin() { RTLIL::SigSpecIterator it; it.sig_p = this; it.index = 0; return it; }  	inline RTLIL::SigSpecIterator end() { RTLIL::SigSpecIterator it; it.sig_p = this; it.index = width_; return it; } @@ -787,7 +787,7 @@ public:  	void remove2(const std::set<RTLIL::SigBit> &pattern, RTLIL::SigSpec *other);  	void remove(int offset, int length = 1); -	void remove_const(); +	RTLIL::SigSpec& remove_const();  	RTLIL::SigSpec extract(const RTLIL::SigSpec &pattern, const RTLIL::SigSpec *other = NULL) const;  	RTLIL::SigSpec extract(const pool<RTLIL::SigBit> &pattern, const RTLIL::SigSpec *other = NULL) const; @@ -797,7 +797,7 @@ public:  	void append(const RTLIL::SigSpec &signal);  	void append_bit(const RTLIL::SigBit &bit); -	void extend_u0(int width, bool is_signed = false); +	RTLIL::SigSpec& extend_u0(int width, bool is_signed = false);  	RTLIL::SigSpec repeat(int num) const; | 
