summaryrefslogtreecommitdiff
path: root/ir_print_visitor.cpp
diff options
context:
space:
mode:
authorIan Romanick <ian.d.romanick@intel.com>2010-03-29 14:11:25 -0700
committerIan Romanick <ian.d.romanick@intel.com>2010-03-29 15:17:11 -0700
commit3c6fea3048a0d9add2fec621d30c32f3519d8868 (patch)
treec281f08097ed8365da51444c99f119cce15b0747 /ir_print_visitor.cpp
parent721efc04da96451297ca1defe703fe755c212baa (diff)
Implement ir_if (for if-statments) and conversion from AST
The following tests now pass: glslparsertest/shaders/if1.frag glslparsertest/shaders/if2.frag The following tests that used to pass now fail. It appears that most of these fail because ast_nequal and ast_equal are not converted to HIR. shaders/glsl-unused-varying.frag shaders/glsl-fs-sqrt-branch.frag
Diffstat (limited to 'ir_print_visitor.cpp')
-rw-r--r--ir_print_visitor.cpp24
1 files changed, 24 insertions, 0 deletions
diff --git a/ir_print_visitor.cpp b/ir_print_visitor.cpp
index aeff280..e6b24d2 100644
--- a/ir_print_visitor.cpp
+++ b/ir_print_visitor.cpp
@@ -265,3 +265,27 @@ ir_print_visitor::visit(ir_return *ir)
printf(")");
}
+
+
+void
+ir_print_visitor::visit(ir_if *ir)
+{
+ printf("(if ");
+ ir->condition->accept(this);
+
+ printf("(\n");
+ foreach_iter(exec_list_iterator, iter, ir->then_instructions) {
+ ir_instruction *const inst = (ir_instruction *) iter.get();
+
+ inst->accept(this);
+ }
+ printf(")\n");
+
+ printf("(\n");
+ foreach_iter(exec_list_iterator, iter, ir->else_instructions) {
+ ir_instruction *const inst = (ir_instruction *) iter.get();
+
+ inst->accept(this);
+ }
+ printf("))\n");
+}