RFR: JDK-8302040: Port fdlibm sqrt to Java [v5]
Joe Darcy
darcy at openjdk.org
Mon Feb 27 18:47:48 UTC 2023
On Mon, 27 Feb 2023 18:26:51 GMT, Joe Darcy <darcy at openjdk.org> wrote:
>> The wheel of FDLIBM porting turns a notch and sqrt comes into play.
>>
>> While the sqrt operation usually has a hardware implementation that is intrinsified, for completeness a software implementation should be available as well.
>
> Joe Darcy has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains six additional commits since the last revision:
>
> - Enable intrinsic for StrictMath.sqrt; thanks to Tobias Hartmann for assistance with the HotSpot updates.
> - Merge branch 'master' into JDK-8302040
> - Implement review feedback.
> - Add one one unsigned shift comment.
> - Respond to review feedback.
> - JDK-8302040: Port fdlibm sqrt to Java
Adding hotspot-compiler to get get explicit review of small changes to enable intrinsics support for StrictMath.sqrt after it was changed from a native method to a Java one. Specific VM changes:
diff --git a/src/hotspot/share/classfile/vmIntrinsics.hpp b/src/hotspot/share/classfile/vmIntrinsics.hpp
index 02be97362c7dc..6d1ad75ae688c 100644
--- a/src/hotspot/share/classfile/vmIntrinsics.hpp
+++ b/src/hotspot/share/classfile/vmIntrinsics.hpp
@@ -202,8 +202,8 @@ class methodHandle;
do_intrinsic(_maxF_strict, java_lang_StrictMath, max_name, float2_float_signature, F_S) \
do_intrinsic(_minD_strict, java_lang_StrictMath, min_name, double2_double_signature, F_S) \
do_intrinsic(_maxD_strict, java_lang_StrictMath, max_name, double2_double_signature, F_S) \
- /* Special flavor of dsqrt intrinsic to handle the "native" method in StrictMath. Otherwise the same as in Math. */ \
- do_intrinsic(_dsqrt_strict, java_lang_StrictMath, sqrt_name, double_double_signature, F_SN) \
+ /* Additional dsqrt intrinsic to directly handle the sqrt method in StrictMath. Otherwise the same as in Math. */ \
+ do_intrinsic(_dsqrt_strict, java_lang_StrictMath, sqrt_name, double_double_signature, F_S) \
\
do_intrinsic(_floatIsInfinite, java_lang_Float, isInfinite_name, float_bool_signature, F_S) \
do_name( isInfinite_name, "isInfinite") \
diff --git a/src/hotspot/share/interpreter/abstractInterpreter.cpp b/src/hotspot/share/interpreter/abstractInterpreter.cpp
index 875211d6d0527..8d6ef06754cfe 100644
--- a/src/hotspot/share/interpreter/abstractInterpreter.cpp
+++ b/src/hotspot/share/interpreter/abstractInterpreter.cpp
@@ -148,7 +148,7 @@ AbstractInterpreter::MethodKind AbstractInterpreter::method_kind(const methodHan
case vmIntrinsics::_fmaD: return java_lang_math_fmaD;
case vmIntrinsics::_fmaF: return java_lang_math_fmaF;
case vmIntrinsics::_dsqrt: return java_lang_math_sqrt;
- case vmIntrinsics::_dsqrt_strict: return native;
+ case vmIntrinsics::_dsqrt_strict: return java_lang_math_sqrt;
case vmIntrinsics::_Reference_get: return java_lang_ref_reference_get;
case vmIntrinsics::_Object_init:
if (RegisterFinalizersAtInit && m->code_size() == 1) {
-------------
PR: https://git.openjdk.org/jdk/pull/12736
More information about the hotspot-compiler-dev
mailing list