[Mesa-dev] [PATCH] i965/fs: Don't mix integer/float immediates in i2b handling.

Kenneth Graunke kenneth at whitecape.org
Fri Jan 11 14:19:56 PST 2013

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.
 src/mesa/drivers/dri/i965/brw_fs_visitor.cpp | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp
index 815e421..fd07864 100644
--- a/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp
@@ -506,9 +506,11 @@ fs_visitor::visit(ir_expression *ir)
    case ir_unop_f2b:
-   case ir_unop_i2b:
       emit(CMP(this->result, op[0], fs_reg(0.0f), BRW_CONDITIONAL_NZ));
+   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]));

More information about the mesa-dev mailing list