11c2c4ddbd1e97bfd13430521e5c09cb5ce8e36e6Marek Olšák
21c2c4ddbd1e97bfd13430521e5c09cb5ce8e36e6Marek Olšák
31c2c4ddbd1e97bfd13430521e5c09cb5ce8e36e6Marek Olšák#ifndef RADEON_EMULATE_LOOPS_H
41c2c4ddbd1e97bfd13430521e5c09cb5ce8e36e6Marek Olšák#define RADEON_EMULATE_LOOPS_H
51c2c4ddbd1e97bfd13430521e5c09cb5ce8e36e6Marek Olšák
61c2c4ddbd1e97bfd13430521e5c09cb5ce8e36e6Marek Olšák#define MAX_ITERATIONS 8
71c2c4ddbd1e97bfd13430521e5c09cb5ce8e36e6Marek Olšák
81c2c4ddbd1e97bfd13430521e5c09cb5ce8e36e6Marek Olšákstruct radeon_compiler;
91c2c4ddbd1e97bfd13430521e5c09cb5ce8e36e6Marek Olšák
101c2c4ddbd1e97bfd13430521e5c09cb5ce8e36e6Marek Olšákstruct loop_info {
111c2c4ddbd1e97bfd13430521e5c09cb5ce8e36e6Marek Olšák	struct rc_instruction * BeginLoop;
121c2c4ddbd1e97bfd13430521e5c09cb5ce8e36e6Marek Olšák	struct rc_instruction * Cond;
131c2c4ddbd1e97bfd13430521e5c09cb5ce8e36e6Marek Olšák	struct rc_instruction * If;
141c2c4ddbd1e97bfd13430521e5c09cb5ce8e36e6Marek Olšák	struct rc_instruction * Brk;
151c2c4ddbd1e97bfd13430521e5c09cb5ce8e36e6Marek Olšák	struct rc_instruction * EndIf;
161c2c4ddbd1e97bfd13430521e5c09cb5ce8e36e6Marek Olšák	struct rc_instruction * EndLoop;
171c2c4ddbd1e97bfd13430521e5c09cb5ce8e36e6Marek Olšák};
181c2c4ddbd1e97bfd13430521e5c09cb5ce8e36e6Marek Olšák
191c2c4ddbd1e97bfd13430521e5c09cb5ce8e36e6Marek Olšákstruct emulate_loop_state {
201c2c4ddbd1e97bfd13430521e5c09cb5ce8e36e6Marek Olšák	struct radeon_compiler * C;
211c2c4ddbd1e97bfd13430521e5c09cb5ce8e36e6Marek Olšák	struct loop_info * Loops;
221c2c4ddbd1e97bfd13430521e5c09cb5ce8e36e6Marek Olšák	unsigned int LoopCount;
231c2c4ddbd1e97bfd13430521e5c09cb5ce8e36e6Marek Olšák	unsigned int LoopReserved;
241c2c4ddbd1e97bfd13430521e5c09cb5ce8e36e6Marek Olšák};
251c2c4ddbd1e97bfd13430521e5c09cb5ce8e36e6Marek Olšák
261c2c4ddbd1e97bfd13430521e5c09cb5ce8e36e6Marek Olšákvoid rc_transform_loops(struct radeon_compiler *c, void *user);
271c2c4ddbd1e97bfd13430521e5c09cb5ce8e36e6Marek Olšák
281c2c4ddbd1e97bfd13430521e5c09cb5ce8e36e6Marek Olšákvoid rc_unroll_loops(struct radeon_compiler * c, void *user);
291c2c4ddbd1e97bfd13430521e5c09cb5ce8e36e6Marek Olšák
301c2c4ddbd1e97bfd13430521e5c09cb5ce8e36e6Marek Olšákvoid rc_emulate_loops(struct radeon_compiler * c, void *user);
311c2c4ddbd1e97bfd13430521e5c09cb5ce8e36e6Marek Olšák
321c2c4ddbd1e97bfd13430521e5c09cb5ce8e36e6Marek Olšák#endif /* RADEON_EMULATE_LOOPS_H */
33