diff --git a/src/util/format/u_format_pack.py b/src/util/format/u_format_pack.py index 57434adcd8c..874604c80ce 100644 --- a/src/util/format/u_format_pack.py +++ b/src/util/format/u_format_pack.py @@ -256,6 +256,10 @@ def native_to_constant(type, value): return "%.1ff" % float(value) else: return "%.1f" % float(value) + elif value == -2147483648: + return "INT_MIN" + elif value == -9223372036854775808: + return "INT64_MIN" else: return str(int(value)) diff --git a/src/util/softfloat.c b/src/util/softfloat.c index 995e9825166..eb191a4ac1e 100644 --- a/src/util/softfloat.c +++ b/src/util/softfloat.c @@ -96,7 +96,7 @@ uint64_t _mesa_short_shift_right_jam64(uint64_t a, uint8_t dist) * From softfloat_shiftRightJam64() */ static inline -uint64_t _mesa_shift_right_jam64(uint64_t a, uint32_t dist) +uint64_t _mesa_shift_right_jam64(uint64_t a, int32_t dist) { return (dist < 63) ? a >> dist | ((uint64_t) (a << (-dist & 63)) != 0) : (a != 0); @@ -1339,7 +1339,7 @@ _mesa_float_fma_rtz(float a, float b, float c) } if (m_64 & 0x8000000000000000) { s = !s; - m_64 = -m_64; + m_64 = (uint64_t)(-(int64_t)m_64); } } else { m_64 -= _mesa_shift_right_jam64(c_flt_m_64, exp_diff);