RFR: 8294198: Implement isFinite intrinsic for RISC-V

Aleksei Voitylov avoitylov at openjdk.org
Thu Sep 22 13:05:00 UTC 2022


Unlike on x86 (see 8285868 and the discussion in review), isFinite intrinsic turned out to be profitable on RISC-V using the same fclass instruction as for 8293695 (isInfinite instrinsic). Therefore, I'm proposing to have it added on RISC-V in this PR.

benchmark results:

before:

Benchmark                              Mode  Cnt   Score   Error  Units
DoubleClassCheck.testIsFiniteBranch    avgt   15  52.824 ± 1.744  ns/op
DoubleClassCheck.testIsFiniteCMov      avgt   15  16.104 ± 0.358  ns/op
DoubleClassCheck.testIsFiniteStore     avgt   15  14.366 ± 2.174  ns/op
FloatClassCheck.testIsFiniteBranch     avgt   15  49.821 ± 0.330  ns/op
FloatClassCheck.testIsFiniteCMov       avgt   15  14.702 ± 0.335  ns/op
FloatClassCheck.testIsFiniteStore      avgt   15  14.749 ± 0.496  ns/op

after:

DoubleClassCheck.testIsFiniteBranch    avgt   15  48.921 ± 0.557  ns/op
DoubleClassCheck.testIsFiniteCMov      avgt   15  13.716 ± 0.304  ns/op
DoubleClassCheck.testIsFiniteStore     avgt   15   9.152 ± 0.158  ns/op
FloatClassCheck.testIsFiniteBranch     avgt   15  47.740 ± 2.028  ns/op
FloatClassCheck.testIsFiniteCMov       avgt   15  13.299 ± 0.282  ns/op
FloatClassCheck.testIsFiniteStore      avgt   15   9.185 ± 0.396  ns/op

Existing isInfinite jtreg test was altered to be able to use common code for isFinite test and fine-grained requires tag filtering. Existing benchmark was modified to include isFinite case. A typo ("Atleast" -> "At least") was fixed on the way.

Test passed on both release and fastdebug builds. Hotspot tier1 tests were run on x86_64 and RISC-V with no issues.

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

Commit messages:
 - JDK-8294198 implementation

Changes: https://git.openjdk.org/jdk/pull/10391/files
 Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=10391&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8294198
  Stats: 363 lines in 17 files changed: 315 ins; 47 del; 1 mod
  Patch: https://git.openjdk.org/jdk/pull/10391.diff
  Fetch: git fetch https://git.openjdk.org/jdk pull/10391/head:pull/10391

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


More information about the hotspot-dev mailing list