diff options
author | Ian Romanick <ian.d.romanick@intel.com> | 2010-03-29 14:11:25 -0700 |
---|---|---|
committer | Ian Romanick <ian.d.romanick@intel.com> | 2010-03-29 15:17:11 -0700 |
commit | 3c6fea3048a0d9add2fec621d30c32f3519d8868 (patch) | |
tree | c281f08097ed8365da51444c99f119cce15b0747 /ir_print_visitor.cpp | |
parent | 721efc04da96451297ca1defe703fe755c212baa (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.cpp | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/ir_print_visitor.cpp b/ir_print_visitor.cpp index aeff280cdd..e6b24d2d5b 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"); +} |