Fix undefined behavior in minifloat conversion
This cl applies the same fix already applied in SwiftShader here:
https://swiftshader-review.googlesource.com/c/SwiftShader/+/48069
Original description:
Shifting a 32-bit value by 32 or more is undefined behavior in C++. This
previously happened in this code when converting a 32-bit float value to
an 11- or 10-bit minifloat which is too small to be represented as a
denormal, and should produce 0 instead.
Instead of going through this arithmetic for denormals, just test
whether the input value is too small to produce a valid denormal, and
return 0 instead.
Bug: chromium:1117433
Change-Id: I227c0e4c53000df6d9260fee364351a300b113a2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2391764Reviewed-by:
Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by:
Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexis Hétu <sugoi@chromium.org>
Showing
Please
register
or
sign in
to comment