On Fri, 19 Sep 2025 20:44:54 GMT, Jatin Bhateja <[email protected]> wrote:
>> This patch optimizes PopCount value transforms using KnownBits information. >> Following are the results of the micro-benchmark included with the patch >> >> >> >> System: 13th Gen Intel(R) Core(TM) i3-1315U >> >> Baseline: >> Benchmark Mode Cnt Score Error >> Units >> PopCountValueTransform.LogicFoldingKerenLong thrpt 2 215460.670 >> ops/s >> PopCountValueTransform.LogicFoldingKerenlInt thrpt 2 294014.826 >> ops/s >> >> Withopt: >> Benchmark Mode Cnt Score Error >> Units >> PopCountValueTransform.LogicFoldingKerenLong thrpt 2 389978.082 >> ops/s >> PopCountValueTransform.LogicFoldingKerenlInt thrpt 2 417261.583 >> ops/s >> >> >> Kindly review and share your feedback. >> >> Best Regards, >> Jatin > > Jatin Bhateja has updated the pull request incrementally with one additional > commit since the last revision: > > Update countbitsnode.cpp A suggestion, we might do this as a later RFE. src/hotspot/share/opto/countbitsnode.cpp line 124: > 122: // From the definition of KnownBits, we know: > 123: // zeros: Indicates which bits must be 0: zeros[i]=1 -> t[i]=0 > 124: // ones: Indicates which bits must be 1: ones[i]=1 -> t[i]=1 I don't think we should duplicate the information available in rangeinference.hpp - we should enhance the documentation there, such as noting `~zeros` is the number where the maximum number of bits are set to 1, to help comprehension. If we know `ones` is `min_ones` and `~zeros` is `max_ones`, we can easily derive that `pop_count(ones) <= pop_count(t) <= pop_count(~zeros)` ------------- PR Review: https://git.openjdk.org/jdk/pull/27075#pullrequestreview-3269507322 PR Review Comment: https://git.openjdk.org/jdk/pull/27075#discussion_r2380355747
