On Mon, 27 Feb 2023 18:26:51 GMT, Joe Darcy <da...@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

Reply via email to