RFR: 8347981: RISC-V: Add Zfa zli imm loads

Robbin Ehn rehn at openjdk.org
Fri Jan 17 08:51:45 UTC 2025


Hi, please consider!

This patch the Zfa zli floating point immediate load.
As a bonus it adds fmv_?_x(Rd, zr); for loading fp/dp 0x0.
There are some more instruction in Zfa, but this was such a clear use-case so I only did fli as a start.

When using one of the 32 'popular' floats we can now materialze them without a load.
E.g.
`float f = f1 * 0.5 + f2 * 2.0;`
Only require 2 loads instead of 4: as '0.5' and '2.0' is such popular float values.

As Java is often memory bound we should also investigate doing lui+ssli+fmv for float/doubles instead of a load when materializing.

Note the _fli_s/_fli_d will be proper merged on the 8347794: RISC-V: Add Zfhmin - Float cleanup.

Passes:
./test/jdk/java/lang/Math
./test/hotspot/jtreg/compiler/floatingpoint/
./test/jdk/java/util/Formatter/
./test/jdk/java/lang/Float/
./test/jdk/java/lang/Double/
./test/hotspot/jtreg/compiler/c2/FloatingPointFoldingTest.java
./test/hotspot/jtreg/compiler/eliminateAutobox/
./test/hotspot/jtreg/vmTestbase/jit/

Running tier1

Thanks!

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

Commit messages:
 - Baseline

Changes: https://git.openjdk.org/jdk/pull/23171/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=23171&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8347981
  Stats: 201 lines in 7 files changed: 192 ins; 0 del; 9 mod
  Patch: https://git.openjdk.org/jdk/pull/23171.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/23171/head:pull/23171

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


More information about the hotspot-dev mailing list