i965/fs: Don't mix integer/float immediates in i2b handling.
authorKenneth Graunke <kenneth@whitecape.org>
Fri, 11 Jan 2013 22:19:56 +0000 (14:19 -0800)
committerKenneth Graunke <kenneth@whitecape.org>
Sat, 12 Jan 2013 23:35:38 +0000 (15:35 -0800)
The simulator gets very angry about our i2b code:

cmp.ne(16)      g3<1>D          g2<0,1,0>D      0F

We can't mix integer DWord and float types.  The only reason to use 0F
here was to share code with f2b.  Split it and use 0D instead.

While we don't believe anything bad will actually happen because of
this, it's nice to fix the warnings and easy enough to do.

Reviewed-by: Paul Berry <stereotype441@gmail.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
src/mesa/drivers/dri/i965/brw_fs_visitor.cpp

index e70d6bf89c5b813d1418741aad837e3145c4fe36..5885989e76ec61d97853ee491c77b414647d32c2 100644 (file)
@@ -506,9 +506,11 @@ fs_visitor::visit(ir_expression *ir)
       break;
 
    case ir_unop_f2b:
-   case ir_unop_i2b:
       emit(CMP(this->result, op[0], fs_reg(0.0f), BRW_CONDITIONAL_NZ));
       break;
+   case ir_unop_i2b:
+      emit(CMP(this->result, op[0], fs_reg(0), BRW_CONDITIONAL_NZ));
+      break;
 
    case ir_unop_trunc:
       emit(RNDZ(this->result, op[0]));