mirror of
https://github.com/YosysHQ/yosys
synced 2025-04-25 18:15:34 +00:00
static cast: support changing size and signedness
Support SystemVerilog Static Cast - size - signedness - (type is not supposted yet) Fix #535
This commit is contained in:
parent
338ecbe02f
commit
185bbbe681
6 changed files with 48 additions and 0 deletions
|
@ -298,6 +298,7 @@ static void rewriteAsMemoryNode(AstNode *node, AstNode *rangeNode)
|
|||
%left '+' '-'
|
||||
%left '*' '/' '%'
|
||||
%left OP_POW
|
||||
%left OP_CAST
|
||||
%right UNARY_OPS
|
||||
|
||||
%define parse.error verbose
|
||||
|
@ -3001,6 +3002,24 @@ basic_expr:
|
|||
$$ = new AstNode(AST_LOGIC_NOT, $3);
|
||||
SET_AST_NODE_LOC($$, @1, @3);
|
||||
append_attr($$, $2);
|
||||
} |
|
||||
TOK_SIGNED OP_CAST '(' expr ')' {
|
||||
if (!sv_mode)
|
||||
frontend_verilog_yyerror("Static cast is only supported in SystemVerilog mode.");
|
||||
$$ = new AstNode(AST_TO_SIGNED, $4);
|
||||
SET_AST_NODE_LOC($$, @1, @4);
|
||||
} |
|
||||
TOK_UNSIGNED OP_CAST '(' expr ')' {
|
||||
if (!sv_mode)
|
||||
frontend_verilog_yyerror("Static cast is only supported in SystemVerilog mode.");
|
||||
$$ = new AstNode(AST_TO_UNSIGNED, $4);
|
||||
SET_AST_NODE_LOC($$, @1, @4);
|
||||
} |
|
||||
basic_expr OP_CAST '(' expr ')' {
|
||||
if (!sv_mode)
|
||||
frontend_verilog_yyerror("Static cast is only supported in SystemVerilog mode.");
|
||||
$$ = new AstNode(AST_CAST_SIZE, $1, $4);
|
||||
SET_AST_NODE_LOC($$, @1, @4);
|
||||
};
|
||||
|
||||
concat_list:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue