]> granicus.if.org Git - llvm/commitdiff
[AMDGPU][MC] Optimized IsRegIntersect function
authorDmitry Preobrazhensky <dmitry.preobrazhensky@amd.com>
Tue, 18 Jul 2017 11:14:02 +0000 (11:14 +0000)
committerDmitry Preobrazhensky <dmitry.preobrazhensky@amd.com>
Tue, 18 Jul 2017 11:14:02 +0000 (11:14 +0000)
Optimized IsRegIntersect by using MCRegAliasIterator

See Bug 33800: https://bugs.llvm.org//show_bug.cgi?id=33800

Reviewers: arsenm, artem.tamazov

Differential Revision: https://reviews.llvm.org/D35452

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@308294 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp

index 26515b27bb77d218d3b916575a77c09bfb92a62c..67ad904ca97235f7768da0715ae36480d313d383 100644 (file)
@@ -539,23 +539,9 @@ bool isSGPR(unsigned Reg, const MCRegisterInfo* TRI) {
 }
 
 bool isRegIntersect(unsigned Reg0, unsigned Reg1, const MCRegisterInfo* TRI) {
-
-  if (Reg0 == Reg1) {
-    return true;
+  for (MCRegAliasIterator R(Reg0, TRI, true); R.isValid(); ++R) {
+    if (*R == Reg1) return true;
   }
-
-  unsigned SubReg0 = TRI->getSubReg(Reg0, 1);
-  if (SubReg0 == 0) {
-    return TRI->getSubRegIndex(Reg1, Reg0) > 0;
-  }
-
-  for (unsigned Idx = 2; SubReg0 > 0; ++Idx) {
-    if (isRegIntersect(Reg1, SubReg0, TRI)) {
-      return true;
-    }
-    SubReg0 = TRI->getSubReg(Reg0, Idx);
-  }
-
   return false;
 }