summaryrefslogtreecommitdiff
path: root/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mesa/drivers/dri/i965/brw_fs_visitor.cpp')
-rw-r--r--src/mesa/drivers/dri/i965/brw_fs_visitor.cpp11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp
index bd9345ebef2..1e7fdf5b4f2 100644
--- a/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp
@@ -954,10 +954,13 @@ fs_visitor::visit(ir_expression *ir)
case ir_unop_trunc:
emit(RNDZ(this->result, op[0]));
break;
- case ir_unop_ceil:
- op[0].negate = !op[0].negate;
- emit(RNDD(this->result, op[0]));
- this->result.negate = true;
+ case ir_unop_ceil: {
+ fs_reg tmp = fs_reg(this, ir->type);
+ op[0].negate = !op[0].negate;
+ emit(RNDD(tmp, op[0]));
+ tmp.negate = true;
+ emit(MOV(this->result, tmp));
+ }
break;
case ir_unop_floor:
emit(RNDD(this->result, op[0]));