RFR: 8335444: Generalize implementation of AndNode mul_ring [v3]
Quan Anh Mai
qamai at openjdk.org
Mon Aug 19 18:10:58 UTC 2024
On Wed, 7 Aug 2024 01:20:09 GMT, Jasmine Karthikeyan <jkarthikeyan at openjdk.org> wrote:
>> Hi all,
>> I've written this patch which improves type calculation for bitwise-and functions. Previously, the only cases that were considered were if one of the inputs to the node were a positive constant. I've generalized this behavior, as well as added a case to better estimate the result for arbitrary ranges. Since these are very common patterns to see, this can help propagate more precise types throughout the ideal graph for a large number of methods, making other optimizations and analyses stronger. I was interested in where this patch improves types, so I ran CTW for `java_base` and `java_base_2` and printed out the differences in this gist [here](https://gist.github.com/jaskarth/b45260d81ab621656f4a55cc51cf5292). While I don't think it's particularly complicated I've also added some discussion of the mathematics below, mostly because I thought it was interesting to work through :)
>>
>> This patch passes tier1-3 testing on my linux x64 machine. Thoughts and reviews would be very appreciated!
>
> Jasmine Karthikeyan has updated the pull request incrementally with one additional commit since the last revision:
>
> Check IR before macro expansion
This is really nice. Given Christian's suggestion, what do you think about inferring the unsigned bounds and known bits from the signed bounds, do the calculation there and work back the signed bounds in the end?
src/hotspot/share/opto/mulnode.cpp line 601:
> 599: typedef typename IntegerType::NativeType NativeType;
> 600:
> 601: int widen = MAX2(r0->_widen,r1->_widen);
Suggestion:
int widen = MAX2(r0->_widen, r1->_widen);
-------------
PR Review: https://git.openjdk.org/jdk/pull/20066#pullrequestreview-2246160281
PR Review Comment: https://git.openjdk.org/jdk/pull/20066#discussion_r1722165063
More information about the hotspot-compiler-dev
mailing list