[llvm] b17f036 - [Hexagon] Consider HVX reg aliases for .cur warning

Krzysztof Parzyszek via llvm-commits llvm-commits at lists.llvm.org
Thu Jan 6 09:06:30 PST 2022


Author: Brian Cain
Date: 2022-01-06T08:59:08-08:00
New Revision: b17f036a99eba19194b81a6d56e7f08fa5e0e92c

URL: https://github.com/llvm/llvm-project/commit/b17f036a99eba19194b81a6d56e7f08fa5e0e92c
DIFF: https://github.com/llvm/llvm-project/commit/b17f036a99eba19194b81a6d56e7f08fa5e0e92c.diff

LOG: [Hexagon] Consider HVX reg aliases for .cur warning

Added: 
    llvm/test/MC/Hexagon/hvx_cur_alias.s

Modified: 
    llvm/lib/Target/Hexagon/MCTargetDesc/HexagonMCChecker.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/lib/Target/Hexagon/MCTargetDesc/HexagonMCChecker.cpp b/llvm/lib/Target/Hexagon/MCTargetDesc/HexagonMCChecker.cpp
index 5f094dfeb95c9..0d43de140ca94 100644
--- a/llvm/lib/Target/Hexagon/MCTargetDesc/HexagonMCChecker.cpp
+++ b/llvm/lib/Target/Hexagon/MCTargetDesc/HexagonMCChecker.cpp
@@ -597,9 +597,15 @@ void HexagonMCChecker::checkRegisterCurDefs() {
   for (auto const &I : HexagonMCInstrInfo::bundleInstructions(MCII, MCB)) {
     if (HexagonMCInstrInfo::isCVINew(MCII, I) &&
         HexagonMCInstrInfo::getDesc(MCII, I).mayLoad()) {
-      unsigned Register = I.getOperand(0).getReg();
-      if (!registerUsed(Register))
-        reportWarning("Register `" + Twine(RI.getName(Register)) +
+      const unsigned RegDef = I.getOperand(0).getReg();
+
+      bool HasRegDefUse = false;
+      for (MCRegAliasIterator Alias(RegDef, &RI, true); Alias.isValid();
+           ++Alias)
+        HasRegDefUse = HasRegDefUse || registerUsed(*Alias);
+
+      if (!HasRegDefUse)
+        reportWarning("Register `" + Twine(RI.getName(RegDef)) +
                       "' used with `.cur' "
                       "but not used in the same packet");
     }

diff  --git a/llvm/test/MC/Hexagon/hvx_cur_alias.s b/llvm/test/MC/Hexagon/hvx_cur_alias.s
new file mode 100644
index 0000000000000..ed16659d4522f
--- /dev/null
+++ b/llvm/test/MC/Hexagon/hvx_cur_alias.s
@@ -0,0 +1,9 @@
+# RUN: llvm-mc -arch=hexagon -mcpu=hexagonv60 -mhvx -filetype=obj %s 2>&1 | llvm-objdump --mattr=+hvx -d - | FileCheck %s
+
+{ v2.cur = vmem(r11++m0)
+  v5:4.h = vmpa(v3:2.ub,v5:4.ub)
+}
+
+# CHECK-NOT: warning: register `{{.+}}' used with `.cur' but not used in the same packet
+# CHECK: vmpa
+# CHECK: vmem


        


More information about the llvm-commits mailing list