< prev index next >

src/hotspot/share/classfile/vmSymbols.hpp

Print this page
rev 53034 : 8212043: Add floating-point Math.min/max intrinsics
Summary: Floating-point Math.min() and Math.max() intrinsics are enabled on AArch64 platform
Reviewed-by: adinn, aph


 731 // library intrinsics followed by bytecode intrinsics. Please also make sure to
 732 // add the declaration of the intrinsic to the approriate section of the list.
 733 #define VM_INTRINSICS_DO(do_intrinsic, do_class, do_name, do_signature, do_alias)                                       \
 734   /* (1) Library intrinsics                                                                        */                   \
 735   do_intrinsic(_hashCode,                 java_lang_Object,       hashCode_name, void_int_signature,             F_R)   \
 736    do_name(     hashCode_name,                                   "hashCode")                                            \
 737   do_intrinsic(_getClass,                 java_lang_Object,       getClass_name, void_class_signature,           F_R)   \
 738    do_name(     getClass_name,                                   "getClass")                                            \
 739   do_intrinsic(_clone,                    java_lang_Object,       clone_name, void_object_signature,             F_R)   \
 740    do_name(     clone_name,                                      "clone")                                               \
 741   do_intrinsic(_notify,                   java_lang_Object,       notify_name, void_method_signature,            F_R)   \
 742    do_name(     notify_name,                                     "notify")                                              \
 743   do_intrinsic(_notifyAll,                java_lang_Object,       notifyAll_name, void_method_signature,         F_R)   \
 744    do_name(     notifyAll_name,                                  "notifyAll")                                           \
 745                                                                                                                         \
 746   /* Math & StrictMath intrinsics are defined in terms of just a few signatures: */                                     \
 747   do_class(java_lang_Math,                "java/lang/Math")                                                             \
 748   do_class(java_lang_StrictMath,          "java/lang/StrictMath")                                                       \
 749   do_signature(double2_double_signature,  "(DD)D")                                                                      \
 750   do_signature(double3_double_signature,  "(DDD)D")                                                                     \

 751   do_signature(float3_float_signature,    "(FFF)F")                                                                     \
 752   do_signature(int2_int_signature,        "(II)I")                                                                      \
 753   do_signature(long2_long_signature,      "(JJ)J")                                                                      \
 754                                                                                                                         \
 755   /* here are the math names, all together: */                                                                          \
 756   do_name(abs_name,"abs")       do_name(sin_name,"sin")         do_name(cos_name,"cos")                                 \
 757   do_name(tan_name,"tan")       do_name(atan2_name,"atan2")     do_name(sqrt_name,"sqrt")                               \
 758   do_name(log_name,"log")       do_name(log10_name,"log10")     do_name(pow_name,"pow")                                 \
 759   do_name(exp_name,"exp")       do_name(min_name,"min")         do_name(max_name,"max")                                 \
 760                                                                                                                         \
 761   do_name(addExact_name,"addExact")                                                                                     \
 762   do_name(decrementExact_name,"decrementExact")                                                                         \
 763   do_name(incrementExact_name,"incrementExact")                                                                         \
 764   do_name(multiplyExact_name,"multiplyExact")                                                                           \
 765   do_name(multiplyHigh_name,"multiplyHigh")                                                                             \
 766   do_name(negateExact_name,"negateExact")                                                                               \
 767   do_name(subtractExact_name,"subtractExact")                                                                           \
 768   do_name(fma_name, "fma")                                                                                              \
 769                                                                                                                         \
 770   do_intrinsic(_dabs,                     java_lang_Math,         abs_name,   double_double_signature,           F_S)   \


 777   do_intrinsic(_dlog10,                   java_lang_Math,         log10_name, double_double_signature,           F_S)   \
 778   do_intrinsic(_dpow,                     java_lang_Math,         pow_name,   double2_double_signature,          F_S)   \
 779   do_intrinsic(_dexp,                     java_lang_Math,         exp_name,   double_double_signature,           F_S)   \
 780   do_intrinsic(_min,                      java_lang_Math,         min_name,   int2_int_signature,                F_S)   \
 781   do_intrinsic(_max,                      java_lang_Math,         max_name,   int2_int_signature,                F_S)   \
 782   do_intrinsic(_addExactI,                java_lang_Math,         addExact_name, int2_int_signature,             F_S)   \
 783   do_intrinsic(_addExactL,                java_lang_Math,         addExact_name, long2_long_signature,           F_S)   \
 784   do_intrinsic(_decrementExactI,          java_lang_Math,         decrementExact_name, int_int_signature,        F_S)   \
 785   do_intrinsic(_decrementExactL,          java_lang_Math,         decrementExact_name, long_long_signature,      F_S)   \
 786   do_intrinsic(_incrementExactI,          java_lang_Math,         incrementExact_name, int_int_signature,        F_S)   \
 787   do_intrinsic(_incrementExactL,          java_lang_Math,         incrementExact_name, long_long_signature,      F_S)   \
 788   do_intrinsic(_multiplyExactI,           java_lang_Math,         multiplyExact_name, int2_int_signature,        F_S)   \
 789   do_intrinsic(_multiplyExactL,           java_lang_Math,         multiplyExact_name, long2_long_signature,      F_S)   \
 790   do_intrinsic(_multiplyHigh,             java_lang_Math,         multiplyHigh_name, long2_long_signature,       F_S)   \
 791   do_intrinsic(_negateExactI,             java_lang_Math,         negateExact_name, int_int_signature,           F_S)   \
 792   do_intrinsic(_negateExactL,             java_lang_Math,         negateExact_name, long_long_signature,         F_S)   \
 793   do_intrinsic(_subtractExactI,           java_lang_Math,         subtractExact_name, int2_int_signature,        F_S)   \
 794   do_intrinsic(_subtractExactL,           java_lang_Math,         subtractExact_name, long2_long_signature,      F_S)   \
 795   do_intrinsic(_fmaD,                     java_lang_Math,         fma_name,           double3_double_signature,  F_S)   \
 796   do_intrinsic(_fmaF,                     java_lang_Math,         fma_name,           float3_float_signature,    F_S)   \




 797                                                                                                                         \
 798   do_intrinsic(_floatToRawIntBits,        java_lang_Float,        floatToRawIntBits_name,   float_int_signature, F_S)   \
 799    do_name(     floatToRawIntBits_name,                          "floatToRawIntBits")                                   \
 800   do_intrinsic(_floatToIntBits,           java_lang_Float,        floatToIntBits_name,      float_int_signature, F_S)   \
 801    do_name(     floatToIntBits_name,                             "floatToIntBits")                                      \
 802   do_intrinsic(_intBitsToFloat,           java_lang_Float,        intBitsToFloat_name,      int_float_signature, F_S)   \
 803    do_name(     intBitsToFloat_name,                             "intBitsToFloat")                                      \
 804   do_intrinsic(_doubleToRawLongBits,      java_lang_Double,       doubleToRawLongBits_name, double_long_signature, F_S) \
 805    do_name(     doubleToRawLongBits_name,                        "doubleToRawLongBits")                                 \
 806   do_intrinsic(_doubleToLongBits,         java_lang_Double,       doubleToLongBits_name,    double_long_signature, F_S) \
 807    do_name(     doubleToLongBits_name,                           "doubleToLongBits")                                    \
 808   do_intrinsic(_longBitsToDouble,         java_lang_Double,       longBitsToDouble_name,    long_double_signature, F_S) \
 809    do_name(     longBitsToDouble_name,                           "longBitsToDouble")                                    \
 810                                                                                                                         \
 811   do_intrinsic(_numberOfLeadingZeros_i,   java_lang_Integer,      numberOfLeadingZeros_name,int_int_signature,   F_S)   \
 812   do_intrinsic(_numberOfLeadingZeros_l,   java_lang_Long,         numberOfLeadingZeros_name,long_int_signature,  F_S)   \
 813                                                                                                                         \
 814   do_intrinsic(_numberOfTrailingZeros_i,  java_lang_Integer,      numberOfTrailingZeros_name,int_int_signature,  F_S)   \
 815   do_intrinsic(_numberOfTrailingZeros_l,  java_lang_Long,         numberOfTrailingZeros_name,long_int_signature, F_S)   \
 816                                                                                                                         \




 731 // library intrinsics followed by bytecode intrinsics. Please also make sure to
 732 // add the declaration of the intrinsic to the approriate section of the list.
 733 #define VM_INTRINSICS_DO(do_intrinsic, do_class, do_name, do_signature, do_alias)                                       \
 734   /* (1) Library intrinsics                                                                        */                   \
 735   do_intrinsic(_hashCode,                 java_lang_Object,       hashCode_name, void_int_signature,             F_R)   \
 736    do_name(     hashCode_name,                                   "hashCode")                                            \
 737   do_intrinsic(_getClass,                 java_lang_Object,       getClass_name, void_class_signature,           F_R)   \
 738    do_name(     getClass_name,                                   "getClass")                                            \
 739   do_intrinsic(_clone,                    java_lang_Object,       clone_name, void_object_signature,             F_R)   \
 740    do_name(     clone_name,                                      "clone")                                               \
 741   do_intrinsic(_notify,                   java_lang_Object,       notify_name, void_method_signature,            F_R)   \
 742    do_name(     notify_name,                                     "notify")                                              \
 743   do_intrinsic(_notifyAll,                java_lang_Object,       notifyAll_name, void_method_signature,         F_R)   \
 744    do_name(     notifyAll_name,                                  "notifyAll")                                           \
 745                                                                                                                         \
 746   /* Math & StrictMath intrinsics are defined in terms of just a few signatures: */                                     \
 747   do_class(java_lang_Math,                "java/lang/Math")                                                             \
 748   do_class(java_lang_StrictMath,          "java/lang/StrictMath")                                                       \
 749   do_signature(double2_double_signature,  "(DD)D")                                                                      \
 750   do_signature(double3_double_signature,  "(DDD)D")                                                                     \
 751   do_signature(float2_float_signature,    "(FF)F")                                                                      \
 752   do_signature(float3_float_signature,    "(FFF)F")                                                                     \
 753   do_signature(int2_int_signature,        "(II)I")                                                                      \
 754   do_signature(long2_long_signature,      "(JJ)J")                                                                      \
 755                                                                                                                         \
 756   /* here are the math names, all together: */                                                                          \
 757   do_name(abs_name,"abs")       do_name(sin_name,"sin")         do_name(cos_name,"cos")                                 \
 758   do_name(tan_name,"tan")       do_name(atan2_name,"atan2")     do_name(sqrt_name,"sqrt")                               \
 759   do_name(log_name,"log")       do_name(log10_name,"log10")     do_name(pow_name,"pow")                                 \
 760   do_name(exp_name,"exp")       do_name(min_name,"min")         do_name(max_name,"max")                                 \
 761                                                                                                                         \
 762   do_name(addExact_name,"addExact")                                                                                     \
 763   do_name(decrementExact_name,"decrementExact")                                                                         \
 764   do_name(incrementExact_name,"incrementExact")                                                                         \
 765   do_name(multiplyExact_name,"multiplyExact")                                                                           \
 766   do_name(multiplyHigh_name,"multiplyHigh")                                                                             \
 767   do_name(negateExact_name,"negateExact")                                                                               \
 768   do_name(subtractExact_name,"subtractExact")                                                                           \
 769   do_name(fma_name, "fma")                                                                                              \
 770                                                                                                                         \
 771   do_intrinsic(_dabs,                     java_lang_Math,         abs_name,   double_double_signature,           F_S)   \


 778   do_intrinsic(_dlog10,                   java_lang_Math,         log10_name, double_double_signature,           F_S)   \
 779   do_intrinsic(_dpow,                     java_lang_Math,         pow_name,   double2_double_signature,          F_S)   \
 780   do_intrinsic(_dexp,                     java_lang_Math,         exp_name,   double_double_signature,           F_S)   \
 781   do_intrinsic(_min,                      java_lang_Math,         min_name,   int2_int_signature,                F_S)   \
 782   do_intrinsic(_max,                      java_lang_Math,         max_name,   int2_int_signature,                F_S)   \
 783   do_intrinsic(_addExactI,                java_lang_Math,         addExact_name, int2_int_signature,             F_S)   \
 784   do_intrinsic(_addExactL,                java_lang_Math,         addExact_name, long2_long_signature,           F_S)   \
 785   do_intrinsic(_decrementExactI,          java_lang_Math,         decrementExact_name, int_int_signature,        F_S)   \
 786   do_intrinsic(_decrementExactL,          java_lang_Math,         decrementExact_name, long_long_signature,      F_S)   \
 787   do_intrinsic(_incrementExactI,          java_lang_Math,         incrementExact_name, int_int_signature,        F_S)   \
 788   do_intrinsic(_incrementExactL,          java_lang_Math,         incrementExact_name, long_long_signature,      F_S)   \
 789   do_intrinsic(_multiplyExactI,           java_lang_Math,         multiplyExact_name, int2_int_signature,        F_S)   \
 790   do_intrinsic(_multiplyExactL,           java_lang_Math,         multiplyExact_name, long2_long_signature,      F_S)   \
 791   do_intrinsic(_multiplyHigh,             java_lang_Math,         multiplyHigh_name, long2_long_signature,       F_S)   \
 792   do_intrinsic(_negateExactI,             java_lang_Math,         negateExact_name, int_int_signature,           F_S)   \
 793   do_intrinsic(_negateExactL,             java_lang_Math,         negateExact_name, long_long_signature,         F_S)   \
 794   do_intrinsic(_subtractExactI,           java_lang_Math,         subtractExact_name, int2_int_signature,        F_S)   \
 795   do_intrinsic(_subtractExactL,           java_lang_Math,         subtractExact_name, long2_long_signature,      F_S)   \
 796   do_intrinsic(_fmaD,                     java_lang_Math,         fma_name,           double3_double_signature,  F_S)   \
 797   do_intrinsic(_fmaF,                     java_lang_Math,         fma_name,           float3_float_signature,    F_S)   \
 798   do_intrinsic(_maxF,                     java_lang_Math,         max_name,           float2_float_signature,    F_S)   \
 799   do_intrinsic(_minF,                     java_lang_Math,         min_name,           float2_float_signature,    F_S)   \
 800   do_intrinsic(_maxD,                     java_lang_Math,         max_name,           double2_double_signature,  F_S)   \
 801   do_intrinsic(_minD,                     java_lang_Math,         min_name,           double2_double_signature,  F_S)   \
 802                                                                                                                         \
 803   do_intrinsic(_floatToRawIntBits,        java_lang_Float,        floatToRawIntBits_name,   float_int_signature, F_S)   \
 804    do_name(     floatToRawIntBits_name,                          "floatToRawIntBits")                                   \
 805   do_intrinsic(_floatToIntBits,           java_lang_Float,        floatToIntBits_name,      float_int_signature, F_S)   \
 806    do_name(     floatToIntBits_name,                             "floatToIntBits")                                      \
 807   do_intrinsic(_intBitsToFloat,           java_lang_Float,        intBitsToFloat_name,      int_float_signature, F_S)   \
 808    do_name(     intBitsToFloat_name,                             "intBitsToFloat")                                      \
 809   do_intrinsic(_doubleToRawLongBits,      java_lang_Double,       doubleToRawLongBits_name, double_long_signature, F_S) \
 810    do_name(     doubleToRawLongBits_name,                        "doubleToRawLongBits")                                 \
 811   do_intrinsic(_doubleToLongBits,         java_lang_Double,       doubleToLongBits_name,    double_long_signature, F_S) \
 812    do_name(     doubleToLongBits_name,                           "doubleToLongBits")                                    \
 813   do_intrinsic(_longBitsToDouble,         java_lang_Double,       longBitsToDouble_name,    long_double_signature, F_S) \
 814    do_name(     longBitsToDouble_name,                           "longBitsToDouble")                                    \
 815                                                                                                                         \
 816   do_intrinsic(_numberOfLeadingZeros_i,   java_lang_Integer,      numberOfLeadingZeros_name,int_int_signature,   F_S)   \
 817   do_intrinsic(_numberOfLeadingZeros_l,   java_lang_Long,         numberOfLeadingZeros_name,long_int_signature,  F_S)   \
 818                                                                                                                         \
 819   do_intrinsic(_numberOfTrailingZeros_i,  java_lang_Integer,      numberOfTrailingZeros_name,int_int_signature,  F_S)   \
 820   do_intrinsic(_numberOfTrailingZeros_l,  java_lang_Long,         numberOfTrailingZeros_name,long_int_signature, F_S)   \
 821                                                                                                                         \


< prev index next >