i965: Push/pop instruction state. partial fix for #16882
authorXiang, Haihao <haihao.xiang@intel.com>
Fri, 29 Aug 2008 01:22:41 +0000 (09:22 +0800)
committerXiang, Haihao <haihao.xiang@intel.com>
Fri, 29 Aug 2008 01:23:25 +0000 (09:23 +0800)
src/mesa/drivers/dri/i965/brw_wm_glsl.c

index 305100f..8dce40f 100644 (file)
@@ -850,20 +850,20 @@ static void emit_sop(struct brw_wm_compile *c,
     struct brw_reg dst, src0, src1;
     int i;
 
-    brw_push_insn_state(p);
     for (i = 0; i < 4; i++) {
        if (mask & (1<<i)) {
            dst = get_dst_reg(c, inst, i, 1);
            src0 = get_src_reg(c, &inst->SrcReg[0], i, 1);
            src1 = get_src_reg(c, &inst->SrcReg[1], i, 1);
+           brw_push_insn_state(p);
            brw_CMP(p, brw_null_reg(), cond, src0, src1);
            brw_set_predicate_control(p, BRW_PREDICATE_NONE);
            brw_MOV(p, dst, brw_imm_f(0.0));
            brw_set_predicate_control(p, BRW_PREDICATE_NORMAL);
            brw_MOV(p, dst, brw_imm_f(1.0));
+           brw_pop_insn_state(p);
        }
     }
-    brw_pop_insn_state(p);
 }
 
 static void emit_slt(struct brw_wm_compile *c,