RFR: 8318158: RISC-V: implement roundD/roundF intrinsics [v6]

Olga Mikhaltsova omikhaltcova at openjdk.org
Wed Nov 15 15:44:47 UTC 2023


> Please, review this Implementation of the roundD/roundF intrinsics for RISC-V platform.
> 
> In the table below it is shown that NaN argument should be processed as a special case.
> 
>                                                   RISC-V                            Java
>                                         (FCVT.W.S)    (FCVT.L.D)  (long round(double a)) (int round(float a))
> Minimum valid input (after rounding)     −2^31         −2^63         Long.MIN_VALUE       Integer.MIN_VALUE
> Maximum valid input (after rounding)      2^31 − 1      2^63 − 1     Long.MAX_VALUE       Integer.MAX_VALUE
> Output for out-of-range negative input   −2^31         −2^63         Long.MIN_VALUE       Integer.MIN_VALUE
> Output for −∞                            −2^31         −2^63         Long.MIN_VALUE       Integer.MIN_VALUE
> Output for out-of-range positive input    2^31 − 1      2^63 - 1     Long.MAX_VALUE       Integer.MAX_VALUE
> Output for +∞                             2^31 − 1      2^63 - 1     Long.MAX_VALUE       Integer.MAX_VALUE
> Output for NaN                            2^31 − 1      2^63 - 1           0                      0
> 
> The benchmark running with the 2nd fixed implementation on the T-Head RVB-ICE board shows the following performance improvement::
> 
> **Before**
> 
> Benchmark                              (TESTSIZE)   Mode  Cnt    Score   Error   Units
> FpRoundingBenchmark.test_round_double        2048  thrpt   15   59.555  0.179  ops/ms
> FpRoundingBenchmark.test_round_float         2048  thrpt   15   49.760  0.103  ops/ms
> 
> 
> **After**
> 
> Benchmark                              (TESTSIZE)   Mode  Cnt    Score   Error   Units
> FpRoundingBenchmark.test_round_double        2048  thrpt   15  110.956  0.186  ops/ms
> FpRoundingBenchmark.test_round_float         2048  thrpt   15  115.947  0.122  ops/ms

Olga Mikhaltsova has updated the pull request incrementally with one additional commit since the last revision:

  Replaced tmp with t0

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

Changes:
  - all: https://git.openjdk.org/jdk/pull/16382/files
  - new: https://git.openjdk.org/jdk/pull/16382/files/630a26b8..fed920ea

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=16382&range=05
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=16382&range=04-05

  Stats: 18 lines in 2 files changed: 0 ins; 4 del; 14 mod
  Patch: https://git.openjdk.org/jdk/pull/16382.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/16382/head:pull/16382

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


More information about the hotspot-dev mailing list