Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
f2b5f712
Commit
f2b5f712
authored
Jul 20, 2012
by
Matteo Bruni
Committed by
Alexandre Julliard
Jul 20, 2012
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
d3dcompiler: Parse unary and prefix operators.
parent
e851bf21
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
66 additions
and
0 deletions
+66
-0
d3dcompiler_private.h
dlls/d3dcompiler_43/d3dcompiler_private.h
+8
-0
hlsl.y
dlls/d3dcompiler_43/hlsl.y
+58
-0
No files found.
dlls/d3dcompiler_43/d3dcompiler_private.h
View file @
f2b5f712
...
...
@@ -904,6 +904,14 @@ struct parse_variable_def
struct
list
*
initializer
;
};
enum
parse_unary_op
{
UNARY_OP_PLUS
,
UNARY_OP_MINUS
,
UNARY_OP_LOGICNOT
,
UNARY_OP_BITNOT
,
};
struct
hlsl_parse_ctx
{
const
char
**
source_files
;
...
...
dlls/d3dcompiler_43/hlsl.y
View file @
f2b5f712
...
...
@@ -206,6 +206,7 @@ static unsigned int components_count_expr_list(struct list *list)
struct hlsl_ir_function_decl *function;
struct parse_parameter parameter;
struct parse_variable_def *variable_def;
enum parse_unary_op unary_op;
}
%token KW_BLENDSTATE
...
...
@@ -350,6 +351,7 @@ static unsigned int components_count_expr_list(struct list *list)
%type <instr> conditional_expr
%type <instr> assignment_expr
%type <list> expr_statement
%type <unary_op> unary_op
%type <modifiers> input_mod
%%
...
...
@@ -982,6 +984,62 @@ unary_expr: postfix_expr
{
$$ = $1;
}
| OP_INC unary_expr
{
struct hlsl_ir_node *operands[3];
struct source_location loc;
operands[0] = $2;
operands[1] = operands[2] = NULL;
set_location(&loc, &@1);
$$ = &new_expr(HLSL_IR_BINOP_PREINC, operands, &loc)->node;
}
| OP_DEC unary_expr
{
struct hlsl_ir_node *operands[3];
struct source_location loc;
operands[0] = $2;
operands[1] = operands[2] = NULL;
set_location(&loc, &@1);
$$ = &new_expr(HLSL_IR_BINOP_PREDEC, operands, &loc)->node;
}
| unary_op unary_expr
{
enum hlsl_ir_expr_op ops[] = {0, HLSL_IR_UNOP_NEG,
HLSL_IR_UNOP_LOGIC_NOT, HLSL_IR_UNOP_BIT_NOT};
struct hlsl_ir_node *operands[3];
struct source_location loc;
if ($1 == UNARY_OP_PLUS)
{
$$ = $2;
}
else
{
operands[0] = $2;
operands[1] = operands[2] = NULL;
set_location(&loc, &@1);
$$ = &new_expr(ops[$1], operands, &loc)->node;
}
}
unary_op: '+'
{
$$ = UNARY_OP_PLUS;
}
| '-'
{
$$ = UNARY_OP_MINUS;
}
| '!'
{
$$ = UNARY_OP_LOGICNOT;
}
| '~'
{
$$ = UNARY_OP_BITNOT;
}
mul_expr: unary_expr
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment