8035394: PPC64: Make usage of intrinsic dsqrt depend on processor recognition.
Reviewed-by: kvn
--- a/hotspot/src/cpu/ppc/vm/ppc.ad Thu Feb 20 10:48:57 2014 +0100
+++ b/hotspot/src/cpu/ppc/vm/ppc.ad Thu Feb 20 11:05:12 2014 +0100
@@ -2076,6 +2076,8 @@
return false;
switch (opcode) {
+ case Op_SqrtD:
+ return VM_Version::has_fsqrt();
case Op_CountLeadingZerosI:
case Op_CountLeadingZerosL:
case Op_CountTrailingZerosI:
@@ -8740,7 +8742,7 @@
ins_pipe(pipe_class_default);
%}
-// VM_Version::has_sqrt() decides if this node will be used.
+// VM_Version::has_fsqrt() decides if this node will be used.
// Sqrt float double precision
instruct sqrtD_reg(regD dst, regD src) %{
match(Set dst (SqrtD src));
--- a/hotspot/src/share/vm/opto/library_call.cpp Thu Feb 20 10:48:57 2014 +0100
+++ b/hotspot/src/share/vm/opto/library_call.cpp Thu Feb 20 11:05:12 2014 +0100
@@ -1937,7 +1937,7 @@
runtime_math(OptoRuntime::Math_D_D_Type(), FN_PTR(SharedRuntime::dlog10), "LOG10");
// These intrinsics are supported on all hardware
- case vmIntrinsics::_dsqrt: return Matcher::has_match_rule(Op_SqrtD) ? inline_math(id) : false;
+ case vmIntrinsics::_dsqrt: return Matcher::match_rule_supported(Op_SqrtD) ? inline_math(id) : false;
case vmIntrinsics::_dabs: return Matcher::has_match_rule(Op_AbsD) ? inline_math(id) : false;
case vmIntrinsics::_dexp: return Matcher::has_match_rule(Op_ExpD) ? inline_exp() :