2041 2042 int Matcher::regnum_to_fpu_offset(int regnum) { 2043 // No user for this method? 2044 Unimplemented(); 2045 return 999; 2046 } 2047 2048 const bool Matcher::convL2FSupported(void) { 2049 // fcfids can do the conversion (>= Power7). 2050 // fcfid + frsp showed rounding problem when result should be 0x3f800001. 2051 return VM_Version::has_fcfids(); // False means that conversion is done by runtime call. 2052 } 2053 2054 // Vector width in bytes. 2055 const int Matcher::vector_width_in_bytes(BasicType bt) { 2056 assert(MaxVectorSize == 8, ""); 2057 return 8; 2058 } 2059 2060 // Vector ideal reg. 2061 const int Matcher::vector_ideal_reg(int size) { 2062 assert(MaxVectorSize == 8 && size == 8, ""); 2063 return Op_RegL; 2064 } 2065 2066 const int Matcher::vector_shift_count_ideal_reg(int size) { 2067 fatal("vector shift is not supported"); 2068 return Node::NotAMachineReg; 2069 } 2070 2071 // Limits on vector size (number of elements) loaded into vector. 2072 const int Matcher::max_vector_size(const BasicType bt) { 2073 assert(is_java_primitive(bt), "only primitive type vectors"); 2074 return vector_width_in_bytes(bt)/type2aelembytes(bt); 2075 } 2076 2077 const int Matcher::min_vector_size(const BasicType bt) { 2078 return max_vector_size(bt); // Same as max. 2079 } 2080 2081 // PPC doesn't support misaligned vectors store/load. 2082 const bool Matcher::misaligned_vectors_ok() { 2083 return false; 2084 } 2085 2086 // PPC AES support not yet implemented 2087 const bool Matcher::pass_original_key_for_aes() { 2088 return false; | 2041 2042 int Matcher::regnum_to_fpu_offset(int regnum) { 2043 // No user for this method? 2044 Unimplemented(); 2045 return 999; 2046 } 2047 2048 const bool Matcher::convL2FSupported(void) { 2049 // fcfids can do the conversion (>= Power7). 2050 // fcfid + frsp showed rounding problem when result should be 0x3f800001. 2051 return VM_Version::has_fcfids(); // False means that conversion is done by runtime call. 2052 } 2053 2054 // Vector width in bytes. 2055 const int Matcher::vector_width_in_bytes(BasicType bt) { 2056 assert(MaxVectorSize == 8, ""); 2057 return 8; 2058 } 2059 2060 // Vector ideal reg. 2061 const Opcodes Matcher::vector_ideal_reg(int size) { 2062 assert(MaxVectorSize == 8 && size == 8, ""); 2063 return Opcodes::Op_RegL; 2064 } 2065 2066 const Opcodes Matcher::vector_shift_count_ideal_reg(int size) { 2067 fatal("vector shift is not supported"); 2068 return Opcodes::NotAMachineReg; 2069 } 2070 2071 // Limits on vector size (number of elements) loaded into vector. 2072 const int Matcher::max_vector_size(const BasicType bt) { 2073 assert(is_java_primitive(bt), "only primitive type vectors"); 2074 return vector_width_in_bytes(bt)/type2aelembytes(bt); 2075 } 2076 2077 const int Matcher::min_vector_size(const BasicType bt) { 2078 return max_vector_size(bt); // Same as max. 2079 } 2080 2081 // PPC doesn't support misaligned vectors store/load. 2082 const bool Matcher::misaligned_vectors_ok() { 2083 return false; 2084 } 2085 2086 // PPC AES support not yet implemented 2087 const bool Matcher::pass_original_key_for_aes() { 2088 return false; |