2047 case Op_CountTrailingZerosL: 2048 if (!UseCountLeadingZerosInstructionsPPC64) 2049 return false; 2050 break; 2051 2052 case Op_PopCountI: 2053 case Op_PopCountL: 2054 return (UsePopCountInstruction && VM_Version::has_popcntw()); 2055 2056 case Op_StrComp: 2057 return SpecialStringCompareTo; 2058 case Op_StrEquals: 2059 return SpecialStringEquals; 2060 case Op_StrIndexOf: 2061 return SpecialStringIndexOf; 2062 } 2063 2064 return true; // Per default match rules are supported. 2065 } 2066 2067 int Matcher::regnum_to_fpu_offset(int regnum) { 2068 // No user for this method? 2069 Unimplemented(); 2070 return 999; 2071 } 2072 2073 const bool Matcher::convL2FSupported(void) { 2074 // fcfids can do the conversion (>= Power7). 2075 // fcfid + frsp showed rounding problem when result should be 0x3f800001. 2076 return VM_Version::has_fcfids(); // False means that conversion is done by runtime call. 2077 } 2078 2079 // Vector width in bytes. 2080 const int Matcher::vector_width_in_bytes(BasicType bt) { 2081 assert(MaxVectorSize == 8, ""); 2082 return 8; 2083 } 2084 2085 // Vector ideal reg. 2086 const int Matcher::vector_ideal_reg(int size) { | 2047 case Op_CountTrailingZerosL: 2048 if (!UseCountLeadingZerosInstructionsPPC64) 2049 return false; 2050 break; 2051 2052 case Op_PopCountI: 2053 case Op_PopCountL: 2054 return (UsePopCountInstruction && VM_Version::has_popcntw()); 2055 2056 case Op_StrComp: 2057 return SpecialStringCompareTo; 2058 case Op_StrEquals: 2059 return SpecialStringEquals; 2060 case Op_StrIndexOf: 2061 return SpecialStringIndexOf; 2062 } 2063 2064 return true; // Per default match rules are supported. 2065 } 2066 2067 const int Matcher::float_pressure_scale(void) { 2068 return 1; 2069 } 2070 2071 int Matcher::regnum_to_fpu_offset(int regnum) { 2072 // No user for this method? 2073 Unimplemented(); 2074 return 999; 2075 } 2076 2077 const bool Matcher::convL2FSupported(void) { 2078 // fcfids can do the conversion (>= Power7). 2079 // fcfid + frsp showed rounding problem when result should be 0x3f800001. 2080 return VM_Version::has_fcfids(); // False means that conversion is done by runtime call. 2081 } 2082 2083 // Vector width in bytes. 2084 const int Matcher::vector_width_in_bytes(BasicType bt) { 2085 assert(MaxVectorSize == 8, ""); 2086 return 8; 2087 } 2088 2089 // Vector ideal reg. 2090 const int Matcher::vector_ideal_reg(int size) { |