> 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 four additional 
commits since the last revision:

 - remove TestScalarConditionalMove.java
 - merge scalar and vector tests
 - rename to TestConditionalMove.java
 - add CMP_N

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

Changes:
  - all: https://git.openjdk.org/jdk/pull/28309/files
  - new: https://git.openjdk.org/jdk/pull/28309/files/5c0d645d..51451ab5

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=28309&range=02
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=28309&range=01-02

  Stats: 10114 lines in 4 files changed: 3824 ins; 6290 del; 0 mod
  Patch: https://git.openjdk.org/jdk/pull/28309.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/28309/head:pull/28309

PR: https://git.openjdk.org/jdk/pull/28309

Reply via email to