nir/opcodes: Make ldexp take an explicitly 32-bit int
authorJason Ekstrand <jason.ekstrand@intel.com>
Wed, 27 Apr 2016 18:12:44 +0000 (11:12 -0700)
committerJason Ekstrand <jason.ekstrand@intel.com>
Fri, 29 Apr 2016 04:36:52 +0000 (21:36 -0700)
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 <siglesias@igalia.com>
src/compiler/nir/nir_opcodes.py
src/compiler/nir/nir_opt_algebraic.py

index 6f024bf4940a115cdb4eb7caef37bc84f3d9d173..54ea720b98d9cf94f41eb262c232a66e69af9a8b 100644 (file)
@@ -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))
index 60ee170b43f68de20b22cf0e69b437290b98a378..b5d90b22606611d460359e005242c25ad1b10a8c 100644 (file)
@@ -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):