[PATCH] D102269: [ARM] Expand predecessor search to multiple blocks when reverting WhileLoopStarts

Malhar via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu May 13 06:07:28 PDT 2021


malharJ added inline comments.


================
Comment at: llvm/lib/Target/ARM/MVETPAndVPTOptimisationsPass.cpp:269
+MachineInstr *MVETPAndVPTOptimisations::CheckForLRUseInPredecessors(
+    MachineBasicBlock *PreHeader, MachineInstr *LoopStart) {
+  SmallVector<MachineBasicBlock *> Worklist;
----------------
Since the function name has changed, this (and also in the function declaration) parameter name
could also be changed to "Predecessor" ?


================
Comment at: llvm/lib/Target/ARM/MVETPAndVPTOptimisationsPass.cpp:281
-    for (MachineInstr &MI : *PreHeader) {
-      if (MI.isCall()) {
-        // Create a t2DoLoopStart at the end of the preheader.
----------------
Uhm, just trying to understand the original logic ...

but why does a call (in the Preheader) result in reversion of t2WhileLoopStartLR to t2DoLoopStart ?


================
Comment at: llvm/test/CodeGen/Thumb2/LowOverheadLoops/wls-search-pred.mir:38-40
+  declare void @llvm.memcpy.p0i8.p0i8.i32(i8* noalias nocapture writeonly, i8* noalias nocapture readonly, i32, i1 immarg) #1
+  declare void @llvm.memset.p0i8.i32(i8* nocapture writeonly, i8, i32, i1 immarg) #2
+  declare void @llvm.memmove.p0i8.p0i8.i32(i8* nocapture writeonly, i8* nocapture readonly, i32, i1 immarg) #1
----------------
do we need llvm.memcpy and llvm.memmove declarations here ?


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D102269/new/

https://reviews.llvm.org/D102269



More information about the llvm-commits mailing list