mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-11-03 21:09:12 +00:00 
			
		
		
		
	Added Verilog $rtoi and $itor support
This commit is contained in:
		
							parent
							
								
									81bb952e5d
								
							
						
					
					
						commit
						dfb461fe52
					
				
					 1 changed files with 30 additions and 24 deletions
				
			
		| 
						 | 
				
			
			@ -1864,7 +1864,8 @@ skip_dynamic_range_lvalue_expansion:;
 | 
			
		|||
			if (str == "\\$ln" || str == "\\$log10" || str == "\\$exp" || str == "\\$sqrt" || str == "\\$pow" ||
 | 
			
		||||
					str == "\\$floor" || str == "\\$ceil" || str == "\\$sin" || str == "\\$cos" || str == "\\$tan" ||
 | 
			
		||||
					str == "\\$asin" || str == "\\$acos" || str == "\\$atan" || str == "\\$atan2" || str == "\\$hypot" ||
 | 
			
		||||
					str == "\\$sinh" || str == "\\$cosh" || str == "\\$tanh" || str == "\\$asinh" || str == "\\$acosh" || str == "\\$atanh")
 | 
			
		||||
					str == "\\$sinh" || str == "\\$cosh" || str == "\\$tanh" || str == "\\$asinh" || str == "\\$acosh" || str == "\\$atanh" ||
 | 
			
		||||
					str == "\\$rtoi" || str == "\\$itor")
 | 
			
		||||
			{
 | 
			
		||||
				bool func_with_two_arguments = str == "\\$pow" || str == "\\$atan2" || str == "\\$hypot";
 | 
			
		||||
				double x = 0, y = 0;
 | 
			
		||||
| 
						 | 
				
			
			@ -1901,6 +1902,9 @@ skip_dynamic_range_lvalue_expansion:;
 | 
			
		|||
					y = children[1]->asReal(child_sign_hint);
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				if (str == "\\$rtoi") {
 | 
			
		||||
					newNode = AstNode::mkconst_int(x, true);
 | 
			
		||||
				} else {
 | 
			
		||||
					newNode = new AstNode(AST_REALVALUE);
 | 
			
		||||
					if (str == "\\$ln")         newNode->realvalue = ::log(x);
 | 
			
		||||
					else if (str == "\\$log10") newNode->realvalue = ::log10(x);
 | 
			
		||||
| 
						 | 
				
			
			@ -1923,7 +1927,9 @@ skip_dynamic_range_lvalue_expansion:;
 | 
			
		|||
					else if (str == "\\$asinh") newNode->realvalue = ::asinh(x);
 | 
			
		||||
					else if (str == "\\$acosh") newNode->realvalue = ::acosh(x);
 | 
			
		||||
					else if (str == "\\$atanh") newNode->realvalue = ::atanh(x);
 | 
			
		||||
					else if (str == "\\$itor")  newNode->realvalue = x;
 | 
			
		||||
					else log_abort();
 | 
			
		||||
				}
 | 
			
		||||
				goto apply_newNode;
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue