RFR: 8257985: count_trailing_zeros doesn't handle 64-bit values on 32-bit JVM [v7]
Kim Barrett
kbarrett at openjdk.java.net
Fri Dec 11 14:57:58 UTC 2020
On Fri, 11 Dec 2020 14:07:08 GMT, Claes Redestad <redestad at openjdk.org> wrote:
>> Re-implement count_trailing_zeros as a template function similar to count_leading_zeros, adding support for 8 and 16 bit types as well as for 64-bit types on 32-bit builds, which is currently not supported. This prohibits implementing the log2i_exact proposed by #1663 using count_trailing_zeros, as suggested during review.
>>
>> Compared to count_leading_zeros the implementation can be slightly simpler since subword specializations can simply use the internal 32-bit variant.
>>
>> Windows doesn't define _BitScanForward64 on 32-bit targets, so the 32-bit variant for handling 64-bit values becomes more convoluted.
>
> Claes Redestad has updated the pull request incrementally with one additional commit since the last revision:
>
> Explicit static_cast
Changes requested by kbarrett (Reviewer).
src/hotspot/share/utilities/count_trailing_zeros.hpp line 65:
> 63: #pragma intrinsic(_BitScanForward64)
> 64: #else
> 65: #pragma intrinsic(_BitScanForward)
_BitScanForward needs to be "declared" intrinsic unconditionally, since it's now also used in _LP64 mode.
-------------
PR: https://git.openjdk.java.net/jdk/pull/1747
More information about the hotspot-dev
mailing list