[llvm] r265734 - [TargetRegisterInfo] Refactor the code to use BitMaskClassIterator.

Quentin Colombet via llvm-commits llvm-commits at lists.llvm.org
Thu Apr 7 15:16:56 PDT 2016


Author: qcolombet
Date: Thu Apr  7 17:16:56 2016
New Revision: 265734

URL: http://llvm.org/viewvc/llvm-project?rev=265734&view=rev
Log:
[TargetRegisterInfo] Refactor the code to use BitMaskClassIterator.

Modified:
    llvm/trunk/lib/CodeGen/TargetRegisterInfo.cpp

Modified: llvm/trunk/lib/CodeGen/TargetRegisterInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/TargetRegisterInfo.cpp?rev=265734&r1=265733&r2=265734&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/TargetRegisterInfo.cpp (original)
+++ llvm/trunk/lib/CodeGen/TargetRegisterInfo.cpp Thu Apr  7 17:16:56 2016
@@ -112,18 +112,11 @@ TargetRegisterInfo::getAllocatableClass(
   if (!RC || RC->isAllocatable())
     return RC;
 
-  const unsigned *SubClass = RC->getSubClassMask();
-  for (unsigned Base = 0, BaseE = getNumRegClasses();
-       Base < BaseE; Base += 32) {
-    unsigned Idx = Base;
-    for (unsigned Mask = *SubClass++; Mask; Mask >>= 1) {
-      unsigned Offset = countTrailingZeros(Mask);
-      const TargetRegisterClass *SubRC = getRegClass(Idx + Offset);
-      if (SubRC->isAllocatable())
-        return SubRC;
-      Mask >>= Offset;
-      Idx += Offset + 1;
-    }
+  for (BitMaskClassIterator It(RC->getSubClassMask(), *this); It.isValid();
+       ++It) {
+    const TargetRegisterClass *SubRC = getRegClass(It.getID());
+    if (SubRC->isAllocatable())
+      return SubRC;
   }
   return nullptr;
 }




More information about the llvm-commits mailing list