[PATCH] D39415: [ARMISelLowering] Better handling of NEON load/store for sequential memory regions

Renato Golin via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Oct 30 06:46:04 PDT 2017


rengolin added reviewers: rovka, evandro, mcrosier, kristof.beyls.
rengolin added a comment.

So, this is an interesting change, on the TODO list for a while, but the code and the tests are changing too much in areas where not clearly related.

Furthermore, you have replaced a single-pass for a multi-pass on the Dag, which may have several unintended consequences, including compile time increase.

For your results, you have not shown which is your matrix benchmark, numbers on standard compiler benchmarks and the LLVM test-suite, nor you have said which architecture (aarch32-variant) you're benchmarking.

Giving that this will affect *all* AArch32 (armv7/8), I think we need to be cautious and extensive on our approach.

I'm adding more Arm folks to get a wider review as well as testing, but I am worried with the compilation time as well as the impact in many other code patterns than just matrix multiply.

cheers,
--renato



================
Comment at: lib/Target/ARM/ARMISelLowering.cpp:11064
+
+  while (true) {
+    for (SDNode::use_iterator UI = Addr.getNode()->use_begin(),
----------------
I'm worried about this... there should be a guaranteed exit condition here.


================
Comment at: test/CodeGen/ARM/cascade-vld-vst.ll:29
+; CHECK:       vld1.32 {d16, d17}, [r0]!
+; CHECK-NEXT:  vld1.32 {d18, d19}, [r0]!
+; CHECK-NEXT:  vld1.32 {d20, d21}, [r0]!
----------------
Use regexp as above:

    {{{d[0-9]+}}, {{d[0-9]+}}}


================
Comment at: test/CodeGen/ARM/misched-fusion-aes.ll:79
 ; CHECK-NEXT: aesmc.8 {{q[0-9][0-9]?}}, [[QC]]
+; CHECK: aese.8 {{q[0-9][0-9]?}}, {{q[0-9][0-9]?}}
 ; CHECK: aese.8 [[QD:q[0-9][0-9]?]], {{q[0-9][0-9]?}}
----------------
why would these change?


================
Comment at: test/CodeGen/ARM/vector-load.ll:258
+; CHECK-NEXT:  vld1.8  {d{{[0-9]+}}}, [r0:64]!
+; CHECK-NEXT:  ldr r0, [r0]
+; CHECK-NEXT:  bx  lr
----------------
you can't guarantee r0 as this returns void.


Repository:
  rL LLVM

https://reviews.llvm.org/D39415





More information about the llvm-commits mailing list