diff options
author | marha <marha@users.sourceforge.net> | 2013-09-18 08:09:44 +0200 |
---|---|---|
committer | marha <marha@users.sourceforge.net> | 2013-09-18 08:09:44 +0200 |
commit | 09bfe74fc7d4a6f97eddb034df371e66e314ea12 (patch) | |
tree | b63caf666a8c36ddcc9a4202f7cecac49998e98d /mesalib/src/glsl/ir_constant_expression.cpp | |
parent | 5a54fa6e45ee10cf58ee1b6d2eb5522a24bb8745 (diff) | |
parent | 7f669a708bd35bdf8e842f762ec68f9ad0ec0486 (diff) | |
download | vcxsrv-09bfe74fc7d4a6f97eddb034df371e66e314ea12.tar.gz vcxsrv-09bfe74fc7d4a6f97eddb034df371e66e314ea12.tar.bz2 vcxsrv-09bfe74fc7d4a6f97eddb034df371e66e314ea12.zip |
Merge remote-tracking branch 'origin/released'
* origin/released:
libX11 mesa pixman xserver git update 18 Sep 2013
Conflicts:
pixman/pixman/pixman-sse2.c
Diffstat (limited to 'mesalib/src/glsl/ir_constant_expression.cpp')
-rw-r--r-- | mesalib/src/glsl/ir_constant_expression.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/mesalib/src/glsl/ir_constant_expression.cpp b/mesalib/src/glsl/ir_constant_expression.cpp index a67470bf3..4579ef209 100644 --- a/mesalib/src/glsl/ir_constant_expression.cpp +++ b/mesalib/src/glsl/ir_constant_expression.cpp @@ -394,6 +394,7 @@ ir_expression::constant_expression_value(struct hash_table *variable_context) switch (this->operation) { case ir_binop_lshift: case ir_binop_rshift: + case ir_binop_ldexp: case ir_binop_vector_extract: case ir_triop_csel: case ir_triop_bitfield_extract: @@ -1376,6 +1377,15 @@ ir_expression::constant_expression_value(struct hash_table *variable_context) break; } + case ir_binop_ldexp: + for (unsigned c = 0; c < components; c++) { + data.f[c] = ldexp(op[0]->value.f[c], op[1]->value.i[c]); + /* Flush subnormal values to zero. */ + if (!isnormal(data.f[c])) + data.f[c] = copysign(0.0, op[0]->value.f[c]); + } + break; + case ir_triop_fma: assert(op[0]->type->base_type == GLSL_TYPE_FLOAT); assert(op[1]->type->base_type == GLSL_TYPE_FLOAT); |