[PATCH] D38196: [AArch64] Avoid interleaved SIMD store instructions for Exynos

Kristof Beyls via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Dec 5 05:51:55 PST 2017


kristof.beyls accepted this revision.
kristof.beyls added a comment.
This revision is now accepted and ready to land.

Thanks for your patience with my long string of review comments.
With just still addressing the few more nitpicks, I think this will have gotten to an acceptable state.



================
Comment at: llvm/lib/Target/AArch64/AArch64VectorByElementOpt.cpp:73-76
+  std::map<std::pair<unsigned, std::string>, bool> SIMDInstrTable;
+  // This is used to cache the decision of whether to leave the Interleave-Store
+  // instructions replacement pass early or not for a particular target.
+  std::map<std::string, bool> InterlEarlyExit;
----------------
std::unordered_map is probably sufficient and slightly faster than std::map?


================
Comment at: llvm/lib/Target/AArch64/AArch64VectorByElementOpt.cpp:297-298
+    std::string Subtarget = SchedModel.getSubtargetInfo()->getCPU();
+    if (!InterlEarlyExit.empty() &&
+        InterlEarlyExit.find(Subtarget) != InterlEarlyExit.end())
+      return InterlEarlyExit[Subtarget];
----------------
It seems that the !InterlEarlyExit.empty() condition is not needed here?


https://reviews.llvm.org/D38196





More information about the llvm-commits mailing list