mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-11-04 05:19:11 +00:00 
			
		
		
		
	Added != support for relational select pattern
This commit is contained in:
		
							parent
							
								
									623a68f528
								
							
						
					
					
						commit
						9a816b65a8
					
				
					 1 changed files with 7 additions and 1 deletions
				
			
		| 
						 | 
					@ -63,6 +63,8 @@ static bool match_attr_val(const RTLIL::Const &value, std::string pattern, char
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (match_op == '=')
 | 
							if (match_op == '=')
 | 
				
			||||||
			return value == pattern_value;
 | 
								return value == pattern_value;
 | 
				
			||||||
 | 
							if (match_op == '!')
 | 
				
			||||||
 | 
								return value != pattern_value;
 | 
				
			||||||
		if (match_op == '<')
 | 
							if (match_op == '<')
 | 
				
			||||||
			return value.as_int() < pattern_value.as_int();
 | 
								return value.as_int() < pattern_value.as_int();
 | 
				
			||||||
		if (match_op == '>')
 | 
							if (match_op == '>')
 | 
				
			||||||
| 
						 | 
					@ -82,6 +84,8 @@ static bool match_attr_val(const RTLIL::Const &value, std::string pattern, char
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (match_op == '=')
 | 
							if (match_op == '=')
 | 
				
			||||||
			return value_str == pattern;
 | 
								return value_str == pattern;
 | 
				
			||||||
 | 
							if (match_op == '!')
 | 
				
			||||||
 | 
								return value_str != pattern;
 | 
				
			||||||
		if (match_op == '<')
 | 
							if (match_op == '<')
 | 
				
			||||||
			return value_str < pattern;
 | 
								return value_str < pattern;
 | 
				
			||||||
		if (match_op == '>')
 | 
							if (match_op == '>')
 | 
				
			||||||
| 
						 | 
					@ -115,9 +119,11 @@ static bool match_attr(const std::map<RTLIL::IdString, RTLIL::Const> &attributes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static bool match_attr(const std::map<RTLIL::IdString, RTLIL::Const> &attributes, std::string match_expr)
 | 
					static bool match_attr(const std::map<RTLIL::IdString, RTLIL::Const> &attributes, std::string match_expr)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	size_t pos = match_expr.find_first_of("<=>");
 | 
						size_t pos = match_expr.find_first_of("<!=>");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (pos != std::string::npos) {
 | 
						if (pos != std::string::npos) {
 | 
				
			||||||
 | 
							if (match_expr.substr(pos, 2) == "!=")
 | 
				
			||||||
 | 
								return match_attr(attributes, match_expr.substr(0, pos), match_expr.substr(pos+2), '!');
 | 
				
			||||||
		if (match_expr.substr(pos, 2) == "<=")
 | 
							if (match_expr.substr(pos, 2) == "<=")
 | 
				
			||||||
			return match_attr(attributes, match_expr.substr(0, pos), match_expr.substr(pos+2), '[');
 | 
								return match_attr(attributes, match_expr.substr(0, pos), match_expr.substr(pos+2), '[');
 | 
				
			||||||
		if (match_expr.substr(pos, 2) == ">=")
 | 
							if (match_expr.substr(pos, 2) == ">=")
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue