On Fri, 14 Nov 2025 18:03:53 GMT, Hamlin Li <[email protected]> wrote:

>> Hi,
>> 
>> This pr add CMoveF/D on riscv, which enable vectorization of statement like: 
>> `op_1 bop op_2 ? res_f_d_1 : res_f_d_2 in a loop`.
>> 
>> This pr is also a preparation for further vectorization in 
>> https://github.com/openjdk/jdk/pull/28231.
>> 
>> Previously it's https://github.com/openjdk/jdk/pull/25341, but at that time, 
>> C2 SLP has some issue with unsigned comparison, which is now fixed, so it's 
>> good to continue the work.
>> 
>> # Test
>> ## Jtreg
>> 
>> in progress...
>> 
>> ## Performance
>> 
>> Column names meanings:
>> * p: with patch
>> * p+v: with patch, `-XX:+UseVectorCmov -XX:+UseCMoveUnconditionally` turned 
>> on
>> * m: without patch
>> * m+v: without patch, `-XX:+UseVectorCmov -XX:+UseCMoveUnconditionally` 
>> turned on
>> 
>> #### Average improvement
>> 
>> NOTE: With only this PR, it brings performance benefit in case of 
>> `CMoveF+CmpF`, `CMoveD+ComD`, `CMoveF+CmpI`, `CMoveD+CmpL`. The data below 
>> is based on fullly implmenting the vectorization of 
>> `CMoveI/L/F/D+CmpI/L/F/D`, which will be achieved by 
>> https://github.com/openjdk/jdk/pull/28231.
>> 
>> For details, check the performance data in 
>> https://github.com/openjdk/jdk/pull/25341 on riscv.
>> <google-sheets-html-origin style="caret-color: rgb(0, 0, 0); color: rgb(0, 
>> 0, 0); font-style: normal; font-variant-caps: normal; font-weight: 400; 
>> letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; 
>> text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; 
>> -webkit-text-stroke-width: 0px; text-decoration: none;">
>> Opt (m/p) | Opt (m+v/p+v) | Opt (p/p+v) | Opt (m/p+v)
>> -- | -- | -- | --
>> 1.022782609 | 2.198717391 | 2.162673913 | 2.199
>> 
>> </google-sheets-html-origin>
>
> Hamlin Li has updated the pull request incrementally with two additional 
> commits since the last revision:
> 
>  - add CMove+CmpP/N tests
>  - fix cmovF/D_cmpP

test/hotspot/jtreg/compiler/c2/irTests/TestScalarConditionalMoveCmpObj.java 
line 131:

> 129:     //     applyIf = {"UseCompressedOops", "false"})
> 130:     // @IR(counts = {IRNode.CMOVE_L, ">0", IRNode.CMP_N, ">0"},
> 131:     //     applyIf = {"UseCompressedOops", "true"})

Do you plan to still do this in this PR? Probably a future RFE would be better. 
It could be nice if you could link to the RFE with the issue number from this 
comment.

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/28309#discussion_r2533013052

Reply via email to