RFR: 8265917: Different values computed by C2 and interpreter/C1 for Math.pow(x, 2.0) on x86_32 [v3]

Jie Fu jiefu at openjdk.java.net
Tue Apr 27 11:09:05 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

Jie Fu has updated the pull request incrementally with one additional commit since the last revision:

  Add align attribute for 2.0

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

Changes:
  - all: https://git.openjdk.java.net/jdk/pull/3677/files
  - new: https://git.openjdk.java.net/jdk/pull/3677/files/dde59758..9c4283ec

Webrevs:
 - full: https://webrevs.openjdk.java.net/?repo=jdk&pr=3677&range=02
 - incr: https://webrevs.openjdk.java.net/?repo=jdk&pr=3677&range=01-02

  Stats: 4 lines in 1 file changed: 2 ins; 0 del; 2 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