mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-10-29 18:52:30 +00:00 
			
		
		
		
	Make Const::as_string work without reducing packed bits to vector<State>
This commit is contained in:
		
							parent
							
								
									652190bd50
								
							
						
					
					
						commit
						a57b7dfd2e
					
				
					 2 changed files with 16 additions and 10 deletions
				
			
		|  | @ -505,18 +505,17 @@ std::optional<int> RTLIL::Const::as_int_compress(bool is_signed) const | ||||||
| 
 | 
 | ||||||
| std::string RTLIL::Const::as_string(const char* any) const | std::string RTLIL::Const::as_string(const char* any) const | ||||||
| { | { | ||||||
| 	bitvectorize_internal(); | 	int sz = size(); | ||||||
| 	bitvectype& bv = get_bits(); |  | ||||||
| 	std::string ret; | 	std::string ret; | ||||||
| 	ret.reserve(bv.size()); | 	ret.reserve(sz); | ||||||
| 	for (size_t i = bv.size(); i > 0; i--) | 	for (int i = sz - 1; i >= 0; --i) | ||||||
| 		switch (bv[i-1]) { | 		switch ((*this)[i]) { | ||||||
| 			case S0: ret += "0"; break; | 			case S0: ret.push_back('0'); break; | ||||||
| 			case S1: ret += "1"; break; | 			case S1: ret.push_back('1'); break; | ||||||
| 			case Sx: ret += "x"; break; | 			case Sx: ret.push_back('x'); break; | ||||||
| 			case Sz: ret += "z"; break; | 			case Sz: ret.push_back('z'); break; | ||||||
| 			case Sa: ret += any; break; | 			case Sa: ret += any; break; | ||||||
| 			case Sm: ret += "m"; break; | 			case Sm: ret.push_back('m'); break; | ||||||
| 		} | 		} | ||||||
| 	return ret; | 	return ret; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -124,6 +124,13 @@ namespace RTLIL { | ||||||
| 			EXPECT_TRUE(c.as_bool()); | 			EXPECT_TRUE(c.as_bool()); | ||||||
| 			EXPECT_TRUE(c.is_str()); | 			EXPECT_TRUE(c.is_str()); | ||||||
| 		} | 		} | ||||||
|  | 
 | ||||||
|  | 		{ | ||||||
|  | 			Const c(0x2, 8); | ||||||
|  | 			EXPECT_TRUE(c.is_str()); | ||||||
|  | 			EXPECT_EQ(c.as_string(), "00000010"); | ||||||
|  | 			EXPECT_TRUE(c.is_str()); | ||||||
|  | 		} | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	TEST_F(KernelRtlilTest, ConstConstIteratorWorks) { | 	TEST_F(KernelRtlilTest, ConstConstIteratorWorks) { | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue