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; |