[PATCH] D71330: [ARM][MVE] findVCMPToFoldIntoVPS. NFC.

Sjoerd Meijer via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Dec 11 01:57:47 PST 2019


SjoerdMeijer created this revision.
SjoerdMeijer added reviewers: dmgreen, samparker.
Herald added subscribers: hiraditya, kristof.beyls.
Herald added a project: LLVM.

While grepping for some inspriration, I came across this function, and I found the logic a bit difficult to follow, so I simplified it a bit.


https://reviews.llvm.org/D71330

Files:
  llvm/lib/Target/ARM/MVEVPTBlockPass.cpp


Index: llvm/lib/Target/ARM/MVEVPTBlockPass.cpp
===================================================================
--- llvm/lib/Target/ARM/MVEVPTBlockPass.cpp
+++ llvm/lib/Target/ARM/MVEVPTBlockPass.cpp
@@ -141,25 +141,24 @@
   // be a VCMP, we check that after this loop. If we find another instruction
   // that reads cpsr, we return nullptr.
   MachineBasicBlock::iterator CmpMI = MI;
+  NewOpcode = 0;
+
   while (CmpMI != MI->getParent()->begin()) {
     --CmpMI;
-    if (CmpMI->modifiesRegister(ARM::VPR, TRI))
-      break;
-    if (CmpMI->readsRegister(ARM::VPR, TRI))
+    if (CmpMI->modifiesRegister(ARM::VPR, TRI) ||
+        CmpMI->readsRegister(ARM::VPR, TRI)) {
+      NewOpcode = VCMPOpcodeToVPT(CmpMI->getOpcode());
       break;
+    }
   }
 
-  if (CmpMI == MI)
-    return nullptr;
-  NewOpcode = VCMPOpcodeToVPT(CmpMI->getOpcode());
-  if (NewOpcode == 0)
+  if (!NewOpcode)
     return nullptr;
 
   // Search forward from CmpMI to MI, checking if either register was def'd
   if (registerDefinedBetween(CmpMI->getOperand(1).getReg(), std::next(CmpMI),
-                             MI, TRI))
-    return nullptr;
-  if (registerDefinedBetween(CmpMI->getOperand(2).getReg(), std::next(CmpMI),
+                             MI, TRI) ||
+      registerDefinedBetween(CmpMI->getOperand(2).getReg(), std::next(CmpMI),
                              MI, TRI))
     return nullptr;
   return &*CmpMI;


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D71330.233280.patch
Type: text/x-patch
Size: 1417 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20191211/32f7e428/attachment.bin>


More information about the llvm-commits mailing list