Move isSubRegister() and isSuperRegister to MCRegisterInfo.
[oota-llvm.git] / include / llvm / MC / MCRegisterInfo.h
index 7118127e5f914206f51692ce03309db074319469..9310b466f41129207af080eebc883d36b77cd70f 100644 (file)
@@ -386,6 +386,14 @@ public:
     return RegEncodingTable[RegNo];
   }
 
+  /// Returns true if regB is a sub-register of regA.
+  bool isSubRegister(unsigned regA, unsigned regB) const {
+    return isSuperRegister(regB, regA);
+  }
+
+  /// Returns true if regB is a super-register of regA.
+  bool isSuperRegister(unsigned RegA, unsigned RegB) const;
+
 };
 
 //===----------------------------------------------------------------------===//
@@ -426,6 +434,15 @@ public:
   }
 };
 
+// Definition for isSuperRegister. Put it down here since it needs the
+// iterator defined above in addition to the MCRegisterInfo class itself.
+inline bool MCRegisterInfo::isSuperRegister(unsigned RegA, unsigned RegB) const{
+  for (MCSuperRegIterator I(RegA, this); I.isValid(); ++I)
+    if (*I == RegB)
+      return true;
+  return false;
+}
+
 //===----------------------------------------------------------------------===//
 //                               Register Units
 //===----------------------------------------------------------------------===//