diff options
author | Eric Anholt <eric@anholt.net> | 2010-03-16 11:22:29 -0700 |
---|---|---|
committer | Eric Anholt <eric@anholt.net> | 2010-03-16 13:18:54 -0700 |
commit | ba208604ea8bc069be583732a4c59a47e4a7b280 (patch) | |
tree | f35ee9bd6093aa6060bb03f48bb9791dc32a9671 /src/mesa/drivers/dri/i965 | |
parent | 7cbb7051f42c0220b35ce1e834853dac8706a69a (diff) |
Revert "i965: Do FS SLT, SGT, and friends using CMP, SEL instead of CMP, MOV, MOV."
This reverts commit 46450c1f3f93bf4dc96696fc7e0f0eb808d9c08a. I was
wrong about null reg behavior -- it reads undefined, not 0. And
they're not kidding.
Diffstat (limited to 'src/mesa/drivers/dri/i965')
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_wm_emit.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_wm_emit.c b/src/mesa/drivers/dri/i965/brw_wm_emit.c index 05e464d4b6..1869fd06d5 100644 --- a/src/mesa/drivers/dri/i965/brw_wm_emit.c +++ b/src/mesa/drivers/dri/i965/brw_wm_emit.c @@ -545,8 +545,11 @@ void emit_sop(struct brw_compile *p, for (i = 0; i < 4; i++) { if (mask & (1<<i)) { brw_push_insn_state(p); - brw_CMP(p, brw_null_reg(), cond, arg1[i], arg0[i]); - brw_SEL(p, dst[i], brw_null_reg(), brw_imm_f(1.0)); + brw_CMP(p, brw_null_reg(), cond, arg0[i], arg1[i]); + brw_set_predicate_control(p, BRW_PREDICATE_NONE); + brw_MOV(p, dst[i], brw_imm_f(0)); + brw_set_predicate_control(p, BRW_PREDICATE_NORMAL); + brw_MOV(p, dst[i], brw_imm_f(1.0)); brw_pop_insn_state(p); } } |