Thu, 20 Feb 2014 11:05:12 +0100
8035394: PPC64: Make usage of intrinsic dsqrt depend on processor recognition.
Reviewed-by: kvn
src/cpu/ppc/vm/ppc.ad | file | annotate | diff | comparison | revisions | |
src/share/vm/opto/library_call.cpp | file | annotate | diff | comparison | revisions |
1.1 --- a/src/cpu/ppc/vm/ppc.ad Thu Feb 20 10:48:57 2014 +0100 1.2 +++ b/src/cpu/ppc/vm/ppc.ad Thu Feb 20 11:05:12 2014 +0100 1.3 @@ -2076,6 +2076,8 @@ 1.4 return false; 1.5 1.6 switch (opcode) { 1.7 + case Op_SqrtD: 1.8 + return VM_Version::has_fsqrt(); 1.9 case Op_CountLeadingZerosI: 1.10 case Op_CountLeadingZerosL: 1.11 case Op_CountTrailingZerosI: 1.12 @@ -8740,7 +8742,7 @@ 1.13 ins_pipe(pipe_class_default); 1.14 %} 1.15 1.16 -// VM_Version::has_sqrt() decides if this node will be used. 1.17 +// VM_Version::has_fsqrt() decides if this node will be used. 1.18 // Sqrt float double precision 1.19 instruct sqrtD_reg(regD dst, regD src) %{ 1.20 match(Set dst (SqrtD src));
2.1 --- a/src/share/vm/opto/library_call.cpp Thu Feb 20 10:48:57 2014 +0100 2.2 +++ b/src/share/vm/opto/library_call.cpp Thu Feb 20 11:05:12 2014 +0100 2.3 @@ -1937,7 +1937,7 @@ 2.4 runtime_math(OptoRuntime::Math_D_D_Type(), FN_PTR(SharedRuntime::dlog10), "LOG10"); 2.5 2.6 // These intrinsics are supported on all hardware 2.7 - case vmIntrinsics::_dsqrt: return Matcher::has_match_rule(Op_SqrtD) ? inline_math(id) : false; 2.8 + case vmIntrinsics::_dsqrt: return Matcher::match_rule_supported(Op_SqrtD) ? inline_math(id) : false; 2.9 case vmIntrinsics::_dabs: return Matcher::has_match_rule(Op_AbsD) ? inline_math(id) : false; 2.10 2.11 case vmIntrinsics::_dexp: return Matcher::has_match_rule(Op_ExpD) ? inline_exp() :