glsl: Remove silly OR(..., 0x0) from ldexp() lowering.
authorMatt Turner <mattst88@gmail.com>
Wed, 27 Nov 2013 22:23:50 +0000 (14:23 -0800)
committerMatt Turner <mattst88@gmail.com>
Thu, 5 Dec 2013 04:05:42 +0000 (20:05 -0800)
I translated copysign(0.0f, x) a little too literally.

Reviewed-by: Eric Anholt <eric@anholt.net>
src/glsl/lower_instructions.cpp

index d01879cbd4fbba80354ee953918d5ad7e24d9199..8f8d448ea656e62471114847e6ba49cc1cba4c50 100644 (file)
@@ -383,7 +383,6 @@ lower_instructions_visitor::ldexp_to_arith(ir_expression *ir)
 
    /* Constants */
    ir_constant *zeroi = ir_constant::zero(ir, ivec);
-   ir_constant *zerof = ir_constant::zero(ir, ir->type);
 
    ir_constant *sign_mantissa_mask = new(ir) ir_constant(0x807fffffu, vec_elem);
    ir_constant *sign_mask = new(ir) ir_constant(0x80000000u, vec_elem);
@@ -429,8 +428,7 @@ lower_instructions_visitor::ldexp_to_arith(ir_expression *ir)
     */
    i.insert_before(zero_sign_x);
    i.insert_before(assign(zero_sign_x,
-                          bitcast_u2f(bit_or(bit_and(bitcast_f2u(x), sign_mask),
-                                             bitcast_f2u(zerof)))));
+                          bitcast_u2f(bit_and(bitcast_f2u(x), sign_mask))));
 
    i.insert_before(is_not_zero_or_underflow);
    i.insert_before(assign(is_not_zero_or_underflow,