struct rc_instruction *rc_insert_new_instruction(struct radeon_compiler * c, struct rc_instruction * after) { struct rc_instruction * inst = rc_alloc_instruction(c); rc_insert_instruction(after, inst); return inst; }
static void unroll_loop(struct radeon_compiler * c, struct loop_info * loop, unsigned int iterations) { unsigned int i; struct rc_instruction * ptr; struct rc_instruction * first = loop->BeginLoop->Next; struct rc_instruction * last = loop->EndLoop->Prev; struct rc_instruction * append_to = last; rc_remove_instruction(loop->BeginLoop); rc_remove_instruction(loop->EndLoop); for( i = 1; i < iterations; i++){ for(ptr = first; ptr != last->Next; ptr = ptr->Next){ struct rc_instruction *new = rc_alloc_instruction(c); memcpy(new, ptr, sizeof(struct rc_instruction)); rc_insert_instruction(append_to, new); append_to = new; } } }