summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/mesa/drivers/dri/i965/brw_fs_visitor.cpp14
1 files changed, 7 insertions, 7 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp
index 4b9330bed94..9bd1e67119d 100644
--- a/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp
@@ -477,16 +477,16 @@ fs_visitor::visit(ir_expression *ir)
break;
case ir_unop_f2b:
+ inst = emit(BRW_OPCODE_CMP, this->result, op[0], fs_reg(0.0f));
+ inst->conditional_mod = BRW_CONDITIONAL_NZ;
+ emit(BRW_OPCODE_AND, this->result, this->result, fs_reg(1));
+ break;
case ir_unop_i2b:
- temp = this->result;
- /* original gen4 does implicit conversion before comparison. */
- if (intel->gen < 5)
- temp.type = op[0].type;
-
- resolve_ud_negate(&op[0]);
+ assert(op[0].type == BRW_REGISTER_TYPE_D);
- inst = emit(BRW_OPCODE_CMP, temp, op[0], fs_reg(0.0f));
+ inst = emit(BRW_OPCODE_CMP, this->result, op[0], fs_reg(0));
inst->conditional_mod = BRW_CONDITIONAL_NZ;
+ emit(BRW_OPCODE_AND, this->result, this->result, fs_reg(1));
break;
case ir_unop_trunc: