RFR: 8352504: RISC-V: implement and enable CMoveI/L
Hamlin Li
mli at openjdk.org
Wed Apr 9 08:51:36 UTC 2025
On Wed, 9 Apr 2025 06:41:51 GMT, Fei Yang <fyang at openjdk.org> wrote:
> Sorry for not being clear enough. I am suggesting this:
if (UseZicond) {
FLAG_SET_DEFAULT(ConditionalMoveLimit, 3);
}
I think this depends on whether we should enable ConditionalMoveLimit based on `UseZicond`? So, I'll leave it until we have a dicision about the following discussion.
> Without Zicond extension, conditional moves composed by C2 are simply emulated with regular conditional branches on riscv, which I think is not good in respect of performance.
Yes, when Zicond is not supported (or turned off), C2 use the alternative path which is `branch + mv`. When Zicond was introduced (https://github.com/openjdk/jdk/pull/22386), the rational behind it is that brach bring regression, but I think it's based on the fact that code size is the same. But in cmove case, the size is increased, and in particular when C2 unrolls a loop, it can increase the code size a lot, which is not good for cache. And the jmh test result shows that brach version is better than patch with Zicond and master with/wo Zicond in most of test cases.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/24490#discussion_r2034819606
More information about the hotspot-dev
mailing list