RFR: 8295926: RISC-V: C1: Fix LIRGenerator::do_LibmIntrinsic [v4]
Xiaolin Zheng
xlinzheng at openjdk.org
Fri Oct 28 03:53:27 UTC 2022
> The ported logic of LIRGenerator::do_LibmIntrinsic has a correctness problem, which will kill argument registers when the current libm intrinsic's operand is also a libm intrinsic, such as:
>
> (dpow val1 (dlog val2))
>
> LIRItem walks operands, so the `value.load_item_force(cc->at(0));` should be moved below after the LIRItem, or the result of `cc->at(0)` would be killed. But we might as well keep aligning AArch64's style to reduce some maintenance work.
>
>
> Reproducer:
>
>
> public class A {
>
> static int count = 0;
>
> public static void print(double var) {
> if (count % 10000 == 0) {
> System.out.println(var);
> }
> count++;
> }
>
> public static void a(double var1, double var2, double var3) {
> double var4 = Math.pow(var3, Math.log(var1 / var2));
> print(var4);
> }
>
> public static void main(String[] args) {
>
> for (int i = 0; i < 50000; i++) {
> double var21 = 2.2250738585072014E-308D;
> double var15 = 1.1102230246251565E-16D;
> double d1 = 2.0D;
> A.a(var21, var15, d1);
> }
>
> }
>
> }
>
>
> The right answer is
>
> 6.461124611136231E-203
> 6.461124611136231E-203
> 6.461124611136231E-203
> 6.461124611136231E-203
> 6.461124611136231E-203
>
>
> The current backend gives
>
> 6.461124611136231E-203
> NaN
> NaN
> NaN
> NaN
>
>
> Testing a hotspot tier1~4 on qemu.
>
> Thanks,
> Xiaolin
Xiaolin Zheng has updated the pull request incrementally with one additional commit since the last revision:
Fix the newly-added test
-------------
Changes:
- all: https://git.openjdk.org/jdk/pull/10867/files
- new: https://git.openjdk.org/jdk/pull/10867/files/01e54b45..9334ce71
Webrevs:
- full: https://webrevs.openjdk.org/?repo=jdk&pr=10867&range=03
- incr: https://webrevs.openjdk.org/?repo=jdk&pr=10867&range=02-03
Stats: 9 lines in 1 file changed: 0 ins; 9 del; 0 mod
Patch: https://git.openjdk.org/jdk/pull/10867.diff
Fetch: git fetch https://git.openjdk.org/jdk pull/10867/head:pull/10867
PR: https://git.openjdk.org/jdk/pull/10867
More information about the hotspot-compiler-dev
mailing list