Mesa (master): glsl/lower_instructions: fix regression in dldexp_to_arith

Iago Toral Quiroga itoral at kemper.freedesktop.org
Fri Jan 22 07:20:22 UTC 2016


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

Author: Iago Toral Quiroga <itoral at igalia.com>
Date:   Thu Jan 21 10:46:39 2016 +0100

glsl/lower_instructions: fix regression in dldexp_to_arith

The commit b4e198f47f842 changed the offset and bits parameters of the
bitfield insert operation from scalars to vectors. However, the lowering
of ldexp on doubles operates on each vector component and emits scalar
code (since it has to deal with the lower and upper 32-bit chunks of
each double component), so it needs its bits and offset parameters to
be scalars.

Fixes fp64 regression (crash) in:
spec/arb_gpu_shader_fp64/execution/built-in-functions/fs-ldexp-dvec4.shader_test

Reviewed-by: Ilia Mirkin <imirkin at alum.mit.edu>

---

 src/glsl/lower_instructions.cpp | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/glsl/lower_instructions.cpp b/src/glsl/lower_instructions.cpp
index d140be3..7c2d4d7 100644
--- a/src/glsl/lower_instructions.cpp
+++ b/src/glsl/lower_instructions.cpp
@@ -470,8 +470,8 @@ lower_instructions_visitor::dldexp_to_arith(ir_expression *ir)
 
    ir_constant *sign_mask = new(ir) ir_constant(0x80000000u);
 
-   ir_constant *exp_shift = new(ir) ir_constant(20, vec_elem);
-   ir_constant *exp_width = new(ir) ir_constant(11, vec_elem);
+   ir_constant *exp_shift = new(ir) ir_constant(20u);
+   ir_constant *exp_width = new(ir) ir_constant(11u);
    ir_constant *exp_bias = new(ir) ir_constant(1022, vec_elem);
 
    /* Temporary variables */




More information about the mesa-commit mailing list