[PATCH] D69392: [ARM] MVE interleaving load and stores.

Dave Green via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Oct 30 11:41:03 PDT 2019


dmgreen marked 3 inline comments as done.
dmgreen added inline comments.


================
Comment at: llvm/lib/Target/ARM/ARMISelLowering.cpp:16718
   // the vector types are divisible by 128.
-  if (!Subtarget->hasNEON() || !isLegalInterleavedAccessType(VecTy, DL))
+  if (!isLegalInterleavedAccessType(Factor, VecTy, DL))
     return false;
----------------
samparker wrote:
> What is Factor here? Is it not the number of elements..?
Factor is the "n" in "vldn". So 2 or 4 for MVE, but also 3 for Neon. It comes from the elements of the shuffle, like the example in the comment at the start of this function.

We really just need it to say that a VLD3 isn't legal on MVE.


================
Comment at: llvm/lib/Target/ARM/ARMISelLowering.cpp:16774
+      Ops.push_back(Builder.CreateBitCast(BaseAddr, VecEltTy));
+      dbgs() << *BaseAddr << "\n";
+      return Builder.CreateCall(VldnFunc, Ops, "vldN");
----------------
samparker wrote:
> debug
Ah!


================
Comment at: llvm/lib/Target/ARM/ARMISelLowering.cpp:16943
+        Ops.push_back(S);
+      Ops.push_back(Builder.getInt32(0));
+      Builder.CreateCall(VstNFunc, Ops);
----------------
samparker wrote:
> How about performing this with a loop?
Yeah. Nice suggestion. It involves a pop because of the last item changing, but looks better.


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

https://reviews.llvm.org/D69392





More information about the llvm-commits mailing list