Mesa (master): ir_reader: Make assignment conditions optional.
Kenneth Graunke
kwg at kemper.freedesktop.org
Thu Jan 13 08:11:17 UTC 2011
Module: Mesa
Branch: master
Commit: bbafd2b849629d3155fe0eef655bbc166a901925
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=bbafd2b849629d3155fe0eef655bbc166a901925
Author: Kenneth Graunke <kenneth at whitecape.org>
Date: Sat Jan 1 03:37:02 2011 -0800
ir_reader: Make assignment conditions optional.
You can now simply write (assign (xy) <lhs> <rhs>) instead of the
verbose (assign (constant bool (1)) (xy) <lhs> <rhs>).
---
src/glsl/ir_print_visitor.cpp | 3 ---
src/glsl/ir_reader.cpp | 21 +++++++++++++--------
2 files changed, 13 insertions(+), 11 deletions(-)
diff --git a/src/glsl/ir_print_visitor.cpp b/src/glsl/ir_print_visitor.cpp
index 0aa0b0a..c56bafd 100644
--- a/src/glsl/ir_print_visitor.cpp
+++ b/src/glsl/ir_print_visitor.cpp
@@ -281,9 +281,6 @@ void ir_print_visitor::visit(ir_assignment *ir)
if (ir->condition)
ir->condition->accept(this);
- else
- printf("(constant bool (1))");
-
char mask[5];
unsigned j = 0;
diff --git a/src/glsl/ir_reader.cpp b/src/glsl/ir_reader.cpp
index 11a8cb7..40901dc 100644
--- a/src/glsl/ir_reader.cpp
+++ b/src/glsl/ir_reader.cpp
@@ -538,20 +538,25 @@ ir_reader::read_rvalue(s_expression *expr)
ir_assignment *
ir_reader::read_assignment(s_expression *expr)
{
- s_expression *cond_expr, *lhs_expr, *rhs_expr;
+ s_expression *cond_expr = NULL;
+ s_expression *lhs_expr, *rhs_expr;
s_list *mask_list;
- s_pattern pat[] = { "assign", cond_expr, mask_list, lhs_expr, rhs_expr };
- if (!MATCH(expr, pat)) {
- ir_read_error(expr, "expected (assign <condition> (<write mask>) "
+ s_pattern pat4[] = { "assign", mask_list, lhs_expr, rhs_expr };
+ s_pattern pat5[] = { "assign", cond_expr, mask_list, lhs_expr, rhs_expr };
+ if (!MATCH(expr, pat4) && !MATCH(expr, pat5)) {
+ ir_read_error(expr, "expected (assign [<condition>] (<write mask>) "
"<lhs> <rhs>)");
return NULL;
}
- ir_rvalue *condition = read_rvalue(cond_expr);
- if (condition == NULL) {
- ir_read_error(NULL, "when reading condition of assignment");
- return NULL;
+ ir_rvalue *condition = NULL;
+ if (cond_expr != NULL) {
+ condition = read_rvalue(cond_expr);
+ if (condition == NULL) {
+ ir_read_error(NULL, "when reading condition of assignment");
+ return NULL;
+ }
}
unsigned mask = 0;
More information about the mesa-commit
mailing list