< prev index next >

src/cpu/aarch64/vm/aarch64.ad

Print this page




3395   int size = MIN2(16,(int)MaxVectorSize);
3396   // Minimum 2 values in vector
3397   if (size < 2*type2aelembytes(bt)) size = 0;
3398   // But never < 4
3399   if (size < 4) size = 0;
3400   return size;
3401 }
3402 
3403 // Limits on vector size (number of elements) loaded into vector.
3404 const int Matcher::max_vector_size(const BasicType bt) {
3405   return vector_width_in_bytes(bt)/type2aelembytes(bt);
3406 }
3407 const int Matcher::min_vector_size(const BasicType bt) {
3408 //  For the moment limit the vector size to 8 bytes
3409     int size = 8 / type2aelembytes(bt);
3410     if (size < 2) size = 2;
3411     return size;
3412 }
3413 
3414 // Vector ideal reg.
3415 const int Matcher::vector_ideal_reg(int len) {
3416   switch(len) {
3417     case  8: return Op_VecD;
3418     case 16: return Op_VecX;
3419   }
3420   ShouldNotReachHere();
3421   return 0;
3422 }
3423 
3424 const int Matcher::vector_shift_count_ideal_reg(int size) {
3425   return Op_VecX;
3426 }
3427 
3428 // AES support not yet implemented
3429 const bool Matcher::pass_original_key_for_aes() {
3430   return false;
3431 }
3432 
3433 // x86 supports misaligned vectors store/load.
3434 const bool Matcher::misaligned_vectors_ok() {
3435   return !AlignVector; // can be changed by flag
3436 }
3437 
3438 // false => size gets scaled to BytesPerLong, ok.
3439 const bool Matcher::init_array_count_is_in_bytes = false;
3440 
3441 // Use conditional move (CMOVL)
3442 const int Matcher::long_cmove_cost() {
3443   // long cmoves are no more expensive than int cmoves
3444   return 0;
3445 }




3395   int size = MIN2(16,(int)MaxVectorSize);
3396   // Minimum 2 values in vector
3397   if (size < 2*type2aelembytes(bt)) size = 0;
3398   // But never < 4
3399   if (size < 4) size = 0;
3400   return size;
3401 }
3402 
3403 // Limits on vector size (number of elements) loaded into vector.
3404 const int Matcher::max_vector_size(const BasicType bt) {
3405   return vector_width_in_bytes(bt)/type2aelembytes(bt);
3406 }
3407 const int Matcher::min_vector_size(const BasicType bt) {
3408 //  For the moment limit the vector size to 8 bytes
3409     int size = 8 / type2aelembytes(bt);
3410     if (size < 2) size = 2;
3411     return size;
3412 }
3413 
3414 // Vector ideal reg.
3415 const Opcodes Matcher::vector_ideal_reg(int len) {
3416   switch(len) {
3417     case  8: return Opcodes::Op_VecD;
3418     case 16: return Opcodes::Op_VecX;
3419   }
3420   ShouldNotReachHere();
3421   return 0;
3422 }
3423 
3424 const Opcodes Matcher::vector_shift_count_ideal_reg(int size) {
3425   return Opcodes::Op_VecX;
3426 }
3427 
3428 // AES support not yet implemented
3429 const bool Matcher::pass_original_key_for_aes() {
3430   return false;
3431 }
3432 
3433 // x86 supports misaligned vectors store/load.
3434 const bool Matcher::misaligned_vectors_ok() {
3435   return !AlignVector; // can be changed by flag
3436 }
3437 
3438 // false => size gets scaled to BytesPerLong, ok.
3439 const bool Matcher::init_array_count_is_in_bytes = false;
3440 
3441 // Use conditional move (CMOVL)
3442 const int Matcher::long_cmove_cost() {
3443   // long cmoves are no more expensive than int cmoves
3444   return 0;
3445 }


< prev index next >