Mesa (master): i965/fs: Don't mix integer/float immediates in i2b handling.

Kenneth Graunke kwg at kemper.freedesktop.org
Sat Jan 12 23:43:11 UTC 2013


Module: Mesa
Branch: master
Commit: fea648db08114e0e10c164e2d6507b71bd22f63a
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=fea648db08114e0e10c164e2d6507b71bd22f63a

Author: Kenneth Graunke <kenneth at whitecape.org>
Date:   Fri Jan 11 14:19:56 2013 -0800

i965/fs: Don't mix integer/float immediates in i2b handling.

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 at gmail.com>
Reviewed-by: Eric Anholt <eric at anholt.net>

---

 src/mesa/drivers/dri/i965/brw_fs_visitor.cpp |    4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp
index e70d6bf..5885989 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)
       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]));




More information about the mesa-commit mailing list