mirror of
https://github.com/YosysHQ/yosys
synced 2025-04-27 02:45:52 +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