OLD | NEW |
1 /* -*- c++ -*- */ | 1 /* -*- c++ -*- */ |
2 /* | 2 /* |
3 * Copyright © 2010 Intel Corporation | 3 * Copyright © 2010 Intel Corporation |
4 * | 4 * |
5 * Permission is hereby granted, free of charge, to any person obtaining a | 5 * Permission is hereby granted, free of charge, to any person obtaining a |
6 * copy of this software and associated documentation files (the "Software"), | 6 * copy of this software and associated documentation files (the "Software"), |
7 * to deal in the Software without restriction, including without limitation | 7 * to deal in the Software without restriction, including without limitation |
8 * the rights to use, copy, modify, merge, publish, distribute, sublicense, | 8 * the rights to use, copy, modify, merge, publish, distribute, sublicense, |
9 * and/or sell copies of the Software, and to permit persons to whom the | 9 * and/or sell copies of the Software, and to permit persons to whom the |
10 * Software is furnished to do so, subject to the following conditions: | 10 * Software is furnished to do so, subject to the following conditions: |
(...skipping 971 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
982 public: | 982 public: |
983 enum jump_mode { | 983 enum jump_mode { |
984 jump_break, | 984 jump_break, |
985 jump_continue | 985 jump_continue |
986 }; | 986 }; |
987 | 987 |
988 ir_loop_jump(jump_mode mode) | 988 ir_loop_jump(jump_mode mode) |
989 { | 989 { |
990 this->ir_type = ir_type_loop_jump; | 990 this->ir_type = ir_type_loop_jump; |
991 this->mode = mode; | 991 this->mode = mode; |
992 this->loop = loop; | |
993 } | 992 } |
994 | 993 |
995 virtual ir_loop_jump *clone(void *mem_ctx, struct hash_table *) const; | 994 virtual ir_loop_jump *clone(void *mem_ctx, struct hash_table *) const; |
996 | 995 |
997 virtual void accept(ir_visitor *v) | 996 virtual void accept(ir_visitor *v) |
998 { | 997 { |
999 v->visit(this); | 998 v->visit(this); |
1000 } | 999 } |
1001 | 1000 |
1002 virtual ir_visitor_status accept(ir_hierarchical_visitor *); | 1001 virtual ir_visitor_status accept(ir_hierarchical_visitor *); |
1003 | 1002 |
1004 bool is_break() const | 1003 bool is_break() const |
1005 { | 1004 { |
1006 return mode == jump_break; | 1005 return mode == jump_break; |
1007 } | 1006 } |
1008 | 1007 |
1009 bool is_continue() const | 1008 bool is_continue() const |
1010 { | 1009 { |
1011 return mode == jump_continue; | 1010 return mode == jump_continue; |
1012 } | 1011 } |
1013 | 1012 |
1014 /** Mode selector for the jump instruction. */ | 1013 /** Mode selector for the jump instruction. */ |
1015 enum jump_mode mode; | 1014 enum jump_mode mode; |
1016 private: | |
1017 /** Loop containing this break instruction. */ | |
1018 ir_loop *loop; | |
1019 }; | 1015 }; |
1020 | 1016 |
1021 /** | 1017 /** |
1022 * IR instruction representing discard statements. | 1018 * IR instruction representing discard statements. |
1023 */ | 1019 */ |
1024 class ir_discard : public ir_jump { | 1020 class ir_discard : public ir_jump { |
1025 public: | 1021 public: |
1026 ir_discard() | 1022 ir_discard() |
1027 { | 1023 { |
1028 this->ir_type = ir_type_discard; | 1024 this->ir_type = ir_type_discard; |
(...skipping 473 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1502 import_prototypes(const exec_list *source, exec_list *dest, | 1498 import_prototypes(const exec_list *source, exec_list *dest, |
1503 struct glsl_symbol_table *symbols, void *mem_ctx); | 1499 struct glsl_symbol_table *symbols, void *mem_ctx); |
1504 | 1500 |
1505 extern bool | 1501 extern bool |
1506 ir_has_call(ir_instruction *ir); | 1502 ir_has_call(ir_instruction *ir); |
1507 | 1503 |
1508 extern void | 1504 extern void |
1509 do_set_program_inouts(exec_list *instructions, struct gl_program *prog); | 1505 do_set_program_inouts(exec_list *instructions, struct gl_program *prog); |
1510 | 1506 |
1511 #endif /* IR_H */ | 1507 #endif /* IR_H */ |
OLD | NEW |