From f0af5b87ec140875dbc99d579b9b17ab935e27be Mon Sep 17 00:00:00 2001 From: Jason Ekstrand Date: Wed, 27 Apr 2016 11:12:44 -0700 Subject: [PATCH] nir/opcodes: Make ldexp take an explicitly 32-bit int MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit There is no sense in having the double version of ldexp take a 64-bit integer. Instead, let's just take a 32-bit int all the time. This also matches what GLSL does where both variants of ldexp take a regular integer for the exponent argument. Reviewed-by: Samuel Iglesias Gonsálvez --- src/compiler/nir/nir_opcodes.py | 2 +- src/compiler/nir/nir_opt_algebraic.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/compiler/nir/nir_opcodes.py b/src/compiler/nir/nir_opcodes.py index 6f024bf4940..54ea720b98d 100644 --- a/src/compiler/nir/nir_opcodes.py +++ b/src/compiler/nir/nir_opcodes.py @@ -571,7 +571,7 @@ else dst = ((1u << bits) - 1) << offset; """) -opcode("ldexp", 0, tfloat, [0, 0], [tfloat, tint], "", """ +opcode("ldexp", 0, tfloat, [0, 0], [tfloat, tint32], "", """ dst = (bit_size == 64) ? ldexp(src0, src1) : ldexpf(src0, src1); /* flush denormals to zero. */ if (!isnormal(dst)) diff --git a/src/compiler/nir/nir_opt_algebraic.py b/src/compiler/nir/nir_opt_algebraic.py index 60ee170b43f..b5d90b22606 100644 --- a/src/compiler/nir/nir_opt_algebraic.py +++ b/src/compiler/nir/nir_opt_algebraic.py @@ -410,7 +410,7 @@ def ldexp32(f, exp): pow2_2 = fexp2i(('isub', exp, ('ishr', exp, 1))) return ('fmul', ('fmul', f, pow2_1), pow2_2) -optimizations += [(('ldexp', 'x', 'exp'), ldexp32('x', 'exp'))] +optimizations += [(('ldexp@32', 'x', 'exp'), ldexp32('x', 'exp'))] # Unreal Engine 4 demo applications open-codes bitfieldReverse() def bitfield_reverse(u): -- 2.30.2