Both assembly macros failed when given large numbers ending in 9. For example, udiv100000 of 3999999999 produced 40000 instead of 39999. Similarly, udiv1000000000 of 3999999999 produced 4 instead of 3. Both of the previous implementations failed the Granlund-Montgomery integer division algorithm. This commit replaces these macros with the correct implementation generated by clang for a constant integer division. I do not understand how this implementation works. All other macros do pass the Granlund-Montgomery algorithm.
mtl
C++ STL replacement, intended for embedded systems. Aims to be more performant than ETL.
Description
Languages
C++
84.8%
Assembly
12.8%
CMake
2.4%