Math trig intrinsics and compiler options
Christian Thalinger
Christian.Thalinger at Sun.COM
Wed Jul 15 06:21:45 PDT 2009
gustav trede wrote:
> Hello,
>
> Azeem Jiva told me an easy way to improve trig performance.
> Changing the intrinsics to use an existing but faster path gives me a
> boost of roughly 40% for the Math cos and sin on solaris x64.
>
>
> library_call.cpp
>
> bool LibraryCallKit::inline_math_
> native(vmIntrinsics::ID id) {
> switch (id) {
>
> case vmIntrinsics::_dcos: return Matcher::has_match_rule(Op_CosD) ?
> runtime_math(OptoRuntime::Math_D_D_Type(), CAST_FROM_FN_PTR(address,
> SharedRuntime::dcos), "COS") : false;
> case vmIntrinsics::_dsin: return Matcher::has_match_rule(Op_SinD) ?
> runtime_math(OptoRuntime::Math_D_D_Type(), CAST_FROM_FN_PTR(address,
> SharedRuntime::dsin), "SIN") : false;
> case vmIntrinsics::_dtan: return Matcher::has_match_rule(Op_TanD) ?
> runtime_math(OptoRuntime::Math_D_D_Type(), CAST_FROM_FN_PTR(address,
> SharedRuntime::dtan), "TAN") : false;
> case vmIntrinsics::_dlog: return Matcher::has_match_rule(Op_LogD) ?
> runtime_math(OptoRuntime::Math_D_D_Type(), CAST_FROM_FN_PTR(address,
> SharedRuntime::dlog), "LOG") : false;
> case vmIntrinsics::_dlog10: return Matcher::has_match_rule(Op_Log10D)
> ? runtime_math(OptoRuntime::Math_D_D_Type(), CAST_FROM_FN_PTR(address,
> SharedRuntime::dlog10), "LOG10") : false;
>
>
> Is there any potential problem with such a patch ?
I'm not sure I understand this "patch". Why should the code above be
faster than the current code in HotSpot, which tries to inline the
trigonometric functions? Maybe the speedup you're seeing is because of
the missing fast/slow path check and you are always using the slow path
because of rounding? Just a guess...
-- Christian
More information about the hotspot-dev
mailing list