RFR: 8265917: Different values computed by C2 and interpreter/C1 for Math.pow(x, 2.0) on x86_32
Jie Fu
jiefu at openjdk.java.net
Sun Apr 25 11:46:06 UTC 2021
Hi all,
C2 may produce different results for Math.pow(x, 2.0) compared with interpreter/C1 on x86_32.
E.g., for Math.pow(1.0 / 2047, 2.0):
interpreter: 2.38651580386563E-7
C2: 2.3865158038656307E-7
The reason is that C2 will replace Math.pow(x, 2.0) with x*x.
However, there is no such optimization for interpreter/C1 on x86_32.
The fix just disables C2's opt for Math.pow(x, 2.0) on x86_32 since nobody (or very few people) would run x86_32.
And we don't have a plan to implement such opt on x86_32.
Another reason to fix this bug is that we need this patch to extend C2's opt for Math.pow(x, 0.5) on other platforms.
Thanks.
Best regards,
Jie
-------------
Commit messages:
- 8265917: Different values computed by C2 and interpreter/C1 for Math.pow(x, 2.0) on x86_32
Changes: https://git.openjdk.java.net/jdk/pull/3677/files
Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=3677&range=00
Issue: https://bugs.openjdk.java.net/browse/JDK-8265917
Stats: 60 lines in 2 files changed: 60 ins; 0 del; 0 mod
Patch: https://git.openjdk.java.net/jdk/pull/3677.diff
Fetch: git fetch https://git.openjdk.java.net/jdk pull/3677/head:pull/3677
PR: https://git.openjdk.java.net/jdk/pull/3677
More information about the hotspot-compiler-dev
mailing list