< prev index next >

src/hotspot/cpu/ppc/ppc.ad

Print this page
rev 60615 : 8231441: Initial SVE backend support
Reviewed-by: adinn, pli
Contributed-by: joshua.zhu@arm.com, yang.zhang@arm.com, ningsheng.jian@arm.com


2362 const uint Matcher::vector_ideal_reg(int size) {
2363   if (SuperwordUseVSX) {
2364     assert(MaxVectorSize == 16 && size == 16, "");
2365     return Op_VecX;
2366   } else {
2367     assert(MaxVectorSize == 8 && size == 8, "");
2368     return Op_RegL;
2369   }
2370 }
2371 
2372 // Limits on vector size (number of elements) loaded into vector.
2373 const int Matcher::max_vector_size(const BasicType bt) {
2374   assert(is_java_primitive(bt), "only primitive type vectors");
2375   return vector_width_in_bytes(bt)/type2aelembytes(bt);
2376 }
2377 
2378 const int Matcher::min_vector_size(const BasicType bt) {
2379   return max_vector_size(bt); // Same as max.
2380 }
2381 








2382 // PPC implementation uses VSX load/store instructions (if
2383 // SuperwordUseVSX) which support 4 byte but not arbitrary alignment
2384 const bool Matcher::misaligned_vectors_ok() {
2385   return false;
2386 }
2387 
2388 // PPC AES support not yet implemented
2389 const bool Matcher::pass_original_key_for_aes() {
2390   return false;
2391 }
2392 
2393 // RETURNS: whether this branch offset is short enough that a short
2394 // branch can be used.
2395 //
2396 // If the platform does not provide any short branch variants, then
2397 // this method should return `false' for offset 0.
2398 //
2399 // `Compile::Fill_buffer' will decide on basis of this information
2400 // whether to do the pass `Compile::Shorten_branches' at all.
2401 //




2362 const uint Matcher::vector_ideal_reg(int size) {
2363   if (SuperwordUseVSX) {
2364     assert(MaxVectorSize == 16 && size == 16, "");
2365     return Op_VecX;
2366   } else {
2367     assert(MaxVectorSize == 8 && size == 8, "");
2368     return Op_RegL;
2369   }
2370 }
2371 
2372 // Limits on vector size (number of elements) loaded into vector.
2373 const int Matcher::max_vector_size(const BasicType bt) {
2374   assert(is_java_primitive(bt), "only primitive type vectors");
2375   return vector_width_in_bytes(bt)/type2aelembytes(bt);
2376 }
2377 
2378 const int Matcher::min_vector_size(const BasicType bt) {
2379   return max_vector_size(bt); // Same as max.
2380 }
2381 
2382 const bool Matcher::supports_scalable_vector() {
2383   return false;
2384 }
2385 
2386 const int Matcher::scalable_vector_reg_size(const BasicType bt) {
2387   return -1;
2388 }
2389 
2390 // PPC implementation uses VSX load/store instructions (if
2391 // SuperwordUseVSX) which support 4 byte but not arbitrary alignment
2392 const bool Matcher::misaligned_vectors_ok() {
2393   return false;
2394 }
2395 
2396 // PPC AES support not yet implemented
2397 const bool Matcher::pass_original_key_for_aes() {
2398   return false;
2399 }
2400 
2401 // RETURNS: whether this branch offset is short enough that a short
2402 // branch can be used.
2403 //
2404 // If the platform does not provide any short branch variants, then
2405 // this method should return `false' for offset 0.
2406 //
2407 // `Compile::Fill_buffer' will decide on basis of this information
2408 // whether to do the pass `Compile::Shorten_branches' at all.
2409 //


< prev index next >