RFR: 8265917: Different values computed by C2 and interpreter/C1 for Math.pow(x, 2.0) on x86_32 [v3]
kvn at openjdk.java.net
Wed Apr 28 03:07:51 UTC 2021
On Tue, 27 Apr 2021 11:09:05 GMT, Jie Fu <jiefu at openjdk.org> wrote:
>> 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.
>> Best regards,
> Jie Fu has updated the pull request incrementally with one additional commit since the last revision:
> Add align attribute for 2.0
Latest version with alignment is good.
Marked as reviewed by kvn (Reviewer).
More information about the hotspot-compiler-dev