[PATCH] D43154: [X86] Correct load-op-store cycle detection Analysis.

James Y Knight via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Feb 14 11:41:50 PST 2018


jyknight added a comment.

Comments are very confusing, but logic seems reasonable.



================
Comment at: llvm/lib/Target/X86/X86ISelDAGToDAG.cpp:2109
+
+  //  Visualization of Merge:
+  // -------------------------
----------------
"Visualization of load-store-fuse transformation"


================
Comment at: llvm/lib/Target/X86/X86ISelDAGToDAG.cpp:2137
+  //  * a. if X, Yn are sucessors to LD
+  //  * b. if Zn is a sucessor to ST.
+
----------------
backwards, if Zn is a chain predecessor to St, but a value successor to Op.


================
Comment at: llvm/lib/Target/X86/X86ISelDAGToDAG.cpp:2139
+
+  // We can further simplify b by noting that for ST to be a
+  // predecessor to Zn X, TF, LD, OP, or Yn must be a predecessor (or
----------------
Too confusing, rewrite.


================
Comment at: llvm/test/CodeGen/X86/pr36274.ll:41
+  %0 = load i32, i32* @g, align 4
+  %1 = load i64, i64* getelementptr inbounds ([13 x [2 x i64]], [13 x [2 x i64]]* @a, i32 0, i32 0, i32 0), align 8
+  %inc = add i64 %1, 1
----------------
I think a single load i64, add i64, then volatile store of the low half, volatile store of the high half might show the same issue with less cruft in the test.


Repository:
  rL LLVM

https://reviews.llvm.org/D43154





More information about the llvm-commits mailing list