1279 } |
1279 } |
1280 _uniq_idx = uniq_idx; |
1280 _uniq_idx = uniq_idx; |
1281 _num_uniq = num_uniq; |
1281 _num_uniq = num_uniq; |
1282 } |
1282 } |
1283 |
1283 |
1284 // Generate index values needed for determing the operand position |
1284 // Generate index values needed for determining the operand position |
1285 void InstructForm::index_temps(FILE *fp, FormDict &globals, const char *prefix, const char *receiver) { |
1285 void InstructForm::index_temps(FILE *fp, FormDict &globals, const char *prefix, const char *receiver) { |
1286 uint idx = 0; // position of operand in match rule |
1286 uint idx = 0; // position of operand in match rule |
1287 int cur_num_opnds = num_opnds(); |
1287 int cur_num_opnds = num_opnds(); |
1288 |
1288 |
1289 // Compute the index into vector of operand pointers: |
1289 // Compute the index into vector of operand pointers: |
2195 |
2195 |
2196 |
2196 |
2197 // Return zero-based position in component list, only counting constants; |
2197 // Return zero-based position in component list, only counting constants; |
2198 // Return -1 if not in list. |
2198 // Return -1 if not in list. |
2199 int OperandForm::constant_position(FormDict &globals, const Component *last) { |
2199 int OperandForm::constant_position(FormDict &globals, const Component *last) { |
2200 // Iterate through components and count constants preceeding 'constant' |
2200 // Iterate through components and count constants preceding 'constant' |
2201 int position = 0; |
2201 int position = 0; |
2202 Component *comp; |
2202 Component *comp; |
2203 _components.reset(); |
2203 _components.reset(); |
2204 while( (comp = _components.iter()) != NULL && (comp != last) ) { |
2204 while( (comp = _components.iter()) != NULL && (comp != last) ) { |
2205 // Special case for operands that take a single user-defined operand |
2205 // Special case for operands that take a single user-defined operand |
2233 |
2233 |
2234 |
2234 |
2235 // Return zero-based position in component list, only counting constants; |
2235 // Return zero-based position in component list, only counting constants; |
2236 // Return -1 if not in list. |
2236 // Return -1 if not in list. |
2237 int OperandForm::register_position(FormDict &globals, const char *reg_name) { |
2237 int OperandForm::register_position(FormDict &globals, const char *reg_name) { |
2238 // Iterate through components and count registers preceeding 'last' |
2238 // Iterate through components and count registers preceding 'last' |
2239 uint position = 0; |
2239 uint position = 0; |
2240 Component *comp; |
2240 Component *comp; |
2241 _components.reset(); |
2241 _components.reset(); |
2242 while( (comp = _components.iter()) != NULL |
2242 while( (comp = _components.iter()) != NULL |
2243 && (strcmp(comp->_name,reg_name) != 0) ) { |
2243 && (strcmp(comp->_name,reg_name) != 0) ) { |