i965/vec4: Implement b2f and b2i using negation.
authorMatt Turner <mattst88@gmail.com>
Fri, 9 Oct 2015 19:27:04 +0000 (12:27 -0700)
committerMatt Turner <mattst88@gmail.com>
Sun, 11 Oct 2015 23:19:52 +0000 (16:19 -0700)
Curro added this in commit 3ee2daf23d (before the vec4/NIR backend was
added) but it was missed in the new NIR backend. Add it there as well.

instructions in affected programs:     1857 -> 1810 (-2.53%)
helped:                                15

Reviewed-by: Francisco Jerez <currojerez@riseup.net>
src/mesa/drivers/dri/i965/brw_vec4_nir.cpp

index 41bd80df37701e073ea2c1e253345cfe90438c60..fdf767ded64a287bbd1e3f4c70fe421e9568bd35 100644 (file)
@@ -1237,14 +1237,8 @@ vec4_visitor::nir_emit_alu(nir_alu_instr *instr)
       break;
 
    case nir_op_b2i:
-      emit(AND(dst, op[0], src_reg(1)));
-      break;
-
    case nir_op_b2f:
-      op[0].type = BRW_REGISTER_TYPE_D;
-      dst.type = BRW_REGISTER_TYPE_D;
-      emit(AND(dst, op[0], src_reg(0x3f800000u)));
-      dst.type = BRW_REGISTER_TYPE_F;
+      emit(MOV(dst, negate(op[0])));
       break;
 
    case nir_op_f2b: