mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-10-31 03:32:29 +00:00 
			
		
		
		
	kernel: require \B_SIGNED=0 on $shl, $sshl, $shr, $sshr.
Before this commit, these cells would accept any \B_SIGNED and in case of \B_SIGNED=1, would still treat the \B input as unsigned. Also fix the Verilog frontend to never emit such constructs.
This commit is contained in:
		
							parent
							
								
									ec4c9267b3
								
							
						
					
					
						commit
						e97e33d00d
					
				
					 2 changed files with 26 additions and 8 deletions
				
			
		|  | @ -2242,7 +2242,7 @@ gen_stmt: | |||
| 		ast_stack.back()->children.push_back(node); | ||||
| 		ast_stack.push_back(node); | ||||
| 	} opt_arg_list ';'{ | ||||
| 		ast_stack.pop_back();		 | ||||
| 		ast_stack.pop_back(); | ||||
| 	}; | ||||
| 
 | ||||
| gen_stmt_block: | ||||
|  | @ -2413,19 +2413,19 @@ basic_expr: | |||
| 		append_attr($$, $2); | ||||
| 	} | | ||||
| 	basic_expr OP_SHL attr basic_expr { | ||||
| 		$$ = new AstNode(AST_SHIFT_LEFT, $1, $4); | ||||
| 		$$ = new AstNode(AST_SHIFT_LEFT, $1, new AstNode(AST_TO_UNSIGNED, $4)); | ||||
| 		append_attr($$, $3); | ||||
| 	} | | ||||
| 	basic_expr OP_SHR attr basic_expr { | ||||
| 		$$ = new AstNode(AST_SHIFT_RIGHT, $1, $4); | ||||
| 		$$ = new AstNode(AST_SHIFT_RIGHT, $1, new AstNode(AST_TO_UNSIGNED, $4)); | ||||
| 		append_attr($$, $3); | ||||
| 	} | | ||||
| 	basic_expr OP_SSHL attr basic_expr { | ||||
| 		$$ = new AstNode(AST_SHIFT_SLEFT, $1, $4); | ||||
| 		$$ = new AstNode(AST_SHIFT_SLEFT, $1, new AstNode(AST_TO_UNSIGNED, $4)); | ||||
| 		append_attr($$, $3); | ||||
| 	} | | ||||
| 	basic_expr OP_SSHR attr basic_expr { | ||||
| 		$$ = new AstNode(AST_SHIFT_SRIGHT, $1, $4); | ||||
| 		$$ = new AstNode(AST_SHIFT_SRIGHT, $1, new AstNode(AST_TO_UNSIGNED, $4)); | ||||
| 		append_attr($$, $3); | ||||
| 	} | | ||||
| 	basic_expr '<' attr basic_expr { | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue