< prev index next >

src/share/vm/opto/regmask.cpp

Print this page




  98   case Special: st->print("r---"); break;
  99   case Bad:     st->print("rBAD"); break;
 100   default:
 101     if (r < _last_Mach_Reg) st->print("%s", Matcher::regName[r]);
 102     else st->print("rS%d",r);
 103     break;
 104   }
 105 }
 106 #endif
 107 
 108 
 109 //=============================================================================
 110 const RegMask RegMask::Empty(
 111 # define BODY(I) 0,
 112   FORALL_BODY
 113 # undef BODY
 114   0
 115 );
 116 
 117 //=============================================================================
 118 bool RegMask::is_vector(uint ireg) {
 119   return (ireg == Op_VecS || ireg == Op_VecD ||
 120           ireg == Op_VecX || ireg == Op_VecY || ireg == Op_VecZ );
 121 }
 122 
 123 int RegMask::num_registers(uint ireg) {
 124     switch(ireg) {
 125       case Op_VecZ:
 126         return 16;
 127       case Op_VecY:
 128         return 8;
 129       case Op_VecX:
 130         return 4;
 131       case Op_VecD:
 132       case Op_RegD:
 133       case Op_RegL:
 134 #ifdef _LP64
 135       case Op_RegP:
 136 #endif
 137         return 2;
 138     }
 139     // Op_VecS and the rest ideal registers.
 140     return 1;
 141 }
 142 
 143 //------------------------------find_first_pair--------------------------------
 144 // Find the lowest-numbered register pair in the mask.  Return the
 145 // HIGHEST register number in the pair, or BAD if no pairs.
 146 OptoReg::Name RegMask::find_first_pair() const {
 147   verify_pairs();
 148   for( int i = 0; i < RM_SIZE; i++ ) {
 149     if( _A[i] ) {               // Found some bits
 150       int bit = _A[i] & -_A[i]; // Extract low bit
 151       // Convert to bit number, return hi bit in pair
 152       return OptoReg::Name((i<<_LogWordBits)+find_lowest_bit(bit)+1);
 153     }
 154   }
 155   return OptoReg::Bad;




  98   case Special: st->print("r---"); break;
  99   case Bad:     st->print("rBAD"); break;
 100   default:
 101     if (r < _last_Mach_Reg) st->print("%s", Matcher::regName[r]);
 102     else st->print("rS%d",r);
 103     break;
 104   }
 105 }
 106 #endif
 107 
 108 
 109 //=============================================================================
 110 const RegMask RegMask::Empty(
 111 # define BODY(I) 0,
 112   FORALL_BODY
 113 # undef BODY
 114   0
 115 );
 116 
 117 //=============================================================================
 118 bool RegMask::is_vector(Opcodes ireg) {
 119   return (ireg == Opcodes::Op_VecS || ireg == Opcodes::Op_VecD ||
 120           ireg == Opcodes::Op_VecX || ireg == Opcodes::Op_VecY || ireg == Opcodes::Op_VecZ );
 121 }
 122 
 123 int RegMask::num_registers(Opcodes ireg) {
 124     switch(ireg) {
 125       case Opcodes::Op_VecZ:
 126         return 16;
 127       case Opcodes::Op_VecY:
 128         return 8;
 129       case Opcodes::Op_VecX:
 130         return 4;
 131       case Opcodes::Op_VecD:
 132       case Opcodes::Op_RegD:
 133       case Opcodes::Op_RegL:
 134 #ifdef _LP64
 135       case Opcodes::Op_RegP:
 136 #endif
 137         return 2;
 138     }
 139     // Op_VecS and the rest ideal registers.
 140     return 1;
 141 }
 142 
 143 //------------------------------find_first_pair--------------------------------
 144 // Find the lowest-numbered register pair in the mask.  Return the
 145 // HIGHEST register number in the pair, or BAD if no pairs.
 146 OptoReg::Name RegMask::find_first_pair() const {
 147   verify_pairs();
 148   for( int i = 0; i < RM_SIZE; i++ ) {
 149     if( _A[i] ) {               // Found some bits
 150       int bit = _A[i] & -_A[i]; // Extract low bit
 151       // Convert to bit number, return hi bit in pair
 152       return OptoReg::Name((i<<_LogWordBits)+find_lowest_bit(bit)+1);
 153     }
 154   }
 155   return OptoReg::Bad;


< prev index next >