[PATCH] D67327: [ARM] Fix for MVE narrow load/store stack accesses

Dave Green via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Sep 17 03:36:36 PDT 2019


dmgreen updated this revision to Diff 220467.
dmgreen added a comment.

The widening/narrowing MVE loads and stores, like MVE_VLDRBU32 (the B with the 32, in this example) can only take "thumb" registers as they only have 3 bits for the Rn operand. Which is what I meant by "can't take SP". This is not something that any other stack load/store has had to deal with in the past, and hence RegClass->contains(ARM::SP) is added here to check for such cases. Similar to https://reviews.llvm.org/D66285.

The other MVE loads/stores, like a MVE_VLDRBU8 do have the full 4 bits needed for "Thumb2" register, so do not hit the same problem. They can accept a SP and it will only be a problem for frame indices if the offset is out of range of the instruction.

I've added another test for that second case.


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

https://reviews.llvm.org/D67327

Files:
  llvm/lib/Target/ARM/ARMFrameLowering.cpp
  llvm/test/CodeGen/Thumb2/mve-stacksplot.mir

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D67327.220467.patch
Type: text/x-patch
Size: 10531 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190917/f15291c6/attachment.bin>


More information about the llvm-commits mailing list