The text format has superclasses, conver those into subclasses which are needed by `GenericRegInfo`.
(
classes: &mut PrimaryMap<RegClass, RegClassData>,
superclasses: &SecondaryMap<RegClass, RegClassSet>,
)
| 328 | /// The text format has superclasses, conver those into subclasses which are |
| 329 | /// needed by `GenericRegInfo`. |
| 330 | fn resolve_subclasses( |
| 331 | classes: &mut PrimaryMap<RegClass, RegClassData>, |
| 332 | superclasses: &SecondaryMap<RegClass, RegClassSet>, |
| 333 | ) { |
| 334 | // Propagate sub-classes backwards. This works because superclasses always |
| 335 | // have a lower index than subclasses. |
| 336 | for class in classes.keys().rev() { |
| 337 | classes[class].sub_classes.insert(class); |
| 338 | let sub_classes = classes[class].sub_classes; |
| 339 | for superclass in superclasses[class] { |
| 340 | classes[superclass].sub_classes |= sub_classes; |
| 341 | } |
| 342 | } |
| 343 | } |
| 344 | |
| 345 | impl GenericRegInfo { |
| 346 | /// Parses a textual register description into a [`GenericRegInfo`]. |