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: I8149996fb6d66d328db45725c4cdb81dc7826a10 Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/48069 Presubmit-Ready: Nicolas Capens <nicolascapens@google.com> Tested-by:Nicolas Capens <nicolascapens@google.com> Kokoro-Result: kokoro <noreply+kokoro@google.com> Reviewed-by:
Alexis Hétu <sugoi@google.com>
| Name |
Last commit
|
Last update |
|---|---|---|
| .. | ||
| Linux | Loading commit data... | |
| BUILD.gn | Loading commit data... | |
| Build.cpp | Loading commit data... | |
| Build.hpp | Loading commit data... | |
| CMakeLists.txt | Loading commit data... | |
| CPUID.cpp | Loading commit data... | |
| CPUID.hpp | Loading commit data... | |
| Configurator.cpp | Loading commit data... | |
| Configurator.hpp | Loading commit data... | |
| Debug.cpp | Loading commit data... | |
| Debug.hpp | Loading commit data... | |
| GrallocAndroid.cpp | Loading commit data... | |
| GrallocAndroid.hpp | Loading commit data... | |
| Half.cpp | Loading commit data... | |
| Half.hpp | Loading commit data... | |
| LRUCache.hpp | Loading commit data... | |
| Math.cpp | Loading commit data... | |
| Math.hpp | Loading commit data... | |
| Memory.cpp | Loading commit data... | |
| Memory.hpp | Loading commit data... | |
| SharedLibrary.hpp | Loading commit data... | |
| Socket.cpp | Loading commit data... | |
| Socket.hpp | Loading commit data... | |
| Synchronization.hpp | Loading commit data... | |
| Timer.cpp | Loading commit data... | |
| Timer.hpp | Loading commit data... | |
| Types.hpp | Loading commit data... |