nv50: make IF condition safe
authorChristoph Bumiller <e0425955@student.tuwien.ac.at>
Sun, 1 Nov 2009 13:04:54 +0000 (14:04 +0100)
committerChristoph Bumiller <e0425955@student.tuwien.ac.at>
Sun, 1 Nov 2009 13:28:04 +0000 (14:28 +0100)
Don't assume that a SET that writes to IF's argument
directly precedes the IF.

src/gallium/drivers/nv50/nv50_program.c

index 5944a0b7ff114b53f5e95d9799d57d0df17e9c94..66190f070da3f619be9304ef31f19b734c737e37 100644 (file)
@@ -2026,7 +2026,9 @@ nv50_program_tx_insn(struct nv50_pc *pc,
        case TGSI_OPCODE_IF:
                /* emitting a join_at may not be necessary */
                assert(pc->if_lvl < MAX_IF_DEPTH);
-               set_pred_wr(pc, 1, 0, pc->if_cond);
+               /* set_pred_wr(pc, 1, 0, pc->if_cond); */
+               emit_cvt(pc, NULL, src[0][0], 0, CVTOP_ABS | CVTOP_RN,
+                        CVT_F32_F32);
                emit_branch(pc, 0, 2, &pc->br_join[pc->if_lvl]);
                pc->if_insn[pc->if_lvl++] = pc->p->exec_tail;
                terminate_mbb(pc);