From: David Heidelberger <david.heidelber...@ixit.cz> Get rid of error "Failed to build loop info" by fixing failure in cases like 4: SGE temp[2].x, temp[0].xxxx, const[0].wwww; 5: CMP temp[1].x, -temp[2].xxxx, const[0].zzzz, temp[1].xxxx; 6: IF temp[1].xxxx;
On RS690 - fixes piglit glean "do-loop with continue and break" - changes error from Failed to build loop info -> Not a native swizzle: 00000e89 r300_fragprog_emit.c::begin_tex(): Too many texture indirections for "discard statement in for loop" - hide Failed to build loop info for "precision log2", "while-loop with continue", "for-loop with continue" and return "1 1 1 1" insted of "0 0 0 1" Signed-off-by: David Heidelberger <david.heidelber...@ixit.cz> --- I'm sending this on behalf of David. I'll commit it soon if there is no review. .../drivers/r300/compiler/radeon_emulate_loops.c | 27 +++++++++++++--------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/src/gallium/drivers/r300/compiler/radeon_emulate_loops.c b/src/gallium/drivers/r300/compiler/radeon_emulate_loops.c index 91ed9d2..d1fae9a 100644 --- a/src/gallium/drivers/r300/compiler/radeon_emulate_loops.c +++ b/src/gallium/drivers/r300/compiler/radeon_emulate_loops.c @@ -376,18 +376,23 @@ static int build_loop_info(struct radeon_compiler * c, struct loop_info * loop, loop->Brk = ptr; loop->If = ptr->Prev; loop->EndIf = ptr->Next; - switch(loop->If->Prev->U.I.Opcode){ - case RC_OPCODE_SLT: - case RC_OPCODE_SGE: - case RC_OPCODE_SGT: - case RC_OPCODE_SLE: - case RC_OPCODE_SEQ: - case RC_OPCODE_SNE: - break; - default: - return 0; - } + loop->Cond = loop->If->Prev; + while (loop->Cond->U.I.Opcode != RC_OPCODE_BGNLOOP) { + switch(loop->Cond->U.I.Opcode){ + case RC_OPCODE_SLT: + case RC_OPCODE_SGE: + case RC_OPCODE_SGT: + case RC_OPCODE_SLE: + case RC_OPCODE_SEQ: + case RC_OPCODE_SNE: + goto found; + default: + loop->Cond = loop->Cond->Prev; + break; + } + } + found: break; case RC_OPCODE_ENDLOOP: -- 1.9.1 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev